Split

Field split based preconditioner for nonlinear solver.

The Split class is used to create split-based preconditioners. The field split based preconditioner is entirely set up by defining the relevant PETSc options. This syntax offers shorthands for some of the parameters that may be passed to PETSc, such as for splitting between variables, blocks or sidesets. For more information, please refer to FSP.

Input Parameters

  • blocksMesh blocks Split operates on (omitting this implies "all blocks"

    C++ Type:std::vector<SubdomainName>

    Unit:(no unit assumed)

    Controllable:No

    Description:Mesh blocks Split operates on (omitting this implies "all blocks"

  • petsc_optionsPETSc flags for the FieldSplit solver

    C++ Type:MultiMooseEnum

    Unit:(no unit assumed)

    Options:-dm_moose_print_embedding, -dm_view, -KSP_CONVERGED_REASON, -KSP_GMRES_MODIFIEDGRAMSCHMIDT, -KSP_MONITOR, -KSP_MONITOR_SNES_LG, -SNES_KSP_EW, -KSP_SNES_EW, -SNES_CONVERGED_REASON, -SNES_KSP, -SNES_LINESEARCH_MONITOR, -SNES_MF, -SNES_MF_OPERATOR, -SNES_MONITOR, -SNES_TEST_DISPLAY, -SNES_VIEW, -SNES_MONITOR_CANCEL

    Controllable:No

    Description:PETSc flags for the FieldSplit solver

  • petsc_options_inamePETSc option names for the FieldSplit solver

    C++ Type:MultiMooseEnum

    Unit:(no unit assumed)

    Options:-mat_fd_coloring_err, -mat_fd_type, -mat_mffd_type, -pc_asm_overlap, -pc_factor_levels, -pc_factor_mat_ordering_type, -pc_hypre_boomeramg_grid_sweeps_all, -pc_hypre_boomeramg_max_iter, -pc_hypre_boomeramg_strong_threshold, -pc_hypre_type, -pc_type, -sub_pc_type, -KSP_ATOL, -KSP_GMRES_RESTART, -KSP_MAX_IT, -KSP_PC_SIDE, -KSP_RTOL, -KSP_TYPE, -SUB_KSP_TYPE, -SNES_ATOL, -SNES_LINESEARCH_TYPE, -SNES_LS, -SNES_MAX_IT, -SNES_RTOL, -SNES_DIVERGENCE_TOLERANCE, -SNES_TYPE

    Controllable:No

    Description:PETSc option names for the FieldSplit solver

  • petsc_options_valuePETSc option values for the FieldSplit solver

    C++ Type:std::vector<std::string>

    Unit:(no unit assumed)

    Controllable:No

    Description:PETSc option values for the FieldSplit solver

  • schur_preSType of Schur complement preconditioner matrix

    Default:S

    C++ Type:MooseEnum

    Unit:(no unit assumed)

    Options:S, Sp, A11

    Controllable:No

    Description:Type of Schur complement preconditioner matrix

  • schur_typefullType of Schur complement

    Default:full

    C++ Type:MooseEnum

    Unit:(no unit assumed)

    Options:diag, upper, lower, full

    Controllable:No

    Description:Type of Schur complement

  • sidesSidesets Split operates on (omitting this implies "no sidesets"

    C++ Type:std::vector<BoundaryName>

    Unit:(no unit assumed)

    Controllable:No

    Description:Sidesets Split operates on (omitting this implies "no sidesets"

  • splittingThe names of the splits (subsystems) in the decomposition of this split

    C++ Type:std::vector<std::string>

    Unit:(no unit assumed)

    Controllable:No

    Description:The names of the splits (subsystems) in the decomposition of this split

  • splitting_typeadditiveSplit decomposition type

    Default:additive

    C++ Type:MooseEnum

    Unit:(no unit assumed)

    Options:additive, multiplicative, symmetric_multiplicative, schur

    Controllable:No

    Description:Split decomposition type

  • unside_by_var_boundary_nameA map from boundary name to unside by variable, e.g. only unside for a given variable.

    C++ Type:std::vector<BoundaryName>

    Unit:(no unit assumed)

    Controllable:No

    Description:A map from boundary name to unside by variable, e.g. only unside for a given variable.

  • unside_by_var_var_nameA map from boundary name to unside by variable, e.g. only unside for a given variable.

    C++ Type:std::vector<NonlinearVariableName>

    Unit:(no unit assumed)

    Controllable:No

    Description:A map from boundary name to unside by variable, e.g. only unside for a given variable.

  • unsidesSidesets Split excludes (omitting this implies "do not exclude any sidesets"

    C++ Type:std::vector<BoundaryName>

    Unit:(no unit assumed)

    Controllable:No

    Description:Sidesets Split excludes (omitting this implies "do not exclude any sidesets"

  • varsVariables Split operates on (omitting this implies "all variables"

    C++ Type:std::vector<NonlinearVariableName>

    Unit:(no unit assumed)

    Controllable:No

    Description:Variables Split operates on (omitting this implies "all variables"

Optional Parameters

  • control_tagsAdds user-defined labels for accessing object parameters via control logic.

    C++ Type:std::vector<std::string>

    Unit:(no unit assumed)

    Controllable:No

    Description:Adds user-defined labels for accessing object parameters via control logic.

  • enableTrueSet the enabled status of the MooseObject.

    Default:True

    C++ Type:bool

    Unit:(no unit assumed)

    Controllable:No

    Description:Set the enabled status of the MooseObject.

Advanced Parameters