8 #ifndef INJECTOR_POSITION_H_ 9 #define INJECTOR_POSITION_H_ 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 int const nx = ref_fac*ppc.x;
81 int const ny = ref_fac*ppc.y;
82 #if (defined WARPX_DIM_3D) || (defined WARPX_DIM_RZ) 83 int const nz = ref_fac*ppc.z;
87 int const ix_part = i_part / (ny*nz);
88 int const iz_part = (i_part-ix_part*(ny*nz)) / ny;
89 int const iy_part = (i_part-ix_part*(ny*nz)) - ny*iz_part;
91 (0.5_rt + ix_part) / nx,
92 (0.5_rt + iy_part) / ny,
93 (0.5_rt + iz_part) / nz
111 amrex::Real a_xmin, amrex::Real a_xmax,
112 amrex::Real a_ymin, amrex::Real a_ymax,
113 amrex::Real a_zmin, amrex::Real a_zmax)
116 xmin(a_xmin), xmax(a_xmax),
117 ymin(a_ymin), ymax(a_ymax),
118 zmin(a_zmin), zmax(a_zmax)
123 amrex::Real a_xmin, amrex::Real a_xmax,
124 amrex::Real a_ymin, amrex::Real a_ymax,
125 amrex::Real a_zmin, amrex::Real a_zmax,
129 xmin(a_xmin), xmax(a_xmax),
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,
142 xmin(a_xmin), xmax(a_xmax),
143 ymin(a_ymin), ymax(a_ymax),
144 zmin(a_zmin), zmax(a_zmax)
165 return object.regular.getPositionUnitBox(i_part, ref_fac, engine);
167 case Type::randomplane:
169 return object.randomplane.getPositionUnitBox(i_part, ref_fac, engine);
173 return object.random.getPositionUnitBox(i_part, ref_fac, engine);
183 return (x < xmax and x >= xmin and
184 y < ymax and y >= ymin and
185 z < zmax and z >= zmin);
193 return ! ( (xmin > hi.x) || (xmax < lo.x)
194 || (ymin > hi.y) || (ymax < lo.y)
195 || (zmin > hi.z) || (zmax < lo.z) );
207 : randomplane(a_dir) {}
int dir
Definition: InjectorPosition.H:60
InjectorPositionRegular regular
Definition: InjectorPosition.H:212
integer, parameter, public regular
def x
Definition: read_lab_particles.py:26
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:110
Object(InjectorPositionRandom *) noexcept
Definition: InjectorPosition.H:205
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:135
Object(InjectorPositionRandomPlane *, int const &a_dir) noexcept
Definition: InjectorPosition.H:206
Definition: InjectorPosition.H:204
AMREX_GPU_HOST_DEVICE amrex::XDim3 getPositionUnitBox(int, int, amrex::RandomEngine const &engine) const noexcept
Definition: InjectorPosition.H:23
amrex::Real ymin
Definition: InjectorPosition.H:217
InjectorPositionRandomPlane randomplane
Definition: InjectorPosition.H:211
def z
Definition: read_lab_particles.py:27
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE bool overlapsWith(const amrex::XDim3 &lo, const amrex::XDim3 &hi) const noexcept
Definition: InjectorPosition.H:191
amrex::Real xmin
Definition: InjectorPosition.H:216
Type type
Definition: InjectorPosition.H:200
#define AMREX_FORCE_INLINE
InjectorPositionRegular(amrex::Dim3 const &a_ppc) noexcept
Definition: InjectorPosition.H:67
AMREX_GPU_HOST_DEVICE bool insideBounds(amrex::Real x, amrex::Real y, amrex::Real z) const noexcept
Definition: InjectorPosition.H:181
Definition: InjectorPosition.H:19
#define AMREX_GPU_HOST_DEVICE
InjectorPositionRandom random
Definition: InjectorPosition.H:210
type
Definition: run_alltests_1node.py:72
amrex::Real zmin
Definition: InjectorPosition.H:218
Type
Definition: InjectorPosition.H:199
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:122
Object object
Definition: InjectorPosition.H:214
AMREX_GPU_HOST_DEVICE amrex::XDim3 getPositionUnitBox(int const i_part, int const ref_fac, amrex::RandomEngine const &) const noexcept
Definition: InjectorPosition.H:75
Definition: InjectorPosition.H:65
Definition: InjectorPosition.H:32
Object(InjectorPositionRegular *, amrex::Dim3 const &a_ppc) noexcept
Definition: InjectorPosition.H:208
Definition: InjectorPosition.H:107
InjectorPositionRandomPlane(int const &a_dir) noexcept
Definition: InjectorPosition.H:34
AMREX_GPU_HOST_DEVICE amrex::XDim3 getPositionUnitBox(int const i_part, int const ref_fac, amrex::RandomEngine const &engine) const noexcept
Definition: InjectorPosition.H:158
AMREX_GPU_HOST_DEVICE amrex::XDim3 getPositionUnitBox(int, int, amrex::RandomEngine const &engine) const noexcept
Definition: InjectorPosition.H:38
amrex::Dim3 ppc
Definition: InjectorPosition.H:97