XGC1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
perturbed_B_field.hpp
Go to the documentation of this file.
1 #ifndef PTB_3DB_HPP
2 #define PTB_3DB_HPP
3 #include "NamelistReader.hpp"
4 #include "grid.hpp"
5 
6 extern "C" void get_3db_rampup_fac(const double *rampup_fac);
7 
8 struct PertVec {
9  double r;
10  double z;
11  double phi;
12 };
13 
14 // Perturbed magnetic field class
15 template<class Device>
17  public:
18 
19  // Field variables
20  bool rampup_vac;
21  int num_ntor;
23  int start_time;
24  int mode;
25  bool full_spec_on;
26 
27  double rampup_fac;
28 
29  // Field arrays
30  Kokkos::View<int*,Kokkos::LayoutRight,Device> ntor;
31  Kokkos::View<PertVec**,Kokkos::LayoutRight,Device> bfield_im_vac;
32  Kokkos::View<PertVec**,Kokkos::LayoutRight,Device> bfield_re_vac;
33 
34  // Constructor
35  PerturbedBField(NLReader::NamelistReader& nlr, bool rampup_vac_in, int num_ntor_in,
36  int rampup_time_in, int start_time_in,
37  int nnode_in, int *ntor_in);
38 
39  // Null constructor if ptb_3db is off
41 
42  // Update ramp_up
45  }
46 
47  // Get perturbed b-field
48  KOKKOS_INLINE_FUNCTION void get_delta_b(const Grid<Device> &grid, const Simd<double>& fld_phi, const Simd<int>& itr, const SimdGridVec &p, SimdVector &tdb) const;
49 
50 };
51 
52 #include "perturbed_B_field.tpp"
53 #endif
double rampup_fac
The current relative amplitude of the vacuum vector potential (if ptb_3db_mode==2) - this is updated ...
Definition: perturbed_B_field.hpp:27
double r
Definition: perturbed_B_field.hpp:9
int mode
Mode of RMP operation (details in XGC_core/module_ptb_3db.F90 –&gt; ptb_3db_mode)
Definition: perturbed_B_field.hpp:24
void get_3db_rampup_fac(const double *rampup_fac)
void update_rampup_fac_from_fortran() const
Definition: perturbed_B_field.hpp:43
Definition: simd.hpp:149
Definition: perturbed_B_field.hpp:16
double phi
Definition: perturbed_B_field.hpp:11
int rampup_time
Number of time steps over which the perturbed field is ramped up.
Definition: perturbed_B_field.hpp:22
Definition: perturbed_B_field.hpp:8
bool full_spec_on
(EM-only) whether to retain the full RMP spectrum from M3D-C1 or only |m/q-n|&lt;=sml_mode_select_mres_q...
Definition: perturbed_B_field.hpp:25
Definition: NamelistReader.hpp:193
double z
Definition: perturbed_B_field.hpp:10
Kokkos::View< PertVec **, Kokkos::LayoutRight, Device > bfield_re_vac
perturbed vacuum field on XGC mesh, real part, dimensions: (grid vertex, R-Z-phi components, tor. mode number)
Definition: perturbed_B_field.hpp:32
Definition: grid.hpp:66
Kokkos::View< int *, Kokkos::LayoutRight, Device > ntor
Array to store the toroidal mode numbers.
Definition: perturbed_B_field.hpp:30
KOKKOS_INLINE_FUNCTION void get_delta_b(const Grid< Device > &grid, const Simd< double > &fld_phi, const Simd< int > &itr, const SimdGridVec &p, SimdVector &tdb) const
Definition: perturbed_B_field.tpp:34
int num_ntor
Number of toroidal mode numbers (&lt;= sml_nphi_total)
Definition: perturbed_B_field.hpp:21
Definition: grid_structs.hpp:7
PerturbedBField()
Definition: perturbed_B_field.hpp:40
bool rampup_vac
(.true.) Ramp up perturbed field slowly, (.false.) turn on perturbed field abruptly ...
Definition: perturbed_B_field.hpp:20
int start_time
Time step in which perturbed field is switched on.
Definition: perturbed_B_field.hpp:23
Kokkos::View< PertVec **, Kokkos::LayoutRight, Device > bfield_im_vac
perturbed vacuum field on XGC mesh, imaginary part
Definition: perturbed_B_field.hpp:31