9#ifndef WARPX_LaserParticleContainer_H_
10#define WARPX_LaserParticleContainer_H_
69 const std::string& current_fp_string,
71 bool skip_deposition=
false,
77 const
amrex::MultiFab& ,
78 const
amrex::MultiFab& ,
79 const
amrex::MultiFab& ,
80 const
amrex::MultiFab& ,
81 const
amrex::MultiFab& ,
82 const
amrex::MultiFab& ) final;
@ Explicit
Definition WarpXAlgorithmSelection.H:37
PushType
Particle push scheme.
Definition WarpXAlgorithmSelection.H:170
PositionPushType
For advanced collision algorithms that split the particle push in substeps.
Definition WarpXAlgorithmSelection.H:181
@ Full
Definition WarpXAlgorithmSelection.H:181
MomentumPushType
For advanced collision algorithms that split the particle push in substeps.
Definition WarpXAlgorithmSelection.H:189
@ Full
Definition WarpXAlgorithmSelection.H:189
SubcyclingHalf
Subcycling half selector.
Definition WarpXAlgorithmSelection.H:166
@ None
Definition WarpXAlgorithmSelection.H:166
amrex::Real m_e_max
Definition LaserParticleContainer.H:107
amrex::Vector< amrex::Real > m_u_X
Definition LaserParticleContainer.H:116
void ComputeSpacing(int lev, amrex::Real &Sx, amrex::Real &Sy) const
Definition LaserParticleContainer.cpp:732
~LaserParticleContainer() override=default
LaserParticleContainer & operator=(LaserParticleContainer const &)=delete
void WriteHeader(std::ostream &os) const final
Definition ParticleIO.cpp:65
amrex::Real m_wavelength
Definition LaserParticleContainer.H:108
void ReadHeader(std::istream &is) final
Definition ParticleIO.cpp:53
amrex::RealBox m_laser_injection_box
Definition LaserParticleContainer.H:123
LaserParticleContainer(amrex::AmrCore *amr_core, int ispecies, const std::string &name)
Definition LaserParticleContainer.cpp:82
amrex::Vector< amrex::Real > m_position
Definition LaserParticleContainer.H:103
void PushP(int lev, amrex::Real dt, const amrex::MultiFab &, const amrex::MultiFab &, const amrex::MultiFab &, const amrex::MultiFab &, const amrex::MultiFab &, const amrex::MultiFab &) final
Definition LaserParticleContainer.cpp:784
void ContinuousInjection(const amrex::RealBox &injection_box) override
Definition LaserParticleContainer.cpp:284
long m_min_particles_per_mode
Definition LaserParticleContainer.H:112
amrex::Real m_weight
Definition LaserParticleContainer.H:118
amrex::Real m_Z0_lab
Definition LaserParticleContainer.H:110
amrex::Real m_mobility
Definition LaserParticleContainer.H:119
std::unique_ptr< WarpXLaserProfiles::ILaserProfile > m_up_laser_profile
Definition LaserParticleContainer.H:142
amrex::Vector< amrex::Real > m_p_Y
Definition LaserParticleContainer.H:115
void ComputeWeightMobility(amrex::Real Sx, amrex::Real Sy)
Definition LaserParticleContainer.cpp:766
void InitData() final
Definition LaserParticleContainer.cpp:357
amrex::Vector< amrex::Real > m_updated_position
Definition LaserParticleContainer.H:126
LaserParticleContainer(LaserParticleContainer const &)=delete
void UpdateAntennaPosition(amrex::Real dt) override
Update antenna position for continuous injection of lasers in a boosted frame.
Definition LaserParticleContainer.cpp:326
void calculate_laser_plane_coordinates(const WarpXParIter &pti, int np, amrex::Real *AMREX_RESTRICT pplane_Xp, amrex::Real *AMREX_RESTRICT pplane_Yp)
Definition LaserParticleContainer.cpp:799
LaserParticleContainer(LaserParticleContainer &&)=default
std::string m_laser_name
Definition LaserParticleContainer.H:99
void DefaultInitializeRuntimeAttributes(typename ContainerLike< amrex::PinnedArenaAllocator >::ParticleTileType &, int, int) final
Method to initialize runtime attributes. Does nothing for LaserParticleContainer.
Definition LaserParticleContainer.H:58
amrex::Vector< amrex::Real > m_u_Y
Definition LaserParticleContainer.H:117
void PostRestart() final
Definition LaserParticleContainer.cpp:721
void Evolve(ablastr::fields::MultiFabRegister &fields, int lev, const std::string ¤t_fp_string, amrex::Real t, amrex::Real dt, SubcyclingHalf subcycling_half=SubcyclingHalf::None, bool skip_deposition=false, PositionPushType position_push_type=PositionPushType::Full, MomentumPushType momentum_push_type=MomentumPushType::Full, ImplicitOptions const *implicit_options=nullptr) final
Pure virtual function to advance particles (typically by one time step).
Definition LaserParticleContainer.cpp:560
void update_laser_particle(WarpXParIter &pti, int np, amrex::ParticleReal *AMREX_RESTRICT puxp, amrex::ParticleReal *AMREX_RESTRICT puyp, amrex::ParticleReal *AMREX_RESTRICT puzp, amrex::ParticleReal const *AMREX_RESTRICT pwp, amrex::Real const *AMREX_RESTRICT amplitude, amrex::Real dt, PushType push_type=PushType::Explicit)
Definition LaserParticleContainer.cpp:856
bool m_enabled
Definition LaserParticleContainer.H:145
amrex::Vector< amrex::Real > m_p_X
Normal of the plane of the antenna.
Definition LaserParticleContainer.H:105
amrex::Vector< amrex::Real > m_nvec
Coordinates of one of the point of the antenna.
Definition LaserParticleContainer.H:104
Definition WarpXParticleContainer.H:112
WarpXParticleContainer(amrex::AmrCore *amr_core, int ispecies)
Definition WarpXParticleContainer.cpp:94
amrex::ParticleContainer_impl< ParticleType, NArrayReal, NArrayInt, NewAllocator > ContainerLike
ParticleTile< ParticleType, NArrayReal, NArrayInt, Allocator > ParticleTileType
Definition LaserProfiles.H:27
Definition ImplicitOptions.H:7
Definition MultiFabRegister.H:262