|
OPALX (Object Oriented Parallel Accelerator Library for Exascale) MINIorX
OPALX
|
A solver for the poisson equation using finite element methods and Conjugate Gradient (CG) More...
#include <PreconditionedFEMPoissonSolver.h>


Public Types | |
| using | Base = Poisson< FieldLHS, FieldRHS > |
| using | MeshType = typename FieldRHS::Mesh_t |
| using | PCGSolverAlgorithm_t = PCG< lhs_type, lhs_type, lhs_type, lhs_type, lhs_type, FieldLHS, FieldRHS > |
| using | ElementType = std::conditional_t< Dim==1, ippl::EdgeElement< Tlhs >, std::conditional_t< Dim==2, ippl::QuadrilateralElement< Tlhs >, ippl::HexahedralElement< Tlhs > > > |
| using | QuadratureType = GaussJacobiQuadrature< Tlhs, 5, ElementType > |
| using | LagrangeType = LagrangeSpace< Tlhs, Dim, 1, ElementType, QuadratureType, FieldLHS, FieldRHS > |
| using | lhs_type = FieldLHS |
| using | rhs_type = FieldRHS |
| enum | OutputType |
| using | Trhs = typename FieldRHS::value_type |
| using | grad_type = Field< Vector< Tlhs, Dim >, Dim, Mesh, Centering > |
Public Member Functions | |
| PreconditionedFEMPoissonSolver () | |
| PreconditionedFEMPoissonSolver (lhs_type &lhs, rhs_type &rhs) | |
| void | setRhs (rhs_type &rhs) override |
| void | solve () override |
| Solve the poisson equation using finite element methods. More... | |
| int | getIterationCount () |
| Query how many iterations were required to obtain the solution the last time this solver was used. More... | |
| Tlhs | getResidue () const |
| Query the residue. More... | |
| template<typename F > | |
| Tlhs | getL2Error (const F &analytic) |
| Query the L2-norm error compared to a given (analytical) sol. More... | |
| Tlhs | getAvg (bool Vol=false) |
| Query the average of the solution. More... | |
| void | updateParameter (const std::string &key, const T &value) |
| void | updateParameters (const ParameterList ¶ms) |
| void | mergeParameters (const ParameterList ¶ms) |
| void | setLhs (lhs_type &lhs) |
| virtual void | setRhs (rhs_type &rhs) |
| virtual MField_t * | getHessian () |
| void | setGradient (grad_type &grad) |
Protected Member Functions | |
| virtual void | setDefaultParameters () override |
Private Types | |
| using | Tlhs = typename FieldLHS::value_type |
| typedef FieldLHS::Mesh_t | Mesh |
| typedef FieldLHS::Centering_t | Centering |
| typedef Mesh::matrix_type | Matrix_t |
| typedef Field< Matrix_t, Dim, Mesh, Centering > | MField_t |
Static Private Attributes | |
| static constexpr unsigned | Dim = FieldLHS::dim |
A solver for the poisson equation using finite element methods and Conjugate Gradient (CG)
| FieldLHS | field type for the left hand side |
| FieldRHS | field type for the right hand side |
Definition at line 39 of file PreconditionedFEMPoissonSolver.h.
| using ippl::PreconditionedFEMPoissonSolver< FieldLHS, FieldRHS >::Base = Poisson<FieldLHS, FieldRHS> |
Definition at line 44 of file PreconditionedFEMPoissonSolver.h.
|
privateinherited |
| using ippl::PreconditionedFEMPoissonSolver< FieldLHS, FieldRHS >::ElementType = std::conditional_t<Dim == 1, ippl::EdgeElement<Tlhs>, std::conditional_t<Dim == 2, ippl::QuadrilateralElement<Tlhs>, ippl::HexahedralElement<Tlhs> >> |
Definition at line 53 of file PreconditionedFEMPoissonSolver.h.
| using ippl::PreconditionedFEMPoissonSolver< FieldLHS, FieldRHS >::LagrangeType = LagrangeSpace<Tlhs, Dim, 1, ElementType, QuadratureType, FieldLHS, FieldRHS> |
Definition at line 60 of file PreconditionedFEMPoissonSolver.h.
| using ippl::Poisson< FieldLHS, FieldRHS >::lhs_type = FieldLHS |
|
privateinherited |
|
privateinherited |
| using ippl::PreconditionedFEMPoissonSolver< FieldLHS, FieldRHS >::MeshType = typename FieldRHS::Mesh_t |
Definition at line 46 of file PreconditionedFEMPoissonSolver.h.
| using ippl::PreconditionedFEMPoissonSolver< FieldLHS, FieldRHS >::PCGSolverAlgorithm_t = PCG<lhs_type, lhs_type, lhs_type, lhs_type, lhs_type, FieldLHS, FieldRHS> |
Definition at line 49 of file PreconditionedFEMPoissonSolver.h.
| using ippl::PreconditionedFEMPoissonSolver< FieldLHS, FieldRHS >::QuadratureType = GaussJacobiQuadrature<Tlhs, 5, ElementType> |
Definition at line 58 of file PreconditionedFEMPoissonSolver.h.
| using ippl::Poisson< FieldLHS, FieldRHS >::rhs_type = FieldRHS |
|
private |
Definition at line 41 of file PreconditionedFEMPoissonSolver.h.
|
inherited |
|
inherited |
|
inline |
Definition at line 63 of file PreconditionedFEMPoissonSolver.h.
|
inline |
Definition at line 71 of file PreconditionedFEMPoissonSolver.h.
References ippl::LagrangeSpace< T, Dim, Order, ElementType, QuadratureType, FieldLHS, FieldRHS >::evaluateLoadVector(), IpplTimings::getTimer(), ippl::PreconditionedFEMPoissonSolver< FieldLHS, FieldRHS >::lagrangeSpace_m, ippl::PreconditionedFEMPoissonSolver< FieldLHS, FieldRHS >::setDefaultParameters(), IpplTimings::startTimer(), and IpplTimings::stopTimer().

