WarpX
ComovingPsatdAlgorithm.H
Go to the documentation of this file.
1 #ifndef WARPX_COMOVING_PSATD_ALGORITHM_H_
2 #define WARPX_COMOVING_PSATD_ALGORITHM_H_
3 
7 
8 #include <AMReX_Array.H>
9 #include <AMReX_Config.H>
10 #include <AMReX_REAL.H>
11 
12 #include <AMReX_BaseFwd.H>
13 
14 #include <array>
15 #include <memory>
16 
17 #if WARPX_USE_PSATD
18 
19 /* \brief Class that updates the field in spectral space and stores the coefficients
20  * of the corresponding update equation, according to the comoving spectral scheme.
21  */
23 {
24  public:
25 
29  ComovingPsatdAlgorithm (const SpectralKSpace& spectral_kspace,
30  const amrex::DistributionMapping& dm,
31  const SpectralFieldIndex& spectral_index,
32  const int norder_x,
33  const int norder_y,
34  const int norder_z,
35  const bool nodal,
36  const amrex::IntVect& fill_guards,
37  const amrex::Array<amrex::Real,3>& v_comoving,
38  const amrex::Real dt,
39  const bool update_with_rho);
40 
44  virtual void pushSpectralFields (SpectralFieldData& f) const override final;
45 
46  /* \brief Initialize the coefficients needed in the update equations
47  */
48  void InitializeSpectralCoefficients (const SpectralKSpace& spectral_kspace,
49  const amrex::DistributionMapping& dm,
50  const amrex::Real dt);
51 
63  virtual void CurrentCorrection (const int lev,
64  SpectralFieldData& field_data,
65  std::array<std::unique_ptr<amrex::MultiFab>,3>& current,
66  const std::unique_ptr<amrex::MultiFab>& rho) override final;
67 
78  virtual void VayDeposition (const int lev,
79  SpectralFieldData& field_data,
80  std::array<std::unique_ptr<amrex::MultiFab>,3>& current) override final;
81 
82  private:
83 
84  // Real and complex spectral coefficients
87 
89 
90  // k vectors
92 #if (AMREX_SPACEDIM==3)
94 #endif
96 
97  // Additional member variables
98  amrex::Array<amrex::Real,3> m_v_comoving;
99  amrex::Real m_dt;
100 };
101 
102 #endif // WARPX_USE_PSATD
103 #endif // WARPX_COMOVING_PSATD_ALGORITHM_H_
virtual void VayDeposition(const int lev, SpectralFieldData &field_data, std::array< std::unique_ptr< amrex::MultiFab >, 3 > &current) override final
Virtual function for Vay current deposition in Fourier space. This function overrides the virtual fun...
Definition: ComovingPsatdAlgorithm.cpp:519
Class that represents the spectral space.
Definition: SpectralKSpace.H:47
virtual void pushSpectralFields(SpectralFieldData &f) const override final
Override the update equations in Fourier space.
Definition: ComovingPsatdAlgorithm.cpp:67
SpectralComplexCoefficients X3_coef
Definition: ComovingPsatdAlgorithm.H:86
SpectralComplexCoefficients X1_coef
Definition: ComovingPsatdAlgorithm.H:86
void InitializeSpectralCoefficients(const SpectralKSpace &spectral_kspace, const amrex::DistributionMapping &dm, const amrex::Real dt)
Definition: ComovingPsatdAlgorithm.cpp:158
f
Definition: write_atomic_data_cpp.py:83
SpectralRealCoefficients C_coef
Definition: ComovingPsatdAlgorithm.H:85
SpectralFieldIndex m_spectral_index
Definition: ComovingPsatdAlgorithm.H:88
amrex::FabArray< amrex::BaseFab< Complex > > SpectralComplexCoefficients
Definition: SpectralBaseAlgorithm.H:89
amrex::Array< amrex::Real, 3 > m_v_comoving
Definition: ComovingPsatdAlgorithm.H:98
amrex::Real m_dt
Definition: ComovingPsatdAlgorithm.H:99
KVectorComponent ky_vec
Definition: ComovingPsatdAlgorithm.H:93
SpectralComplexCoefficients Theta2_coef
Definition: ComovingPsatdAlgorithm.H:86
KVectorComponent kz_vec
Definition: ComovingPsatdAlgorithm.H:95
Class that stores the fields in spectral space, and performs the Fourier transforms between real spac...
Definition: SpectralFieldData.H:105
SpectralComplexCoefficients X4_coef
Definition: ComovingPsatdAlgorithm.H:86
amrex::FabArray< amrex::BaseFab< amrex::Real > > SpectralRealCoefficients
Definition: SpectralBaseAlgorithm.H:87
Definition: SpectralFieldData.H:32
Definition: ComovingPsatdAlgorithm.H:22
SpectralComplexCoefficients X2_coef
Definition: ComovingPsatdAlgorithm.H:86
ComovingPsatdAlgorithm(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 bool nodal, const amrex::IntVect &fill_guards, const amrex::Array< amrex::Real, 3 > &v_comoving, const amrex::Real dt, const bool update_with_rho)
Class constructor.
Definition: ComovingPsatdAlgorithm.cpp:23
amrex::LayoutData< RealKVector > KVectorComponent
Definition: SpectralKSpace.H:30
virtual void CurrentCorrection(const int lev, SpectralFieldData &field_data, std::array< std::unique_ptr< amrex::MultiFab >, 3 > &current, const std::unique_ptr< amrex::MultiFab > &rho) override final
Virtual function for current correction in Fourier space. This function overrides the virtual functio...
Definition: ComovingPsatdAlgorithm.cpp:414
KVectorComponent kx_vec
Definition: ComovingPsatdAlgorithm.H:91
SpectralRealCoefficients S_ck_coef
Definition: ComovingPsatdAlgorithm.H:85
Definition: SpectralBaseAlgorithm.H:35