From ec072594fb1bddb4631c55fb3018050cbf461243 Mon Sep 17 00:00:00 2001 From: Edoardo Zoni <59625522+EZoni@users.noreply.github.com> Date: Wed, 2 Feb 2022 16:29:52 -0800 Subject: Rename PSATD Classes (#2805) * Rename PSATD Classes * Rename PsatdAlgorithmJLinear as PsatdAlgorithmJLinearInTime --- .../SpectralAlgorithms/PsatdAlgorithmComoving.H | 105 +++++++++++++++++++++ 1 file changed, 105 insertions(+) create mode 100644 Source/FieldSolver/SpectralSolver/SpectralAlgorithms/PsatdAlgorithmComoving.H (limited to 'Source/FieldSolver/SpectralSolver/SpectralAlgorithms/PsatdAlgorithmComoving.H') diff --git a/Source/FieldSolver/SpectralSolver/SpectralAlgorithms/PsatdAlgorithmComoving.H b/Source/FieldSolver/SpectralSolver/SpectralAlgorithms/PsatdAlgorithmComoving.H new file mode 100644 index 000000000..a01719a9a --- /dev/null +++ b/Source/FieldSolver/SpectralSolver/SpectralAlgorithms/PsatdAlgorithmComoving.H @@ -0,0 +1,105 @@ +#ifndef WARPX_PSATD_ALGORITHM_COMOVING_H_ +#define WARPX_PSATD_ALGORITHM_COMOVING_H_ + +#include "FieldSolver/SpectralSolver/SpectralFieldData.H" +#include "FieldSolver/SpectralSolver/SpectralKSpace.H" +#include "SpectralBaseAlgorithm.H" + +#include +#include +#include + +#include + +#include +#include + +#if WARPX_USE_PSATD + +/* \brief Class that updates the field in spectral space and stores the coefficients + * of the corresponding update equation, according to the comoving spectral scheme. + */ +class PsatdAlgorithmComoving : public SpectralBaseAlgorithm +{ + public: + + /** + * \brief Class constructor + */ + PsatdAlgorithmComoving (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::Vector& v_comoving, + const amrex::Real dt, + const bool update_with_rho); + + /** + * \brief Override the update equations in Fourier space + */ + virtual void pushSpectralFields (SpectralFieldData& f) const override final; + + /* \brief Initialize the coefficients needed in the update equations + */ + void InitializeSpectralCoefficients (const SpectralKSpace& spectral_kspace, + const amrex::DistributionMapping& dm, + const amrex::Real dt); + + /** + * \brief Virtual function for current correction in Fourier space. + * This function overrides the virtual function \c CurrentCorrection in the + * base class \c SpectralBaseAlgorithm and cannot be overridden by further + * derived classes. + * + * \param[in] lev The mesh-refinement level + * \param[in,out] field_data All fields in Fourier space + * \param[in,out] current Array of unique pointers to \c MultiFab storing + * the three components of the current density + * \param[in] rho Unique pointer to \c MultiFab storing the charge density + */ + virtual void CurrentCorrection (const int lev, + SpectralFieldData& field_data, + std::array,3>& current, + const std::unique_ptr& rho) override final; + + /** + * \brief Virtual function for Vay current deposition in Fourier space. + * This function overrides the virtual function \c VayDeposition in the + * base class \c SpectralBaseAlgorithm and cannot be overridden by further + * derived classes. + * + * \param[in] lev The mesh-refinement level + * \param[in,out] field_data All fields in Fourier space + * \param[in,out] current Array of unique pointers to \c MultiFab storing + * the three components of the current density + */ + virtual void VayDeposition (const int lev, + SpectralFieldData& field_data, + std::array,3>& current) override final; + + private: + + // Real and complex spectral coefficients + SpectralRealCoefficients C_coef, S_ck_coef; + SpectralComplexCoefficients Theta2_coef, X1_coef, X2_coef, X3_coef, X4_coef; + + SpectralFieldIndex m_spectral_index; + + // k vectors + KVectorComponent kx_vec; +#if defined(WARPX_DIM_3D) + KVectorComponent ky_vec; +#endif + KVectorComponent kz_vec; + + // Additional member variables + amrex::Vector m_v_comoving; + amrex::Real m_dt; +}; + +#endif // WARPX_USE_PSATD +#endif // WARPX_PSATD_ALGORITHM_COMOVING_H_ -- cgit v1.2.3