Program Listing for File raytrace_wrapper.h¶
↰ Return to documentation for file (environment/plasma/tec/raytrace_wrapper.h)
#pragma once
#include <string>
#include <vector>
#include "lupnt/environment/plasma/core/definitions.h"
namespace pecsim {
struct RaytraceData {
std::vector<int> tidxs; // Transmitter indices
std::vector<int> row_fulls; // Full row indices
std::vector<double> epoch_utcs; // UTC time of each epoch (s)
std::vector<double> min_alts; // Minimum altitudes along the ray paths (m)
std::vector<Vec3d> tx_positions; // Transmitter positions [m]
std::vector<Vec3d> rx_positions; // Receiver positions [m]
std::vector<double> total_delays; // Total signal delay [m]
std::vector<double> tecus; // Total electron content [TECU]
std::vector<double> tec_delays; // TEC-induced delay [m]
std::vector<double> second_delays; // Second-order ionospheric delay [m]
std::vector<double> third_delays; // Third-order ionospheric delay [m]
std::vector<double> dist_bend_m; // Geometric path bending distance [m]
std::vector<double> tec_delay_bend_m; // TEC delay due to bending [m]
std::vector<double> max_sep_line_m; // Max separation between straight and bent paths [m]
std::vector<double> final_pos_err_m; // Final position error [m]
int num_rays() const { return epoch_utcs.size(); }
};
RaytraceData load_raytrace_data(const std::string& filename);
void run_raytrace_batch(int job_id, int job_nums, const std::string epoch_str, const int sat_idx,
const std::string gnss_const, const int freq_family, const double Rz12,
const double kp, bool correction, bool straight_ray,
const std::string datadir, const std::string savedir);
} // namespace pecsim