aboutsummaryrefslogtreecommitdiff
path: root/Source
diff options
context:
space:
mode:
Diffstat (limited to 'Source')
-rw-r--r--Source/FieldSolver/ElectrostaticSolver.H3
-rw-r--r--Source/FieldSolver/ElectrostaticSolver.cpp14
2 files changed, 10 insertions, 7 deletions
diff --git a/Source/FieldSolver/ElectrostaticSolver.H b/Source/FieldSolver/ElectrostaticSolver.H
index 31601ca42..7de7a1bb5 100644
--- a/Source/FieldSolver/ElectrostaticSolver.H
+++ b/Source/FieldSolver/ElectrostaticSolver.H
@@ -8,6 +8,7 @@
#define ELECTROSTATICSOLVER_H_
#include <AMReX_Array.H>
+#include <AMReX_Geometry.H>
#include <AMReX_MultiFab.H>
#include <AMReX_MLMG.H>
#include <AMReX_REAL.H>
@@ -41,7 +42,7 @@ namespace ElectrostaticSolver {
bool has_non_periodic = false;
bool phi_EB_only_t = true;
- void definePhiBCs ();
+ void definePhiBCs (const amrex::Geometry& geom);
void buildParsers ();
void buildParsersEB ();
diff --git a/Source/FieldSolver/ElectrostaticSolver.cpp b/Source/FieldSolver/ElectrostaticSolver.cpp
index 6089cdbf2..3cb01efd3 100644
--- a/Source/FieldSolver/ElectrostaticSolver.cpp
+++ b/Source/FieldSolver/ElectrostaticSolver.cpp
@@ -103,7 +103,8 @@ WarpX::AddBoundaryField ()
// Store the boundary conditions for the field solver if they haven't been
// stored yet
- if (!m_poisson_boundary_handler.bcs_set) m_poisson_boundary_handler.definePhiBCs();
+ if (!m_poisson_boundary_handler.bcs_set)
+ m_poisson_boundary_handler.definePhiBCs(Geom(0));
// Allocate fields for charge and potential
const int num_levels = max_level + 1;
@@ -143,7 +144,8 @@ WarpX::AddSpaceChargeField (WarpXParticleContainer& pc)
// Store the boundary conditions for the field solver if they haven't been
// stored yet
- if (!m_poisson_boundary_handler.bcs_set) m_poisson_boundary_handler.definePhiBCs();
+ if (!m_poisson_boundary_handler.bcs_set)
+ m_poisson_boundary_handler.definePhiBCs(Geom(0));
#ifdef WARPX_DIM_RZ
WARPX_ALWAYS_ASSERT_WITH_MESSAGE(n_rz_azimuthal_modes == 1,
@@ -197,7 +199,8 @@ WarpX::AddSpaceChargeFieldLabFrame ()
// Store the boundary conditions for the field solver if they haven't been
// stored yet
- if (!m_poisson_boundary_handler.bcs_set) m_poisson_boundary_handler.definePhiBCs();
+ if (!m_poisson_boundary_handler.bcs_set)
+ m_poisson_boundary_handler.definePhiBCs(Geom(0));
#ifdef WARPX_DIM_RZ
WARPX_ALWAYS_ASSERT_WITH_MESSAGE(n_rz_azimuthal_modes == 1,
@@ -838,11 +841,9 @@ WarpX::computePhiTriDiagonal (const amrex::Vector<std::unique_ptr<amrex::MultiFa
phi[lev]->ParallelCopy(phi1d_mf, 0, 0, 1);
}
-void ElectrostaticSolver::PoissonBoundaryHandler::definePhiBCs ( )
+void ElectrostaticSolver::PoissonBoundaryHandler::definePhiBCs (const amrex::Geometry& geom)
{
#ifdef WARPX_DIM_RZ
- WarpX& warpx = WarpX::GetInstance();
- auto geom = warpx.Geom(0);
if (geom.ProbLo(0) == 0){
lobc[0] = LinOpBCType::Neumann;
dirichlet_flag[0] = false;
@@ -866,6 +867,7 @@ void ElectrostaticSolver::PoissonBoundaryHandler::definePhiBCs ( )
const int dim_start = 1;
#else
const int dim_start = 0;
+ amrex::ignore_unused(geom);
#endif
for (int idim=dim_start; idim<AMREX_SPACEDIM; idim++){
if ( WarpX::field_boundary_lo[idim] == FieldBoundaryType::Periodic