8 #ifndef INJECTOR_POSITION_H_
9 #define INJECTOR_POSITION_H_
41 using namespace amrex::literals;
42 #if ((defined WARPX_DIM_3D) || (defined WARPX_DIM_RZ))
47 #elif (defined(WARPX_DIM_XZ))
52 #elif (defined(WARPX_DIM_1D_Z))
78 using namespace amrex;
80 #if (defined WARPX_DIM_3D)
81 int const nx = ref_fac[0]*ppc.x;
82 int const ny = ref_fac[1]*ppc.y;
83 int const nz = ref_fac[2]*ppc.z;
84 #elif (defined WARPX_DIM_RZ)
85 int const nx = ref_fac[0]*ppc.x;
86 int const ny = ref_fac[1]*ppc.y;
88 #elif (defined WARPX_DIM_XZ)
89 int const nx = ref_fac[0]*ppc.x;
90 int const ny = ref_fac[1]*ppc.y;
92 #elif (defined WARPX_DIM_1D_Z)
93 int const nx = ref_fac[0]*ppc.x;
97 int const ix_part = i_part / (ny*nz);
98 int const iz_part = (i_part-ix_part*(ny*nz)) / ny;
99 int const iy_part = (i_part-ix_part*(ny*nz)) - ny*iz_part;
101 (0.5_rt + ix_part) / nx,
102 (0.5_rt + iy_part) / ny,
103 (0.5_rt + iz_part) / nz
121 amrex::Real a_xmin, amrex::Real a_xmax,
122 amrex::Real a_ymin, amrex::Real a_ymax,
123 amrex::Real a_zmin, amrex::Real a_zmax)
126 xmin(a_xmin), xmax(a_xmax),
127 ymin(a_ymin), ymax(a_ymax),
128 zmin(a_zmin), zmax(a_zmax)
133 amrex::Real a_xmin, amrex::Real a_xmax,
134 amrex::Real a_ymin, amrex::Real a_ymax,
135 amrex::Real a_zmin, amrex::Real a_zmax,
139 xmin(a_xmin), xmax(a_xmax),
140 ymin(a_ymin), ymax(a_ymax),
141 zmin(a_zmin), zmax(a_zmax)
146 amrex::Real a_xmin, amrex::Real a_xmax,
147 amrex::Real a_ymin, amrex::Real a_ymax,
148 amrex::Real a_zmin, amrex::Real a_zmax,
152 xmin(a_xmin), xmax(a_xmax),
153 ymin(a_ymin), ymax(a_ymax),
154 zmin(a_zmin), zmax(a_zmax)
175 return object.regular.getPositionUnitBox(i_part, ref_fac, engine);
177 case Type::randomplane:
179 return object.randomplane.getPositionUnitBox(i_part, ref_fac, engine);
183 return object.random.getPositionUnitBox(i_part, ref_fac, engine);
197 return (x < xmax and x >= xmin and
198 y < ymax and y >= ymin and
199 z < zmax and z >= zmin);
211 return (x <= xmax and x >= xmin and
212 y <= ymax and y >= ymin and
213 z <= zmax and z >= zmin);
221 return ! ( (xmin > hi.x) || (xmax < lo.x)
222 || (ymin > hi.y) || (ymax < lo.y)
223 || (zmin > hi.z) || (zmax < lo.z) );
227 enum struct Type { random, randomplane, regular };
235 : randomplane(a_dir) {}
#define AMREX_FORCE_INLINE
#define AMREX_GPU_HOST_DEVICE
def y
Definition: Excitation_Flag_Generator.py:76
def x
Formats datastring to remove "+" at the end of the string #####.
Definition: Excitation_Flag_Generator.py:75
def z
Definition: Excitation_Flag_Generator.py:77
type
Definition: run_alltests_1node.py:72
Definition: InjectorPosition.H:118
InjectorPosition(InjectorPositionRandom *t, amrex::Real a_xmin, amrex::Real a_xmax, amrex::Real a_ymin, amrex::Real a_ymax, amrex::Real a_zmin, amrex::Real a_zmax)
Definition: InjectorPosition.H:120
amrex::Real ymax
Definition: InjectorPosition.H:245
Object object
Definition: InjectorPosition.H:242
Type
Definition: InjectorPosition.H:227
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE bool overlapsWith(const amrex::XDim3 &lo, const amrex::XDim3 &hi) const noexcept
Definition: InjectorPosition.H:219
InjectorPosition(InjectorPositionRandomPlane *t, amrex::Real a_xmin, amrex::Real a_xmax, amrex::Real a_ymin, amrex::Real a_ymax, amrex::Real a_zmin, amrex::Real a_zmax, int const &a_dir)
Definition: InjectorPosition.H:132
AMREX_GPU_HOST_DEVICE bool insideBounds(amrex::Real x, amrex::Real y, amrex::Real z) const noexcept
Definition: InjectorPosition.H:195
amrex::Real zmax
Definition: InjectorPosition.H:246
AMREX_GPU_HOST_DEVICE bool insideBoundsInclusive(amrex::Real x, amrex::Real y, amrex::Real z) const noexcept
Definition: InjectorPosition.H:209
Type type
Definition: InjectorPosition.H:228
InjectorPosition(InjectorPositionRegular *t, amrex::Real a_xmin, amrex::Real a_xmax, amrex::Real a_ymin, amrex::Real a_ymax, amrex::Real a_zmin, amrex::Real a_zmax, amrex::Dim3 const &a_ppc)
Definition: InjectorPosition.H:145
InjectorPosition(InjectorPosition &&)=delete
AMREX_GPU_HOST_DEVICE amrex::XDim3 getPositionUnitBox(int const i_part, amrex::IntVect const ref_fac, amrex::RandomEngine const &engine) const noexcept
Definition: InjectorPosition.H:168
InjectorPosition(InjectorPosition const &)=delete
amrex::Real xmax
Definition: InjectorPosition.H:244
Definition: InjectorPosition.H:20
AMREX_GPU_HOST_DEVICE amrex::XDim3 getPositionUnitBox(int, amrex::IntVect const, amrex::RandomEngine const &engine) const noexcept
Definition: InjectorPosition.H:23
Definition: InjectorPosition.H:33
int dir
Definition: InjectorPosition.H:60
InjectorPositionRandomPlane(int const &a_dir) noexcept
Definition: InjectorPosition.H:34
AMREX_GPU_HOST_DEVICE amrex::XDim3 getPositionUnitBox(int, amrex::IntVect const, amrex::RandomEngine const &engine) const noexcept
Definition: InjectorPosition.H:38
Definition: InjectorPosition.H:66
InjectorPositionRegular(amrex::Dim3 const &a_ppc) noexcept
Definition: InjectorPosition.H:67
AMREX_GPU_HOST_DEVICE amrex::XDim3 getPositionUnitBox(int const i_part, amrex::IntVect const ref_fac, amrex::RandomEngine const &) const noexcept
Definition: InjectorPosition.H:75
amrex::Dim3 ppc
Definition: InjectorPosition.H:107
Definition: InjectorPosition.H:232
Object(InjectorPositionRandom *) noexcept
Definition: InjectorPosition.H:233
InjectorPositionRegular regular
Definition: InjectorPosition.H:240
InjectorPositionRandom random
Definition: InjectorPosition.H:238
InjectorPositionRandomPlane randomplane
Definition: InjectorPosition.H:239
Object(InjectorPositionRandomPlane *, int const &a_dir) noexcept
Definition: InjectorPosition.H:234
Object(InjectorPositionRegular *, amrex::Dim3 const &a_ppc) noexcept
Definition: InjectorPosition.H:236