WarpX
Public Member Functions | Private Attributes | List of all members
PsatdAlgorithmJLinearInTime Class Reference

#include <PsatdAlgorithmJLinearInTime.H>

Inheritance diagram for PsatdAlgorithmJLinearInTime:
SpectralBaseAlgorithm

Public Member Functions

 PsatdAlgorithmJLinearInTime (const SpectralKSpace &spectral_kspace, const amrex::DistributionMapping &dm, const SpectralFieldIndex &spectral_index, int norder_x, int norder_y, int norder_z, short grid_type, amrex::Real dt, bool time_averaging, bool dive_cleaning, bool divb_cleaning)
 Constructor of the class PsatdAlgorithmJLinearInTime. More...
 
void pushSpectralFields (SpectralFieldData &f) const final
 Updates the E and B fields in spectral space, according to the multi-J PSATD equations. More...
 
void InitializeSpectralCoefficients (const SpectralKSpace &spectral_kspace, const amrex::DistributionMapping &dm, amrex::Real dt)
 Initializes the coefficients used in pushSpectralFields to update the E and B fields. More...
 
void InitializeSpectralCoefficientsAveraging (const SpectralKSpace &spectral_kspace, const amrex::DistributionMapping &dm, amrex::Real dt)
 Initialize additional coefficients used in pushSpectralFields to update E,B, required only when using time averaging with the assumption that J is linear in time. More...
 
void CurrentCorrection (SpectralFieldData &field_data) final
 Virtual function for current correction in Fourier space (Vay et al, 2013). This function overrides the virtual function CurrentCorrection in the base class SpectralBaseAlgorithm and cannot be overridden by further derived classes. More...
 
void VayDeposition (SpectralFieldData &field_data) final
 Virtual function for Vay current deposition in Fourier space (Vay et al, 2013). This function overrides the virtual function VayDeposition in the base class SpectralBaseAlgorithm and cannot be overridden by further derived classes. More...
 
- Public Member Functions inherited from SpectralBaseAlgorithm
virtual ~SpectralBaseAlgorithm ()=default
 
 SpectralBaseAlgorithm (const SpectralBaseAlgorithm &)=default
 
SpectralBaseAlgorithmoperator= (const SpectralBaseAlgorithm &)=default
 
 SpectralBaseAlgorithm (SpectralBaseAlgorithm &&)=default
 
SpectralBaseAlgorithmoperator= (SpectralBaseAlgorithm &&)=default
 
void ComputeSpectralDivE (int lev, SpectralFieldData &field_data, const std::array< std::unique_ptr< amrex::MultiFab >, 3 > &Efield, amrex::MultiFab &divE)
 Compute spectral divergence of E. More...
 

Private Attributes

SpectralRealCoefficients C_coef
 
SpectralRealCoefficients S_ck_coef
 
SpectralRealCoefficients X1_coef
 
SpectralRealCoefficients X2_coef
 
SpectralRealCoefficients X3_coef
 
SpectralRealCoefficients X5_coef
 
SpectralRealCoefficients X6_coef
 
amrex::Real m_dt
 
bool m_time_averaging
 
bool m_dive_cleaning
 
bool m_divb_cleaning
 

Additional Inherited Members

- Protected Types inherited from SpectralBaseAlgorithm
using SpectralRealCoefficients = amrex::FabArray< amrex::BaseFab< amrex::Real > >
 
using SpectralComplexCoefficients = amrex::FabArray< amrex::BaseFab< Complex > >
 
- Protected Member Functions inherited from SpectralBaseAlgorithm
 SpectralBaseAlgorithm (const SpectralKSpace &spectral_kspace, const amrex::DistributionMapping &dm, const SpectralFieldIndex &spectral_index, int norder_x, int norder_y, int norder_z, short grid_type)
 Constructor. More...
 
- Protected Attributes inherited from SpectralBaseAlgorithm
SpectralFieldIndex m_spectral_index
 
KVectorComponent modified_kx_vec
 
KVectorComponent modified_kz_vec
 

Constructor & Destructor Documentation

◆ PsatdAlgorithmJLinearInTime()

PsatdAlgorithmJLinearInTime::PsatdAlgorithmJLinearInTime ( const SpectralKSpace spectral_kspace,
const amrex::DistributionMapping dm,
const SpectralFieldIndex spectral_index,
int  norder_x,
int  norder_y,
int  norder_z,
short  grid_type,
amrex::Real  dt,
bool  time_averaging,
bool  dive_cleaning,
bool  divb_cleaning 
)

