Program Listing for File conversions.h

Return to documentation for file (environment/plasma/gcpm/conversions.h)

#pragma once

#include <array>

namespace pecsim {

  enum Frame { GEI, GEO, GSE, GSM, SM };

  void pol_to_cart(double alatr, double along, double r, std::array<double, 3>& pos_sm);

  void cart_to_pol(const std::array<double, 3>& pos_geo, double& blatr, double& blong,
                   double& rtemp);

  void sm_to_geo(const std::array<int, 2>& itime, const std::array<double, 3>& pos_sm,
                 std::array<double, 3>& pos_geo);

  void geo_to_sm(const std::array<int, 2>& itime, const std::array<double, 3>& pos_geo,
                 std::array<double, 3>& pos_sm);

  void gei_to_sm(const std::array<int, 2>& itime, const std::array<double, 3>& x_in,
                 std::array<double, 3>& x_out);

  double to_mjd(const std::array<int, 2>& itime, double& iyr, double& iday, double& ut);

  void t1(const std::array<int, 2>& itime, const std::array<double, 3>& x_in,
          std::array<double, 3>& x_out, int iverse);

  void t2(const std::array<int, 2>& itime, const std::array<double, 3>& x_in,
          std::array<double, 3>& x_out, int iverse);

  void t3(const std::array<int, 2>& itime, const std::array<double, 3>& x_in,
          std::array<double, 3>& x_out, int iverse);

  void t4(const std::array<int, 2>& itime, const std::array<double, 3>& x_in,
          std::array<double, 3>& x_out, int iverse);

  void t5(const std::array<int, 2>& itime, const std::array<double, 3>& x_in,
          std::array<double, 3>& x_out, int iverse);

  void rotate_x(double angle, const std::array<double, 3>& x_in, std::array<double, 3>& x_out);

  void rotate_y(double angle, const std::array<double, 3>& x_in, std::array<double, 3>& x_out);

  void rotate_z(double angle, const std::array<double, 3>& x_in, std::array<double, 3>& x_out);

  void get_q_c(const std::array<int, 2>& itime, std::array<double, 3>& q_c);
}  // namespace pecsim