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