diff options
Diffstat (limited to 'Source/FieldSolver/SpectralSolver/SpectralAlgorithms/GalileanPsatdAlgorithmRZ.cpp')
-rw-r--r-- | Source/FieldSolver/SpectralSolver/SpectralAlgorithms/GalileanPsatdAlgorithmRZ.cpp | 57 |
1 files changed, 30 insertions, 27 deletions
diff --git a/Source/FieldSolver/SpectralSolver/SpectralAlgorithms/GalileanPsatdAlgorithmRZ.cpp b/Source/FieldSolver/SpectralSolver/SpectralAlgorithms/GalileanPsatdAlgorithmRZ.cpp index ce6d5b933..79fee3c2e 100644 --- a/Source/FieldSolver/SpectralSolver/SpectralAlgorithms/GalileanPsatdAlgorithmRZ.cpp +++ b/Source/FieldSolver/SpectralSolver/SpectralAlgorithms/GalileanPsatdAlgorithmRZ.cpp @@ -17,13 +17,15 @@ using namespace amrex::literals; /* \brief Initialize coefficients for the update equation */ GalileanPsatdAlgorithmRZ::GalileanPsatdAlgorithmRZ (SpectralKSpaceRZ const & spectral_kspace, amrex::DistributionMapping const & dm, + const SpectralFieldIndex& spectral_index, int const n_rz_azimuthal_modes, int const norder_z, bool const nodal, const amrex::Array<amrex::Real,3>& v_galilean, amrex::Real const dt, bool const update_with_rho) // Initialize members of base class - : SpectralBaseAlgorithmRZ(spectral_kspace, dm, norder_z, nodal), + : SpectralBaseAlgorithmRZ(spectral_kspace, dm, spectral_index, norder_z, nodal), + m_spectral_index(spectral_index), m_dt(dt), m_v_galilean(v_galilean), m_update_with_rho(update_with_rho) @@ -60,6 +62,8 @@ GalileanPsatdAlgorithmRZ::pushSpectralFields (SpectralFieldDataRZ & f) coefficients_initialized = true; } + const SpectralFieldIndex& Idx = m_spectral_index; + // Loop over boxes for (amrex::MFIter mfi(f.fields); mfi.isValid(); ++mfi){ @@ -91,18 +95,17 @@ GalileanPsatdAlgorithmRZ::pushSpectralFields (SpectralFieldDataRZ & f) { // All of the fields of each mode are grouped together - using Idx = SpectralFieldIndex; - auto const Ep_m = Idx::Ex + Idx::n_fields*mode; - auto const Em_m = Idx::Ey + Idx::n_fields*mode; - auto const Ez_m = Idx::Ez + Idx::n_fields*mode; - auto const Bp_m = Idx::Bx + Idx::n_fields*mode; - auto const Bm_m = Idx::By + Idx::n_fields*mode; - auto const Bz_m = Idx::Bz + Idx::n_fields*mode; - auto const Jp_m = Idx::Jx + Idx::n_fields*mode; - auto const Jm_m = Idx::Jy + Idx::n_fields*mode; - auto const Jz_m = Idx::Jz + Idx::n_fields*mode; - auto const rho_old_m = Idx::rho_old + Idx::n_fields*mode; - auto const rho_new_m = Idx::rho_new + Idx::n_fields*mode; + auto const Ep_m = Idx.Ex + Idx.n_fields*mode; + auto const Em_m = Idx.Ey + Idx.n_fields*mode; + auto const Ez_m = Idx.Ez + Idx.n_fields*mode; + auto const Bp_m = Idx.Bx + Idx.n_fields*mode; + auto const Bm_m = Idx.By + Idx.n_fields*mode; + auto const Bz_m = Idx.Bz + Idx.n_fields*mode; + auto const Jp_m = Idx.Jx + Idx.n_fields*mode; + auto const Jm_m = Idx.Jy + Idx.n_fields*mode; + auto const Jz_m = Idx.Jz + Idx.n_fields*mode; + auto const rho_old_m = Idx.rho_old + Idx.n_fields*mode; + auto const rho_new_m = Idx.rho_new + Idx.n_fields*mode; // Record old values of the fields to be updated Complex const Ep_old = fields(i,j,k,Ep_m); @@ -295,14 +298,14 @@ GalileanPsatdAlgorithmRZ::CurrentCorrection (const int lev, // Profiling WARPX_PROFILE( "GalileanPsatdAlgorithmRZ::CurrentCorrection" ); - using Idx = SpectralFieldIndex; + const SpectralFieldIndex& Idx = m_spectral_index; // Forward Fourier transform of J and rho - field_data.ForwardTransform( lev, *current[0], Idx::Jx, - *current[1], Idx::Jy); - field_data.ForwardTransform( lev, *current[2], Idx::Jz, 0); - field_data.ForwardTransform( lev, *rho, Idx::rho_old, 0 ); - field_data.ForwardTransform( lev, *rho, Idx::rho_new, 1 ); + field_data.ForwardTransform( lev, *current[0], Idx.Jx, + *current[1], Idx.Jy); + field_data.ForwardTransform( lev, *current[2], Idx.Jz, 0); + field_data.ForwardTransform( lev, *rho, Idx.rho_old, 0 ); + field_data.ForwardTransform( lev, *rho, Idx.rho_new, 1 ); // Loop over boxes for (amrex::MFIter mfi(field_data.fields); mfi.isValid(); ++mfi){ @@ -328,11 +331,11 @@ GalileanPsatdAlgorithmRZ::CurrentCorrection (const int lev, [=] AMREX_GPU_DEVICE(int i, int j, int k, int mode) noexcept { // All of the fields of each mode are grouped together - auto const Jp_m = Idx::Jx + Idx::n_fields*mode; - auto const Jm_m = Idx::Jy + Idx::n_fields*mode; - auto const Jz_m = Idx::Jz + Idx::n_fields*mode; - auto const rho_old_m = Idx::rho_old + Idx::n_fields*mode; - auto const rho_new_m = Idx::rho_new + Idx::n_fields*mode; + auto const Jp_m = Idx.Jx + Idx.n_fields*mode; + auto const Jm_m = Idx.Jy + Idx.n_fields*mode; + auto const Jz_m = Idx.Jz + Idx.n_fields*mode; + auto const rho_old_m = Idx.rho_old + Idx.n_fields*mode; + auto const rho_new_m = Idx.rho_new + Idx.n_fields*mode; // Shortcuts for the values of J and rho Complex const Jp = fields(i,j,k,Jp_m); @@ -367,9 +370,9 @@ GalileanPsatdAlgorithmRZ::CurrentCorrection (const int lev, // Backward Fourier transform of J field_data.BackwardTransform( lev, - *current[0], Idx::Jx, - *current[1], Idx::Jy); - field_data.BackwardTransform( lev, *current[2], Idx::Jz, 0 ); + *current[0], Idx.Jx, + *current[1], Idx.Jy); + field_data.BackwardTransform( lev, *current[2], Idx.Jz, 0 ); } |