aboutsummaryrefslogtreecommitdiff
path: root/Source/FieldSolver/FiniteDifferenceSolver
diff options
context:
space:
mode:
Diffstat (limited to 'Source/FieldSolver/FiniteDifferenceSolver')
-rw-r--r--Source/FieldSolver/FiniteDifferenceSolver/EvolveB.cpp21
-rw-r--r--Source/FieldSolver/FiniteDifferenceSolver/FiniteDifferenceSolver.H18
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;