|
WarpX
|
#include "Particles/Gather/GetExternalFields.H"#include "Particles/Pusher/GetAndSetPosition.H"#include "Particles/ShapeFactors.H"#include "Utils/WarpX_Complex.H"#include <AMReX.H>Go to the source code of this file.
Functions | |
| template<int depos_order_perp, int depos_order_para> | |
| AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void | doDirectGatherVectorField (const amrex::ParticleReal xp, const amrex::ParticleReal yp, const amrex::ParticleReal zp, amrex::ParticleReal &Fxp, amrex::ParticleReal &Fyp, amrex::ParticleReal &Fzp, amrex::Array4< amrex::Real const > const &Fx_arr, amrex::Array4< amrex::Real const > const &Fy_arr, amrex::Array4< amrex::Real const > const &Fz_arr, const amrex::IndexType Fx_type, const amrex::IndexType Fy_type, const amrex::IndexType Fz_type, const amrex::XDim3 &dinv, const amrex::XDim3 &xyzmin, const amrex::Dim3 &lo, const int n_rz_azimuthal_modes) |
| Gather vector field F for a single particle. | |
| template<int depos_order, int galerkin_interpolation> | |
| AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void | doGatherShapeN (const amrex::ParticleReal xp, const amrex::ParticleReal yp, const amrex::ParticleReal zp, amrex::ParticleReal &Exp, amrex::ParticleReal &Eyp, amrex::ParticleReal &Ezp, amrex::ParticleReal &Bxp, amrex::ParticleReal &Byp, amrex::ParticleReal &Bzp, amrex::Array4< amrex::Real const > const &ex_arr, amrex::Array4< amrex::Real const > const &ey_arr, amrex::Array4< amrex::Real const > const &ez_arr, amrex::Array4< amrex::Real const > const &bx_arr, amrex::Array4< amrex::Real const > const &by_arr, amrex::Array4< amrex::Real const > const &bz_arr, const amrex::IndexType ex_type, const amrex::IndexType ey_type, const amrex::IndexType ez_type, const amrex::IndexType bx_type, const amrex::IndexType by_type, const amrex::IndexType bz_type, const amrex::XDim3 &dinv, const amrex::XDim3 &xyzmin, const amrex::Dim3 &lo, const int n_rz_azimuthal_modes) |
| Field gather for a single particle. | |
| template<int depos_order> | |
| AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void | doGatherShapeNEsirkepovStencilImplicit (const amrex::ParticleReal xp_n, const amrex::ParticleReal yp_n, const amrex::ParticleReal zp_n, const amrex::ParticleReal xp_nph, const amrex::ParticleReal yp_nph, const amrex::ParticleReal zp_nph, amrex::ParticleReal &Exp, amrex::ParticleReal &Eyp, amrex::ParticleReal &Ezp, amrex::ParticleReal &Bxp, amrex::ParticleReal &Byp, amrex::ParticleReal &Bzp, amrex::Array4< amrex::Real const > const &Ex_arr, amrex::Array4< amrex::Real const > const &Ey_arr, amrex::Array4< amrex::Real const > const &Ez_arr, amrex::Array4< amrex::Real const > const &Bx_arr, amrex::Array4< amrex::Real const > const &By_arr, amrex::Array4< amrex::Real const > const &Bz_arr, const amrex::IndexType Ex_type, const amrex::IndexType Ey_type, const amrex::IndexType Ez_type, const amrex::IndexType Bx_type, const amrex::IndexType By_type, const amrex::IndexType Bz_type, const amrex::XDim3 &dinv, const amrex::XDim3 &xyzmin, const amrex::Dim3 &lo, const int n_rz_azimuthal_modes) |
| Energy conserving field gather for thread thread_num for the implicit scheme This uses the same stencil for the gather that is used for Esirkepov current deposition. | |
| template<int depos_order> | |
| AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void | doGatherPicnicShapeN (const amrex::ParticleReal xp_n, const amrex::ParticleReal yp_n, const amrex::ParticleReal zp_n, const amrex::ParticleReal xp_nph, const amrex::ParticleReal yp_nph, const amrex::ParticleReal zp_nph, amrex::ParticleReal &Exp, amrex::ParticleReal &Eyp, amrex::ParticleReal &Ezp, amrex::ParticleReal &Bxp, amrex::ParticleReal &Byp, amrex::ParticleReal &Bzp, amrex::Array4< amrex::Real const > const &Ex_arr, amrex::Array4< amrex::Real const > const &Ey_arr, amrex::Array4< amrex::Real const > const &Ez_arr, amrex::Array4< amrex::Real const > const &Bx_arr, amrex::Array4< amrex::Real const > const &By_arr, amrex::Array4< amrex::Real const > const &Bz_arr, const amrex::IndexType Ex_type, const amrex::IndexType Ey_type, const amrex::IndexType Ez_type, const amrex::IndexType Bx_type, const amrex::IndexType By_type, const amrex::IndexType Bz_type, const amrex::XDim3 &dinv, const amrex::XDim3 &xyzmin, const amrex::Dim3 &lo, const int n_rz_azimuthal_modes) |
| Energy conserving field gather for thread thread_num for the implicit scheme This uses the same stencil for the gather that is used for Villasenor current deposition. The magnetic field is deposited using direct deposition. | |
| AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void | doGatherShapeN (const amrex::ParticleReal xp, const amrex::ParticleReal yp, const amrex::ParticleReal zp, amrex::ParticleReal &Exp, amrex::ParticleReal &Eyp, amrex::ParticleReal &Ezp, amrex::ParticleReal &Bxp, amrex::ParticleReal &Byp, amrex::ParticleReal &Bzp, amrex::Array4< amrex::Real const > const &ex_arr, amrex::Array4< amrex::Real const > const &ey_arr, amrex::Array4< amrex::Real const > const &ez_arr, amrex::Array4< amrex::Real const > const &bx_arr, amrex::Array4< amrex::Real const > const &by_arr, amrex::Array4< amrex::Real const > const &bz_arr, const amrex::IndexType ex_type, const amrex::IndexType ey_type, const amrex::IndexType ez_type, const amrex::IndexType bx_type, const amrex::IndexType by_type, const amrex::IndexType bz_type, const amrex::XDim3 &dinv, const amrex::XDim3 &xyzmin, const amrex::Dim3 &lo, const int n_rz_azimuthal_modes, const int nox, const bool galerkin_interpolation) |
| Field gather for a single particle. | |
| AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void | doGatherShapeNImplicit (const amrex::ParticleReal xp_n, const amrex::ParticleReal yp_n, const amrex::ParticleReal zp_n, const amrex::ParticleReal xp_nph, const amrex::ParticleReal yp_nph, const amrex::ParticleReal zp_nph, amrex::ParticleReal &Exp, amrex::ParticleReal &Eyp, amrex::ParticleReal &Ezp, amrex::ParticleReal &Bxp, amrex::ParticleReal &Byp, amrex::ParticleReal &Bzp, amrex::Array4< amrex::Real const > const &ex_arr, amrex::Array4< amrex::Real const > const &ey_arr, amrex::Array4< amrex::Real const > const &ez_arr, amrex::Array4< amrex::Real const > const &bx_arr, amrex::Array4< amrex::Real const > const &by_arr, amrex::Array4< amrex::Real const > const &bz_arr, const amrex::IndexType ex_type, const amrex::IndexType ey_type, const amrex::IndexType ez_type, const amrex::IndexType bx_type, const amrex::IndexType by_type, const amrex::IndexType bz_type, const amrex::XDim3 &dinv, const amrex::XDim3 &xyzmin, const amrex::Dim3 &lo, const int n_rz_azimuthal_modes, const int nox, const CurrentDepositionAlgo depos_type) |
| Field gather for a single particle. | |
| AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void doDirectGatherVectorField | ( | const amrex::ParticleReal | xp, |
| const amrex::ParticleReal | yp, | ||
| const amrex::ParticleReal | zp, | ||
| amrex::ParticleReal & | Fxp, | ||
| amrex::ParticleReal & | Fyp, | ||
| amrex::ParticleReal & | Fzp, | ||
| amrex::Array4< amrex::Real const > const & | Fx_arr, | ||
| amrex::Array4< amrex::Real const > const & | Fy_arr, | ||
| amrex::Array4< amrex::Real const > const & | Fz_arr, | ||
| const amrex::IndexType | Fx_type, | ||
| const amrex::IndexType | Fy_type, | ||
| const amrex::IndexType | Fz_type, | ||
| const amrex::XDim3 & | dinv, | ||
| const amrex::XDim3 & | xyzmin, | ||
| const amrex::Dim3 & | lo, | ||
| const int | n_rz_azimuthal_modes ) |
Gather vector field F for a single particle.
| depos_order_perp | Particle shape order in parallel direction |
| depos_order_para | Particle shape order in perpendicular direction |
| xp,yp,zp | Particle position coordinates |
| Fxp,Fyp,Fzp | Vector field on particle |
| Fx_arr,Fy_arr,Fz_arr | Array4 of the vector field, either full array or tile |
| Fx_type,Fy_type,Fz_type | Index type of the vector fields |
| dinv | 3D cell size inverse |
| xyzmin | The lower bounds of the domain |
| lo | Index lower bounds of domain |
| n_rz_azimuthal_modes | Number of azimuthal modes when using RZ geometry |
| AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void doGatherPicnicShapeN | ( | const amrex::ParticleReal | xp_n, |
| const amrex::ParticleReal | yp_n, | ||
| const amrex::ParticleReal | zp_n, | ||
| const amrex::ParticleReal | xp_nph, | ||
| const amrex::ParticleReal | yp_nph, | ||
| const amrex::ParticleReal | zp_nph, | ||
| amrex::ParticleReal & | Exp, | ||
| amrex::ParticleReal & | Eyp, | ||
| amrex::ParticleReal & | Ezp, | ||
| amrex::ParticleReal & | Bxp, | ||
| amrex::ParticleReal & | Byp, | ||
| amrex::ParticleReal & | Bzp, | ||
| amrex::Array4< amrex::Real const > const & | Ex_arr, | ||
| amrex::Array4< amrex::Real const > const & | Ey_arr, | ||
| amrex::Array4< amrex::Real const > const & | Ez_arr, | ||
| amrex::Array4< amrex::Real const > const & | Bx_arr, | ||
| amrex::Array4< amrex::Real const > const & | By_arr, | ||
| amrex::Array4< amrex::Real const > const & | Bz_arr, | ||
| const amrex::IndexType | Ex_type, | ||
| const amrex::IndexType | Ey_type, | ||
| const amrex::IndexType | Ez_type, | ||
| const amrex::IndexType | Bx_type, | ||
| const amrex::IndexType | By_type, | ||
| const amrex::IndexType | Bz_type, | ||
| const amrex::XDim3 & | dinv, | ||
| const amrex::XDim3 & | xyzmin, | ||
| const amrex::Dim3 & | lo, | ||
| const int | n_rz_azimuthal_modes ) |
Energy conserving field gather for thread thread_num for the implicit scheme This uses the same stencil for the gather that is used for Villasenor current deposition. The magnetic field is deposited using direct deposition.
| depos_order | Particle shape order |
| xp_n,yp_n,zp_n | Particle position coordinates at start of step |
| xp_nph,yp_nph,zp_nph | Particle position coordinates at half step |
| Exp,Eyp,Ezp | Electric field on particles. |
| Bxp,Byp,Bzp | Magnetic field on particles. |
| Ex_arr,Ey_arr,Ez_arr | Array4 of the electric field, either full array or tile. |
| Bx_arr,By_arr,Bz_arr | Array4 of the magnetic field, either full array or tile. |
| Ex_type,Ey_type,Ez_type | IndexType of the electric field |
| Bx_type,By_type,Bz_type | IndexType of the magnetic field |
| dinv | 3D cell size inverse |
| xyzmin | The lower bounds of the domain |
| lo | Index lower bounds of domain. |
| n_rz_azimuthal_modes | Number of azimuthal modes when using RZ geometry |
| AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void doGatherShapeN | ( | const amrex::ParticleReal | xp, |
| const amrex::ParticleReal | yp, | ||
| const amrex::ParticleReal | zp, | ||
| amrex::ParticleReal & | Exp, | ||
| amrex::ParticleReal & | Eyp, | ||
| amrex::ParticleReal & | Ezp, | ||
| amrex::ParticleReal & | Bxp, | ||
| amrex::ParticleReal & | Byp, | ||
| amrex::ParticleReal & | Bzp, | ||
| amrex::Array4< amrex::Real const > const & | ex_arr, | ||
| amrex::Array4< amrex::Real const > const & | ey_arr, | ||
| amrex::Array4< amrex::Real const > const & | ez_arr, | ||
| amrex::Array4< amrex::Real const > const & | bx_arr, | ||
| amrex::Array4< amrex::Real const > const & | by_arr, | ||
| amrex::Array4< amrex::Real const > const & | bz_arr, | ||
| const amrex::IndexType | ex_type, | ||
| const amrex::IndexType | ey_type, | ||
| const amrex::IndexType | ez_type, | ||
| const amrex::IndexType | bx_type, | ||
| const amrex::IndexType | by_type, | ||
| const amrex::IndexType | bz_type, | ||
| const amrex::XDim3 & | dinv, | ||
| const amrex::XDim3 & | xyzmin, | ||
| const amrex::Dim3 & | lo, | ||
| const int | n_rz_azimuthal_modes ) |
Field gather for a single particle.
| depos_order | Particle shape order |
| galerkin_interpolation | Lower the order of the particle shape by this value (0/1) for the parallel field component |
| xp,yp,zp | Particle position coordinates |
| Exp,Eyp,Ezp | Electric field on particles. |
| Bxp,Byp,Bzp | Magnetic field on particles. |
| ex_arr,ey_arr,ez_arr | Array4 of the electric field, either full array or tile. |
| bx_arr,by_arr,bz_arr | Array4 of the magnetic field, either full array or tile. |
| ex_type,ey_type,ez_type | IndexType of the electric field |
| bx_type,by_type,bz_type | IndexType of the magnetic field |
| dinv | 3D cell size inverse |
| xyzmin | The lower bounds of the domain |
| lo | Index lower bounds of domain. |
| n_rz_azimuthal_modes | Number of azimuthal modes when using RZ geometry |
| AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void doGatherShapeN | ( | const amrex::ParticleReal | xp, |
| const amrex::ParticleReal | yp, | ||
| const amrex::ParticleReal | zp, | ||
| amrex::ParticleReal & | Exp, | ||
| amrex::ParticleReal & | Eyp, | ||
| amrex::ParticleReal & | Ezp, | ||
| amrex::ParticleReal & | Bxp, | ||
| amrex::ParticleReal & | Byp, | ||
| amrex::ParticleReal & | Bzp, | ||
| amrex::Array4< amrex::Real const > const & | ex_arr, | ||
| amrex::Array4< amrex::Real const > const & | ey_arr, | ||
| amrex::Array4< amrex::Real const > const & | ez_arr, | ||
| amrex::Array4< amrex::Real const > const & | bx_arr, | ||
| amrex::Array4< amrex::Real const > const & | by_arr, | ||
| amrex::Array4< amrex::Real const > const & | bz_arr, | ||
| const amrex::IndexType | ex_type, | ||
| const amrex::IndexType | ey_type, | ||
| const amrex::IndexType | ez_type, | ||
| const amrex::IndexType | bx_type, | ||
| const amrex::IndexType | by_type, | ||
| const amrex::IndexType | bz_type, | ||
| const amrex::XDim3 & | dinv, | ||
| const amrex::XDim3 & | xyzmin, | ||
| const amrex::Dim3 & | lo, | ||
| const int | n_rz_azimuthal_modes, | ||
| const int | nox, | ||
| const bool | galerkin_interpolation ) |
Field gather for a single particle.
| xp,yp,zp | Particle position coordinates |
| Exp,Eyp,Ezp | Electric field on particles. |
| Bxp,Byp,Bzp | Magnetic field on particles. |
| ex_arr,ey_arr,ez_arr | Array4 of the electric field, either full array or tile. |
| bx_arr,by_arr,bz_arr | Array4 of the magnetic field, either full array or tile. |
| ex_type,ey_type,ez_type | IndexType of the electric field |
| bx_type,by_type,bz_type | IndexType of the magnetic field |
| dinv | 3D cell size inverse |
| xyzmin | The lower bounds of the domain |
| lo | Index lower bounds of domain. |
| n_rz_azimuthal_modes | Number of azimuthal modes when using RZ geometry |
| nox | order of the particle shape function |
| galerkin_interpolation | whether to use lower order in v |
| AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void doGatherShapeNEsirkepovStencilImplicit | ( | const amrex::ParticleReal | xp_n, |
| const amrex::ParticleReal | yp_n, | ||
| const amrex::ParticleReal | zp_n, | ||
| const amrex::ParticleReal | xp_nph, | ||
| const amrex::ParticleReal | yp_nph, | ||
| const amrex::ParticleReal | zp_nph, | ||
| amrex::ParticleReal & | Exp, | ||
| amrex::ParticleReal & | Eyp, | ||
| amrex::ParticleReal & | Ezp, | ||
| amrex::ParticleReal & | Bxp, | ||
| amrex::ParticleReal & | Byp, | ||
| amrex::ParticleReal & | Bzp, | ||
| amrex::Array4< amrex::Real const > const & | Ex_arr, | ||
| amrex::Array4< amrex::Real const > const & | Ey_arr, | ||
| amrex::Array4< amrex::Real const > const & | Ez_arr, | ||
| amrex::Array4< amrex::Real const > const & | Bx_arr, | ||
| amrex::Array4< amrex::Real const > const & | By_arr, | ||
| amrex::Array4< amrex::Real const > const & | Bz_arr, | ||
| const amrex::IndexType | Ex_type, | ||
| const amrex::IndexType | Ey_type, | ||
| const amrex::IndexType | Ez_type, | ||
| const amrex::IndexType | Bx_type, | ||
| const amrex::IndexType | By_type, | ||
| const amrex::IndexType | Bz_type, | ||
| const amrex::XDim3 & | dinv, | ||
| const amrex::XDim3 & | xyzmin, | ||
| const amrex::Dim3 & | lo, | ||
| const int | n_rz_azimuthal_modes ) |
Energy conserving field gather for thread thread_num for the implicit scheme This uses the same stencil for the gather that is used for Esirkepov current deposition.
| depos_order | Particle shape order |
| xp_n,yp_n,zp_n | Particle position coordinates at start of step |
| xp_nph,yp_nph,zp_nph | Particle position coordinates at half step |
| Exp,Eyp,Ezp | Electric field on particles. |
| Bxp,Byp,Bzp | Magnetic field on particles. |
| Ex_arr,Ey_arr,Ez_arr | Array4 of the electric field, either full array or tile. |
| Bx_arr,By_arr,Bz_arr | Array4 of the magnetic field, either full array or tile. |
| Ex_type,Ey_type,Ez_type | IndexType of the electric field |
| Bx_type,By_type,Bz_type | IndexType of the magnetic field |
| dinv | 3D cell size inverse |
| xyzmin | The lower bounds of the domain |
| lo | Index lower bounds of domain. |
| n_rz_azimuthal_modes | Number of azimuthal modes when using RZ geometry |
| AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void doGatherShapeNImplicit | ( | const amrex::ParticleReal | xp_n, |
| const amrex::ParticleReal | yp_n, | ||
| const amrex::ParticleReal | zp_n, | ||
| const amrex::ParticleReal | xp_nph, | ||
| const amrex::ParticleReal | yp_nph, | ||
| const amrex::ParticleReal | zp_nph, | ||
| amrex::ParticleReal & | Exp, | ||
| amrex::ParticleReal & | Eyp, | ||
| amrex::ParticleReal & | Ezp, | ||
| amrex::ParticleReal & | Bxp, | ||
| amrex::ParticleReal & | Byp, | ||
| amrex::ParticleReal & | Bzp, | ||
| amrex::Array4< amrex::Real const > const & | ex_arr, | ||
| amrex::Array4< amrex::Real const > const & | ey_arr, | ||
| amrex::Array4< amrex::Real const > const & | ez_arr, | ||
| amrex::Array4< amrex::Real const > const & | bx_arr, | ||
| amrex::Array4< amrex::Real const > const & | by_arr, | ||
| amrex::Array4< amrex::Real const > const & | bz_arr, | ||
| const amrex::IndexType | ex_type, | ||
| const amrex::IndexType | ey_type, | ||
| const amrex::IndexType | ez_type, | ||
| const amrex::IndexType | bx_type, | ||
| const amrex::IndexType | by_type, | ||
| const amrex::IndexType | bz_type, | ||
| const amrex::XDim3 & | dinv, | ||
| const amrex::XDim3 & | xyzmin, | ||
| const amrex::Dim3 & | lo, | ||
| const int | n_rz_azimuthal_modes, | ||
| const int | nox, | ||
| const CurrentDepositionAlgo | depos_type ) |
Field gather for a single particle.
| xp_n,yp_n,zp_n | Particle position coordinates at start of step |
| xp_nph,yp_nph,zp_nph | Particle position coordinates at half time level (n + half) |
| Exp,Eyp,Ezp | Electric field on particles. |
| Bxp,Byp,Bzp | Magnetic field on particles. |
| ex_arr,ey_arr,ez_arr | Array4 of the electric field, either full array or tile. |
| bx_arr,by_arr,bz_arr | Array4 of the magnetic field, either full array or tile. |
| ex_type,ey_type,ez_type | IndexType of the electric field |
| bx_type,by_type,bz_type | IndexType of the magnetic field |
| dinv | 3D cell size inverse |
| xyzmin | The lower bounds of the domain |
| lo | Index lower bounds of domain. |
| n_rz_azimuthal_modes | Number of azimuthal modes when using RZ geometry |
| nox | order of the particle shape function |
| depos_type | current deposition algorithm (e.g., direct, Esirkepov, Vay, Villasenor, etc.) |