/* Copyright 2019 Remi Lehe * * This file is part of WarpX. * * License: BSD-3-Clause-LBNL */ #include "FieldSolver/SpectralSolver/SpectralAlgorithms/SpectralBaseAlgorithm.H" #include "FieldSolver/SpectralSolver/SpectralFieldData.H" #include "SpectralAlgorithms/ComovingPsatdAlgorithm.H" #include "SpectralAlgorithms/PMLPsatdAlgorithm.H" #include "SpectralAlgorithms/PsatdAlgorithm.H" #include "SpectralKSpace.H" #include "SpectralSolver.H" #include "Utils/WarpXProfilerWrapper.H" #include #if WARPX_USE_PSATD SpectralSolver::SpectralSolver( const int lev, const amrex::BoxArray& realspace_ba, const amrex::DistributionMapping& dm, const int norder_x, const int norder_y, const int norder_z, const bool nodal, const amrex::Array& v_galilean, const amrex::Array& v_comoving, const amrex::RealVect dx, const amrex::Real dt, const bool pml, const bool periodic_single_box, const bool update_with_rho, const bool fft_do_time_averaging, const bool J_linear_in_time, const bool dive_cleaning, const bool divb_cleaning) { // Initialize all structures using the same distribution mapping dm // - Initialize k space object (Contains info about the size of // the spectral space corresponding to each box in `realspace_ba`, // as well as the value of the corresponding k coordinates) const SpectralKSpace k_space= SpectralKSpace(realspace_ba, dm, dx); // - Select the algorithm depending on the input parameters // Initialize the corresponding coefficients over k space if (pml) { algorithm = std::make_unique( k_space, dm, norder_x, norder_y, norder_z, nodal, dt, dive_cleaning, divb_cleaning); } else { // Comoving PSATD algorithm if (v_comoving[0] != 0. || v_comoving[1] != 0. || v_comoving[2] != 0.) { algorithm = std::make_unique( k_space, dm, norder_x, norder_y, norder_z, nodal, v_comoving, dt, update_with_rho); } // PSATD algorithms: standard, Galilean, or averaged Galilean else { algorithm = std::make_unique( k_space, dm, norder_x, norder_y, norder_z, nodal, v_galilean, dt, update_with_rho, fft_do_time_averaging, J_linear_in_time); } } // - Initialize arrays for fields in spectral space + FFT plans field_data = SpectralFieldData( lev, realspace_ba, k_space, dm, algorithm->getRequiredNumberOfFields(), periodic_single_box); } void SpectralSolver::ForwardTransform( const int lev, const amrex::MultiFab& mf, const int field_index, const int i_comp ) { WARPX_PROFILE("SpectralSolver::ForwardTransform"); field_data.ForwardTransform( lev, mf, field_index, i_comp ); } void SpectralSolver::BackwardTransform( const int lev, amrex::MultiFab& mf, const int field_index, const int i_comp ) { WARPX_PROFILE("SpectralSolver::BackwardTransform"); field_data.BackwardTransform( lev, mf, field_index, i_comp ); } void SpectralSolver::pushSpectralFields(){ WARPX_PROFILE("SpectralSolver::pushSpectralFields"); // Virtual function: the actual function used here depends // on the sub-class of `SpectralBaseAlgorithm` that was // initialized in the constructor of `SpectralSolver` algorithm->pushSpectralFields( field_data ); } #endif // WARPX_USE_PSATD ples/framework-lit'>examples/framework-lit Unnamed repository; edit this file 'description' to name the repository.
aboutsummaryrefslogtreecommitdiff
AgeCommit message (Expand)AuthorFilesLines
2024-02-27Improve the message of `MiddlewareCantBeLoaded` for clarity (#10239)Gravatar Ming-jun Lu 2-1/+6
2024-02-26[ci] formatGravatar Martin Trapp 1-1/+3
2024-02-26Warn when view transitions run on a prefer-reduced-motion device (#10222)Gravatar Martin Trapp 2-0/+8
2024-02-26[ci] release (#10218)astro@4.4.5@astrojs/vercel@7.3.4@astrojs/svelte@5.1.0@astrojs/db@0.4.1Gravatar Houston (Bot) 46-114/+100
2024-02-26fix: better assetsInlineLimit runtime type checking (#10154)Gravatar James Ross 2-9/+13
2024-02-26fix: correct remote url (#10223)Gravatar Ben Holmes 2-2/+8
2024-02-26fix(toolbar): Make it so every built-in app can be closed by outside clicks (...Gravatar Erika 8-51/+63
2024-02-26Fix an issue where Vercel adapter may create functions for prerendered routes...Gravatar Ming-jun Lu 4-2/+26
2024-02-26[ci] formatGravatar Matthew Phillips 1-1/+1
2024-02-26Fix hydration scripts missing from dynamic slot usage (#10219)Gravatar Matthew Phillips 6-1/+69
2024-02-26[ci] formatGravatar Matthew Phillips 1-5/+5
2024-02-26Prevent errors in rendering from crashing server (#10221)Gravatar Matthew Phillips 7-14/+78
2024-02-26fix: svelte 5 mount/hydrate api change. (#10224)Gravatar 前端子鱼 3-5/+12
2024-02-24[ci] formatGravatar Arsh 1-9/+30
2024-02-24prevent warning: `Astro.request.headers` is not available in "static" output ...Gravatar Arsh 2-27/+30
2024-02-23Improved error logging from config (#10207)Gravatar Ben Holmes 4-36/+67
2024-02-23[ci] formatGravatar Arsh 3-3/+3
2024-02-23fix(dev): remove params for prerendered pages (#10199)Gravatar Arsh 9-13/+78
2024-02-23[ci] release (#10213)astro@4.4.4@astrojs/vercel@7.3.3@astrojs/node@8.2.1@astrojs/db@0.4.0Gravatar Houston (Bot) 41-177/+95
2024-02-23Fixes edge middleware calling nested routes (#10215)Gravatar Matthew Phillips 2-1/+6
2024-02-23Adds an error message for non-string transition:name values (#10205)Gravatar Martin Trapp 2-0/+8
2024-02-23[ci] formatGravatar Furkan Erdem 1-1/+1
2024-02-23Fix(node): Custom headers are not present in responses from standalone Node s...Gravatar Furkan Erdem 8-0/+163