WarpX
GalileanAlgorithm.H
Go to the documentation of this file.
1 #ifndef WARPX_GALILEAN_ALGORITHM_H_
2 #define WARPX_GALILEAN_ALGORITHM_H_
3 
5 
6 #if WARPX_USE_PSATD
7 /* \brief Class that updates the field in spectral space
8  * and stores the coefficients of the corresponding update equation.
9  */
11 {
12  public:
13  GalileanAlgorithm (const SpectralKSpace& spectral_kspace,
14  const amrex::DistributionMapping& dm,
15  const int norder_x, const int norder_y,
16  const int norder_z, const bool nodal,
17  const amrex::Array<amrex::Real,3>& v_galilean,
18  const amrex::Real dt,
19  const bool update_with_rho);
20  // Redefine update equation from base class
21  virtual void pushSpectralFields (SpectralFieldData& f) const override final;
22  virtual int getRequiredNumberOfFields () const override final {
24  };
25  void InitializeSpectralCoefficients (const SpectralKSpace& spectral_kspace,
26  const amrex::DistributionMapping& dm,
27  const amrex::Real dt);
28 
41  virtual void CurrentCorrection (SpectralFieldData& field_data,
42  std::array<std::unique_ptr<amrex::MultiFab>,3>& current,
43  const std::unique_ptr<amrex::MultiFab>& rho) override final;
44 
56  virtual void VayDeposition (SpectralFieldData& field_data,
57  std::array<std::unique_ptr<amrex::MultiFab>,3>& current) override final;
58 
59  private:
62  amrex::Array<amrex::Real,3> m_v_galilean;
63  amrex::Real m_dt;
65 };
66 #endif // WARPX_USE_PSATD
67 #endif // WARPX_GALILEAN_ALGORITHM_H_
SpectralComplexCoefficients X4_coef
Definition: GalileanAlgorithm.H:61
Class that represents the spectral space.
Definition: SpectralKSpace.H:38
virtual void pushSpectralFields(SpectralFieldData &f) const override final
Definition: GalileanAlgorithm.cpp:41
virtual void CurrentCorrection(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 (Vay et al, 2013). This function overrides t...
Definition: GalileanAlgorithm.cpp:383
SpectralComplexCoefficients X2_coef
Definition: GalileanAlgorithm.H:61
f
Definition: write_atomic_data_cpp.py:79
amrex::Real m_dt
Definition: GalileanAlgorithm.H:63
SpectralRealCoefficients C_coef
Definition: GalileanAlgorithm.H:60
amrex::FabArray< amrex::BaseFab< Complex > > SpectralComplexCoefficients
Definition: SpectralBaseAlgorithm.H:73
SpectralComplexCoefficients Theta2_coef
Definition: GalileanAlgorithm.H:61
GalileanAlgorithm(const SpectralKSpace &spectral_kspace, const amrex::DistributionMapping &dm, const int norder_x, const int norder_y, const int norder_z, const bool nodal, const amrex::Array< amrex::Real, 3 > &v_galilean, const amrex::Real dt, const bool update_with_rho)
Definition: GalileanAlgorithm.cpp:12
void InitializeSpectralCoefficients(const SpectralKSpace &spectral_kspace, const amrex::DistributionMapping &dm, const amrex::Real dt)
Definition: GalileanAlgorithm.cpp:157
Definition: GalileanAlgorithm.H:10
SpectralComplexCoefficients X3_coef
Definition: GalileanAlgorithm.H:61
Definition: SpectralFieldData.H:27
virtual int getRequiredNumberOfFields() const override final
Definition: GalileanAlgorithm.H:22
Class that stores the fields in spectral space, and performs the Fourier transforms between real spac...
Definition: SpectralFieldData.H:46
amrex::FabArray< amrex::BaseFab< amrex::Real > > SpectralRealCoefficients
Definition: SpectralBaseAlgorithm.H:71
bool m_update_with_rho
Definition: GalileanAlgorithm.H:64
amrex::Array< amrex::Real, 3 > m_v_galilean
Definition: GalileanAlgorithm.H:62
virtual void VayDeposition(SpectralFieldData &field_data, std::array< std::unique_ptr< amrex::MultiFab >, 3 > &current) override final
Virtual function for Vay current deposition in Fourier space (Vay et al, 2013). This function overrid...
Definition: GalileanAlgorithm.cpp:479
SpectralComplexCoefficients X1_coef
Definition: GalileanAlgorithm.H:61
SpectralRealCoefficients S_ck_coef
Definition: GalileanAlgorithm.H:60
Definition: SpectralBaseAlgorithm.H:24