/* Copyright 2020 Remi Lehe * * This file is part of WarpX. * * License: BSD-3-Clause-LBNL */ #include "FieldSolver/FiniteDifferenceSolver/FiniteDifferenceSolver.H" #include "BoundaryConditions/PMLComponent.H" #ifndef WARPX_DIM_RZ # include "FieldSolver/FiniteDifferenceSolver/FiniteDifferenceAlgorithms/CartesianYeeAlgorithm.H" # include "FieldSolver/FiniteDifferenceSolver/FiniteDifferenceAlgorithms/CartesianCKCAlgorithm.H" # include "FieldSolver/FiniteDifferenceSolver/FiniteDifferenceAlgorithms/CartesianNodalAlgorithm.H" #else # include "FieldSolver/FiniteDifferenceSolver/FiniteDifferenceAlgorithms/CylindricalYeeAlgorithm.H" #endif #include "Utils/WarpXAlgorithmSelection.H" #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace amrex; /** * \brief Update the E field, over one timestep */ void FiniteDifferenceSolver::EvolveFPML ( amrex::MultiFab* Ffield, std::array< amrex::MultiFab*, 3 > const Efield, amrex::Real const dt ) { // Select algorithm (The choice of algorithm is a runtime option, // but we compile code for each algorithm, using templates) #ifdef WARPX_DIM_RZ amrex::ignore_unused(Ffield, Efield, dt); amrex::Abort("PML are not implemented in cylindrical geometry."); #else if (m_do_nodal) { EvolveFPMLCartesian ( Ffield, Efield, dt ); } else if (m_fdtd_algo == MaxwellSolverAlgo::Yee) { EvolveFPMLCartesian ( Ffield, Efield, dt ); } else if (m_fdtd_algo == MaxwellSolverAlgo::CKC) { EvolveFPMLCartesian ( Ffield, Efield, dt ); } else { amrex::Abort("EvolveFPML: Unknown algorithm"); } #endif } #ifndef WARPX_DIM_RZ template void FiniteDifferenceSolver::EvolveFPMLCartesian ( amrex::MultiFab* Ffield, std::array< amrex::MultiFab*, 3 > const Efield, amrex::Real const dt ) { // Loop through the grids, and over the tiles within each grid #ifdef AMREX_USE_OMP #pragma omp parallel if (amrex::Gpu::notInLaunchRegion()) #endif for ( MFIter mfi(*Ffield, TilingIfNotGPU()); mfi.isValid(); ++mfi ) { // Extract field data for this grid/tile Array4 const& F = Ffield->array(mfi); Array4 const& Ex = Efield[0]->array(mfi); Array4 const& Ey = Efield[1]->array(mfi); Array4 const& Ez = Efield[2]->array(mfi); // Extract stencil coefficients Real const * const AMREX_RESTRICT coefs_x = m_stencil_coefs_x.dataPtr(); int const n_coefs_x = m_stencil_coefs_x.size(); Real const * const AMREX_RESTRICT coefs_y = m_stencil_coefs_y.dataPtr(); int const n_coefs_y = m_stencil_coefs_y.size(); Real const * const AMREX_RESTRICT coefs_z = m_stencil_coefs_z.dataPtr(); int const n_coefs_z = m_stencil_coefs_z.size(); // Extract tileboxes for which to loop Box const& tf = mfi.tilebox(Ffield->ixType().ixType()); // Loop over the cells and update the fields amrex::ParallelFor(tf, [=] AMREX_GPU_DEVICE (int i, int j, int k){ F(i, j, k, PMLComp::x) += dt * ( T_Algo::DownwardDx(Ex, coefs_x, n_coefs_x, i, j, k, PMLComp::xx) + T_Algo::DownwardDx(Ex, coefs_x, n_coefs_x, i, j, k, PMLComp::xy) + T_Algo::DownwardDx(Ex, coefs_x, n_coefs_x, i, j, k, PMLComp::xz) ); F(i, j, k, PMLComp::y) += dt * ( T_Algo::DownwardDy(Ey, coefs_y, n_coefs_y, i, j, k, PMLComp::yx) + T_Algo::DownwardDy(Ey, coefs_y, n_coefs_y, i, j, k, PMLComp::yy) + T_Algo::DownwardDy(Ey, coefs_y, n_coefs_y, i, j, k, PMLComp::yz) ); F(i, j, k, PMLComp::z) += dt * ( T_Algo::DownwardDz(Ez, coefs_z, n_coefs_z, i, j, k, PMLComp::zx) + T_Algo::DownwardDz(Ez, coefs_z, n_coefs_z, i, j, k, PMLComp::zy) + T_Algo::DownwardDz(Ez, coefs_z, n_coefs_z, i, j, k, PMLComp::zz) ); } ); } } #endif // corresponds to ifndef WARPX_DIM_RZ tion> Unnamed repository; edit this file 'description' to name the repository.
aboutsummaryrefslogtreecommitdiff
AgeCommit message (Expand)AuthorFilesLines
2023-08-23Update globals.d.ts (#4276)Gravatar VietnamecDevelopment 1-1/+1
2023-08-23Fix ffi type (#4265)Gravatar Code Hz 2-49/+272
2023-08-23Bunch of streams fixes (#4251)Gravatar Jarred Sumner 31-548/+866
2023-08-23docs: remove broken DNS link which is also not present in the official docs (...Gravatar Quentin 1-1/+0
2023-08-23Fix more types. (#4273)Gravatar xxxhussein 8-16/+22
2023-08-23ask for bun --revision instead bun -v (#4256)Gravatar Jozef Steinhübl 1-1/+1
2023-08-22fix yield (#4264)Gravatar dave caruso 2-1/+17
2023-08-22Fix Bun.inspect typesGravatar Colin McDonnell 1-1/+1
2023-08-21fix fsevents and stub for qwikcity (#4247)Gravatar dave caruso 9-64/+24
2023-08-21fix stdin stream unref and resuming (#4250)Gravatar Dylan Conway 4-19/+26
2023-08-21Docs and types for v0.8.0 (#4199)Gravatar Colin McDonnell 10-37/+487
2023-08-21Bun v0.8Gravatar Jarred Sumner 5-5/+5
2023-08-21Make the code generator less duplicativeGravatar Jarred Sumner 2-84/+39
2023-08-21import errors have `code` set to `ERR_MODULE_NOT_FOUND` and `require` errors ...Gravatar Jarred Sumner 11-19/+122
2023-08-21fetch(stream) add stream support for compressed and uncompressed data (#4127)Gravatar Ciro Spaciari 19-156/+1876
2023-08-21Fix inquirer (#4245)Gravatar dave caruso 2-3/+6
2023-08-21Update module_loader.zigGravatar Jarred Sumner 1-1/+1
2023-08-21Fix(bundler): allow generating exe file in nested path. (#4226)Gravatar Ai Hoshino 3-7/+49
2023-08-21Fix typoGravatar Colin McDonnell 1-1/+1
2023-08-21Fix crypto.EC constructor (#4242)Gravatar dave caruso 2-3/+4
2023-08-21Implement `napi_ref_threadsafe_function` (#4156)Gravatar dave caruso 10-7/+65
2023-08-21feat: Implement Bun.inspect.custom (#4243)Gravatar dave caruso 6-8/+26
2023-08-21Fixes #4089 (#4105)Gravatar Jarred Sumner 3-36/+136
2023-08-2140x faster .toString('hex') (#4237)Gravatar Jarred Sumner 3-17/+105
2023-08-21Fix memory leak in `buffer.toString("hex")` (#4235)Gravatar Jarred Sumner 2-1/+6
2023-08-21Update README.md (#4232)Gravatar xxxhussein 1-1/+1
2023-08-21Add missing header changeGravatar Jarred Sumner 1-1/+1
2023-08-21Add LazyPropertyGravatar Jarred Sumner 1-0/+3
2023-08-21Fix BigIntStats generated classGravatar Jarred Sumner 1-1/+1
2023-08-21RegenerateGravatar Jarred Sumner 1-8/+15
2023-08-21Implement FileGravatar Jarred Sumner 12-12/+387
2023-08-20Fixes #1675 (#4230)Gravatar Jarred Sumner 8-70/+297
2023-08-20Implement `--inspect-brk` (#4222)Gravatar Jarred Sumner 17-41/+101
2023-08-20Fix test failures from 3a9a6c63a (#4231)Gravatar Jarred Sumner 4-32/+34
2023-08-20Fix(bundler): use different alias mappings based on the target. (#4163)Gravatar Ai Hoshino 8-18/+90
2023-08-19Update BunDebugger.cppGravatar Jarred Sumner 1-1/+3
2023-08-19Introduce `bun --inspect-wait`Gravatar Jarred Sumner 3-19/+47
2023-08-19misc non-posix fixesGravatar Jarred Sumner 2-3/+3
2023-08-19Update lockfile.mdGravatar Jarred Sumner 1-1/+8
2023-08-19Update lockfile.mdGravatar Jarred Sumner 1-4/+4
2023-08-19Update lockfile.mdGravatar Jarred Sumner 1-1/+29
2023-08-19Update Dockerfile-distroless (#4210)Gravatar Omar 1-0/+1
2023-08-19Fix symbol visibilityGravatar Jarred Sumner 1-0/+1
2023-08-19[napi] Implement `node_api_create_syntax_error`, `node_api_symbol_for`, `nod...Gravatar Jarred Sumner 5-1/+70
2023-08-19Fix crash impacting sharp & resvg (#4221)Gravatar Jarred Sumner 5-73/+73
2023-08-19Fixes #172 (#4220)Gravatar Jarred Sumner 7-9/+87
2023-08-19Add inline sourcemaps when `--inspect` is enabled (#4213)Gravatar Jarred Sumner 3-3/+64
2023-08-19tty `ReadStream`, `WriteStream`, and readline rawmode (#4179)Gravatar Dylan Conway 23-722/+821
2023-08-18Fix make headers (again)Gravatar Jarred Sumner 1-0/+2