8 #ifndef WARPX_INJECTOR_POSITION_H_
9 #define WARPX_INJECTOR_POSITION_H_
43 using namespace amrex::literals;
44 #if ((defined WARPX_DIM_3D) || (defined WARPX_DIM_RZ))
49 #elif (defined(WARPX_DIM_XZ))
54 #elif (defined(WARPX_DIM_1D_Z))
81 using namespace amrex;
83 #if (defined WARPX_DIM_3D)
84 int const nx = ref_fac[0]*ppc.x;
85 int const ny = ref_fac[1]*ppc.y;
86 int const nz = ref_fac[2]*ppc.z;
87 #elif (defined WARPX_DIM_RZ)
88 int const nx = ref_fac[0]*ppc.x;
89 int const ny = ref_fac[1]*ppc.y;
91 #elif (defined WARPX_DIM_XZ)
92 int const nx = ref_fac[0]*ppc.x;
93 int const ny = ref_fac[1]*ppc.y;
95 #elif (defined WARPX_DIM_1D_Z)
96 int const nx = ref_fac[0]*ppc.x;
100 int const ix_part = i_part / (ny*nz);
101 int const iz_part = (i_part-ix_part*(ny*nz)) / ny;
102 int const iy_part = (i_part-ix_part*(ny*nz)) - ny*iz_part;
104 (0.5_rt + ix_part) /
nx,
105 (0.5_rt + iy_part) / ny,
106 (0.5_rt + iz_part) / nz
124 amrex::Real a_xmin, amrex::Real a_xmax,
125 amrex::Real a_ymin, amrex::Real a_ymax,
126 amrex::Real a_zmin, amrex::Real a_zmax)
130 ymin(a_ymin), ymax(a_ymax),
131 zmin(a_zmin), zmax(a_zmax)
136 amrex::Real a_xmin, amrex::Real a_xmax,
137 amrex::Real a_ymin, amrex::Real a_ymax,
138 amrex::Real a_zmin, amrex::Real a_zmax,
143 ymin(a_ymin), ymax(a_ymax),
144 zmin(a_zmin), zmax(a_zmax)
149 amrex::Real a_xmin, amrex::Real a_xmax,
150 amrex::Real a_ymin, amrex::Real a_ymax,
151 amrex::Real a_zmin, amrex::Real a_zmax,
156 ymin(a_ymin), ymax(a_ymax),
157 zmin(a_zmin), zmax(a_zmax)
181 return object.regular.getPositionUnitBox(i_part, ref_fac, engine);
183 case Type::randomplane:
185 return object.randomplane.getPositionUnitBox(i_part, ref_fac, engine);
189 return object.random.getPositionUnitBox(i_part, ref_fac, engine);
202 insideBounds (amrex::Real x, amrex::Real y, amrex::Real z)
const noexcept
204 return (x < xmax and x >=
xmin and
205 y < ymax and y >= ymin and
206 z < zmax and z >= zmin);
219 return (x <= xmax and x >=
xmin and
220 y <= ymax and y >= ymin and
221 z <= zmax and z >= zmin);
230 return ( (
xmin <= hi.x) && (
xmax >= lo.x)
231 && (ymin <= hi.y) && (ymax >= lo.y)
232 && (zmin <= hi.z) && (zmax >= lo.z) );
244 : randomplane(a_dir) {}
#define AMREX_FORCE_INLINE
#define AMREX_GPU_HOST_DEVICE
integer, parameter, public regular
type
Definition: run_alltests_1node.py:72
xmin
Definition: stencil.py:424
xmax
Definition: stencil.py:425
nx
Definition: stencil.py:423
Definition: InjectorPosition.H:121
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:123
amrex::Real ymax
Definition: InjectorPosition.H:254
Object object
Definition: InjectorPosition.H:251
Type
Definition: InjectorPosition.H:236
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE bool overlapsWith(const amrex::XDim3 &lo, const amrex::XDim3 &hi) const noexcept
Definition: InjectorPosition.H:228
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:135
AMREX_GPU_HOST_DEVICE bool insideBounds(amrex::Real x, amrex::Real y, amrex::Real z) const noexcept
Definition: InjectorPosition.H:202
amrex::Real zmax
Definition: InjectorPosition.H:255
AMREX_GPU_HOST_DEVICE bool insideBoundsInclusive(amrex::Real x, amrex::Real y, amrex::Real z) const noexcept
Definition: InjectorPosition.H:217
Type type
Definition: InjectorPosition.H:237
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:148
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:174
InjectorPosition(InjectorPosition const &)=delete
amrex::Real xmax
Definition: InjectorPosition.H:253
~InjectorPosition()=default
Definition: InjectorPosition.H:20
AMREX_GPU_HOST_DEVICE amrex::XDim3 getPositionUnitBox(int, amrex::IntVect const, amrex::RandomEngine const &engine) const noexcept
Definition: InjectorPosition.H:24
Definition: InjectorPosition.H:34
int dir
Definition: InjectorPosition.H:62
InjectorPositionRandomPlane(int const &a_dir) noexcept
Definition: InjectorPosition.H:35
AMREX_GPU_HOST_DEVICE amrex::XDim3 getPositionUnitBox(int, amrex::IntVect const, amrex::RandomEngine const &engine) const noexcept
Definition: InjectorPosition.H:40
Definition: InjectorPosition.H:68
InjectorPositionRegular(amrex::Dim3 const &a_ppc) noexcept
Definition: InjectorPosition.H:69
AMREX_GPU_HOST_DEVICE amrex::XDim3 getPositionUnitBox(int const i_part, amrex::IntVect const ref_fac, amrex::RandomEngine const &) const noexcept
Definition: InjectorPosition.H:78
amrex::Dim3 ppc
Definition: InjectorPosition.H:110
Definition: InjectorPosition.H:241
Object(InjectorPositionRandom *) noexcept
Definition: InjectorPosition.H:242
InjectorPositionRegular regular
Definition: InjectorPosition.H:249
InjectorPositionRandom random
Definition: InjectorPosition.H:247
InjectorPositionRandomPlane randomplane
Definition: InjectorPosition.H:248
Object(InjectorPositionRandomPlane *, int const &a_dir) noexcept
Definition: InjectorPosition.H:243
Object(InjectorPositionRegular *, amrex::Dim3 const &a_ppc) noexcept
Definition: InjectorPosition.H:245