WarpX
Public Member Functions | List of all members
WarpXLaserProfiles::ILaserProfile Class Referenceabstract

#include <LaserProfiles.H>

Inheritance diagram for WarpXLaserProfiles::ILaserProfile:
WarpXLaserProfiles::FieldFunctionLaserProfile WarpXLaserProfiles::FromFileLaserProfile WarpXLaserProfiles::GaussianLaserProfile

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
 
ILaserProfileoperator= (ILaserProfile const &)=default
 
 ILaserProfile (ILaserProfile &&)=default
 
ILaserProfileoperator= (ILaserProfile &&)=default
 

Detailed Description

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.

Constructor & Destructor Documentation

◆ ILaserProfile() [1/3]

WarpXLaserProfiles::ILaserProfile::ILaserProfile ( )
default

◆ ~ILaserProfile()

virtual WarpXLaserProfiles::ILaserProfile::~ILaserProfile ( )
virtualdefault

◆ ILaserProfile() [2/3]

WarpXLaserProfiles::ILaserProfile::ILaserProfile ( ILaserProfile const &  )
default

◆ ILaserProfile() [3/3]

WarpXLaserProfiles::ILaserProfile::ILaserProfile ( ILaserProfile &&  )
default

Member Function Documentation

◆ fill_amplitude()

virtual void WarpXLaserProfiles::ILaserProfile::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
pure virtual

Fill Electric Field Amplitude for each particle of the antenna.

Xp, Yp and amplitude must be arrays with the same length

Parameters
[in]npnumber of antenna particles
[in]XpX coordinate of the particles of the antenna
[in]YpY coordinate of the particles of the antenna
[in]ttime (seconds)
[out]amplitudeof the electric field (V/m)

Implemented in WarpXLaserProfiles::FromFileLaserProfile, WarpXLaserProfiles::FieldFunctionLaserProfile, and WarpXLaserProfiles::GaussianLaserProfile.

◆ init()

virtual void WarpXLaserProfiles::ILaserProfile::init ( const amrex::ParmParse ppl,
CommonLaserParameters  params 
)
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.

Parameters
[in]pplshould be amrex::ParmParse(laser_name)
[in]paramscommon laser profile parameters

Implemented in WarpXLaserProfiles::FromFileLaserProfile, WarpXLaserProfiles::FieldFunctionLaserProfile, and WarpXLaserProfiles::GaussianLaserProfile.

◆ operator=() [1/2]

ILaserProfile& WarpXLaserProfiles::ILaserProfile::operator= ( ILaserProfile &&  )
default

◆ operator=() [2/2]

ILaserProfile& WarpXLaserProfiles::ILaserProfile::operator= ( ILaserProfile const &  )
default

◆ update()

virtual void WarpXLaserProfiles::ILaserProfile::update ( amrex::Real  t)
pure virtual

Update Laser Profile

Some laser profiles might need to perform an "update" operation per time step.

Parameters
[in]tCurrent physical time in the simulation (seconds)

Implemented in WarpXLaserProfiles::FieldFunctionLaserProfile, WarpXLaserProfiles::GaussianLaserProfile, and WarpXLaserProfiles::FromFileLaserProfile.


The documentation for this class was generated from the following file: