4 #ifndef INCLUDE_ELECTRODYNAMICS_H_
5 #define INCLUDE_ELECTRODYNAMICS_H_
73 bool check_times(
double inputStartTime,
double inputEndTime);
87 arma_mat> get_electrodynamics(arma_cube magLat,
88 arma_cube magLocalTime,
100 arma_mat get_interpolation_indices(arma_mat vals, arma_vec search);
115 void set_time(
double time,
Report &report);
127 void set_grid(arma_mat lats, arma_mat mlts,
Report &report);
133 void set_imf_bx(precision_t value);
139 void set_imf_by(precision_t value);
145 void set_imf_bz(precision_t value);
151 void set_sw_v(precision_t value);
157 void set_sw_n(precision_t value);
164 void set_hp(precision_t value);
170 void set_au(precision_t value);
176 void set_al(precision_t value);
182 void set_ae(precision_t value);
188 void set_kp(precision_t value);
204 arma_cube get_potential(arma_cube magLat,
205 arma_cube magLocalTime,
222 arma_mat get_eflux(arma_cube magLat, arma_cube magLocalTime,
Report &report);
238 arma_mat get_avee(arma_cube magLat, arma_cube magLocalTime,
Report &report);
254 arma_mat get_ion_eflux(
Report &report);
270 arma_mat get_ion_avee(
Report &report);
275 int iTimeInterpolationMethod;
279 const int iPrevious_ = 1;
281 const int iNext_ = 2;
283 const int iClosest_ = 3;
285 const int iInterp_ = 4;
288 std::string input_file;
291 bool HaveElectrodynamics;
300 arma_mat lats_needed;
304 arma_mat mlts_needed;
307 precision_t imf_bx_needed;
308 precision_t imf_by_needed;
309 precision_t imf_bz_needed;
310 precision_t sw_v_needed;
311 precision_t sw_n_needed;
312 precision_t hp_needed;
313 precision_t au_needed;
314 precision_t al_needed;
315 precision_t ae_needed;
316 precision_t kp_needed;
320 int iUseGridBasedModel;
324 std::string efield_model_to_use;
328 std::string auroral_model_to_use;
337 precision_t time_index;
349 struct input_electrodynamics_struct {
360 std::vector<double> times;
363 std::vector<arma_mat> potential;
366 arma_mat potential_current;
369 std::vector<arma_mat> energy_flux;
371 arma_mat energy_flux_current;
374 std::vector<arma_mat> average_energy;
376 arma_mat average_energy_current;
379 std::vector<arma_mat> ion_energy_flux;
381 arma_mat ion_energy_flux_current;
384 std::vector<arma_mat> ion_average_energy;
386 arma_mat ion_average_energy_current;
389 int DoesIncludeIonPrecip;
403 arma_mat lats_indices;
407 arma_mat mlts_indices;
416 std::vector<input_electrodynamics_struct> input_electrodynamics;
422 std::vector<int> grid_order;
425 int nElectrodynamicsGrids;
444 void read_netcdf_electrodynamics_file(std::string filename,
473 arma_mat get_values(arma_mat matToInterpolateOn,
int rows,
int cols);
476 #endif // INCLUDE_ELECTRODYNAMICS_H_