Aether  0.0
Ionosphere-Thermosphere model
solvers.h
1 // Copyright 2020, the Aether Development Team (see doc/dev_team.md for members)
2 // Full license can be found in License.md
3 
4 #ifndef INCLUDE_SOLVERS_H_
5 #define INCLUDE_SOLVERS_H_
6 
7 // The armadillo library is to allow the use of 3d cubes and other
8 // array types, with array math built in. This eliminates loops!
9 #include <armadillo>
10 using namespace arma;
11 
12 arma_vec solver_conduction(arma_vec value,
13  arma_vec lambda,
14  arma_vec front,
15  precision_t dt,
16  arma_vec dx);
17 
18 
19 arma_cube solver_chemistry(arma_cube density,
20  arma_cube source,
21  arma_cube loss,
22  precision_t dt);
23 
26 const int iPrevious_ = 1;
27 const int iNext_ = 2;
28 const int iClosest_ = 3;
29 const int iInterp_ = 4;
30 
31 double interpolate_1d_get_index_doubles(double intime,
32  std::vector<double> times);
33 
34 // Overloading the interpolation function:
35 double interpolate_1d_w_index(std::vector<double> values,
36  double interpolation_index,
37  int interpolation_type);
38 double interpolate_1d_w_index(std::vector<float> values,
39  double interpolation_index,
40  int interpolation_type);
41 double interpolate_1d_w_index(std::vector<float> values,
42  float interpolation_index,
43  int interpolation_type);
44 double interpolate_1d_w_index(arma_vec values,
45  double interpolation_index,
46  int interpolation_type);
47 fmat interpolate_1d_w_index(std::vector<fmat> values,
48  double interpolation_index,
49  int interpolation_type);
50 
51 arma_cube calc_gradient_lon(arma_cube value, Grid grid);
52 arma_cube calc_gradient_lat(arma_cube value, Grid grid);
53 arma_cube calc_gradient_alt(arma_cube value, Grid grid);
54 std::vector<arma_cube> calc_gradient_vector(arma_cube value_scgc, Grid grid);
55 
56 #endif // INCLUDE_SOLVERS_H_
Grid
Definition: arm_vars.h:11