OSHUN  beta
Arbitrary Order Spherical-Harmonic 1D-3P Vlasov-Fokker-Planck-Maxwell code
setup.h
Go to the documentation of this file.
1 
10  #ifndef DECL_SETUP_H
11  #define DECL_SETUP_H
12 
13 //--------------------------------------------------------------
14 //--------------------------------------------------------------
15 class Grid_Info {
16 //--------------------------------------------------------------
17 public:
18 // Constructor
19  Grid_Info(const vector<size_t> _l0, const vector<size_t> _m0,
20  const vector<double> _mass, const vector<double> _charge,
21 // local spatial axes
22  const vector<double> _xmin, const vector<double> _xmax, const vector<size_t> _Nx,
23 // global spatial axes
24  const vector<double> _xgmin,const vector<double> _xgmax, const vector<size_t> _Nxg,
25 // momentum axes
26  const vector<double> _pmax, const vector<size_t> _Np,
27 // output momentum axes
28  const vector<size_t> _Npx, const vector<size_t> _Npy, const vector<size_t> _Npz)
29  : l0(_l0), m0(_m0),
30  Np(_Np), mass(_mass), charge(_charge),
31  axis( _xmin, _xmax, _Nx, _xgmin, _xgmax, _Nxg, _pmax, _Np, _Npx, _Npy, _Npz ) {}
32 
33 //--------------------------------------------------------------
34 // Copy constructor
35  Grid_Info(const Grid_Info& other): l0(other.l0), m0(other.m0),
36  Np(other.Np),
37  mass(other.mass), charge(other.charge),
38  axis(other.axis){}
40 
41  const vector<size_t> l0;
42  const vector<size_t> m0;
43  const vector<size_t> Np;
44  const vector<double> mass;
45  const vector<double> charge;
46 
48 };
49 //--------------------------------------------------------------
50 //--------------------------------------------------------------
51 
52 
53 namespace Setup_Y {
54 
55  typedef exprtk::symbol_table<double> symbol_table_t;
56  typedef exprtk::expression<double> expression_t;
57  typedef exprtk::parser<double> parser_t;
58  typedef exprtk::parser_error::type error_t;
59 
60  void checkparse(parser_t& parser, std::string& expression_str, expression_t& expression);
61  void parseprofile(const valarray<double>& grid, std::string& str_profile, valarray<double>& profile);
62  void parseprofile(const double& input, std::string& str_profile, double& ouput);
63  void parsetwovariableprofile(const valarray<double>& grid, const double& input, std::string& str_profile, valarray<double>& ouput);
64  // void startmessages(State1D& Y);
65 
66  void init_f0(size_t s, SHarmonic1D& h, const valarray<double>& p, const valarray<double>& x,
67  valarray<double>& density, valarray<double>& temperature,const double mass, const valarray<double>& pedestal);
68 
69  void init_f1(size_t s, SHarmonic1D& h, const valarray<double>& p, const valarray<double>& x,
70  valarray<double>& density, valarray<double>& temperature, valarray<double>& f10x, const SHarmonic1D& f0, const double mass);
71 
72  void init_f2(size_t s, SHarmonic1D& h, const valarray<double>& p, const valarray<double>& x,
73  valarray<double>& density, valarray<double>& temperature, valarray<double>& f20x, const double mass);
74 
75 // Initialize the appropriate density and temperature profiles (from the list below)
76  void initialize(State1D &Y, Grid_Info &grid);
77 
78  void applyexternalfields(Grid_Info &grid, State1D &Y, double time);
79  void applytravelingwave(Grid_Info &grid, State1D &Y, double time);
80 
81 }
82 
83 
84 
85 //**************************************************************
86 
87  #endif
void init_f0(size_t s, SHarmonic1D &h, const valarray< double > &p, const valarray< double > &x, valarray< double > &density, valarray< double > &temperature, const double mass, const valarray< double > &pedestal)
Definition: setup.cpp:258
exprtk::parser< double > parser_t
Definition: setup.h:57
~Grid_Info()
Definition: setup.h:39
const vector< size_t > l0
Definition: setup.h:39
void applyexternalfields(Grid_Info &grid, State1D &Y, double time)
Definition: setup.cpp:51
exprtk::expression< double > expression_t
Definition: setup.h:56
const vector< double > mass
Definition: setup.h:44
exprtk::symbol_table< double > symbol_table_t
Definition: setup.h:55
void parsetwovariableprofile(const valarray< double > &grid, const double &input, std::string &str_profile, valarray< double > &ouput)
{ function_description }
Definition: setup.cpp:633
exprtk::parser_error::type error_t
Definition: setup.h:58
void initialize(State1D &Y, Grid_Info &grid)
Definition: setup.cpp:177
const vector< size_t > m0
Definition: setup.h:42
void parseprofile(const double &input, std::string &str_profile, double &ouput)
{ function_description }
Definition: setup.cpp:521
Grid_Info(const vector< size_t > _l0, const vector< size_t > _m0, const vector< double > _mass, const vector< double > _charge, const vector< double > _xmin, const vector< double > _xmax, const vector< size_t > _Nx, const vector< double > _xgmin, const vector< double > _xgmax, const vector< size_t > _Nxg, const vector< double > _pmax, const vector< size_t > _Np, const vector< size_t > _Npx, const vector< size_t > _Npy, const vector< size_t > _Npz)
Definition: setup.h:19
A 1D Spherical Harmonic.
Definition: state.h:57
void init_f1(size_t s, SHarmonic1D &h, const valarray< double > &p, const valarray< double > &x, valarray< double > &density, valarray< double > &temperature, valarray< double > &f10x, const SHarmonic1D &f0, const double mass)
Definition: setup.cpp:300
Definition: state.h:577
const vector< size_t > Np
Definition: setup.h:43
void init_f2(size_t s, SHarmonic1D &h, const valarray< double > &p, const valarray< double > &x, valarray< double > &density, valarray< double > &temperature, valarray< double > &f20x, const double mass)
Definition: setup.cpp:333
const Algorithms::AxisBundle< double > axis
Definition: setup.h:47
void applytravelingwave(Grid_Info &grid, State1D &Y, double time)
Definition: setup.cpp:95
Definition: setup.h:53
const vector< double > charge
Definition: setup.h:45
Grid_Info(const Grid_Info &other)
Definition: setup.h:35
void checkparse(parser_t &parser, std::string &expression_str, expression_t &expression)
Definition: setup.cpp:375