WarpX
|
#include <LaserProfiles.H>
Public Member Functions | |
virtual void | init (const amrex::ParmParse &ppl, CommonLaserParameters params)=0 |
virtual void | update (amrex::Real t)=0 |
virtual void | fill_amplitude (int np, amrex::Real const *AMREX_RESTRICT Xp, amrex::Real const *AMREX_RESTRICT Yp, amrex::Real t, amrex::Real *AMREX_RESTRICT amplitude) const =0 |
ILaserProfile ()=default | |
virtual | ~ILaserProfile ()=default |
ILaserProfile (ILaserProfile const &)=default | |
ILaserProfile & | operator= (ILaserProfile const &)=default |
ILaserProfile (ILaserProfile &&)=default | |
ILaserProfile & | operator= (ILaserProfile &&)=default |
Abstract interface for laser profile classes
Each new laser profile should inherit this interface and implement three methods: init, update and fill_amplitude (described below).
The declaration of a LaserProfile class should be placed in this file, while the implementation of the methods should be in a dedicated file in LaserProfilesImpl folder. LaserProfile classes should appear in laser_profiles_dictionary to be used by LaserParticleContainer.
|
default |
|
virtualdefault |
|
default |
|
default |
|
pure virtual |
Fill Electric Field Amplitude for each particle of the antenna.
Xp, Yp and amplitude must be arrays with the same length
[in] | np | number of antenna particles |
[in] | Xp | X coordinate of the particles of the antenna |
[in] | Yp | Y coordinate of the particles of the antenna |
[in] | t | time (seconds) |
[out] | amplitude | of the electric field (V/m) |
Implemented in WarpXLaserProfiles::FromFileLaserProfile, WarpXLaserProfiles::FieldFunctionLaserProfile, and WarpXLaserProfiles::GaussianLaserProfile.
|
pure virtual |
Initialize Laser Profile
Reads the section of the inputfile relative to the laser beam (e.g. laser_name.profile_t_peak, laser_name.profile_duration...) and the "my_constants" section. It also receives some common laser profile parameters. It uses these data to initialize the member variables of the laser profile class.
[in] | ppl | should be amrex::ParmParse(laser_name) |
[in] | params | common laser profile parameters |
Implemented in WarpXLaserProfiles::FromFileLaserProfile, WarpXLaserProfiles::FieldFunctionLaserProfile, and WarpXLaserProfiles::GaussianLaserProfile.
|
default |
|
default |
|
pure virtual |
Update Laser Profile
Some laser profiles might need to perform an "update" operation per time step.
[in] | t | Current physical time in the simulation (seconds) |
Implemented in WarpXLaserProfiles::FieldFunctionLaserProfile, WarpXLaserProfiles::GaussianLaserProfile, and WarpXLaserProfiles::FromFileLaserProfile.