WarpX
Loading...
Searching...
No Matches
PsatdAlgorithmPml.H
Go to the documentation of this file.
1/* Copyright 2019 Axel Huebl, Remi Lehe
2 *
3 * This file is part of WarpX.
4 *
5 * License: BSD-3-Clause-LBNL
6 */
7#ifndef WARPX_PSATD_ALGORITHM_PML_H_
8#define WARPX_PSATD_ALGORITHM_PML_H_
9
11
14
15#include <ablastr/utils/Enums.H>
16
17#include <AMReX_REAL.H>
18#include <AMReX_BaseFwd.H>
19
20#include <array>
21#include <memory>
22
23#if WARPX_USE_FFT
24
25/*
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
49 const SpectralKSpace& spectral_kspace,
51 const SpectralFieldIndex& spectral_index,
52 int norder_x,
53 int norder_y,
54 int norder_z,
56 const amrex::Vector<amrex::Real>& v_galilean,
57 amrex::Real dt,
58 bool dive_cleaning,
59 bool divb_cleaning);
60
69 const SpectralKSpace& spectral_kspace,
71
78 void pushSpectralFields(SpectralFieldData& f) const final;
79
89 void CurrentCorrection (SpectralFieldData& field_data) final;
90
100 void VayDeposition (SpectralFieldData& field_data) final;
101
102 private:
103
106 // Centered modified finite-order k vectors
108#if defined(WARPX_DIM_3D)
109 KVectorComponent modified_ky_vec_centered;
110#endif
113 amrex::Real m_dt;
117};
118
119#endif // WARPX_USE_FFT
120#endif // WARPX_PSATD_ALGORITHM_PML_H_
amrex::LayoutData< RealKVector > KVectorComponent
Definition SpectralKSpace.H:33
amrex::Real m_dt
Definition PsatdAlgorithmPml.H:113
KVectorComponent modified_kz_vec_centered
Definition PsatdAlgorithmPml.H:111
void pushSpectralFields(SpectralFieldData &f) const final
Updates the E and B fields in spectral space, according to the relevant PSATD equations.
Definition PsatdAlgorithmPml.cpp:78
void InitializeSpectralCoefficients(const SpectralKSpace &spectral_kspace, const amrex::DistributionMapping &dm)
Initializes the coefficients used in pushSpectralFields to update the E and B fields.
Definition PsatdAlgorithmPml.cpp:376
void VayDeposition(SpectralFieldData &field_data) final
Virtual function for Vay current deposition in Fourier space (Vay et al, 2013). This function overrid...
Definition PsatdAlgorithmPml.cpp:464
KVectorComponent modified_kx_vec_centered
Definition PsatdAlgorithmPml.H:107
SpectralComplexCoefficients T2_coef
Definition PsatdAlgorithmPml.H:105
amrex::Vector< amrex::Real > m_v_galilean
Definition PsatdAlgorithmPml.H:112
bool m_is_galilean
Definition PsatdAlgorithmPml.H:116
void CurrentCorrection(SpectralFieldData &field_data) final
Virtual function for current correction in Fourier space (Vay et al, 2013). This function overrides t...
Definition PsatdAlgorithmPml.cpp:459
PsatdAlgorithmPml(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 dive_cleaning, bool divb_cleaning)
Constructor of the class PsatdAlgorithmPml.
Definition PsatdAlgorithmPml.cpp:33
bool m_divb_cleaning
Definition PsatdAlgorithmPml.H:115
bool m_dive_cleaning
Definition PsatdAlgorithmPml.H:114
SpectralRealCoefficients inv_k2_coef
Definition PsatdAlgorithmPml.H:104
SpectralRealCoefficients S_ck_coef
Definition PsatdAlgorithmPml.H:104
SpectralRealCoefficients C_coef
Definition PsatdAlgorithmPml.H:104
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