|
inline |
Query the average of the solution.
| vol | Boolean indicating whether we divide by volume or not |
Definition at line 277 of file PreconditionedFEMPoissonSolver.h.
References ippl::LagrangeSpace< T, Dim, Order, ElementType, QuadratureType, FieldLHS, FieldRHS >::computeAvg(), ippl::PreconditionedFEMPoissonSolver< FieldLHS, FieldRHS >::lagrangeSpace_m, and ippl::Poisson< FieldLHS, FieldLHS >::lhs_mp.

|
inlinevirtualinherited |
|
inline |
Query how many iterations were required to obtain the solution the last time this solver was used.
Definition at line 254 of file PreconditionedFEMPoissonSolver.h.
References ippl::CG< OperatorRet, LowerRet, UpperRet, UpperLowerRet, InverseDiagRet, DiagRet, FieldLHS, FieldRHS >::getIterationCount(), and ippl::PreconditionedFEMPoissonSolver< FieldLHS, FieldRHS >::pcg_algo_m.

|
inline |
Query the L2-norm error compared to a given (analytical) sol.
Definition at line 267 of file PreconditionedFEMPoissonSolver.h.
References ippl::LagrangeSpace< T, Dim, Order, ElementType, QuadratureType, FieldLHS, FieldRHS >::computeErrorL2(), ippl::PreconditionedFEMPoissonSolver< FieldLHS, FieldRHS >::lagrangeSpace_m, and ippl::Poisson< FieldLHS, FieldLHS >::lhs_mp.

|
inline |
Query the residue.
Definition at line 260 of file PreconditionedFEMPoissonSolver.h.
References ippl::CG< OperatorRet, LowerRet, UpperRet, UpperLowerRet, InverseDiagRet, DiagRet, FieldLHS, FieldRHS >::getResidue(), and ippl::PreconditionedFEMPoissonSolver< FieldLHS, FieldRHS >::pcg_algo_m.

|
inlineinherited |
|
inlineoverrideprotectedvirtual |
Utility function for initializing a solver's default parameters (to be overridden for each base class)
Reimplemented from ippl::Poisson< FieldLHS, FieldLHS >.
Definition at line 292 of file PreconditionedFEMPoissonSolver.h.
References ippl::ParameterList::add(), Physics::e, and ippl::Poisson< FieldLHS, FieldLHS >::params_m.
Referenced by ippl::PreconditionedFEMPoissonSolver< FieldLHS, FieldRHS >::PreconditionedFEMPoissonSolver().

|
inlineinherited |
|
inlineinherited |
|
inlinevirtualinherited |
|
inlineoverride |
Definition at line 92 of file PreconditionedFEMPoissonSolver.h.
References ippl::LagrangeSpace< T, Dim, Order, ElementType, QuadratureType, FieldLHS, FieldRHS >::evaluateLoadVector(), ippl::LagrangeSpace< T, Dim, Order, ElementType, QuadratureType, FieldLHS, FieldRHS >::initialize(), ippl::PreconditionedFEMPoissonSolver< FieldLHS, FieldRHS >::lagrangeSpace_m, and ippl::Poisson< FieldLHS, FieldRHS >::setRhs().

