/* Copyright 2019 Edoardo Zoni * * This file is part of WarpX. * * License: BSD-3-Clause-LBNL */ #include "SpectralBaseAlgorithmRZ.H" #include using namespace amrex; /** * \brief Compute spectral divergence of E */ void SpectralBaseAlgorithmRZ::ComputeSpectralDivE ( const int lev, SpectralFieldDataRZ& field_data, const std::array,3>& Efield, amrex::MultiFab& divE ) { using amrex::operator""_rt; const SpectralFieldIndex& Idx = m_spectral_index; // Forward Fourier transform of E field_data.ForwardTransform( lev, *Efield[0], Idx.Ex, *Efield[1], Idx.Ey ); field_data.ForwardTransform( lev, *Efield[2], Idx.Ez, 0 ); // Loop over boxes for (MFIter mfi(field_data.fields); mfi.isValid(); ++mfi){ Box const & bx = field_data.fields[mfi].box(); // Extract arrays for the fields to be updated Array4 fields = field_data.fields[mfi].array(); // Extract pointers for the k vectors Real const * kr_arr = field_data.getKrArray(mfi).dataPtr(); Real const * modified_kz_arr = modified_kz_vec[mfi].dataPtr(); int const nr = bx.length(0); int const modes = field_data.n_rz_azimuthal_modes; const int n_fields = m_spectral_index.n_fields; // Loop over indices within one box ParallelFor(bx, modes, [=] AMREX_GPU_DEVICE(int i, int j, int /*k*/, int mode) noexcept { int const ic1 = Idx.Ex + mode*n_fields; int const ic2 = Idx.Ey + mode*n_fields; int const ic3 = Idx.Ez + mode*n_fields; // Shortcuts for the components of E Complex const Ep = fields(i,j,0,ic1); Complex const Em = fields(i,j,0,ic2); Complex const Ez = fields(i,j,0,ic3); // k vector values int const ir = i + nr*mode; Real const kr = kr_arr[ir]; Real const kz = modified_kz_arr[j]; Complex const I = Complex{0._rt,1._rt}; // div(E) in Fourier space int const ic = Idx.divE + mode*n_fields; fields(i,j,0,ic) = kr*(Ep - Em) + I*kz*Ez; }); } // Backward Fourier transform field_data.BackwardTransform( lev, divE, Idx.divE, 0 ); } n> Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
AgeCommit message (Expand)AuthorFilesLines
2022-05-12fix(vercel): added type definitions (#3355)Gravatar Juan Martín Seery 2-1/+18
2022-05-12[ci] release (#3334)create-astro@0.12.1astro@1.0.0-beta.28@astrojs/vue@0.1.4@astrojs/vercel@0.2.0@astrojs/svelte@0.1.3@astrojs/react@0.1.2@astrojs/netlify@0.3.4Gravatar github-actions[bot] 58-196/+171
2022-05-12Serialize route generation (#3354)Gravatar Juan Martín Seery 5-59/+61
2022-05-12Corrected the default value of trailingSlash (#3353)Gravatar Rafid Muhymin Wafi 1-1/+1
2022-05-12[ci] formatGravatar matthewp 1-85/+78
2022-05-12Fixed search bar of the docs example not working (#3247)Gravatar Rafid Muhymin Wafi 1-76/+94
2022-05-12Add config option customPages (#3315)Gravatar Eloi-Perez 1-0/+14
2022-05-12fix: vite types (#3352)Gravatar Juan Martín Seery 4-5/+16
2022-05-12[ci] update lockfile (#3287)Gravatar Fred K. Schott 33-1038/+1096
2022-05-12[ci] formatGravatar matthewp 2-2/+2
2022-05-12add error hints (#3350)Gravatar Fred K. Schott 3-0/+19
2022-05-12[ci] formatGravatar matthewp 2-10/+6
2022-05-12Fix: React - Use "createRoot" instead of "hydrateRoot" for `client:only` (#3337)Gravatar Ben Holmes 4-22/+34
2022-05-12[ci] formatGravatar matthewp 1-2/+8
2022-05-12Resolve components by module ID during compilation (#3300)Gravatar Tony Sullivan 22-41/+407
2022-05-12[ci] collect statsGravatar FredKSchott 1-0/+1
2022-05-11Exclude `node-fetch` from vite.optimizeDeps (#3348)Gravatar Nate Moore 2-0/+6
2022-05-11fix: updated blog template with existing address (#3312)Gravatar Gautier Ben Aïm 1-2/+2
2022-05-11refactor(vercel): Build Output API v3 (#3216)Gravatar Juan Martín Seery 42-231/+659
2022-05-11Fix APIRoute type (#3344)Gravatar Matthew Phillips 3-11/+8
2022-05-11[create-astro] Finalize developer experience... with gradients 🚀 (#3313)Gravatar Ben Holmes 5-23/+123