/* Copyright 2020 * * This file is part of WarpX. * * License: BSD-3-Clause-LBNL */ #include "FiniteDifferenceSolver.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/TextMsg.H" #include "Utils/WarpXAlgorithmSelection.H" #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace amrex; void FiniteDifferenceSolver::EvolveG ( std::unique_ptr& Gfield, std::array,3> const& Bfield, amrex::Real const dt) { #ifdef WARPX_DIM_RZ // TODO Implement G update equation in RZ geometry amrex::ignore_unused(Gfield, Bfield, dt); #else // Select algorithm if (m_grid_type == GridType::Collocated) { EvolveGCartesian(Gfield, Bfield, dt); } else if (m_fdtd_algo == ElectromagneticSolverAlgo::Yee) { EvolveGCartesian(Gfield, Bfield, dt); } else if (m_fdtd_algo == ElectromagneticSolverAlgo::CKC) { EvolveGCartesian(Gfield, Bfield, dt); } else { amrex::Abort(Utils::TextMsg::Err("EvolveG: unknown FDTD algorithm")); } #endif } #ifndef WARPX_DIM_RZ template void FiniteDifferenceSolver::EvolveGCartesian ( std::unique_ptr& Gfield, std::array,3> const& Bfield, amrex::Real const dt) { amrex::Real constexpr c2 = PhysConst::c * PhysConst::c; #ifdef AMREX_USE_OMP #pragma omp parallel if (amrex::Gpu::notInLaunchRegion()) #endif // Loop over grids and over tiles within each grid for (amrex::MFIter mfi(*Gfield, TilingIfNotGPU()); mfi.isValid(); ++mfi) { // Extract field data for this grid/tile amrex::Array4 const& G = Gfield->array(mfi); amrex::Array4 const& Bx = Bfield[0]->array(mfi); amrex::Array4 const& By = Bfield[1]->array(mfi); amrex::Array4 const& Bz = Bfield[2]->array(mfi); // Extract stencil coefficients amrex::Real const* const AMREX_RESTRICT coefs_x = m_stencil_coefs_x.dataPtr(); amrex::Real const* const AMREX_RESTRICT coefs_y = m_stencil_coefs_y.dataPtr(); amrex::Real const* const AMREX_RESTRICT coefs_z = m_stencil_coefs_z.dataPtr(); const int n_coefs_x = m_stencil_coefs_x.size(); const int n_coefs_y = m_stencil_coefs_y.size(); const int n_coefs_z = m_stencil_coefs_z.size(); // Extract tilebox to loop over amrex::Box const& tf = mfi.tilebox(Gfield->ixType().toIntVect()); // Loop over cells and update G amrex::ParallelFor(tf, [=] AMREX_GPU_DEVICE (int i, int j, int k) { G(i,j,k) += c2 * dt * (T_Algo::UpwardDx(Bx, coefs_x, n_coefs_x, i, j, k) + T_Algo::UpwardDy(By, coefs_y, n_coefs_y, i, j, k) + T_Algo::UpwardDz(Bz, coefs_z, n_coefs_z, i, j, k)); }); } } #endif dylan/callback-fulfilled-after-rejection Unnamed repository; edit this file 'description' to name the repository.
aboutsummaryrefslogtreecommitdiff
AgeCommit message (Expand)AuthorFilesLines
2022-01-01Handle more edgecasesGravatar Jarred SUmner 1-47/+51
2022-01-01BumpGravatar Jarred SUmner 1-1/+1
2022-01-01Detect fast refresh from .bun if possibleGravatar Jarred SUmner 1-3/+10
2022-01-01[bun dev] Improve filesystem watcher & HMR reliability (Linux + a little macOS)Gravatar Jarred SUmner 10-482/+472
2021-12-31Update build.zigGravatar Jarred Sumner 1-1/+1
2021-12-31Set to an explicit glibcGravatar Jarred Sumner 1-0/+2
2021-12-31Attempt to fix watcher issue with repl.itGravatar Jarred Sumner 6-12/+29
2021-12-31little testbun-v0.0.64Gravatar Jarred Sumner 4-12/+19
2021-12-31bumpGravatar Jarred Sumner 4-2/+2
2021-12-31[devserver] Log more errors when a websocket connection failsGravatar Jarred Sumner 1-2/+9
2021-12-31Update http.zigGravatar Jarred Sumner 1-2/+2
2021-12-31[devserver] Case-insensitive request header comparison, which fixes issues wi...Gravatar Jarred Sumner 1-11/+3
2021-12-31Add unrolled case insensitive string comparisonGravatar Jarred Sumner 1-0/+21
2021-12-31Fix an edgecase that causes a crash in HTTP serverGravatar Jarred Sumner 1-1/+1
2021-12-31[bun install] Slightly more reliable HTTPGravatar Jarred Sumner 3-3/+4
2021-12-31Bump peechy againGravatar Jarred Sumner 2-1/+1
2021-12-30woopsGravatar Jarred Sumner 2-4/+1
2021-12-3012 -> 13Gravatar Jarred Sumner 1-2/+2
2021-12-30Update zig version in DockerfileGravatar Jarred Sumner 3-31/+30
2021-12-30Update settings.jsonGravatar Jarred Sumner 1-1/+1
2021-12-30[JavaScriptCore] Fix crash due to not requesting JIT permission by patchingGravatar Jarred Sumner 1-3/+9
2021-12-30Fix issue with headersGravatar Jarred Sumner 5-3/+17
2021-12-30fix occasional HTTP bugGravatar Jarred Sumner 1-0/+2
2021-12-30Update c.zigGravatar Jarred Sumner 1-1/+1
2021-12-30Update global.zigGravatar Jarred Sumner 1-1/+1
2021-12-30linuxGravatar Jarred Sumner 5-4/+402
2021-12-30Update io_linux.zigGravatar Jarred Sumner 1-1/+1
2021-12-30Update io_linux.zigGravatar Jarred Sumner 1-1/+1
2021-12-30_ => .Gravatar Jarred Sumner 3-5/+5
2021-12-30- => .Gravatar Jarred Sumner 4-6/+6
2021-12-30Update bun.lockbGravatar Jarred Sumner 1-0/+0
2021-12-30Remove network_threadGravatar Jarred Sumner 1-12/+11
2021-12-30linuxGravatar Jarred Sumner 2-6/+7
2021-12-30[internal] Move network_thread into http packageGravatar Jarred Sumner 17-435/+32
2021-12-30Upgrade to latest Zig, remove dependency on patched version of Zig (#96)Gravatar Jarred Sumner 154-6271/+4561
2021-12-29zig fmtGravatar Jarred Sumner 5-8/+3
2021-12-29Update MakefileGravatar Jarred Sumner 1-1/+0