WarpX
Loading...
Searching...
No Matches
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.
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.
42
51{
52 public:
54 SpectralKSpace() : dx(amrex::RealVect::Zero) {}
55
56 SpectralKSpace( const amrex::BoxArray& realspace_ba,
58 amrex::RealVect realspace_dx );
59
62 const amrex::BoxArray& realspace_ba,
63 int i_dim, bool only_positive_k ) const;
64
67 int i_dim,
68 int n_order,
69 ablastr::utils::enums::GridType grid_type) const;
70
72 const amrex::DistributionMapping& dm, int i_dim,
73 ShiftType shift_type ) const;
74
75 protected:
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
80};
81
82#endif
#define AMREX_ENUM(CLASS,...)
@ Zero
Definition DefaultInitialization.H:39
ShiftType
Definition SpectralKSpace.H:41
@ TransformToCellCentered
Definition SpectralKSpace.H:41
@ TransformFromCellCentered
Definition SpectralKSpace.H:41
amrex::Gpu::DeviceVector< amrex::Real > RealKVector
Definition SpectralKSpace.H:32
amrex::LayoutData< amrex::Gpu::DeviceVector< Complex > > SpectralShiftFactor
Definition SpectralKSpace.H:34
amrex::LayoutData< RealKVector > KVectorComponent
Definition SpectralKSpace.H:33
SpectralShiftFactor getSpectralShiftFactor(const amrex::DistributionMapping &dm, int i_dim, ShiftType shift_type) const
Definition SpectralKSpace.cpp:146
amrex::Array< KVectorComponent, 3 > k_vec
Definition SpectralKSpace.H:76
KVectorComponent getKComponent(const amrex::DistributionMapping &dm, const amrex::BoxArray &realspace_ba, int i_dim, bool only_positive_k) const
Definition SpectralKSpace.cpp:85
amrex::RealVect dx
Definition SpectralKSpace.H:79
amrex::BoxArray spectralspace_ba
Definition SpectralKSpace.H:53
SpectralKSpace()
Definition SpectralKSpace.H:54
KVectorComponent getModifiedKComponent(const amrex::DistributionMapping &dm, int i_dim, int n_order, ablastr::utils::enums::GridType grid_type) const
Definition SpectralKSpace.cpp:193
GridType
Definition Enums.H:23
PODVector< T, ArenaAllocator< T > > DeviceVector
RealVectND< 3 > RealVect
std::array< T, N > Array