ARTEMIS
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 
27  enum {
29  None = 1
30  };
31 };
32 
34  enum {
35  Off = 0,
36  On = 1
37  };
38 };
39 
47  enum {
49  LaxWendroff = 1
50  };
51 };
52 
53 struct GridType {
54  enum {
56  Staggered = 1,
57  Hybrid = 2
58  };
59 };
60 
62  enum {
63  None = 0,
64  Yee = 1,
65  CKC = 2,
66  PSATD = 3,
67  ECT = 4
68  };
69 };
70 
72  enum {
73  None = 0,
76  LabFrame = 3 // Non relativistic
77  };
78 };
79 
81  enum {
82  Boris = 0,
83  Vay = 1,
84  HigueraCary = 2
85  };
86 };
87 
89  enum {
90  Esirkepov = 0,
91  Direct = 1,
92  Vay = 2
93  };
94 };
95 
97  // Only the Standard algorithm is implemented
98  enum {
99  Standard = 0
100  };
101 };
102 
104  enum {
107  };
108 };
109 
111  enum {
113  SecondOrder = 1
114  };
115 };
116 
117 struct JInTime {
118  enum {
119  Constant = 0,
120  Linear = 1
121  };
122 };
123 
124 struct RhoInTime {
125  enum {
126  Constant = 0,
127  Linear = 1
128  };
129 };
130 
134  enum {
135  Timers = 0,
136  Heuristic = 1,
138  GpuClock = 2
139  };
140 };
141 
145  enum {
146  PML = 0,
147  Periodic = 1,
148  PEC = 2,
149  PMC = 3,
150  Damped = 4, // Fields in the guard cells are damped for PSATD
151  //in the moving window direction
152  Absorbing_SilverMueller = 5, // Silver-Mueller boundary condition
153  Neumann = 6, // For electrostatic, the normal E is set to zero
154  None = 7 // The fields values at the boundary are not updated. This is
155  // useful for RZ simulations, at r=0.
156  };
157 };
158 
161 enum struct ParticleBoundaryType {
162  Absorbing = 0,
163  Open = 1,
164  Reflecting = 2,
165  Periodic = 3
166 };
167 
171  enum {
175 #ifdef WARPX_MAG_LLG
176  HfieldExternal = 3,
177  HbiasfieldExternal = 4,
178 #endif
180  };
181 };
182 
186  enum {
187  Maximum = 0,
188  Minimum = 1,
189  Sum = 2
190  };
191 };
192 
194  enum {
195  Volume = 0,
196  Surface = 1
197  };
198 };
199 
200 int
201 GetAlgorithmInteger( amrex::ParmParse& pp, const char* pp_search_key );
202 
206 int
207 GetFieldBCTypeInteger( std::string BCType );
208 
212 GetParticleBCTypeInteger( std::string BCType );
213 
214 #endif // UTILS_WARPXALGORITHMSELECTION_H_
int GetFieldBCTypeInteger(std::string BCType)
Definition: WarpXAlgorithmSelection.cpp:217
ParticleBoundaryType GetParticleBCTypeInteger(std::string BCType)
Definition: WarpXAlgorithmSelection.cpp:234
ParticleBoundaryType
Definition: WarpXAlgorithmSelection.H:161
@ Absorbing
particles crossing domain boundary are removed
@ Reflecting
particles are reflected
@ Open
particles cross domain boundary leave with damped j
int GetAlgorithmInteger(amrex::ParmParse &pp, const char *pp_search_key)
Definition: WarpXAlgorithmSelection.cpp:149
Definition: PML.H:128
Definition: WarpX_PEC.H:20
Definition: WarpXAlgorithmSelection.H:96
@ Standard
Definition: WarpXAlgorithmSelection.H:99
Definition: WarpXAlgorithmSelection.H:26
@ MaxwellLondon
Definition: WarpXAlgorithmSelection.H:28
@ None
Definition: WarpXAlgorithmSelection.H:29
Definition: WarpXAlgorithmSelection.H:88
@ Vay
Definition: WarpXAlgorithmSelection.H:92
@ Direct
Definition: WarpXAlgorithmSelection.H:91
@ Esirkepov
Definition: WarpXAlgorithmSelection.H:90
Definition: WarpXAlgorithmSelection.H:61
@ Yee
Definition: WarpXAlgorithmSelection.H:64
@ CKC
Definition: WarpXAlgorithmSelection.H:65
@ ECT
Definition: WarpXAlgorithmSelection.H:67
@ None
Definition: WarpXAlgorithmSelection.H:63
@ PSATD
Definition: WarpXAlgorithmSelection.H:66
Definition: WarpXAlgorithmSelection.H:71
@ LabFrameElectroMagnetostatic
Definition: WarpXAlgorithmSelection.H:75
@ Relativistic
Definition: WarpXAlgorithmSelection.H:74
@ LabFrame
Definition: WarpXAlgorithmSelection.H:76
@ None
Definition: WarpXAlgorithmSelection.H:73
Definition: WarpXAlgorithmSelection.H:170
@ BfieldExternal
Definition: WarpXAlgorithmSelection.H:174
@ EfieldExternal
Definition: WarpXAlgorithmSelection.H:173
@ EfieldExternalPML
Definition: WarpXAlgorithmSelection.H:179
@ AllExternal
Definition: WarpXAlgorithmSelection.H:172
Definition: WarpXAlgorithmSelection.H:144
@ Periodic
Definition: WarpXAlgorithmSelection.H:147
@ Damped
Definition: WarpXAlgorithmSelection.H:150
@ None
Definition: WarpXAlgorithmSelection.H:154
@ Absorbing_SilverMueller
Definition: WarpXAlgorithmSelection.H:152
@ Neumann
Definition: WarpXAlgorithmSelection.H:153
@ PMC
perfect magnetic conductor (PMC) with B_tangential=0
Definition: WarpXAlgorithmSelection.H:149
Definition: WarpXAlgorithmSelection.H:103
@ MomentumConserving
Definition: WarpXAlgorithmSelection.H:106
@ EnergyConserving
Definition: WarpXAlgorithmSelection.H:105
Definition: WarpXAlgorithmSelection.H:53
@ Staggered
Definition: WarpXAlgorithmSelection.H:56
@ Collocated
Definition: WarpXAlgorithmSelection.H:55
@ Hybrid
Definition: WarpXAlgorithmSelection.H:57
Definition: WarpXAlgorithmSelection.H:193
@ Surface
Definition: WarpXAlgorithmSelection.H:196
@ Volume
Definition: WarpXAlgorithmSelection.H:195
Definition: WarpXAlgorithmSelection.H:117
@ Linear
Definition: WarpXAlgorithmSelection.H:120
@ Constant
Definition: WarpXAlgorithmSelection.H:119
Definition: WarpXAlgorithmSelection.H:133
@ Timers
load balance according to in-code timer-based weights (i.e., with costs)
Definition: WarpXAlgorithmSelection.H:135
@ Heuristic
Definition: WarpXAlgorithmSelection.H:136
@ GpuClock
Definition: WarpXAlgorithmSelection.H:138
Definition: WarpXAlgorithmSelection.H:33
@ On
Definition: WarpXAlgorithmSelection.H:36
@ Off
Definition: WarpXAlgorithmSelection.H:35
struct to select algorithm for macroscopic Maxwell solver LaxWendroff (semi-implicit) represents sigm...
Definition: WarpXAlgorithmSelection.H:46
@ BackwardEuler
Definition: WarpXAlgorithmSelection.H:48
@ LaxWendroff
Definition: WarpXAlgorithmSelection.H:49
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:110
@ SecondOrder
Definition: WarpXAlgorithmSelection.H:113
@ FirstOrder
Definition: WarpXAlgorithmSelection.H:112
Definition: WarpXAlgorithmSelection.H:80
@ HigueraCary
Definition: WarpXAlgorithmSelection.H:84
@ Boris
Definition: WarpXAlgorithmSelection.H:82
@ Vay
Definition: WarpXAlgorithmSelection.H:83
Definition: WarpXAlgorithmSelection.H:185
@ Maximum
Definition: WarpXAlgorithmSelection.H:187
@ Sum
Definition: WarpXAlgorithmSelection.H:189
@ Minimum
Definition: WarpXAlgorithmSelection.H:188
Definition: WarpXAlgorithmSelection.H:124
@ Linear
Definition: WarpXAlgorithmSelection.H:127
@ Constant
Definition: WarpXAlgorithmSelection.H:126