OGS
anonymous_namespace{TimeLoop.cpp} Namespace Reference

Functions

void setEquationSystem (NumLib::NonlinearSolverBase &nonlinear_solver, NumLib::EquationSystem &eq_sys, NumLib::ConvergenceCriterion &conv_crit, NumLib::NonlinearSolverTag nl_tag)
 
bool isMonolithicProcess (ProcessLib::ProcessData const &process_data)
 

Function Documentation

◆ isMonolithicProcess()

bool anonymous_namespace{TimeLoop.cpp}::isMonolithicProcess ( ProcessLib::ProcessData const &  process_data)

◆ setEquationSystem()

void anonymous_namespace{TimeLoop.cpp}::setEquationSystem ( NumLib::NonlinearSolverBase nonlinear_solver,
NumLib::EquationSystem eq_sys,
NumLib::ConvergenceCriterion conv_crit,
NumLib::NonlinearSolverTag  nl_tag 
)

Definition at line 25 of file TimeLoop.cpp.

29 {
30  using Tag = NumLib::NonlinearSolverTag;
31  switch (nl_tag)
32  {
33  case Tag::Picard:
34  {
36  auto& eq_sys_ = static_cast<EqSys&>(eq_sys);
37  if (auto* nl_solver =
39  &nonlinear_solver);
40  nl_solver != nullptr)
41  {
42  nl_solver->setEquationSystem(eq_sys_, conv_crit);
43  }
44  else
45  {
46  OGS_FATAL(
47  "Could not cast nonlinear solver to Picard type solver.");
48  }
49  break;
50  }
51  case Tag::Newton:
52  {
54  auto& eq_sys_ = static_cast<EqSys&>(eq_sys);
55 
56  if (auto* nl_solver =
58  &nonlinear_solver);
59  nl_solver != nullptr)
60  {
61  nl_solver->setEquationSystem(eq_sys_, conv_crit);
62  }
63 #ifdef USE_PETSC
64  else if (auto* nl_solver =
65  dynamic_cast<NumLib::PETScNonlinearSolver*>(
66  &nonlinear_solver);
67  nl_solver != nullptr)
68  {
69  nl_solver->setEquationSystem(eq_sys_, conv_crit);
70  }
71 #endif // USE_PETSC
72  else
73  {
74  OGS_FATAL(
75  "Could not cast nonlinear solver to Newton type solver.");
76  }
77  break;
78  }
79  }
80 }
#define OGS_FATAL(...)
Definition: Error.h:26
NonlinearSolverTag
Tag used to specify which nonlinear solver will be used.
Definition: Types.h:20

References OGS_FATAL.

Referenced by ProcessLib::calculateNonEquilibriumInitialResiduum(), and ProcessLib::solveOneTimeStepOneProcess().