WarpX
PsatdAlgorithm.H
Go to the documentation of this file.
1 /* Copyright 2019 Maxence Thevenet, Remi Lehe, Revathi Jambunathan, Edoardo Zoni
2  *
3  *
4  * This file is part of WarpX.
5  *
6  * License: BSD-3-Clause-LBNL
7  */
8 #ifndef WARPX_PSATD_ALGORITHM_H_
9 #define WARPX_PSATD_ALGORITHM_H_
10 
11 #include "SpectralBaseAlgorithm.H"
12 
13 
14 #if WARPX_USE_PSATD
15 
21 {
22 
23  public:
24  PsatdAlgorithm(const SpectralKSpace& spectral_kspace,
25  const amrex::DistributionMapping& dm,
26  const int norder_x, const int norder_y,
27  const int norder_z, const bool nodal,
28  const amrex::Real dt,
29  const bool update_with_rho);
30  // Redefine functions from base class
31  virtual void pushSpectralFields(SpectralFieldData& f) const override final;
32  virtual int getRequiredNumberOfFields() const override final {
34  }
35 
36  void InitializeSpectralCoefficients(const SpectralKSpace& spectral_kspace,
37  const amrex::DistributionMapping& dm,
38  const amrex::Real dt);
39 
52  virtual void CurrentCorrection (SpectralFieldData& field_data,
53  std::array<std::unique_ptr<amrex::MultiFab>,3>& current,
54  const std::unique_ptr<amrex::MultiFab>& rho) override final;
55 
67  virtual void VayDeposition (SpectralFieldData& field_data,
68  std::array<std::unique_ptr<amrex::MultiFab>,3>& current) override final;
69 
70  private:
72  amrex::Real m_dt;
74 };
75 
76 #endif // WARPX_USE_PSATD
77 #endif // WARPX_PSATD_ALGORITHM_H_
amrex::Real m_dt
Definition: PsatdAlgorithm.H:72
Class that represents the spectral space.
Definition: SpectralKSpace.H:38
SpectralRealCoefficients X1_coef
Definition: PsatdAlgorithm.H:71
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: PsatdAlgorithm.cpp:223
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: PsatdAlgorithm.cpp:301
void InitializeSpectralCoefficients(const SpectralKSpace &spectral_kspace, const amrex::DistributionMapping &dm, const amrex::Real dt)
Initialize coefficients for update equations.
Definition: PsatdAlgorithm.cpp:152
f
Definition: write_atomic_data_cpp.py:79
SpectralRealCoefficients S_ck_coef
Definition: PsatdAlgorithm.H:71
PsatdAlgorithm(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::Real dt, const bool update_with_rho)
Constructor.
Definition: PsatdAlgorithm.cpp:21
SpectralRealCoefficients X3_coef
Definition: PsatdAlgorithm.H:71
SpectralRealCoefficients X2_coef
Definition: PsatdAlgorithm.H:71
virtual int getRequiredNumberOfFields() const override final
Definition: PsatdAlgorithm.H:32
SpectralRealCoefficients C_coef
Definition: PsatdAlgorithm.H:71
Definition: SpectralFieldData.H:27
Class that stores the fields in spectral space, and performs the Fourier transforms between real spac...
Definition: SpectralFieldData.H:46
Class that updates the field in spectral space and stores the coefficients of the corresponding updat...
Definition: PsatdAlgorithm.H:20
amrex::FabArray< amrex::BaseFab< amrex::Real > > SpectralRealCoefficients
Definition: SpectralBaseAlgorithm.H:71
bool m_update_with_rho
Definition: PsatdAlgorithm.H:73
virtual void pushSpectralFields(SpectralFieldData &f) const override final
Advance E and B fields in spectral space (stored in f) over one time step.
Definition: PsatdAlgorithm.cpp:48
Definition: SpectralBaseAlgorithm.H:24