#include <PetscSNESSolver.h>

Public Types | |
| typedef std::shared_ptr< AMP::Solver::SolverStrategy > | shared_ptr |
| enum class | SolverStatus { ConvergedOnAbsTol , ConvergedOnRelTol , ConvergedUserCondition , MaxIterations , DivergedLineSearch , DivergedStepSize , DivergedFunctionCount , DivergedOnNan , DivergedNestedSolver , DivergedOther } |
Static Public Member Functions | |
| static std::unique_ptr< SolverStrategy > | createSolver (std::shared_ptr< SolverStrategyParameters > solverStrategyParameters) |
| static create routine that is used by SolverFactory | |
| static std::string | statusToString (SolverStatus status) |
Protected Member Functions | |
| virtual bool | checkStoppingCriteria (AMP::Scalar res_norm, bool check_iters=true) |
| void | getBaseFromInput (std::shared_ptr< AMP::Database > db) |
Static Protected Attributes | |
| static int | d_iInstanceId |
Private Member Functions | |
| void | createPetscObjects (std::shared_ptr< const SolverStrategyParameters > params) |
| std::shared_ptr< SolverStrategy > | createPreconditioner (std::shared_ptr< AMP::Database > pc_solver_db) |
| int | defaultLineSearchPreCheck (std::shared_ptr< AMP::LinearAlgebra::Vector > x, std::shared_ptr< AMP::LinearAlgebra::Vector > y, bool &changed_y) |
| void | destroyPetscObjects (void) |
| void | getFromInput (std::shared_ptr< const AMP::Database > db) |
| void | initializePetscObjects (void) |
| void | preApply (std::shared_ptr< const AMP::LinearAlgebra::Vector > v) |
| void | resetPetscObjects (std::shared_ptr< AMP::Solver::SolverStrategyParameters > params) |
| void | setConvergenceStatus (void) |
Static Private Member Functions | |
| static PetscErrorCode | apply (SNES snes, Vec x, Vec f, void *ctx) |
| static PetscErrorCode | applyPreconditioner (PC pc, Vec xin, Vec xout) |
| static bool | isVectorValid (std::shared_ptr< AMP::Operator::Operator > &op, AMP::LinearAlgebra::Vector::shared_ptr &v, const AMP_MPI &comm) |
| static PetscErrorCode | KSPPostSolve_SNESEW (KSP ksp, Vec b, Vec x, SNES snes) |
| static PetscErrorCode | KSPPreSolve_SNESEW (KSP ksp, Vec b, Vec x, SNES snes) |
| static PetscErrorCode | mffdCheckBounds (void *checkctx, Vec U, Vec a, PetscScalar *h) |
| static PetscErrorCode | setJacobian (SNES, Vec x, Mat A, Mat, void *ctx) |
| static PetscErrorCode | setupPreconditioner (PC pc) |
| static PetscErrorCode | wrapperLineSearchPreCheck (SNESLineSearch snes, Vec x, Vec y, PetscBool *changed_y, void *ctx) |
The PETScSNESSolver is a wrapper to the PETSc SNES solver which provides an implementation of the inexact Newton method.
Definition at line 53 of file PetscSNESSolver.h.
|
inherited |
Definition at line 30 of file SolverStrategy.h.
|
stronginherited |
| Enumerator | |
|---|---|
| ConvergedOnAbsTol | |
| ConvergedOnRelTol | |
| ConvergedUserCondition | |
| MaxIterations | |
| DivergedLineSearch | |
| DivergedStepSize | |
| DivergedFunctionCount | |
| DivergedOnNan | |
| DivergedNestedSolver | |
| DivergedOther | |
Definition at line 62 of file SolverStrategy.h.
| AMP::Solver::PetscSNESSolver::PetscSNESSolver | ( | ) |
default constructor, sets default values for member variables
|
explicit |
main constructor
| [in] | parameters | The parameters object contains a database objects containing the following fields: |
|
virtual |
Default destructor.
|
staticprivate |
|
overridevirtual |
Solve the system \(Au = 0\).
| [in] | f | : shared pointer to right hand side vector |
| [out] | u | : shared pointer to approximate computed solution |
Implements AMP::Solver::SolverStrategy.
|
staticprivate |
|
protectedvirtualinherited |
|
private |
|
private |
|
inlinestatic |
static create routine that is used by SolverFactory
Definition at line 113 of file PetscSNESSolver.h.
|
private |
|
inlineinherited |
Definition at line 208 of file SolverStrategy.h.
References AMP::Solver::SolverStrategy::d_dAbsoluteTolerance.
|
protectedinherited |
Return an integer value for the component for which bounds checking is enabled.
Definition at line 174 of file PetscSNESSolver.h.
References d_operatorComponentToEnableBoundsCheck.
Definition at line 225 of file SolverStrategy.h.
References AMP::Solver::SolverStrategy::ConvergedUserCondition, and AMP::Solver::SolverStrategy::d_ConvergenceStatus.
|
inlineinherited |
Definition at line 230 of file SolverStrategy.h.
References AMP::Solver::SolverStrategy::d_ConvergenceStatus.
|
inlineinherited |
Definition at line 232 of file SolverStrategy.h.
References AMP::Solver::SolverStrategy::d_ConvergenceStatus, and AMP::Solver::SolverStrategy::statusToString().
Get level of diagnostic information printed during iterations.
Definition at line 137 of file SolverStrategy.h.
References AMP::Solver::SolverStrategy::d_iDebugPrintInfoLevel.
|
inlineinherited |
Definition at line 269 of file SolverStrategy.h.
References AMP::Solver::SolverStrategy::d_exec_space.
|
private |
|
inlineinherited |
Definition at line 267 of file SolverStrategy.h.
References AMP::Solver::SolverStrategy::d_pFunctionScaling.
|
inlinevirtualinherited |
Definition at line 241 of file SolverStrategy.h.
References AMP::Solver::SolverStrategy::d_dInitialResidual.
|
inlinevirtualinherited |
Definition at line 243 of file SolverStrategy.h.
References AMP::Solver::SolverStrategy::d_iterationHistory.
Return the number of iterations taken by the solver to converge.
Definition at line 142 of file SolverStrategy.h.
References AMP::Solver::SolverStrategy::d_iNumberIterations.
|
inline |
Returns a shared pointer to the PetscKrylovSolver used internally for the linear solves
Definition at line 146 of file PetscSNESSolver.h.
References d_pKrylovSolver.
Referenced by getNestedSolver().
|
inline |
Definition at line 185 of file PetscSNESSolver.h.
References AMP_ASSERT, and d_lineSearchPreCheckPtr.
Definition at line 218 of file SolverStrategy.h.
References AMP::Solver::SolverStrategy::d_iMaxIterations.
|
inlineoverridevirtual |
Return a nested solver (eg preconditioner) if it exists. By default return a nullptr
Reimplemented from AMP::Solver::SolverStrategy.
Definition at line 148 of file PetscSNESSolver.h.
References getKrylovSolver().
Return the number of line search precheck attempts that were made for the current step
Definition at line 166 of file PetscSNESSolver.h.
References d_iNumberOfLineSearchPreCheckAttempts.
|
virtualinherited |
Return a shared pointer to the operator registered with the solver.
|
inlineinherited |
Definition at line 212 of file SolverStrategy.h.
References AMP::Solver::SolverStrategy::d_dRelativeTolerance.
|
inlinevirtualinherited |
Definition at line 239 of file SolverStrategy.h.
References AMP::Solver::SolverStrategy::d_dResidualNorm.
|
inline |
Return a shared pointer to the scratch vector used internally.
Definition at line 158 of file PetscSNESSolver.h.
References d_pScratchVector.
return the PETSc SNES solver object
Definition at line 135 of file PetscSNESSolver.h.
References d_SNESSolver.
|
inline |
Return a shared pointer to the solution vector
Definition at line 153 of file PetscSNESSolver.h.
References d_pSolutionVector.
|
inlineinherited |
Definition at line 266 of file SolverStrategy.h.
References AMP::Solver::SolverStrategy::d_pSolutionScaling.
Returns boolean to indicate whether the solver expects a Jacobian matrix to be provided or not.
Definition at line 141 of file PetscSNESSolver.h.
References d_bUsesJacobian.
|
virtualinherited |
Initialize the solution vector and potentially create internal vectors needed for solution
| [in] | parameters | The parameters object contains a database object. Currently there are no required fields for the database object. |
Reimplemented in AMP::Solver::BoomerAMGSolver, AMP::Solver::HypreBiCGSTABSolver, AMP::Solver::HypreGMRESSolver, AMP::Solver::HyprePCGSolver, AMP::Solver::HypreSolver, AMP::Solver::Flow1DSolver, AMP::Solver::PetscKrylovSolver, AMP::Solver::TrilinosMLSolver, AMP::Solver::TrilinosMueLuSolver, AMP::Solver::TrilinosNOXSolver, AMP::Solver::BiCGSTABSolver< T >, AMP::Solver::CGSolver< T >, AMP::Solver::DiagonalSolver< T >, AMP::Solver::GMRESRSolver< T >, AMP::Solver::GMRESSolver< T >, AMP::Solver::QMRCGSTABSolver< T >, and AMP::Solver::TFQMRSolver< T >.
|
staticprivate |
|
staticprivate |
|
staticprivate |
|
staticprivate |
|
private |
Definition at line 237 of file SolverStrategy.h.
|
overridevirtual |
Reimplemented from AMP::Solver::SolverStrategy.
|
inlinevirtualinherited |
Reimplemented in AMP::Solver::NonlinearKrylovAccelerator< T >.
Definition at line 220 of file SolverStrategy.h.
|
virtualinherited |
Register the operator that the solver will use during solves
| [in] | op | shared pointer to operator \(A()\) for equation \(A(u) = f\) |
Reimplemented in AMP::Solver::BiCGSTABSolver< T >, AMP::Solver::CGSolver< T >, AMP::Solver::DiagonalSolver< T >, AMP::Solver::GMRESSolver< T >, AMP::Solver::HypreSolver, AMP::Solver::PetscKrylovSolver, AMP::Solver::TFQMRSolver< T >, AMP::Solver::TrilinosMLSolver, AMP::Solver::TrilinosMueLuSolver, AMP::Solver::NonlinearKrylovAccelerator< T >, AMP::Solver::AMG::HybridGS, AMP::Solver::AMG::JacobiL1, and AMP::Solver::AMG::UASolver.
|
inlinevirtualinherited |
Registers a writer with the solver.
This function will register a writer with the solver. The solver may then register any vector components it "owns" with the writer.
| writer | The writer to register |
Definition at line 186 of file SolverStrategy.h.
References AMP::Solver::SolverStrategy::d_writer.
|
override |
pointer to line search function
|
virtualinherited |
Resets the solver internally with new parameters if necessary
| parameters | SolverStrategyParameters object that is NULL by default |
Reimplemented in AMP::Solver::TrilinosNOXSolver, AMP::Solver::BandedSolver, AMP::Solver::BoomerAMGSolver, AMP::Solver::HypreBiCGSTABSolver, AMP::Solver::HypreGMRESSolver, AMP::Solver::HyprePCGSolver, AMP::Solver::HypreSolver, AMP::Solver::TrilinosMLSolver, AMP::Solver::TrilinosMueLuSolver, AMP::Solver::CoupledFlow1DSolver, and AMP::Solver::Flow1DSolver.
|
virtualinherited |
Resets the operator registered with the solver with new parameters if necessary
| parameters | OperatorParameters object that is NULL by default |
Reimplemented in AMP::Solver::PetscKrylovSolver, AMP::Solver::BandedSolver, AMP::Solver::ColumnSolver, AMP::Solver::HypreSolver, AMP::Solver::CoupledFlow1DSolver, AMP::Solver::Flow1DSolver, AMP::Solver::PelletStackMechanicsSolver, AMP::Solver::TrilinosMLSolver, and AMP::Solver::TrilinosMueLuSolver.
|
private |
|
virtualinherited |
|
inlinevirtualinherited |
Definition at line 210 of file SolverStrategy.h.
References AMP::Solver::SolverStrategy::d_dAbsoluteTolerance.
|
inlineinherited |
for multiphysics problems it may be necessary to scale the solution
Definition at line 259 of file SolverStrategy.h.
References AMP::Solver::SolverStrategy::d_pFunctionScaling, and AMP::Solver::SolverStrategy::d_pSolutionScaling.
|
inlinevirtualinherited |
Specify level of diagnostic information printed during iterations.
| [in] | print_level | integer level value with permissible values 0 and higher. Setting to zero should provide minimial debugging information with higher values resulting in increasingly verbose information being printed out. |
Definition at line 132 of file SolverStrategy.h.
References AMP::Solver::SolverStrategy::d_iDebugPrintInfoLevel.
|
inlineinherited |
Definition at line 270 of file SolverStrategy.h.
References AMP::Solver::SolverStrategy::d_exec_space.
|
overridevirtual |
Initialize the solution vector by copying the initial guess vector
| [in] | initialGuess | shared pointer to the initial guess vector. |
Reimplemented from AMP::Solver::SolverStrategy.
Tell a solver that it is nested inside some outer solver.
Definition at line 166 of file SolverStrategy.h.
References AMP::Solver::SolverStrategy::d_bIsNestedSolver.
|
staticprivate |
| void AMP::Solver::PetscSNESSolver::setLineSearchPreCheck | ( | std::function< int(std::shared_ptr< AMP::LinearAlgebra::Vector >, std::shared_ptr< AMP::LinearAlgebra::Vector >, bool &)> | lineSearchPreCheckPtr | ) |
set the pointer to the user function that does the line search pre-check if provided
|
inlinevirtualinherited |
Definition at line 216 of file SolverStrategy.h.
References AMP::Solver::SolverStrategy::d_iMaxIterations.
|
inlinevirtualinherited |
Set a nested solver, eg, Krylov for Newton, preconditioner for Krylov etc. Null op in base class
Definition at line 159 of file SolverStrategy.h.
References AMP::Solver::SolverStrategy::d_pNestedSolver.
|
inlinevirtualinherited |
Definition at line 214 of file SolverStrategy.h.
References AMP::Solver::SolverStrategy::d_dRelativeTolerance.
|
staticprivate |
|
inlinevirtualinherited |
Tells the solver to use an initial guess of zero and not try to copy an initial guess into the solution vector
| [in] | use_zero_guess | boolean to specify whether zero initial guess should be used or not. |
Reimplemented in AMP::Solver::PetscKrylovSolver.
Definition at line 150 of file SolverStrategy.h.
References AMP::Solver::SolverStrategy::d_bUseZeroInitialGuess.
|
inlinestaticinherited |
Definition at line 75 of file SolverStrategy.h.
References AMP::Solver::SolverStrategy::ConvergedOnAbsTol, AMP::Solver::SolverStrategy::ConvergedOnRelTol, AMP::Solver::SolverStrategy::ConvergedUserCondition, AMP::Solver::SolverStrategy::DivergedFunctionCount, AMP::Solver::SolverStrategy::DivergedLineSearch, AMP::Solver::SolverStrategy::DivergedNestedSolver, AMP::Solver::SolverStrategy::DivergedOnNan, AMP::Solver::SolverStrategy::DivergedStepSize, and AMP::Solver::SolverStrategy::MaxIterations.
Referenced by AMP::Solver::SolverStrategy::getConvergenceStatusString().
|
inlineoverridevirtual |
Return the name of the solver.
Implements AMP::Solver::SolverStrategy.
Definition at line 109 of file PetscSNESSolver.h.
|
staticprivate |
Definition at line 295 of file SolverStrategy.h.
Definition at line 250 of file PetscSNESSolver.h.
Definition at line 245 of file PetscSNESSolver.h.
Definition at line 246 of file PetscSNESSolver.h.
Definition at line 294 of file SolverStrategy.h.
Referenced by AMP::Solver::SolverStrategy::setIsNestedSolver().
Definition at line 249 of file PetscSNESSolver.h.
Definition at line 248 of file PetscSNESSolver.h.
Definition at line 247 of file PetscSNESSolver.h.
Definition at line 244 of file PetscSNESSolver.h.
Referenced by getUsesJacobian().
Definition at line 292 of file SolverStrategy.h.
Referenced by AMP::Solver::OnePointSolver::apply(), and AMP::Solver::SolverStrategy::setZeroInitialGuess().
|
private |
Definition at line 283 of file PetscSNESSolver.h.
|
protectedinherited |
Definition at line 276 of file SolverStrategy.h.
Referenced by AMP::Solver::SolverStrategy::getConverged(), AMP::Solver::SolverStrategy::getConvergenceStatus(), and AMP::Solver::SolverStrategy::getConvergenceStatusString().
|
protectedinherited |
Definition at line 287 of file SolverStrategy.h.
Referenced by AMP::Solver::SolverStrategy::getAbsoluteTolerance(), and AMP::Solver::SolverStrategy::setAbsoluteTolerance().
|
protectedinherited |
Definition at line 304 of file SolverStrategy.h.
|
private |
int is for passing choice to PETSc
Definition at line 270 of file PetscSNESSolver.h.
|
private |
Definition at line 275 of file PetscSNESSolver.h.
|
private |
Definition at line 276 of file PetscSNESSolver.h.
|
private |
Definition at line 278 of file PetscSNESSolver.h.
|
private |
Definition at line 277 of file PetscSNESSolver.h.
|
private |
Definition at line 271 of file PetscSNESSolver.h.
|
protectedinherited |
Definition at line 285 of file SolverStrategy.h.
Referenced by AMP::Solver::SolverStrategy::getInitialResidual().
|
private |
Definition at line 272 of file PetscSNESSolver.h.
|
private |
Definition at line 264 of file PetscSNESSolver.h.
|
protectedinherited |
Definition at line 288 of file SolverStrategy.h.
Referenced by AMP::Solver::SolverStrategy::getRelativeTolerance(), and AMP::Solver::SolverStrategy::setRelativeTolerance().
|
protectedinherited |
Definition at line 284 of file SolverStrategy.h.
Referenced by AMP::Solver::SolverStrategy::getResidualNorm().
|
private |
Definition at line 256 of file PetscSNESSolver.h.
|
protectedinherited |
execution space for the solver
Definition at line 324 of file SolverStrategy.h.
Referenced by AMP::Solver::SolverStrategy::getExecutionSpace(), and AMP::Solver::SolverStrategy::setExecutionSpace().
|
protectedinherited |
Pointer to global database This is temporary fix and eventually either d_global_db or d_db should go away This is introduced to allow for solver factories to access databases in the global database for the construction of nested solvers
Definition at line 311 of file SolverStrategy.h.
|
protectedinherited |
Definition at line 290 of file SolverStrategy.h.
Referenced by AMP::Solver::SolverStrategy::getDebugPrintInfoLevel(), and AMP::Solver::SolverStrategy::setDebugPrintInfoLevel().
|
private |
string is for input
Definition at line 268 of file PetscSNESSolver.h.
|
staticprotectedinherited |
Definition at line 299 of file SolverStrategy.h.
|
private |
keeps track of linear iteration statistics over solver lifetime
Definition at line 281 of file PetscSNESSolver.h.
|
private |
Definition at line 252 of file PetscSNESSolver.h.
|
protectedinherited |
Definition at line 282 of file SolverStrategy.h.
Referenced by AMP::Solver::SolverStrategy::getMaxIterations(), and AMP::Solver::SolverStrategy::setMaxIterations().
|
protectedinherited |
Definition at line 280 of file SolverStrategy.h.
Referenced by AMP::Solver::SolverStrategy::getIterations().
|
private |
Definition at line 253 of file PetscSNESSolver.h.
Referenced by getNumberOfLineSearchPreCheckAttempts().
|
protectedinherited |
Definition at line 297 of file SolverStrategy.h.
|
protectedinherited |
keeps track of iteration statistics over solver lifetime
Definition at line 302 of file SolverStrategy.h.
Referenced by AMP::Solver::SolverStrategy::getIterationHistory().
Definition at line 293 of file PetscSNESSolver.h.
|
private |
Definition at line 242 of file PetscSNESSolver.h.
Referenced by getLineSearchPreCheckAdaptor().
|
protectedinherited |
memory storage address space
Definition at line 327 of file SolverStrategy.h.
|
private |
Definition at line 254 of file PetscSNESSolver.h.
Referenced by getBoundsCheckComponent().
|
private |
Definition at line 289 of file PetscSNESSolver.h.
|
protectedinherited |
Definition at line 314 of file SolverStrategy.h.
Referenced by AMP::Solver::SolverStrategy::getFunctionScaling(), and AMP::Solver::SolverStrategy::setComponentScalings().
|
private |
Definition at line 297 of file PetscSNESSolver.h.
Referenced by getKrylovSolver().
|
protectedinherited |
nested solver used by this solver
Definition at line 319 of file SolverStrategy.h.
Referenced by AMP::Solver::SolverStrategy::getNestedSolver(), and AMP::Solver::SolverStrategy::setNestedSolver().
|
protectedinherited |
Definition at line 316 of file SolverStrategy.h.
|
private |
Definition at line 286 of file PetscSNESSolver.h.
|
private |
Definition at line 287 of file PetscSNESSolver.h.
Referenced by getScratchVector().
|
protectedinherited |
Definition at line 313 of file SolverStrategy.h.
Referenced by AMP::Solver::SolverStrategy::getSolutionScaling(), and AMP::Solver::SolverStrategy::setComponentScalings().
|
private |
Definition at line 285 of file PetscSNESSolver.h.
Referenced by getSolution().
|
private |
Definition at line 267 of file PetscSNESSolver.h.
|
private |
Definition at line 259 of file PetscSNESSolver.h.
|
protectedinherited |
Definition at line 278 of file SolverStrategy.h.
|
private |
Definition at line 295 of file PetscSNESSolver.h.
|
private |
Definition at line 262 of file PetscSNESSolver.h.
Definition at line 291 of file PetscSNESSolver.h.
Referenced by getSNESSolver().
|
protectedinherited |
Definition at line 321 of file SolverStrategy.h.
Referenced by AMP::Solver::SolverStrategy::registerWriter().
|
Advanced Multi-Physics (AMP) Oak Ridge National Laboratory Idaho National Laboratory Los Alamos National Laboratory |
This page automatically produced from the source code by Last updated: Tue Mar 10 2026 13:06:45. Comments on this page |