WarpX
Loading...
Searching...
No Matches
PsatdAlgorithmGalilean.H
Go to the documentation of this file.
1/* Copyright 2019
2 *
3 * This file is part of WarpX.
4 *
5 * License: BSD-3-Clause-LBNL
6 */
7#ifndef WARPX_PSATD_ALGORITHM_GALILEAN_H_
8#define WARPX_PSATD_ALGORITHM_GALILEAN_H_
9
13
14#include <ablastr/utils/Enums.H>
15
16#include <AMReX_Array.H>
17#include <AMReX_Config.H>
18#include <AMReX_REAL.H>
19
20#include <AMReX_BaseFwd.H>
21
22#include <array>
23#include <memory>
24
25#if WARPX_USE_FFT
26/* \brief Class that updates the field in spectral space
27 * and stores the coefficients of the corresponding update equation.
28 */
30{
31 public:
32
51 const SpectralKSpace& spectral_kspace,
53 const SpectralFieldIndex& spectral_index,
54 int norder_x,
55 int norder_y,
56 int norder_z,
58 const amrex::Vector<amrex::Real>& v_galilean,
59 amrex::Real dt,
60 bool update_with_rho,
61 bool time_averaging,
62 bool dive_cleaning,
63 bool divb_cleaning);
64
70 void pushSpectralFields (SpectralFieldData& f) const final;
71
80 const SpectralKSpace& spectral_kspace,
82 amrex::Real dt);
83
93 const SpectralKSpace& spectral_kspace,
95 amrex::Real dt);
96
106 void CurrentCorrection (SpectralFieldData& field_data) final;
107
117 void VayDeposition (SpectralFieldData& field_data) final;
118
119 private:
120
121 // These real and complex coefficients are always allocated
124
125 // These real and complex coefficients are allocated only with averaged Galilean PSATD
127
128 // Centered modified finite-order k vectors
130#if defined(WARPX_DIM_3D)
131 KVectorComponent modified_ky_vec_centered;
132#endif
134
135 // Other member variables
137 amrex::Real m_dt;
140};
141#endif // WARPX_USE_FFT
142#endif // WARPX_PSATD_ALGORITHM_GALILEAN_H_
amrex::LayoutData< RealKVector > KVectorComponent
Definition SpectralKSpace.H:33
void CurrentCorrection(SpectralFieldData &field_data) final
Virtual function for current correction in Fourier space (Vay et al, 2013). This function overrides t...
Definition PsatdAlgorithmGalilean.cpp:634
void InitializeSpectralCoefficientsAveraging(const SpectralKSpace &spectral_kspace, const amrex::DistributionMapping &dm, amrex::Real dt)
Initializes additional coefficients used in pushSpectralFields to update the E and B fields,...
Definition PsatdAlgorithmGalilean.cpp:451
amrex::Vector< amrex::Real > m_v_galilean
Definition PsatdAlgorithmGalilean.H:136
SpectralComplexCoefficients T2_coef
Definition PsatdAlgorithmGalilean.H:123
SpectralRealCoefficients S_ck_coef
Definition PsatdAlgorithmGalilean.H:122
KVectorComponent modified_kz_vec_centered
Definition PsatdAlgorithmGalilean.H:133
bool m_update_with_rho
Definition PsatdAlgorithmGalilean.H:138
void VayDeposition(SpectralFieldData &field_data) final
Virtual function for Vay current deposition in Fourier space (Vay et al, 2013). This function overrid...
Definition PsatdAlgorithmGalilean.cpp:734
bool m_time_averaging
Definition PsatdAlgorithmGalilean.H:139
amrex::Real m_dt
Definition PsatdAlgorithmGalilean.H:137
SpectralComplexCoefficients Y3_coef
Definition PsatdAlgorithmGalilean.H:126
void InitializeSpectralCoefficients(const SpectralKSpace &spectral_kspace, const amrex::DistributionMapping &dm, amrex::Real dt)
Initializes the coefficients used in pushSpectralFields to update the E and B fields.
Definition PsatdAlgorithmGalilean.cpp:302
PsatdAlgorithmGalilean(const SpectralKSpace &spectral_kspace, const amrex::DistributionMapping &dm, const SpectralFieldIndex &spectral_index, int norder_x, int norder_y, int norder_z, ablastr::utils::enums::GridType grid_type, const amrex::Vector< amrex::Real > &v_galilean, amrex::Real dt, bool update_with_rho, bool time_averaging, bool dive_cleaning, bool divb_cleaning)
Constructor of the class PsatdAlgorithmGalilean.
Definition PsatdAlgorithmGalilean.cpp:32
SpectralComplexCoefficients X4_coef
Definition PsatdAlgorithmGalilean.H:123
SpectralRealCoefficients C_coef
Definition PsatdAlgorithmGalilean.H:122
SpectralComplexCoefficients Psi1_coef
Definition PsatdAlgorithmGalilean.H:126
SpectralComplexCoefficients Psi2_coef
Definition PsatdAlgorithmGalilean.H:126
SpectralComplexCoefficients X1_coef
Definition PsatdAlgorithmGalilean.H:123
void pushSpectralFields(SpectralFieldData &f) const final
Updates the E and B fields in spectral space, according to the relevant PSATD equations.
Definition PsatdAlgorithmGalilean.cpp:105
SpectralComplexCoefficients X3_coef
Definition PsatdAlgorithmGalilean.H:123
SpectralComplexCoefficients Y2_coef
Definition PsatdAlgorithmGalilean.H:126
SpectralComplexCoefficients Y4_coef
Definition PsatdAlgorithmGalilean.H:126
SpectralComplexCoefficients X2_coef
Definition PsatdAlgorithmGalilean.H:123
KVectorComponent modified_kx_vec_centered
Definition PsatdAlgorithmGalilean.H:129
SpectralComplexCoefficients Y1_coef
Definition PsatdAlgorithmGalilean.H:126
amrex::FabArray< amrex::BaseFab< amrex::Real > > SpectralRealCoefficients
Definition SpectralBaseAlgorithm.H:83
amrex::FabArray< amrex::BaseFab< Complex > > SpectralComplexCoefficients
Definition SpectralBaseAlgorithm.H:85
SpectralBaseAlgorithm(const SpectralBaseAlgorithm &)=default
Class that stores the fields in spectral space, and performs the Fourier transforms between real spac...
Definition SpectralFieldData.H:144
Definition SpectralFieldData.H:35
Class that represents the spectral space.
Definition SpectralKSpace.H:51
GridType
Definition Enums.H:23