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,
22  Macroscopic = 1
23  };
24 };
25 
29 struct EvolveScheme {
30  enum {
31  Explicit = 0,
34  };
35 };
36 
44  enum {
46  LaxWendroff = 1
47  };
48 };
49 
50 struct GridType {
51  enum {
53  Staggered = 1,
54  Hybrid = 2
55  };
56 };
57 
59  enum {
60  None = 0,
61  Yee = 1,
62  CKC = 2,
63  PSATD = 3,
64  ECT = 4,
65  HybridPIC = 5
66  };
67 };
68 
70  enum {
71  None = 0,
74  LabFrame = 3 // Non relativistic
75  };
76 };
77 
79  enum {
80  Boris = 0,
81  Vay = 1,
82  HigueraCary = 2
83  };
84 };
85 
87  enum {
88  Esirkepov = 0,
89  Direct = 1,
90  Vay = 2
91  };
92 };
93 
95  // Only the Standard algorithm is implemented
96  enum {
97  Standard = 0
98  };
99 };
100 
102  enum {
105  };
106 };
107 
109  enum {
111  SecondOrder = 1
112  };
113 };
114 
115 struct JInTime {
116  enum {
117  Constant = 0,
118  Linear = 1
119  };
120 };
121 
122 struct RhoInTime {
123  enum {
124  Constant = 0,
125  Linear = 1
126  };
127 };
128 
132  enum {
133  Timers = 0,
134  Heuristic = 1,
136  GpuClock = 2
137  };
138 };
139 
143  enum {
144  PML = 0,
145  Periodic = 1,
146  PEC = 2,
147  PMC = 3,
148  Damped = 4, // Fields in the guard cells are damped for PSATD
149  //in the moving window direction
150  Absorbing_SilverMueller = 5, // Silver-Mueller boundary condition
151  Neumann = 6, // For electrostatic, the normal E is set to zero
152  None = 7 // The fields values at the boundary are not updated. This is
153  // useful for RZ simulations, at r=0.
154  };
155 };
156 
159 enum struct ParticleBoundaryType {
160  Absorbing = 0,
161  Open = 1,
162  Reflecting = 2,
163  Periodic = 3
164 };
165 
169  enum {
170  Maximum = 0,
171  Minimum = 1,
172  Sum = 2
173  };
174 };
175 
176 int
177 GetAlgorithmInteger(const amrex::ParmParse& pp, const char* pp_search_key );
178 
182 int
183 GetFieldBCTypeInteger( std::string BCType );
184 
188 GetParticleBCTypeInteger( std::string BCType );
189 
190 #endif // UTILS_WARPXALGORITHMSELECTION_H_
int GetAlgorithmInteger(const amrex::ParmParse &pp, const char *pp_search_key)
Definition: WarpXAlgorithmSelection.cpp:147
int GetFieldBCTypeInteger(std::string BCType)
Definition: WarpXAlgorithmSelection.cpp:216
ParticleBoundaryType GetParticleBCTypeInteger(std::string BCType)
Definition: WarpXAlgorithmSelection.cpp:233
ParticleBoundaryType
Definition: WarpXAlgorithmSelection.H:159
@ Absorbing
particles crossing domain boundary are removed
@ Reflecting
particles are reflected
@ Open
particles cross domain boundary leave with damped j
Definition: PML.H:137
Definition: WarpX_PEC.H:20
Definition: WarpXAlgorithmSelection.H:94
@ Standard
Definition: WarpXAlgorithmSelection.H:97
Definition: WarpXAlgorithmSelection.H:86
@ Vay
Definition: WarpXAlgorithmSelection.H:90
@ Direct
Definition: WarpXAlgorithmSelection.H:89
@ Esirkepov
Definition: WarpXAlgorithmSelection.H:88
Definition: WarpXAlgorithmSelection.H:58
@ Yee
Definition: WarpXAlgorithmSelection.H:61
@ HybridPIC
Definition: WarpXAlgorithmSelection.H:65
@ CKC
Definition: WarpXAlgorithmSelection.H:62
@ ECT
Definition: WarpXAlgorithmSelection.H:64
@ None
Definition: WarpXAlgorithmSelection.H:60
@ PSATD
Definition: WarpXAlgorithmSelection.H:63
Definition: WarpXAlgorithmSelection.H:69
@ LabFrameElectroMagnetostatic
Definition: WarpXAlgorithmSelection.H:73
@ Relativistic
Definition: WarpXAlgorithmSelection.H:72
@ LabFrame
Definition: WarpXAlgorithmSelection.H:74
@ None
Definition: WarpXAlgorithmSelection.H:71
struct to select the overall evolve scheme
Definition: WarpXAlgorithmSelection.H:29
@ SemiImplicitPicard
Definition: WarpXAlgorithmSelection.H:33
@ Explicit
Definition: WarpXAlgorithmSelection.H:31
@ ImplicitPicard
Definition: WarpXAlgorithmSelection.H:32
Definition: WarpXAlgorithmSelection.H:142
@ Periodic
Definition: WarpXAlgorithmSelection.H:145
@ Damped
Definition: WarpXAlgorithmSelection.H:148
@ None
Definition: WarpXAlgorithmSelection.H:152
@ Absorbing_SilverMueller
Definition: WarpXAlgorithmSelection.H:150
@ Neumann
Definition: WarpXAlgorithmSelection.H:151
@ PMC
perfect magnetic conductor (PMC) with B_tangential=0
Definition: WarpXAlgorithmSelection.H:147
Definition: WarpXAlgorithmSelection.H:101
@ MomentumConserving
Definition: WarpXAlgorithmSelection.H:104
@ EnergyConserving
Definition: WarpXAlgorithmSelection.H:103
Definition: WarpXAlgorithmSelection.H:50
@ Staggered
Definition: WarpXAlgorithmSelection.H:53
@ Collocated
Definition: WarpXAlgorithmSelection.H:52
@ Hybrid
Definition: WarpXAlgorithmSelection.H:54
Definition: WarpXAlgorithmSelection.H:115
@ Linear
Definition: WarpXAlgorithmSelection.H:118
@ Constant
Definition: WarpXAlgorithmSelection.H:117
Definition: WarpXAlgorithmSelection.H:131
@ Timers
load balance according to in-code timer-based weights (i.e., with costs)
Definition: WarpXAlgorithmSelection.H:133
@ Heuristic
Definition: WarpXAlgorithmSelection.H:134
@ GpuClock
Definition: WarpXAlgorithmSelection.H:136
struct to select algorithm for macroscopic Maxwell solver LaxWendroff (semi-implicit) represents sigm...
Definition: WarpXAlgorithmSelection.H:43
@ BackwardEuler
Definition: WarpXAlgorithmSelection.H:45
@ LaxWendroff
Definition: WarpXAlgorithmSelection.H:46
struct to determine the computational medium, i.e., vacuum or material/macroscopic default is vacuum.
Definition: WarpXAlgorithmSelection.H:19
@ Macroscopic
Definition: WarpXAlgorithmSelection.H:22
@ Vacuum
Definition: WarpXAlgorithmSelection.H:21
Definition: WarpXAlgorithmSelection.H:108
@ SecondOrder
Definition: WarpXAlgorithmSelection.H:111
@ FirstOrder
Definition: WarpXAlgorithmSelection.H:110
Definition: WarpXAlgorithmSelection.H:78
@ HigueraCary
Definition: WarpXAlgorithmSelection.H:82
@ Boris
Definition: WarpXAlgorithmSelection.H:80
@ Vay
Definition: WarpXAlgorithmSelection.H:81
Definition: WarpXAlgorithmSelection.H:168
@ Maximum
Definition: WarpXAlgorithmSelection.H:170
@ Sum
Definition: WarpXAlgorithmSelection.H:172
@ Minimum
Definition: WarpXAlgorithmSelection.H:171
Definition: WarpXAlgorithmSelection.H:122
@ Linear
Definition: WarpXAlgorithmSelection.H:125
@ Constant
Definition: WarpXAlgorithmSelection.H:124