Constructor of the class PsatdAlgorithmJLinearInTime.

Parameters
[in]spectral_kspacespectral space
[in]dmdistribution mapping
[in]spectral_indexobject containing indices to access data in spectral space
[in]norder_xorder of the spectral solver along x
[in]norder_yorder of the spectral solver along y
[in]norder_zorder of the spectral solver along z
[in]grid_typetype of grid (collocated or not)
[in]dttime step of the simulation
[in]time_averagingwhether to use time averaging for large time steps
[in]dive_cleaningUpdate F as part of the field update, so that errors in divE=rho propagate away at the speed of light
[in]divb_cleaningUpdate G as part of the field update, so that errors in divB=0 propagate away at the speed of light

Member Function Documentation

◆ CurrentCorrection()

void PsatdAlgorithmJLinearInTime::CurrentCorrection ( SpectralFieldData field_data)
finalvirtual

Virtual function for current correction in Fourier space (Vay et al, 2013). This function overrides the virtual function CurrentCorrection in the base class SpectralBaseAlgorithm and cannot be overridden by further derived classes.

Parameters
[in,out]field_dataAll fields in Fourier space

Implements SpectralBaseAlgorithm.

◆ InitializeSpectralCoefficients()

void PsatdAlgorithmJLinearInTime::InitializeSpectralCoefficients ( const SpectralKSpace spectral_kspace,
const amrex::DistributionMapping dm,
amrex::Real  dt 
)

Initializes the coefficients used in pushSpectralFields to update the E and B fields.

Parameters
[in]spectral_kspacespectral space
[in]dmdistribution mapping
[in]dttime step of the simulation

◆ InitializeSpectralCoefficientsAveraging()

void PsatdAlgorithmJLinearInTime::InitializeSpectralCoefficientsAveraging ( const SpectralKSpace spectral_kspace,
const amrex::DistributionMapping dm,
amrex::Real  dt 
)

Initialize additional coefficients used in pushSpectralFields to update E,B, required only when using time averaging with the assumption that J is linear in time.

Parameters
[in]spectral_kspacespectral space
[in]dmdistribution mapping
[in]dttime step of the simulation

◆ pushSpectralFields()

void PsatdAlgorithmJLinearInTime::pushSpectralFields ( SpectralFieldData f) const
finalvirtual

Updates the E and B fields in spectral space, according to the multi-J PSATD equations.

Parameters
[in,out]fall the fields in spectral space

Implements SpectralBaseAlgorithm.

◆ VayDeposition()

void PsatdAlgorithmJLinearInTime::VayDeposition ( SpectralFieldData field_data)
finalvirtual

Virtual function for Vay current deposition in Fourier space (Vay et al, 2013). This function overrides the virtual function VayDeposition in the base class SpectralBaseAlgorithm and cannot be overridden by further derived classes.

Parameters
[in,out]field_dataAll fields in Fourier space

Implements SpectralBaseAlgorithm.

Member Data Documentation

◆ C_coef

SpectralRealCoefficients PsatdAlgorithmJLinearInTime::C_coef
private

◆ m_divb_cleaning

bool PsatdAlgorithmJLinearInTime::m_divb_cleaning
private

◆ m_dive_cleaning

bool PsatdAlgorithmJLinearInTime::m_dive_cleaning
private

◆ m_dt

amrex::Real PsatdAlgorithmJLinearInTime::m_dt
private

◆ m_time_averaging

bool PsatdAlgorithmJLinearInTime::m_time_averaging
private

◆ S_ck_coef

SpectralRealCoefficients PsatdAlgorithmJLinearInTime::S_ck_coef
private

◆ X1_coef

SpectralRealCoefficients PsatdAlgorithmJLinearInTime::X1_coef
private

◆ X2_coef

SpectralRealCoefficients PsatdAlgorithmJLinearInTime::X2_coef
private

◆ X3_coef

SpectralRealCoefficients PsatdAlgorithmJLinearInTime::X3_coef
private

◆ X5_coef

SpectralRealCoefficients PsatdAlgorithmJLinearInTime::X5_coef
private

◆ X6_coef

SpectralRealCoefficients PsatdAlgorithmJLinearInTime::X6_coef
private

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