WarpX
Loading...
Searching...
No Matches
SpectralFieldDataRZ.H
Go to the documentation of this file.
1/* Copyright 2019-2020 David Grote
2 *
3 * This file is part of WarpX.
4 *
5 * License: BSD-3-Clause-LBNL
6 */
7#ifndef WARPX_SPECTRAL_FIELD_DATA_RZ_H_
8#define WARPX_SPECTRAL_FIELD_DATA_RZ_H_
9
11#include "SpectralFieldData.H"
13#include "SpectralKSpaceRZ.H"
14
16
17#include <AMReX_MultiFab.H>
18
19/* \brief Class that stores the fields in spectral space, and performs the
20 * Fourier transforms between real space and spectral space
21 */
23{
24
25 public:
26
27 // Define the FFTplans type, which holds one fft plan per box
28 // (plans are only initialized for the boxes that are owned by
29 // the local MPI rank)
31
33
34 SpectralFieldDataRZ (int lev,
35 const amrex::BoxArray& realspace_ba,
36 const SpectralKSpaceRZ& k_space,
38 int n_field_required,
39 int n_modes);
40 SpectralFieldDataRZ () = default; // Default constructor
42
51
52
53 void ForwardTransform (int lev, const amrex::MultiFab& mf, int field_index,
54 int i_comp=0);
55 void ForwardTransform (int lev, const amrex::MultiFab& mf_r, int field_index_r,
56 const amrex::MultiFab& mf_t, int field_index_t);
57 void BackwardTransform (int lev, amrex::MultiFab& mf, int field_index,
58 int i_comp=0);
59 void BackwardTransform (int lev, amrex::MultiFab& mf_r, int field_index_r,
60 amrex::MultiFab& mf_t, int field_index_t);
61
62 void FABZForwardTransform (amrex::MFIter const & mfi, amrex::Box const & realspace_bx,
63 amrex::MultiFab const & tempHTransformedSplit,
64 int field_index, bool is_nodal_z);
65 void FABZBackwardTransform (amrex::MFIter const & mfi, amrex::Box const & realspace_bx,
66 int field_index,
67 amrex::MultiFab & tempHTransformedSplit,
68 bool is_nodal_z);
69
77 void CopySpectralDataComp (int src_comp, int dest_comp);
78
84 void ZeroOutDataComp(int icomp);
85
92 void ScaleDataComp(int icomp, amrex::Real scale_factor);
93
94 void InitFilter (amrex::IntVect const & filter_npass_each_dir, bool compensation,
95 SpectralKSpaceRZ const & k_space);
96
97 void ApplyFilter (int lev, int field_index);
98 void ApplyFilter (int lev, int field_index1,
99 int field_index2, int field_index3);
100
101 // Returns an array that holds the kr for all of the modes
103 return spectral_hankel_transformer.getKrArray();
104 }
105
108
113
114 private:
115
118
119 // tempHTransformed and tmpSpectralField store fields
120 // right before/after the z Fourier transform
121 SpectralField tempHTransformed; // contains Complexes
122 SpectralField tmpSpectralField; // contains Complexes
124 // Correcting "shift" factors when performing FFT from/to
125 // a cell-centered grid in real space, instead of a nodal grid
129
130};
131
132#endif // WARPX_SPECTRAL_FIELD_DATA_RZ_H_
amrex::FabArray< amrex::BaseFab< Complex > > SpectralField
Definition SpectralFieldData.H:32
amrex::LayoutData< amrex::Gpu::DeviceVector< Complex > > SpectralShiftFactor
Definition SpectralKSpace.H:34
amrex::Gpu::DeviceVector< amrex::Real > RealVector
Definition HankelTransform.H:32
SpectralFieldDataRZ(int lev, const amrex::BoxArray &realspace_ba, const SpectralKSpaceRZ &k_space, const amrex::DistributionMapping &dm, int n_field_required, int n_modes)
Definition SpectralFieldDataRZ.cpp:28
HankelTransform::RealVector const & getKrArray() const
Definition SpectralFieldDataRZ.H:102
FFTplans backward_plan
Definition SpectralFieldDataRZ.H:123
void ZeroOutDataComp(int icomp)
Set to zero the data on component icomp of fields.
Definition SpectralFieldDataRZ.cpp:784
int m_n_fields
Definition SpectralFieldDataRZ.H:117
void CopySpectralDataComp(int src_comp, int dest_comp)
Copy spectral data from component src_comp to component dest_comp of fields.
Definition SpectralFieldDataRZ.cpp:769
SpectralFieldDataRZ()=default
SpectralFieldIndex m_spectral_index
Definition SpectralFieldDataRZ.H:116
void BackwardTransform(int lev, amrex::MultiFab &mf, int field_index, int i_comp=0)
Definition SpectralFieldDataRZ.cpp:590
SpectralField tempHTransformed
Definition SpectralFieldDataRZ.H:121
void InitFilter(amrex::IntVect const &filter_npass_each_dir, bool compensation, SpectralKSpaceRZ const &k_space)
Definition SpectralFieldDataRZ.cpp:814
SpectralFieldDataRZ & operator=(SpectralFieldDataRZ const &)=delete
void FABZBackwardTransform(amrex::MFIter const &mfi, amrex::Box const &realspace_bx, int field_index, amrex::MultiFab &tempHTransformedSplit, bool is_nodal_z)
Definition SpectralFieldDataRZ.cpp:363
SpectralFieldDataRZ(SpectralFieldDataRZ const &)=delete
void ForwardTransform(int lev, const amrex::MultiFab &mf, int field_index, int i_comp=0)
Definition SpectralFieldDataRZ.cpp:465
FFTplans forward_plan
Definition SpectralFieldDataRZ.H:123
void FABZForwardTransform(amrex::MFIter const &mfi, amrex::Box const &realspace_bx, amrex::MultiFab const &tempHTransformedSplit, int field_index, bool is_nodal_z)
Definition SpectralFieldDataRZ.cpp:255
void ScaleDataComp(int icomp, amrex::Real scale_factor)
Scale the data on component icomp of fields by a given scale factor.
Definition SpectralFieldDataRZ.cpp:798
int m_ncomps
Number of MultiFab components, see WarpX::ncomps.
Definition SpectralFieldDataRZ.H:112
SpectralField fields
fields stores fields in spectral space, as multicomponent FabArray
Definition SpectralFieldDataRZ.H:107
int n_rz_azimuthal_modes
Number of modes for the RZ multi-mode version, see WarpX::n_rz_azimuthal_modes.
Definition SpectralFieldDataRZ.H:110
SpectralShiftFactor zshift_FFTfromCell
Definition SpectralFieldDataRZ.H:126
amrex::LayoutData< ablastr::math::anyfft::VendorFFTPlan > FFTplans
Definition SpectralFieldDataRZ.H:30
SpectralFieldDataRZ(SpectralFieldDataRZ &&)=default
~SpectralFieldDataRZ()
Definition SpectralFieldDataRZ.cpp:222
SpectralField tmpSpectralField
Definition SpectralFieldDataRZ.H:122
SpectralFieldDataRZ & operator=(SpectralFieldDataRZ &&field_data)=default
SpectralShiftFactor zshift_FFTtoCell
Definition SpectralFieldDataRZ.H:126
amrex::LayoutData< SpectralBinomialFilter > BinomialFilter
Definition SpectralFieldDataRZ.H:32
void ApplyFilter(int lev, int field_index)
Definition SpectralFieldDataRZ.cpp:831
BinomialFilter binomialfilter
Definition SpectralFieldDataRZ.H:128
SpectralHankelTransformer spectral_hankel_transformer
Definition SpectralFieldDataRZ.H:127
Definition SpectralFieldData.H:35
Definition SpectralHankelTransformer.H:23
Definition SpectralKSpaceRZ.H:21
amrex_real Real
BoxND< 3 > Box
IntVectND< 3 > IntVect