WarpX
Loading...
Searching...
No Matches
SpectralFieldData.H
Go to the documentation of this file.
1/* Copyright 2019 David Grote, Maxence Thevenet, Remi Lehe
2 * Revathi Jambunathan
3 *
4 * This file is part of WarpX.
5 *
6 * License: BSD-3-Clause-LBNL
7 */
8#ifndef WARPX_SPECTRAL_FIELD_DATA_H_
9#define WARPX_SPECTRAL_FIELD_DATA_H_
10
12
13#include "SpectralKSpace.H"
15#include "Utils/WarpX_Complex.H"
16
18
19#include <AMReX_BaseFab.H>
20#include <AMReX_Config.H>
21#include <AMReX_Extension.H>
22#include <AMReX_FabArray.H>
23#include <AMReX_IndexType.H>
24#include <AMReX_MultiFab.H>
25#include <AMReX_Vector.H>
26
27#include <AMReX_BaseFwd.H>
28
29#include <vector>
30
31// Declare type for spectral fields
33
35{
36 public:
37
61 SpectralFieldIndex (bool update_with_rho,
62 bool time_averaging,
63 TimeDependencyJ time_dependency_J,
64 TimeDependencyRho time_dependency_rho,
65 bool dive_cleaning,
66 bool divb_cleaning,
67 bool pml,
68 bool pml_rz = false);
69
73 SpectralFieldIndex () = default;
74
78 ~SpectralFieldIndex () = default;
79
84
89
94
99
100 // Total number of fields that are actually allocated
102
103 // Indices overwritten in the constructor, for the fields that are actually allocated
104 // (index -1 will never be used, unless there is some bug in the code implementation,
105 // which would result in a runtime crash due to out-of-bound accesses that can be detected
106 // by running the code in DEBUG mode)
107
108 // Always
109 int Ex = -1, Ey = -1, Ez = -1;
110 int Bx = -1, By = -1, Bz = -1;
111 int divE = -1;
112
113 // Time averaging
114 int Ex_avg = -1, Ey_avg = -1, Ez_avg = -1;
115 int Bx_avg = -1, By_avg = -1, Bz_avg = -1;
116
117 // J
118 int Jx_old = -1, Jy_old = -1, Jz_old = -1;
119 int Jx_mid = -1, Jy_mid = -1, Jz_mid = -1;
120 int Jx_new = -1, Jy_new = -1, Jz_new = -1;
121
122 // rho
123 int rho_old = -1, rho_mid = -1, rho_new = -1;
124
125 // div(E) and div(B) cleaning
126 int F = -1, G = -1;
127
128 // PML
129 int Exy = -1, Exz = -1, Eyx = -1, Eyz = -1, Ezx = -1, Ezy = -1;
130 int Bxy = -1, Bxz = -1, Byx = -1, Byz = -1, Bzx = -1, Bzy = -1;
131
132 // PML with div(E) and/or div(B) cleaning
133 int Exx = -1, Eyy = -1, Ezz = -1, Bxx = -1, Byy = -1, Bzz = -1;
134 int Fx = -1, Fy = -1, Fz = -1, Gx = -1, Gy = -1, Gz = -1;
135
136 // PML RZ
137 int Er_pml = -1, Et_pml = -1, Br_pml = -1, Bt_pml = -1;
138};
139
144{
145
146 public:
147 SpectralFieldData( const amrex::BoxArray& realspace_ba,
148 const SpectralKSpace& k_space,
150 int n_field_required,
151 bool periodic_single_box);
152 SpectralFieldData() = default; // Default constructor
154
155 // default move and copy operations
160
161 void ForwardTransform (int lev,
162 const amrex::MultiFab& mf, int field_index,
163 int i_comp);
164
165 void BackwardTransform (int lev, amrex::MultiFab& mf, int field_index,
166 const amrex::IntVect& fill_guards, int i_comp);
167
168 // `fields` stores fields in spectral space, as multicomponent FabArray
170
171 private:
172 // tmpRealField and tmpSpectralField store fields
173 // right before/after the Fourier transform
174 SpectralField tmpSpectralField; // contains Complexs
175 amrex::MultiFab tmpRealField; // contains Reals
176 ablastr::math::anyfft::FFTplans forward_plan, backward_plan;
177 // Correcting "shift" factors when performing FFT from/to
178 // a cell-centered grid in real space, instead of a nodal grid
179 // (0,1,2) is the dimension number
183
185};
186
187#endif // WARPX_SPECTRAL_FIELD_DATA_H_
amrex::FabArray< amrex::BaseFab< Complex > > SpectralField
Definition SpectralFieldData.H:32
amrex::LayoutData< amrex::Gpu::DeviceVector< Complex > > SpectralShiftFactor
Definition SpectralKSpace.H:34
TimeDependencyJ
Definition WarpXAlgorithmSelection.H:106
TimeDependencyRho
Definition WarpXAlgorithmSelection.H:112
void ForwardTransform(int lev, const amrex::MultiFab &mf, int field_index, int i_comp)
Definition SpectralFieldData.cpp:208
SpectralField fields
Definition SpectralFieldData.H:169
SpectralShiftFactor shift2_FFTfromCell
Definition SpectralFieldData.H:182
SpectralFieldData & operator=(SpectralFieldData &&field_data)=default
SpectralField tmpSpectralField
Definition SpectralFieldData.H:174
SpectralShiftFactor shift0_FFTtoCell
Definition SpectralFieldData.H:180
void BackwardTransform(int lev, amrex::MultiFab &mf, int field_index, const amrex::IntVect &fill_guards, int i_comp)
Definition SpectralFieldData.cpp:306
SpectralShiftFactor shift2_FFTtoCell
Definition SpectralFieldData.H:182
SpectralFieldData & operator=(const SpectralFieldData &)=delete
SpectralShiftFactor shift0_FFTfromCell
Definition SpectralFieldData.H:180
SpectralFieldData(const SpectralFieldData &)=delete
~SpectralFieldData()
Definition SpectralFieldData.cpp:194
SpectralShiftFactor shift1_FFTfromCell
Definition SpectralFieldData.H:181
amrex::MultiFab tmpRealField
Definition SpectralFieldData.H:175
SpectralFieldData()=default
SpectralFieldData(SpectralFieldData &&)=default
ablastr::math::anyfft::FFTplans backward_plan
Definition SpectralFieldData.H:176
ablastr::math::anyfft::FFTplans forward_plan
Definition SpectralFieldData.H:176
SpectralFieldData(const amrex::BoxArray &realspace_ba, const SpectralKSpace &k_space, const amrex::DistributionMapping &dm, int n_field_required, bool periodic_single_box)
Definition SpectralFieldData.cpp:132
bool m_periodic_single_box
Definition SpectralFieldData.H:184
SpectralShiftFactor shift1_FFTtoCell
Definition SpectralFieldData.H:181
SpectralFieldIndex(SpectralFieldIndex &&)=default
Default Move constructor.
int Bzz
Definition SpectralFieldData.H:133
int Eyz
Definition SpectralFieldData.H:129
int F
Definition SpectralFieldData.H:126
int By
Definition SpectralFieldData.H:110
int rho_mid
Definition SpectralFieldData.H:123
int Eyy
Definition SpectralFieldData.H:133
int Ex_avg
Definition SpectralFieldData.H:114
int Jz_mid
Definition SpectralFieldData.H:119
int Jz_new
Definition SpectralFieldData.H:120
int Gz
Definition SpectralFieldData.H:134
int Fy
Definition SpectralFieldData.H:134
int Byy
Definition SpectralFieldData.H:133
int Bxx
Definition SpectralFieldData.H:133
int Ey_avg
Definition SpectralFieldData.H:114
int G
Definition SpectralFieldData.H:126
int Bxy
Definition SpectralFieldData.H:130
int Gx
Definition SpectralFieldData.H:134
int Bx_avg
Definition SpectralFieldData.H:115
int Ex
Definition SpectralFieldData.H:109
int Bz
Definition SpectralFieldData.H:110
int rho_new
Definition SpectralFieldData.H:123
int Ezz
Definition SpectralFieldData.H:133
int Exx
Definition SpectralFieldData.H:133
int n_fields
Definition SpectralFieldData.H:101
int Jz_old
Definition SpectralFieldData.H:118
int Bz_avg
Definition SpectralFieldData.H:115
int Et_pml
Definition SpectralFieldData.H:137
int Bxz
Definition SpectralFieldData.H:130
int Jy_new
Definition SpectralFieldData.H:120
int Bx
Definition SpectralFieldData.H:110
int Jx_old
Definition SpectralFieldData.H:118
int Er_pml
Definition SpectralFieldData.H:137
int Gy
Definition SpectralFieldData.H:134
SpectralFieldIndex & operator=(SpectralFieldIndex const &)=default
Default Copy operator.
int rho_old
Definition SpectralFieldData.H:123
int Ey
Definition SpectralFieldData.H:109
int Bzy
Definition SpectralFieldData.H:130
SpectralFieldIndex(SpectralFieldIndex const &)=default
Default Copy constructor.
int Byz
Definition SpectralFieldData.H:130
int Ezy
Definition SpectralFieldData.H:129
int Exy
Definition SpectralFieldData.H:129
int divE
Definition SpectralFieldData.H:111
int Jx_mid
Definition SpectralFieldData.H:119
int Jx_new
Definition SpectralFieldData.H:120
SpectralFieldIndex()=default
Default constructor.
int Eyx
Definition SpectralFieldData.H:129
int Ez_avg
Definition SpectralFieldData.H:114
int Ez
Definition SpectralFieldData.H:109
~SpectralFieldIndex()=default
Default destructor.
int Ezx
Definition SpectralFieldData.H:129
int Br_pml
Definition SpectralFieldData.H:137
int Bzx
Definition SpectralFieldData.H:130
SpectralFieldIndex(bool update_with_rho, bool time_averaging, TimeDependencyJ time_dependency_J, TimeDependencyRho time_dependency_rho, bool dive_cleaning, bool divb_cleaning, bool pml, bool pml_rz=false)
Constructor of the class SpectralFieldIndex.
Definition SpectralFieldData.cpp:36
int By_avg
Definition SpectralFieldData.H:115
int Fz
Definition SpectralFieldData.H:134
int Bt_pml
Definition SpectralFieldData.H:137
int Exz
Definition SpectralFieldData.H:129
int Byx
Definition SpectralFieldData.H:130
int Jy_mid
Definition SpectralFieldData.H:119
int Jy_old
Definition SpectralFieldData.H:118
int Fx
Definition SpectralFieldData.H:134
Class that represents the spectral space.
Definition SpectralKSpace.H:51
IntVectND< 3 > IntVect