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