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/PsatdAlgorithmMultiJ.H | 147 --------------------- 1 file changed, 147 deletions(-) delete mode 100644 Source/FieldSolver/SpectralSolver/SpectralAlgorithms/PsatdAlgorithmMultiJ.H (limited to 'Source/FieldSolver/SpectralSolver/SpectralAlgorithms/PsatdAlgorithmMultiJ.H') diff --git a/Source/FieldSolver/SpectralSolver/SpectralAlgorithms/PsatdAlgorithmMultiJ.H b/Source/FieldSolver/SpectralSolver/SpectralAlgorithms/PsatdAlgorithmMultiJ.H deleted file mode 100644 index 215e35676..000000000 --- a/Source/FieldSolver/SpectralSolver/SpectralAlgorithms/PsatdAlgorithmMultiJ.H +++ /dev/null @@ -1,147 +0,0 @@ -/* Copyright 2019 - * - * This file is part of WarpX. - * - * License: BSD-3-Clause-LBNL - */ -#ifndef WARPX_PSATD_ALGORITHM_MULTIJ_H_ -#define WARPX_PSATD_ALGORITHM_MULTIJ_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 fields in spectral space according to the multi-J algorithm - * and stores the coefficients of the corresponding update equations. J is assumed to be - * linear in time and two currents, deposited at the beginning and the end of the time step, - * are used for the PSATD update equations, instead of only one current deposited at half time. - */ -class PsatdAlgorithmMultiJ : public SpectralBaseAlgorithm -{ - public: - - /** - * \brief Constructor of the class PsatdAlgorithmMultiJ - * - * \param[in] spectral_kspace spectral space - * \param[in] dm distribution mapping - * \param[in] spectral_index object containing indices to access data in spectral space - * \param[in] norder_x order of the spectral solver along x - * \param[in] norder_y order of the spectral solver along y - * \param[in] norder_z order of the spectral solver along z - * \param[in] nodal whether the E and B fields are defined on a fully nodal grid or a Yee grid - * \param[in] fill_guards Update the guard cells (in addition to the valid cells) when pushing the fields in time - * \param[in] dt time step of the simulation - * \param[in] time_averaging whether to use time averaging for large time steps - * \param[in] dive_cleaning Update F as part of the field update, so that errors in divE=rho propagate away at the speed of light - * \param[in] divb_cleaning Update G as part of the field update, so that errors in divB=0 propagate away at the speed of light - */ - PsatdAlgorithmMultiJ ( - 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::Real dt, - const bool time_averaging, - const bool dive_cleaning, - const bool divb_cleaning); - - /** - * \brief Updates the E and B fields in spectral space, according to the multi-J PSATD equations - * - * \param[in,out] f all the fields in spectral space - */ - virtual void pushSpectralFields (SpectralFieldData& f) const override final; - - /** - * \brief Initializes the coefficients used in \c pushSpectralFields to update the E and B fields - * - * \param[in] spectral_kspace spectral space - * \param[in] dm distribution mapping - * \param[in] dt time step of the simulation - */ - void InitializeSpectralCoefficients ( - const SpectralKSpace& spectral_kspace, - const amrex::DistributionMapping& dm, - const amrex::Real dt); - - /** - * \brief Initialize additional coefficients used in \c pushSpectralFields to update E,B, - * required only when using time averaging with the assumption that J is linear in time - * - * \param[in] spectral_kspace spectral space - * \param[in] dm distribution mapping - * \param[in] dt time step of the simulation - */ - void InitializeSpectralCoefficientsAveraging ( - const SpectralKSpace& spectral_kspace, - const amrex::DistributionMapping& dm, - const amrex::Real dt); - - /** - * \brief Virtual function for current correction in Fourier space - * ( Vay et al, 2013). - * 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 - * ( Vay et al, 2013). - * 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: - - // These real and complex coefficients are always allocated - SpectralRealCoefficients C_coef, S_ck_coef; - SpectralRealCoefficients X1_coef, X2_coef, X3_coef, X5_coef, X6_coef; - - SpectralFieldIndex m_spectral_index; - - // Other member variables - amrex::Real m_dt; - bool m_time_averaging; - bool m_dive_cleaning; - bool m_divb_cleaning; -}; -#endif // WARPX_USE_PSATD -#endif // WARPX_PSATD_ALGORITHM_MULTIJ_H_ -- cgit v1.2.3