WarpX
PsatdAlgorithmPml.H
Go to the documentation of this file.
1 /* Copyright 2019 Axel Huebl, Remi Lehe
2  *
3  * This file is part of WarpX.
4  *
5  * License: BSD-3-Clause-LBNL
6  */
7 #ifndef WARPX_PSATD_ALGORITHM_PML_H_
8 #define WARPX_PSATD_ALGORITHM_PML_H_
9 
10 #include "SpectralBaseAlgorithm.H"
11 
14 
15 #include <ablastr/utils/Enums.H>
16 
17 #include <AMReX_REAL.H>
18 #include <AMReX_BaseFwd.H>
19 
20 #include <array>
21 #include <memory>
22 
23 #if WARPX_USE_FFT
24 
25 /*
26  * \brief Class that updates the field in spectral space
27  * and stores the coefficients of the corresponding update equation.
28  */
30 {
31  public:
32 
49  const SpectralKSpace& spectral_kspace,
51  const SpectralFieldIndex& spectral_index,
52  int norder_x,
53  int norder_y,
54  int norder_z,
56  const amrex::Vector<amrex::Real>& v_galilean,
57  amrex::Real dt,
58  bool dive_cleaning,
59  bool divb_cleaning);
60 
69  const SpectralKSpace& spectral_kspace,
70  const amrex::DistributionMapping& dm);
71 
78  void pushSpectralFields(SpectralFieldData& f) const final;
79 
89  void CurrentCorrection (SpectralFieldData& field_data) final;
90 
100  void VayDeposition (SpectralFieldData& field_data) final;
101 
102  private:
103 
106  // Centered modified finite-order k vectors
108 #if defined(WARPX_DIM_3D)
109  KVectorComponent modified_ky_vec_centered;
110 #endif
113  amrex::Real m_dt;
117 };
118 
119 #endif // WARPX_USE_FFT
120 #endif // WARPX_PSATD_ALGORITHM_PML_H_
Definition: PsatdAlgorithmPml.H:30
amrex::Real m_dt
Definition: PsatdAlgorithmPml.H:113
KVectorComponent modified_kz_vec_centered
Definition: PsatdAlgorithmPml.H:111
void pushSpectralFields(SpectralFieldData &f) const final
Updates the E and B fields in spectral space, according to the relevant PSATD equations.
Definition: PsatdAlgorithmPml.cpp:78
void InitializeSpectralCoefficients(const SpectralKSpace &spectral_kspace, const amrex::DistributionMapping &dm)
Initializes the coefficients used in pushSpectralFields to update the E and B fields.
Definition: PsatdAlgorithmPml.cpp:376
void VayDeposition(SpectralFieldData &field_data) final
Virtual function for Vay current deposition in Fourier space (Vay et al, 2013). This function overrid...
Definition: PsatdAlgorithmPml.cpp:464
KVectorComponent modified_kx_vec_centered
Definition: PsatdAlgorithmPml.H:107
SpectralComplexCoefficients T2_coef
Definition: PsatdAlgorithmPml.H:105
amrex::Vector< amrex::Real > m_v_galilean
Definition: PsatdAlgorithmPml.H:112
bool m_is_galilean
Definition: PsatdAlgorithmPml.H:116
void CurrentCorrection(SpectralFieldData &field_data) final
Virtual function for current correction in Fourier space (Vay et al, 2013). This function overrides t...
Definition: PsatdAlgorithmPml.cpp:459
PsatdAlgorithmPml(const SpectralKSpace &spectral_kspace, const amrex::DistributionMapping &dm, const SpectralFieldIndex &spectral_index, int norder_x, int norder_y, int norder_z, ablastr::utils::enums::GridType grid_type, const amrex::Vector< amrex::Real > &v_galilean, amrex::Real dt, bool dive_cleaning, bool divb_cleaning)
Constructor of the class PsatdAlgorithmPml.
Definition: PsatdAlgorithmPml.cpp:33
bool m_divb_cleaning
Definition: PsatdAlgorithmPml.H:115
bool m_dive_cleaning
Definition: PsatdAlgorithmPml.H:114
SpectralRealCoefficients inv_k2_coef
Definition: PsatdAlgorithmPml.H:104
SpectralRealCoefficients S_ck_coef
Definition: PsatdAlgorithmPml.H:104
SpectralRealCoefficients C_coef
Definition: PsatdAlgorithmPml.H:104
Definition: SpectralBaseAlgorithm.H:38
Class that stores the fields in spectral space, and performs the Fourier transforms between real spac...
Definition: SpectralFieldData.H:143
Definition: SpectralFieldData.H:34
Class that represents the spectral space.
Definition: SpectralKSpace.H:50
GridType
Definition: Enums.H:17
float dt
Definition: stencil.py:442