https://mooseframework.inl.gov
Functions
NavierStokesProblem.C File Reference

Go to the source code of this file.

Functions

 registerMooseObject ("NavierStokesApp", NavierStokesProblem)
 
 _commute_lsc (getParam< bool >("commute_lsc"))
 
 _mass_matrix (getParam< TagName >("mass_matrix"))
 
 _L_matrix (getParam< TagName >("L_matrix"))
 
 _have_mass_matrix (!_mass_matrix.empty())
 
 _have_L_matrix (!_L_matrix.empty())
 
 _pressure_mass_matrix_as_pre (getParam< bool >("use_pressure_mass_matrix"))
 
 _schur_fs_index (getParam< std::vector< unsigned int >>("schur_fs_index"))
 
PetscErrorCode navierStokesKSPPreSolve (KSP root_ksp, Vec, Vec, void *context)
 

Function Documentation

◆ _commute_lsc()

_commute_lsc ( getParam< bool >  "commute_lsc")

Referenced by _schur_fs_index().

◆ _have_L_matrix()

_have_L_matrix ( !_L_matrix.  empty())

Referenced by _schur_fs_index().

◆ _have_mass_matrix()

_have_mass_matrix ( !_mass_matrix.  empty())

Referenced by _schur_fs_index().

◆ _L_matrix()

_L_matrix ( getParam< TagName >  "L_matrix")

◆ _mass_matrix()

_mass_matrix ( getParam< TagName >  "mass_matrix")

◆ _pressure_mass_matrix_as_pre()

_pressure_mass_matrix_as_pre ( getParam< bool >  "use_pressure_mass_matrix")

Referenced by _schur_fs_index().

◆ _schur_fs_index()

_schur_fs_index ( getParam< std::vector< unsigned int >>  "schur_fs_index")

Definition at line 60 of file NavierStokesProblem.C.

61 {
62  if (_commute_lsc)
63  {
64  if (!_have_mass_matrix)
65  paramError("mass_matrix",
66  "A pressure mass matrix must be provided if we are commuting the LSC commutator.");
67  if (!_have_L_matrix)
68  paramError("L_matrix",
69  "A matrix corresponding to the viscous component of the momentum equation must be "
70  "provided if we are commuting the LSC commutator.");
71  }
72  else if (_have_L_matrix)
73  paramError("L_matrix",
74  "If not commuting the LSC commutator, then the 'L_matrix' should not be provided "
75  "because it will not be used. For Elman LSC preconditioning, L will be computed "
76  "automatically using system matrix data (e.g. the off-diagonal blocks in the "
77  "velocity-pressure system).");
78 
80  paramError("mass_matrix",
81  "If 'use_pressure_mass_matrix', then a pressure 'mass_matrix' must be provided");
82 }

◆ navierStokesKSPPreSolve()

PetscErrorCode navierStokesKSPPreSolve ( KSP  root_ksp,
Vec  ,
Vec  ,
void context 
)

Definition at line 342 of file NavierStokesProblem.C.

Referenced by NavierStokesProblem::initPetscOutputAndSomeSolverSettings().

343 {
345 
346  auto * ns_problem = static_cast<NavierStokesProblem *>(context);
347  ns_problem->clearIndexSets();
348  auto schur_ksp = ns_problem->findSchurKSP(root_ksp, 0);
349  ns_problem->setupLSCMatrices(schur_ksp);
350 
351  PetscFunctionReturn(PETSC_SUCCESS);
352 }
void clearIndexSets()
Clear the field split index sets.
PetscFunctionBegin
A problem that handles Schur complement preconditioning of the incompressible Navier-Stokes equations...
PetscFunctionReturn(LIBMESH_PETSC_SUCCESS)

◆ registerMooseObject()

registerMooseObject ( "NavierStokesApp"  ,
NavierStokesProblem   
)