|
inlineoverridevirtual |
Solve the poisson equation using finite element methods.
The problem is described by -laplace(lhs) = rhs
Implements ippl::Poisson< FieldLHS, FieldLHS >.
Definition at line 108 of file PreconditionedFEMPoissonSolver.h.
References ippl::BConds< Field, Dim >::assignGhostToPhysical(), ippl::CONSTANT_FACE, ippl::LagrangeSpace< T, Dim, Order, ElementType, QuadratureType, FieldLHS, FieldRHS >::evaluateAx(), ippl::LagrangeSpace< T, Dim, Order, ElementType, QuadratureType, FieldLHS, FieldRHS >::evaluateAx_diag(), ippl::LagrangeSpace< T, Dim, Order, ElementType, QuadratureType, FieldLHS, FieldRHS >::evaluateAx_inversediag(), ippl::LagrangeSpace< T, Dim, Order, ElementType, QuadratureType, FieldLHS, FieldRHS >::evaluateAx_lift(), ippl::LagrangeSpace< T, Dim, Order, ElementType, QuadratureType, FieldLHS, FieldRHS >::evaluateAx_lower(), ippl::LagrangeSpace< T, Dim, Order, ElementType, QuadratureType, FieldLHS, FieldRHS >::evaluateAx_upper(), ippl::LagrangeSpace< T, Dim, Order, ElementType, QuadratureType, FieldLHS, FieldRHS >::evaluateAx_upperlower(), ippl::FiniteElementSpace< T, Dim, NumElementDOFs, ElementType, QuadratureType, FieldLHS, FieldRHS >::getElementMeshVertexPoints(), IpplTimings::getTimer(), ippl::grad(), ippl::Poisson< FieldLHS, FieldRHS >::GRAD, ippl::Poisson< FieldLHS, FieldLHS >::grad_mp, ippl::PreconditionedFEMPoissonSolver< FieldLHS, FieldRHS >::lagrangeSpace_m, ippl::Poisson< FieldLHS, FieldLHS >::lhs_mp, ippl::Poisson< FieldLHS, FieldLHS >::params_m, ippl::PreconditionedFEMPoissonSolver< FieldLHS, FieldRHS >::pcg_algo_m, ippl::PreconditionedFEMPoissonSolver< FieldLHS, FieldRHS >::refElement_m, ippl::Poisson< FieldLHS, FieldLHS >::rhs_mp, ippl::CG< OperatorRet, LowerRet, UpperRet, UpperLowerRet, InverseDiagRet, DiagRet, FieldLHS, FieldRHS >::setOperator(), ippl::PCG< OperatorRet, LowerRet, UpperRet, UpperLowerRet, InverseDiagRet, DiagRet, FieldLHS, FieldRHS >::setPreconditioner(), ippl::PreconditionedFEMPoissonSolver< FieldLHS, FieldRHS >::solve(), IpplTimings::startTimer(), and IpplTimings::stopTimer().
Referenced by ippl::PreconditionedFEMPoissonSolver< FieldLHS, FieldRHS >::solve().

|
inlineinherited |
Update one of the solver's parameters
| key | The parameter key |
| value | The new value |
| IpplException | Fails if there is no existing parameter with the given key |
|
inlineinherited |
Updates all solver parameters based on values in another parameter set
| params | Parameter list with updated values |
| IpplException | Fails if the provided parameter list includes keys not already present |
|
staticconstexprprivate |
Definition at line 40 of file PreconditionedFEMPoissonSolver.h.
|
protectedinherited |
|
protected |
Definition at line 299 of file PreconditionedFEMPoissonSolver.h.
Referenced by ippl::PreconditionedFEMPoissonSolver< FieldLHS, FieldRHS >::getAvg(), ippl::PreconditionedFEMPoissonSolver< FieldLHS, FieldRHS >::getL2Error(), ippl::PreconditionedFEMPoissonSolver< FieldLHS, FieldRHS >::PreconditionedFEMPoissonSolver(), ippl::PreconditionedFEMPoissonSolver< FieldLHS, FieldRHS >::setRhs(), and ippl::PreconditionedFEMPoissonSolver< FieldLHS, FieldRHS >::solve().
|
protectedinherited |
|
protectedinherited |
|
protected |
Definition at line 290 of file PreconditionedFEMPoissonSolver.h.
Referenced by ippl::PreconditionedFEMPoissonSolver< FieldLHS, FieldRHS >::getIterationCount(), ippl::PreconditionedFEMPoissonSolver< FieldLHS, FieldRHS >::getResidue(), and ippl::PreconditionedFEMPoissonSolver< FieldLHS, FieldRHS >::solve().
|
protected |
Definition at line 298 of file PreconditionedFEMPoissonSolver.h.
|
protected |
Definition at line 297 of file PreconditionedFEMPoissonSolver.h.
Referenced by ippl::PreconditionedFEMPoissonSolver< FieldLHS, FieldRHS >::solve().
|
protectedinherited |