WarpX
Toggle main menu visibility
Loading...
Searching...
No Matches
Source
FieldSolver
SpectralSolver
SpectralKSpace.H
Go to the documentation of this file.
1
/* Copyright 2019 David Grote, Maxence Thevenet, Remi Lehe
2
*
3
*
4
* This file is part of WarpX.
5
*
6
* License: BSD-3-Clause-LBNL
7
*/
8
#ifndef WARPX_SPECTRAL_K_SPACE_H_
9
#define WARPX_SPECTRAL_K_SPACE_H_
10
11
#include "
SpectralKSpace_fwd.H
"
12
13
#include "
Utils/WarpX_Complex.H
"
14
15
#include <
ablastr/utils/Enums.H
>
16
17
#include <
AMReX_Array.H
>
18
#include <
AMReX_BoxArray.H
>
19
#include <AMReX_Config.H>
20
#include <
AMReX_Enum.H
>
21
#include <
AMReX_GpuContainers.H
>
22
#include <
AMReX_LayoutData.H
>
23
#include <
AMReX_REAL.H
>
24
#include <
AMReX_RealVect.H
>
25
#include <
AMReX_Vector.H
>
26
27
#include <
AMReX_BaseFwd.H
>
28
29
// `KVectorComponent` and `SpectralShiftFactor` hold one 1D array
30
// ("DeviceVector") for each box ("LayoutData"). The arrays are
31
// only allocated if the corresponding box is owned by the local MPI rank.
32
using
RealKVector
=
amrex::Gpu::DeviceVector<amrex::Real>
;
33
using
KVectorComponent
=
amrex::LayoutData< RealKVector >
;
34
using
SpectralShiftFactor
=
amrex::LayoutData
<
35
amrex::Gpu::DeviceVector<Complex>
>;
36
37
// Indicate the type of correction "shift" factor to apply
38
// when the FFT is performed from/to a cell-centered grid in real space.
39
AMREX_ENUM
(
ShiftType
,
40
TransformFromCellCentered
,
41
TransformToCellCentered
);
42
50
class
SpectralKSpace
51
{
52
public
:
53
amrex::BoxArray
spectralspace_ba
;
54
SpectralKSpace
() :
dx
(
amrex
::RealVect::
Zero
) {}
55
56
SpectralKSpace
(
const
amrex::BoxArray
& realspace_ba,
57
const
amrex::DistributionMapping
& dm,
58
amrex::RealVect
realspace_dx );
59
60
KVectorComponent
getKComponent
(
61
const
amrex::DistributionMapping
& dm,
62
const
amrex::BoxArray
& realspace_ba,
63
int
i_dim,
bool
only_positive_k )
const
;
64
65
KVectorComponent
getModifiedKComponent
(
66
const
amrex::DistributionMapping
& dm,
67
int
i_dim,
68
int
n_order,
69
ablastr::utils::enums::GridType
grid_type)
const
;
70
71
SpectralShiftFactor
getSpectralShiftFactor
(
72
const
amrex::DistributionMapping
& dm,
int
i_dim,
73
ShiftType
shift_type )
const
;
74
75
protected
:
76
amrex::Array<KVectorComponent, AMREX_SPACEDIM>
k_vec
;
77
// 3D: k_vec is an Array of 3 components, corresponding to kx, ky, kz
78
// 2D: k_vec is an Array of 2 components, corresponding to kx, kz
79
amrex::RealVect
dx
;
80
};
81
82
#endif
AMReX_Array.H
AMReX_BaseFwd.H
AMReX_BoxArray.H
AMReX_Enum.H
AMREX_ENUM
#define AMREX_ENUM(CLASS,...)
AMReX_GpuContainers.H
AMReX_LayoutData.H
AMReX_REAL.H
AMReX_RealVect.H
AMReX_Vector.H
InitializationPolicy::Zero
@ Zero
Definition
DefaultInitialization.H:39
Enums.H
ShiftType
ShiftType
Definition
SpectralKSpace.H:41
ShiftType::TransformToCellCentered
@ TransformToCellCentered
Definition
SpectralKSpace.H:41
ShiftType::TransformFromCellCentered
@ TransformFromCellCentered
Definition
SpectralKSpace.H:41
RealKVector
amrex::Gpu::DeviceVector< amrex::Real > RealKVector
Definition
SpectralKSpace.H:32
SpectralShiftFactor
amrex::LayoutData< amrex::Gpu::DeviceVector< Complex > > SpectralShiftFactor
Definition
SpectralKSpace.H:34
KVectorComponent
amrex::LayoutData< RealKVector > KVectorComponent
Definition
SpectralKSpace.H:33
SpectralKSpace_fwd.H
WarpX_Complex.H
SpectralKSpace::getSpectralShiftFactor
SpectralShiftFactor getSpectralShiftFactor(const amrex::DistributionMapping &dm, int i_dim, ShiftType shift_type) const
Definition
SpectralKSpace.cpp:146
SpectralKSpace::k_vec
amrex::Array< KVectorComponent, 3 > k_vec
Definition
SpectralKSpace.H:76
SpectralKSpace::getKComponent
KVectorComponent getKComponent(const amrex::DistributionMapping &dm, const amrex::BoxArray &realspace_ba, int i_dim, bool only_positive_k) const
Definition
SpectralKSpace.cpp:85
SpectralKSpace::dx
amrex::RealVect dx
Definition
SpectralKSpace.H:79
SpectralKSpace::spectralspace_ba
amrex::BoxArray spectralspace_ba
Definition
SpectralKSpace.H:53
SpectralKSpace::SpectralKSpace
SpectralKSpace()
Definition
SpectralKSpace.H:54
SpectralKSpace::getModifiedKComponent
KVectorComponent getModifiedKComponent(const amrex::DistributionMapping &dm, int i_dim, int n_order, ablastr::utils::enums::GridType grid_type) const
Definition
SpectralKSpace.cpp:193
amrex::BoxArray
amrex::DistributionMapping
amrex::LayoutData< RealKVector >
amrex::Gpu::DeviceVector
PODVector< T, ArenaAllocator< T > > DeviceVector
amrex::Array
std::array< T, N > Array
ablastr::utils::enums::GridType
GridType
Definition
Enums.H:23
amrex
amrex::RealVect
RealVectND< 3 > RealVect
Generated by
1.17.0