1#ifndef OPAL_FIELD_SOLVER_H
2#define OPAL_FIELD_SOLVER_H
6#include "Manager/BaseManager.h"
7#include "Manager/FieldSolverBase.h"
10template <
typename T,
unsigned Dim>
26 std::shared_ptr<BCHandler_t> bcHandler)
27 : ippl::FieldSolverBase<
T,
Dim>(solver),
146 template <
typename Solver>
ippl::Field< T, Dim, Mesh_t< Dim >, Centering_t< Dim >, ViewArgs... > Field
ippl::Field< double, Dim, ViewArgs... > Field_t
ippl::Field< ippl::Vector< T, Dim >, Dim, ViewArgs... > VField_t
Handler for boundary conditions per spatial dimension.
VField_t< T, Dim > * getE() const
void runShiftedOpenSolver(const ippl::Vector< double, Dim > &shift)
Run an Open-solver solve with a shifted free-space Green's function.
void runSolver(bool force_skip_field_dump)
Execute the field solver for the current simulation state.
void setRho(Field_t< Dim > *rho)
void dumpVectField(std::string what)
void setPhi(Field< T, Dim > *phi)
void initSolver() override
void setBCHandler(std::shared_ptr< BCHandler_t > bcHandler)
void runSolver() override
~FieldSolver() override=default
void resetCallCounter()
Reset the solver call counter to zero.
void initSolverWithParams(const ippl::ParameterList &sp)
Field_t< Dim > * getRho()
Field< T, Dim > * getPhi() const
T getCouplingConstant() const
Get the solver's coupling constant.
void setE(VField_t< T, Dim > *E)
bool hasValidBCHandler() const
std::shared_ptr< BCHandler_t > getBCHandler() const
size_t call_counter_m
Counts number of times the solver has been called.
FieldSolver(std::string solver, Field_t< Dim > *rho, VField_t< T, Dim > *E, Field_t< Dim > *phi, std::shared_ptr< BCHandler_t > bcHandler)
std::shared_ptr< BCHandler_t > bcHandler_m
void dumpScalField(std::string what)
void setPotentialBCs()
Set boundary conditions for the electrostatic potential field.