diff options
Diffstat (limited to 'Source/FieldSolver/FiniteDifferenceSolver')
-rw-r--r-- | Source/FieldSolver/FiniteDifferenceSolver/EvolveB.cpp | 21 | ||||
-rw-r--r-- | Source/FieldSolver/FiniteDifferenceSolver/FiniteDifferenceSolver.H | 18 |
2 files changed, 21 insertions, 18 deletions
diff --git a/Source/FieldSolver/FiniteDifferenceSolver/EvolveB.cpp b/Source/FieldSolver/FiniteDifferenceSolver/EvolveB.cpp index 1bba6b317..33253c986 100644 --- a/Source/FieldSolver/FiniteDifferenceSolver/EvolveB.cpp +++ b/Source/FieldSolver/FiniteDifferenceSolver/EvolveB.cpp @@ -1,4 +1,5 @@ -// TODO include statements +#include<FiniteDifferenceAlgorithms/YeeAlgorithm.H> +#include<FiniteDifferenceSolver.H> FiniteDifferenceSolver::EvolveB ( VectorField Bfield, ConstVectorField Efield, @@ -7,8 +8,8 @@ FiniteDifferenceSolver::EvolveB ( VectorField Bfield, // but we compile code for each algorithm, using templates) if (fdtd_algo == MaxwellSolverAlgo::Yee){ EvolveBwithAlgo <YeeAlgorithm> ( Bfield, Efield, dt ); - } else if (fdtd_algo == MaxwellSolverAlgo::CKC) { - EvolveBwithAlgo <CKCAlgorithm> ( Bfield, Efield, dt ); +// } else if (fdtd_algo == MaxwellSolverAlgo::CKC) { +// EvolveBwithAlgo <CKCAlgorithm> ( Bfield, Efield, dt ); } else { amrex::Abort("Unknown algorithm"); } @@ -23,7 +24,7 @@ FiniteDifferenceSolver::EvolveBwithAlgo ( VectorField Bfield, #ifdef _OPENMP #pragma omp parallel if (Gpu::notInLaunchRegion()) #endif - for ( MFIter mfi(*Bx, TilingIfNotGPU()); mfi.isValid(); ++mfi ) { + for ( MFIter mfi(*Bfield[0], TilingIfNotGPU()); mfi.isValid(); ++mfi ) { // Extract field data for this grid/tile auto const& Bx = Bfield[0]->array(mfi); @@ -47,18 +48,18 @@ FiniteDifferenceSolver::EvolveBwithAlgo ( VectorField Bfield, amrex::ParallelFor(tbx, tby, tbz, [=] AMREX_GPU_DEVICE (int i, int j, int k){ - Bx(i, j, k) += dt * algo::UpwardDz( Ey, i, j, k, coefs_z) - - dt * algo::UpwardDy( Ez, i, j, k, coefs_y); + Bx(i, j, k) += dt * algo::UpwardDz(Ey, i, j, k, coefs_z) + - dt * algo::UpwardDy(Ez, i, j, k, coefs_y); }, [=] AMREX_GPU_DEVICE (int i, int j, int k){ - By(i, j, k) += dt * algo::UpwardDx( Ez, i, j, k, coefs_x) - - dt * algo::UpwardDz( Ex, i, j, k, coefs_z); + By(i, j, k) += dt * algo::UpwardDx(Ez, i, j, k, coefs_x) + - dt * algo::UpwardDz(Ex, i, j, k, coefs_z); }, [=] AMREX_GPU_DEVICE (int i, int j, int k){ - Bz(i, j, k) += dt * algo::UpwardDy( Ex, i, j, k, coefs_y) - - dt * algo::UpwardDx( Ey, i, j, k, coefs_x); + Bz(i, j, k) += dt * algo::UpwardDy(Ex, i, j, k, coefs_y) + - dt * algo::UpwardDx(Ey, i, j, k, coefs_x); } ); diff --git a/Source/FieldSolver/FiniteDifferenceSolver/FiniteDifferenceSolver.H b/Source/FieldSolver/FiniteDifferenceSolver/FiniteDifferenceSolver.H index 98a34e634..1aa9c7e38 100644 --- a/Source/FieldSolver/FiniteDifferenceSolver/FiniteDifferenceSolver.H +++ b/Source/FieldSolver/FiniteDifferenceSolver/FiniteDifferenceSolver.H @@ -1,6 +1,8 @@ #ifndef WARPX_FINITE_DIFFERENCE_SOLVER_H_ #define WARPX_FINITE_DIFFERENCE_SOLVER_H_ +#include<FiniteDifferenceAlgorithms/YeeAlgorithm.H> + /** * \brief Top-level class for the electromagnetic finite-difference solver * @@ -15,14 +17,17 @@ class FiniteDifferenceSolver // Constructor void FiniteDifferenceSolver::FiniteDifferenceSolver ( std::array<Real,3> cell_size ) { - // Select algorithm (The choice of algorithm is a runtime option, - // but we compile code for each algorithm, using templates) + + // Register the type of finite-difference algorithm + fdtd_algo = WarpX::maxwell_fdtd_solver_id; + + // Calculate coefficients of finite-difference stencil if (fdtd_algo == MaxwellSolverAlgo::Yee){ YeeAlgorithm::InitializeStencilCoefficients( cell_size, stencil_coefs_x, stencil_coefs_y, stencil_coefs_z ); - } else if (fdtd_algo == MaxwellSolverAlgo::CKC) { - CKCAlgorithm::InitializeStencilCoefficients( cell_size, - stencil_coefs_x, stencil_coefs_y, stencil_coefs_z ); +// } else if (fdtd_algo == MaxwellSolverAlgo::CKC) { +// CKCAlgorithm::InitializeStencilCoefficients( cell_size, +// stencil_coefs_x, stencil_coefs_y, stencil_coefs_z ); } else { amrex::Abort("Unknown algorithm"); } @@ -31,9 +36,6 @@ class FiniteDifferenceSolver void EvolveB ( VectorField Bfield, ConstVectorField Efield, amrex::Real dt ) const; - - }; - private: int fdtd_algo; |