WarpX
WarpXAlgorithmSelection.H
Go to the documentation of this file.
1 /* Copyright 2019 David Grote, Luca Fedeli, Remi Lehe
2  * Yinjian Zhao
3  *
4  * This file is part of WarpX.
5  *
6  * License: BSD-3-Clause-LBNL
7  */
8 #ifndef UTILS_WARPXALGORITHMSELECTION_H_
9 #define UTILS_WARPXALGORITHMSELECTION_H_
10 
11 #include <AMReX_BaseFwd.H>
12 
13 #include <string>
14 
19 struct MediumForEM {
20  enum {
21  Vacuum = 0,
23  };
24 };
25 
33  enum {
34  BackwardEuler = 0,
35  LaxWendroff = 1
36  };
37 };
38 
40  enum {
41  Yee = 0,
42  CKC = 1,
43  PSATD = 2,
44  ECT = 3
45  };
46 };
47 
49  enum {
50  None = 0,
51  Relativistic = 1,
52  LabFrame = 2
53  };
54 };
55 
57  enum {
58  Boris = 0,
59  Vay = 1,
60  HigueraCary = 2
61  };
62 };
63 
65  enum {
66  Esirkepov = 0,
67  Direct = 1,
68  Vay = 2
69  };
70 };
71 
73  // Only the Standard algorithm is implemented
74  enum {
75  Standard = 0
76  };
77 };
78 
79 struct GatheringAlgo {
80  enum {
81  EnergyConserving = 0,
82  MomentumConserving
83  };
84 };
85 
89  enum {
90  Timers = 0,
91  Heuristic = 1,
93  GpuClock = 2
94  };
95 };
96 
100  enum {
101  PML = 0,
102  Periodic = 1,
103  PEC = 2,
104  PMC = 3,
105  Damped = 4, // Fields in the guard cells are damped for PSATD
106  //in the moving window direction
107  Absorbing_SilverMueller = 5, // Silver-Mueller boundary condition
108  None = 6 // The fields values at the boundary are not updated. This is
109  // useful for RZ simulations, at r=0.
110  };
111 };
112 
115 enum struct ParticleBoundaryType {
116  Absorbing = 0,
117  Open = 1,
118  Reflecting = 2,
119  Periodic = 3
120 };
121 
125  enum {
126  Maximum = 0,
127  Minimum = 1,
128  Sum = 2
129  };
130 };
131 
132 int
133 GetAlgorithmInteger( amrex::ParmParse& pp, const char* pp_search_key );
134 
138 int
139 GetFieldBCTypeInteger( std::string BCType );
140 
144 GetParticleBCTypeInteger( std::string BCType );
145 
146 #endif // UTILS_WARPXALGORITHMSELECTION_H_
Definition: WarpXAlgorithmSelection.H:88
particles are reflected
particles cross domain boundary leave with damped j
Definition: WarpXAlgorithmSelection.H:21
Definition: WarpXAlgorithmSelection.H:56
Definition: WarpXAlgorithmSelection.H:79
int GetAlgorithmInteger(amrex::ParmParse &pp, const char *pp_search_key)
Definition: WarpXAlgorithmSelection.cpp:110
Definition: WarpXAlgorithmSelection.H:39
particles crossing domain boundary are removed
Definition: WarpXAlgorithmSelection.H:99
int GetFieldBCTypeInteger(std::string BCType)
Definition: WarpXAlgorithmSelection.cpp:166
Definition: WarpXAlgorithmSelection.H:72
Definition: WarpXAlgorithmSelection.H:124
struct to select algorithm for macroscopic Maxwell solver LaxWendroff (semi-implicit) represents sigm...
Definition: WarpXAlgorithmSelection.H:32
struct to determine the computational medium, i.e., vacuum or material/macroscopic default is vacuum...
Definition: WarpXAlgorithmSelection.H:19
Definition: PML.H:109
Definition: WarpXAlgorithmSelection.H:48
Definition: WarpXAlgorithmSelection.H:64
Definition: WarpXAlgorithmSelection.H:22
Definition: WarpX_PEC.H:20
ParticleBoundaryType
Definition: WarpXAlgorithmSelection.H:115
ParticleBoundaryType GetParticleBCTypeInteger(std::string BCType)
Definition: WarpXAlgorithmSelection.cpp:183