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 62 of file NavierStokesProblem.C.

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

◆ navierStokesKSPPreSolve()

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

Definition at line 364 of file NavierStokesProblem.C.

Referenced by NavierStokesProblem::initPetscOutputAndSomeSolverSettings().

365 {
367 
368  auto * ns_problem = static_cast<NavierStokesProblem *>(context);
369  ns_problem->clearIndexSets();
370  auto schur_ksp = ns_problem->findSchurKSP(root_ksp, 0);
371  ns_problem->setupLSCMatrices(schur_ksp);
372 
373  PetscFunctionReturn(PETSC_SUCCESS);
374 }
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   
)