ARTEMIS
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, const int norder_x, const int norder_y, const int norder_z, const short grid_type, const amrex::Real dt, const bool time_averaging, const bool dive_cleaning, const bool divb_cleaning)
 Constructor of the class PsatdAlgorithmJLinearInTime. More...
 
virtual void pushSpectralFields (SpectralFieldData &f) const override 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, const 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, const 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...
 
virtual void CurrentCorrection (SpectralFieldData &field_data) override 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...
 
virtual void VayDeposition (SpectralFieldData &field_data) override 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 ()
 
void ComputeSpectralDivE (const 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
 
SpectralFieldIndex m_spectral_index
 
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, const int norder_x, const int norder_y, const int norder_z, const 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,
const int  norder_x,
const int  norder_y,
const int  norder_z,
const short  grid_type,
const amrex::Real  dt,
const bool  time_averaging,
const bool  dive_cleaning,
const 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)
finaloverridevirtual

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,
const 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,
const 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
finaloverridevirtual

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)
finaloverridevirtual

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_spectral_index

SpectralFieldIndex PsatdAlgorithmJLinearInTime::m_spectral_index
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: