https://mooseframework.inl.gov
Loading...
Searching...
No Matches
Public Types | Public Member Functions | Static Public Member Functions | Public Attributes | Static Public Attributes | Protected Member Functions | Protected Attributes | Private Types | Private Member Functions | Static Private Member Functions | Private Attributes | Static Private Attributes | List of all members
ExternalProblem Class Referenceabstract

#include <ExternalProblem.h>

Inheritance diagram for ExternalProblem:
[legend]

Public Types

enum class  Direction : unsigned char { TO_EXTERNAL_APP , FROM_EXTERNAL_APP }
 
enum class  CoverageCheckMode {
  FALSE , TRUE , OFF , ON ,
  SKIP_LIST , ONLY_LIST
}
 
using DataFileParameterType = DataFileName
 The parameter type this interface expects for a data file name.
 

Public Member Functions

 ExternalProblem (const InputParameters &parameters)
 
virtual void solve (unsigned int nl_sys_num=0) override final
 Solve is implemented to providing syncing to/from the "transfer" mesh.
 
virtual void externalSolve ()=0
 New interface for solving an External problem.
 
virtual void syncSolutions (Direction direction)=0
 Method to transfer data to/from the external application to the associated transfer mesh.
 
virtual void addExternalVariables ()
 Method called to add AuxVariables to the simulation.
 
bool initialized () const
 
virtual libMesh::EquationSystemses () override
 
virtual MooseMeshmesh () override
 
virtual const MooseMeshmesh () const override
 
const MooseMeshmesh (bool use_displaced) const override
 
MooseMeshmesh (bool use_displaced)
 
void setCoordSystem (const std::vector< SubdomainName > &blocks, const MultiMooseEnum &coord_sys)
 
void setAxisymmetricCoordAxis (const MooseEnum &rz_coord_axis)
 
void setCoupling (Moose::CouplingType type)
 Set the coupling between variables TODO: allow user-defined coupling.
 
Moose::CouplingType coupling () const
 
void setCouplingMatrix (std::unique_ptr< libMesh::CouplingMatrix > cm, const unsigned int nl_sys_num)
 Set custom coupling matrix.
 
void setCouplingMatrix (libMesh::CouplingMatrix *cm, const unsigned int nl_sys_num)
 
const libMesh::CouplingMatrixcouplingMatrix (const unsigned int nl_sys_num) const override
 The coupling matrix defining what blocks exist in the preconditioning matrix.
 
void setNonlocalCouplingMatrix ()
 Set custom coupling matrix for variables requiring nonlocal contribution.
 
bool areCoupled (const unsigned int ivar, const unsigned int jvar, const unsigned int nl_sys_num) const
 
bool hasUOAuxStateCheck () const
 Whether or not MOOSE will perform a user object/auxiliary kernel state check.
 
bool checkingUOAuxState () const
 Return a flag to indicate whether we are executing user objects and auxliary kernels for state check Note: This function can return true only when hasUOAuxStateCheck() returns true, i.e.
 
virtual bool checkResidualForNans () const override
 Whether to check residual for NaN/Inf values.
 
void setCheckResidualForNans (bool check_residual_for_nans)
 Setter for residual NaN/Inf checking.
 
void trustUserCouplingMatrix ()
 Whether to trust the user coupling matrix even if we want to do things like be paranoid and create a full coupling matrix.
 
std::vector< std::pair< MooseVariableFieldBase *, MooseVariableFieldBase * > > & couplingEntries (const THREAD_ID tid, const unsigned int nl_sys_num)
 
std::vector< std::pair< MooseVariableFieldBase *, MooseVariableFieldBase * > > & nonlocalCouplingEntries (const THREAD_ID tid, const unsigned int nl_sys_num)
 
virtual bool hasVariable (const std::string &var_name) const override
 Whether or not this problem has the variable.
 
bool hasSolverVariable (const std::string &var_name) const
 
virtual const MooseVariableFieldBasegetVariable (const THREAD_ID tid, const std::string &var_name, Moose::VarKindType expected_var_type=Moose::VarKindType::VAR_ANY, Moose::VarFieldType expected_var_field_type=Moose::VarFieldType::VAR_FIELD_ANY) const override
 Returns the variable reference for requested variable which must be of the expected_var_type (Nonlinear vs.
 
virtual const MooseVariableFieldBasegetVariable (const THREAD_ID tid, const std::string &var_name, Moose::VarKindType expected_var_type=Moose::VarKindType::VAR_ANY, Moose::VarFieldType expected_var_field_type=Moose::VarFieldType::VAR_FIELD_ANY) const=0
 Returns the variable reference for requested variable which must be of the expected_var_type (Nonlinear vs.
 
virtual MooseVariableFieldBasegetVariable (const THREAD_ID tid, const std::string &var_name, Moose::VarKindType expected_var_type=Moose::VarKindType::VAR_ANY, Moose::VarFieldType expected_var_field_type=Moose::VarFieldType::VAR_FIELD_ANY)
 
MooseVariableFieldBasegetActualFieldVariable (const THREAD_ID tid, const std::string &var_name) override
 Returns the variable reference for requested MooseVariableField which may be in any system.
 
virtual MooseVariablegetStandardVariable (const THREAD_ID tid, const std::string &var_name) override
 Returns the variable reference for requested MooseVariable which may be in any system.
 
virtual VectorMooseVariablegetVectorVariable (const THREAD_ID tid, const std::string &var_name) override
 Returns the variable reference for requested VectorMooseVariable which may be in any system.
 
virtual ArrayMooseVariablegetArrayVariable (const THREAD_ID tid, const std::string &var_name) override
 Returns the variable reference for requested ArrayMooseVariable which may be in any system.
 
virtual bool hasScalarVariable (const std::string &var_name) const override
 Returns a Boolean indicating whether any system contains a variable with the name provided.
 
virtual MooseVariableScalargetScalarVariable (const THREAD_ID tid, const std::string &var_name) override
 Returns the scalar variable reference from whichever system contains it.
 
virtual libMesh::SystemgetSystem (const std::string &var_name) override
 Returns the equation system containing the variable provided.
 
const RestartableEquationSystemsgetRestartableEquationSystems () const
 Get the RestartableEquationSystems object.
 
virtual void setActiveElementalMooseVariables (const std::set< MooseVariableFEBase * > &moose_vars, const THREAD_ID tid) override
 Set the MOOSE variables to be reinited on each element.
 
virtual void clearActiveElementalMooseVariables (const THREAD_ID tid) override
 Clear the active elemental MooseVariableFEBase.
 
virtual void clearActiveFEVariableCoupleableMatrixTags (const THREAD_ID tid) override
 
virtual void clearActiveFEVariableCoupleableVectorTags (const THREAD_ID tid) override
 
virtual void setActiveFEVariableCoupleableVectorTags (std::set< TagID > &vtags, const THREAD_ID tid) override
 
virtual void setActiveFEVariableCoupleableMatrixTags (std::set< TagID > &mtags, const THREAD_ID tid) override
 
virtual void clearActiveScalarVariableCoupleableMatrixTags (const THREAD_ID tid) override
 
virtual void clearActiveScalarVariableCoupleableVectorTags (const THREAD_ID tid) override
 
virtual void setActiveScalarVariableCoupleableVectorTags (std::set< TagID > &vtags, const THREAD_ID tid) override
 
virtual void setActiveScalarVariableCoupleableMatrixTags (std::set< TagID > &mtags, const THREAD_ID tid) override
 
virtual void createQRules (libMesh::QuadratureType type, libMesh::Order order, libMesh::Order volume_order=libMesh::INVALID_ORDER, libMesh::Order face_order=libMesh::INVALID_ORDER, SubdomainID block=Moose::ANY_BLOCK_ID, bool allow_negative_qweights=true)
 
void bumpVolumeQRuleOrder (libMesh::Order order, SubdomainID block)
 Increases the element/volume quadrature order for the specified mesh block if and only if the current volume quadrature order is lower.
 
void bumpAllQRuleOrder (libMesh::Order order, SubdomainID block)
 
unsigned int getMaxQps () const
 
libMesh::Order getMaxScalarOrder () const
 
void checkNonlocalCoupling ()
 
void checkUserObjectJacobianRequirement (THREAD_ID tid)
 
void setVariableAllDoFMap (const std::vector< const MooseVariableFEBase * > &moose_vars)
 
const std::vector< const MooseVariableFEBase * > & getUserObjectJacobianVariables (const THREAD_ID tid) const
 
virtual Assemblyassembly (const THREAD_ID tid, const unsigned int sys_num) override
 
virtual const Assemblyassembly (const THREAD_ID tid, const unsigned int sys_num) const override
 
Moose::Kokkos::AssemblykokkosAssembly ()
 
const Moose::Kokkos::AssemblykokkosAssembly () const
 
virtual std::vector< VariableName > getVariableNames ()
 Returns a list of all the variables in the problem (both from the NL and Aux systems.
 
void initialSetup () override
 
void checkDuplicatePostprocessorVariableNames ()
 
void timestepSetup () override
 
void customSetup (const ExecFlagType &exec_type) override
 
void residualSetup () override
 
void jacobianSetup () override
 
virtual void prepare (const Elem *elem, const THREAD_ID tid) override
 
virtual void prepare (const Elem *elem, unsigned int ivar, unsigned int jvar, const std::vector< dof_id_type > &dof_indices, const THREAD_ID tid) override
 
virtual void prepareFace (const Elem *elem, const THREAD_ID tid) override
 
virtual void setCurrentSubdomainID (const Elem *elem, const THREAD_ID tid) override
 
virtual void setNeighborSubdomainID (const Elem *elem, unsigned int side, const THREAD_ID tid) override
 
virtual void setNeighborSubdomainID (const Elem *elem, const THREAD_ID tid)
 
virtual void prepareAssembly (const THREAD_ID tid) override
 
virtual void prepareAssemblyNeighbor (const THREAD_ID tid)
 Begin a fresh neighbor accumulation phase by sizing and zeroing the neighbor blocks.
 
virtual void addGhostedElem (dof_id_type elem_id) override
 Will make sure that all dofs connected to elem_id are ghosted to this processor.
 
virtual void addGhostedBoundary (BoundaryID boundary_id) override
 Will make sure that all necessary elements from boundary_id are ghosted to this processor.
 
virtual void ghostGhostedBoundaries () override
 Causes the boundaries added using addGhostedBoundary to actually be ghosted.
 
virtual void sizeZeroes (unsigned int size, const THREAD_ID tid)
 
virtual bool reinitDirac (const Elem *elem, const THREAD_ID tid) override
 Returns true if the Problem has Dirac kernels it needs to compute on elem.
 
virtual void reinitElem (const Elem *elem, const THREAD_ID tid) override
 
virtual void reinitElemPhys (const Elem *elem, const std::vector< Point > &phys_points_in_elem, const THREAD_ID tid) override
 
void reinitElemFace (const Elem *elem, unsigned int side, BoundaryID, const THREAD_ID tid)
 
virtual void reinitElemFace (const Elem *elem, unsigned int side, const THREAD_ID tid) override
 
virtual void reinitLowerDElem (const Elem *lower_d_elem, const THREAD_ID tid, const std::vector< Point > *const pts=nullptr, const std::vector< Real > *const weights=nullptr) override
 
virtual void reinitNode (const Node *node, const THREAD_ID tid) override
 
virtual void reinitNodeFace (const Node *node, BoundaryID bnd_id, const THREAD_ID tid) override
 
virtual void reinitNodes (const std::vector< dof_id_type > &nodes, const THREAD_ID tid) override
 
virtual void reinitNodesNeighbor (const std::vector< dof_id_type > &nodes, const THREAD_ID tid) override
 
virtual void reinitNeighbor (const Elem *elem, unsigned int side, const THREAD_ID tid) override
 
virtual void reinitNeighborPhys (const Elem *neighbor, unsigned int neighbor_side, const std::vector< Point > &physical_points, const THREAD_ID tid) override
 
virtual void reinitNeighborPhys (const Elem *neighbor, const std::vector< Point > &physical_points, const THREAD_ID tid) override
 
virtual void reinitElemNeighborAndLowerD (const Elem *elem, unsigned int side, const THREAD_ID tid) override
 
virtual void reinitScalars (const THREAD_ID tid, bool reinit_for_derivative_reordering=false) override
 fills the VariableValue arrays for scalar variables from the solution vector
 
virtual void reinitOffDiagScalars (const THREAD_ID tid) override
 
virtual void getDiracElements (std::set< const Elem * > &elems) override
 Fills "elems" with the elements that should be looped over for Dirac Kernels.
 
virtual void clearDiracInfo () override
 Gets called before Dirac Kernels are asked to add the points they are supposed to be evaluated in.
 
virtual void subdomainSetup (SubdomainID subdomain, const THREAD_ID tid)
 
virtual void neighborSubdomainSetup (SubdomainID subdomain, const THREAD_ID tid)
 
virtual void newAssemblyArray (std::vector< std::shared_ptr< SolverSystem > > &solver_systems)
 
virtual void initNullSpaceVectors (const InputParameters &parameters, std::vector< std::shared_ptr< NonlinearSystemBase > > &nl)
 
virtual void init () override
 
void initKokkos ()
 Construct Kokkos assembly and systems and allocate Kokkos material property storages.
 
virtual void solveLinearSystem (const unsigned int linear_sys_num, const Moose::PetscSupport::PetscOptions *po=nullptr)
 Build and solve a linear system.
 
virtual void setException (const std::string &message)
 Set an exception, which is stored at this point by toggling a member variable in this class, and which must be followed up with by a call to checkExceptionAndStopSolve().
 
virtual bool hasException ()
 Whether or not an exception has occurred.
 
virtual void checkExceptionAndStopSolve (bool print_message=true)
 Check to see if an exception has occurred on any processor and, if possible, force the solve to fail, which will result in the time step being cut.
 
virtual bool solverSystemConverged (const unsigned int solver_sys_num) override
 
virtual unsigned int nNonlinearIterations (const unsigned int nl_sys_num) const override
 
virtual unsigned int nLinearIterations (const unsigned int nl_sys_num) const override
 
virtual Real finalNonlinearResidual (const unsigned int nl_sys_num) const override
 
virtual bool computingPreSMOResidual (const unsigned int nl_sys_num) const override
 Returns true if the problem is in the process of computing it's initial residual.
 
virtual std::string solverTypeString (unsigned int solver_sys_num=0)
 Return solver type as a human readable string.
 
virtual bool startedInitialSetup ()
 Returns true if we are in or beyond the initialSetup stage.
 
virtual void onTimestepBegin () override
 
virtual void onTimestepEnd () override
 
virtual Real & time () const
 
virtual Real & timeOld () const
 
virtual inttimeStep () const
 
virtual Real & dt () const
 
virtual Real & dtOld () const
 
Real getTimeFromStateArg (const Moose::StateArg &state) const
 Returns the time associated with the requested state.
 
virtual void transient (bool trans)
 
virtual bool isTransient () const override
 
virtual void addTimeIntegrator (const std::string &type, const std::string &name, InputParameters &parameters)
 
virtual void addPredictor (const std::string &type, const std::string &name, InputParameters &parameters)
 
virtual void copySolutionsBackwards ()
 
void skipNextForwardSolutionCopyToOld ()
 Prevents the copy of the solution vector to the old solution vector in each system.
 
virtual void advanceState ()
 Advance all of the state holding vectors / datastructures so that we can move to the next timestep.
 
virtual void restoreSolutions ()
 
virtual void saveOldSolutions ()
 Allocate vectors and save old solutions into them.
 
virtual void restoreOldSolutions ()
 Restore old solutions from the backup vectors and deallocate them.
 
void needSolutionState (unsigned int oldest_needed, Moose::SolutionIterationType iteration_type)
 Declare that we need up to old (1) or older (2) solution states for a given type of iteration.
 
bool hasSolutionState (unsigned int state, Moose::SolutionIterationType iteration_type) const
 Whether we need up to old (1) or older (2) solution states for a given type of iteration.
 
virtual void outputStep (ExecFlagType type)
 Output the current step.
 
virtual void postExecute ()
 Method called at the end of the simulation.
 
void forceOutput ()
 Indicates that the next call to outputStep should be forced.
 
virtual void initPetscOutputAndSomeSolverSettings ()
 Reinitialize PETSc output for proper linear/nonlinear iteration display.
 
Moose::PetscSupport::PetscOptionsgetPetscOptions ()
 Retrieve a writable reference the PETSc options (used by PetscSupport)
 
void logAdd (const std::string &system, const std::string &name, const std::string &type, const InputParameters &params) const
 Output information about the object just added to the problem.
 
virtual void addFunction (const std::string &type, const std::string &name, InputParameters &parameters)
 
virtual bool hasFunction (const std::string &name, const THREAD_ID tid=0)
 
virtual FunctiongetFunction (const std::string &name, const THREAD_ID tid=0)
 
virtual void addKokkosFunction (const std::string &type, const std::string &name, InputParameters &parameters)
 Add a Kokkos function to the problem.
 
virtual bool hasKokkosFunction (const std::string &name) const
 Get whether a Kokkos function exists.
 
virtual Moose::Kokkos::Function getKokkosFunction (const std::string &name)
 Get a Kokkos function in an abstract type.
 
template<typename T >
T & getKokkosFunction (const std::string &name)
 Get a Kokkos function in a concrete type.
 
virtual void addMeshDivision (const std::string &type, const std::string &name, InputParameters &params)
 Add a MeshDivision.
 
MeshDivisiongetMeshDivision (const std::string &name, const THREAD_ID tid=0) const
 Get a MeshDivision.
 
virtual void addConvergence (const std::string &type, const std::string &name, InputParameters &parameters)
 Adds a Convergence object.
 
virtual ConvergencegetConvergence (const std::string &name, const THREAD_ID tid=0) const
 Gets a Convergence object.
 
virtual const std::vector< std::shared_ptr< Convergence > > & getConvergenceObjects (const THREAD_ID tid=0) const
 Gets the Convergence objects.
 
virtual bool hasConvergence (const std::string &name, const THREAD_ID tid=0) const
 Returns true if the problem has a Convergence object of the given name.
 
bool needToAddDefaultNonlinearConvergence () const
 Returns true if the problem needs to add the default nonlinear convergence.
 
bool needToAddDefaultMultiAppFixedPointConvergence () const
 Returns true if the problem needs to add the default fixed point convergence.
 
bool needToAddDefaultSteadyStateConvergence () const
 Returns true if the problem needs to add the default steady-state detection convergence.
 
void setNeedToAddDefaultNonlinearConvergence ()
 Sets _need_to_add_default_nonlinear_convergence to true.
 
void setNeedToAddDefaultMultiAppFixedPointConvergence ()
 Sets _need_to_add_default_multiapp_fixed_point_convergence to true.
 
void setNeedToAddDefaultSteadyStateConvergence ()
 Sets _need_to_add_default_steady_state_convergence to true.
 
bool hasSetMultiAppFixedPointConvergenceName () const
 Returns true if the problem has set the fixed point convergence name.
 
bool hasSetSteadyStateConvergenceName () const
 Returns true if the problem has set the steady-state detection convergence name.
 
virtual void addDefaultNonlinearConvergence (const InputParameters &params)
 Adds the default nonlinear Convergence associated with the problem.
 
virtual bool onlyAllowDefaultNonlinearConvergence () const
 Returns true if an error will result if the user supplies 'nonlinear_convergence'.
 
void addDefaultMultiAppFixedPointConvergence (const InputParameters &params)
 Adds the default fixed point Convergence associated with the problem.
 
void addDefaultSteadyStateConvergence (const InputParameters &params)
 Adds the default steady-state detection Convergence.
 
virtual void addLineSearch (const InputParameters &)
 add a MOOSE line search
 
virtual void lineSearch ()
 execute MOOSE line search
 
LineSearchgetLineSearch () override
 getter for the MOOSE line search
 
virtual void addDistribution (const std::string &type, const std::string &name, InputParameters &parameters)
 The following functions will enable MOOSE to have the capability to import distributions.
 
virtual bool hasDistribution (const std::string &name) const
 
virtual DistributiongetDistribution (const std::string &name)
 
virtual void addSampler (const std::string &type, const std::string &name, InputParameters &parameters)
 The following functions will enable MOOSE to have the capability to import Samplers.
 
virtual SamplergetSampler (const std::string &name, const THREAD_ID tid=0)
 
NonlinearSystemBasegetNonlinearSystemBase (const unsigned int sys_num)
 
const NonlinearSystemBasegetNonlinearSystemBase (const unsigned int sys_num) const
 
void setCurrentNonlinearSystem (const unsigned int nl_sys_num)
 
NonlinearSystemBasecurrentNonlinearSystem ()
 
const NonlinearSystemBasecurrentNonlinearSystem () const
 
virtual const SystemBasesystemBaseNonlinear (const unsigned int sys_num) const override
 Return the nonlinear system object as a base class reference given the system number.
 
virtual SystemBasesystemBaseNonlinear (const unsigned int sys_num) override
 
virtual const SystemBasesystemBaseSolver (const unsigned int sys_num) const override
 Return the solver system object as a base class reference given the system number.
 
virtual SystemBasesystemBaseSolver (const unsigned int sys_num) override
 
virtual const SystemBasesystemBaseAuxiliary () const override
 Return the auxiliary system object as a base class reference.
 
virtual SystemBasesystemBaseAuxiliary () override
 
virtual NonlinearSystemgetNonlinearSystem (const unsigned int sys_num)
 
virtual const SystemBasegetSystemBase (const unsigned int sys_num) const
 Get constant reference to a system in this problem.
 
virtual SystemBasegetSystemBase (const unsigned int sys_num)
 Get non-constant reference to a system in this problem.
 
SystemBasegetSystemBase (const std::string &sys_name)
 Get non-constant reference to a system in this problem.
 
LinearSystemgetLinearSystem (unsigned int sys_num)
 Get non-constant reference to a linear system.
 
const LinearSystemgetLinearSystem (unsigned int sys_num) const
 Get a constant reference to a linear system.
 
SolverSystemgetSolverSystem (unsigned int sys_num)
 Get non-constant reference to a solver system.
 
const SolverSystemgetSolverSystem (unsigned int sys_num) const
 Get a constant reference to a solver system.
 
void setCurrentLinearSystem (unsigned int sys_num)
 Set the current linear system pointer.
 
LinearSystemcurrentLinearSystem ()
 Get a non-constant reference to the current linear system.
 
const LinearSystemcurrentLinearSystem () const
 Get a constant reference to the current linear system.
 
virtual const SystemBasesystemBaseLinear (unsigned int sys_num) const override
 Get a constant base class reference to a linear system.
 
virtual SystemBasesystemBaseLinear (unsigned int sys_num) override
 Get a non-constant base class reference to a linear system.
 
virtual void addVariable (const std::string &var_type, const std::string &var_name, InputParameters &params)
 Canonical method for adding a non-linear variable.
 
virtual void addKernel (const std::string &kernel_name, const std::string &name, InputParameters &parameters)
 
virtual void addHDGKernel (const std::string &kernel_name, const std::string &name, InputParameters &parameters)
 
virtual void addNodalKernel (const std::string &kernel_name, const std::string &name, InputParameters &parameters)
 
virtual void addScalarKernel (const std::string &kernel_name, const std::string &name, InputParameters &parameters)
 
virtual void addBoundaryCondition (const std::string &bc_name, const std::string &name, InputParameters &parameters)
 
virtual void addKokkosKernel (const std::string &kernel_name, const std::string &name, InputParameters &parameters)
 
virtual void addKokkosNodalKernel (const std::string &kernel_name, const std::string &name, InputParameters &parameters)
 
virtual void addKokkosBoundaryCondition (const std::string &bc_name, const std::string &name, InputParameters &parameters)
 
virtual void addKokkosLinearFVKernel (const std::string &kernel_name, const std::string &name, InputParameters &parameters)
 
virtual void addKokkosLinearFVBC (const std::string &bc_name, const std::string &name, InputParameters &parameters)
 
virtual void addConstraint (const std::string &c_name, const std::string &name, InputParameters &parameters)
 
virtual void setInputParametersFEProblem (InputParameters &parameters)
 
virtual void addAuxVariable (const std::string &var_type, const std::string &var_name, InputParameters &params)
 Canonical method for adding an auxiliary variable.
 
virtual void addAuxVariable (const std::string &var_name, const libMesh::FEType &type, const std::set< SubdomainID > *const active_subdomains=NULL)
 
virtual void addElementalFieldVariable (const std::string &var_type, const std::string &var_name, InputParameters &params)
 Add an elemental field variable for use in the adaptivity system.
 
virtual void addAuxArrayVariable (const std::string &var_name, const libMesh::FEType &type, unsigned int components, const std::set< SubdomainID > *const active_subdomains=NULL)
 
virtual void addAuxScalarVariable (const std::string &var_name, libMesh::Order order, Real scale_factor=1., const std::set< SubdomainID > *const active_subdomains=NULL)
 
virtual void addAuxKernel (const std::string &kernel_name, const std::string &name, InputParameters &parameters)
 
virtual void addAuxScalarKernel (const std::string &kernel_name, const std::string &name, InputParameters &parameters)
 
virtual void addKokkosAuxKernel (const std::string &kernel_name, const std::string &name, InputParameters &parameters)
 
AuxiliarySystemgetAuxiliarySystem ()
 
virtual void addDiracKernel (const std::string &kernel_name, const std::string &name, InputParameters &parameters)
 
virtual void addDGKernel (const std::string &kernel_name, const std::string &name, InputParameters &parameters)
 
virtual void addFVKernel (const std::string &kernel_name, const std::string &name, InputParameters &parameters)
 
virtual void addLinearFVKernel (const std::string &kernel_name, const std::string &name, InputParameters &parameters)
 
virtual void addFVBC (const std::string &fv_bc_name, const std::string &name, InputParameters &parameters)
 
virtual void addLinearFVBC (const std::string &fv_bc_name, const std::string &name, InputParameters &parameters)
 
virtual void addFVInterfaceKernel (const std::string &fv_ik_name, const std::string &name, InputParameters &parameters)
 
virtual void addInterfaceKernel (const std::string &kernel_name, const std::string &name, InputParameters &parameters)
 
virtual void addInitialCondition (const std::string &ic_name, const std::string &name, InputParameters &parameters)
 
virtual void addFVInitialCondition (const std::string &ic_name, const std::string &name, InputParameters &parameters)
 Add an initial condition for a finite volume variables.
 
void projectSolution ()
 
unsigned short getCurrentICState ()
 Retrieves the current initial condition state.
 
void projectInitialConditionOnCustomRange (libMesh::ConstElemRange &elem_range, ConstBndNodeRange &bnd_node_range, const std::optional< std::set< VariableName > > &target_vars=std::nullopt)
 Project initial conditions for custom elem_range and bnd_node_range This is needed when elements/boundary nodes are added to a specific subdomain at an intermediate step.
 
void projectFunctionOnCustomRange (ConstElemRange &elem_range, Number(*func)(const Point &, const libMesh::Parameters &, const std::string &, const std::string &), Gradient(*func_grad)(const Point &, const libMesh::Parameters &, const std::string &, const std::string &), const libMesh::Parameters &params, const std::vector< VariableName > &target_vars)
 Project a function onto a range of elements for a given variable.
 
virtual void addMaterial (const std::string &material_name, const std::string &name, InputParameters &parameters)
 
virtual void addMaterialHelper (std::vector< MaterialWarehouse * > warehouse, const std::string &material_name, const std::string &name, InputParameters &parameters)
 
virtual void addInterfaceMaterial (const std::string &material_name, const std::string &name, InputParameters &parameters)
 
virtual void addFunctorMaterial (const std::string &functor_material_name, const std::string &name, InputParameters &parameters)
 
virtual void addKokkosMaterial (const std::string &material_name, const std::string &name, InputParameters &parameters)
 
void prepareMaterials (const std::unordered_set< unsigned int > &consumer_needed_mat_props, const SubdomainID blk_id, const THREAD_ID tid)
 Add the MooseVariables and the material properties that the current materials depend on to the dependency list.
 
void reinitMaterials (SubdomainID blk_id, const THREAD_ID tid, bool swap_stateful=true)
 
void reinitMaterialsFace (SubdomainID blk_id, const THREAD_ID tid, bool swap_stateful=true, const std::deque< MaterialBase * > *reinit_mats=nullptr)
 reinit materials on element faces
 
void reinitMaterialsFaceOnBoundary (const BoundaryID boundary_id, const SubdomainID blk_id, const THREAD_ID tid, const bool swap_stateful=true, const std::deque< MaterialBase * > *const reinit_mats=nullptr)
 reinit materials on element faces on a boundary (internal or external) This specific routine helps us not reinit when don't need to
 
void reinitMaterialsNeighborOnBoundary (const BoundaryID boundary_id, const SubdomainID blk_id, const THREAD_ID tid, const bool swap_stateful=true, const std::deque< MaterialBase * > *const reinit_mats=nullptr)
 reinit materials on neighbor element (usually faces) on a boundary (internal or external) This specific routine helps us not reinit when don't need to
 
void reinitMaterialsNeighbor (SubdomainID blk_id, const THREAD_ID tid, bool swap_stateful=true, const std::deque< MaterialBase * > *reinit_mats=nullptr)
 reinit materials on the neighboring element face
 
void reinitMaterialsBoundary (BoundaryID boundary_id, const THREAD_ID tid, bool swap_stateful=true, const std::deque< MaterialBase * > *reinit_mats=nullptr)
 reinit materials on a boundary
 
void reinitMaterialsInterface (BoundaryID boundary_id, const THREAD_ID tid, bool swap_stateful=true)
 
void prepareKokkosMaterials (const std::unordered_set< unsigned int > &consumer_needed_mat_props)
 
void reinitKokkosMaterials ()
 
virtual void swapBackMaterials (const THREAD_ID tid)
 
virtual void swapBackMaterialsFace (const THREAD_ID tid)
 
virtual void swapBackMaterialsNeighbor (const THREAD_ID tid)
 
void setActiveMaterialProperties (const std::unordered_set< unsigned int > &mat_prop_ids, const THREAD_ID tid)
 Record and set the material properties required by the current computing thread.
 
bool hasActiveMaterialProperties (const THREAD_ID tid) const
 Method to check whether or not a list of active material roperties has been set.
 
void clearActiveMaterialProperties (const THREAD_ID tid)
 Clear the active material properties.
 
template<typename T >
std::vector< std::shared_ptr< T > > addObject (const std::string &type, const std::string &name, InputParameters &parameters, const bool threaded=true, const std::string &var_param_name="variable")
 Method for creating and adding an object to the warehouse.
 
virtual void addPostprocessor (const std::string &pp_name, const std::string &name, InputParameters &parameters)
 
virtual void addVectorPostprocessor (const std::string &pp_name, const std::string &name, InputParameters &parameters)
 
virtual void addReporter (const std::string &type, const std::string &name, InputParameters &parameters)
 Add a Reporter object to the simulation.
 
virtual void addKokkosPostprocessor (const std::string &pp_name, const std::string &name, InputParameters &parameters)
 
virtual void addKokkosVectorPostprocessor (const std::string &pp_name, const std::string &name, InputParameters &parameters)
 
virtual void addKokkosReporter (const std::string &type, const std::string &name, InputParameters &parameters)
 
const ReporterDatagetReporterData () const
 Provides const access the ReporterData object.
 
ReporterDatagetReporterData (ReporterData::WriteKey)
 Provides non-const access the ReporterData object that is used to store reporter values.
 
virtual std::vector< std::shared_ptr< UserObject > > addUserObject (const std::string &user_object_name, const std::string &name, InputParameters &parameters)
 
template<class T >
T & getUserObject (const std::string &name, unsigned int tid=0) const
 Get the user object by its name.
 
const UserObjectgetUserObjectBase (const std::string &name, const THREAD_ID tid=0) const
 Get the user object by its name.
 
bool hasUserObject (const std::string &name) const
 Check if there if a user object of given name.
 
virtual void addKokkosUserObject (const std::string &user_object_name, const std::string &name, InputParameters &parameters)
 
template<class T >
const T & getKokkosUserObject (const std::string &name) const
 Get the Kokkos user object by its name.
 
bool hasKokkosUserObject (const std::string &name) const
 Check if there if a Kokkos user object of given name.
 
void checkUserObjectNameCollision (const std::string &name, const std::string &type) const
 Check for name collision between different user objects.
 
const PositionsgetPositionsObject (const std::string &name) const
 Get the Positions object by its name.
 
virtual void addFVInterpolationMethod (const std::string &method_type, const std::string &name, InputParameters &parameters)
 Add an FV interpolation method.
 
const FVInterpolationMethodgetFVInterpolationMethod (const InterpolationMethodName &name, const THREAD_ID tid=0) const
 Retrieve an FV interpolation method.
 
const FVFaceInterpolationMethodgetFVFaceInterpolationMethod (const InterpolationMethodName &name, const THREAD_ID tid=0) const
 Retrieve a scalar face interpolation method.
 
const FVAdvectedInterpolationMethodgetFVAdvectedInterpolationMethod (const InterpolationMethodName &name, const THREAD_ID tid=0) const
 Retrieve an advected interpolation method.
 
bool hasFVInterpolationMethod (const InterpolationMethodName &name) const
 Check if an FV interpolation method with a given name exists.
 
bool hasPostprocessorValueByName (const PostprocessorName &name) const
 Whether or not a Postprocessor value exists by a given name.
 
const PostprocessorgetPostprocessorObjectByName (const PostprocessorName &object_name, const THREAD_ID tid=0) const
 Return the Postprocessor object registered under the supplied object name.
 
const PostprocessorValuegetPostprocessorValueByName (const PostprocessorName &name, std::size_t t_index=0) const
 Get a read-only reference to the value associated with a Postprocessor that exists.
 
void setPostprocessorValueByName (const PostprocessorName &name, const PostprocessorValue &value, std::size_t t_index=0)
 Set the value of a PostprocessorValue.
 
bool hasPostprocessor (const std::string &name) const
 Deprecated.
 
const VectorPostprocessorValuegetVectorPostprocessorValueByName (const std::string &object_name, const std::string &vector_name, std::size_t t_index=0) const
 Get a read-only reference to the vector value associated with the VectorPostprocessor.
 
void setVectorPostprocessorValueByName (const std::string &object_name, const std::string &vector_name, const VectorPostprocessorValue &value, std::size_t t_index=0)
 Set the value of a VectorPostprocessor vector.
 
const VectorPostprocessorgetVectorPostprocessorObjectByName (const std::string &object_name, const THREAD_ID tid=0) const
 Return the VPP object given the name.
 
virtual void addDamper (const std::string &damper_name, const std::string &name, InputParameters &parameters)
 
void setupDampers ()
 
bool hasDampers ()
 Whether or not this system has dampers.
 
virtual void addIndicator (const std::string &indicator_name, const std::string &name, InputParameters &parameters)
 
virtual void addMarker (const std::string &marker_name, const std::string &name, InputParameters &parameters)
 
virtual void addMultiApp (const std::string &multi_app_name, const std::string &name, InputParameters &parameters)
 Add a MultiApp to the problem.
 
std::shared_ptr< MultiAppgetMultiApp (const std::string &multi_app_name) const
 Get a MultiApp object by name.
 
std::vector< std::shared_ptr< Transfer > > getTransfers (ExecFlagType type, Transfer::DIRECTION direction) const
 Get Transfers by ExecFlagType and direction.
 
std::vector< std::shared_ptr< Transfer > > getTransfers (Transfer::DIRECTION direction) const
 
const ExecuteMooseObjectWarehouse< Transfer > & getMultiAppTransferWarehouse (Transfer::DIRECTION direction) const
 Return the complete warehouse for MultiAppTransfer object for the given direction.
 
void execMultiAppTransfers (ExecFlagType type, Transfer::DIRECTION direction)
 Execute MultiAppTransfers associated with execution flag and direction.
 
bool execMultiApps (ExecFlagType type, bool auto_advance=true)
 Execute the MultiApps associated with the ExecFlagType.
 
void finalizeMultiApps ()
 
void incrementMultiAppTStep (ExecFlagType type)
 Advance the MultiApps t_step (incrementStepOrReject) associated with the ExecFlagType.
 
void advanceMultiApps (ExecFlagType type)
 Deprecated method; use finishMultiAppStep and/or incrementMultiAppTStep depending on your purpose.
 
void finishMultiAppStep (ExecFlagType type, bool recurse_through_multiapp_levels=false)
 Finish the MultiApp time step (endStep, postStep) associated with the ExecFlagType.
 
void backupMultiApps (ExecFlagType type)
 Backup the MultiApps associated with the ExecFlagType.
 
void restoreMultiApps (ExecFlagType type, bool force=false)
 Restore the MultiApps associated with the ExecFlagType.
 
Real computeMultiAppsDT (ExecFlagType type)
 Find the smallest timestep over all MultiApps.
 
virtual void addTransfer (const std::string &transfer_name, const std::string &name, InputParameters &parameters)
 Add a Transfer to the problem.
 
void execTransfers (ExecFlagType type)
 Execute the Transfers associated with the ExecFlagType.
 
Real computeResidualL2Norm (NonlinearSystemBase &sys)
 Computes the residual of a nonlinear system using whatever is sitting in the current solution vector then returns the L2 norm.
 
Real computeResidualL2Norm (LinearSystem &sys)
 Computes the residual of a linear system using whatever is sitting in the current solution vector then returns the L2 norm.
 
virtual Real computeResidualL2Norm ()
 Computes the residual using whatever is sitting in the current solution vector then returns the L2 norm.
 
virtual void computeResidualSys (libMesh::NonlinearImplicitSystem &sys, const NumericVector< libMesh::Number > &soln, NumericVector< libMesh::Number > &residual)
 This function is called by Libmesh to form a residual.
 
void computeResidual (libMesh::NonlinearImplicitSystem &sys, const NumericVector< libMesh::Number > &soln, NumericVector< libMesh::Number > &residual)
 This function is called by Libmesh to form a residual.
 
virtual void computeResidual (const NumericVector< libMesh::Number > &soln, NumericVector< libMesh::Number > &residual, const unsigned int nl_sys_num)
 Form a residual with default tags (nontime, time, residual).
 
void computeResidualAndJacobian (const NumericVector< libMesh::Number > &soln, NumericVector< libMesh::Number > &residual, libMesh::SparseMatrix< libMesh::Number > &jacobian)
 Form a residual and Jacobian with default tags.
 
virtual void computeResidualTag (const NumericVector< libMesh::Number > &soln, NumericVector< libMesh::Number > &residual, TagID tag)
 Form a residual vector for a given tag.
 
virtual void computeResidualType (const NumericVector< libMesh::Number > &soln, NumericVector< libMesh::Number > &residual, TagID tag)
 Form a residual vector for a given tag and "residual" tag.
 
virtual void computeResidualInternal (const NumericVector< libMesh::Number > &soln, NumericVector< libMesh::Number > &residual, const std::set< TagID > &tags)
 Form a residual vector for a set of tags.
 
virtual void computeResidualTags (const std::set< TagID > &tags)
 Form multiple residual vectors and each is associated with one tag.
 
virtual void computeJacobianSys (libMesh::NonlinearImplicitSystem &sys, const NumericVector< libMesh::Number > &soln, libMesh::SparseMatrix< libMesh::Number > &jacobian)
 Form a Jacobian matrix.
 
virtual void computeJacobian (const NumericVector< libMesh::Number > &soln, libMesh::SparseMatrix< libMesh::Number > &jacobian, const unsigned int nl_sys_num)
 Form a Jacobian matrix with the default tag (system).
 
virtual void computeJacobianTag (const NumericVector< libMesh::Number > &soln, libMesh::SparseMatrix< libMesh::Number > &jacobian, TagID tag)
 Form a Jacobian matrix for a given tag.
 
virtual void computeJacobianInternal (const NumericVector< libMesh::Number > &soln, libMesh::SparseMatrix< libMesh::Number > &jacobian, const std::set< TagID > &tags)
 Form a Jacobian matrix for multiple tags.
 
virtual void computeJacobianTags (const std::set< TagID > &tags)
 Form multiple matrices, and each is associated with a tag.
 
virtual void computeJacobianBlocks (std::vector< JacobianBlock * > &blocks, const unsigned int nl_sys_num)
 Computes several Jacobian blocks simultaneously, summing their contributions into smaller preconditioning matrices.
 
virtual void computeJacobianBlock (libMesh::SparseMatrix< libMesh::Number > &jacobian, libMesh::System &precond_system, unsigned int ivar, unsigned int jvar)
 Really not a good idea to use this.
 
virtual void computeLinearSystemSys (libMesh::LinearImplicitSystem &sys, libMesh::SparseMatrix< libMesh::Number > &system_matrix, NumericVector< libMesh::Number > &rhs, const bool compute_gradients=true)
 Assemble both the right hand side and the system matrix of a given linear system.
 
void computeLinearSystemTags (const NumericVector< libMesh::Number > &soln, const std::set< TagID > &vector_tags, const std::set< TagID > &matrix_tags, const bool compute_gradients=true)
 Assemble the current linear system given a set of vector and matrix tags.
 
virtual Real computeDamping (const NumericVector< libMesh::Number > &soln, const NumericVector< libMesh::Number > &update)
 
virtual bool shouldUpdateSolution ()
 Check to see whether the problem should update the solution.
 
virtual bool updateSolution (NumericVector< libMesh::Number > &vec_solution, NumericVector< libMesh::Number > &ghosted_solution)
 Update the solution.
 
virtual void predictorCleanup (NumericVector< libMesh::Number > &ghosted_solution)
 Perform cleanup tasks after application of predictor to solution vector.
 
virtual void computeBounds (libMesh::NonlinearImplicitSystem &sys, NumericVector< libMesh::Number > &lower, NumericVector< libMesh::Number > &upper)
 
virtual void computeNearNullSpace (libMesh::NonlinearImplicitSystem &sys, std::vector< NumericVector< libMesh::Number > * > &sp)
 
virtual void computeNullSpace (libMesh::NonlinearImplicitSystem &sys, std::vector< NumericVector< libMesh::Number > * > &sp)
 
virtual void computeTransposeNullSpace (libMesh::NonlinearImplicitSystem &sys, std::vector< NumericVector< libMesh::Number > * > &sp)
 
virtual void computePostCheck (libMesh::NonlinearImplicitSystem &sys, const NumericVector< libMesh::Number > &old_soln, NumericVector< libMesh::Number > &search_direction, NumericVector< libMesh::Number > &new_soln, bool &changed_search_direction, bool &changed_new_soln)
 
virtual void computeIndicatorsAndMarkers ()
 
virtual void computeIndicators ()
 
virtual void computeMarkers ()
 
virtual void addResidual (const THREAD_ID tid) override
 
virtual void addResidualNeighbor (const THREAD_ID tid) override
 
virtual void addResidualLower (const THREAD_ID tid) override
 
virtual void addResidualScalar (const THREAD_ID tid=0)
 
virtual void cacheResidual (const THREAD_ID tid) override
 
virtual void cacheResidualNeighbor (const THREAD_ID tid) override
 
virtual void addCachedResidual (const THREAD_ID tid) override
 
virtual void addCachedResidualDirectly (NumericVector< libMesh::Number > &residual, const THREAD_ID tid)
 Allows for all the residual contributions that are currently cached to be added directly into the vector passed in.
 
virtual void setResidual (NumericVector< libMesh::Number > &residual, const THREAD_ID tid) override
 
virtual void setResidual (libMesh::NumericVector< libMesh::Number > &residual, const THREAD_ID tid)=0
 
virtual void setResidualNeighbor (NumericVector< libMesh::Number > &residual, const THREAD_ID tid) override
 
virtual void setResidualNeighbor (libMesh::NumericVector< libMesh::Number > &residual, const THREAD_ID tid)=0
 
virtual void addJacobian (const THREAD_ID tid) override
 
virtual void addJacobianNeighbor (const THREAD_ID tid) override
 
virtual void addJacobianNeighbor (libMesh::SparseMatrix< libMesh::Number > &jacobian, unsigned int ivar, unsigned int jvar, const DofMap &dof_map, std::vector< dof_id_type > &dof_indices, std::vector< dof_id_type > &neighbor_dof_indices, const std::set< TagID > &tags, const THREAD_ID tid) override
 
virtual void addJacobianNeighbor (libMesh::SparseMatrix< libMesh::Number > &jacobian, unsigned int ivar, unsigned int jvar, const libMesh::DofMap &dof_map, std::vector< dof_id_type > &dof_indices, std::vector< dof_id_type > &neighbor_dof_indices, const std::set< TagID > &tags, const THREAD_ID tid)=0
 
virtual void addJacobianNeighborLowerD (const THREAD_ID tid) override
 
virtual void addJacobianLowerD (const THREAD_ID tid) override
 
virtual void addJacobianBlockTags (libMesh::SparseMatrix< libMesh::Number > &jacobian, unsigned int ivar, unsigned int jvar, const DofMap &dof_map, std::vector< dof_id_type > &dof_indices, const std::set< TagID > &tags, const THREAD_ID tid)
 
virtual void addJacobianScalar (const THREAD_ID tid=0)
 
virtual void addJacobianOffDiagScalar (unsigned int ivar, const THREAD_ID tid=0)
 
virtual void cacheJacobian (const THREAD_ID tid) override
 
virtual void cacheJacobianNeighbor (const THREAD_ID tid) override
 
virtual void addCachedJacobian (const THREAD_ID tid) override
 
virtual void prepareShapes (unsigned int var, const THREAD_ID tid) override
 
virtual void prepareFaceShapes (unsigned int var, const THREAD_ID tid) override
 
virtual void prepareNeighborShapes (unsigned int var, const THREAD_ID tid) override
 
virtual void addDisplacedProblem (std::shared_ptr< DisplacedProblem > displaced_problem)
 
virtual std::shared_ptr< const DisplacedProblemgetDisplacedProblem () const
 
virtual std::shared_ptr< DisplacedProblemgetDisplacedProblem ()
 
virtual void updateGeomSearch (GeometricSearchData::GeometricSearchType type=GeometricSearchData::ALL) override
 Update this object's geometric search data as well as the displaced problem's if it exists.
 
virtual void updateMortarMesh ()
 
void createMortarInterface (const std::pair< BoundaryID, BoundaryID > &primary_secondary_boundary_pair, const std::pair< SubdomainID, SubdomainID > &primary_secondary_subdomain_pair, bool on_displaced, bool periodic, const bool debug, const bool correct_edge_dropping, const Real minimum_projection_angle, const Mortar3DSubpatchPlane mortar_3d_subpatch_plane, const MooseEnum &triangulation, const bool triangulate_triangles, const Mortar3DQuadraturePointMapping mortar_3d_qp_mapping=Mortar3DQuadraturePointMapping::NORMAL_PROJECTION)
 
const std::unordered_map< std::pair< BoundaryID, BoundaryID >, MortarInterfaceConfig > & getMortarInterfaces (bool on_displaced) const
 
virtual void possiblyRebuildGeomSearchPatches ()
 
virtual GeometricSearchDatageomSearchData () override
 
void setRestartFile (const std::string &file_name)
 Communicate to the Resurector the name of the restart filer.
 
const MaterialPropertyRegistrygetMaterialPropertyRegistry () const
 
const InitialConditionWarehousegetInitialConditionWarehouse () const
 Return InitialCondition storage.
 
const FVInitialConditionWarehousegetFVInitialConditionWarehouse () const
 Return FVInitialCondition storage.
 
SolverParamssolverParams (unsigned int solver_sys_num=0)
 Get the solver parameters.
 
const SolverParamssolverParams (unsigned int solver_sys_num=0) const
 const version
 
Adaptivityadaptivity ()
 
virtual void initialAdaptMesh ()
 
virtual bool adaptMesh ()
 
unsigned int getNumCyclesCompleted ()
 
bool hasInitialAdaptivity () const
 Return a Boolean indicating whether initial AMR is turned on.
 
bool hasInitialAdaptivity () const
 Return a Boolean indicating whether initial AMR is turned on.
 
void initXFEM (std::shared_ptr< XFEMInterface > xfem)
 Create XFEM controller object.
 
std::shared_ptr< XFEMInterfacegetXFEM ()
 Get a pointer to the XFEM controller object.
 
bool haveXFEM ()
 Find out whether the current analysis is using XFEM.
 
virtual bool updateMeshXFEM ()
 Update the mesh due to changing XFEM cuts.
 
virtual void meshChanged (bool intermediate_change, bool contract_mesh, bool clean_refinement_flags)
 Update data after a mesh change.
 
void notifyWhenMeshChanges (MeshChangedInterface *mci)
 Register an object that derives from MeshChangedInterface to be notified when the mesh changes.
 
void notifyWhenMeshDisplaces (MeshDisplacedInterface *mdi)
 Register an object that derives from MeshDisplacedInterface to be notified when the displaced mesh gets updated.
 
void initElementStatefulProps (const libMesh::ConstElemRange &elem_range, const bool threaded)
 Initialize stateful properties for elements in a specific elem_range This is needed when elements/boundary nodes are added to a specific subdomain at an intermediate step.
 
void initKokkosStatefulProps ()
 
virtual void checkProblemIntegrity ()
 Method called to perform a series of sanity checks before a simulation is run.
 
void registerRandomInterface (RandomInterface &random_interface, const std::string &name)
 
void setConstJacobian (bool state)
 Set flag that Jacobian is constant (for optimization purposes)
 
void setKernelCoverageCheck (CoverageCheckMode mode)
 Set flag to indicate whether kernel coverage checks should be performed.
 
void setKernelCoverageCheck (bool flag)
 Set flag to indicate whether kernel coverage checks should be performed.
 
void setMaterialCoverageCheck (CoverageCheckMode mode)
 Set flag to indicate whether material coverage checks should be performed.
 
void setMaterialCoverageCheck (bool flag)
 Set flag to indicate whether material coverage checks should be performed.
 
void setParallelBarrierMessaging (bool flag)
 Toggle parallel barrier messaging (defaults to on).
 
void setVerboseProblem (bool verbose)
 Make the problem be verbose.
 
bool verboseMultiApps () const
 Whether or not to use verbose printing for MultiApps.
 
void parentOutputPositionChanged ()
 Calls parentOutputPositionChanged() on all sub apps.
 
unsigned int subspaceDim (const std::string &prefix) const
 Dimension of the subspace spanned by vectors with a given prefix.
 
const MooseObjectWarehouse< Function > & getFunctionWarehouse ()
 
const MaterialWarehousegetMaterialWarehouse () const
 
const MaterialWarehousegetRegularMaterialsWarehouse () const
 
const MaterialWarehousegetDiscreteMaterialWarehouse () const
 
const MaterialWarehousegetInterfaceMaterialsWarehouse () const
 
const MaterialWarehousegetKokkosMaterialsWarehouse () const
 
std::shared_ptr< MaterialBasegetMaterial (std::string name, Moose::MaterialDataType type, const THREAD_ID tid=0, bool no_warn=false)
 Return a pointer to a MaterialBase object.
 
MaterialDatagetMaterialData (Moose::MaterialDataType type, const THREAD_ID tid=0, const MooseObject *object=nullptr) const
 
MaterialDatagetKokkosMaterialData (Moose::MaterialDataType type, const MooseObject *object=nullptr) const
 
const std::set< const MooseObject * > & getMaterialPropertyStorageConsumers (Moose::MaterialDataType type) const
 
const std::set< const MooseObject * > & getKokkosMaterialPropertyStorageConsumers (Moose::MaterialDataType type) const
 
bool restoreOriginalNonzeroPattern () const
 
bool errorOnJacobianNonzeroReallocation () const
 Will return True if the user wants to get an error when a nonzero is reallocated in the Jacobian by PETSc.
 
void setErrorOnJacobianNonzeroReallocation (bool state)
 
bool preserveMatrixSparsityPattern () const
 Will return True if the executioner in use requires preserving the sparsity pattern of the matrices being formed during the solve.
 
void setPreserveMatrixSparsityPattern (bool preserve)
 Set whether the sparsity pattern of the matrices being formed during the solve (usually the Jacobian) should be preserved.
 
bool ignoreZerosInJacobian () const
 Will return true if zeros in the Jacobian are to be dropped from the sparsity pattern.
 
void setIgnoreZerosInJacobian (bool state)
 Set whether the zeros in the Jacobian should be dropped from the sparsity pattern.
 
bool acceptInvalidSolution () const
 Whether or not to accept the solution based on its invalidity.
 
bool allowInvalidSolution () const
 Whether to accept / allow an invalid solution.
 
bool showInvalidSolutionConsole () const
 Whether or not to print out the invalid solutions summary table in console.
 
bool immediatelyPrintInvalidSolution () const
 Whether or not the solution invalid warnings are printed out immediately.
 
bool hasTimeIntegrator () const
 Returns whether or not this Problem has a TimeIntegrator.
 
virtual void execute (const ExecFlagType &exec_type)
 Convenience function for performing execution of MOOSE systems.
 
virtual void executeAllObjects (const ExecFlagType &exec_type)
 
virtual ExecutorgetExecutor (const std::string &name)
 
virtual void computeUserObjects (const ExecFlagType &type, const Moose::AuxGroup &group)
 Call compute methods on UserObjects.
 
virtual void computeUserObjectByName (const ExecFlagType &type, const Moose::AuxGroup &group, const std::string &name)
 Compute an user object with the given name.
 
void needsPreviousNewtonIteration (bool state)
 Set a flag that indicated that user required values for the previous Newton iterate.
 
bool needsPreviousNewtonIteration () const
 Check to see whether we need to compute the variable values of the previous Newton iterate.
 
void needsPreviousMultiAppFixedPointIterationSolution (bool needed, const unsigned int solver_sys_num)
 Set a flag that indicated that user required values for the previous multiapp fixed point iterate for the solver systems (not auxiliary)
 
bool needsPreviousMultiAppFixedPointIterationSolution (const unsigned int solver_sys_num) const
 Check to see whether we need to compute the variable values of the previous multiapp fixed point iteration for the solver systems (not auxiliary)
 
void needsPreviousMultiAppFixedPointIterationAuxiliary (bool state)
 Set a flag that indicated that user required values for the previous multiapp fixed point iterate for the auxiliary system.
 
bool needsPreviousMultiAppFixedPointIterationAuxiliary () const
 Check to see whether we need to compute the variable values of the previous multiapp fixed point iteration for the auxiliary system.
 
void needsPreviousMultiSystemFixedPointIterationSolution (bool needed, const unsigned int solver_sys_num)
 Set a flag that indicates that user requires values for the previous multi-system fixed point iterate for the solver systems (not auxiliary)
 
bool needsPreviousMultiSystemFixedPointIterationSolution (const unsigned int solver_sys_num) const
 Check to see whether we need to compute the variable values of the previous multi-system fixed point iteration for the solver systems (not auxiliary)
 
void needsPreviousMultiSystemFixedPointIterationAuxiliary (bool state)
 Set a flag that indicates that user requires values for the previous multi-system fixed point iterate for the auxiliary system.
 
bool needsPreviousMultiSystemFixedPointIterationAuxiliary () const
 Check to see whether we need to compute the variable values of the previous multi-system fixed point iteration for the auxiliary system.
 
ExecuteMooseObjectWarehouse< Control > & getControlWarehouse ()
 Reference to the control logic warehouse.
 
void executeControls (const ExecFlagType &exec_type)
 Performs setup and execute calls for Control objects.
 
void executeSamplers (const ExecFlagType &exec_type)
 Performs setup and execute calls for Sampler objects.
 
virtual void updateActiveObjects ()
 Update the active objects in the warehouses.
 
void reportMooseObjectDependency (MooseObject *a, MooseObject *b)
 Register a MOOSE object dependency so we can either order operations properly or report when we cannot.
 
ExecuteMooseObjectWarehouse< MultiApp > & getMultiAppWarehouse ()
 
bool hasJacobian () const
 Returns _has_jacobian.
 
bool constJacobian () const
 Returns _const_jacobian (whether a MOOSE object has specified that the Jacobian is the same as the previous time it was computed)
 
void addOutput (const std::string &, const std::string &, InputParameters &)
 Adds an Output object.
 
TheWarehousetheWarehouse () const
 
void setSNESMFReuseBase (bool reuse, bool set_by_user)
 If or not to reuse the base vector for matrix-free calculation.
 
bool useSNESMFReuseBase ()
 Return a flag that indicates if we are reusing the vector base.
 
void skipExceptionCheck (bool skip_exception_check)
 Set a flag that indicates if we want to skip exception and stop solve.
 
bool isSNESMFReuseBaseSetbyUser ()
 Return a flag to indicate if _snesmf_reuse_base is set by users.
 
bool & petscOptionsInserted ()
 If PETSc options are already inserted.
 
PetscOptions & petscOptionsDatabase ()
 
virtual void setUDotRequested (const bool u_dot_requested)
 Set boolean flag to true to store solution time derivative.
 
virtual void setUDotDotRequested (const bool u_dotdot_requested)
 Set boolean flag to true to store solution second time derivative.
 
virtual void setUDotOldRequested (const bool u_dot_old_requested)
 Set boolean flag to true to store old solution time derivative.
 
virtual void setUDotDotOldRequested (const bool u_dotdot_old_requested)
 Set boolean flag to true to store old solution second time derivative.
 
virtual bool uDotRequested ()
 Get boolean flag to check whether solution time derivative needs to be stored.
 
virtual bool uDotDotRequested ()
 Get boolean flag to check whether solution second time derivative needs to be stored.
 
virtual bool uDotOldRequested ()
 Get boolean flag to check whether old solution time derivative needs to be stored.
 
virtual bool uDotDotOldRequested ()
 Get boolean flag to check whether old solution second time derivative needs to be stored.
 
void haveADObjects (bool have_ad_objects) override
 Method for setting whether we have any ad objects.
 
virtual void haveADObjects (bool have_ad_objects)
 Method for setting whether we have any ad objects.
 
bool haveADObjects () const
 Method for reading wehther we have any ad objects.
 
bool shouldSolve () const
 
const MortarInterfaceWarehousemortarData () const
 Returns the mortar data object.
 
MortarInterfaceWarehousemortarData ()
 
virtual bool hasNeighborCoupling () const
 Whether the simulation has neighbor coupling.
 
virtual bool hasMortarCoupling () const
 Whether the simulation has mortar coupling.
 
void computingNonlinearResid (bool computing_nonlinear_residual) final
 Set whether or not the problem is in the process of computing the nonlinear residual.
 
bool computingNonlinearResid () const
 Returns true if the problem is in the process of computing the nonlinear residual.
 
virtual void computingNonlinearResid (const bool computing_nonlinear_residual)
 Set whether or not the problem is in the process of computing the nonlinear residual.
 
void setCurrentlyComputingResidual (bool currently_computing_residual) final
 Set whether or not the problem is in the process of computing the residual.
 
void numGridSteps (unsigned int num_grid_steps)
 Set the number of steps in a grid sequences.
 
void uniformRefine ()
 uniformly refine the problem mesh(es).
 
void automaticScaling (bool automatic_scaling) override
 Automatic scaling setter.
 
virtual void automaticScaling (bool automatic_scaling)
 Automatic scaling setter.
 
bool automaticScaling () const
 Automatic scaling getter.
 
virtual void reinitElemFaceRef (const Elem *elem, unsigned int side, Real tolerance, const std::vector< Point > *const pts, const std::vector< Real > *const weights=nullptr, const THREAD_ID tid=0) override
 reinitialize FE objects on a given element on a given side at a given set of reference points and then compute variable data.
 
virtual void reinitNeighborFaceRef (const Elem *neighbor_elem, unsigned int neighbor_side, Real tolerance, const std::vector< Point > *const pts, const std::vector< Real > *const weights=nullptr, const THREAD_ID tid=0) override
 reinitialize FE objects on a given neighbor element on a given side at a given set of reference points and then compute variable data.
 
bool fvBCsIntegrityCheck () const
 
void fvBCsIntegrityCheck (bool fv_bcs_integrity_check)
 
bool sideUOInterfaceMatPropIntegrityCheck () const
 
void getFVMatsAndDependencies (SubdomainID block_id, std::vector< std::shared_ptr< MaterialBase > > &face_materials, std::vector< std::shared_ptr< MaterialBase > > &neighbor_materials, std::set< MooseVariableFieldBase * > &variables, const THREAD_ID tid)
 Get the materials and variables potentially needed for FV.
 
void resizeMaterialData (Moose::MaterialDataType data_type, unsigned int nqp, const THREAD_ID tid)
 Resize material data.
 
bool haveDisplaced () const override final
 Whether we have a displaced problem in our simulation.
 
bool hasLinearConvergenceObjects () const
 Whether we have linear convergence objects.
 
void setNonlinearConvergenceNames (const std::vector< ConvergenceName > &convergence_names)
 Sets the nonlinear convergence object name(s) if there is one.
 
void setLinearConvergenceNames (const std::vector< ConvergenceName > &convergence_names)
 Sets the linear convergence object name(s) if there is one.
 
void setMultiAppFixedPointConvergenceName (const ConvergenceName &convergence_name)
 Sets the MultiApp fixed point convergence object name if there is one.
 
void setSteadyStateConvergenceName (const ConvergenceName &convergence_name)
 Sets the steady-state detection convergence object name if there is one.
 
const std::vector< ConvergenceName > & getNonlinearConvergenceNames () const
 Gets the nonlinear system convergence object name(s).
 
const std::vector< ConvergenceName > & getLinearConvergenceNames () const
 Gets the linear convergence object name(s).
 
const ConvergenceName & getMultiAppFixedPointConvergenceName () const
 Gets the MultiApp fixed point convergence object name.
 
const ConvergenceName & getSteadyStateConvergenceName () const
 Gets the steady-state detection convergence object name.
 
void computingScalingJacobian (bool computing_scaling_jacobian)
 Setter for whether we're computing the scaling jacobian.
 
bool computingScalingJacobian () const override final
 Getter for whether we're computing the scaling jacobian.
 
void computingScalingResidual (bool computing_scaling_residual)
 Setter for whether we're computing the scaling residual.
 
bool computingScalingResidual () const override final
 
MooseAppCoordTransformcoordTransform ()
 
virtual std::size_t numNonlinearSystems () const override
 
virtual std::size_t numLinearSystems () const override
 
virtual std::size_t numSolverSystems () const override
 
bool isSolverSystemNonlinear (const unsigned int sys_num)
 Check if the solver system is nonlinear.
 
virtual unsigned int currentNlSysNum () const override
 
virtual unsigned int currentLinearSysNum () const override
 
virtual unsigned int nlSysNum (const NonlinearSystemName &nl_sys_name) const override
 
unsigned int linearSysNum (const LinearSystemName &linear_sys_name) const override
 
unsigned int solverSysNum (const SolverSystemName &solver_sys_name) const override
 
unsigned int systemNumForVariable (const VariableName &variable_name) const
 
bool getFailNextNonlinearConvergenceCheck () const
 Whether it will skip further residual evaluations and fail the next nonlinear convergence check(s)
 
bool getFailNextSystemConvergenceCheck () const
 Whether it will fail the next system convergence check(s), triggering failed step behavior.
 
void setFailNextNonlinearConvergenceCheck ()
 Skip further residual evaluations and fail the next nonlinear convergence check(s)
 
void setFailNextSystemConvergenceCheck ()
 Tell the problem that the system(s) cannot be considered converged next time convergence is checked.
 
void resetFailNextNonlinearConvergenceCheck ()
 Tell the problem that the nonlinear convergence check(s) may proceed as normal.
 
void resetFailNextSystemConvergenceCheck ()
 Tell the problem that the system convergence check(s) may proceed as normal.
 
void setExecutionPrinting (const ExecFlagEnum &print_exec)
 
bool shouldPrintExecution (const THREAD_ID tid) const
 Check whether the problem should output execution orders at this time.
 
void reinitMortarUserObjects (BoundaryID primary_boundary_id, BoundaryID secondary_boundary_id, bool displaced)
 Call reinit on mortar user objects with matching primary boundary ID, secondary boundary ID, and displacement characteristics.
 
virtual const std::vector< VectorTag > & currentResidualVectorTags () const override
 Return the residual vector tags we are currently computing.
 
void setCurrentResidualVectorTags (const std::set< TagID > &vector_tags)
 Set the current residual vector tag data structure based on the passed in tag IDs.
 
void clearCurrentResidualVectorTags ()
 Clear the current residual vector tag data structure.
 
void clearCurrentJacobianMatrixTags ()
 Clear the current Jacobian matrix tag data structure ... if someone creates it.
 
virtual void needFV () override
 marks this problem as including/needing finite volume functionality.
 
virtual bool haveFV () const override
 returns true if this problem includes/needs finite volume functionality.
 
virtual bool hasNonlocalCoupling () const override
 Whether the simulation has active nonlocal coupling which should be accounted for in the Jacobian.
 
bool identifyVariableGroupsInNL () const
 Whether to identify variable groups in nonlinear systems.
 
virtual void setCurrentLowerDElem (const Elem *const lower_d_elem, const THREAD_ID tid) override
 Set the current lower dimensional element.
 
virtual void setCurrentBoundaryID (BoundaryID bid, const THREAD_ID tid) override
 sets the current boundary ID in assembly
 
const std::vector< NonlinearSystemName > & getNonlinearSystemNames () const
 
const std::vector< LinearSystemName > & getLinearSystemNames () const
 
const std::vector< SolverSystemName > & getSolverSystemNames () const
 
virtual const libMesh::CouplingMatrixnonlocalCouplingMatrix (const unsigned i) const override
 
virtual bool checkNonlocalCouplingRequirement () const override
 
virtual Moose::FEBackend feBackend () const
 
void createTagMatrices (CreateTaggedMatrixKey)
 
bool useHashTableMatrixAssembly () const
 
bool hasKokkosObjects () const
 
bool hasKokkosResidualObjects () const
 
void addKokkosMeshInitializationHook (std::function< void()> function)
 Add a function hook that needs to be called after Kokkos mesh initialization.
 
const bool & currentlyComputingResidual () const
 Returns true if the problem is in the process of computing the residual.
 
virtual bool nlConverged (const unsigned int nl_sys_num)
 
virtual bool converged (const unsigned int sys_num)
 Eventually we want to convert this virtual over to taking a solver system number argument.
 
bool defaultGhosting ()
 Whether or not the user has requested default ghosting ot be on.
 
virtual TagID addVectorTag (const TagName &tag_name, const Moose::VectorTagType type=Moose::VECTOR_TAG_RESIDUAL)
 Create a Tag.
 
void addNotZeroedVectorTag (const TagID tag)
 Adds a vector tag to the list of vectors that will not be zeroed when other tagged vectors are.
 
bool vectorTagNotZeroed (const TagID tag) const
 Checks if a vector tag is in the list of vectors that will not be zeroed when other tagged vectors are.
 
virtual const VectorTaggetVectorTag (const TagID tag_id) const
 Get a VectorTag from a TagID.
 
std::vector< VectorTaggetVectorTags (const std::set< TagID > &tag_ids) const
 
virtual const std::vector< VectorTag > & getVectorTags (const Moose::VectorTagType type=Moose::VECTOR_TAG_ANY) const
 Return all vector tags, where a tag is represented by a map from name to ID.
 
virtual TagID getVectorTagID (const TagName &tag_name) const
 Get a TagID from a TagName.
 
virtual TagName vectorTagName (const TagID tag) const
 Retrieve the name associated with a TagID.
 
virtual bool vectorTagExists (const TagID tag_id) const
 Check to see if a particular Tag exists.
 
virtual bool vectorTagExists (const TagName &tag_name) const
 Check to see if a particular Tag exists by using Tag name.
 
virtual unsigned int numVectorTags (const Moose::VectorTagType type=Moose::VECTOR_TAG_ANY) const
 The total number of tags, which can be limited to the tag type.
 
virtual Moose::VectorTagType vectorTagType (const TagID tag_id) const
 
virtual TagID addMatrixTag (TagName tag_name)
 Create a Tag.
 
virtual TagID getMatrixTagID (const TagName &tag_name) const
 Get a TagID from a TagName.
 
virtual TagName matrixTagName (TagID tag)
 Retrieve the name associated with a TagID.
 
virtual bool matrixTagExists (const TagName &tag_name) const
 Check to see if a particular Tag exists.
 
virtual bool matrixTagExists (TagID tag_id) const
 Check to see if a particular Tag exists.
 
virtual unsigned int numMatrixTags () const
 The total number of tags.
 
virtual std::map< TagName, TagID > & getMatrixTags ()
 Return all matrix tags in the system, where a tag is represented by a map from name to ID.
 
virtual bool hasLinearVariable (const std::string &var_name) const
 Whether or not this problem has this linear variable.
 
virtual bool hasAuxiliaryVariable (const std::string &var_name) const
 Whether or not this problem has this auxiliary variable.
 
virtual const std::set< MooseVariableFieldBase * > & getActiveElementalMooseVariables (const THREAD_ID tid) const
 Get the MOOSE variables to be reinited on each element.
 
virtual bool hasActiveElementalMooseVariables (const THREAD_ID tid) const
 Whether or not a list of active elemental moose variables has been set.
 
Moose::CoordinateSystemType getCoordSystem (SubdomainID sid) const
 
unsigned int getAxisymmetricRadialCoord () const
 Returns the desired radial direction for RZ coordinate transformation.
 
virtual DiracKernelInfodiracKernelInfo ()
 
void reinitNeighborLowerDElem (const Elem *elem, const THREAD_ID tid=0)
 reinitialize a neighboring lower dimensional element
 
void reinitMortarElem (const Elem *elem, const THREAD_ID tid=0)
 Reinit a mortar element to obtain a valid JxW.
 
void reinitGeomSearch ()
 reinitialize this object's geometric search data, e.g.
 
virtual void storeSubdomainMatPropName (SubdomainID block_id, const std::string &name)
 Adds the given material property to a storage map based on block ids.
 
virtual void storeBoundaryMatPropName (BoundaryID boundary_id, const std::string &name)
 Adds the given material property to a storage map based on boundary ids.
 
virtual void storeSubdomainZeroMatProp (SubdomainID block_id, const MaterialPropertyName &name)
 Adds to a map based on block ids of material properties for which a zero value can be returned.
 
virtual void storeBoundaryZeroMatProp (BoundaryID boundary_id, const MaterialPropertyName &name)
 Adds to a map based on boundary ids of material properties for which a zero value can be returned.
 
virtual void storeSubdomainDelayedCheckMatProp (const std::string &requestor, SubdomainID block_id, const std::string &name)
 Adds to a map based on block ids of material properties to validate.
 
virtual void storeBoundaryDelayedCheckMatProp (const std::string &requestor, BoundaryID boundary_id, const std::string &name)
 Adds to a map based on boundary ids of material properties to validate.
 
virtual void checkBlockMatProps ()
 Checks block material properties integrity.
 
virtual void checkBoundaryMatProps ()
 Checks boundary material properties integrity.
 
virtual void markMatPropRequested (const std::string &)
 Helper method for adding a material property name to the _material_property_requested set.
 
virtual bool isMatPropRequested (const std::string &prop_name) const
 Find out if a material property has been requested by any object.
 
void addConsumedPropertyName (const MooseObjectName &obj_name, const std::string &prop_name)
 Helper for tracking the object that is consuming a property for MaterialPropertyDebugOutput.
 
const std::map< MooseObjectName, std::set< std::string > > & getConsumedPropertyMap () const
 Return the map that tracks the object with consumed material properties.
 
virtual std::set< SubdomainIDgetMaterialPropertyBlocks (const std::string &prop_name)
 Get a vector containing the block ids the material property is defined on.
 
virtual std::vector< SubdomainName > getMaterialPropertyBlockNames (const std::string &prop_name)
 Get a vector of block id equivalences that the material property is defined on.
 
virtual bool hasBlockMaterialProperty (SubdomainID block_id, const std::string &prop_name)
 Check if a material property is defined on a block.
 
virtual std::set< BoundaryIDgetMaterialPropertyBoundaryIDs (const std::string &prop_name)
 Get a vector containing the block ids the material property is defined on.
 
virtual std::vector< BoundaryName > getMaterialPropertyBoundaryNames (const std::string &prop_name)
 Get a vector of block id equivalences that the material property is defined on.
 
virtual bool hasBoundaryMaterialProperty (BoundaryID boundary_id, const std::string &prop_name)
 Check if a material property is defined on a block.
 
virtual std::set< dof_id_type > & ghostedElems ()
 Return the list of elements that should have their DoFs ghosted to this processor.
 
const bool & currentlyComputingJacobian () const
 Returns true if the problem is in the process of computing the Jacobian.
 
void setCurrentlyComputingJacobian (const bool currently_computing_jacobian)
 Set whether or not the problem is in the process of computing the Jacobian.
 
const bool & currentlyComputingResidualAndJacobian () const
 Returns true if the problem is in the process of computing the residual and the Jacobian.
 
void setCurrentlyComputingResidualAndJacobian (bool currently_computing_residual_and_jacobian)
 Set whether or not the problem is in the process of computing the Jacobian.
 
virtual bool safeAccessTaggedMatrices () const
 Is it safe to access the tagged matrices.
 
virtual bool safeAccessTaggedVectors () const
 Is it safe to access the tagged vectors.
 
const std::set< TagID > & getActiveScalarVariableCoupleableVectorTags (const THREAD_ID tid) const
 
const std::set< TagID > & getActiveScalarVariableCoupleableMatrixTags (const THREAD_ID tid) const
 
const std::set< TagID > & getActiveFEVariableCoupleableVectorTags (const THREAD_ID tid) const
 
const std::set< TagID > & getActiveFEVariableCoupleableMatrixTags (const THREAD_ID tid) const
 
void addAlgebraicGhostingFunctor (libMesh::GhostingFunctor &algebraic_gf, bool to_mesh=true)
 Add an algebraic ghosting functor to this problem's DofMaps.
 
void addCouplingGhostingFunctor (libMesh::GhostingFunctor &coupling_gf, bool to_mesh=true)
 Add a coupling functor to this problem's DofMaps.
 
void removeAlgebraicGhostingFunctor (libMesh::GhostingFunctor &algebraic_gf)
 Remove an algebraic ghosting functor from this problem's DofMaps.
 
void removeCouplingGhostingFunctor (libMesh::GhostingFunctor &coupling_gf)
 Remove a coupling ghosting functor from this problem's DofMaps.
 
void hasScalingVector (const unsigned int nl_sys_num)
 Tells this problem that the assembly associated with the given nonlinear system number involves a scaling vector.
 
void clearAllDofIndices ()
 Clear dof indices from variables in nl and aux systems.
 
template<typename T >
const Moose::Functor< T > & getFunctor (const std::string &name, const THREAD_ID tid, const std::string &requestor_name, bool requestor_is_ad)
 
bool hasFunctor (const std::string &name, const THREAD_ID tid) const
 checks whether we have a functor corresponding to name on the thread id tid
 
template<typename T >
bool hasFunctorWithType (const std::string &name, const THREAD_ID tid) const
 checks whether we have a functor of type T corresponding to name on the thread id tid
 
template<typename T >
void addFunctor (const std::string &name, const Moose::FunctorBase< T > &functor, const THREAD_ID tid)
 add a functor to the problem functor container
 
template<typename T , typename PolymorphicLambda >
const Moose::FunctorBase< T > & addPiecewiseByBlockLambdaFunctor (const std::string &name, PolymorphicLambda my_lammy, const std::set< ExecFlagType > &clearance_schedule, const MooseMesh &mesh, const std::set< SubdomainID > &block_ids, const THREAD_ID tid)
 Add a functor that has block-wise lambda definitions, e.g.
 
void setFunctorOutput (bool set_output)
 Setter for debug functor output.
 
void setChainControlDataOutput (bool set_output)
 Setter for debug chain control data output.
 
template<typename T >
void registerUnfilledFunctorRequest (T *functor_interface, const std::string &functor_name, const THREAD_ID tid)
 Register an unfulfilled functor request.
 
void reinitFVFace (const THREAD_ID tid, const FaceInfo &fi)
 reinitialize the finite volume assembly data for the provided face and thread
 
void preparePRefinement ()
 Prepare DofMap and Assembly classes with our p-refinement information.
 
bool doingPRefinement () const
 
bool havePRefinement () const
 Query whether p-refinement has been requested at any point during the simulation.
 
void markFamilyPRefinement (const InputParameters &params)
 Mark a variable family for either disabling or enabling p-refinement with valid parameters of a variable.
 
template<typename T >
MooseVariableFEBasegetVariableHelper (const THREAD_ID tid, const std::string &var_name, Moose::VarKindType expected_var_type, Moose::VarFieldType expected_var_field_type, const std::vector< T > &systems, const SystemBase &aux) const
 
void _setCLIOption ()
 For Internal Use.
 
virtual void terminateSolve ()
 Allow objects to request clean termination of the solve.
 
virtual bool isSolveTerminationRequested () const
 Check of termination has been requested.
 
const ConsoleStreamconsole () const
 Return console handle.
 
virtual bool enabled () const
 Return the enabled status of the object.
 
std::shared_ptr< MooseObjectgetSharedPtr ()
 Get another shared pointer to this object that has the same ownership group.
 
std::shared_ptr< const MooseObjectgetSharedPtr () const
 
bool isKokkosObject () const
 Get whether this object is a Kokkos functor The parameter MooseBase::kokkos_object_param is set by the Kokkos base classes.
 
MooseAppgetMooseApp () const
 Get the MooseApp this class is associated with.
 
const std::string & type () const
 Get the type of this class.
 
const std::string & name () const
 Get the name of the class.
 
std::string typeAndName () const
 Get the class's combined type and name; useful in error handling.
 
MooseObjectParameterName uniqueParameterName (const std::string &parameter_name) const
 
MooseObjectName uniqueName () const
 
const InputParametersparameters () const
 Get the parameters of the object.
 
const hit::Node * getHitNode () const
 
bool hasBase () const
 
const std::string & getBase () const
 
template<typename T >
const T & getParam (const std::string &name) const
 Retrieve a parameter for the object.
 
template<typename T1 , typename T2 >
std::vector< std::pair< T1, T2 > > getParam (const std::string &param1, const std::string &param2) const
 Retrieve two parameters and provide pair of parameters for the object.
 
template<typename T >
const T * queryParam (const std::string &name) const
 Query a parameter for the object.
 
template<typename T >
const T & getRenamedParam (const std::string &old_name, const std::string &new_name) const
 Retrieve a renamed parameter for the object.
 
template<typename T >
getCheckedPointerParam (const std::string &name, const std::string &error_string="") const
 Verifies that the requested parameter exists and is not NULL and returns it to the caller.
 
bool isParamValid (const std::string &name) const
 Test if the supplied parameter is valid.
 
bool isParamSetByUser (const std::string &name) const
 Test if the supplied parameter is set by a user, as opposed to not set or set to default.
 
void connectControllableParams (const std::string &parameter, const std::string &object_type, const std::string &object_name, const std::string &object_parameter) const
 Connect controllable parameter of this action with the controllable parameters of the objects added by this action.
 
template<typename... Args>
void paramError (const std::string &param, Args... args) const
 Emits an error prefixed with the file and line number of the given param (from the input file) along with the full parameter path+name followed by the given args as the message.
 
template<typename... Args>
void paramWarning (const std::string &param, Args... args) const
 Emits a warning prefixed with the file and line number of the given param (from the input file) along with the full parameter path+name followed by the given args as the message.
 
template<typename... Args>
void paramWarning (const std::string &param, Args... args) const
 
template<typename... Args>
void paramInfo (const std::string &param, Args... args) const
 Emits an informational message prefixed with the file and line number of the given param (from the input file) along with the full parameter path+name followed by the given args as the message.
 
std::string messagePrefix (const bool hit_prefix=true) const
 
std::string errorPrefix (const std::string &) const
 Deprecated message prefix; the error type is no longer used.
 
template<typename... Args>
void mooseError (Args &&... args) const
 Emits an error prefixed with object name and type and optionally a file path to the top-level block parameter if available.
 
template<typename... Args>
void mooseDocumentedError (const std::string &repo_name, const unsigned int issue_num, Args &&... args) const
 
template<typename... Args>
void mooseErrorNonPrefixed (Args &&... args) const
 Emits an error without the prefixing included in mooseError().
 
template<typename... Args>
void mooseWarning (Args &&... args) const
 Emits a warning prefixed with object name and type.
 
template<typename... Args>
void mooseWarning (Args &&... args) const
 
template<typename... Args>
void mooseWarningNonPrefixed (Args &&... args) const
 Emits a warning without the prefixing included in mooseWarning().
 
template<typename... Args>
void mooseWarningNonPrefixed (Args &&... args) const
 
template<typename... Args>
void mooseDeprecated (Args &&... args) const
 Emits a deprecation warning prefixed with the object name and type, and a stack trace.
 
template<typename... Args>
void mooseDeprecated (Args &&... args) const
 
template<typename... Args>
void mooseDeprecatedNoTrace (Args &&... args) const
 Emits a deprecation warning prefixed with the object name and type, and no stack trace.
 
template<typename... Args>
void mooseInfo (Args &&... args) const
 
void callMooseError (std::string msg, const bool with_prefix, const hit::Node *node=nullptr, const bool show_trace=true) const
 External method for calling moose error with added object context.
 
const Parallel::Communicatorcomm () const
 
processor_id_type n_processors () const
 
processor_id_type processor_id () const
 
std::string getDataFileName (const std::string &param) const
 Deprecated method.
 
std::string getDataFileNameByName (const std::string &relative_path) const
 Deprecated method.
 
std::string getDataFilePath (const std::string &relative_path) const
 Returns the path of a data file for a given relative file path.
 
PerfGraphperfGraph ()
 Get the PerfGraph.
 
const libMesh::ConstElemRangegetEvaluableElementRange ()
 In general, {evaluable elements} >= {local elements} U {algebraic ghosting elements}.
 
const libMesh::ConstElemRangegetNonlinearEvaluableElementRange ()
 
const libMesh::ConstElemRangegetCurrentAlgebraicElementRange ()
 These are the element and nodes that contribute to the jacobian and residual for this local processor.
 
const libMesh::ConstNodeRangegetCurrentAlgebraicNodeRange ()
 
const ConstBndNodeRangegetCurrentAlgebraicBndNodeRange ()
 
void setCurrentAlgebraicElementRange (libMesh::ConstElemRange *range)
 These functions allow setting custom ranges for the algebraic elements, nodes, and boundary nodes that contribute to the jacobian and residual for this local processor.
 
void setCurrentAlgebraicNodeRange (libMesh::ConstNodeRange *range)
 
void setCurrentAlgebraicBndNodeRange (ConstBndNodeRange *range)
 
void allowOutput (bool state)
 Ability to enable/disable all output calls.
 
template<typename T >
void allowOutput (bool state)
 
Moose::Kokkos::Array< Moose::Kokkos::System > & getKokkosSystems ()
 Get the Kokkos System array (always populated when any Kokkos object exists)
 
const Moose::Kokkos::Array< Moose::Kokkos::System > & getKokkosSystems () const
 
Moose::Kokkos::Array< Moose::Kokkos::FESystem > & getKokkosFESystems ()
 Get the Kokkos FESystem array (populated only when FE Kokkos objects exist)
 
const Moose::Kokkos::Array< Moose::Kokkos::FESystem > & getKokkosFESystems () const
 
Moose::Kokkos::SystemgetKokkosSystem (const unsigned int sys_num)
 Get the Kokkos System of a specified number.
 
const Moose::Kokkos::SystemgetKokkosSystem (const unsigned int sys_num) const
 
Moose::Kokkos::FESystemgetKokkosFESystem (const unsigned int sys_num)
 Get the Kokkos FESystem of a specified number.
 
const Moose::Kokkos::FESystemgetKokkosFESystem (const unsigned int sys_num) const
 
bool hasMultiApps () const
 Returns whether or not the current simulation has any multiapps.
 
bool hasMultiApps (ExecFlagType type) const
 
bool hasMultiApp (const std::string &name) const
 
const AutomaticMortarGenerationgetMortarInterface (const std::pair< BoundaryID, BoundaryID > &primary_secondary_boundary_pair, const std::pair< SubdomainID, SubdomainID > &primary_secondary_subdomain_pair, bool on_displaced) const
 Return the undisplaced or displaced mortar generation object associated with the provided boundaries and subdomains.
 
AutomaticMortarGenerationgetMortarInterface (const std::pair< BoundaryID, BoundaryID > &primary_secondary_boundary_pair, const std::pair< SubdomainID, SubdomainID > &primary_secondary_subdomain_pair, bool on_displaced)
 
const MaterialPropertyStoragegetMaterialPropertyStorage ()
 Return a reference to the material property storage.
 
const MaterialPropertyStoragegetBndMaterialPropertyStorage ()
 
const MaterialPropertyStoragegetNeighborMaterialPropertyStorage ()
 
Moose::Kokkos::MaterialPropertyStoragegetKokkosMaterialPropertyStorage ()
 
Moose::Kokkos::MaterialPropertyStoragegetKokkosBndMaterialPropertyStorage ()
 
Moose::Kokkos::MaterialPropertyStoragegetKokkosNeighborMaterialPropertyStorage ()
 
const MooseObjectWarehouse< Indicator > & getIndicatorWarehouse ()
 Return indicator/marker storage.
 
const MooseObjectWarehouse< InternalSideIndicatorBase > & getInternalSideIndicatorWarehouse ()
 
const MooseObjectWarehouse< Marker > & getMarkerWarehouse ()
 
bool needBoundaryMaterialOnSide (BoundaryID bnd_id, const THREAD_ID tid)
 These methods are used to determine whether stateful material properties need to be stored on internal sides.
 
bool needInterfaceMaterialOnSide (BoundaryID bnd_id, const THREAD_ID tid)
 
bool needInternalNeighborSideMaterial (SubdomainID subdomain_id, const THREAD_ID tid)
 
const ExecFlagTypegetCurrentExecuteOnFlag () const
 Return/set the current execution flag.
 
void setCurrentExecuteOnFlag (const ExecFlagType &)
 

Static Public Member Functions

static InputParameters validParams ()
 
static void selectVectorTagsFromSystem (const SystemBase &system, const std::vector< VectorTag > &input_vector_tags, std::set< TagID > &selected_tags)
 Select the vector tags which belong to a specific system.
 
static void selectMatrixTagsFromSystem (const SystemBase &system, const std::map< TagName, TagID > &input_matrix_tags, std::set< TagID > &selected_tags)
 Select the matrix tags which belong to a specific system.
 
static void callMooseError (MooseApp *const app, const InputParameters &params, std::string msg, const bool with_prefix, const hit::Node *node, const bool show_trace=true)
 External method for calling moose error with added object context.
 
template<typename T >
static void objectSetupHelper (const std::vector< T * > &objects, const ExecFlagType &exec_flag)
 Helpers for calling the necessary setup/execute functions for the supplied objects.
 
template<typename T >
static void objectExecuteHelper (const std::vector< T * > &objects)
 

Public Attributes

std::map< std::string, std::vector< dof_id_type > > _var_dof_map
 
 usingCombinedWarningSolutionWarnings
 
const ConsoleStream _console
 An instance of helper class to write streams to the Console objects.
 
std::vector< Real > _real_zero
 Convenience zeros.
 
std::vector< VariableValue_scalar_zero
 
std::vector< VariableValue_zero
 
std::vector< VariablePhiValue_phi_zero
 
std::vector< MooseArray< ADReal > > _ad_zero
 
std::vector< VariableGradient_grad_zero
 
std::vector< MooseArray< ADRealVectorValue > > _ad_grad_zero
 
std::vector< VariablePhiGradient_grad_phi_zero
 
std::vector< VariableSecond_second_zero
 
std::vector< MooseArray< ADRealTensorValue > > _ad_second_zero
 
std::vector< VariablePhiSecond_second_phi_zero
 
std::vector< Point > _point_zero
 
std::vector< VectorVariableValue_vector_zero
 
std::vector< VectorVariableCurl_vector_curl_zero
 

Static Public Attributes

static const std::string type_param = "_type"
 The name of the parameter that contains the object type.
 
static const std::string name_param = "_object_name"
 The name of the parameter that contains the object name.
 
static const std::string unique_name_param = "_unique_name"
 The name of the parameter that contains the unique object name.
 
static const std::string app_param = "_moose_app"
 The name of the parameter that contains the MooseApp.
 
static const std::string moose_base_param = "_moose_base"
 The name of the parameter that contains the moose system base.
 
static const std::string kokkos_object_param = "_kokkos_object"
 The name of the parameter that indicates an object is a Kokkos functor.
 

Protected Member Functions

virtual void meshChanged ()
 Deprecated.
 
void createTagVectors ()
 Create extra tagged vectors and matrices.
 
void createTagSolutions ()
 Create extra tagged solution vectors.
 
virtual void meshDisplaced ()
 Update data after a mesh displaced.
 
void computeSystems (const ExecFlagType &type)
 Do generic system computations.
 
bool duplicateVariableCheck (const std::string &var_name, const libMesh::FEType &type, bool is_aux, const std::set< SubdomainID > *const active_subdomains)
 Helper to check for duplicate variable names across systems or within a single system.
 
void computeUserObjectsInternal (const ExecFlagType &type, TheWarehouse::Query &query)
 
void computeKokkosUserObjectsInternal (const ExecFlagType &type, TheWarehouse::Query &query)
 
void checkDisplacementOrders ()
 Verify that SECOND order mesh uses SECOND order displacements.
 
void checkUserObjects ()
 
void checkDependMaterialsHelper (const std::map< SubdomainID, std::vector< std::shared_ptr< MaterialBase > > > &materials_map)
 Helper method for checking Material object dependency.
 
void checkCoordinateSystems ()
 Verify that there are no element type/coordinate type conflicts.
 
void reinitBecauseOfGhostingOrNewGeomObjects (bool mortar_changed=false)
 Call when it is possible that the needs for ghosted elements has changed.
 
void addObjectParamsHelper (InputParameters &params, const std::string &object_name, const std::string &var_param_name="variable")
 Helper for setting the "_subproblem" and "_sys" parameters in addObject() and in addUserObject().
 
template<typename T >
MooseVariableFieldBasegetVariableHelper (const THREAD_ID tid, const std::string &var_name, Moose::VarKindType expected_var_type, Moose::VarFieldType expected_var_field_type, const std::vector< T > &nls, const SystemBase &aux) const
 Helper function called by getVariable that handles the logic for checking whether Variables of the requested type are available.
 
bool verifyVectorTags () const
 Verify the integrity of _vector_tags and _typed_vector_tags.
 
template<bool warning>
void flagInvalidSolutionInternal (const InvalidSolutionID invalid_solution_id) const
 Set solution invalid mark for the given solution ID.
 
InvalidSolutionID registerInvalidSolutionInternal (const std::string &message, const bool warning) const
 
PerfID registerTimedSection (const std::string &section_name, const unsigned int level) const
 Call to register a named section for timing.
 
PerfID registerTimedSection (const std::string &section_name, const unsigned int level, const std::string &live_message, const bool print_dots=true) const
 Call to register a named section for timing.
 
std::string timedSectionName (const std::string &section_name) const
 
template<typename T , typename... Args>
T & declareRestartableData (const std::string &data_name, Args &&... args)
 Declare a piece of data as "restartable" and initialize it.
 
template<typename T , typename... Args>
ManagedValue< T > declareManagedRestartableDataWithContext (const std::string &data_name, void *context, Args &&... args)
 Declares a piece of "managed" restartable data and initialize it.
 
template<typename T , typename... Args>
const T & getRestartableData (const std::string &data_name) const
 Declare a piece of data as "restartable" and initialize it Similar to declareRestartableData but returns a const reference to the object.
 
template<typename T , typename... Args>
T & declareRestartableDataWithContext (const std::string &data_name, void *context, Args &&... args)
 Declare a piece of data as "restartable" and initialize it.
 
template<typename T , typename... Args>
T & declareRecoverableData (const std::string &data_name, Args &&... args)
 Declare a piece of data as "recoverable" and initialize it.
 
template<typename T , typename... Args>
T & declareRestartableDataWithObjectName (const std::string &data_name, const std::string &object_name, Args &&... args)
 Declare a piece of data as "restartable".
 
template<typename T , typename... Args>
T & declareRestartableDataWithObjectNameWithContext (const std::string &data_name, const std::string &object_name, void *context, Args &&... args)
 Declare a piece of data as "restartable".
 
std::string restartableName (const std::string &data_name) const
 Gets the name of a piece of restartable data given a data name, adding the system name and object name prefix.
 

Protected Attributes

MooseMesh_mesh
 
bool _initialized
 
std::optional< std::vector< ConvergenceName > > _nonlinear_convergence_names
 Nonlinear system(s) convergence name(s)
 
std::optional< std::vector< ConvergenceName > > _linear_convergence_names
 Linear system(s) convergence name(s) (if any)
 
std::optional< ConvergenceName > _multiapp_fixed_point_convergence_name
 MultiApp fixed point convergence name.
 
std::optional< ConvergenceName > _steady_state_convergence_name
 Steady-state detection convergence name.
 
std::set< TagID_fe_vector_tags
 
std::set< TagID_fe_matrix_tags
 
std::set< TagID_linear_vector_tags
 Temporary storage for filtered vector tags for linear systems.
 
std::set< TagID_linear_matrix_tags
 Temporary storage for filtered matrix tags for linear systems.
 
const bool & _solve
 Whether or not to actually solve the nonlinear system.
 
bool _transient
 
Real & _time
 
Real & _time_old
 
int_t_step
 
Real & _dt
 
Real & _dt_old
 
bool _need_to_add_default_nonlinear_convergence
 Flag that the problem needs to add the default nonlinear convergence.
 
bool _need_to_add_default_multiapp_fixed_point_convergence
 Flag that the problem needs to add the default fixed point convergence.
 
bool _need_to_add_default_steady_state_convergence
 Flag that the problem needs to add the default steady convergence.
 
const std::vector< LinearSystemName > _linear_sys_names
 The linear system names.
 
const std::size_t _num_linear_sys
 The number of linear systems.
 
std::vector< std::shared_ptr< LinearSystem > > _linear_systems
 The vector of linear systems.
 
std::map< LinearSystemName, unsigned int_linear_sys_name_to_num
 Map from linear system name to number.
 
LinearSystem_current_linear_sys
 The current linear system that we are solving.
 
const bool _using_default_nl
 Boolean to check if we have the default nonlinear system.
 
const std::vector< NonlinearSystemName > _nl_sys_names
 The nonlinear system names.
 
const std::size_t _num_nl_sys
 The number of nonlinear systems.
 
std::vector< std::shared_ptr< NonlinearSystemBase > > _nl
 The nonlinear systems.
 
std::map< NonlinearSystemName, unsigned int_nl_sys_name_to_num
 Map from nonlinear system name to number.
 
NonlinearSystemBase_current_nl_sys
 The current nonlinear system that we are solving.
 
SolverSystem_current_solver_sys
 The current solver system.
 
std::vector< std::shared_ptr< SolverSystem > > _solver_systems
 Combined container to base pointer of every solver system.
 
std::map< SolverVariableName, unsigned int_solver_var_to_sys_num
 Map connecting variable names with their respective solver systems.
 
std::map< SolverSystemName, unsigned int_solver_sys_name_to_num
 Map connecting solver system names with their respective systems.
 
std::vector< SolverSystemName > _solver_sys_names
 The union of nonlinear and linear system names.
 
std::shared_ptr< AuxiliarySystem_aux
 The auxiliary system.
 
Moose::CouplingType _coupling
 Type of variable coupling.
 
std::vector< std::unique_ptr< libMesh::CouplingMatrix > > _cm
 Coupling matrix for variables.
 
Moose::Kokkos::Array< Moose::Kokkos::System_kokkos_systems
 System array - sparsely populated (only slots for systems needing a Kokkos::System)
 
Moose::Kokkos::Array< Moose::Kokkos::FESystem_kokkos_fe_systems
 FESystem array - sparsely populated (only slots for systems needing a Kokkos::FESystem)
 
std::map< std::string, unsigned int_subspace_dim
 Dimension of the subspace spanned by the vectors with a given prefix.
 
std::vector< std::vector< std::unique_ptr< Assembly > > > _assembly
 The Assembly objects.
 
Moose::Kokkos::Assembly _kokkos_assembly
 
MooseObjectWarehouse< MeshDivision_mesh_divisions
 Warehouse to store mesh divisions NOTE: this could probably be moved to the MooseMesh instead of the Problem Time (and people's uses) will tell where this fits best.
 
MooseObjectWarehouse< Function_functions
 functions
 
MooseObjectWarehouse< Moose::FunctionBase_kokkos_functions
 
MooseObjectWarehouse< Convergence_convergences
 convergence warehouse
 
MooseObjectWarehouse< KernelBase_nonlocal_kernels
 nonlocal kernels
 
MooseObjectWarehouse< IntegratedBCBase_nonlocal_integrated_bcs
 nonlocal integrated_bcs
 
MaterialPropertyRegistry _material_prop_registry
 
MaterialPropertyStorage_material_props
 
MaterialPropertyStorage_bnd_material_props
 
MaterialPropertyStorage_neighbor_material_props
 
Moose::Kokkos::MaterialPropertyStorage_kokkos_material_props
 
Moose::Kokkos::MaterialPropertyStorage_kokkos_bnd_material_props
 
Moose::Kokkos::MaterialPropertyStorage_kokkos_neighbor_material_props
 
MooseObjectWarehouse< Marker_markers
 
ReporterData _reporter_data
 
ExecuteMooseObjectWarehouse< MultiApp_multi_apps
 MultiApp Warehouse.
 
ExecuteMooseObjectWarehouse< TransientMultiApp_transient_multi_apps
 Storage for TransientMultiApps (only needed for calling 'computeDT')
 
ExecuteMooseObjectWarehouse< Transfer_transfers
 Normal Transfers.
 
ExecuteMooseObjectWarehouse< Transfer_to_multi_app_transfers
 Transfers executed just before MultiApps to transfer data to them.
 
ExecuteMooseObjectWarehouse< Transfer_from_multi_app_transfers
 Transfers executed just after MultiApps to transfer data from them.
 
ExecuteMooseObjectWarehouse< Transfer_between_multi_app_transfers
 Transfers executed just before MultiApps to transfer data between them.
 
std::map< std::string, std::unique_ptr< RandomData > > _random_data_objects
 A map of objects that consume random numbers.
 
std::vector< std::unordered_map< SubdomainID, bool > > _block_mat_side_cache
 Cache for calculating materials on side.
 
std::vector< std::unordered_map< BoundaryID, bool > > _bnd_mat_side_cache
 Cache for calculating materials on side.
 
std::vector< std::unordered_map< BoundaryID, bool > > _interface_mat_side_cache
 Cache for calculating materials on interface.
 
std::vector< MeshChangedInterface * > _notify_when_mesh_changes
 Objects to be notified when the mesh changes.
 
std::vector< MeshDisplacedInterface * > _notify_when_mesh_displaces
 Objects to be notified when the mesh displaces.
 
Adaptivity _adaptivity
 
unsigned int _cycles_completed
 
std::shared_ptr< XFEMInterface_xfem
 Pointer to XFEM controller.
 
MooseMesh_displaced_mesh
 
std::shared_ptr< DisplacedProblem_displaced_problem
 
GeometricSearchData _geometric_search_data
 
std::unique_ptr< MortarInterfaceWarehouse_mortar_data
 
bool _reinit_displaced_elem
 Whether to call DisplacedProblem::reinitElem when this->reinitElem is called.
 
bool _reinit_displaced_face
 Whether to call DisplacedProblem::reinitElemFace when this->reinitElemFace is called.
 
bool _reinit_displaced_neighbor
 Whether to call DisplacedProblem::reinitNeighbor when this->reinitNeighbor is called.
 
bool _input_file_saved
 whether input file has been written
 
bool _has_dampers
 Whether or not this system has any Dampers associated with it.
 
bool _has_constraints
 Whether or not this system has any Constraints.
 
bool _snesmf_reuse_base
 If or not to resuse the base vector for matrix-free calculation.
 
bool _skip_exception_check
 If or not skip 'exception and stop solve'.
 
bool _snesmf_reuse_base_set_by_user
 If or not _snesmf_reuse_base is set by user.
 
bool _has_initialized_stateful
 Whether nor not stateful materials have been initialized.
 
bool _const_jacobian
 true if the Jacobian is constant
 
bool _has_jacobian
 Indicates if the Jacobian was computed.
 
bool _needs_old_newton_iter
 Indicates that we need to compute variable values for previous Newton iteration.
 
bool _previous_nl_solution_required
 Indicates we need to save the previous NL iteration variable values.
 
std::vector< bool > _previous_multiapp_fp_nl_solution_required
 Indicates we need to save the previous multiapp fixed-point iteration solver variable values.
 
bool _previous_multiapp_fp_aux_solution_required
 Indicates we need to save the previous multiapp fixed-point iteration auxiliary variable values.
 
std::vector< bool > _previous_multisystem_fp_nl_solution_required
 Indicates we need to save the previous multi-system fixed-point iteration solver variable values.
 
bool _previous_multisystem_fp_aux_solution_required
 Indicates we need to save the previous multi-system fixed-point iteration auxiliary variable values.
 
bool _has_nonlocal_coupling
 Indicates if nonlocal coupling is required/exists.
 
bool _calculate_jacobian_in_uo
 
std::vector< std::vector< const MooseVariableFEBase * > > _uo_jacobian_moose_vars
 
std::vector< unsigned char > _has_active_material_properties
 Whether there are active material properties on each thread.
 
std::vector< SolverParams_solver_params
 
CoverageCheckMode _kernel_coverage_check
 Determines whether and which subdomains are to be checked to ensure that they have an active kernel.
 
std::vector< SubdomainName > _kernel_coverage_blocks
 
const bool _boundary_restricted_node_integrity_check
 whether to perform checking of boundary restricted nodal object variable dependencies, e.g.
 
const bool _boundary_restricted_elem_integrity_check
 whether to perform checking of boundary restricted elemental object variable dependencies, e.g.
 
const bool _side_uo_interface_mat_prop_integrity_check
 Whether to check that side user objects do not consume interface material properties.
 
CoverageCheckMode _material_coverage_check
 Determines whether and which subdomains are to be checked to ensure that they have an active material.
 
std::vector< SubdomainName > _material_coverage_blocks
 
bool _fv_bcs_integrity_check
 Whether to check overlapping Dirichlet and Flux BCs and/or multiple DirichletBCs per sideset.
 
const bool _material_dependency_check
 Determines whether a check to verify material dependencies on every subdomain.
 
const bool _uo_aux_state_check
 Whether or not checking the state of uo/aux evaluation.
 
bool _check_residual_for_nans
 Whether to check the residual for NaN or Inf values.
 
unsigned int _max_qps
 Maximum number of quadrature points used in the problem.
 
libMesh::Order _max_scalar_order
 Maximum scalar variable order.
 
bool _has_time_integrator
 Indicates whether or not this executioner has a time integrator (during setup)
 
bool _has_exception
 Whether or not an exception has occurred.
 
bool _parallel_barrier_messaging
 Whether or not information about how many transfers have completed is printed.
 
MooseEnum _verbose_setup
 Whether or not to be verbose during setup.
 
bool _verbose_multiapps
 Whether or not to be verbose with multiapps.
 
bool _verbose_restore
 Whether or not to be verbose on solution restoration post a failed time step.
 
std::string _exception_message
 The error message to go with an exception.
 
ExecFlagType _current_execute_on_flag
 Current execute_on flag.
 
ExecuteMooseObjectWarehouse< Control_control_warehouse
 The control logic warehouse.
 
Moose::PetscSupport::PetscOptions _petsc_options
 PETSc option storage.
 
PetscOptions _petsc_option_data_base
 
bool _is_petsc_options_inserted
 If or not PETSc options have been added to database.
 
std::shared_ptr< LineSearch_line_search
 
std::unique_ptr< libMesh::ConstElemRange_evaluable_local_elem_range
 
std::unique_ptr< libMesh::ConstElemRange_nl_evaluable_local_elem_range
 
std::unique_ptr< libMesh::ConstElemRange_aux_evaluable_local_elem_range
 
std::unique_ptr< libMesh::ConstElemRange_current_algebraic_elem_range
 
std::unique_ptr< libMesh::ConstNodeRange_current_algebraic_node_range
 
std::unique_ptr< ConstBndNodeRange_current_algebraic_bnd_node_range
 
bool _using_ad_mat_props
 Automatic differentiaion (AD) flag which indicates whether any consumer has requested an AD material property or whether any suppier has declared an AD material property.
 
unsigned short _current_ic_state
 
const bool _use_hash_table_matrix_assembly
 Whether to assemble matrices using hash tables instead of preallocating matrix memory.
 
std::map< TagName, TagID_matrix_tag_name_to_tag_id
 The currently declared tags.
 
std::map< TagID, TagName > _matrix_tag_id_to_tag_name
 Reverse map.
 
Factory_factory
 The Factory for building objects.
 
DiracKernelInfo _dirac_kernel_info
 
std::map< SubdomainID, std::set< std::string > > _map_block_material_props
 Map of material properties (block_id -> list of properties)
 
std::map< BoundaryID, std::set< std::string > > _map_boundary_material_props
 Map for boundary material properties (boundary_id -> list of properties)
 
std::map< SubdomainID, std::set< MaterialPropertyName > > _zero_block_material_props
 Set of properties returned as zero properties.
 
std::map< BoundaryID, std::set< MaterialPropertyName > > _zero_boundary_material_props
 
std::set< std::string > _material_property_requested
 set containing all material property names that have been requested by getMaterialProperty*
 
std::vector< std::set< MooseVariableFieldBase * > > _active_elemental_moose_variables
 This is the set of MooseVariableFieldBase that will actually get reinited by a call to reinit(elem)
 
std::vector< unsigned int_has_active_elemental_moose_variables
 Whether or not there is currently a list of active elemental moose variables.
 
std::vector< std::set< TagID > > _active_fe_var_coupleable_matrix_tags
 
std::vector< std::set< TagID > > _active_fe_var_coupleable_vector_tags
 
std::vector< std::set< TagID > > _active_sc_var_coupleable_matrix_tags
 
std::vector< std::set< TagID > > _active_sc_var_coupleable_vector_tags
 
bool _default_ghosting
 Whether or not to use default libMesh coupling.
 
std::set< dof_id_type > _ghosted_elems
 Elements that should have Dofs ghosted to the local processor.
 
bool _currently_computing_jacobian
 Flag to determine whether the problem is currently computing Jacobian.
 
bool _currently_computing_residual_and_jacobian
 Flag to determine whether the problem is currently computing the residual and Jacobian.
 
bool _computing_nonlinear_residual
 Whether the non-linear residual is being evaluated.
 
bool _currently_computing_residual
 Whether the residual is being evaluated.
 
bool _safe_access_tagged_matrices
 Is it safe to retrieve data from tagged matrices.
 
bool _safe_access_tagged_vectors
 Is it safe to retrieve data from tagged vectors.
 
bool _have_ad_objects
 AD flag indicating whether any AD objects have been added.
 
std::unordered_set< TagID_not_zeroed_tagged_vectors
 the list of vector tags that will not be zeroed when all other tags are
 
bool _cli_option_found
 True if the CLI option is found.
 
bool _color_output
 True if we're going to attempt to write color output.
 
bool _termination_requested
 True if termination of the solve has been requested.
 
const bool & _enabled
 Reference to the "enable" InputParameters, used by Controls for toggling on/off MooseObjects.
 
MooseApp_app
 The MOOSE application this is associated with.
 
ActionFactory_action_factory
 Builds Actions.
 
const std::string & _type
 The type of this class.
 
const std::string & _name
 The name of this class.
 
const InputParameters_pars
 The object's parameters.
 
const Parallel::Communicator_communicator
 
MooseApp_pg_moose_app
 The MooseApp that owns the PerfGraph.
 
const std::string _prefix
 A prefix to use for all sections.
 
MooseApp_restartable_app
 Reference to the application.
 
const std::string _restartable_system_name
 The system name this object is in.
 
const THREAD_ID _restartable_tid
 The thread ID for this object.
 
const bool _restartable_read_only
 Flag for toggling read only status (see ReporterData)
 
InitialConditionWarehouse _ics
 
FVInitialConditionWarehouse _fv_ics
 
ScalarInitialConditionWarehouse _scalar_ics
 
MaterialWarehouse _materials
 
MaterialWarehouse _interface_materials
 
MaterialWarehouse _discrete_materials
 
MaterialWarehouse _all_materials
 
MaterialWarehouse _kokkos_materials
 
MooseObjectWarehouse< Indicator_indicators
 
MooseObjectWarehouse< InternalSideIndicatorBase_internal_side_indicators
 
std::map< SubdomainID, std::multimap< std::string, std::string > > _map_block_material_props_check
 Data structures of the requested material properties.
 
std::map< BoundaryID, std::multimap< std::string, std::string > > _map_boundary_material_props_check
 

Private Types

enum class  TrueFunctorIs { UNSET , NONAD , AD }
 

Private Member Functions

void setResidualObjectParamsAndLog (const std::string &ro_name, const std::string &name, InputParameters &parameters, const unsigned int nl_sys_num, const std::string &base_name, bool &reinit_displaced)
 Set the subproblem and system parameters for residual objects and log their addition.
 
void setAuxKernelParamsAndLog (const std::string &ak_name, const std::string &name, InputParameters &parameters, const std::string &base_name)
 Set the subproblem and system parameters for auxiliary kernels and log their addition.
 
TheWarehouse::Query getUOQuery (const std::string &system, const ExecFlagType &type, const Moose::AuxGroup &group) const
 
void getUOExecutionGroups (TheWarehouse::Query &query, std::set< int > &execution_groups) const
 
void handleException (const std::string &calling_method)
 Handle exceptions.
 
std::vector< MortarUserObject * > getMortarUserObjects (BoundaryID primary_boundary_id, BoundaryID secondary_boundary_id, bool displaced, const std::vector< MortarUserObject * > &mortar_uo_superset)
 Helper for getting mortar objects corresponding to primary boundary ID, secondary boundary ID, and displaced parameters, given some initial set.
 
std::vector< MortarUserObject * > getMortarUserObjects (BoundaryID primary_boundary_id, BoundaryID secondary_boundary_id, bool displaced)
 Helper for getting mortar objects corresponding to primary boundary ID, secondary boundary ID, and displaced parameters from the entire active mortar user object set.
 
virtual std::pair< bool, unsigned intdetermineSolverSystem (const std::string &var_name, bool error_if_not_found=false) const override
 Determine what solver system the provided variable name lies in.
 
void checkICRestartError (const std::string &ic_name, const std::string &name, const VariableName &var_name)
 Checks if the variable of the initial condition is getting restarted and errors for specific cases.
 
void addAnyRedistributers ()
 
void updateMaxQps ()
 
void joinAndFinalize (TheWarehouse::Query query, bool isgen=false)
 
void kokkosJoinAndFinalize (const std::vector< Moose::Kokkos::UserObject * > &userobjs)
 
virtual void resetState ()
 Reset state of this object in preparation for the next evaluation.
 
void cloneAlgebraicGhostingFunctor (libMesh::GhostingFunctor &algebraic_gf, bool to_mesh=true)
 Creates (n_sys - 1) clones of the provided algebraic ghosting functor (corresponding to the nonlinear system algebraic ghosting functor), initializes the clone with the appropriate DofMap, and then adds the clone to said DofMap.
 
void cloneCouplingGhostingFunctor (libMesh::GhostingFunctor &coupling_gf, bool to_mesh=true)
 Creates (n_sys - 1) clones of the provided coupling ghosting functor (corresponding to the nonlinear system coupling ghosting functor), initializes the clone with the appropriate DofMap, and then adds the clone to said DofMap.
 
void showFunctors () const
 Lists all functors in the problem.
 
void showFunctorRequestors () const
 Lists all functors and all the objects that requested them.
 
RestartableDataValueregisterRestartableDataOnApp (std::unique_ptr< RestartableDataValue > data, THREAD_ID tid) const
 Helper function for actually registering the restartable data.
 
void registerRestartableNameWithFilterOnApp (const std::string &name, Moose::RESTARTABLE_FILTER filter)
 Helper function for actually registering the restartable data.
 
template<typename T , typename... Args>
RestartableData< T > & declareRestartableDataHelper (const std::string &data_name, void *context, Args &&... args) const
 Helper function for declaring restartable data.
 
std::string restrictionSubdomainCheckName (SubdomainID check_id)
 Helper functions for checking MaterialProperties.
 
std::string restrictionBoundaryCheckName (BoundaryID check_id)
 

Static Private Member Functions

static SolverParams makeLinearSolverParams ()
 Make basic solver params for linear solves.
 
static const hit::Node * getHitNode (const InputParameters &params)
 Internal method for getting a hit node (if available) given a set of parameters.
 
static std::string messagePrefix (const InputParameters &params, const bool hit_prefix)
 Internal method for getting the message prefix for an object (object type, name, etc).
 

Private Attributes

Restartable::ManagedValue< RestartableEquationSystems_req
 The EquationSystems object, wrapped for restart.
 
bool _error_on_jacobian_nonzero_reallocation
 Whether to error when the Jacobian is re-allocated, usually because the sparsity pattern changed.
 
const bool _restore_original_nonzero_pattern
 Whether we should restore the original nonzero pattern for every Jacobian evaluation.
 
bool _ignore_zeros_in_jacobian
 Whether to ignore zeros in the Jacobian, thereby leading to a reduced sparsity pattern.
 
bool _preserve_matrix_sparsity_pattern
 Whether to preserve the system matrix / Jacobian sparsity pattern, using 0-valued entries usually.
 
const bool _force_restart
 
const bool _allow_ics_during_restart
 
const bool _skip_nl_system_check
 
bool _fail_next_system_convergence_check
 
const bool _allow_invalid_solution
 
const bool _show_invalid_solution_console
 
const bool & _immediately_print_invalid_solution
 
bool _started_initial_setup
 At or beyond initialSteup stage.
 
bool _has_internal_edge_residual_objects
 Whether the problem has dgkernels or interface kernels.
 
bool _u_dot_requested
 Whether solution time derivative needs to be stored.
 
bool _u_dotdot_requested
 Whether solution second time derivative needs to be stored.
 
bool _u_dot_old_requested
 Whether old solution time derivative needs to be stored.
 
bool _u_dotdot_old_requested
 Whether old solution second time derivative needs to be stored.
 
bool _has_mortar
 Whether the simulation requires mortar coupling.
 
unsigned int _num_grid_steps
 Number of steps in a grid sequence.
 
bool _trust_user_coupling_matrix = false
 Whether to trust the user coupling matrix no matter what.
 
bool _computing_scaling_jacobian = false
 Flag used to indicate whether we are computing the scaling Jacobian.
 
bool _computing_scaling_residual = false
 Flag used to indicate whether we are computing the scaling Residual.
 
bool _checking_uo_aux_state = false
 Flag used to indicate whether we are doing the uo/aux state check in execute.
 
ExecFlagEnum _print_execution_on
 When to print the execution of loops.
 
const bool _identify_variable_groups_in_nl
 Whether to identify variable groups in nonlinear systems. This affects dof ordering.
 
std::vector< VectorTag_current_residual_vector_tags
 A data member to store the residual vector tag(s) passed into computeResidualTag(s).
 
bool _have_fv = false
 Whether we are performing some calculations with finite volume discretizations.
 
const bool _regard_general_exceptions_as_errors
 If we catch an exception during residual/Jacobian evaluaton for which we don't have specific handling, immediately error instead of allowing the time step to be cut.
 
std::vector< libMesh::CouplingMatrix_nonlocal_cm
 nonlocal coupling matrix
 
bool _requires_nonlocal_coupling
 nonlocal coupling requirement flag
 
bool _has_kokkos_objects = false
 Whether we have any Kokkos objects.
 
bool _has_kokkos_residual_objects = false
 Whether we have any Kokkos residual objects.
 
std::vector< std::function< void()> > _kokkos_mesh_initialization_hooks
 Container holding hooks for functions that need to be called after Kokkos mesh initialization.
 
std::vector< std::multimap< std::string, std::tuple< TrueFunctorIs, std::unique_ptr< Moose::FunctorEnvelopeBase >, std::unique_ptr< Moose::FunctorEnvelopeBase > > > > _functors
 A container holding pointers to all the functors in our problem.
 
std::vector< std::map< std::string, std::unique_ptr< Moose::FunctorAbstract > > > _pbblf_functors
 Container to hold PiecewiseByBlockLambdaFunctors.
 
std::map< std::string, std::set< std::string > > _functor_to_requestors
 The requestors of functors where the key is the prop name and the value is a set of names of requestors.
 
std::vector< std::multimap< std::string, std::pair< bool, bool > > > _functor_to_request_info
 A multimap (for each thread) from unfilled functor requests to whether the requests were for AD functors and whether the requestor was an AD object.
 
bool _show_functors
 Whether to output a list of the functors used and requested (currently only at initialSetup)
 
bool _show_chain_control_data
 Whether to output a list of all the chain control data.
 
std::vector< VectorTag_vector_tags
 The declared vector tags.
 
std::vector< std::vector< VectorTag > > _typed_vector_tags
 The vector tags associated with each VectorTagType This is kept separate from _vector_tags for quick access into typed vector tags in places where we don't want to build a new vector every call (like in residual evaluation)
 
std::map< TagName, TagID_vector_tags_name_map
 Map of vector tag TagName to TagID.
 
std::map< MooseObjectName, std::set< std::string > > _consumed_material_properties
 
std::unordered_map< libMesh::GhostingFunctor *, std::vector< std::shared_ptr< libMesh::GhostingFunctor > > > _root_alg_gf_to_sys_clones
 A map from a root algebraic ghosting functor, e.g.
 
std::unordered_map< libMesh::GhostingFunctor *, std::vector< std::shared_ptr< libMesh::GhostingFunctor > > > _root_coupling_gf_to_sys_clones
 A map from a root coupling ghosting functor, e.g.
 
bool _have_p_refinement
 Whether p-refinement has been requested at any point during the simulation.
 
std::unordered_map< FEFamily, bool > _family_for_p_refinement
 Indicate whether a family is disabled for p-refinement.
 
const ParallelParamObject_parent
 
const MooseBase_si_moose_base
 The MooseBase that owns this interface.
 
const FEProblemBase_si_problem
 A pointer to FEProblem base.
 
const RestartableDataMapName _metaname
 Restartable metadata name.
 
std::string _restartable_name
 The name of the object.
 

Static Private Attributes

static const std::unordered_set< FEFamily > _default_families_without_p_refinement
 The set of variable families by default disable p-refinement.
 

Detailed Description

Definition at line 14 of file ExternalProblem.h.

Member Typedef Documentation

◆ DataFileParameterType

using DataFileInterface::DataFileParameterType = DataFileName
inherited

The parameter type this interface expects for a data file name.

Definition at line 27 of file DataFileInterface.h.

Member Enumeration Documentation

◆ CoverageCheckMode

enum class FEProblemBase::CoverageCheckMode
stronginherited

◆ Direction

enum class ExternalProblem::Direction : unsigned char
strong
Enumerator
TO_EXTERNAL_APP 
FROM_EXTERNAL_APP 

Definition at line 21 of file ExternalProblem.h.

◆ TrueFunctorIs

enum class SubProblem::TrueFunctorIs
strongprivateinherited
Enumerator
UNSET 
NONAD 
AD 

Definition at line 1144 of file SubProblem.h.

Constructor & Destructor Documentation

◆ ExternalProblem()

ExternalProblem::ExternalProblem ( const InputParameters parameters)

Ideally the nonlinear system should not exist since we won't ever use it or call solve on it. However, MOOSE currently expects it to exist in several locations throughout the framework. Luckily, it can just be empty (no variables).

We still need to create Assembly objects to hold the data structures for working with Aux Variables, which will be used in the external problem.

Definition at line 33 of file ExternalProblem.C.

34{
40 if (_num_nl_sys)
41 {
42 _nl[0] = std::make_shared<NonlinearSystem>(*this, "nl0");
43 _solver_systems[0] = std::dynamic_pointer_cast<SolverSystem>(_nl[0]);
44 }
45 _aux = std::make_shared<AuxiliarySystem>(*this, "aux0");
46
47 // Set the current nonlinear system to the null system we created.
49
55
56 // Create extra vectors and matrices if any
58
59 // Create extra solution vectors if any
61}
Specialization of SubProblem for solving nonlinear equations plus auxiliary equations.
std::shared_ptr< AuxiliarySystem > _aux
The auxiliary system.
void createTagVectors()
Create extra tagged vectors and matrices.
virtual void newAssemblyArray(std::vector< std::shared_ptr< SolverSystem > > &solver_systems)
void setCurrentNonlinearSystem(const unsigned int nl_sys_num)
const std::size_t _num_nl_sys
The number of nonlinear systems.
std::vector< std::shared_ptr< NonlinearSystemBase > > _nl
The nonlinear systems.
void createTagSolutions()
Create extra tagged solution vectors.
std::vector< std::shared_ptr< SolverSystem > > _solver_systems
Combined container to base pointer of every solver system.
const InputParameters & parameters() const
Get the parameters of the object.
Definition MooseBase.h:131

Member Function Documentation

◆ _setCLIOption()

void Problem::_setCLIOption ( )
inlineinherited

For Internal Use.

Definition at line 32 of file Problem.h.

32{ _cli_option_found = true; }
bool _cli_option_found
True if the CLI option is found.
Definition Problem.h:52

◆ acceptInvalidSolution()

bool FEProblemBase::acceptInvalidSolution ( ) const
inherited

Whether or not to accept the solution based on its invalidity.

If this returns false, it means that an invalid solution was encountered (an error) that was not allowed.

Definition at line 4095 of file FEProblemBase.C.

4096{
4097 return allowInvalidSolution() || // invalid solutions are always allowed
4098 !_app.solutionInvalidity().hasInvalidSolutionError(); // if not allowed, check for errors
4099}
bool allowInvalidSolution() const
Whether to accept / allow an invalid solution.
SolutionInvalidity & solutionInvalidity()
Get the SolutionInvalidity for this app.
Definition MooseApp.h:185
MooseApp & _app
The MOOSE application this is associated with.
Definition MooseBase.h:375
bool hasInvalidSolutionError() const
Whether or not an invalid solution was encountered that was an error.

Referenced by SolverSystem::checkInvalidSolution(), and NonlinearSystem::converged().

◆ adaptivity()

Adaptivity & FEProblemBase::adaptivity ( )
inlineinherited

Definition at line 2115 of file FEProblemBase.h.

2115{ return _adaptivity; }
Adaptivity _adaptivity

Referenced by Eigenvalue::execute(), SteadyBase::execute(), and FEProblemBase::initialAdaptMesh().

◆ adaptMesh()

bool FEProblemBase::adaptMesh ( )
virtualinherited
Returns
Whether or not the mesh was changed

Reimplemented in DumpObjectsProblem.

Definition at line 8581 of file FEProblemBase.C.

8582{
8583 // reset cycle counter
8585
8587 return false;
8588
8589 TIME_SECTION("adaptMesh", 3, "Adapting Mesh");
8590
8591 unsigned int cycles_per_step = _adaptivity.getCyclesPerStep();
8592
8593 bool mesh_changed = false;
8594
8595 for (unsigned int i = 0; i < cycles_per_step; ++i)
8596 {
8597 if (!_mesh.interiorLowerDBlocks().empty() || !_mesh.boundaryLowerDBlocks().empty())
8598 mooseError("HFEM does not support mesh adaptivity currently.");
8599
8600 // Markers were already computed once by Executioner
8601 if (_adaptivity.getRecomputeMarkersFlag() && i > 0)
8603
8604 bool mesh_changed_this_step;
8605 mesh_changed_this_step = _adaptivity.adaptMesh();
8606
8607 if (mesh_changed_this_step)
8608 {
8609 mesh_changed = true;
8610
8612 /*intermediate_change=*/true, /*contract_mesh=*/true, /*clean_refinement_flags=*/true);
8614 }
8615 else
8616 {
8617 // If the mesh didn't change, we still need to update the displaced mesh
8618 // to undo the undisplacement performed in Adaptivity::adaptMesh
8620 _displaced_problem->updateMesh();
8621
8622 _console << "Mesh unchanged, skipping remaining steps..." << std::endl;
8623 break;
8624 }
8625
8626 // Show adaptivity progress
8627 _console << std::flush;
8628 }
8629
8630 // We're done with all intermediate changes; now get systems ready
8631 // for real if necessary.
8632 if (mesh_changed)
8633 es().reinit_systems();
8634
8635 // Execute multi-apps that need to run after adaptivity, but before the next timestep.
8637
8638 return mesh_changed;
8639}
void mooseError(Args &&... args)
Emit an error message with the given stringified, concatenated args and terminate the application.
Definition MooseError.h:311
const ExecFlagType EXEC_POST_ADAPTIVITY
Definition Moose.C:60
unsigned int getCyclesPerStep() const
Pull out the number of cycles_per_step previously set through the AdaptivityAction.
Definition Adaptivity.h:126
bool getRecomputeMarkersFlag() const
Pull out the _recompute_markers_during_cycles flag previously set through the AdaptivityAction.
Definition Adaptivity.h:139
bool adaptMesh(std::string marker_name=std::string())
Adapts the mesh based on the error estimator used.
Definition Adaptivity.C:145
bool isAdaptivityDue()
Query if an adaptivity step should be performed at the current time / time step.
Definition Adaptivity.C:420
const ConsoleStream _console
An instance of helper class to write streams to the Console objects.
virtual libMesh::EquationSystems & es() override
MooseMesh & _mesh
bool execMultiApps(ExecFlagType type, bool auto_advance=true)
Execute the MultiApps associated with the ExecFlagType.
std::shared_ptr< DisplacedProblem > _displaced_problem
virtual void computeMarkers()
unsigned int _cycles_completed
virtual void meshChanged()
Deprecated.
const std::set< SubdomainID > & interiorLowerDBlocks() const
Definition MooseMesh.h:1552
const std::set< SubdomainID > & boundaryLowerDBlocks() const
Definition MooseMesh.h:1556
virtual void reinit_systems()

Referenced by Eigenvalue::execute(), SteadyBase::execute(), and TransientBase::incrementStepOrReject().

◆ addAlgebraicGhostingFunctor()

void SubProblem::addAlgebraicGhostingFunctor ( libMesh::GhostingFunctor algebraic_gf,
bool  to_mesh = true 
)
inherited

Add an algebraic ghosting functor to this problem's DofMaps.

Definition at line 1024 of file SubProblem.C.

1025{
1026 EquationSystems & eq = es();
1027 const auto n_sys = eq.n_systems();
1028 if (!n_sys)
1029 return;
1030
1031 eq.get_system(0).get_dof_map().add_algebraic_ghosting_functor(algebraic_gf, to_mesh);
1032 cloneAlgebraicGhostingFunctor(algebraic_gf, to_mesh);
1033}
void cloneAlgebraicGhostingFunctor(libMesh::GhostingFunctor &algebraic_gf, bool to_mesh=true)
Creates (n_sys - 1) clones of the provided algebraic ghosting functor (corresponding to the nonlinear...
virtual libMesh::EquationSystems & es()=0
unsigned int n_systems() const
const T_sys & get_system(std::string_view name) const

◆ addAnyRedistributers()

void FEProblemBase::addAnyRedistributers ( )
privateinherited

Definition at line 6476 of file FEProblemBase.C.

6477{
6478#ifdef LIBMESH_ENABLE_AMR
6479 if ((_adaptivity.isOn() || _num_grid_steps) &&
6482 {
6483 // Even on a serialized Mesh, we don't keep our material
6484 // properties serialized, so we'll rely on the callback to
6485 // redistribute() to redistribute properties at the same time
6486 // libMesh is redistributing elements.
6487 auto add_redistributer = [this](MooseMesh & mesh,
6488 const std::string & redistributer_name,
6489 const bool use_displaced_mesh)
6490 {
6492 redistribute_params.set<MooseApp *>(MooseBase::app_param) = &_app;
6493 redistribute_params.set<std::string>("for_whom") = this->name();
6494 redistribute_params.set<MooseMesh *>("mesh") = &mesh;
6495 redistribute_params.set<Moose::RelationshipManagerType>("rm_type") =
6497 redistribute_params.set<bool>("use_displaced_mesh") = use_displaced_mesh;
6498 redistribute_params.setHitNode(*parameters().getHitNode(), {});
6499
6500 std::shared_ptr<RedistributeProperties> redistributer =
6502 "RedistributeProperties", redistributer_name, redistribute_params);
6503
6506
6508 redistributer->addMaterialPropertyStorage(_bnd_material_props);
6509
6511 redistributer->addMaterialPropertyStorage(_neighbor_material_props);
6512
6513 mesh.getMesh().add_ghosting_functor(redistributer);
6514 };
6515
6516 add_redistributer(_mesh, "mesh_property_redistributer", false);
6518 add_redistributer(_displaced_problem->mesh(), "displaced_mesh_property_redistributer", true);
6519 }
6520#endif // LIBMESH_ENABLE_AMR
6521}
bool isOn()
Is adaptivity on?
Definition Adaptivity.h:193
MaterialPropertyStorage & _material_props
MaterialPropertyStorage & _neighbor_material_props
unsigned int _num_grid_steps
Number of steps in a grid sequence.
MaterialPropertyStorage & _bnd_material_props
virtual MooseMesh & mesh() override
The main MOOSE class responsible for handling user-defined parameters in almost every MOOSE system.
void setHitNode(const std::string &param, const hit::Node &node, const SetParamHitNodeKey)
Sets the hit node associated with the parameter param to node.
const hit::Node * getHitNode(const std::string &param) const
T & set(const std::string &name, bool quiet_mode=false)
Returns a writable reference to the named parameters.
Base class for MOOSE-based applications.
Definition MooseApp.h:110
const std::string & name() const
Get the name of the class.
Definition MooseBase.h:103
static const std::string app_param
The name of the parameter that contains the MooseApp.
Definition MooseBase.h:59
MooseMesh wraps a libMesh::Mesh object and enhances its capabilities by caching additional data and s...
Definition MooseMesh.h:95
MeshBase & getMesh()
Accessor for the underlying libMesh Mesh object.
Definition MooseMesh.C:3549
RedistributeProperties is used for its redistribute() callback, which ensures that any stateful prope...
static InputParameters validParams()
void addMaterialPropertyStorage(MaterialPropertyStorage &mat_props)
Pushes the given pair ( mat_data , mat_props ) onto our list of _materials data to redistribute each ...
Factory & _factory
The Factory for building objects.
virtual std::unique_ptr< Base > create()=0
void add_ghosting_functor(GhostingFunctor &ghosting_functor)
RelationshipManagerType
Main types of Relationship Managers.

◆ addAuxArrayVariable()

void FEProblemBase::addAuxArrayVariable ( const std::string &  var_name,
const libMesh::FEType type,
unsigned int  components,
const std::set< SubdomainID > *const  active_subdomains = NULL 
)
virtualinherited

Definition at line 3420 of file FEProblemBase.C.

3424{
3425 parallel_object_only();
3426
3427 mooseDeprecated("Please use the addAuxVariable(var_type, var_name, params) API instead");
3428
3429 if (duplicateVariableCheck(var_name, type, /* is_aux = */ true, active_subdomains))
3430 return;
3431
3432 InputParameters params = _factory.getValidParams("ArrayMooseVariable");
3433 params.set<FEProblemBase *>("_fe_problem_base") = this;
3435 params.set<MooseEnum>("order") = type.order.get_order();
3436 params.set<MooseEnum>("family") = Moose::stringify(type.family);
3437 params.set<unsigned int>("components") = components;
3438
3439 if (active_subdomains)
3440 for (const SubdomainID & id : *active_subdomains)
3441 params.set<std::vector<SubdomainName>>("block").push_back(Moose::stringify(id));
3442
3443 logAdd("Variable", var_name, "ArrayMooseVariable", params);
3444 _aux->addVariable("ArrayMooseVariable", var_name, params);
3446 _displaced_problem->addAuxVariable("ArrayMooseVariable", var_name, params);
3447
3448 markFamilyPRefinement(params);
3450 _displaced_problem->markFamilyPRefinement(params);
3451}
void mooseDeprecated(Args &&... args)
Emit a deprecated code/feature message with the given stringified, concatenated args.
Definition MooseError.h:363
void logAdd(const std::string &system, const std::string &name, const std::string &type, const InputParameters &params) const
Output information about the object just added to the problem.
bool duplicateVariableCheck(const std::string &var_name, const libMesh::FEType &type, bool is_aux, const std::set< SubdomainID > *const active_subdomains)
Helper to check for duplicate variable names across systems or within a single system.
const std::string & type() const
Get the type of this class.
Definition MooseBase.h:93
This is a "smart" enum class intended to replace many of the shortcomings in the C++ enum type It sho...
Definition MooseEnum.h:55
void markFamilyPRefinement(const InputParameters &params)
Mark a variable family for either disabling or enabling p-refinement with valid parameters of a varia...
MOOSE now contains C++17 code, so give a reasonable error message stating what the user can do to add...
std::string stringify(const T &t)
conversion to string
Definition Conversion.h:64
VarKindType
Framework-wide stuff.
Definition MooseTypes.h:769
@ VAR_AUXILIARY
Definition MooseTypes.h:771
std::string stringify(MOOSEIOType type)
Definition NEML2Utils.C:18

◆ addAuxKernel()

void FEProblemBase::addAuxKernel ( const std::string &  kernel_name,
const std::string &  name,
InputParameters parameters 
)
virtualinherited

Reimplemented in MFEMProblem.

Definition at line 3488 of file FEProblemBase.C.

3491{
3492 parallel_object_only();
3493
3494 setAuxKernelParamsAndLog(kernel_name, name, parameters, "AuxKernel");
3495
3496 _aux->addKernel(kernel_name, name, parameters);
3497}
void setAuxKernelParamsAndLog(const std::string &ak_name, const std::string &name, InputParameters &parameters, const std::string &base_name)
Set the subproblem and system parameters for auxiliary kernels and log their addition.

◆ addAuxScalarKernel()

void FEProblemBase::addAuxScalarKernel ( const std::string &  kernel_name,
const std::string &  name,
InputParameters parameters 
)
virtualinherited

Definition at line 3500 of file FEProblemBase.C.

3503{
3504 parallel_object_only();
3505
3506 if (_displaced_problem && parameters.get<bool>("use_displaced_mesh"))
3507 {
3508 parameters.set<SubProblem *>("_subproblem") = _displaced_problem.get();
3509 parameters.set<SystemBase *>("_sys") = &_displaced_problem->auxSys();
3510 }
3511 else
3512 {
3513 if (_displaced_problem == nullptr && parameters.get<bool>("use_displaced_mesh"))
3514 {
3515 // We allow AuxScalarKernels to request that they use_displaced_mesh,
3516 // but then be overridden when no displacements variables are
3517 // provided in the Mesh block. If that happened, update the value
3518 // of use_displaced_mesh appropriately for this AuxScalarKernel.
3519 if (parameters.have_parameter<bool>("use_displaced_mesh"))
3520 parameters.set<bool>("use_displaced_mesh") = false;
3521 }
3522
3523 parameters.set<SubProblem *>("_subproblem") = this;
3524 parameters.set<SystemBase *>("_sys") = _aux.get();
3525 }
3526
3527 logAdd("AuxScalarKernel", name, kernel_name, parameters);
3528 _aux->addScalarKernel(kernel_name, name, parameters);
3529}
std::vector< std::pair< R1, R2 > > get(const std::string &param1, const std::string &param2) const
Combine two vector parameters into a single vector of pairs.
bool have_parameter(std::string_view name) const
A wrapper around the Parameters base class method.
Generic class for solving transient nonlinear problems.
Definition SubProblem.h:79
Base class for a system (of equations)
Definition SystemBase.h:87

◆ addAuxScalarVariable()

void FEProblemBase::addAuxScalarVariable ( const std::string &  var_name,
libMesh::Order  order,
Real  scale_factor = 1.,
const std::set< SubdomainID > *const  active_subdomains = NULL 
)
virtualinherited

Definition at line 3454 of file FEProblemBase.C.

3458{
3459 parallel_object_only();
3460
3461 mooseDeprecated("Please use the addAuxVariable(var_type, var_name, params) API instead");
3462
3463 if (order > _max_scalar_order)
3464 _max_scalar_order = order;
3465
3466 FEType type(order, SCALAR);
3467 if (duplicateVariableCheck(var_name, type, /* is_aux = */ true, active_subdomains))
3468 return;
3469
3470 InputParameters params = _factory.getValidParams("MooseVariableScalar");
3471 params.set<FEProblemBase *>("_fe_problem_base") = this;
3473
3474 params.set<MooseEnum>("order") = type.order.get_order();
3475 params.set<MooseEnum>("family") = "SCALAR";
3476 params.set<std::vector<Real>>("scaling") = std::vector<Real>{1};
3477 if (active_subdomains)
3478 for (const SubdomainID & id : *active_subdomains)
3479 params.set<std::vector<SubdomainName>>("block").push_back(Moose::stringify(id));
3480
3481 logAdd("ScalarVariable", var_name, "MooseVariableScalar", params);
3482 _aux->addVariable("MooseVariableScalar", var_name, params);
3484 _displaced_problem->addAuxVariable("MooseVariableScalar", var_name, params);
3485}
libMesh::Order _max_scalar_order
Maximum scalar variable order.

◆ addAuxVariable() [1/2]

void FEProblemBase::addAuxVariable ( const std::string &  var_name,
const libMesh::FEType type,
const std::set< SubdomainID > *const  active_subdomains = NULL 
)
virtualinherited

Reimplemented in DumpObjectsProblem.

Definition at line 3378 of file FEProblemBase.C.

3381{
3382 parallel_object_only();
3383
3384 mooseDeprecated("Please use the addAuxVariable(var_type, var_name, params) API instead");
3385
3386 if (duplicateVariableCheck(var_name, type, /* is_aux = */ true, active_subdomains))
3387 return;
3388
3389 std::string var_type;
3390 if (type == FEType(0, MONOMIAL))
3391 var_type = "MooseVariableConstMonomial";
3392 else if (type.family == SCALAR)
3393 var_type = "MooseVariableScalar";
3395 var_type = "VectorMooseVariable";
3396 else
3397 var_type = "MooseVariable";
3398
3399 InputParameters params = _factory.getValidParams(var_type);
3400 params.set<FEProblemBase *>("_fe_problem_base") = this;
3402 params.set<MooseEnum>("order") = type.order.get_order();
3403 params.set<MooseEnum>("family") = Moose::stringify(type.family);
3404
3405 if (active_subdomains)
3406 for (const SubdomainID & id : *active_subdomains)
3407 params.set<std::vector<SubdomainName>>("block").push_back(Moose::stringify(id));
3408
3409 logAdd("AuxVariable", var_name, var_type, params);
3410 _aux->addVariable(var_type, var_name, params);
3412 _displaced_problem->addAuxVariable("MooseVariable", var_name, params);
3413
3414 markFamilyPRefinement(params);
3416 _displaced_problem->markFamilyPRefinement(params);
3417}
static FEFieldType field_type(const FEType &fe_type)

◆ addAuxVariable() [2/2]

void FEProblemBase::addAuxVariable ( const std::string &  var_type,
const std::string &  var_name,
InputParameters params 
)
virtualinherited

Canonical method for adding an auxiliary variable.

Parameters
var_typethe type of the variable, e.g. MooseVariableScalar
var_namethe variable name, e.g. 'u'
paramsthe InputParameters from which to construct the variable

Reimplemented in MFEMProblem, and DumpObjectsProblem.

Definition at line 3337 of file FEProblemBase.C.

3340{
3341 parallel_object_only();
3342
3343 const auto order = Utility::string_to_enum<Order>(params.get<MooseEnum>("order"));
3344 const auto family = Utility::string_to_enum<FEFamily>(params.get<MooseEnum>("family"));
3345 const auto fe_type = FEType(order, family);
3346
3347 const auto active_subdomains_vector =
3348 _mesh.getSubdomainIDs(params.get<std::vector<SubdomainName>>("block"));
3349 const std::set<SubdomainID> active_subdomains(active_subdomains_vector.begin(),
3350 active_subdomains_vector.end());
3351
3352 if (duplicateVariableCheck(var_name, fe_type, /* is_aux = */ true, &active_subdomains))
3353 return;
3354
3355 params.set<FEProblemBase *>("_fe_problem_base") = this;
3357
3358 logAdd("AuxVariable", var_name, var_type, params);
3359 _aux->addVariable(var_type, var_name, params);
3361 // MooseObjects need to be unique so change the name here
3362 _displaced_problem->addAuxVariable(var_type, var_name, params);
3363
3364 markFamilyPRefinement(params);
3366 _displaced_problem->markFamilyPRefinement(params);
3367}
std::vector< SubdomainID > getSubdomainIDs(const std::vector< SubdomainName > &subdomain_names) const
Get the associated subdomainIDs for the subdomain names that are passed in.
Definition MooseMesh.C:1726

Referenced by FEProblemBase::addElementalFieldVariable(), and AddAuxVariableAction::init().

◆ addBoundaryCondition()

void FEProblemBase::addBoundaryCondition ( const std::string &  bc_name,
const std::string &  name,
InputParameters parameters 
)
virtualinherited

Reimplemented in MFEMProblem.

Definition at line 3266 of file FEProblemBase.C.

3269{
3270 parallel_object_only();
3271
3272 const auto nl_sys_num = determineSolverSystem(parameters.varName("variable", name), true).second;
3273 if (!isSolverSystemNonlinear(nl_sys_num))
3274 mooseError(
3275 "You are trying to add a BoundaryCondition to a linear variable/system, which is not "
3276 "supported at the moment!");
3277
3279 bc_name, name, parameters, nl_sys_num, "BoundaryCondition", _reinit_displaced_face);
3280 _nl[nl_sys_num]->addBoundaryCondition(bc_name, name, parameters);
3281}
bool isSolverSystemNonlinear(const unsigned int sys_num)
Check if the solver system is nonlinear.
bool _reinit_displaced_face
Whether to call DisplacedProblem::reinitElemFace when this->reinitElemFace is called.
void setResidualObjectParamsAndLog(const std::string &ro_name, const std::string &name, InputParameters &parameters, const unsigned int nl_sys_num, const std::string &base_name, bool &reinit_displaced)
Set the subproblem and system parameters for residual objects and log their addition.
virtual std::pair< bool, unsigned int > determineSolverSystem(const std::string &var_name, bool error_if_not_found=false) const override
Determine what solver system the provided variable name lies in.
std::string varName(const std::string &var_param_name, const std::string &moose_object_with_var_param_name) const
Determine the actual variable name from the given variable \emph parameter name.

Referenced by DiffusionCG::addBoundaryConditionsFromComponents(), and DiffusionCG::addFEBCs().

◆ addCachedJacobian()

void FEProblemBase::addCachedJacobian ( const THREAD_ID  tid)
overridevirtualinherited

◆ addCachedResidual()

void FEProblemBase::addCachedResidual ( const THREAD_ID  tid)
overridevirtualinherited

◆ addCachedResidualDirectly()

void FEProblemBase::addCachedResidualDirectly ( NumericVector< libMesh::Number > &  residual,
const THREAD_ID  tid 
)
virtualinherited

Allows for all the residual contributions that are currently cached to be added directly into the vector passed in.

Parameters
residualThe vector to add the cached contributions to.
tidThe thread id.

Definition at line 2025 of file FEProblemBase.C.

2026{
2028 _assembly[tid][_current_nl_sys->number()]->addCachedResidualDirectly(
2030
2032 _assembly[tid][_current_nl_sys->number()]->addCachedResidualDirectly(
2034
2035 std::vector<VectorTag> extra_residual_vector_tags;
2036 extra_residual_vector_tags.reserve(currentResidualVectorTags().size());
2037 const auto time_tag = _current_nl_sys->timeVectorTag();
2038 const auto non_time_tag = _current_nl_sys->nonTimeVectorTag();
2039 for (const auto & vector_tag : currentResidualVectorTags())
2040 if (vector_tag._id != time_tag && vector_tag._id != non_time_tag)
2041 extra_residual_vector_tags.push_back(vector_tag);
2042
2043 // Flush extra vector tag caches (e.g. from extra_vector_tags on NodalConstraints)
2044 // to their respective system vectors after the standard TIME/NONTIME caches above.
2045 // Without this, NodalConstraint contributions to extra vector tags are silently
2046 // discarded by the blanket clearCachedResiduals.
2047 _assembly[tid][_current_nl_sys->number()]->addCachedResiduals(Assembly::GlobalDataKey{},
2048 extra_residual_vector_tags);
2049
2050 // We do this because by adding the cached residual directly, we cannot ensure that all of the
2051 // cached residuals are emptied after only the two add calls above
2052 _assembly[tid][_current_nl_sys->number()]->clearCachedResiduals(Assembly::GlobalDataKey{});
2053
2055 _displaced_problem->addCachedResidualDirectly(residual, tid);
2056}
Key structure for APIs manipulating global vectors/matrices.
Definition Assembly.h:845
virtual const std::vector< VectorTag > & currentResidualVectorTags() const override
Return the residual vector tags we are currently computing.
std::vector< std::vector< std::unique_ptr< Assembly > > > _assembly
The Assembly objects.
NonlinearSystemBase * _current_nl_sys
The current nonlinear system that we are solving.
TagID timeVectorTag() const override
Ideally, we should not need this API.
TagID nonTimeVectorTag() const override
virtual const VectorTag & getVectorTag(const TagID tag_id) const
Get a VectorTag from a TagID.
Definition SubProblem.C:162
bool hasVector(const std::string &tag_name) const
Check if the named vector exists in the system.
Definition SystemBase.C:923
unsigned int number() const
Gets the number of this system.
if(subdm)

Referenced by NonlinearSystemBase::constraintResiduals(), and NonlinearSystemBase::enforceNodalConstraintsResidual().

◆ addConstraint()

void FEProblemBase::addConstraint ( const std::string &  c_name,
const std::string &  name,
InputParameters parameters 
)
virtualinherited

Definition at line 3284 of file FEProblemBase.C.

3287{
3288 parallel_object_only();
3289
3290 _has_constraints = true;
3291
3292 auto determine_var_param_name = [&parameters, this]()
3293 {
3294 if (parameters.isParamValid("variable"))
3295 return "variable";
3296 else
3297 {
3298 // must be a mortar constraint
3299 const bool has_secondary_var = parameters.isParamValid("secondary_variable");
3300 const bool has_primary_var = parameters.isParamValid("primary_variable");
3301 if (!has_secondary_var && !has_primary_var)
3302 mooseError(
3303 "Either a 'secondary_variable' or 'primary_variable' parameter must be supplied for '",
3305 "'");
3306 return has_secondary_var ? "secondary_variable" : "primary_variable";
3307 }
3308 };
3309
3310 const auto nl_sys_num =
3311 determineSolverSystem(parameters.varName(determine_var_param_name(), name), true).second;
3312 if (!isSolverSystemNonlinear(nl_sys_num))
3313 mooseError("You are trying to add a Constraint to a linear variable/system, which is not "
3314 "supported at the moment!");
3315
3316 if (_displaced_problem && parameters.get<bool>("use_displaced_mesh"))
3317 {
3318 parameters.set<SubProblem *>("_subproblem") = _displaced_problem.get();
3319 parameters.set<SystemBase *>("_sys") = &_displaced_problem->solverSys(nl_sys_num);
3321 }
3322 else
3323 {
3324 // It might _want_ to use a displaced mesh... but we're not so set it to false
3325 if (parameters.have_parameter<bool>("use_displaced_mesh"))
3326 parameters.set<bool>("use_displaced_mesh") = false;
3327
3328 parameters.set<SubProblem *>("_subproblem") = this;
3329 parameters.set<SystemBase *>("_sys") = _nl[nl_sys_num].get();
3330 }
3331
3332 logAdd("Constraint", name, c_name, parameters);
3333 _nl[nl_sys_num]->addConstraint(c_name, name, parameters);
3334}
bool _has_constraints
Whether or not this system has any Constraints.
const std::string & getObjectName() const
bool isParamValid(const std::string &name) const
This method returns parameters that have been initialized in one fashion or another,...
const Elem & get(const ElemType type_in)

◆ addConsumedPropertyName()

void SubProblem::addConsumedPropertyName ( const MooseObjectName obj_name,
const std::string &  prop_name 
)
inherited

Helper for tracking the object that is consuming a property for MaterialPropertyDebugOutput.

Definition at line 737 of file SubProblem.C.

738{
739 _consumed_material_properties[obj_name].insert(prop_name);
740}
std::map< MooseObjectName, std::set< std::string > > _consumed_material_properties

Referenced by MaterialPropertyInterface::addConsumedPropertyName().

◆ addConvergence()

void FEProblemBase::addConvergence ( const std::string &  type,
const std::string &  name,
InputParameters parameters 
)
virtualinherited

Adds a Convergence object.

Definition at line 2671 of file FEProblemBase.C.

2674{
2675 parallel_object_only();
2676
2677 for (THREAD_ID tid = 0; tid < libMesh::n_threads(); tid++)
2678 {
2679 std::shared_ptr<Convergence> conv = _factory.create<Convergence>(type, name, parameters, tid);
2680 _convergences.addObject(conv, tid);
2681 }
2682}
unsigned int THREAD_ID
Definition MooseTypes.h:237
Base class for convergence criteria.
Definition Convergence.h:26
MooseObjectWarehouse< Convergence > _convergences
convergence warehouse
virtual void addObject(std::shared_ptr< T > object, THREAD_ID tid=0, bool recurse=true) override
Adds an object to the storage structure.
unsigned int n_threads()

Referenced by FEProblemBase::addDefaultMultiAppFixedPointConvergence(), FEProblemBase::addDefaultNonlinearConvergence(), ReferenceResidualProblem::addDefaultNonlinearConvergence(), and FEProblemBase::addDefaultSteadyStateConvergence().

◆ addCouplingGhostingFunctor()

void SubProblem::addCouplingGhostingFunctor ( libMesh::GhostingFunctor coupling_gf,
bool  to_mesh = true 
)
inherited

Add a coupling functor to this problem's DofMaps.

Definition at line 1057 of file SubProblem.C.

1058{
1059 const auto num_nl_sys = numNonlinearSystems();
1060 if (!num_nl_sys)
1061 return;
1062
1063 systemBaseNonlinear(0).system().get_dof_map().add_coupling_functor(coupling_gf, to_mesh);
1064 cloneCouplingGhostingFunctor(coupling_gf, to_mesh);
1065}
virtual std::size_t numNonlinearSystems() const =0
virtual const SystemBase & systemBaseNonlinear(const unsigned int sys_num) const =0
Return the nonlinear system object as a base class reference given the system number.
void cloneCouplingGhostingFunctor(libMesh::GhostingFunctor &coupling_gf, bool to_mesh=true)
Creates (n_sys - 1) clones of the provided coupling ghosting functor (corresponding to the nonlinear ...
virtual libMesh::System & system()=0
Get the reference to the libMesh system.
void add_coupling_functor(GhostingFunctor &coupling_functor, bool to_mesh=true)
const DofMap & get_dof_map() const

◆ addDamper()

void FEProblemBase::addDamper ( const std::string &  damper_name,
const std::string &  name,
InputParameters parameters 
)
virtualinherited

Definition at line 5699 of file FEProblemBase.C.

5702{
5703 parallel_object_only();
5704
5705 const auto nl_sys_num =
5706 parameters.isParamValid("variable")
5707 ? determineSolverSystem(parameters.varName("variable", name), true).second
5708 : (unsigned int)0;
5709
5710 if (!isSolverSystemNonlinear(nl_sys_num))
5711 mooseError("You are trying to add a DGKernel to a linear variable/system, which is not "
5712 "supported at the moment!");
5713
5714 parameters.set<SubProblem *>("_subproblem") = this;
5715 parameters.set<SystemBase *>("_sys") = _nl[nl_sys_num].get();
5716
5717 _has_dampers = true;
5718 logAdd("Damper", name, damper_name, parameters);
5719 _nl[nl_sys_num]->addDamper(damper_name, name, parameters);
5720}
void ErrorVector unsigned int
bool _has_dampers
Whether or not this system has any Dampers associated with it.

◆ addDefaultMultiAppFixedPointConvergence()

void FEProblemBase::addDefaultMultiAppFixedPointConvergence ( const InputParameters params)
inherited

Adds the default fixed point Convergence associated with the problem.

This is called if the user does not supply 'multiapp_fixed_point_convergence'.

Parameters
[in]paramsParameters to apply to Convergence parameters

Definition at line 2697 of file FEProblemBase.C.

2698{
2699 const std::string class_name = "DefaultMultiAppFixedPointConvergence";
2700 InputParameters params = _factory.getValidParams(class_name);
2701 params.applyParameters(params_to_apply);
2702 params.applyParameters(parameters());
2703 params.set<bool>("added_as_default") = true;
2705}
virtual void addConvergence(const std::string &type, const std::string &name, InputParameters &parameters)
Adds a Convergence object.
const ConvergenceName & getMultiAppFixedPointConvergenceName() const
Gets the MultiApp fixed point convergence object name.
void applyParameters(const InputParameters &common, const std::vector< std::string > &exclude={}, const bool allow_private=false)
Method for applying common parameters.

◆ addDefaultNonlinearConvergence()

void FEProblemBase::addDefaultNonlinearConvergence ( const InputParameters params)
virtualinherited

Adds the default nonlinear Convergence associated with the problem.

This is called if the user does not supply 'nonlinear_convergence'.

Parameters
[in]paramsParameters to apply to Convergence parameters

Reimplemented in ReferenceResidualProblem.

Definition at line 2685 of file FEProblemBase.C.

2686{
2687 const std::string class_name = "DefaultNonlinearConvergence";
2688 InputParameters params = _factory.getValidParams(class_name);
2689 params.applyParameters(params_to_apply);
2690 params.applyParameters(parameters());
2691 params.set<bool>("added_as_default") = true;
2692 for (const auto & conv_name : getNonlinearConvergenceNames())
2693 addConvergence(class_name, conv_name, params);
2694}
const std::vector< ConvergenceName > & getNonlinearConvergenceNames() const
Gets the nonlinear system convergence object name(s).

◆ addDefaultSteadyStateConvergence()

void FEProblemBase::addDefaultSteadyStateConvergence ( const InputParameters params)
inherited

Adds the default steady-state detection Convergence.

This is called if the user does not supply 'steady_state_convergence'.

Parameters
[in]paramsParameters to apply to Convergence parameters

Definition at line 2708 of file FEProblemBase.C.

2709{
2710 const std::string class_name = "DefaultSteadyStateConvergence";
2711 InputParameters params = _factory.getValidParams(class_name);
2712 params.applyParameters(params_to_apply);
2713 params.applyParameters(parameters());
2714 params.set<bool>("added_as_default") = true;
2715 addConvergence(class_name, getSteadyStateConvergenceName(), params);
2716}
const ConvergenceName & getSteadyStateConvergenceName() const
Gets the steady-state detection convergence object name.

◆ addDGKernel()

void FEProblemBase::addDGKernel ( const std::string &  kernel_name,
const std::string &  name,
InputParameters parameters 
)
virtualinherited

Definition at line 3572 of file FEProblemBase.C.

3575{
3576 parallel_object_only();
3577
3578 const auto nl_sys_num = determineSolverSystem(parameters.varName("variable", name), true).second;
3579 if (!isSolverSystemNonlinear(nl_sys_num))
3580 mooseError("You are trying to add a DGKernel to a linear variable/system, which is not "
3581 "supported at the moment!");
3582
3583 if (_displaced_problem && parameters.get<bool>("use_displaced_mesh"))
3584 {
3585 parameters.set<SubProblem *>("_subproblem") = _displaced_problem.get();
3586 parameters.set<SystemBase *>("_sys") = &_displaced_problem->solverSys(nl_sys_num);
3588 }
3589 else
3590 {
3591 if (_displaced_problem == nullptr && parameters.get<bool>("use_displaced_mesh"))
3592 {
3593 // We allow DGKernels to request that they use_displaced_mesh,
3594 // but then be overridden when no displacements variables are
3595 // provided in the Mesh block. If that happened, update the value
3596 // of use_displaced_mesh appropriately for this DGKernel.
3597 if (parameters.have_parameter<bool>("use_displaced_mesh"))
3598 parameters.set<bool>("use_displaced_mesh") = false;
3599 }
3600
3601 parameters.set<SubProblem *>("_subproblem") = this;
3602 parameters.set<SystemBase *>("_sys") = _nl[nl_sys_num].get();
3603 }
3604
3605 logAdd("DGKernel", name, dg_kernel_name, parameters);
3606 _nl[nl_sys_num]->addDGKernel(dg_kernel_name, name, parameters);
3607
3609}
bool _reinit_displaced_neighbor
Whether to call DisplacedProblem::reinitNeighbor when this->reinitNeighbor is called.
bool _has_internal_edge_residual_objects
Whether the problem has dgkernels or interface kernels.

◆ addDiracKernel()

void FEProblemBase::addDiracKernel ( const std::string &  kernel_name,
const std::string &  name,
InputParameters parameters 
)
virtualinherited

Definition at line 3532 of file FEProblemBase.C.

3535{
3536 parallel_object_only();
3537
3538 const auto nl_sys_num = determineSolverSystem(parameters.varName("variable", name), true).second;
3539 if (!isSolverSystemNonlinear(nl_sys_num))
3540 mooseError("You are trying to add a DiracKernel to a linear variable/system, which is not "
3541 "supported at the moment!");
3542
3543 if (_displaced_problem && parameters.get<bool>("use_displaced_mesh"))
3544 {
3545 parameters.set<SubProblem *>("_subproblem") = _displaced_problem.get();
3546 parameters.set<SystemBase *>("_sys") = &_displaced_problem->solverSys(nl_sys_num);
3548 }
3549 else
3550 {
3551 if (_displaced_problem == nullptr && parameters.get<bool>("use_displaced_mesh"))
3552 {
3553 // We allow DiracKernels to request that they use_displaced_mesh,
3554 // but then be overridden when no displacements variables are
3555 // provided in the Mesh block. If that happened, update the value
3556 // of use_displaced_mesh appropriately for this DiracKernel.
3557 if (parameters.have_parameter<bool>("use_displaced_mesh"))
3558 parameters.set<bool>("use_displaced_mesh") = false;
3559 }
3560
3561 parameters.set<SubProblem *>("_subproblem") = this;
3562 parameters.set<SystemBase *>("_sys") = _nl[nl_sys_num].get();
3563 }
3564
3565 logAdd("DiracKernel", name, kernel_name, parameters);
3566 _nl[nl_sys_num]->addDiracKernel(kernel_name, name, parameters);
3567}
bool _reinit_displaced_elem
Whether to call DisplacedProblem::reinitElem when this->reinitElem is called.

◆ addDisplacedProblem()

void FEProblemBase::addDisplacedProblem ( std::shared_ptr< DisplacedProblem displaced_problem)
virtualinherited

Definition at line 8389 of file FEProblemBase.C.

8390{
8391 parallel_object_only();
8392
8395}
std::shared_ptr< DisplacedProblem > displaced_problem
MooseMesh * _displaced_mesh

◆ addDistribution()

void FEProblemBase::addDistribution ( const std::string &  type,
const std::string &  name,
InputParameters parameters 
)
virtualinherited

The following functions will enable MOOSE to have the capability to import distributions.

Definition at line 2844 of file FEProblemBase.C.

2847{
2848 parameters.set<std::string>("type") = type;
2849 addObject<Distribution>(type, name, parameters, /* threaded = */ false);
2850}

◆ addElementalFieldVariable()

void FEProblemBase::addElementalFieldVariable ( const std::string &  var_type,
const std::string &  var_name,
InputParameters params 
)
virtualinherited

Add an elemental field variable for use in the adaptivity system.

Reimplemented in MFEMProblem.

Definition at line 3370 of file FEProblemBase.C.

3373{
3374 addAuxVariable(var_type, var_name, params);
3375}
virtual void addAuxVariable(const std::string &var_type, const std::string &var_name, InputParameters &params)
Canonical method for adding an auxiliary variable.

Referenced by AddElementalFieldAction::init().

◆ addExternalVariables()

virtual void ExternalProblem::addExternalVariables ( )
inlinevirtual

Method called to add AuxVariables to the simulation.

These variables would be the fields that should either be saved out with the MOOSE-formatted solutions or available for transfer to variables in Multiapp simulations.

Definition at line 48 of file ExternalProblem.h.

48{}

◆ addFunction()

void FEProblemBase::addFunction ( const std::string &  type,
const std::string &  name,
InputParameters parameters 
)
virtualinherited

Reimplemented in MFEMProblem.

Definition at line 2645 of file FEProblemBase.C.

2648{
2649 parallel_object_only();
2650
2651 parameters.set<SubProblem *>("_subproblem") = this;
2652
2653 for (THREAD_ID tid = 0; tid < libMesh::n_threads(); tid++)
2654 {
2655 std::shared_ptr<Function> func = _factory.create<Function>(type, name, parameters, tid);
2656 logAdd("Function", name, type, parameters);
2657 _functions.addObject(func, tid);
2658
2659 if (auto * const functor = dynamic_cast<Moose::FunctorBase<Real> *>(func.get()))
2660 {
2661 this->addFunctor(name, *functor, tid);
2663 _displaced_problem->addFunctor(name, *functor, tid);
2664 }
2665 else
2666 mooseError("Unrecognized function functor type");
2667 }
2668}
MooseObjectWarehouse< Function > _functions
functions
Base class for function objects.
Definition Function.h:30
Base class template for functor objects.
void addFunctor(const std::string &name, const Moose::FunctorBase< T > &functor, const THREAD_ID tid)
add a functor to the problem functor container

Referenced by MFEMProblem::addFunction(), and FEProblemBase::getFunction().

◆ addFunctor()

template<typename T >
void SubProblem::addFunctor ( const std::string &  name,
const Moose::FunctorBase< T > &  functor,
const THREAD_ID  tid 
)
inherited

add a functor to the problem functor container

Definition at line 1393 of file SubProblem.h.

1396{
1397 constexpr bool added_functor_is_ad =
1398 !std::is_same<T, typename MetaPhysicL::RawType<T>::value_type>::value;
1399
1400 mooseAssert(tid < _functors.size(), "Too large a thread ID");
1401
1402 auto & functor_to_request_info = _functor_to_request_info[tid];
1403 auto & functors = _functors[tid];
1404 auto it = functors.find("wraps_" + name);
1405 if (it != functors.end())
1406 {
1407 // We have this functor already. If it's a null functor, we want to replace it with the valid
1408 // functor we have now. If it's not then we'll add a new entry into the multimap and then we'll
1409 // error later if a user requests a functor because their request is ambiguous. This is the
1410 // reason that the functors container is a multimap: for nice error messages
1411 auto * const existing_wrapper_base =
1412 added_functor_is_ad ? std::get<2>(it->second).get() : std::get<1>(it->second).get();
1413 auto * const existing_wrapper = dynamic_cast<Moose::Functor<T> *>(existing_wrapper_base);
1414 if (existing_wrapper && existing_wrapper->template wrapsType<Moose::NullFunctor<T>>())
1415 {
1416 // Sanity check
1417 auto [request_info_it, request_info_end_it] = functor_to_request_info.equal_range(name);
1418 if (request_info_it == request_info_end_it)
1419 mooseError("We are wrapping a NullFunctor but we don't have any unfilled functor request "
1420 "info. This doesn't make sense.");
1421
1422 // Check for valid requests
1423 while (request_info_it != request_info_end_it)
1424 {
1425 auto & [requested_functor_is_ad, requestor_is_ad] = request_info_it->second;
1426 if (!requested_functor_is_ad && requestor_is_ad && added_functor_is_ad)
1427 mooseError("We are requesting a non-AD functor '" + name +
1428 "' from an AD object, but the true functor is AD. This means we could be "
1429 "dropping important derivatives. We will not allow this");
1430 // We're going to eventually check whether we've fulfilled all functor requests and our
1431 // check will be that the multimap is empty. This request is fulfilled, so erase it from the
1432 // map now
1433 request_info_it = functor_to_request_info.erase(request_info_it);
1434 }
1435
1436 // Ok we didn't have the functor before, so we will add it now
1437 std::get<0>(it->second) =
1439 existing_wrapper->assign(functor);
1440 // Finally we create the non-AD or AD complement of the just added functor
1441 if constexpr (added_functor_is_ad)
1442 {
1443 typedef typename MetaPhysicL::RawType<T>::value_type NonADType;
1444 auto * const existing_non_ad_wrapper_base = std::get<1>(it->second).get();
1445 auto * const existing_non_ad_wrapper =
1446 dynamic_cast<Moose::Functor<NonADType> *>(existing_non_ad_wrapper_base);
1447 mooseAssert(existing_non_ad_wrapper->template wrapsType<Moose::NullFunctor<NonADType>>(),
1448 "Both members of pair should have been wrapping a NullFunctor");
1449 existing_non_ad_wrapper->assign(
1450 std::make_unique<Moose::RawValueFunctor<NonADType>>(functor));
1451 }
1452 else
1453 {
1454 typedef typename Moose::ADType<T>::type ADType;
1455 auto * const existing_ad_wrapper_base = std::get<2>(it->second).get();
1456 auto * const existing_ad_wrapper =
1457 dynamic_cast<Moose::Functor<ADType> *>(existing_ad_wrapper_base);
1458 mooseAssert(existing_ad_wrapper->template wrapsType<Moose::NullFunctor<ADType>>(),
1459 "Both members of pair should have been wrapping a NullFunctor");
1460 existing_ad_wrapper->assign(std::make_unique<Moose::ADWrapperFunctor<ADType>>(functor));
1461 }
1462 return;
1463 }
1464 else if (!existing_wrapper)
1465 {
1466 // Functor was emplaced but the cast failed. This could be a double definition with
1467 // different types, or it could be a request with one type then a definition with another
1468 // type. Either way it is going to error later, but it is cleaner to catch it now
1469 mooseError("Functor '",
1470 name,
1471 "' is being added with return type '",
1472 MooseUtils::prettyCppType<T>(),
1473 "' but it has already been defined or requested with return type '",
1474 existing_wrapper_base->returnType(),
1475 "'.");
1476 }
1477 }
1478
1479 // We are a new functor, create the opposite ADType one and store it with other functors
1480 if constexpr (added_functor_is_ad)
1481 {
1482 typedef typename MetaPhysicL::RawType<T>::value_type NonADType;
1483 auto new_non_ad_wrapper = std::make_unique<Moose::Functor<NonADType>>(
1484 std::make_unique<Moose::RawValueFunctor<NonADType>>(functor));
1485 auto new_ad_wrapper = std::make_unique<Moose::Functor<T>>(functor);
1486 _functors[tid].emplace("wraps_" + name,
1487 std::make_tuple(SubProblem::TrueFunctorIs::AD,
1488 std::move(new_non_ad_wrapper),
1489 std::move(new_ad_wrapper)));
1490 }
1491 else
1492 {
1493 typedef typename Moose::ADType<T>::type ADType;
1494 auto new_non_ad_wrapper = std::make_unique<Moose::Functor<T>>((functor));
1495 auto new_ad_wrapper = std::make_unique<Moose::Functor<ADType>>(
1496 std::make_unique<Moose::ADWrapperFunctor<ADType>>(functor));
1497 _functors[tid].emplace("wraps_" + name,
1498 std::make_tuple(SubProblem::TrueFunctorIs::NONAD,
1499 std::move(new_non_ad_wrapper),
1500 std::move(new_ad_wrapper)));
1501 }
1502}
void mooseError(Args &&... args) const
Emits an error prefixed with object name and type and optionally a file path to the top-level block p...
Definition MooseBase.h:271
Wraps non-AD functors such that they can be used in objects that have requested the functor as AD.
This is a wrapper that forwards calls to the implementation, which can be switched out at any time wi...
A functor that serves as a placeholder during the simulation setup phase if a functor consumer reques...
std::vector< std::multimap< std::string, std::tuple< TrueFunctorIs, std::unique_ptr< Moose::FunctorEnvelopeBase >, std::unique_ptr< Moose::FunctorEnvelopeBase > > > > _functors
A container holding pointers to all the functors in our problem.
std::vector< std::multimap< std::string, std::pair< bool, bool > > > _functor_to_request_info
A multimap (for each thread) from unfilled functor requests to whether the requests were for AD funct...

Referenced by FEProblemBase::addFunction(), SubProblem::addPiecewiseByBlockLambdaFunctor(), and FEProblemBase::addUserObject().

◆ addFunctorMaterial()

void FEProblemBase::addFunctorMaterial ( const std::string &  functor_material_name,
const std::string &  name,
InputParameters parameters 
)
virtualinherited

Reimplemented in MFEMProblem.

Definition at line 4102 of file FEProblemBase.C.

4105{
4106 parallel_object_only();
4107
4108 auto add_functor_materials = [&](const auto & parameters, const auto & name)
4109 {
4110 for (THREAD_ID tid = 0; tid < libMesh::n_threads(); tid++)
4111 {
4112 // Create the general Block/Boundary MaterialBase object
4113 std::shared_ptr<MaterialBase> material =
4114 _factory.create<MaterialBase>(functor_material_name, name, parameters, tid);
4115 logAdd("FunctorMaterial", name, functor_material_name, parameters);
4116 _all_materials.addObject(material, tid);
4117 _materials.addObject(material, tid);
4118 }
4119 };
4120
4121 parameters.set<SubProblem *>("_subproblem") = this;
4122 add_functor_materials(parameters, name);
4124 {
4125 auto disp_params = parameters;
4126 disp_params.set<SubProblem *>("_subproblem") = _displaced_problem.get();
4127 add_functor_materials(disp_params, name + "_displaced");
4128 }
4129}
MaterialWarehouse _materials
MaterialWarehouse _all_materials
MaterialBases compute MaterialProperties.

◆ addFVBC()

void FEProblemBase::addFVBC ( const std::string &  fv_bc_name,
const std::string &  name,
InputParameters parameters 
)
virtualinherited

Definition at line 3626 of file FEProblemBase.C.

3629{
3630 addObject<FVBoundaryCondition>(fv_bc_name, name, parameters);
3631}

Referenced by DiffusionFV::addFVBCs().

◆ addFVInitialCondition()

void FEProblemBase::addFVInitialCondition ( const std::string &  ic_name,
const std::string &  name,
InputParameters parameters 
)
virtualinherited

Add an initial condition for a finite volume variables.

Parameters
ic_nameThe name of the boundary condition object
nameThe user-defined name from the input file
parametersThe input parameters for construction

Definition at line 3795 of file FEProblemBase.C.

3798{
3799 parallel_object_only();
3800
3801 // before we start to mess with the initial condition, we need to check parameters for errors.
3803 const std::string & var_name = parameters.get<VariableName>("variable");
3804
3805 // Forbid initial conditions on a restarted problem, as they would override the restart
3806 checkICRestartError(ic_name, name, var_name);
3807
3808 parameters.set<SubProblem *>("_subproblem") = this;
3809
3810 // field IC
3811 if (hasVariable(var_name))
3812 {
3813 for (THREAD_ID tid = 0; tid < libMesh::n_threads(); ++tid)
3814 {
3815 auto & var = getVariable(
3817 parameters.set<SystemBase *>("_sys") = &var.sys();
3818 std::shared_ptr<FVInitialConditionBase> ic;
3819 if (var.isFV())
3820 ic = _factory.create<FVInitialCondition>(ic_name, name, parameters, tid);
3821 else
3822 mooseError(
3823 "Your variable for an FVInitialCondition needs to be an a finite volume variable!");
3824 _fv_ics.addObject(ic, tid);
3825 }
3826 }
3827 else
3828 mooseError("Variable '",
3829 var_name,
3830 "' requested in finite volume initial condition '",
3831 name,
3832 "' does not exist.");
3833}
virtual const MooseVariableFieldBase & getVariable(const THREAD_ID tid, const std::string &var_name, Moose::VarKindType expected_var_type=Moose::VarKindType::VAR_ANY, Moose::VarFieldType expected_var_field_type=Moose::VarFieldType::VAR_FIELD_ANY) const override
Returns the variable reference for requested variable which must be of the expected_var_type (Nonline...
virtual bool hasVariable(const std::string &var_name) const override
Whether or not this problem has the variable.
FVInitialConditionWarehouse _fv_ics
void checkICRestartError(const std::string &ic_name, const std::string &name, const VariableName &var_name)
Checks if the variable of the initial condition is getting restarted and errors for specific cases.
This is a template class that implements the workhorse compute and computeNodal methods.
void addObject(std::shared_ptr< FVInitialConditionBase > object, THREAD_ID tid, bool recurse=true)
Add object to the warehouse.
void checkParams(const std::string &parsing_syntax)
This function checks parameters stored in the object to make sure they are in the correct state as th...
@ VAR_FIELD_ANY
Definition MooseTypes.h:781
@ VAR_ANY
Definition MooseTypes.h:772

◆ addFVInterfaceKernel()

void FEProblemBase::addFVInterfaceKernel ( const std::string &  fv_ik_name,
const std::string &  name,
InputParameters parameters 
)
virtualinherited

We assume that variable1 and variable2 can live on different systems, in this case the user needs to create two interface kernels with flipped variables and parameters

Definition at line 3634 of file FEProblemBase.C.

3637{
3640 addObject<FVInterfaceKernel>(
3641 fv_ik_name, name, parameters, /*threaded=*/true, /*variable_param_name=*/"variable1");
3642}

◆ addFVInterpolationMethod()

void FEProblemBase::addFVInterpolationMethod ( const std::string &  method_type,
const std::string &  name,
InputParameters parameters 
)
virtualinherited

Add an FV interpolation method.

Parameters
method_typeThe type of the method.
nameThe name of the method.
parametersThe input parameters of the method.

Definition at line 4729 of file FEProblemBase.C.

4732{
4733 parallel_object_only();
4734
4736
4737 for (const auto tid : make_range(libMesh::n_threads()))
4738 {
4739 auto method = _factory.create<FVInterpolationMethod>(method_type, name, parameters, tid);
4740 logAdd("FVInterpolationMethod", name, method_type, parameters);
4741 theWarehouse().add(method);
4742 }
4743}
void addObjectParamsHelper(InputParameters &params, const std::string &object_name, const std::string &var_param_name="variable")
Helper for setting the "_subproblem" and "_sys" parameters in addObject() and in addUserObject().
TheWarehouse & theWarehouse() const
Registered base class for linear FV interpolation objects.
void add(std::shared_ptr< MooseObject > obj)
add adds a new object to the warehouse and stores attributes/metadata about it for running queries/fi...
The following methods are specializations for using the libMesh::Parallel::packed_range_* routines fo...
IntRange< T > make_range(T beg, T end)

◆ addFVKernel()

void FEProblemBase::addFVKernel ( const std::string &  kernel_name,
const std::string &  name,
InputParameters parameters 
)
virtualinherited

Definition at line 3612 of file FEProblemBase.C.

3615{
3616 if (_displaced_problem && parameters.get<bool>("use_displaced_mesh"))
3617 // FVElementalKernels are computed in the historically finite element threaded loops. They rely
3618 // on Assembly data like _current_elem. When we call reinit on the FEProblemBase we will only
3619 // reinit the DisplacedProblem and its associated Assembly objects if we mark this boolean as
3620 // true
3622 addObject<FVKernel>(fv_kernel_name, name, parameters);
3623}

Referenced by DiffusionFV::addFVKernels().

◆ addGhostedBoundary()

void FEProblemBase::addGhostedBoundary ( BoundaryID  boundary_id)
overridevirtualinherited

Will make sure that all necessary elements from boundary_id are ghosted to this processor.

Implements SubProblem.

Definition at line 2242 of file FEProblemBase.C.

2243{
2244 _mesh.addGhostedBoundary(boundary_id);
2246 _displaced_mesh->addGhostedBoundary(boundary_id);
2247}
void addGhostedBoundary(BoundaryID boundary_id)
This will add the boundary ids to be ghosted to this processor.
Definition MooseMesh.C:3330

Referenced by DisplacedProblem::addGhostedBoundary().

◆ addGhostedElem()

void FEProblemBase::addGhostedElem ( dof_id_type  elem_id)
overridevirtualinherited

Will make sure that all dofs connected to elem_id are ghosted to this processor.

Implements SubProblem.

Definition at line 2235 of file FEProblemBase.C.

2236{
2237 if (_mesh.elemPtr(elem_id)->processor_id() != processor_id())
2238 _ghosted_elems.insert(elem_id);
2239}
virtual Elem * elemPtr(const dof_id_type i)
Definition MooseMesh.C:3214
std::set< dof_id_type > _ghosted_elems
Elements that should have Dofs ghosted to the local processor.
processor_id_type processor_id() const
processor_id_type processor_id() const

Referenced by DisplacedProblem::addGhostedElem(), and NodalPatchRecovery::NodalPatchRecovery().

◆ addHDGKernel()

void FEProblemBase::addHDGKernel ( const std::string &  kernel_name,
const std::string &  name,
InputParameters parameters 
)
virtualinherited

Definition at line 3180 of file FEProblemBase.C.

3183{
3184 parallel_object_only();
3185 const auto nl_sys_num = determineSolverSystem(parameters.varName("variable", name), true).second;
3186 if (!isSolverSystemNonlinear(nl_sys_num))
3187 mooseError("You are trying to add a HDGKernel to a linear variable/system, which is not "
3188 "supported at the moment!");
3190 kernel_name, name, parameters, nl_sys_num, "HDGKernel", _reinit_displaced_elem);
3191
3192 _nl[nl_sys_num]->addHDGKernel(kernel_name, name, parameters);
3193}

◆ addIndicator()

void FEProblemBase::addIndicator ( const std::string &  indicator_name,
const std::string &  name,
InputParameters parameters 
)
virtualinherited

Reimplemented in MFEMProblem.

Definition at line 5730 of file FEProblemBase.C.

5733{
5734 parallel_object_only();
5735
5736 if (_displaced_problem && parameters.get<bool>("use_displaced_mesh"))
5737 {
5738 parameters.set<SubProblem *>("_subproblem") = _displaced_problem.get();
5739 parameters.set<SystemBase *>("_sys") = &_displaced_problem->auxSys();
5741 }
5742 else
5743 {
5744 if (_displaced_problem == nullptr && parameters.get<bool>("use_displaced_mesh"))
5745 {
5746 // We allow Indicators to request that they use_displaced_mesh,
5747 // but then be overridden when no displacements variables are
5748 // provided in the Mesh block. If that happened, update the value
5749 // of use_displaced_mesh appropriately for this Indicator.
5750 if (parameters.have_parameter<bool>("use_displaced_mesh"))
5751 parameters.set<bool>("use_displaced_mesh") = false;
5752 }
5753
5754 parameters.set<SubProblem *>("_subproblem") = this;
5755 parameters.set<SystemBase *>("_sys") = _aux.get();
5756 }
5757
5758 for (THREAD_ID tid = 0; tid < libMesh::n_threads(); tid++)
5759 {
5760 std::shared_ptr<Indicator> indicator =
5761 _factory.create<Indicator>(indicator_name, name, parameters, tid);
5762 logAdd("Indicator", name, indicator_name, parameters);
5763 std::shared_ptr<InternalSideIndicatorBase> isi =
5764 std::dynamic_pointer_cast<InternalSideIndicatorBase>(indicator);
5765 if (isi)
5767 else
5768 _indicators.addObject(indicator, tid);
5769 }
5770}
MooseObjectWarehouse< Indicator > _indicators
MooseObjectWarehouse< InternalSideIndicatorBase > _internal_side_indicators

◆ addInitialCondition()

void FEProblemBase::addInitialCondition ( const std::string &  ic_name,
const std::string &  name,
InputParameters parameters 
)
virtualinherited

Reimplemented in MFEMProblem.

Definition at line 3735 of file FEProblemBase.C.

3738{
3739 parallel_object_only();
3740
3741 // before we start to mess with the initial condition, we need to check parameters for errors.
3743 const std::string & var_name = parameters.get<VariableName>("variable");
3744
3745 // Forbid initial conditions on a restarted problem, as they would override the restart
3746 checkICRestartError(ic_name, name, var_name);
3747
3748 parameters.set<SubProblem *>("_subproblem") = this;
3749
3750 // field IC
3751 if (hasVariable(var_name))
3752 {
3753 for (THREAD_ID tid = 0; tid < libMesh::n_threads(); ++tid)
3754 {
3757 parameters.set<SystemBase *>("_sys") = &var.sys();
3758 std::shared_ptr<InitialConditionBase> ic;
3759 if (dynamic_cast<MooseVariable *>(&var))
3760 ic = _factory.create<InitialCondition>(ic_name, name, parameters, tid);
3761 else if (dynamic_cast<VectorMooseVariable *>(&var))
3763 else if (dynamic_cast<ArrayMooseVariable *>(&var))
3764 ic = _factory.create<ArrayInitialCondition>(ic_name, name, parameters, tid);
3765 else if (dynamic_cast<MooseVariableFVReal *>(&var))
3766 ic = _factory.create<InitialCondition>(ic_name, name, parameters, tid);
3767 else if (dynamic_cast<MooseLinearVariableFVReal *>(&var))
3768 ic = _factory.create<InitialCondition>(ic_name, name, parameters, tid);
3769 else
3770 mooseError("Your FE variable in initial condition ",
3771 name,
3772 " must be either of scalar or vector type");
3773 logAdd("IC", name, ic_name, parameters);
3774 _ics.addObject(ic, tid);
3775 }
3776 }
3777
3778 // scalar IC
3779 else if (hasScalarVariable(var_name))
3780 {
3781 MooseVariableScalar & var = getScalarVariable(0, var_name);
3782 parameters.set<SystemBase *>("_sys") = &var.sys();
3783 std::shared_ptr<ScalarInitialCondition> ic =
3785 logAdd("ScalarIC", name, ic_name, parameters);
3787 }
3788
3789 else
3790 mooseError(
3791 "Variable '", var_name, "' requested in initial condition '", name, "' does not exist.");
3792}
ScalarInitialConditionWarehouse _scalar_ics
virtual bool hasScalarVariable(const std::string &var_name) const override
Returns a Boolean indicating whether any system contains a variable with the name provided.
virtual MooseVariableScalar & getScalarVariable(const THREAD_ID tid, const std::string &var_name) override
Returns the scalar variable reference from whichever system contains it.
InitialConditionWarehouse _ics
This is a template class that implements the workhorse compute and computeNodal methods.
void addObject(std::shared_ptr< InitialConditionBase > object, THREAD_ID tid, bool recurse=true)
Add object to the warehouse.
virtual void addObject(std::shared_ptr< T > object, THREAD_ID tid=0, bool recurse=true)
Adds an object to the storage structure.
SystemBase & sys()
Get the system this variable is part of.
This class provides an interface for common operations on field variables of both FE and FV types wit...
Class for scalar variables (they are different).
InitialConditions are objects that set the initial value of variables.

Referenced by DiffusionPhysicsBase::addInitialConditions(), and DiffusionPhysicsBase::addInitialConditionsFromComponents().

◆ addInterfaceKernel()

void FEProblemBase::addInterfaceKernel ( const std::string &  kernel_name,
const std::string &  name,
InputParameters parameters 
)
virtualinherited

Definition at line 3663 of file FEProblemBase.C.

3666{
3667 parallel_object_only();
3668
3669 const auto nl_sys_num = determineSolverSystem(parameters.varName("variable", name), true).second;
3670 if (!isSolverSystemNonlinear(nl_sys_num))
3671 mooseError("You are trying to add a InterfaceKernel to a linear variable/system, which is not "
3672 "supported at the moment!");
3673
3674 if (_displaced_problem && parameters.get<bool>("use_displaced_mesh"))
3675 {
3676 parameters.set<SubProblem *>("_subproblem") = _displaced_problem.get();
3677 parameters.set<SystemBase *>("_sys") = &_displaced_problem->solverSys(nl_sys_num);
3679 }
3680 else
3681 {
3682 if (_displaced_problem == nullptr && parameters.get<bool>("use_displaced_mesh"))
3683 {
3684 // We allow InterfaceKernels to request that they use_displaced_mesh,
3685 // but then be overridden when no displacements variables are
3686 // provided in the Mesh block. If that happened, update the value
3687 // of use_displaced_mesh appropriately for this InterfaceKernel.
3688 if (parameters.have_parameter<bool>("use_displaced_mesh"))
3689 parameters.set<bool>("use_displaced_mesh") = false;
3690 }
3691
3692 parameters.set<SubProblem *>("_subproblem") = this;
3693 parameters.set<SystemBase *>("_sys") = _nl[nl_sys_num].get();
3694 }
3695
3696 logAdd("InterfaceKernel", name, interface_kernel_name, parameters);
3697 _nl[nl_sys_num]->addInterfaceKernel(interface_kernel_name, name, parameters);
3698
3700}

◆ addInterfaceMaterial()

void FEProblemBase::addInterfaceMaterial ( const std::string &  material_name,
const std::string &  name,
InputParameters parameters 
)
virtualinherited

Definition at line 4140 of file FEProblemBase.C.

4143{
4145}
virtual void addMaterialHelper(std::vector< MaterialWarehouse * > warehouse, const std::string &material_name, const std::string &name, InputParameters &parameters)
MaterialWarehouse _interface_materials

◆ addJacobian()

void FEProblemBase::addJacobian ( const THREAD_ID  tid)
overridevirtualinherited

Implements SubProblem.

Definition at line 2079 of file FEProblemBase.C.

2080{
2083 _assembly[tid][_current_nl_sys->number()]->addJacobianNonlocal(Assembly::GlobalDataKey{});
2085 {
2086 _displaced_problem->addJacobian(tid);
2088 _displaced_problem->addJacobianNonlocal(tid);
2089 }
2090}
bool _has_nonlocal_coupling
Indicates if nonlocal coupling is required/exists.

Referenced by ComputeDiracThread::postElement().

◆ addJacobianBlockTags()

void FEProblemBase::addJacobianBlockTags ( libMesh::SparseMatrix< libMesh::Number > &  jacobian,
unsigned int  ivar,
unsigned int  jvar,
const DofMap dof_map,
std::vector< dof_id_type > &  dof_indices,
const std::set< TagID > &  tags,
const THREAD_ID  tid 
)
virtualinherited

Definition at line 2154 of file FEProblemBase.C.

2161{
2162 _assembly[tid][_current_nl_sys->number()]->addJacobianBlockTags(
2163 jacobian, ivar, jvar, dof_map, dof_indices, Assembly::GlobalDataKey{}, tags);
2164
2166 if (_nonlocal_cm[_current_nl_sys->number()](ivar, jvar) != 0)
2167 {
2169 _assembly[tid][_current_nl_sys->number()]->addJacobianBlockNonlocalTags(
2170 jacobian,
2171 ivar,
2172 jvar,
2173 dof_map,
2174 dof_indices,
2175 jv.allDofIndices(),
2177 tags);
2178 }
2179
2181 {
2182 _displaced_problem->addJacobianBlockTags(jacobian, ivar, jvar, dof_map, dof_indices, tags, tid);
2184 if (_nonlocal_cm[_current_nl_sys->number()](ivar, jvar) != 0)
2185 {
2187 _displaced_problem->addJacobianBlockNonlocal(
2188 jacobian, ivar, jvar, dof_map, dof_indices, jv.allDofIndices(), tags, tid);
2189 }
2190 }
2191}
std::vector< libMesh::CouplingMatrix > _nonlocal_cm
nonlocal coupling matrix
const std::vector< dof_id_type > & allDofIndices() const
Get all global dofindices for the variable.
MooseVariableFieldBase & getVariable(THREAD_ID tid, const std::string &var_name) const
Gets a reference to a variable of with specified name.
Definition SystemBase.C:91

Referenced by ComputeJacobianBlocksThread::postElement().

◆ addJacobianLowerD()

void FEProblemBase::addJacobianLowerD ( const THREAD_ID  tid)
overridevirtualinherited

Implements SubProblem.

Definition at line 2109 of file FEProblemBase.C.

2110{
2111 _assembly[tid][_current_nl_sys->number()]->addJacobianLowerD(Assembly::GlobalDataKey{});
2113 _displaced_problem->addJacobianLowerD(tid);
2114}

Referenced by ComputeJacobianThread::accumulateLower(), and ComputeResidualAndJacobianThread::accumulateLower().

◆ addJacobianNeighbor() [1/3]

void FEProblemBase::addJacobianNeighbor ( const THREAD_ID  tid)
overridevirtualinherited

◆ addJacobianNeighbor() [2/3]

virtual void FEProblemBase::addJacobianNeighbor ( libMesh::SparseMatrix< libMesh::Number > &  jacobian,
unsigned int  ivar,
unsigned int  jvar,
const DofMap &  dof_map,
std::vector< dof_id_type > &  dof_indices,
std::vector< dof_id_type > &  neighbor_dof_indices,
const std::set< TagID > &  tags,
const THREAD_ID  tid 
)
overridevirtualinherited

◆ addJacobianNeighbor() [3/3]

virtual void SubProblem::addJacobianNeighbor ( libMesh::SparseMatrix< libMesh::Number > &  jacobian,
unsigned int  ivar,
unsigned int  jvar,
const libMesh::DofMap dof_map,
std::vector< dof_id_type > &  dof_indices,
std::vector< dof_id_type > &  neighbor_dof_indices,
const std::set< TagID > &  tags,
const THREAD_ID  tid 
)
pure virtualinherited

◆ addJacobianNeighborLowerD()

void FEProblemBase::addJacobianNeighborLowerD ( const THREAD_ID  tid)
overridevirtualinherited

Implements SubProblem.

Definition at line 2101 of file FEProblemBase.C.

2102{
2103 _assembly[tid][_current_nl_sys->number()]->addJacobianNeighborLowerD(Assembly::GlobalDataKey{});
2105 _displaced_problem->addJacobianNeighborLowerD(tid);
2106}

Referenced by ComputeJacobianThread::accumulateNeighborLower(), and ComputeResidualAndJacobianThread::accumulateNeighborLower().

◆ addJacobianOffDiagScalar()

void FEProblemBase::addJacobianOffDiagScalar ( unsigned int  ivar,
const THREAD_ID  tid = 0 
)
virtualinherited

Definition at line 2123 of file FEProblemBase.C.

2124{
2125 _assembly[tid][_current_nl_sys->number()]->addJacobianOffDiagScalar(ivar,
2127}

Referenced by NonlinearSystemBase::computeScalarKernelsJacobians().

◆ addJacobianScalar()

void FEProblemBase::addJacobianScalar ( const THREAD_ID  tid = 0)
virtualinherited

Definition at line 2117 of file FEProblemBase.C.

2118{
2119 _assembly[tid][_current_nl_sys->number()]->addJacobianScalar(Assembly::GlobalDataKey{});
2120}

Referenced by NonlinearSystemBase::computeScalarKernelsJacobians().

◆ addKernel()

void FEProblemBase::addKernel ( const std::string &  kernel_name,
const std::string &  name,
InputParameters parameters 
)
virtualinherited

Reimplemented in MFEMProblem.

Definition at line 3164 of file FEProblemBase.C.

3167{
3168 parallel_object_only();
3169 const auto nl_sys_num = determineSolverSystem(parameters.varName("variable", name), true).second;
3170 if (!isSolverSystemNonlinear(nl_sys_num))
3171 mooseError("You are trying to add a Kernel to a linear variable/system, which is not "
3172 "supported at the moment!");
3174 kernel_name, name, parameters, nl_sys_num, "Kernel", _reinit_displaced_elem);
3175
3176 _nl[nl_sys_num]->addKernel(kernel_name, name, parameters);
3177}

Referenced by DiffusionCG::addFEKernels().

◆ addKokkosAuxKernel()

virtual void FEProblemBase::addKokkosAuxKernel ( const std::string &  kernel_name,
const std::string &  name,
InputParameters parameters 
)
virtualinherited

◆ addKokkosBoundaryCondition()

virtual void FEProblemBase::addKokkosBoundaryCondition ( const std::string &  bc_name,
const std::string &  name,
InputParameters parameters 
)
virtualinherited

◆ addKokkosFunction()

virtual void FEProblemBase::addKokkosFunction ( const std::string &  type,
const std::string &  name,
InputParameters parameters 
)
virtualinherited

Add a Kokkos function to the problem.

Parameters
typeThe Kokkos function type
nameThe Kokkos function name
parametersThe Kokkos function input parameters

Referenced by FEProblemBase::getKokkosFunction().

◆ addKokkosKernel()

virtual void FEProblemBase::addKokkosKernel ( const std::string &  kernel_name,
const std::string &  name,
InputParameters parameters 
)
virtualinherited

◆ addKokkosLinearFVBC()

virtual void FEProblemBase::addKokkosLinearFVBC ( const std::string &  bc_name,
const std::string &  name,
InputParameters parameters 
)
virtualinherited

◆ addKokkosLinearFVKernel()

virtual void FEProblemBase::addKokkosLinearFVKernel ( const std::string &  kernel_name,
const std::string &  name,
InputParameters parameters 
)
virtualinherited

◆ addKokkosMaterial()

virtual void FEProblemBase::addKokkosMaterial ( const std::string &  material_name,
const std::string &  name,
InputParameters parameters 
)
virtualinherited

◆ addKokkosMeshInitializationHook()

void FEProblemBase::addKokkosMeshInitializationHook ( std::function< void()>  function)
inlineinherited

Add a function hook that needs to be called after Kokkos mesh initialization.

Parameters
functionThe function to be called

Definition at line 3015 of file FEProblemBase.h.

3016 {
3017 _kokkos_mesh_initialization_hooks.push_back(function);
3018 }
std::vector< std::function< void()> > _kokkos_mesh_initialization_hooks
Container holding hooks for functions that need to be called after Kokkos mesh initialization.

Referenced by BlockRestrictable::initializeBlockRestrictable(), and BoundaryRestrictable::initializeBoundaryRestrictable().

◆ addKokkosNodalKernel()

virtual void FEProblemBase::addKokkosNodalKernel ( const std::string &  kernel_name,
const std::string &  name,
InputParameters parameters 
)
virtualinherited

◆ addKokkosPostprocessor()

virtual void FEProblemBase::addKokkosPostprocessor ( const std::string &  pp_name,
const std::string &  name,
InputParameters parameters 
)
virtualinherited

◆ addKokkosReporter()

virtual void FEProblemBase::addKokkosReporter ( const std::string &  type,
const std::string &  name,
InputParameters parameters 
)
virtualinherited

◆ addKokkosUserObject()

virtual void FEProblemBase::addKokkosUserObject ( const std::string &  user_object_name,
const std::string &  name,
InputParameters parameters 
)
virtualinherited

◆ addKokkosVectorPostprocessor()

virtual void FEProblemBase::addKokkosVectorPostprocessor ( const std::string &  pp_name,
const std::string &  name,
InputParameters parameters 
)
virtualinherited

◆ addLinearFVBC()

void FEProblemBase::addLinearFVBC ( const std::string &  fv_bc_name,
const std::string &  name,
InputParameters parameters 
)
virtualinherited

Definition at line 3653 of file FEProblemBase.C.

3656{
3657 addObject<LinearFVBoundaryCondition>(bc_name, name, parameters);
3658}

◆ addLinearFVKernel()

void FEProblemBase::addLinearFVKernel ( const std::string &  kernel_name,
const std::string &  name,
InputParameters parameters 
)
virtualinherited

Definition at line 3645 of file FEProblemBase.C.

3648{
3649 addObject<LinearFVKernel>(kernel_name, name, parameters);
3650}

◆ addLineSearch()

virtual void FEProblemBase::addLineSearch ( const InputParameters )
inlinevirtualinherited

add a MOOSE line search

Reimplemented in DumpObjectsProblem, and FEProblem.

Definition at line 816 of file FEProblemBase.h.

817 {
818 mooseError("Line search not implemented for this problem type yet.");
819 }

Referenced by FEProblemSolve::FEProblemSolve().

◆ addMarker()

void FEProblemBase::addMarker ( const std::string &  marker_name,
const std::string &  name,
InputParameters parameters 
)
virtualinherited

Reimplemented in MFEMProblem.

Definition at line 5773 of file FEProblemBase.C.

5776{
5777 parallel_object_only();
5778
5779 if (_displaced_problem && parameters.get<bool>("use_displaced_mesh"))
5780 {
5781 parameters.set<SubProblem *>("_subproblem") = _displaced_problem.get();
5782 parameters.set<SystemBase *>("_sys") = &_displaced_problem->auxSys();
5784 }
5785 else
5786 {
5787 if (_displaced_problem == nullptr && parameters.get<bool>("use_displaced_mesh"))
5788 {
5789 // We allow Markers to request that they use_displaced_mesh,
5790 // but then be overridden when no displacements variables are
5791 // provided in the Mesh block. If that happened, update the value
5792 // of use_displaced_mesh appropriately for this Marker.
5793 if (parameters.have_parameter<bool>("use_displaced_mesh"))
5794 parameters.set<bool>("use_displaced_mesh") = false;
5795 }
5796
5797 parameters.set<SubProblem *>("_subproblem") = this;
5798 parameters.set<SystemBase *>("_sys") = _aux.get();
5799 }
5800
5801 for (THREAD_ID tid = 0; tid < libMesh::n_threads(); tid++)
5802 {
5803 std::shared_ptr<Marker> marker = _factory.create<Marker>(marker_name, name, parameters, tid);
5804 logAdd("Marker", name, marker_name, parameters);
5805 _markers.addObject(marker, tid);
5806 }
5807}
MooseObjectWarehouse< Marker > _markers

◆ addMaterial()

void FEProblemBase::addMaterial ( const std::string &  material_name,
const std::string &  name,
InputParameters parameters 
)
virtualinherited

Reimplemented in MFEMProblem.

Definition at line 4132 of file FEProblemBase.C.

4135{
4137}

Referenced by ComponentMaterialPropertyInterface::addMaterials().

◆ addMaterialHelper()

void FEProblemBase::addMaterialHelper ( std::vector< MaterialWarehouse * >  warehouse,
const std::string &  material_name,
const std::string &  name,
InputParameters parameters 
)
virtualinherited

Definition at line 4148 of file FEProblemBase.C.

4152{
4153 parallel_object_only();
4154
4155 if (_displaced_problem && parameters.get<bool>("use_displaced_mesh"))
4156 {
4157 parameters.set<SubProblem *>("_subproblem") = _displaced_problem.get();
4159 }
4160 else
4161 {
4162 if (_displaced_problem == nullptr && parameters.get<bool>("use_displaced_mesh"))
4163 {
4164 // We allow Materials to request that they use_displaced_mesh,
4165 // but then be overridden when no displacements variables are
4166 // provided in the Mesh block. If that happened, update the value
4167 // of use_displaced_mesh appropriately for this Material.
4168 if (parameters.have_parameter<bool>("use_displaced_mesh"))
4169 parameters.set<bool>("use_displaced_mesh") = false;
4170 }
4171
4172 parameters.set<SubProblem *>("_subproblem") = this;
4173 }
4174
4175 unsigned int n_threads = libMesh::n_threads();
4176
4177#ifdef MOOSE_KOKKOS_ENABLED
4179 n_threads = 1;
4180#endif
4181
4182 for (THREAD_ID tid = 0; tid < n_threads; tid++)
4183 {
4184 // Create the general Block/Boundary MaterialBase object
4185 std::shared_ptr<MaterialBase> material =
4186 _factory.create<MaterialBase>(mat_name, name, parameters, tid);
4187 logAdd("Material", name, mat_name, parameters);
4188 bool discrete = !material->getParam<bool>("compute");
4189
4190 // If the object is boundary restricted or if it is a functor material we do not create the
4191 // neighbor and face objects
4192 if (material->boundaryRestricted() || dynamic_cast<FunctorMaterial *>(material.get()))
4193 {
4194 _all_materials.addObject(material, tid);
4195 if (discrete)
4196 _discrete_materials.addObject(material, tid);
4197 else
4198 for (auto && warehouse : warehouses)
4199 warehouse->addObject(material, tid);
4200 }
4201
4202 // Non-boundary restricted require face and neighbor objects
4203 else
4204 {
4205 // TODO: we only need to do this if we have needs for face materials (e.g.
4206 // FV, DG, etc.) - but currently we always do it. Figure out how to fix
4207 // this.
4208
4209 // The name of the object being created, this is changed multiple times as objects are
4210 // created below
4211 std::string object_name;
4212
4213 // Create a copy of the supplied parameters to the setting for "_material_data_type" isn't
4214 // used from a previous tid loop
4215 InputParameters current_parameters = parameters;
4216
4217 // face material
4218 current_parameters.set<Moose::MaterialDataType>("_material_data_type") =
4220 object_name = name + "_face";
4221 std::shared_ptr<MaterialBase> face_material =
4222 _factory.create<MaterialBase>(mat_name, object_name, current_parameters, tid);
4223
4224 // neighbor material
4225 current_parameters.set<Moose::MaterialDataType>("_material_data_type") =
4227 current_parameters.set<bool>("_neighbor") = true;
4228 object_name = name + "_neighbor";
4229 std::shared_ptr<MaterialBase> neighbor_material =
4230 _factory.create<MaterialBase>(mat_name, object_name, current_parameters, tid);
4231
4232 // Store the material objects
4233 _all_materials.addObjects(material, neighbor_material, face_material, tid);
4234
4235 if (discrete)
4236 _discrete_materials.addObjects(material, neighbor_material, face_material, tid);
4237 else
4238 for (auto && warehouse : warehouses)
4239 warehouse->addObjects(material, neighbor_material, face_material, tid);
4240
4241 // Names of all controllable parameters for this Material object
4242 const std::string & base = parameters.getBase();
4243 MooseObjectParameterName name(MooseObjectName(base, material->name()), "*");
4244 const auto param_names =
4246
4247 // Connect parameters of the primary Material object to those on the face and neighbor
4248 // objects
4249 for (const auto & p_name : param_names)
4250 {
4251 MooseObjectParameterName primary_name(MooseObjectName(base, material->name()),
4252 p_name.parameter());
4253 MooseObjectParameterName face_name(MooseObjectName(base, face_material->name()),
4254 p_name.parameter());
4255 MooseObjectParameterName neighbor_name(MooseObjectName(base, neighbor_material->name()),
4256 p_name.parameter());
4258 primary_name, face_name, false);
4260 primary_name, neighbor_name, false);
4261 }
4262 }
4263 }
4264}
MaterialWarehouse _discrete_materials
std::vector< std::shared_ptr< T > > addObject(const std::string &type, const std::string &name, InputParameters &parameters, const bool threaded=true, const std::string &var_param_name="variable")
Method for creating and adding an object to the warehouse.
FunctorMaterials compute functor material properties.
std::vector< MooseObjectParameterName > getControllableParameterNames(const MooseObjectParameterName &input) const
Return a vector of parameters names matching the supplied name.
void addControllableParameterConnection(const MooseObjectParameterName &primary, const MooseObjectParameterName &secondary, bool error_on_empty=true)
Method for linking control parameters of different names.
bool isKokkosObject() const
Returns whether this InputParameters belongs to a Kokkos object Checks whether MooseBase::kokkos_obje...
const std::string & getBase() const
void addObjects(std::shared_ptr< MaterialBase > block, std::shared_ptr< MaterialBase > neighbor, std::shared_ptr< MaterialBase > face, THREAD_ID tid=0)
A special method unique to this class for adding Block, Neighbor, and Face material objects.
InputParameterWarehouse & getInputParameterWarehouse()
Get the InputParameterWarehouse for MooseObjects.
Definition MooseApp.C:2867
A class for storing the names of MooseObject by tag and object name.
A class for storing an input parameter name.
MaterialDataType
MaterialData types.
Definition MooseTypes.h:746
@ NEIGHBOR_MATERIAL_DATA
Definition MooseTypes.h:750
@ FACE_MATERIAL_DATA
Definition MooseTypes.h:749

Referenced by FEProblemBase::addInterfaceMaterial(), and FEProblemBase::addMaterial().

◆ addMatrixTag()

TagID SubProblem::addMatrixTag ( TagName  tag_name)
virtualinherited

Create a Tag.

Tags can be associated with Vectors and Matrices and allow objects (such as Kernels) to arbitrarily contribute values to any set of vectors/matrics

Note: If the tag is already present then this will simply return the TagID of that Tag

Parameters
tag_nameThe name of the tag to create, the TagID will get automatically generated

Reimplemented in DisplacedProblem.

Definition at line 312 of file SubProblem.C.

313{
314 auto tag_name_upper = MooseUtils::toUpper(tag_name);
315 auto existing_tag = _matrix_tag_name_to_tag_id.find(tag_name_upper);
316 if (existing_tag == _matrix_tag_name_to_tag_id.end())
317 {
318 auto tag_id = _matrix_tag_name_to_tag_id.size();
319
320 _matrix_tag_name_to_tag_id[tag_name_upper] = tag_id;
321
322 _matrix_tag_id_to_tag_name[tag_id] = tag_name_upper;
323 }
324
325 return _matrix_tag_name_to_tag_id.at(tag_name_upper);
326}
std::map< TagID, TagName > _matrix_tag_id_to_tag_name
Reverse map.
std::map< TagName, TagID > _matrix_tag_name_to_tag_id
The currently declared tags.
std::string toUpper(std::string name)
Convert supplied string to upper case.

Referenced by DisplacedProblem::addMatrixTag(), FEProblemBase::createTagMatrices(), LinearSystem::LinearSystem(), NonlinearEigenSystem::NonlinearEigenSystem(), and NonlinearSystemBase::NonlinearSystemBase().

◆ addMeshDivision()

void FEProblemBase::addMeshDivision ( const std::string &  type,
const std::string &  name,
InputParameters params 
)
virtualinherited

Add a MeshDivision.

Definition at line 2799 of file FEProblemBase.C.

2802{
2803 parallel_object_only();
2804 parameters.set<FEProblemBase *>("_fe_problem_base") = this;
2805 parameters.set<SubProblem *>("_subproblem") = this;
2806 for (THREAD_ID tid = 0; tid < libMesh::n_threads(); tid++)
2807 {
2808 std::shared_ptr<MeshDivision> func = _factory.create<MeshDivision>(type, name, parameters, tid);
2809 _mesh_divisions.addObject(func, tid);
2810 }
2811}
MooseObjectWarehouse< MeshDivision > _mesh_divisions
Warehouse to store mesh divisions NOTE: this could probably be moved to the MooseMesh instead of the ...
Base class for MeshDivision objects.

◆ addMultiApp()

void FEProblemBase::addMultiApp ( const std::string &  multi_app_name,
const std::string &  name,
InputParameters parameters 
)
virtualinherited

Add a MultiApp to the problem.

Definition at line 5810 of file FEProblemBase.C.

5813{
5814 parallel_object_only();
5815
5816 parameters.set<MPI_Comm>("_mpi_comm") = _communicator.get();
5817
5818 if (_displaced_problem && parameters.get<bool>("use_displaced_mesh"))
5819 {
5820 parameters.set<SubProblem *>("_subproblem") = _displaced_problem.get();
5821 parameters.set<SystemBase *>("_sys") = &_displaced_problem->auxSys();
5823 }
5824 else
5825 {
5826 if (_displaced_problem == nullptr && parameters.get<bool>("use_displaced_mesh"))
5827 {
5828 // We allow MultiApps to request that they use_displaced_mesh,
5829 // but then be overridden when no displacements variables are
5830 // provided in the Mesh block. If that happened, update the value
5831 // of use_displaced_mesh appropriately for this MultiApp.
5832 if (parameters.have_parameter<bool>("use_displaced_mesh"))
5833 parameters.set<bool>("use_displaced_mesh") = false;
5834 }
5835
5836 parameters.set<SubProblem *>("_subproblem") = this;
5837 parameters.set<SystemBase *>("_sys") = _aux.get();
5838 }
5839
5840 std::shared_ptr<MultiApp> multi_app = _factory.create<MultiApp>(multi_app_name, name, parameters);
5841 logAdd("MultiApp", name, multi_app_name, parameters);
5842 multi_app->setupPositions();
5843
5844 _multi_apps.addObject(multi_app);
5845
5846 // Store TransientMultiApp objects in another container, this is needed for calling computeDT
5847 std::shared_ptr<TransientMultiApp> trans_multi_app =
5848 std::dynamic_pointer_cast<TransientMultiApp>(multi_app);
5849 if (trans_multi_app)
5850 _transient_multi_apps.addObject(trans_multi_app);
5851}
void addObject(std::shared_ptr< T > object, THREAD_ID tid=0, bool recurse=true) override
Adds an object to the storage structure.
ExecuteMooseObjectWarehouse< MultiApp > _multi_apps
MultiApp Warehouse.
ExecuteMooseObjectWarehouse< TransientMultiApp > _transient_multi_apps
Storage for TransientMultiApps (only needed for calling 'computeDT')
A MultiApp represents one or more MOOSE applications that are running simultaneously.
Definition MultiApp.h:116
const Parallel::Communicator & _communicator

◆ addNodalKernel()

void FEProblemBase::addNodalKernel ( const std::string &  kernel_name,
const std::string &  name,
InputParameters parameters 
)
virtualinherited

Definition at line 3196 of file FEProblemBase.C.

3199{
3200 parallel_object_only();
3201
3202 const auto nl_sys_num = determineSolverSystem(parameters.varName("variable", name), true).second;
3203 if (_displaced_problem && parameters.get<bool>("use_displaced_mesh"))
3204 {
3205 parameters.set<SubProblem *>("_subproblem") = _displaced_problem.get();
3206 parameters.set<SystemBase *>("_sys") = &_displaced_problem->solverSys(nl_sys_num);
3208 }
3209 else
3210 {
3211 if (_displaced_problem == nullptr && parameters.get<bool>("use_displaced_mesh"))
3212 {
3213 // We allow NodalKernels to request that they use_displaced_mesh,
3214 // but then be overridden when no displacements variables are
3215 // provided in the Mesh block. If that happened, update the value
3216 // of use_displaced_mesh appropriately for this NodalKernel.
3217 if (parameters.have_parameter<bool>("use_displaced_mesh"))
3218 parameters.set<bool>("use_displaced_mesh") = false;
3219 }
3220
3221 parameters.set<SubProblem *>("_subproblem") = this;
3222 parameters.set<SystemBase *>("_sys") = _nl[nl_sys_num].get();
3223 }
3224 logAdd("NodalKernel", name, kernel_name, parameters);
3225 _nl[nl_sys_num]->addNodalKernel(kernel_name, name, parameters);
3226}

◆ addNotZeroedVectorTag()

void SubProblem::addNotZeroedVectorTag ( const TagID  tag)
inherited

Adds a vector tag to the list of vectors that will not be zeroed when other tagged vectors are.

Parameters
tagthe TagID of the vector that will be manually managed

Definition at line 150 of file SubProblem.C.

151{
152 _not_zeroed_tagged_vectors.insert(tag);
153}
std::unordered_set< TagID > _not_zeroed_tagged_vectors
the list of vector tags that will not be zeroed when all other tags are

Referenced by FEProblemBase::createTagVectors().

◆ addObject()

template<typename T >
std::vector< std::shared_ptr< T > > FEProblemBase::addObject ( const std::string &  type,
const std::string &  name,
InputParameters parameters,
const bool  threaded = true,
const std::string &  var_param_name = "variable" 
)
inherited

Method for creating and adding an object to the warehouse.

Template Parameters
TThe base object type (registered in the Factory)
Parameters
typeString type of the object (registered in the Factory)
nameName for the object to be created
parametersInputParameters for the object
threadedWhether or not to create n_threads copies of the object
var_param_nameThe name of the parameter on the object which holds the primary variable.
Returns
A vector of shared_ptrs to the added objects

Definition at line 3739 of file FEProblemBase.h.

3744{
3745 parallel_object_only();
3746
3747 logAdd(MooseUtils::prettyCppType<T>(), name, type, parameters);
3748 // Add the _subproblem and _sys parameters depending on use_displaced_mesh
3749 addObjectParamsHelper(parameters, name, var_param_name);
3750
3751 const auto n_threads = threaded ? libMesh::n_threads() : 1;
3752 std::vector<std::shared_ptr<T>> objects(n_threads);
3753 for (THREAD_ID tid = 0; tid < n_threads; ++tid)
3754 {
3755 std::shared_ptr<T> obj = _factory.create<T>(type, name, parameters, tid);
3756 theWarehouse().add(obj);
3757 objects[tid] = std::move(obj);
3758 }
3759
3760 return objects;
3761}
std::shared_ptr< MooseObject > create(const std::string &obj_name, const std::string &name, const InputParameters &parameters, THREAD_ID tid=0, bool print_deprecated=true)
Definition Factory.C:142

◆ addObjectParamsHelper()

void FEProblemBase::addObjectParamsHelper ( InputParameters params,
const std::string &  object_name,
const std::string &  var_param_name = "variable" 
)
protectedinherited

Helper for setting the "_subproblem" and "_sys" parameters in addObject() and in addUserObject().

This is needed due to header includes/forward declaration issues

Definition at line 4549 of file FEProblemBase.C.

4552{
4553 // Due to objects like SolutionUserObject which manipulate libmesh objects
4554 // and variables directly at the back end, we need a default option here
4555 // which is going to be the pointer to the first solver system within this
4556 // problem
4557 unsigned int sys_num = 0;
4558 if (parameters.isParamValid(var_param_name))
4559 {
4560 const auto variable_name = parameters.varName(var_param_name, object_name);
4561 if (this->hasVariable(variable_name) || this->hasScalarVariable(variable_name))
4562 sys_num = getSystem(variable_name).number();
4563 }
4564 if (parameters.isParamValid("solver_sys"))
4565 {
4566 const auto var_sys_num = sys_num;
4567 sys_num = getSystemBase(parameters.get<SolverSystemName>("solver_sys")).number();
4568 if (sys_num != var_sys_num && parameters.isParamValid(var_param_name))
4569 mooseError("We dont support setting 'variable' to a variable that is not set to the same "
4570 "system as the 'solver_sys' parameter");
4571 }
4572
4573 if (_displaced_problem && parameters.have_parameter<bool>("use_displaced_mesh") &&
4574 parameters.get<bool>("use_displaced_mesh"))
4575 {
4576 parameters.set<SubProblem *>("_subproblem") = _displaced_problem.get();
4577 if (sys_num == _aux->number())
4578 parameters.set<SystemBase *>("_sys") = &_displaced_problem->systemBaseAuxiliary();
4579 else
4580 parameters.set<SystemBase *>("_sys") = &_displaced_problem->solverSys(sys_num);
4581 }
4582 else
4583 {
4584 // The object requested use_displaced_mesh, but it was overridden
4585 // due to there being no displacements variables in the [Mesh] block.
4586 // If that happened, update the value of use_displaced_mesh appropriately.
4587 if (!_displaced_problem && parameters.have_parameter<bool>("use_displaced_mesh") &&
4588 parameters.get<bool>("use_displaced_mesh"))
4589 parameters.set<bool>("use_displaced_mesh") = false;
4590
4591 parameters.set<SubProblem *>("_subproblem") = this;
4592
4593 if (sys_num == _aux->number())
4594 parameters.set<SystemBase *>("_sys") = _aux.get();
4595 else
4596 parameters.set<SystemBase *>("_sys") = _solver_systems[sys_num].get();
4597 }
4598}
virtual const SystemBase & getSystemBase(const unsigned int sys_num) const
Get constant reference to a system in this problem.
virtual libMesh::System & getSystem(const std::string &var_name) override
Returns the equation system containing the variable provided.
unsigned int number() const

Referenced by FEProblemBase::addFVInterpolationMethod(), FEProblemBase::addObject(), and FEProblemBase::addUserObject().

◆ addOutput()

void FEProblemBase::addOutput ( const std::string &  object_type,
const std::string &  object_name,
InputParameters parameters 
)
inherited

Adds an Output object.

Definition at line 9510 of file FEProblemBase.C.

9513{
9514 parallel_object_only();
9515
9516 // Get a reference to the OutputWarehouse
9517 OutputWarehouse & output_warehouse = _app.getOutputWarehouse();
9518
9519 // Reject the reserved names for objects not built by MOOSE
9520 if (!parameters.get<bool>("_built_by_moose") && output_warehouse.isReservedName(object_name))
9521 mooseError("The name '", object_name, "' is a reserved name for output objects");
9522
9523 // Check that an object by the same name does not already exist; this must be done before the
9524 // object is created to avoid getting misleading errors from the Parser
9525 if (output_warehouse.hasOutput(object_name))
9526 mooseError("An output object named '", object_name, "' already exists");
9527
9528 // Add a pointer to the FEProblemBase class
9529 parameters.addPrivateParam<FEProblemBase *>("_fe_problem_base", this);
9530
9531 // --show-input should enable the display of the input file on the screen
9532 if (object_type == "Console" && _app.getParam<bool>("show_input") &&
9533 parameters.get<bool>("output_screen"))
9534 parameters.set<ExecFlagEnum>("execute_input_on") = EXEC_INITIAL;
9535
9536 // Apply only user-set parameters from the common [Outputs] block so that
9537 // each output type's own defaults are not overridden by common defaults.
9538 const InputParameters * common = output_warehouse.getCommonParameters();
9539 if (common)
9541
9542 // Set the correct value for the binary flag for XDA/XDR output
9543 if (object_type == "XDR")
9544 parameters.set<bool>("_binary") = true;
9545 else if (object_type == "XDA")
9546 parameters.set<bool>("_binary") = false;
9547
9548 // Adjust the checkpoint suffix if auto recovery was enabled
9549 if (object_name == "auto_recovery_checkpoint")
9550 parameters.set<std::string>("suffix") = "auto_recovery";
9551
9552 // Create the object and add it to the warehouse
9553 std::shared_ptr<Output> output = _factory.create<Output>(object_type, object_name, parameters);
9554 logAdd("Output", object_name, object_type, parameters);
9555 output_warehouse.addOutput(output);
9556}
const ExecFlagType EXEC_INITIAL
Definition Moose.C:30
A MultiMooseEnum object to hold "execute_on" flags.
void addPrivateParam(const std::string &name, const T &value)
These method add a parameter to the InputParameters object which can be retrieved like any other para...
void applyCommonUserSetParameters(const InputParameters &common, const std::vector< std::string > &exclude={}, const bool allow_private=false)
Variant of applyParameters that only applies parameters explicitly set by the user in common (i....
OutputWarehouse & getOutputWarehouse()
Get the OutputWarehouse objects.
Definition MooseApp.C:2409
const T & getParam(const std::string &name) const
Retrieve a parameter for the object.
Definition MooseBase.h:406
Class for storing and utilizing output objects.
const InputParameters * getCommonParameters() const
Get a reference to the common output parameters.
bool isReservedName(const std::string &name)
Test if the given name is reserved.
bool hasOutput(const std::string &name) const
Returns true if the output object exists.
void addOutput(std::shared_ptr< Output > output)
Adds an existing output object to the warehouse.
Based class for output objects.
Definition Output.h:52

◆ addPiecewiseByBlockLambdaFunctor()

template<typename T , typename PolymorphicLambda >
const Moose::FunctorBase< T > & SubProblem::addPiecewiseByBlockLambdaFunctor ( const std::string &  name,
PolymorphicLambda  my_lammy,
const std::set< ExecFlagType > &  clearance_schedule,
const MooseMesh mesh,
const std::set< SubdomainID > &  block_ids,
const THREAD_ID  tid 
)
inherited

Add a functor that has block-wise lambda definitions, e.g.

the evaluations of the functor are based on a user-provided lambda expression.

Parameters
nameThe name of the functor to add
my_lammyThe lambda expression that will be called when the functor is evaluated
clearance_scheduleHow often to clear functor evaluations. The default value is always, which means that the functor will be re-evaluated every time it is called. If it is something other than always, than cached values may be returned
meshThe mesh on which this functor operates
block_idsThe blocks on which the lambda expression is defined
tidThe thread on which the functor we are adding will run
Returns
The added functor

Definition at line 1356 of file SubProblem.h.

1362{
1363 auto & pbblf_functors = _pbblf_functors[tid];
1364
1365 auto [it, first_time_added] =
1366 pbblf_functors.emplace(name,
1367 std::make_unique<PiecewiseByBlockLambdaFunctor<T>>(
1368 name, my_lammy, clearance_schedule, mesh, block_ids));
1369
1370 auto * functor = dynamic_cast<PiecewiseByBlockLambdaFunctor<T> *>(it->second.get());
1371 if (!functor)
1372 {
1373 if (first_time_added)
1374 mooseError("This should be impossible. If this was the first time we added the functor, then "
1375 "the dynamic cast absolutely should have succeeded");
1376 else
1377 mooseError("Attempted to add a lambda functor with the name '",
1378 name,
1379 "' but another lambda functor of that name returns a different type");
1380 }
1381
1382 if (first_time_added)
1383 addFunctor(name, *functor, tid);
1384 else
1385 // The functor already exists
1386 functor->setFunctor(mesh, block_ids, my_lammy);
1387
1388 return *functor;
1389}
A material property that is evaluated on-the-fly via calls to various overloads of operator()
std::vector< std::map< std::string, std::unique_ptr< Moose::FunctorAbstract > > > _pbblf_functors
Container to hold PiecewiseByBlockLambdaFunctors.
virtual MooseMesh & mesh()=0

Referenced by FunctorMaterial::addFunctorPropertyByBlocks().

◆ addPostprocessor()

void FEProblemBase::addPostprocessor ( const std::string &  pp_name,
const std::string &  name,
InputParameters parameters 
)
virtualinherited

Reimplemented in MFEMProblem.

Definition at line 4622 of file FEProblemBase.C.

4625{
4626 checkUserObjectNameCollision(name, "Postprocessor");
4627
4628 addUserObject(pp_name, name, parameters);
4629}
virtual std::vector< std::shared_ptr< UserObject > > addUserObject(const std::string &user_object_name, const std::string &name, InputParameters &parameters)
void checkUserObjectNameCollision(const std::string &name, const std::string &type) const
Check for name collision between different user objects.

Referenced by MFEMProblem::addPostprocessor(), and DiffusionPhysicsBase::addPostprocessors().

◆ addPredictor()

void FEProblemBase::addPredictor ( const std::string &  type,
const std::string &  name,
InputParameters parameters 
)
virtualinherited

Definition at line 7382 of file FEProblemBase.C.

7385{
7386 parallel_object_only();
7387
7389 mooseError("Vector bounds cannot be used with LinearSystems!");
7390
7391 parameters.set<SubProblem *>("_subproblem") = this;
7392 std::shared_ptr<Predictor> predictor = _factory.create<Predictor>(type, name, parameters);
7393 logAdd("Predictor", name, type, parameters);
7394
7395 for (auto & nl : _nl)
7396 nl->setPredictor(predictor);
7397}
virtual std::size_t numLinearSystems() const override
virtual std::size_t numNonlinearSystems() const override
Base class for predictors.
Definition Predictor.h:29

Referenced by AB2PredictorCorrector::AB2PredictorCorrector().

◆ addReporter()

void FEProblemBase::addReporter ( const std::string &  type,
const std::string &  name,
InputParameters parameters 
)
virtualinherited

Add a Reporter object to the simulation.

Parameters
typeC++ object type to construct
nameA uniquely identifying object name
parametersComplete parameters for the object to be created.

For an example use, refer to AddReporterAction.C/h

Definition at line 4642 of file FEProblemBase.C.

4645{
4647
4649}

Referenced by MultiAppGeneralFieldTransfer::MultiAppGeneralFieldTransfer().

◆ addResidual()

void FEProblemBase::addResidual ( const THREAD_ID  tid)
overridevirtualinherited

Implements SubProblem.

Definition at line 1964 of file FEProblemBase.C.

1965{
1968
1970 _displaced_problem->addResidual(tid);
1971}

Referenced by ComputeDiracThread::postElement().

◆ addResidualLower()

void FEProblemBase::addResidualLower ( const THREAD_ID  tid)
overridevirtualinherited

◆ addResidualNeighbor()

void FEProblemBase::addResidualNeighbor ( const THREAD_ID  tid)
overridevirtualinherited

◆ addResidualScalar()

void FEProblemBase::addResidualScalar ( const THREAD_ID  tid = 0)
virtualinherited

Definition at line 1994 of file FEProblemBase.C.

1995{
1996 _assembly[tid][_current_nl_sys->number()]->addResidualScalar(Assembly::GlobalDataKey{},
1998}

Referenced by NonlinearSystemBase::computeResidualInternal().

◆ addSampler()

void FEProblemBase::addSampler ( const std::string &  type,
const std::string &  name,
InputParameters parameters 
)
virtualinherited

The following functions will enable MOOSE to have the capability to import Samplers.

Definition at line 2885 of file FEProblemBase.C.

2888{
2889 const auto samplers = addObject<Sampler>(type, name, parameters);
2890 for (auto & sampler : samplers)
2891 sampler->init();
2892}
virtual void init() override

◆ addScalarKernel()

void FEProblemBase::addScalarKernel ( const std::string &  kernel_name,
const std::string &  name,
InputParameters parameters 
)
virtualinherited

Definition at line 3229 of file FEProblemBase.C.

3232{
3233 parallel_object_only();
3234
3235 const auto nl_sys_num = determineSolverSystem(parameters.varName("variable", name), true).second;
3236 if (!isSolverSystemNonlinear(nl_sys_num))
3237 mooseError("You are trying to add a ScalarKernel to a linear variable/system, which is not "
3238 "supported at the moment!");
3239
3240 if (_displaced_problem && parameters.get<bool>("use_displaced_mesh"))
3241 {
3242 parameters.set<SubProblem *>("_subproblem") = _displaced_problem.get();
3243 parameters.set<SystemBase *>("_sys") = &_displaced_problem->solverSys(nl_sys_num);
3244 }
3245 else
3246 {
3247 if (_displaced_problem == nullptr && parameters.get<bool>("use_displaced_mesh"))
3248 {
3249 // We allow ScalarKernels to request that they use_displaced_mesh,
3250 // but then be overridden when no displacements variables are
3251 // provided in the Mesh block. If that happened, update the value
3252 // of use_displaced_mesh appropriately for this ScalarKernel.
3253 if (parameters.have_parameter<bool>("use_displaced_mesh"))
3254 parameters.set<bool>("use_displaced_mesh") = false;
3255 }
3256
3257 parameters.set<SubProblem *>("_subproblem") = this;
3258 parameters.set<SystemBase *>("_sys") = _nl[nl_sys_num].get();
3259 }
3260
3261 logAdd("ScalarKernel", name, kernel_name, parameters);
3262 _nl[nl_sys_num]->addScalarKernel(kernel_name, name, parameters);
3263}

◆ addTimeIntegrator()

void FEProblemBase::addTimeIntegrator ( const std::string &  type,
const std::string &  name,
InputParameters parameters 
)
virtualinherited

Definition at line 7347 of file FEProblemBase.C.

7350{
7351 parallel_object_only();
7352
7353 parameters.set<SubProblem *>("_subproblem") = this;
7354 logAdd("TimeIntegrator", name, type, parameters);
7355 _aux->addTimeIntegrator(type, name + ":aux", parameters);
7356 for (auto & sys : _solver_systems)
7357 sys->addTimeIntegrator(type, name + ":" + sys->name(), parameters);
7358 _has_time_integrator = true;
7359
7360 // add vectors to store u_dot, u_dotdot, udot_old, u_dotdot_old and
7361 // solution vectors older than 2 time steps, if requested by the time
7362 // integrator
7363 _aux->addDotVectors();
7364 for (auto & nl : _nl)
7365 {
7366 nl->addDotVectors();
7367
7368 auto tag_udot = nl->getTimeIntegrators()[0]->uDotFactorTag();
7369 if (!nl->hasVector(tag_udot))
7370 nl->associateVectorToTag(*nl->solutionUDot(), tag_udot);
7371 auto tag_udotdot = nl->getTimeIntegrators()[0]->uDotDotFactorTag();
7372 if (!nl->hasVector(tag_udotdot) && uDotDotRequested())
7373 nl->associateVectorToTag(*nl->solutionUDotDot(), tag_udotdot);
7374 }
7375
7377 // Time integrator does not exist when displaced problem is created.
7378 _displaced_problem->addTimeIntegrator();
7379}
virtual void addTimeIntegrator(const std::string &type, const std::string &name, InputParameters &parameters)
virtual bool uDotDotRequested()
Get boolean flag to check whether solution second time derivative needs to be stored.
bool _has_time_integrator
Indicates whether or not this executioner has a time integrator (during setup)

Referenced by TransientBase::setupTimeIntegrator().

◆ addTransfer()

void FEProblemBase::addTransfer ( const std::string &  transfer_name,
const std::string &  name,
InputParameters parameters 
)
virtualinherited

Add a Transfer to the problem.

Reimplemented in MFEMProblem.

Definition at line 6162 of file FEProblemBase.C.

6165{
6166 parallel_object_only();
6167
6168 if (_displaced_problem && parameters.get<bool>("use_displaced_mesh"))
6169 {
6170 parameters.set<SubProblem *>("_subproblem") = _displaced_problem.get();
6171 parameters.set<SystemBase *>("_sys") = &_displaced_problem->auxSys();
6173 }
6174 else
6175 {
6176 if (_displaced_problem == nullptr && parameters.get<bool>("use_displaced_mesh"))
6177 {
6178 // We allow Transfers to request that they use_displaced_mesh,
6179 // but then be overridden when no displacements variables are
6180 // provided in the Mesh block. If that happened, update the value
6181 // of use_displaced_mesh appropriately for this Transfer.
6182 if (parameters.have_parameter<bool>("use_displaced_mesh"))
6183 parameters.set<bool>("use_displaced_mesh") = false;
6184 }
6185
6186 parameters.set<SubProblem *>("_subproblem") = this;
6187 parameters.set<SystemBase *>("_sys") = _aux.get();
6188 }
6189
6190 // Handle the "SAME_AS_MULTIAPP" execute option. The get method is used to test for the
6191 // flag so the set by user flag is not reset, calling set with the true flag causes the set
6192 // by user status to be reset, which should only be done if the EXEC_SAME_AS_MULTIAPP is
6193 // being applied to the object.
6195 {
6196 ExecFlagEnum & exec_enum = parameters.set<ExecFlagEnum>("execute_on", true);
6197 std::shared_ptr<MultiApp> multiapp;
6198 if (parameters.isParamValid("multi_app"))
6199 multiapp = getMultiApp(parameters.get<MultiAppName>("multi_app"));
6200 // This catches the sibling transfer case, where we want to be executing only as often as the
6201 // receiving application. A transfer 'to' a multiapp is executed before that multiapp
6202 else if (parameters.isParamValid("to_multi_app"))
6203 multiapp = getMultiApp(parameters.get<MultiAppName>("to_multi_app"));
6204 else if (parameters.isParamValid("from_multi_app"))
6205 multiapp = getMultiApp(parameters.get<MultiAppName>("from_multi_app"));
6206 // else do nothing because the user has provided invalid input. They should get a nice error
6207 // about this during transfer construction. This necessitates checking for null in this next
6208 // line, however
6209 if (multiapp)
6210 exec_enum = multiapp->getParam<ExecFlagEnum>("execute_on");
6211 }
6212
6213 // Create the Transfer objects
6214 std::shared_ptr<Transfer> transfer = _factory.create<Transfer>(transfer_name, name, parameters);
6215 logAdd("Transfer", name, transfer_name, parameters);
6216
6217 // Add MultiAppTransfer object
6218 std::shared_ptr<MultiAppTransfer> multi_app_transfer =
6219 std::dynamic_pointer_cast<MultiAppTransfer>(transfer);
6220 if (multi_app_transfer)
6221 {
6222 if (multi_app_transfer->directions().isValueSet(MultiAppTransfer::TO_MULTIAPP))
6223 _to_multi_app_transfers.addObject(multi_app_transfer);
6224 if (multi_app_transfer->directions().isValueSet(MultiAppTransfer::FROM_MULTIAPP))
6225 _from_multi_app_transfers.addObject(multi_app_transfer);
6226 if (multi_app_transfer->directions().isValueSet(MultiAppTransfer::BETWEEN_MULTIAPP))
6227 _between_multi_app_transfers.addObject(multi_app_transfer);
6228 }
6229 else
6230 _transfers.addObject(transfer);
6231}
const ExecFlagType EXEC_SAME_AS_MULTIAPP
Definition Moose.C:55
ExecuteMooseObjectWarehouse< Transfer > _between_multi_app_transfers
Transfers executed just before MultiApps to transfer data between them.
std::shared_ptr< MultiApp > getMultiApp(const std::string &multi_app_name) const
Get a MultiApp object by name.
ExecuteMooseObjectWarehouse< Transfer > _to_multi_app_transfers
Transfers executed just before MultiApps to transfer data to them.
ExecuteMooseObjectWarehouse< Transfer > _transfers
Normal Transfers.
ExecuteMooseObjectWarehouse< Transfer > _from_multi_app_transfers
Transfers executed just after MultiApps to transfer data from them.
bool isValueSet(const std::string &value) const
Methods for seeing if a value is set in the MultiMooseEnum.
Base class for all Transfer objects.
Definition Transfer.h:40
@ FROM_MULTIAPP
Definition Transfer.h:71
@ TO_MULTIAPP
Definition Transfer.h:70
@ BETWEEN_MULTIAPP
Definition Transfer.h:72

Referenced by MFEMProblem::addTransfer().

◆ addUserObject()

std::vector< std::shared_ptr< UserObject > > FEProblemBase::addUserObject ( const std::string &  user_object_name,
const std::string &  name,
InputParameters parameters 
)
virtualinherited

Definition at line 4652 of file FEProblemBase.C.

4655{
4656 parallel_object_only();
4657
4658 std::vector<std::shared_ptr<UserObject>> uos;
4659
4660 // Add the _subproblem and _sys parameters depending on use_displaced_mesh
4662
4663 for (const auto tid : make_range(libMesh::n_threads()))
4664 {
4665 // Create the UserObject
4666 std::shared_ptr<UserObject> user_object =
4667 _factory.create<UserObject>(user_object_name, name, parameters, tid);
4668 logAdd("UserObject", name, user_object_name, parameters);
4669 uos.push_back(user_object);
4670
4671 if (tid != 0)
4672 user_object->setPrimaryThreadCopy(uos[0].get());
4673
4674 theWarehouse().add(user_object);
4675
4676 // Attempt to create all the possible UserObject types
4677 auto euo = std::dynamic_pointer_cast<ElementUserObject>(user_object);
4678 auto suo = std::dynamic_pointer_cast<SideUserObject>(user_object);
4679 auto isuo = std::dynamic_pointer_cast<InternalSideUserObject>(user_object);
4680 auto iuo = std::dynamic_pointer_cast<InterfaceUserObjectBase>(user_object);
4681 auto nuo = std::dynamic_pointer_cast<NodalUserObject>(user_object);
4682 auto duo = std::dynamic_pointer_cast<DomainUserObject>(user_object);
4683 auto guo = std::dynamic_pointer_cast<GeneralUserObject>(user_object);
4684 auto tguo = std::dynamic_pointer_cast<ThreadedGeneralUserObject>(user_object);
4685 auto muo = std::dynamic_pointer_cast<MortarUserObject>(user_object);
4686
4687 // Account for displaced mesh use
4688 if (_displaced_problem && parameters.get<bool>("use_displaced_mesh"))
4689 {
4690 // Whether to re-init or not depends on the attributes of the base classes.
4691 // For example, InterfaceUOBase has "_current_side_elem" and "_neighbor_elem"
4692 // so it needs to reinit on displaced neighbors and faces
4693 // _reinit_displaced_elem -> _current_elem will be reinited
4694 // _reinit_displaced_face -> _current_elem, lowerD if any and _current_side_elem to be
4695 // reinited _reinit_displaced_neighbor -> _current_elem, lowerD if any and _current_neighbor
4696 // to be reinited Note that as soon as you use materials on the displaced mesh, all three get
4697 // turned on.
4698 if (euo || nuo || duo)
4700 if (suo || duo || isuo || iuo)
4702 if (iuo || duo || isuo)
4704 }
4705
4706 // These objects only require one thread
4707 if ((guo && !tguo) || muo)
4708 break;
4709 }
4710
4711 // Add as a Functor if it is one. We usually need to add the user object from thread 0 as the
4712 // registered functor for all threads because when user objects are thread joined, generally only
4713 // the primary thread copy ends up with all the data
4714 for (const auto tid : make_range(libMesh::n_threads()))
4715 {
4716 const decltype(uos)::size_type uo_index = uos.front()->needThreadedCopy() ? tid : 0;
4717 if (const auto functor = dynamic_cast<Moose::FunctorBase<Real> *>(uos[uo_index].get()))
4718 {
4719 this->addFunctor(name, *functor, tid);
4721 _displaced_problem->addFunctor(name, *functor, tid);
4722 }
4723 }
4724
4725 return uos;
4726}
Base class for user-specific data.
Definition UserObject.h:20

Referenced by FEProblemBase::addPostprocessor(), FEProblemBase::addReporter(), PhysicsBase::addUserObject(), and FEProblemBase::addVectorPostprocessor().

◆ addVariable()

void FEProblemBase::addVariable ( const std::string &  var_type,
const std::string &  var_name,
InputParameters params 
)
virtualinherited

Canonical method for adding a non-linear variable.

Parameters
var_typethe type of the variable, e.g. MooseVariableScalar
var_namethe variable name, e.g. 'u'
paramsthe InputParameters from which to construct the variable

Reimplemented in MFEMEigenproblem, MFEMProblem, and DumpObjectsProblem.

Definition at line 3031 of file FEProblemBase.C.

3034{
3035 parallel_object_only();
3036
3037 const auto order = Utility::string_to_enum<Order>(params.get<MooseEnum>("order"));
3038 const auto family = Utility::string_to_enum<FEFamily>(params.get<MooseEnum>("family"));
3039 const auto fe_type = FEType(order, family);
3040
3041 const auto active_subdomains_vector =
3042 _mesh.getSubdomainIDs(params.get<std::vector<SubdomainName>>("block"));
3043 const std::set<SubdomainID> active_subdomains(active_subdomains_vector.begin(),
3044 active_subdomains_vector.end());
3045
3046 if (duplicateVariableCheck(var_name, fe_type, /* is_aux = */ false, &active_subdomains))
3047 return;
3048
3049 params.set<FEProblemBase *>("_fe_problem_base") = this;
3051 SolverSystemName sys_name = params.get<SolverSystemName>("solver_sys");
3052
3053 const auto solver_system_number = solverSysNum(sys_name);
3054 logAdd("Variable", var_name, var_type, params);
3055 _solver_systems[solver_system_number]->addVariable(var_type, var_name, params);
3057 // MooseObjects need to be unique so change the name here
3058 _displaced_problem->addVariable(var_type, var_name, params, solver_system_number);
3059
3060 _solver_var_to_sys_num[var_name] = solver_system_number;
3061
3062 markFamilyPRefinement(params);
3064 _displaced_problem->markFamilyPRefinement(params);
3065}
unsigned int solverSysNum(const SolverSystemName &solver_sys_name) const override
std::map< SolverVariableName, unsigned int > _solver_var_to_sys_num
Map connecting variable names with their respective solver systems.
@ VAR_SOLVER
Definition MooseTypes.h:770

Referenced by MFEMProblem::addGridFunction(), DiffusionCG::addSolverVariables(), DiffusionFV::addSolverVariables(), and AddVariableAction::init().

◆ addVectorPostprocessor()

void FEProblemBase::addVectorPostprocessor ( const std::string &  pp_name,
const std::string &  name,
InputParameters parameters 
)
virtualinherited

Reimplemented in MFEMProblem.

Definition at line 4632 of file FEProblemBase.C.

4635{
4636 checkUserObjectNameCollision(name, "VectorPostprocessor");
4637
4638 addUserObject(pp_name, name, parameters);
4639}

Referenced by MFEMProblem::addVectorPostprocessor(), and ExtraIDIntegralReporter::ExtraIDIntegralReporter().

◆ addVectorTag()

TagID SubProblem::addVectorTag ( const TagName &  tag_name,
const Moose::VectorTagType  type = Moose::VECTOR_TAG_RESIDUAL 
)
virtualinherited

Create a Tag.

Tags can be associated with Vectors and Matrices and allow objects (such as Kernels) to arbitrarily contribute values to any set of vectors/matrics

Note: If the tag is already present then this will simply return the TagID of that Tag, but the type must be the same.

Parameters
tag_nameThe name of the tag to create, the TagID will get automatically generated
typeThe type of the tag

Reimplemented in DisplacedProblem.

Definition at line 93 of file SubProblem.C.

95{
97 mooseError("Vector tag type cannot be VECTOR_TAG_ANY");
98
99 const auto tag_name_upper = MooseUtils::toUpper(tag_name);
100
101 // First, see if the tag exists already
102 for (const auto & vector_tag : _vector_tags)
103 {
104 mooseAssert(_vector_tags[vector_tag._id] == vector_tag, "Vector tags index mismatch");
105 if (vector_tag._name == tag_name_upper)
106 {
107 if (vector_tag._type != type)
108 mooseError("While attempting to add vector tag with name '",
109 tag_name_upper,
110 "' and type ",
111 type,
112 ",\na tag with the same name but type ",
113 vector_tag._type,
114 " was found.\n\nA tag can only exist with one type.");
115
116 return vector_tag._id;
117 }
118 }
119
120 // Doesn't exist - create it
121 const TagID new_tag_id = _vector_tags.size();
122 const TagTypeID new_tag_type_id = _typed_vector_tags[type].size();
123 // Primary storage for all tags where the index in the vector == the tag ID
124 _vector_tags.emplace_back(new_tag_id, new_tag_type_id, tag_name_upper, type);
125 // Secondary storage for each type so that we can have quick access to all tags of a type
126 _typed_vector_tags[type].emplace_back(new_tag_id, new_tag_type_id, tag_name_upper, type);
127 // Name map storage for quick name access
128 _vector_tags_name_map.emplace(tag_name_upper, new_tag_id);
129
130 // Make sure that _vector_tags, _typed_vector_tags, and _vector_tags_name_map are sane
132
133 return new_tag_id;
134}
unsigned int TagID
Definition MooseTypes.h:238
unsigned int TagTypeID
Definition MooseTypes.h:239
std::vector< VectorTag > _vector_tags
The declared vector tags.
std::vector< std::vector< VectorTag > > _typed_vector_tags
The vector tags associated with each VectorTagType This is kept separate from _vector_tags for quick ...
std::map< TagName, TagID > _vector_tags_name_map
Map of vector tag TagName to TagID.
bool verifyVectorTags() const
Verify the integrity of _vector_tags and _typed_vector_tags.
Definition SubProblem.C:242
@ VECTOR_TAG_ANY

Referenced by DisplacedProblem::addVectorTag(), PicardSolve::allocateStorage(), SecantSolve::allocateStorage(), SteffensenSolve::allocateStorage(), FEProblemBase::createTagSolutions(), FEProblemBase::createTagVectors(), NonlinearSystemBase::getResidualNonTimeVector(), NonlinearSystemBase::getResidualTimeVector(), LinearSystem::LinearSystem(), SystemBase::needSolutionState(), NonlinearEigenSystem::NonlinearEigenSystem(), and NonlinearSystemBase::NonlinearSystemBase().

◆ advanceMultiApps()

void FEProblemBase::advanceMultiApps ( ExecFlagType  type)
inlineinherited

Deprecated method; use finishMultiAppStep and/or incrementMultiAppTStep depending on your purpose.

Definition at line 1684 of file FEProblemBase.h.

1685 {
1686 mooseDeprecated("Deprecated method; use finishMultiAppStep and/or incrementMultiAppTStep "
1687 "depending on your purpose");
1689 }
void finishMultiAppStep(ExecFlagType type, bool recurse_through_multiapp_levels=false)
Finish the MultiApp time step (endStep, postStep) associated with the ExecFlagType.

◆ advanceState()

void FEProblemBase::advanceState ( )
virtualinherited

Advance all of the state holding vectors / datastructures so that we can move to the next timestep.

Reimplemented in DumpObjectsProblem.

Definition at line 7186 of file FEProblemBase.C.

7187{
7188 TIME_SECTION("advanceState", 5, "Advancing State");
7189
7190 for (auto & sys : _solver_systems)
7191 sys->copyOldSolutions();
7192 _aux->copyOldSolutions();
7193
7195 {
7196 for (const auto i : index_range(_solver_systems))
7197 _displaced_problem->solverSys(i).copyOldSolutions();
7198 _displaced_problem->auxSys().copyOldSolutions();
7199 }
7200
7202
7204
7207
7210
7213
7214#ifdef MOOSE_KOKKOS_ENABLED
7217
7220
7223#endif
7224}
void copyValuesBack()
Copies current chain control data values into old values.
Moose::Kokkos::MaterialPropertyStorage & _kokkos_neighbor_material_props
ReporterData _reporter_data
Moose::Kokkos::MaterialPropertyStorage & _kokkos_bnd_material_props
Moose::Kokkos::MaterialPropertyStorage & _kokkos_material_props
void shift()
Shift the material properties in time.
ChainControlDataSystem & getChainControlDataSystem()
Gets the system that manages the ChainControls.
Definition MooseApp.h:891
MooseApp & getMooseApp() const
Get the MooseApp this class is associated with.
Definition MooseBase.h:87
void shift()
Shift current, old, and older material property data storages.
void copyValuesBack()
At the end of a timestep this method is called to copy the values back in time in preparation for the...
auto index_range(const T &sizable)

Referenced by Eigenvalue::execute(), SteadyBase::execute(), MFEMSteady::execute(), TransientBase::incrementStepOrReject(), NonlinearEigen::init(), TransientMultiApp::setupApp(), ExplicitRK2::solve(), ExplicitTVDRK2::solve(), TransientMultiApp::solveStep(), InversePowerMethod::takeStep(), and NonlinearEigen::takeStep().

◆ allowInvalidSolution()

bool FEProblemBase::allowInvalidSolution ( ) const
inlineinherited

Whether to accept / allow an invalid solution.

Definition at line 2406 of file FEProblemBase.h.

2406{ return _allow_invalid_solution; }
const bool _allow_invalid_solution

Referenced by FEProblemBase::acceptInvalidSolution().

◆ allowOutput() [1/2]

void FEProblemBase::allowOutput ( bool  state)
inherited

Ability to enable/disable all output calls.

This is needed by Multiapps and applications to disable output for cases when executioners call other executions and when Multiapps are sub cycling.

Definition at line 7293 of file FEProblemBase.C.

7294{
7296}
void allowOutput(bool state)
Ability to enable/disable output calls This is private, users should utilize FEProblemBase::allowOutp...

Referenced by TransientMultiApp::resetApp(), and TransientMultiApp::solveStep().

◆ allowOutput() [2/2]

template<typename T >
void FEProblemBase::allowOutput ( bool  state)
inherited

Definition at line 3690 of file FEProblemBase.h.

3691{
3693}

◆ areCoupled()

bool FEProblemBase::areCoupled ( const unsigned int  ivar,
const unsigned int  jvar,
const unsigned int  nl_sys_num 
) const
inherited

Definition at line 6718 of file FEProblemBase.C.

6721{
6722 return (*_cm[nl_sys])(ivar, jvar);
6723}
std::vector< std::unique_ptr< libMesh::CouplingMatrix > > _cm
Coupling matrix for variables.

Referenced by NonlinearSystemBase::constraintJacobians().

◆ assembly() [1/2]

const Assembly & FEProblemBase::assembly ( const THREAD_ID  tid,
const unsigned int  sys_num 
) const
inlineoverridevirtualinherited

Implements SubProblem.

Definition at line 3847 of file FEProblemBase.h.

3848{
3849 mooseAssert(tid < _assembly.size(), "Assembly objects not initialized");
3850 mooseAssert(sys_num < _assembly[tid].size(),
3851 "System number larger than the assembly container size");
3852 return *_assembly[tid][sys_num];
3853}

◆ assembly() [2/2]

Assembly & FEProblemBase::assembly ( const THREAD_ID  tid,
const unsigned int  sys_num 
)
inlineoverridevirtualinherited

◆ automaticScaling() [1/3]

bool SubProblem::automaticScaling ( ) const
inherited

Automatic scaling getter.

Returns
A boolean representing whether we are performing automatic scaling

Definition at line 842 of file SubProblem.C.

1164{
1165 // Currently going to assume that we are applying or not applying automatic scaling consistently
1166 // across nonlinear systems
1168}
virtual const SystemBase & systemBaseNonlinear(const unsigned int sys_num) const override
Return the nonlinear system object as a base class reference given the system number.
bool automaticScaling() const
Getter for whether we are performing automatic scaling.
Definition SystemBase.h:123

◆ automaticScaling() [2/3]

void SubProblem::automaticScaling ( bool  automatic_scaling)
virtualinherited

Automatic scaling setter.

Parameters
automatic_scalingA boolean representing whether we are performing automatic scaling

Reimplemented from SubProblem.

Definition at line 836 of file SubProblem.C.

1157{
1158 for (const auto nl_sys_num : make_range(numNonlinearSystems()))
1159 systemBaseNonlinear(nl_sys_num).automaticScaling(automatic_scaling);
1160}
bool automaticScaling() const
Automatic scaling getter.

◆ automaticScaling() [3/3]

void FEProblemBase::automaticScaling ( bool  automatic_scaling)
overridevirtualinherited

Automatic scaling setter.

Parameters
automatic_scalingA boolean representing whether we are performing automatic scaling

Reimplemented from SubProblem.

Definition at line 9689 of file FEProblemBase.C.

9690{
9692 _displaced_problem->automaticScaling(automatic_scaling);
9693
9694 SubProblem::automaticScaling(automatic_scaling);
9695}
bool automaticScaling() const
Automatic scaling getter.

Referenced by DisplacedProblem::DisplacedProblem(), and FEProblemSolve::FEProblemSolve().

◆ backupMultiApps()

void FEProblemBase::backupMultiApps ( ExecFlagType  type)
inherited

Backup the MultiApps associated with the ExecFlagType.

Definition at line 6083 of file FEProblemBase.C.

6084{
6085 const auto & multi_apps = _multi_apps[type].getActiveObjects();
6086
6087 if (multi_apps.size())
6088 {
6089 TIME_SECTION("backupMultiApps", 5, "Backing Up MultiApp");
6090
6092 _console << COLOR_CYAN << "\nBacking Up MultiApps on " << type.name() << COLOR_DEFAULT
6093 << std::endl;
6094
6095 for (const auto & multi_app : multi_apps)
6096 multi_app->backup();
6097
6099
6101 _console << COLOR_CYAN << "Finished Backing Up MultiApps on " << type.name() << "\n"
6102 << COLOR_DEFAULT << std::endl;
6103 }
6104}
bool _verbose_multiapps
Whether or not to be verbose with multiapps.
bool _parallel_barrier_messaging
Whether or not information about how many transfers have completed is printed.
const std::vector< std::shared_ptr< T > > & getActiveObjects(THREAD_ID tid=0) const
Retrieve complete vector to the active all/block/boundary restricted objects for a given thread.
void parallelBarrierNotify(const Parallel::Communicator &comm, bool messaging)
Definition MooseUtils.C:338

Referenced by FixedPointSolve::solve().

◆ bumpAllQRuleOrder()

void FEProblemBase::bumpAllQRuleOrder ( libMesh::Order  order,
SubdomainID  block 
)
inherited

Definition at line 6575 of file FEProblemBase.C.

6576{
6577 for (unsigned int tid = 0; tid < libMesh::n_threads(); ++tid)
6578 for (const auto i : index_range(_nl))
6579 _assembly[tid][i]->bumpAllQRuleOrder(order, block);
6580
6582 _displaced_problem->bumpAllQRuleOrder(order, block);
6583
6584 updateMaxQps();
6585}
void bumpAllQRuleOrder(libMesh::Order order, SubdomainID block)

Referenced by FEProblemBase::bumpAllQRuleOrder().

◆ bumpVolumeQRuleOrder()

void FEProblemBase::bumpVolumeQRuleOrder ( libMesh::Order  order,
SubdomainID  block 
)
inherited

Increases the element/volume quadrature order for the specified mesh block if and only if the current volume quadrature order is lower.

This can only cause the quadrature level to increase. If volume_order is lower than or equal to the current volume/elem quadrature rule order, then nothing is done (i.e. this function is idempotent).

Definition at line 6562 of file FEProblemBase.C.

6563{
6564 for (unsigned int tid = 0; tid < libMesh::n_threads(); ++tid)
6565 for (const auto i : index_range(_nl))
6566 _assembly[tid][i]->bumpVolumeQRuleOrder(order, block);
6567
6569 _displaced_problem->bumpVolumeQRuleOrder(order, block);
6570
6571 updateMaxQps();
6572}
void bumpVolumeQRuleOrder(libMesh::Order order, SubdomainID block)
Increases the element/volume quadrature order for the specified mesh block if and only if the current...

Referenced by FEProblemBase::bumpVolumeQRuleOrder().

◆ cacheJacobian()

void FEProblemBase::cacheJacobian ( const THREAD_ID  tid)
overridevirtualinherited

Reimplemented from SubProblem.

Definition at line 2130 of file FEProblemBase.C.

2131{
2134 _displaced_problem->cacheJacobian(tid);
2135}
virtual void cacheJacobian(const THREAD_ID tid)

Referenced by ComputeResidualAndJacobianThread::accumulate(), NonlinearSystemBase::constraintJacobians(), and ComputeJacobianThread::postElement().

◆ cacheJacobianNeighbor()

void FEProblemBase::cacheJacobianNeighbor ( const THREAD_ID  tid)
overridevirtualinherited

Reimplemented from SubProblem.

Definition at line 2138 of file FEProblemBase.C.

2139{
2142 _displaced_problem->cacheJacobianNeighbor(tid);
2143}
virtual void cacheJacobianNeighbor(const THREAD_ID tid)

Referenced by NonlinearSystemBase::constraintJacobians().

◆ cacheResidual()

void FEProblemBase::cacheResidual ( const THREAD_ID  tid)
overridevirtualinherited

Reimplemented from SubProblem.

Definition at line 2001 of file FEProblemBase.C.

2002{
2005 _displaced_problem->cacheResidual(tid);
2006}
virtual void cacheResidual(const THREAD_ID tid)

Referenced by ComputeResidualAndJacobianThread::accumulate(), ComputeResidualThread::accumulate(), and NonlinearSystemBase::constraintResiduals().

◆ cacheResidualNeighbor()

void FEProblemBase::cacheResidualNeighbor ( const THREAD_ID  tid)
overridevirtualinherited

Reimplemented from SubProblem.

Definition at line 2009 of file FEProblemBase.C.

2010{
2013 _displaced_problem->cacheResidualNeighbor(tid);
2014}
virtual void cacheResidualNeighbor(const THREAD_ID tid)

Referenced by NonlinearSystemBase::constraintResiduals().

◆ callMooseError() [1/2]

void MooseBase::callMooseError ( MooseApp *const  app,
const InputParameters params,
std::string  msg,
const bool  with_prefix,
const hit::Node *  node,
const bool  show_trace = true 
)
staticinherited

External method for calling moose error with added object context.

Needed so that objects without the MooseBase context (InputParameters) can call errors with context

Parameters
appThe app pointer (if available); adds multiapp context and clears the console
paramsThe parameters, needed to obtain object information
msgThe message
with_prefixIf true, add the prefix from messagePrefix(), which is the object information (type, name, etc)
nodeOptional hit node to add file path context as a prefix
show_traceWhether or not to show a stack trace, defaults to true

Definition at line 114 of file MooseBase.C.

120{
121 if (!node)
122 node = MooseBase::getHitNode(params);
123
124 std::string multiapp_prefix = "";
125 if (app)
126 {
127 if (!app->isUltimateMaster())
128 multiapp_prefix = app->name();
130 }
131
132 if (with_prefix)
133 // False here because the hit context will get processed by the node
134 msg = messagePrefix(params, false) + msg;
135
136 moose::internal::mooseErrorRaw(msg, multiapp_prefix, node, show_trace);
137}
bool isUltimateMaster() const
Whether or not this app is the ultimate master app.
Definition MooseApp.h:866
const hit::Node * getHitNode() const
Definition MooseBase.h:136
std::string messagePrefix(const bool hit_prefix=true) const
Definition MooseBase.h:256
void mooseConsole()
Send current output buffer to Console output objects.
void mooseErrorRaw(std::string msg, const std::string &prefix="", const hit::Node *node=nullptr, const bool show_trace=true)
Main callback for emitting a moose error.
Definition MooseError.C:53

◆ callMooseError() [2/2]

void MooseBase::callMooseError ( std::string  msg,
const bool  with_prefix,
const hit::Node *  node = nullptr,
const bool  show_trace = true 
) const
inherited

External method for calling moose error with added object context.

Parameters
msgThe message
with_prefixIf true, add the prefix from messagePrefix(), which is the object information (type, name, etc)
nodeOptional hit node to add file path context as a prefix
show_traceWhether or not to show a stack trace, defaults to true

Definition at line 105 of file MooseBase.C.

109{
110 callMooseError(&_app, _pars, msg, with_prefix, node, show_trace);
111}
MooseApp & _app
The MOOSE application this is associated with.
Definition MooseBase.h:375
void callMooseError(std::string msg, const bool with_prefix, const hit::Node *node=nullptr, const bool show_trace=true) const
External method for calling moose error with added object context.
Definition MooseBase.C:105
const InputParameters & _pars
The object's parameters.
Definition MooseBase.h:384

Referenced by MooseBase::callMooseError(), InputParameters::callMooseError(), MooseBase::mooseDocumentedError(), MooseBase::mooseError(), and MooseBase::mooseErrorNonPrefixed().

◆ checkBlockMatProps()

void SubProblem::checkBlockMatProps ( )
virtualinherited

Checks block material properties integrity.

See also
FEProblemBase::checkProblemIntegrity

Definition at line 624 of file SubProblem.C.

625{
626 // Variable for storing all available blocks/boundaries from the mesh
627 std::set<SubdomainID> all_ids(mesh().meshSubdomains());
628
629 std::stringstream errors;
630
631 // Loop through the properties to check
632 for (const auto & check_it : _map_block_material_props_check)
633 {
634 // The current id for the property being checked (BoundaryID || BlockID)
635 SubdomainID check_id = check_it.first;
636
637 std::set<SubdomainID> check_ids = {check_id};
638
639 // Loop through all the block/boundary ids
640 for (const auto & id : check_ids)
641 {
642 // Loop through all the stored properties
643 for (const auto & prop_it : check_it.second)
644 {
645 // Produce an error if the material property is not defined on the current block/boundary
646 // and any block/boundary
647 // and not is not a zero material property.
648 if (_map_block_material_props[id].count(prop_it.second) == 0 &&
649 _zero_block_material_props[id].count(prop_it.second) == 0)
650 {
651 std::string check_name = restrictionSubdomainCheckName(id);
652 if (check_name.empty())
653 check_name = std::to_string(id);
654 errors << "Material property '" << prop_it.second << "', requested by '" << prop_it.first
655 << "' is not defined on block " << check_name << "\n";
656 }
657 }
658 }
659 }
660
661 if (!errors.str().empty())
662 mooseError(errors.str());
663}
unsigned int count
Definition MortarUtils.C:53
std::map< SubdomainID, std::set< MaterialPropertyName > > _zero_block_material_props
Set of properties returned as zero properties.
std::map< SubdomainID, std::multimap< std::string, std::string > > _map_block_material_props_check
Data structures of the requested material properties.
std::string restrictionSubdomainCheckName(SubdomainID check_id)
Helper functions for checking MaterialProperties.
Definition SubProblem.C:773
std::map< SubdomainID, std::set< std::string > > _map_block_material_props
Map of material properties (block_id -> list of properties)

Referenced by FEProblemBase::checkProblemIntegrity().

◆ checkBoundaryMatProps()

void SubProblem::checkBoundaryMatProps ( )
virtualinherited

Checks boundary material properties integrity.

See also
FEProblemBase::checkProblemIntegrity

Definition at line 666 of file SubProblem.C.

667{
668 // Variable for storing the value for ANY_BOUNDARY_ID
670
671 // Variable for storing all available blocks/boundaries from the mesh
672 std::set<BoundaryID> all_ids(mesh().getBoundaryIDs());
673
674 std::stringstream errors;
675
676 // Loop through the properties to check
677 for (const auto & check_it : _map_boundary_material_props_check)
678 {
679 // The current id for the property being checked (BoundaryID || BlockID)
680 BoundaryID check_id = check_it.first;
681
682 // In the case when the material being checked has an ID is set to ANY, then loop through all
683 // the possible ids and verify that the material property is defined.
684 std::set<BoundaryID> check_ids{check_id};
685 if (check_id == any_id)
686 check_ids = all_ids;
687
688 // Loop through all the block/boundary ids
689 for (const auto & id : check_ids)
690 {
691 // Loop through all the stored properties
692 for (const auto & prop_it : check_it.second)
693 {
694 // Produce an error if the material property is not defined on the current block/boundary
695 // and any block/boundary
696 // and not is not a zero material property.
697 if (_map_boundary_material_props[id].count(prop_it.second) == 0 &&
698 _map_boundary_material_props[any_id].count(prop_it.second) == 0 &&
699 _zero_boundary_material_props[id].count(prop_it.second) == 0 &&
700 _zero_boundary_material_props[any_id].count(prop_it.second) == 0)
701 {
702 std::string check_name = restrictionBoundaryCheckName(id);
703 if (check_name.empty())
704 check_name = std::to_string(id);
705 errors << "Material property '" << prop_it.second << "', requested by '" << prop_it.first
706 << "' is not defined on boundary " << check_name << "\n";
707 }
708 }
709 }
710 }
711
712 if (!errors.str().empty())
713 mooseError(errors.str());
714}
boundary_id_type BoundaryID
std::string restrictionBoundaryCheckName(BoundaryID check_id)
Definition SubProblem.C:784
std::map< BoundaryID, std::multimap< std::string, std::string > > _map_boundary_material_props_check
std::map< BoundaryID, std::set< std::string > > _map_boundary_material_props
Map for boundary material properties (boundary_id -> list of properties)
std::map< BoundaryID, std::set< MaterialPropertyName > > _zero_boundary_material_props
std::vector< BoundaryID > getBoundaryIDs(const libMesh::MeshBase &mesh, const std::vector< BoundaryName > &boundary_name, bool generate_unknown, const std::set< BoundaryID > &mesh_boundary_ids)
Gets the boundary IDs with their names.
const BoundaryID ANY_BOUNDARY_ID
Definition MooseTypes.C:21

Referenced by FEProblemBase::checkProblemIntegrity().

◆ checkCoordinateSystems()

void FEProblemBase::checkCoordinateSystems ( )
protectedinherited

Verify that there are no element type/coordinate type conflicts.

Definition at line 9262 of file FEProblemBase.C.

9263{
9265}
void checkCoordinateSystems()
Performs a sanity check for every element in the mesh.
Definition MooseMesh.C:4428

Referenced by FEProblemBase::checkProblemIntegrity().

◆ checkDependMaterialsHelper()

void FEProblemBase::checkDependMaterialsHelper ( const std::map< SubdomainID, std::vector< std::shared_ptr< MaterialBase > > > &  materials_map)
protectedinherited

Helper method for checking Material object dependency.

See also
checkProblemIntegrity

These two sets are used to make sure that all dependent props on a block are actually supplied

Definition at line 9141 of file FEProblemBase.C.

9143{
9144 for (const auto & it : materials_map)
9145 {
9147 std::set<std::string> block_depend_props, block_supplied_props;
9148
9149 for (const auto & mat1 : it.second)
9150 {
9151 auto & alldeps = mat1->getMatPropDependencies(); // includes requested stateful props
9152 for (auto & dep : alldeps)
9153 block_depend_props.insert(_material_prop_registry.getName(dep));
9154
9155 // See if any of the active materials supply this property
9156 for (const auto & mat2 : it.second)
9157 {
9158 const std::set<std::string> & supplied_props = mat2->MaterialBase::getSuppliedItems();
9159 block_supplied_props.insert(supplied_props.begin(), supplied_props.end());
9160 }
9161 }
9162
9163 // Add zero material properties specific to this block and unrestricted
9164 block_supplied_props.insert(_zero_block_material_props[it.first].begin(),
9165 _zero_block_material_props[it.first].end());
9166
9167 // Error check to make sure all properties consumed by materials are supplied on this block
9168 std::set<std::string> difference;
9169 std::set_difference(block_depend_props.begin(),
9170 block_depend_props.end(),
9171 block_supplied_props.begin(),
9172 block_supplied_props.end(),
9173 std::inserter(difference, difference.end()));
9174
9175 if (!difference.empty())
9176 {
9177 std::ostringstream oss;
9178 oss << "One or more Material Properties were not supplied on block ";
9179 const std::string & subdomain_name = _mesh.getSubdomainName(it.first);
9180 if (subdomain_name.length() > 0)
9181 oss << subdomain_name << " (" << it.first << ")";
9182 else
9183 oss << it.first;
9184 oss << ":\n";
9185 for (const auto & name : difference)
9186 oss << name << "\n";
9187 mooseError(oss.str());
9188 }
9189 }
9190
9191 // This loop checks that materials are not supplied by multiple Material objects
9192 for (const auto & it : materials_map)
9193 {
9194 const auto & materials = it.second;
9195 std::set<std::string> inner_supplied, outer_supplied;
9196
9197 for (const auto & outer_mat : materials)
9198 {
9199 // Storage for properties for this material (outer) and all other materials (inner)
9200 outer_supplied = outer_mat->getSuppliedItems();
9201 inner_supplied.clear();
9202
9203 // Property to material map for error reporting
9204 std::map<std::string, std::set<std::string>> prop_to_mat;
9205 for (const auto & name : outer_supplied)
9206 prop_to_mat[name].insert(outer_mat->name());
9207
9208 for (const auto & inner_mat : materials)
9209 {
9210 if (outer_mat == inner_mat)
9211 continue;
9212
9213 // Check whether these materials are an AD pair
9214 auto outer_mat_type = outer_mat->type();
9215 auto inner_mat_type = inner_mat->type();
9216 removeSubstring(outer_mat_type, "<RESIDUAL>");
9217 removeSubstring(outer_mat_type, "<JACOBIAN>");
9218 removeSubstring(inner_mat_type, "<RESIDUAL>");
9219 removeSubstring(inner_mat_type, "<JACOBIAN>");
9220 if (outer_mat_type == inner_mat_type && outer_mat_type != outer_mat->type() &&
9221 inner_mat_type != inner_mat->type())
9222 continue;
9223
9224 inner_supplied.insert(inner_mat->getSuppliedItems().begin(),
9225 inner_mat->getSuppliedItems().end());
9226
9227 for (const auto & inner_supplied_name : inner_supplied)
9228 prop_to_mat[inner_supplied_name].insert(inner_mat->name());
9229 }
9230
9231 // Test that a property isn't supplied on multiple blocks
9232 std::set<std::string> intersection;
9233 std::set_intersection(outer_supplied.begin(),
9234 outer_supplied.end(),
9235 inner_supplied.begin(),
9236 inner_supplied.end(),
9237 std::inserter(intersection, intersection.end()));
9238
9239 if (!intersection.empty())
9240 {
9241 std::ostringstream oss;
9242 oss << "The following material properties are declared on block " << it.first
9243 << " by multiple materials:\n";
9244 oss << ConsoleUtils::indent(2) << std::setw(30) << std::left << "Material Property"
9245 << "Material Objects\n";
9246 for (const auto & outer_name : intersection)
9247 {
9248 oss << ConsoleUtils::indent(2) << std::setw(30) << std::left << outer_name;
9249 for (const auto & inner_name : prop_to_mat[outer_name])
9250 oss << inner_name << " ";
9251 oss << '\n';
9252 }
9253
9254 mooseError(oss.str());
9255 break;
9256 }
9257 }
9258 }
9259}
void removeSubstring(std::string &main, const std::string &sub)
MaterialPropertyRegistry _material_prop_registry
const std::string & getSubdomainName(SubdomainID subdomain_id) const
Return the name of a block given an id.
Definition MooseMesh.C:1751
std::string indent(unsigned int spaces)
Create empty string for indenting.

Referenced by FEProblemBase::checkProblemIntegrity().

◆ checkDisplacementOrders()

void FEProblemBase::checkDisplacementOrders ( )
protectedinherited

Verify that SECOND order mesh uses SECOND order displacements.

Definition at line 9065 of file FEProblemBase.C.

9066{
9068 {
9069 bool mesh_has_second_order_elements = false;
9070 for (const auto & elem : as_range(_displaced_mesh->activeLocalElementsBegin(),
9071 _displaced_mesh->activeLocalElementsEnd()))
9072 {
9073 if (elem->default_order() == SECOND)
9074 {
9075 mesh_has_second_order_elements = true;
9076 break;
9077 }
9078 }
9079
9080 // We checked our local elements, so take the max over all processors.
9081 _displaced_mesh->comm().max(mesh_has_second_order_elements);
9082
9083 // If the Mesh has second order elements, make sure the
9084 // displacement variables are second-order.
9085 if (mesh_has_second_order_elements)
9086 {
9087 const std::vector<std::string> & displacement_variables =
9088 _displaced_problem->getDisplacementVarNames();
9089
9090 for (const auto & var_name : displacement_variables)
9091 {
9092 MooseVariableFEBase & mv =
9093 _displaced_problem->getVariable(/*tid=*/0,
9094 var_name,
9097 if (mv.order() != SECOND)
9098 mooseError("Error: mesh has SECOND order elements, so all displacement variables must be "
9099 "SECOND order.");
9100 }
9101 }
9102 }
9103}
libMesh::Order order() const
Get the order of this variable Note: Order enum can be implicitly converted to unsigned int.
void max(const T &r, T &o, Request &req) const
const Parallel::Communicator & comm() const
@ VAR_FIELD_STANDARD
Definition MooseTypes.h:777
SimpleRange< IndexType > as_range(const std::pair< IndexType, IndexType > &p)

Referenced by FEProblemBase::checkProblemIntegrity().

◆ checkDuplicatePostprocessorVariableNames()

void FEProblemBase::checkDuplicatePostprocessorVariableNames ( )
inherited

Definition at line 1592 of file FEProblemBase.C.

1593{
1594 for (const auto & pp : _reporter_data.getPostprocessorNames())
1595 if (hasScalarVariable(pp))
1596 mooseError("Postprocessor \"" + pp +
1597 "\" has the same name as a scalar variable in the system.");
1598}

Referenced by FEProblemBase::checkProblemIntegrity().

◆ checkExceptionAndStopSolve()

void FEProblemBase::checkExceptionAndStopSolve ( bool  print_message = true)
virtualinherited

Check to see if an exception has occurred on any processor and, if possible, force the solve to fail, which will result in the time step being cut.

Notes:

  • The exception have be registered by calling setException() prior to calling this.
  • This is collective on MPI, and must be called simultaneously by all processors!
  • If called when the solve can be interruped, it will do so and also throw a MooseException, which must be handled.
  • If called at a stage in the execution when the solve cannot be interupted (i.e., there is no solve active), it will generate an error and terminate the application.
  • DO NOT CALL THIS IN A THREADED REGION! This is meant to be called just after a threaded section.
Parameters
print_messagewhether to print a message with exception information

Definition at line 7006 of file FEProblemBase.C.

7007{
7009 return;
7010
7011 TIME_SECTION("checkExceptionAndStopSolve", 5);
7012
7013 // See if any processor had an exception. If it did, get back the
7014 // processor that the exception occurred on.
7015 unsigned int processor_id;
7016
7018
7019 if (_has_exception)
7020 {
7022
7025 {
7026 // Print the message
7027 if (_communicator.rank() == 0 && print_message)
7028 {
7029 _console << "\n" << _exception_message << "\n";
7030 if (isTransient())
7031 _console
7032 << "To recover, the solution will fail and then be re-attempted with a reduced time "
7033 "step.\n"
7034 << std::endl;
7035 }
7036
7037 // Stop the solve -- this entails setting
7038 // SNESSetFunctionDomainError() or directly inserting NaNs in the
7039 // residual vector to let PETSc >= 3.6 return DIVERGED_NANORINF.
7040 if (_current_nl_sys)
7042
7045
7046 // and close Aux system (we MUST do this here; see #11525)
7047 _aux->solution().close();
7048
7049 // We've handled this exception, so we no longer have one.
7050 _has_exception = false;
7051
7052 // Force the next non-linear convergence check to fail (and all further residual evaluation
7053 // to be skipped).
7055
7056 // Repropagate the exception, so it can be caught at a higher level, typically
7057 // this is NonlinearSystem::computeResidual().
7059 }
7060 else
7061 mooseError("The following parallel-communicated exception was detected during " +
7062 Moose::stringify(_current_execute_on_flag) + " evaluation:\n" +
7064 "\nBecause this did not occur during residual evaluation, there"
7065 " is no way to handle this, so the solution is aborting.\n");
7066 }
7067}
const ExecFlagType EXEC_POSTCHECK
Definition Moose.C:35
const ExecFlagType EXEC_LINEAR
Definition Moose.C:31
const ExecFlagType EXEC_NONLINEAR
Definition Moose.C:33
LinearSystem * _current_linear_sys
The current linear system that we are solving.
std::set< TagID > _fe_vector_tags
std::string _exception_message
The error message to go with an exception.
ExecFlagType _current_execute_on_flag
Current execute_on flag.
bool _skip_exception_check
If or not skip 'exception and stop solve'.
bool _fail_next_system_convergence_check
bool _has_exception
Whether or not an exception has occurred.
virtual bool isTransient() const override
virtual void stopSolve(const ExecFlagType &exec_flag, const std::set< TagID > &vector_tags_to_close) override
Quit the current solve as soon as possible.
Provides a way for users to bail out of the current solve.
virtual void stopSolve(const ExecFlagType &exec_flag, const std::set< TagID > &vector_tags_to_close)=0
Quit the current solve as soon as possible.
void maxloc(T &r, unsigned int &max_id) const
processor_id_type rank() const
void broadcast(T &data, const unsigned int root_id=0, const bool identical_sizes=false) const

Referenced by NonlinearSystemBase::computeJacobianInternal(), FEProblemBase::handleException(), and DisplacedProblem::updateMesh().

◆ checkICRestartError()

void FEProblemBase::checkICRestartError ( const std::string &  ic_name,
const std::string &  name,
const VariableName &  var_name 
)
privateinherited

Checks if the variable of the initial condition is getting restarted and errors for specific cases.

Parameters
ic_nameThe name of the initial condition
var_nameThe name of the variable

Definition at line 3703 of file FEProblemBase.C.

3706{
3708 {
3709 std::string restart_method = "";
3710 if (_app.isRestarting())
3711 restart_method =
3712 "a checkpoint restart, by IC object '" + ic_name + "' for variable '" + name + "'";
3713 else if (_app.getExReaderForRestart())
3714 {
3715 std::vector<std::string> restarted_vars = _app.getExReaderForRestart()->get_elem_var_names();
3716 const auto nodal_vars = _app.getExReaderForRestart()->get_nodal_var_names();
3717 const auto global_vars = _app.getExReaderForRestart()->get_global_var_names();
3718 restarted_vars.insert(restarted_vars.end(), nodal_vars.begin(), nodal_vars.end());
3719 restarted_vars.insert(restarted_vars.end(), global_vars.begin(), global_vars.end());
3720
3721 if (std::find(restarted_vars.begin(), restarted_vars.end(), var_name) != restarted_vars.end())
3722 restart_method = "an Exodus restart, by IC object '" + ic_name + "' for variable '" + name +
3723 "' that is also being restarted";
3724 }
3725 if (!restart_method.empty())
3726 mooseError(
3727 "Initial conditions have been specified during ",
3728 restart_method,
3729 ".\nThis is only allowed if you specify 'allow_initial_conditions_with_restart' to "
3730 "the [Problem], as initial conditions can override restarted fields");
3731 }
3732}
const bool _allow_ics_during_restart
bool isRestarting() const
Whether or not this is a "restart" calculation.
Definition MooseApp.C:1675
libMesh::ExodusII_IO * getExReaderForRestart() const
Get the Exodus reader to restart variables from an Exodus mesh file.
Definition MooseApp.h:449
const std::vector< std::string > & get_global_var_names()
const std::vector< std::string > & get_elem_var_names()
const std::vector< std::string > & get_nodal_var_names()

Referenced by FEProblemBase::addFVInitialCondition(), and FEProblemBase::addInitialCondition().

◆ checkingUOAuxState()

bool FEProblemBase::checkingUOAuxState ( ) const
inlineinherited

Return a flag to indicate whether we are executing user objects and auxliary kernels for state check Note: This function can return true only when hasUOAuxStateCheck() returns true, i.e.

the check has been activated by users through Problem/check_uo_aux_state input parameter.

Definition at line 228 of file FEProblemBase.h.

228{ return _checking_uo_aux_state; }
bool _checking_uo_aux_state
Flag used to indicate whether we are doing the uo/aux state check in execute.

Referenced by MemoryUsage::execute(), VectorMemoryUsage::execute(), MemoryUsage::finalize(), PerfGraphData::finalize(), and VectorMemoryUsage::finalize().

◆ checkNonlocalCoupling()

void FEProblemBase::checkNonlocalCoupling ( )
inherited
Returns
Flag indicating nonlocal coupling exists or not.

Definition at line 1731 of file FEProblemBase.C.

1732{
1733 TIME_SECTION("checkNonlocalCoupling", 5, "Checking Nonlocal Coupling");
1734
1735 for (THREAD_ID tid = 0; tid < libMesh::n_threads(); tid++)
1736 for (auto & nl : _nl)
1737 {
1738 const auto & all_kernels = nl->getKernelWarehouse();
1739 const auto & kernels = all_kernels.getObjects(tid);
1740 for (const auto & kernel : kernels)
1741 {
1742 std::shared_ptr<NonlocalKernel> nonlocal_kernel =
1743 std::dynamic_pointer_cast<NonlocalKernel>(kernel);
1744 if (nonlocal_kernel)
1745 {
1748 _nonlocal_kernels.addObject(kernel, tid);
1749 }
1750 }
1751 const MooseObjectWarehouse<IntegratedBCBase> & all_integrated_bcs =
1752 nl->getIntegratedBCWarehouse();
1753 const auto & integrated_bcs = all_integrated_bcs.getObjects(tid);
1754 for (const auto & integrated_bc : integrated_bcs)
1755 {
1756 std::shared_ptr<NonlocalIntegratedBC> nonlocal_integrated_bc =
1757 std::dynamic_pointer_cast<NonlocalIntegratedBC>(integrated_bc);
1758 if (nonlocal_integrated_bc)
1759 {
1762 _nonlocal_integrated_bcs.addObject(integrated_bc, tid);
1763 }
1764 }
1765 }
1766}
MooseObjectWarehouse< IntegratedBCBase > _nonlocal_integrated_bcs
nonlocal integrated_bcs
MooseObjectWarehouse< KernelBase > _nonlocal_kernels
nonlocal kernels
bool _requires_nonlocal_coupling
nonlocal coupling requirement flag
bool _calculate_jacobian_in_uo
const std::vector< std::shared_ptr< T > > & getObjects(THREAD_ID tid=0) const
Retrieve complete vector to the all/block/boundary restricted objects for a given thread.
A storage container for MooseObjects that inherit from SetupInterface.

◆ checkNonlocalCouplingRequirement()

bool FEProblemBase::checkNonlocalCouplingRequirement ( ) const
overridevirtualinherited
Returns
whether there will be nonlocal coupling at any point in the simulation, e.g. whether there are any active \emph or inactive nonlocal kernels or boundary conditions

Implements SubProblem.

Definition at line 10119 of file FEProblemBase.C.

10120{
10122}

Referenced by DisplacedProblem::checkNonlocalCouplingRequirement(), ComputeJacobianThread::compute(), ComputeJacobianThread::compute(), ComputeFullJacobianThread::computeOnBoundary(), and ComputeFullJacobianThread::computeOnElement().

◆ checkProblemIntegrity()

void FEProblemBase::checkProblemIntegrity ( )
virtualinherited

Method called to perform a series of sanity checks before a simulation is run.

This method doesn't return when errors are found, instead it generally calls mooseError() directly.

If a material is specified for any block in the simulation, then all blocks must have a material specified.

unsigned int is necessary to print SubdomainIDs in the statement below

vector is necessary to get the subdomain names

Reimplemented in EigenProblem.

Definition at line 8893 of file FEProblemBase.C.

8894{
8895 TIME_SECTION("checkProblemIntegrity", 5);
8896
8897 // Subdomains specified by the "Problem/block" parameter
8898 const auto & subdomain_names = getParam<std::vector<SubdomainName>>("block");
8899 auto mesh_subdomains_vec = MooseMeshUtils::getSubdomainIDs(_mesh, subdomain_names);
8900 std::set<SubdomainID> mesh_subdomains(mesh_subdomains_vec.begin(), mesh_subdomains_vec.end());
8901
8902 // Check kernel coverage of subdomains (blocks) in the mesh
8905 {
8906 std::set<SubdomainID> blocks;
8909 blocks = mesh_subdomains;
8911 {
8912 blocks = mesh_subdomains;
8913 for (const auto & subdomain_name : _kernel_coverage_blocks)
8914 {
8915 const auto id = _mesh.getSubdomainID(subdomain_name);
8916 if (id == Moose::INVALID_BLOCK_ID)
8917 paramError("kernel_coverage_block_list",
8918 "Subdomain \"",
8919 subdomain_name,
8920 "\" not found in mesh.");
8921 blocks.erase(id);
8922 }
8923 }
8925 for (const auto & subdomain_name : _kernel_coverage_blocks)
8926 {
8927 const auto id = _mesh.getSubdomainID(subdomain_name);
8928 if (id == Moose::INVALID_BLOCK_ID)
8929 paramError("kernel_coverage_block_list",
8930 "Subdomain \"",
8931 subdomain_name,
8932 "\" not found in mesh.");
8933 blocks.insert(id);
8934 }
8935 if (!blocks.empty())
8936 for (auto & nl : _nl)
8937 nl->checkKernelCoverage(blocks);
8938 }
8939
8940 // Check materials
8941 {
8942#ifdef LIBMESH_ENABLE_AMR
8943 if ((_adaptivity.isOn() || _num_grid_steps) &&
8946 {
8947 _console << "Using EXPERIMENTAL Stateful Material Property projection with Adaptivity!\n"
8948 << std::flush;
8949 }
8950#endif
8951
8952 std::set<SubdomainID> local_mesh_subs(mesh_subdomains);
8953
8956 {
8961 bool check_material_coverage = false;
8962 std::set<SubdomainID> ids = _all_materials.getActiveBlocks();
8963 for (const auto & id : ids)
8964 {
8965 local_mesh_subs.erase(id);
8966 check_material_coverage = true;
8967 }
8968
8969 // did the user limit the subdomains to be checked?
8971 {
8972 for (const auto & subdomain_name : _material_coverage_blocks)
8973 {
8974 const auto id = _mesh.getSubdomainID(subdomain_name);
8975 if (id == Moose::INVALID_BLOCK_ID)
8976 paramError("material_coverage_block_list",
8977 "Subdomain \"" + subdomain_name + "\" not found in mesh.");
8978 local_mesh_subs.erase(id);
8979 }
8980 }
8982 {
8983 std::set<SubdomainID> blocks(local_mesh_subs);
8984 for (const auto & subdomain_name : _material_coverage_blocks)
8985 {
8986 const auto id = _mesh.getSubdomainID(subdomain_name);
8987 if (id == Moose::INVALID_BLOCK_ID)
8988 paramError("material_coverage_block_list",
8989 "Subdomain \"" + subdomain_name + "\" not found in mesh.");
8990 blocks.erase(id);
8991 }
8992 for (const auto id : blocks)
8993 local_mesh_subs.erase(id);
8994 }
8995
8996 // also exclude mortar spaces from the material check
8997 auto && mortar_subdomain_ids = _mortar_data->getMortarSubdomainIDs();
8998 for (auto subdomain_id : mortar_subdomain_ids)
8999 local_mesh_subs.erase(subdomain_id);
9000
9001 // Check Material Coverage
9002 if (check_material_coverage && !local_mesh_subs.empty())
9003 {
9004 std::stringstream extra_subdomain_ids;
9006 std::copy(local_mesh_subs.begin(),
9007 local_mesh_subs.end(),
9008 std::ostream_iterator<unsigned int>(extra_subdomain_ids, " "));
9010 std::vector<SubdomainID> local_mesh_subs_vec(local_mesh_subs.begin(),
9011 local_mesh_subs.end());
9012
9013 mooseError("The following blocks from your input mesh do not contain an active material: " +
9014 extra_subdomain_ids.str() +
9015 "(names: " + Moose::stringify(_mesh.getSubdomainNames(local_mesh_subs_vec)) +
9016 ")\nWhen ANY mesh block contains a Material object, "
9017 "all blocks must contain a Material object.\n");
9018 }
9019 }
9020
9021 // Check material properties on blocks and boundaries
9024
9025 // Check that material properties exist when requested by other properties on a given block
9026 const auto & materials = _all_materials.getActiveObjects();
9027 for (const auto & material : materials)
9028 material->checkStatefulSanity();
9029
9030 // auto mats_to_check = _materials.getActiveBlockObjects();
9031 // const auto & discrete_materials = _discrete_materials.getActiveBlockObjects();
9032 // for (const auto & map_it : discrete_materials)
9033 // for (const auto & container_element : map_it.second)
9034 // mats_to_check[map_it.first].push_back(container_element);
9037 }
9038
9040
9041 // Verify that we don't have any Element type/Coordinate Type conflicts
9043
9044 // Coordinate transforms are only intended for use with MultiApps at this time. If you are not
9045 // using multiapps but still require these, contact a moose developer
9047 !hasMultiApps())
9048 mooseError("Coordinate transformation parameters, listed below, are only to be used in the "
9049 "context of application to application field transfers at this time. The mesh is "
9050 "not modified by these parameters within an application.\n"
9051 "You should likely use a 'TransformGenerator' in the [Mesh] block to achieve the "
9052 "desired mesh modification.\n\n",
9054
9055 // If using displacements, verify that the order of the displacement
9056 // variables matches the order of the elements in the displaced
9057 // mesh.
9059
9060 // Check for postprocessor names with same name as a scalar variable
9062}
char ** blocks
std::vector< SubdomainName > _material_coverage_blocks
void checkDependMaterialsHelper(const std::map< SubdomainID, std::vector< std::shared_ptr< MaterialBase > > > &materials_map)
Helper method for checking Material object dependency.
const bool _skip_nl_system_check
const bool & _solve
Whether or not to actually solve the nonlinear system.
void checkDisplacementOrders()
Verify that SECOND order mesh uses SECOND order displacements.
std::unique_ptr< MortarInterfaceWarehouse > _mortar_data
CoverageCheckMode _kernel_coverage_check
Determines whether and which subdomains are to be checked to ensure that they have an active kernel.
void checkUserObjects()
const bool _material_dependency_check
Determines whether a check to verify material dependencies on every subdomain.
bool hasMultiApps() const
Returns whether or not the current simulation has any multiapps.
void checkCoordinateSystems()
Verify that there are no element type/coordinate type conflicts.
void checkDuplicatePostprocessorVariableNames()
CoverageCheckMode _material_coverage_check
Determines whether and which subdomains are to be checked to ensure that they have an active material...
std::vector< SubdomainName > _kernel_coverage_blocks
bool hasScalingOrRotationTransformation() const
Returns true if the app has scaling and/or rotation transformation.
static InputParameters validParams()
Describes the parameters this object can take to setup transformations.
void paramError(const std::string &param, Args... args) const
Emits an error prefixed with the file and line number of the given param (from the input file) along ...
Definition MooseBase.h:457
std::vector< SubdomainName > getSubdomainNames(const std::vector< SubdomainID > &subdomain_ids) const
Get the associated subdomainNames for the subdomain ids that are passed in.
Definition MooseMesh.C:1757
MooseAppCoordTransform & coordTransform()
Definition MooseMesh.h:2064
SubdomainID getSubdomainID(const SubdomainName &subdomain_name) const
Get the associated subdomain ID for the subdomain name.
Definition MooseMesh.C:1720
std::set< SubdomainID > getActiveBlocks(THREAD_ID tid=0) const
Return a set of active SubdomainsIDs.
const std::map< SubdomainID, std::vector< std::shared_ptr< T > > > & getActiveBlockObjects(THREAD_ID tid=0) const
virtual void checkBoundaryMatProps()
Checks boundary material properties integrity.
Definition SubProblem.C:666
virtual void checkBlockMatProps()
Checks block material properties integrity.
Definition SubProblem.C:624
std::vector< subdomain_id_type > getSubdomainIDs(const libMesh::MeshBase &mesh, const std::vector< SubdomainName > &subdomain_name)
Get the associated subdomainIDs for the subdomain names that are passed in.
const SubdomainID INVALID_BLOCK_ID
Definition MooseTypes.C:20

Referenced by EigenProblem::checkProblemIntegrity().

◆ checkResidualForNans()

virtual bool FEProblemBase::checkResidualForNans ( ) const
inlineoverridevirtualinherited

Whether to check residual for NaN/Inf values.

Implements SubProblem.

Definition at line 231 of file FEProblemBase.h.

231{ return _check_residual_for_nans; }
bool _check_residual_for_nans
Whether to check the residual for NaN or Inf values.

Referenced by DisplacedProblem::checkResidualForNans().

◆ checkUserObjectJacobianRequirement()

void FEProblemBase::checkUserObjectJacobianRequirement ( THREAD_ID  tid)
inherited

Definition at line 1769 of file FEProblemBase.C.

1770{
1771 std::set<const MooseVariableFEBase *> uo_jacobian_moose_vars;
1772 {
1773 std::vector<ShapeElementUserObject *> objs;
1774 theWarehouse()
1775 .query()
1777 .condition<AttribThread>(tid)
1778 .queryInto(objs);
1779
1780 for (const auto & uo : objs)
1781 {
1782 _calculate_jacobian_in_uo = uo->computeJacobianFlag();
1783 const auto & mv_deps = uo->jacobianMooseVariables();
1784 uo_jacobian_moose_vars.insert(mv_deps.begin(), mv_deps.end());
1785 }
1786 }
1787 {
1788 std::vector<ShapeSideUserObject *> objs;
1789 theWarehouse()
1790 .query()
1792 .condition<AttribThread>(tid)
1793 .queryInto(objs);
1794 for (const auto & uo : objs)
1795 {
1796 _calculate_jacobian_in_uo = uo->computeJacobianFlag();
1797 const auto & mv_deps = uo->jacobianMooseVariables();
1798 uo_jacobian_moose_vars.insert(mv_deps.begin(), mv_deps.end());
1799 }
1800 }
1801
1802 _uo_jacobian_moose_vars[tid].assign(uo_jacobian_moose_vars.begin(), uo_jacobian_moose_vars.end());
1803 std::sort(
1804 _uo_jacobian_moose_vars[tid].begin(), _uo_jacobian_moose_vars[tid].end(), sortMooseVariables);
1805}
@ ShapeSideUserObject
@ ShapeElementUserObject
std::vector< std::vector< const MooseVariableFEBase * > > _uo_jacobian_moose_vars
QueryCache & condition(Args &&... args)
Adds a new condition to the query.
Query query()
query creates and returns an initialized a query object for querying objects from the warehouse.

◆ checkUserObjectNameCollision()

void FEProblemBase::checkUserObjectNameCollision ( const std::string &  name,
const std::string &  type 
) const
inherited

Check for name collision between different user objects.

Parameters
nameThe object name being added
typeThe object type being added

Definition at line 4601 of file FEProblemBase.C.

4603{
4604 if (hasUserObject(name))
4605 mooseError("A ",
4607 " already exists. You may not add a ",
4608 type,
4609 " by the same name.");
4610
4611#ifdef MOOSE_KOKKOS_ENABLED
4613 mooseError("A ",
4614 getKokkosUserObject<UserObjectBase>(name).typeAndName(),
4615 " already exists. You may not add a ",
4616 type,
4617 " by the same name.");
4618#endif
4619}
bool hasKokkosUserObject(const std::string &name) const
Check if there if a Kokkos user object of given name.
bool hasUserObject(const std::string &name) const
Check if there if a user object of given name.
const UserObject & getUserObjectBase(const std::string &name, const THREAD_ID tid=0) const
Get the user object by its name.
std::string typeAndName() const
Get the class's combined type and name; useful in error handling.
Definition MooseBase.C:57

Referenced by FEProblemBase::addPostprocessor(), MFEMProblem::addPostprocessor(), FEProblemBase::addReporter(), FEProblemBase::addVectorPostprocessor(), and MFEMProblem::addVectorPostprocessor().

◆ checkUserObjects()

void FEProblemBase::checkUserObjects ( )
protectedinherited

Definition at line 9106 of file FEProblemBase.C.

9107{
9108 // Check user_objects block coverage
9109 std::set<SubdomainID> mesh_subdomains = _mesh.meshSubdomains();
9110 std::set<SubdomainID> user_objects_blocks;
9111
9112 // gather names of all user_objects that were defined in the input file
9113 // and the blocks that they are defined on
9114 std::set<std::string> names;
9115
9116 std::vector<UserObjectBase *> objects;
9118
9119 for (const auto & obj : objects)
9120 names.insert(obj->name());
9121
9122 // See if all referenced blocks are covered
9123 std::set<SubdomainID> difference;
9124 std::set_difference(user_objects_blocks.begin(),
9125 user_objects_blocks.end(),
9126 mesh_subdomains.begin(),
9127 mesh_subdomains.end(),
9128 std::inserter(difference, difference.end()));
9129
9130 if (!difference.empty())
9131 {
9132 std::ostringstream oss;
9133 oss << "One or more UserObjects is referencing a nonexistent block:\n";
9134 for (const auto & id : difference)
9135 oss << id << "\n";
9136 mooseError(oss.str());
9137 }
9138}
const std::set< SubdomainID > & meshSubdomains() const
Returns a read-only reference to the set of subdomains currently present in the Mesh.
Definition MooseMesh.C:3272

Referenced by FEProblemBase::checkProblemIntegrity().

◆ clearActiveElementalMooseVariables()

void FEProblemBase::clearActiveElementalMooseVariables ( const THREAD_ID  tid)
overridevirtualinherited

Clear the active elemental MooseVariableFEBase.

If there are no active variables then they will all be reinited. Call this after finishing the computation that was using a restricted set of MooseVariableFEBases

Parameters
tidThe thread id

Reimplemented from SubProblem.

Definition at line 6404 of file FEProblemBase.C.

6405{
6407
6409 _displaced_problem->clearActiveElementalMooseVariables(tid);
6410}
virtual void clearActiveElementalMooseVariables(const THREAD_ID tid)
Clear the active elemental MooseVariableFieldBase.
Definition SubProblem.C:467

Referenced by ComputeDiracThread::post(), ComputeIndicatorThread::post(), ComputeMarkerThread::post(), ComputeMaterialsObjectThread::post(), and ComputeUserObjectsThread::post().

◆ clearActiveFEVariableCoupleableMatrixTags()

void FEProblemBase::clearActiveFEVariableCoupleableMatrixTags ( const THREAD_ID  tid)
overridevirtualinherited

Reimplemented from SubProblem.

Definition at line 6413 of file FEProblemBase.C.

6414{
6416
6418 _displaced_problem->clearActiveFEVariableCoupleableMatrixTags(tid);
6419}
virtual void clearActiveFEVariableCoupleableMatrixTags(const THREAD_ID tid)
Definition SubProblem.C:385

◆ clearActiveFEVariableCoupleableVectorTags()

void FEProblemBase::clearActiveFEVariableCoupleableVectorTags ( const THREAD_ID  tid)
overridevirtualinherited

Reimplemented from SubProblem.

Definition at line 6422 of file FEProblemBase.C.

6423{
6425
6427 _displaced_problem->clearActiveFEVariableCoupleableVectorTags(tid);
6428}
virtual void clearActiveFEVariableCoupleableVectorTags(const THREAD_ID tid)
Definition SubProblem.C:379

◆ clearActiveMaterialProperties()

void FEProblemBase::clearActiveMaterialProperties ( const THREAD_ID  tid)
inherited

Clear the active material properties.

Should be called at the end of every computing thread

Parameters
tidThe thread id

Definition at line 6470 of file FEProblemBase.C.

6471{
6473}
std::vector< unsigned char > _has_active_material_properties
Whether there are active material properties on each thread.

Referenced by NodalPatchRecovery::compute(), ComputeDiracThread::post(), ComputeIndicatorThread::post(), ComputeUserObjectsThread::post(), ComputeIndicatorThread::subdomainChanged(), and ComputeMarkerThread::subdomainChanged().

◆ clearActiveScalarVariableCoupleableMatrixTags()

void FEProblemBase::clearActiveScalarVariableCoupleableMatrixTags ( const THREAD_ID  tid)
overridevirtualinherited

Reimplemented from SubProblem.

Definition at line 6431 of file FEProblemBase.C.

6432{
6434
6436 _displaced_problem->clearActiveScalarVariableCoupleableMatrixTags(tid);
6437}
virtual void clearActiveScalarVariableCoupleableMatrixTags(const THREAD_ID tid)
Definition SubProblem.C:426

Referenced by AuxiliarySystem::clearScalarVariableCoupleableTags().

◆ clearActiveScalarVariableCoupleableVectorTags()

void FEProblemBase::clearActiveScalarVariableCoupleableVectorTags ( const THREAD_ID  tid)
overridevirtualinherited

Reimplemented from SubProblem.

Definition at line 6440 of file FEProblemBase.C.

6441{
6443
6445 _displaced_problem->clearActiveScalarVariableCoupleableVectorTags(tid);
6446}
virtual void clearActiveScalarVariableCoupleableVectorTags(const THREAD_ID tid)
Definition SubProblem.C:420

Referenced by AuxiliarySystem::clearScalarVariableCoupleableTags().

◆ clearAllDofIndices()

void SubProblem::clearAllDofIndices ( )
inherited

Clear dof indices from variables in nl and aux systems.

Definition at line 1178 of file SubProblem.C.

1179{
1180 for (const auto nl_sys_num : make_range(numNonlinearSystems()))
1183}
void clearAllDofIndices()
Clear dof indices from variables in nl and aux systems.
virtual const SystemBase & systemBaseAuxiliary() const =0
Return the auxiliary system object as a base class reference.
void clearAllDofIndices()
Clear all dof indices from moose variables.

Referenced by FEProblemBase::solve().

◆ clearCurrentJacobianMatrixTags()

void FEProblemBase::clearCurrentJacobianMatrixTags ( )
inlineinherited

Clear the current Jacobian matrix tag data structure ... if someone creates it.

Definition at line 2956 of file FEProblemBase.h.

2956{}

Referenced by FEProblemBase::resetState().

◆ clearCurrentResidualVectorTags()

void FEProblemBase::clearCurrentResidualVectorTags ( )
inlineinherited

Clear the current residual vector tag data structure.

Definition at line 3884 of file FEProblemBase.h.

3885{
3887}
std::vector< VectorTag > _current_residual_vector_tags
A data member to store the residual vector tag(s) passed into computeResidualTag(s).

Referenced by CrankNicolson::init(), and FEProblemBase::resetState().

◆ clearDiracInfo()

void FEProblemBase::clearDiracInfo ( )
overridevirtualinherited

Gets called before Dirac Kernels are asked to add the points they are supposed to be evaluated in.

Implements SubProblem.

Definition at line 2615 of file FEProblemBase.C.

2616{
2618
2620 _displaced_problem->clearDiracInfo();
2621}
void clearPoints()
Remove all of the current points and elements.
DiracKernelInfo _dirac_kernel_info

Referenced by NonlinearSystemBase::computeDiracContributions().

◆ cloneAlgebraicGhostingFunctor()

void SubProblem::cloneAlgebraicGhostingFunctor ( libMesh::GhostingFunctor algebraic_gf,
bool  to_mesh = true 
)
privateinherited

Creates (n_sys - 1) clones of the provided algebraic ghosting functor (corresponding to the nonlinear system algebraic ghosting functor), initializes the clone with the appropriate DofMap, and then adds the clone to said DofMap.

Parameters
algebraic_gfthe (nonlinear system's) algebraic ghosting functor to clone
to_meshwhether the clone should be added to the corresponding DofMap's underlying MeshBase (the underlying MeshBase will be the same for every system held by this object's EquationSystems object)

Definition at line 1002 of file SubProblem.C.

1003{
1004 EquationSystems & eq = es();
1005 const auto n_sys = eq.n_systems();
1006
1007 auto pr = _root_alg_gf_to_sys_clones.emplace(
1008 &algebraic_gf, std::vector<std::shared_ptr<GhostingFunctor>>(n_sys - 1));
1009 mooseAssert(pr.second, "We are adding a duplicate algebraic ghosting functor");
1010 auto & clones_vec = pr.first->second;
1011
1012 for (MooseIndex(n_sys) i = 1; i < n_sys; ++i)
1013 {
1014 DofMap & dof_map = eq.get_system(i).get_dof_map();
1015 std::shared_ptr<GhostingFunctor> clone_alg_gf = algebraic_gf.clone();
1016 std::dynamic_pointer_cast<RelationshipManager>(clone_alg_gf)
1017 ->init(mesh(), *algebraic_gf.get_mesh(), &dof_map);
1018 dof_map.add_algebraic_ghosting_functor(clone_alg_gf, to_mesh);
1019 clones_vec[i - 1] = clone_alg_gf;
1020 }
1021}
std::unordered_map< libMesh::GhostingFunctor *, std::vector< std::shared_ptr< libMesh::GhostingFunctor > > > _root_alg_gf_to_sys_clones
A map from a root algebraic ghosting functor, e.g.
void add_algebraic_ghosting_functor(GhostingFunctor &evaluable_functor, bool to_mesh=true)
virtual std::unique_ptr< GhostingFunctor > clone() const=0
const MeshBase * get_mesh() const

Referenced by SubProblem::addAlgebraicGhostingFunctor().

◆ cloneCouplingGhostingFunctor()

void SubProblem::cloneCouplingGhostingFunctor ( libMesh::GhostingFunctor coupling_gf,
bool  to_mesh = true 
)
privateinherited

Creates (n_sys - 1) clones of the provided coupling ghosting functor (corresponding to the nonlinear system coupling ghosting functor), initializes the clone with the appropriate DofMap, and then adds the clone to said DofMap.

Parameters
coupling_gfthe (nonlinear system's) coupling ghosting functor to clone
to_meshwhether the clone should be added to the corresponding DofMap's underlying MeshBase (the underlying MeshBase will be the same for every system held by this object's EquationSystems object)

Definition at line 1036 of file SubProblem.C.

1037{
1038 const std::size_t num_nl_sys = numNonlinearSystems();
1039
1040 auto pr = _root_coupling_gf_to_sys_clones.emplace(
1041 &coupling_gf, std::vector<std::shared_ptr<GhostingFunctor>>(num_nl_sys - 1));
1042 mooseAssert(pr.second, "We are adding a duplicate coupling functor");
1043 auto & clones_vec = pr.first->second;
1044
1045 for (const auto i : make_range(std::size_t(1), num_nl_sys))
1046 {
1047 DofMap & dof_map = systemBaseNonlinear(i).system().get_dof_map();
1048 std::shared_ptr<GhostingFunctor> clone_coupling_gf = coupling_gf.clone();
1049 std::dynamic_pointer_cast<RelationshipManager>(clone_coupling_gf)
1050 ->init(mesh(), *coupling_gf.get_mesh(), &dof_map);
1051 dof_map.add_coupling_functor(clone_coupling_gf, to_mesh);
1052 clones_vec[i - 1] = clone_coupling_gf;
1053 }
1054}
std::unordered_map< libMesh::GhostingFunctor *, std::vector< std::shared_ptr< libMesh::GhostingFunctor > > > _root_coupling_gf_to_sys_clones
A map from a root coupling ghosting functor, e.g.

Referenced by SubProblem::addCouplingGhostingFunctor().

◆ computeBounds()

void FEProblemBase::computeBounds ( libMesh::NonlinearImplicitSystem sys,
NumericVector< libMesh::Number > &  lower,
NumericVector< libMesh::Number > &  upper 
)
virtualinherited

Definition at line 8059 of file FEProblemBase.C.

8062{
8063 try
8064 {
8065 try
8066 {
8067 mooseAssert(_current_nl_sys && (sys.number() == _current_nl_sys->number()),
8068 "I expect these system numbers to be the same");
8069
8070 if (!_current_nl_sys->hasVector("lower_bound") || !_current_nl_sys->hasVector("upper_bound"))
8071 return;
8072
8073 TIME_SECTION("computeBounds", 1, "Computing Bounds");
8074
8075 NumericVector<Number> & _lower = _current_nl_sys->getVector("lower_bound");
8076 NumericVector<Number> & _upper = _current_nl_sys->getVector("upper_bound");
8077 _lower.swap(lower);
8078 _upper.swap(upper);
8079 for (THREAD_ID tid = 0; tid < libMesh::n_threads(); tid++)
8081
8082 _aux->residualSetup();
8084 _lower.swap(lower);
8085 _upper.swap(upper);
8086 }
8087 catch (...)
8088 {
8089 handleException("computeBounds");
8090 }
8091 }
8092 catch (MooseException & e)
8093 {
8094 mooseError("Irrecoverable exception: " + std::string(e.what()));
8095 }
8096 catch (...)
8097 {
8098 mooseError("Unexpected exception type");
8099 }
8100}
void computeSystems(const ExecFlagType &type)
Do generic system computations.
void handleException(const std::string &calling_method)
Handle exceptions.
virtual void residualSetup(THREAD_ID tid=0) const override
virtual const char * what() const
Get out the error message.
virtual NumericVector< Number > & getVector(const std::string &name)
Get a raw NumericVector by name.
Definition SystemBase.C:932
virtual void swap(NumericVector< T > &v)

Referenced by Moose::compute_bounds().

◆ computeDamping()

Real FEProblemBase::computeDamping ( const NumericVector< libMesh::Number > &  soln,
const NumericVector< libMesh::Number > &  update 
)
virtualinherited

Definition at line 8342 of file FEProblemBase.C.

8344{
8345 // Default to no damping
8346 Real damping = 1.0;
8347
8348 if (_has_dampers)
8349 {
8350 TIME_SECTION("computeDamping", 1, "Computing Damping");
8351
8352 // Save pointer to the current solution
8353 const NumericVector<Number> * _saved_current_solution = _current_nl_sys->currentSolution();
8354
8356 // For now, do not re-compute auxiliary variables. Doing so allows a wild solution increment
8357 // to get to the material models, which may not be able to cope with drastically different
8358 // values. Once more complete dependency checking is in place, auxiliary variables (and
8359 // material properties) will be computed as needed by dampers.
8360 // _aux.compute();
8361 damping = _current_nl_sys->computeDamping(soln, update);
8362
8363 // restore saved solution
8364 _current_nl_sys->setSolution(*_saved_current_solution);
8365 }
8366
8367 return damping;
8368}
Real computeDamping(const NumericVector< Number > &solution, const NumericVector< Number > &update)
Compute damping.
void setSolution(const NumericVector< Number > &soln)
Set the solution to a given vector.
virtual const NumericVector< Number > *const & currentSolution() const override final
The solution vector that is currently being operated on.
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real

Referenced by FEProblemBase::computePostCheck().

◆ computeIndicators()

void FEProblemBase::computeIndicators ( )
virtualinherited

Reimplemented in DumpObjectsProblem.

Definition at line 4986 of file FEProblemBase.C.

4987{
4988 // Initialize indicator aux variable fields
4990 {
4991 TIME_SECTION("computeIndicators", 1, "Computing Indicators");
4992
4993 // Internal side indicators may lead to creating a much larger sparsity pattern than dictated by
4994 // the actual finite element scheme (e.g. CFEM)
4995 const auto old_do_derivatives = ADReal::do_derivatives;
4996 ADReal::do_derivatives = false;
4997
4998 std::vector<std::string> fields;
4999
5000 // Indicator Fields
5001 const auto & indicators = _indicators.getActiveObjects();
5002 for (const auto & indicator : indicators)
5003 fields.push_back(indicator->name());
5004
5005 // InternalSideIndicator Fields
5006 const auto & internal_indicators = _internal_side_indicators.getActiveObjects();
5007 for (const auto & internal_indicator : internal_indicators)
5008 fields.push_back(internal_indicator->name());
5009
5010 _aux->zeroVariables(fields);
5011
5012 // compute Indicators
5013 ComputeIndicatorThread cit(*this);
5015 _aux->solution().close();
5016 _aux->update();
5017
5018 ComputeIndicatorThread finalize_cit(*this, true);
5020 _aux->solution().close();
5021 _aux->update();
5022
5023 ADReal::do_derivatives = old_do_derivatives;
5024 }
5025}
const libMesh::ConstElemRange & getCurrentAlgebraicElementRange()
These are the element and nodes that contribute to the jacobian and residual for this local processor...
bool hasActiveObjects(THREAD_ID tid=0) const
void parallel_reduce(const Range &range, Body &body, unsigned int n_threads=libMesh::n_threads())
PetscErrorCode PetscInt const PetscInt fields[]

Referenced by FEProblemBase::computeIndicatorsAndMarkers(), TransientBase::endStep(), Eigenvalue::execute(), SteadyBase::execute(), MFEMSteady::execute(), and FEProblemBase::initialAdaptMesh().

◆ computeIndicatorsAndMarkers()

void FEProblemBase::computeIndicatorsAndMarkers ( )
virtualinherited

Definition at line 4979 of file FEProblemBase.C.

4980{
4983}
virtual void computeIndicators()

◆ computeJacobian()

void FEProblemBase::computeJacobian ( const NumericVector< libMesh::Number > &  soln,
libMesh::SparseMatrix< libMesh::Number > &  jacobian,
const unsigned int  nl_sys_num 
)
virtualinherited

Form a Jacobian matrix with the default tag (system).

Reimplemented in EigenProblem.

Definition at line 7883 of file FEProblemBase.C.

7886{
7887 setCurrentNonlinearSystem(nl_sys_num);
7888
7889 _fe_matrix_tags.clear();
7890
7891 auto & tags = getMatrixTags();
7892 for (auto & tag : tags)
7893 _fe_matrix_tags.insert(tag.second);
7894
7896}
std::set< TagID > _fe_matrix_tags
virtual void computeJacobianInternal(const NumericVector< libMesh::Number > &soln, libMesh::SparseMatrix< libMesh::Number > &jacobian, const std::set< TagID > &tags)
Form a Jacobian matrix for multiple tags.
virtual std::map< TagName, TagID > & getMatrixTags()
Return all matrix tags in the system, where a tag is represented by a map from name to ID.
Definition SubProblem.h:253

Referenced by FEProblemBase::computeJacobianSys().

◆ computeJacobianBlock()

void FEProblemBase::computeJacobianBlock ( libMesh::SparseMatrix< libMesh::Number > &  jacobian,
libMesh::System precond_system,
unsigned int  ivar,
unsigned int  jvar 
)
virtualinherited

Really not a good idea to use this.

It computes just one block of the Jacobian into a smaller matrix. Calling this in a loop is EXTREMELY ineffecient! Try to use computeJacobianBlocks() instead!

Parameters
jacobianThe matrix you want to fill
precond_systemThe libMesh::system of the preconditioning system
ivarthe block-row of the Jacobian
jvarthe block-column of the Jacobian

Definition at line 8047 of file FEProblemBase.C.

8051{
8052 JacobianBlock jac_block(precond_system, jacobian, ivar, jvar);
8053 std::vector<JacobianBlock *> blocks = {&jac_block};
8054 mooseAssert(_current_nl_sys, "This should be non-null");
8056}
virtual void computeJacobianBlocks(std::vector< JacobianBlock * > &blocks, const unsigned int nl_sys_num)
Computes several Jacobian blocks simultaneously, summing their contributions into smaller preconditio...
Helper class for holding the preconditioning blocks to fill.

◆ computeJacobianBlocks()

void FEProblemBase::computeJacobianBlocks ( std::vector< JacobianBlock * > &  blocks,
const unsigned int  nl_sys_num 
)
virtualinherited

Computes several Jacobian blocks simultaneously, summing their contributions into smaller preconditioning matrices.

Used by Physics-based preconditioning

Parameters
blocksThe blocks to fill in (JacobianBlock is defined in ComputeJacobianBlocksThread)

Reimplemented in EigenProblem.

Definition at line 8027 of file FEProblemBase.C.

8029{
8030 TIME_SECTION("computeTransientImplicitJacobian", 2);
8031 setCurrentNonlinearSystem(nl_sys_num);
8032
8034 {
8036 _displaced_problem->updateMesh();
8037 }
8038
8040
8044}
const ExecFlagType EXEC_PRE_DISPLACE
Definition Moose.C:54
void computeJacobianBlocks(std::vector< JacobianBlock * > &blocks)
Computes several Jacobian blocks simultaneously, summing their contributions into smaller preconditio...
bool _currently_computing_jacobian
Flag to determine whether the problem is currently computing Jacobian.

Referenced by FEProblemBase::computeJacobianBlock(), and PhysicsBasedPreconditioner::setup().

◆ computeJacobianInternal()

void FEProblemBase::computeJacobianInternal ( const NumericVector< libMesh::Number > &  soln,
libMesh::SparseMatrix< libMesh::Number > &  jacobian,
const std::set< TagID > &  tags 
)
virtualinherited

Form a Jacobian matrix for multiple tags.

It should not be called directly by users.

Definition at line 7899 of file FEProblemBase.C.

7902{
7903 TIME_SECTION("computeJacobianInternal", 1);
7904
7906
7908
7909 computeJacobianTags(tags);
7910
7912}
virtual void computeJacobianTags(const std::set< TagID > &tags)
Form multiple matrices, and each is associated with a tag.
TagID systemMatrixTag() const override
Return the Matrix Tag ID for System.
virtual void disassociateMatrixFromTag(libMesh::SparseMatrix< Number > &matrix, TagID tag)
Disassociate a matrix from a tag.
virtual void associateMatrixToTag(libMesh::SparseMatrix< Number > &matrix, TagID tag)
Associate a matrix to a tag.

Referenced by FEProblemBase::computeJacobian().

◆ computeJacobianSys()

void FEProblemBase::computeJacobianSys ( libMesh::NonlinearImplicitSystem sys,
const NumericVector< libMesh::Number > &  soln,
libMesh::SparseMatrix< libMesh::Number > &  jacobian 
)
virtualinherited

Form a Jacobian matrix.

It is called by Libmesh.

Definition at line 7859 of file FEProblemBase.C.

7862{
7863 // Reset before Jacobian setup, calculation & execution
7865 computeJacobian(soln, jacobian, sys.number());
7866}
virtual void computeJacobian(const NumericVector< libMesh::Number > &soln, libMesh::SparseMatrix< libMesh::Number > &jacobian, const unsigned int nl_sys_num)
Form a Jacobian matrix with the default tag (system).
void resetIterationOccurences()
Reset the number of solution invalid occurrences back to zero.

Referenced by Moose::compute_jacobian(), and NonlinearSystem::computeScalingJacobian().

◆ computeJacobianTag()

void FEProblemBase::computeJacobianTag ( const NumericVector< libMesh::Number > &  soln,
libMesh::SparseMatrix< libMesh::Number > &  jacobian,
TagID  tag 
)
virtualinherited

Form a Jacobian matrix for a given tag.

Definition at line 7869 of file FEProblemBase.C.

7872{
7874
7875 _current_nl_sys->associateMatrixToTag(jacobian, tag);
7876
7877 computeJacobianTags({tag});
7878
7880}

Referenced by ActuallyExplicitEuler::solve(), and ExplicitSSPRungeKutta::solveStage().

◆ computeJacobianTags()

void FEProblemBase::computeJacobianTags ( const std::set< TagID > &  tags)
virtualinherited

Form multiple matrices, and each is associated with a tag.

Definition at line 7915 of file FEProblemBase.C.

7916{
7917 try
7918 {
7919 try
7920 {
7922 {
7923 TIME_SECTION("computeJacobianTags", 5, "Computing Jacobian");
7924
7925 for (auto tag : tags)
7926 if (_current_nl_sys->hasMatrix(tag))
7927 {
7928 auto & matrix = _current_nl_sys->getMatrix(tag);
7931 else
7932 matrix.zero();
7934 // PETSc algorithms require diagonal allocations regardless of whether there is
7935 // non-zero diagonal dependence. With global AD indexing we only add non-zero
7936 // dependence, so PETSc will scream at us unless we artificially add the diagonals.
7937 for (auto index : make_range(matrix.row_start(), matrix.row_stop()))
7938 matrix.add(index, index, 0);
7939 }
7940
7941 _aux->zeroVariablesForJacobian();
7942
7943 unsigned int n_threads = libMesh::n_threads();
7944
7945 // Random interface objects
7946 for (const auto & it : _random_data_objects)
7947 it.second->updateSeeds(EXEC_NONLINEAR);
7948
7952 _displaced_problem->setCurrentlyComputingJacobian(true);
7953
7956
7957 for (unsigned int tid = 0; tid < n_threads; tid++)
7958 reinitScalars(tid);
7959
7961
7962 _aux->jacobianSetup();
7963
7965 {
7967 _displaced_problem->updateMesh();
7968 // A standalone scaling Jacobian is assembled without a preceding residual evaluation, so
7969 // the displaced mortar segment mesh can be stale relative to the just-updated displaced
7970 // parent mesh. Every other Jacobian evaluation is preceded by a residual (or combined
7971 // residual/Jacobian) evaluation that already rebuilt the mortar mesh, so doing it here in
7972 // the general case would be duplicative.
7973 if (_current_nl_sys->computingScalingJacobian() && _mortar_data->hasDisplacedObjects())
7975 }
7976
7977 for (unsigned int tid = 0; tid < n_threads; tid++)
7978 {
7981 }
7982
7983#ifdef MOOSE_KOKKOS_ENABLED
7985#endif
7986
7988
7990
7992
7994
7996
7998
7999 // For explicit Euler calculations for example we often compute the Jacobian one time and
8000 // then re-use it over and over. If we're performing automatic scaling, we don't want to
8001 // use that kernel, diagonal-block only Jacobian for our actual matrix when performing
8002 // solves!
8004 _has_jacobian = true;
8005 }
8006 }
8007 catch (...)
8008 {
8009 handleException("computeJacobianTags");
8010 }
8011 }
8012 catch (const MooseException &)
8013 {
8014 // The buck stops here, we have already handled the exception by
8015 // calling the system's stopSolve() method, it is now up to PETSc to return a
8016 // "diverged" reason during the next solve.
8017 }
8018 catch (...)
8019 {
8020 mooseError("Unexpected exception type");
8021 }
8022
8023 resetState();
8024}
virtual void computeUserObjects(const ExecFlagType &type, const Moose::AuxGroup &group)
Call compute methods on UserObjects.
virtual void resetState()
Reset state of this object in preparation for the next evaluation.
virtual void reinitScalars(const THREAD_ID tid, bool reinit_for_derivative_reordering=false) override
fills the VariableValue arrays for scalar variables from the solution vector
void execTransfers(ExecFlagType type)
Execute the Transfers associated with the ExecFlagType.
std::map< std::string, std::unique_ptr< RandomData > > _random_data_objects
A map of objects that consume random numbers.
void executeControls(const ExecFlagType &exec_type)
Performs setup and execute calls for Control objects.
const bool _restore_original_nonzero_pattern
Whether we should restore the original nonzero pattern for every Jacobian evaluation.
bool _const_jacobian
true if the Jacobian is constant
MooseObjectWarehouse< Moose::FunctionBase > _kokkos_functions
virtual void updateMortarMesh()
bool haveADObjects() const
Method for reading wehther we have any ad objects.
Definition SubProblem.h:779
bool _has_jacobian
Indicates if the Jacobian was computed.
virtual void jacobianSetup(THREAD_ID tid=0) const override
virtual void jacobianSetup(THREAD_ID tid=0) const
void computeJacobianTags(const std::set< TagID > &tags)
Computes multiple (tag associated) Jacobian matricese.
virtual libMesh::System & system() override
Get the reference to the libMesh system.
void jacobianSetup()
Calls the jacobianSetup function for each of the output objects.
bool _safe_access_tagged_matrices
Is it safe to retrieve data from tagged matrices.
virtual libMesh::SparseMatrix< Number > & getMatrix(TagID tag)
Get a raw SparseMatrix.
bool computingScalingJacobian() const
Whether we are computing an initial Jacobian for automatic variable scaling.
virtual void restore_original_nonzero_pattern()
bool has_static_condensation() const
@ POST_AUX
Definition MooseTypes.h:761
@ PRE_AUX
Definition MooseTypes.h:760

Referenced by EigenProblem::computeJacobianAB(), FEProblemBase::computeJacobianInternal(), FEProblemBase::computeJacobianTag(), EigenProblem::computeJacobianTag(), and EigenProblem::computeMatricesTags().

◆ computeKokkosUserObjectsInternal()

void FEProblemBase::computeKokkosUserObjectsInternal ( const ExecFlagType type,
TheWarehouse::Query query 
)
protectedinherited

◆ computeLinearSystemSys()

void FEProblemBase::computeLinearSystemSys ( libMesh::LinearImplicitSystem sys,
libMesh::SparseMatrix< libMesh::Number > &  system_matrix,
NumericVector< libMesh::Number > &  rhs,
const bool  compute_gradients = true 
)
virtualinherited

Assemble both the right hand side and the system matrix of a given linear system.

Parameters
sysThe linear system which should be assembled
system_matrixThe sparse matrix which should hold the system matrix
rhsThe vector which should hold the right hand side
compute_gradientsA flag to disable the computation of new gradients during the assembly, can be used to lag gradients

Definition at line 8103 of file FEProblemBase.C.

8107{
8108 TIME_SECTION("computeLinearSystemSys", 5);
8109
8111
8114
8115 // We are using the residual tag system for right hand sides so we fetch everything
8116 const auto & vector_tags = getVectorTags(Moose::VECTOR_TAG_RESIDUAL);
8117
8118 // We filter out tags which do not have associated vectors in the current
8119 // system. This is essential to be able to use system-dependent vector tags.
8122
8126 compute_gradients);
8127
8132 // We reset the tags to the default containers for further operations
8137}
std::set< TagID > _linear_vector_tags
Temporary storage for filtered vector tags for linear systems.
void setCurrentLinearSystem(unsigned int sys_num)
Set the current linear system pointer.
void computeLinearSystemTags(const NumericVector< libMesh::Number > &soln, const std::set< TagID > &vector_tags, const std::set< TagID > &matrix_tags, const bool compute_gradients=true)
Assemble the current linear system given a set of vector and matrix tags.
unsigned int linearSysNum(const LinearSystemName &linear_sys_name) const override
std::set< TagID > _linear_matrix_tags
Temporary storage for filtered matrix tags for linear systems.
TagID rightHandSideVectorTag() const
virtual TagID systemMatrixTag() const override
Return the Matrix Tag ID for System.
NumericVector< Number > & getRightHandSideVector()
Fetching the right hand side vector from the libmesh system.
SparseMatrix< Number > & getSystemMatrix()
Fetching the system matrix from the libmesh system.
std::vector< VectorTag > getVectorTags(const std::set< TagID > &tag_ids) const
Definition SubProblem.C:173
static void selectVectorTagsFromSystem(const SystemBase &system, const std::vector< VectorTag > &input_vector_tags, std::set< TagID > &selected_tags)
Select the vector tags which belong to a specific system.
Definition SubProblem.C:290
static void selectMatrixTagsFromSystem(const SystemBase &system, const std::map< TagName, TagID > &input_matrix_tags, std::set< TagID > &selected_tags)
Select the matrix tags which belong to a specific system.
Definition SubProblem.C:301
virtual void associateVectorToTag(NumericVector< Number > &vec, TagID tag)
Associate a vector for a given tag.
Definition SystemBase.C:980
virtual void disassociateVectorFromTag(NumericVector< Number > &vec, TagID tag)
Disassociate a given vector from a given tag.
Definition SystemBase.C:992
const std::string & name() const
@ VECTOR_TAG_RESIDUAL

Referenced by Moose::compute_linear_system(), and FEProblemBase::computeResidualL2Norm().

◆ computeLinearSystemTags()

void FEProblemBase::computeLinearSystemTags ( const NumericVector< libMesh::Number > &  soln,
const std::set< TagID > &  vector_tags,
const std::set< TagID > &  matrix_tags,
const bool  compute_gradients = true 
)
inherited

Assemble the current linear system given a set of vector and matrix tags.

Parameters
solnThe solution which should be used for the system assembly
vector_tagsThe vector tags for the right hand side
matrix_tagsThe matrix tags for the matrix
compute_gradientsA flag to disable the computation of new gradients during the assembly, can be used to lag gradients

Definition at line 8140 of file FEProblemBase.C.

8144{
8145 TIME_SECTION("computeLinearSystemTags", 5, "Computing Linear System");
8146
8148
8149 for (auto tag : matrix_tags)
8150 {
8151 auto & matrix = _current_linear_sys->getMatrix(tag);
8152 matrix.zero();
8153 }
8154
8155 unsigned int n_threads = libMesh::n_threads();
8156
8158
8159 // Random interface objects
8160 for (const auto & it : _random_data_objects)
8161 it.second->updateSeeds(EXEC_NONLINEAR);
8162
8165
8167
8168 _aux->jacobianSetup();
8169
8170 for (THREAD_ID tid = 0; tid < n_threads; tid++)
8171 {
8173 }
8174
8175#ifdef MOOSE_KOKKOS_ENABLED
8177#endif
8178
8179 try
8180 {
8182 }
8183 catch (MooseException & e)
8184 {
8185 _console << "\nA MooseException was raised during Auxiliary variable computation.\n"
8186 << "The next solve will fail, the timestep will be reduced, and we will try again.\n"
8187 << std::endl;
8188
8189 // We know the next solve is going to fail, so there's no point in
8190 // computing anything else after this. Plus, using incompletely
8191 // computed AuxVariables in subsequent calculations could lead to
8192 // other errors or unhandled exceptions being thrown.
8193 return;
8194 }
8195
8198
8200
8201 _current_linear_sys->computeLinearSystemTags(vector_tags, matrix_tags, compute_gradients);
8202
8203 // Reset execution flag as after this point we are no longer on LINEAR
8205
8206 // These are the relevant parts of resetState()
8209}
const ExecFlagType EXEC_NONE
Definition Moose.C:29
void computeLinearSystemTags(const std::set< TagID > &vector_tags, const std::set< TagID > &matrix_tags, const bool compute_gradients=true)
Compute the right hand side and the system matrix of the system for given tags.
bool _safe_access_tagged_vectors
Is it safe to retrieve data from tagged vectors.
virtual void zero()=0

Referenced by FEProblemBase::computeLinearSystemSys().

◆ computeMarkers()

void FEProblemBase::computeMarkers ( )
virtualinherited

Reimplemented in DumpObjectsProblem.

Definition at line 5028 of file FEProblemBase.C.

5029{
5031 {
5032 TIME_SECTION("computeMarkers", 1, "Computing Markers");
5033
5034 std::vector<std::string> fields;
5035
5036 // Marker Fields
5037 const auto & markers = _markers.getActiveObjects();
5038 for (const auto & marker : markers)
5039 fields.push_back(marker->name());
5040
5041 _aux->zeroVariables(fields);
5042
5044
5045 for (THREAD_ID tid = 0; tid < libMesh::n_threads(); ++tid)
5046 {
5047 const auto & markers = _markers.getActiveObjects(tid);
5048 for (const auto & marker : markers)
5049 marker->markerSetup();
5050 }
5051
5052 ComputeMarkerThread cmt(*this);
5054
5055 _aux->solution().close();
5056 _aux->update();
5057 }
5058}
void updateErrorVectors()
Update the ErrorVectors that have been requested through calls to getErrorVector().
Definition Adaptivity.C:399

Referenced by FEProblemBase::adaptMesh(), FEProblemBase::computeIndicatorsAndMarkers(), TransientBase::endStep(), Eigenvalue::execute(), SteadyBase::execute(), MFEMSteady::execute(), and FEProblemBase::initialAdaptMesh().

◆ computeMultiAppsDT()

Real FEProblemBase::computeMultiAppsDT ( ExecFlagType  type)
inherited

Find the smallest timestep over all MultiApps.

Definition at line 6135 of file FEProblemBase.C.

6136{
6137 const auto & multi_apps = _transient_multi_apps[type].getActiveObjects();
6138
6139 Real smallest_dt = std::numeric_limits<Real>::max();
6140
6141 for (const auto & multi_app : multi_apps)
6142 smallest_dt = std::min(smallest_dt, multi_app->computeDT());
6143
6144 return smallest_dt;
6145}
auto min(const L &left, const R &right)

Referenced by TransientBase::constrainDTFromMultiApp().

◆ computeNearNullSpace()

void FEProblemBase::computeNearNullSpace ( libMesh::NonlinearImplicitSystem sys,
std::vector< NumericVector< libMesh::Number > * > &  sp 
)
virtualinherited

Definition at line 8212 of file FEProblemBase.C.

8214{
8215 mooseAssert(_current_nl_sys && (sys.number() == _current_nl_sys->number()),
8216 "I expect these system numbers to be the same");
8217
8218 sp.clear();
8219 for (unsigned int i = 0; i < subspaceDim("NearNullSpace"); ++i)
8220 {
8221 std::stringstream postfix;
8222 postfix << "_" << i;
8223 std::string modename = "NearNullSpace" + postfix.str();
8224 sp.push_back(&_current_nl_sys->getVector(modename));
8225 }
8226}
unsigned int subspaceDim(const std::string &prefix) const
Dimension of the subspace spanned by vectors with a given prefix.

Referenced by Moose::compute_nearnullspace().

◆ computeNullSpace()

void FEProblemBase::computeNullSpace ( libMesh::NonlinearImplicitSystem sys,
std::vector< NumericVector< libMesh::Number > * > &  sp 
)
virtualinherited

Definition at line 8229 of file FEProblemBase.C.

8231{
8232 mooseAssert(_current_nl_sys && (sys.number() == _current_nl_sys->number()),
8233 "I expect these system numbers to be the same");
8234 sp.clear();
8235 for (unsigned int i = 0; i < subspaceDim("NullSpace"); ++i)
8236 {
8237 std::stringstream postfix;
8238 postfix << "_" << i;
8239 sp.push_back(&_current_nl_sys->getVector("NullSpace" + postfix.str()));
8240 }
8241}

Referenced by Moose::compute_nullspace().

◆ computePostCheck()

void FEProblemBase::computePostCheck ( libMesh::NonlinearImplicitSystem sys,
const NumericVector< libMesh::Number > &  old_soln,
NumericVector< libMesh::Number > &  search_direction,
NumericVector< libMesh::Number > &  new_soln,
bool &  changed_search_direction,
bool &  changed_new_soln 
)
virtualinherited

Definition at line 8259 of file FEProblemBase.C.

8265{
8266 mooseAssert(_current_nl_sys && (sys.number() == _current_nl_sys->number()),
8267 "I expect these system numbers to be the same");
8268
8269 // This function replaces the old PetscSupport::dampedCheck() function.
8270 //
8271 // 1.) Recreate code in PetscSupport::dampedCheck() for constructing
8272 // ghosted "soln" and "update" vectors.
8273 // 2.) Call FEProblemBase::computeDamping() with these ghost vectors.
8274 // 3.) Recreate the code in PetscSupport::dampedCheck() to actually update
8275 // the solution vector based on the damping, and set the "changed" flags
8276 // appropriately.
8277
8278 TIME_SECTION("computePostCheck", 2, "Computing Post Check");
8279
8281
8282 // MOOSE's FEProblemBase doesn't update the solution during the
8283 // postcheck, but FEProblemBase-derived classes might.
8285 {
8286 // We need ghosted versions of new_soln and search_direction (the
8287 // ones we get from libmesh/PETSc are PARALLEL vectors. To make
8288 // our lives simpler, we use the same ghosting pattern as the
8289 // system's current_local_solution to create new ghosted vectors.
8290
8291 // Construct zeroed-out clones with the same ghosted dofs as the
8292 // System's current_local_solution.
8293 std::unique_ptr<NumericVector<Number>> ghosted_solution =
8294 sys.current_local_solution->zero_clone(),
8295 ghosted_search_direction =
8296 sys.current_local_solution->zero_clone();
8297
8298 // Copy values from input vectors into clones with ghosted values.
8299 *ghosted_solution = new_soln;
8300 *ghosted_search_direction = search_direction;
8301
8302 if (_has_dampers)
8303 {
8304 // Compute the damping coefficient using the ghosted vectors
8305 Real damping = computeDamping(*ghosted_solution, *ghosted_search_direction);
8306
8307 // If some non-trivial damping was computed, update the new_soln
8308 // vector accordingly.
8309 if (damping < 1.0)
8310 {
8311 new_soln = old_soln;
8312 new_soln.add(-damping, search_direction);
8313 changed_new_soln = true;
8314 }
8315 }
8316
8318 {
8319 // Update the ghosted copy of the new solution, if necessary.
8320 if (changed_new_soln)
8321 *ghosted_solution = new_soln;
8322
8323 bool updated_solution = updateSolution(new_soln, *ghosted_solution);
8324 if (updated_solution)
8325 changed_new_soln = true;
8326 }
8327 }
8328
8330 {
8332 _aux->copyCurrentIntoPreviousNL();
8333 }
8334
8335 // MOOSE doesn't change the search_direction
8336 changed_search_direction = false;
8337
8339}
virtual bool shouldUpdateSolution()
Check to see whether the problem should update the solution.
virtual Real computeDamping(const NumericVector< libMesh::Number > &soln, const NumericVector< libMesh::Number > &update)
virtual bool updateSolution(NumericVector< libMesh::Number > &vec_solution, NumericVector< libMesh::Number > &ghosted_solution)
Update the solution.
virtual void setPreviousNewtonSolution(const NumericVector< Number > &soln)
virtual bool vectorTagExists(const TagID tag_id) const
Check to see if a particular Tag exists.
Definition SubProblem.h:201
virtual void add(const numeric_index_type i, const T value)=0
std::unique_ptr< NumericVector< Number > > current_local_solution
const TagName PREVIOUS_NL_SOLUTION_TAG
Definition MooseTypes.C:28

Referenced by Moose::compute_postcheck().

◆ computeResidual() [1/2]

virtual void FEProblemBase::computeResidual ( const NumericVector< libMesh::Number > &  soln,
NumericVector< libMesh::Number > &  residual,
const unsigned int  nl_sys_num 
)
virtualinherited

Form a residual with default tags (nontime, time, residual).

◆ computeResidual() [2/2]

void FEProblemBase::computeResidual ( libMesh::NonlinearImplicitSystem sys,
const NumericVector< libMesh::Number > &  soln,
NumericVector< libMesh::Number > &  residual 
)
inherited

This function is called by Libmesh to form a residual.

This is deprecated. We should remove this as soon as RattleSnake is fixed.

Referenced by FEProblemBase::computeResidualL2Norm(), FEProblemBase::computeResidualSys(), ActuallyExplicitEuler::solve(), and ExplicitSSPRungeKutta::solveStage().

◆ computeResidualAndJacobian()

void FEProblemBase::computeResidualAndJacobian ( const NumericVector< libMesh::Number > &  soln,
NumericVector< libMesh::Number > &  residual,
libMesh::SparseMatrix< libMesh::Number > &  jacobian 
)
inherited

Form a residual and Jacobian with default tags.

Definition at line 7493 of file FEProblemBase.C.

7496{
7497 try
7498 {
7499 try
7500 {
7501 // vector tags
7503 const auto & residual_vector_tags = getVectorTags(Moose::VECTOR_TAG_RESIDUAL);
7504
7505 mooseAssert(_fe_vector_tags.empty(),
7506 "This should be empty indicating a clean starting state");
7507 // We filter out tags which do not have associated vectors in the current nonlinear
7508 // system. This is essential to be able to use system-dependent residual tags.
7510
7512
7513 // matrix tags
7514 {
7515 _fe_matrix_tags.clear();
7516
7517 auto & tags = getMatrixTags();
7518 for (auto & tag : tags)
7519 _fe_matrix_tags.insert(tag.second);
7520 }
7521
7523
7526
7527 for (const auto tag : _fe_matrix_tags)
7528 if (_current_nl_sys->hasMatrix(tag))
7529 {
7530 auto & matrix = _current_nl_sys->getMatrix(tag);
7531 matrix.zero();
7533 // PETSc algorithms require diagonal allocations regardless of whether there is non-zero
7534 // diagonal dependence. With global AD indexing we only add non-zero
7535 // dependence, so PETSc will scream at us unless we artificially add the diagonals.
7536 for (auto index : make_range(matrix.row_start(), matrix.row_stop()))
7537 matrix.add(index, index, 0);
7538 }
7539
7540 _aux->zeroVariablesForResidual();
7541
7542 unsigned int n_threads = libMesh::n_threads();
7543
7545
7546 // Random interface objects
7547 for (const auto & it : _random_data_objects)
7548 it.second->updateSeeds(EXEC_LINEAR);
7549
7554 {
7555 _displaced_problem->setCurrentlyComputingResidual(true);
7556 _displaced_problem->setCurrentlyComputingJacobian(true);
7557 _displaced_problem->setCurrentlyComputingResidualAndJacobian(true);
7558 }
7559
7561
7563
7564 for (unsigned int tid = 0; tid < n_threads; tid++)
7565 reinitScalars(tid);
7566
7568
7569 _aux->residualSetup();
7570
7572 {
7574 _displaced_problem->updateMesh();
7575 if (_mortar_data->hasDisplacedObjects())
7577 }
7578
7579 for (THREAD_ID tid = 0; tid < n_threads; tid++)
7580 {
7583 }
7584
7585#ifdef MOOSE_KOKKOS_ENABLED
7587#endif
7588
7590
7592
7594
7596
7599
7601
7604 }
7605 catch (...)
7606 {
7607 handleException("computeResidualAndJacobian");
7608 }
7609 }
7610 catch (const MooseException &)
7611 {
7612 // The buck stops here, we have already handled the exception by
7613 // calling the system's stopSolve() method, it is now up to PETSc to return a
7614 // "diverged" reason during the next solve.
7615 }
7616 catch (...)
7617 {
7618 mooseError("Unexpected exception type");
7619 }
7620
7621 resetState();
7622 _fe_vector_tags.clear();
7623 _fe_matrix_tags.clear();
7624}
void setCurrentResidualVectorTags(const std::set< TagID > &vector_tags)
Set the current residual vector tag data structure based on the passed in tag IDs.
void setCurrentlyComputingResidual(bool currently_computing_residual) final
Set whether or not the problem is in the process of computing the residual.
virtual void residualSetup(THREAD_ID tid=0) const
void computeResidualAndJacobianTags(const std::set< TagID > &vector_tags, const std::set< TagID > &matrix_tags)
Form possibly multiple tag-associated vectors and matrices.
TagID residualVectorTag() const override
void residualSetup()
Calls the residualSetup function for each of the output objects.
void setCurrentlyComputingJacobian(const bool currently_computing_jacobian)
Set whether or not the problem is in the process of computing the Jacobian.
Definition SubProblem.h:697
void setCurrentlyComputingResidualAndJacobian(bool currently_computing_residual_and_jacobian)
Set whether or not the problem is in the process of computing the Jacobian.

Referenced by ComputeResidualAndJacobian::residual_and_jacobian().

◆ computeResidualInternal()

void FEProblemBase::computeResidualInternal ( const NumericVector< libMesh::Number > &  soln,
NumericVector< libMesh::Number > &  residual,
const std::set< TagID > &  tags 
)
virtualinherited

Form a residual vector for a set of tags.

It should not be called directly by users.

Definition at line 7656 of file FEProblemBase.C.

7659{
7660 parallel_object_only();
7661
7662 TIME_SECTION("computeResidualInternal", 1);
7663
7664 try
7665 {
7667
7669
7670 computeResidualTags(tags);
7671
7673 }
7674 catch (MooseException & e)
7675 {
7676 // If a MooseException propagates all the way to here, it means
7677 // that it was thrown from a MOOSE system where we do not
7678 // (currently) properly support the throwing of exceptions, and
7679 // therefore we have no choice but to error out. It may be
7680 // *possible* to handle exceptions from other systems, but in the
7681 // meantime, we don't want to silently swallow any unhandled
7682 // exceptions here.
7683 mooseError("An unhandled MooseException was raised during residual computation. Please "
7684 "contact the MOOSE team for assistance.");
7685 }
7686}
virtual void computeResidualTags(const std::set< TagID > &tags)
Form multiple residual vectors and each is associated with one tag.

◆ computeResidualL2Norm() [1/3]

Real FEProblemBase::computeResidualL2Norm ( )
virtualinherited

Computes the residual using whatever is sitting in the current solution vector then returns the L2 norm.

Returns
The L2 norm of the residual

Reimplemented in EigenProblem.

Definition at line 7426 of file FEProblemBase.C.

7427{
7428 TIME_SECTION("computeResidualL2Norm", 2, "Computing L2 Norm of Residual");
7429
7430 // We use sum the squared norms of the individual systems and then take the square root of it
7431 Real l2_norm = 0.0;
7432 for (auto sys : _nl)
7433 {
7434 const auto norm = computeResidualL2Norm(*sys);
7435 l2_norm += norm * norm;
7436 }
7437
7438 for (auto sys : _linear_systems)
7439 {
7440 const auto norm = computeResidualL2Norm(*sys);
7441 l2_norm += norm * norm;
7442 }
7443
7444 return std::sqrt(l2_norm);
7445}
std::vector< std::shared_ptr< LinearSystem > > _linear_systems
The vector of linear systems.
virtual Real computeResidualL2Norm()
Computes the residual using whatever is sitting in the current solution vector then returns the L2 no...
auto norm(const T &a)

Referenced by FEProblemBase::computeResidualL2Norm().

◆ computeResidualL2Norm() [2/3]

Real FEProblemBase::computeResidualL2Norm ( LinearSystem sys)
inherited

Computes the residual of a linear system using whatever is sitting in the current solution vector then returns the L2 norm.

Definition at line 7408 of file FEProblemBase.C.

7409{
7410 _current_linear_sys = &sys;
7411
7412 // We assemble the current system to check the current residual
7416 /*compute fresh gradients*/ true);
7417
7418 // Unfortunate, but we have to allocate a new vector for the residual
7419 auto residual = sys.linearImplicitSystem().rhs->clone();
7420 residual->scale(-1.0);
7421 residual->add_vector(*sys.currentSolution(), *sys.linearImplicitSystem().matrix);
7422 return residual->l2_norm();
7423}
virtual void computeLinearSystemSys(libMesh::LinearImplicitSystem &sys, libMesh::SparseMatrix< libMesh::Number > &system_matrix, NumericVector< libMesh::Number > &rhs, const bool compute_gradients=true)
Assemble both the right hand side and the system matrix of a given linear system.
libMesh::LinearImplicitSystem & linearImplicitSystem()
Return a reference to the stored linear implicit system.
NumericVector< Number > * rhs
SparseMatrix< Number > * matrix
virtual std::unique_ptr< NumericVector< T > > clone() const=0

◆ computeResidualL2Norm() [3/3]

Real FEProblemBase::computeResidualL2Norm ( NonlinearSystemBase sys)
inherited

Computes the residual of a nonlinear system using whatever is sitting in the current solution vector then returns the L2 norm.

Definition at line 7400 of file FEProblemBase.C.

7401{
7402 _current_nl_sys = &sys;
7403 computeResidual(*sys.currentSolution(), sys.RHS(), sys.number());
7404 return sys.RHS().l2_norm();
7405}
void computeResidual(libMesh::NonlinearImplicitSystem &sys, const NumericVector< libMesh::Number > &soln, NumericVector< libMesh::Number > &residual)
This function is called by Libmesh to form a residual.
virtual NumericVector< Number > & RHS()=0
virtual Real l2_norm() const=0

Referenced by DefaultMultiAppFixedPointConvergence::checkConvergence(), Residual::getValue(), DefaultMultiAppFixedPointConvergence::initialize(), and DefaultMultiAppFixedPointConvergence::preExecute().

◆ computeResidualSys()

void FEProblemBase::computeResidualSys ( libMesh::NonlinearImplicitSystem sys,
const NumericVector< libMesh::Number > &  soln,
NumericVector< libMesh::Number > &  residual 
)
virtualinherited

This function is called by Libmesh to form a residual.

Definition at line 7448 of file FEProblemBase.C.

7451{
7452 parallel_object_only();
7453
7454 TIME_SECTION("computeResidualSys", 5);
7455 // Reset before residual setup, calculation & execution
7457
7458 computeResidual(soln, residual, sys.number());
7459}

Referenced by NonlinearSystem::computeScalingResidual(), ComputeFDResidualFunctor::residual(), ComputeResidualFunctor::residual(), and NonlinearSystem::solve().

◆ computeResidualTag()

void FEProblemBase::computeResidualTag ( const NumericVector< libMesh::Number > &  soln,
NumericVector< libMesh::Number > &  residual,
TagID  tag 
)
virtualinherited

Form a residual vector for a given tag.

Definition at line 7627 of file FEProblemBase.C.

7630{
7631 try
7632 {
7634
7635 _current_nl_sys->associateVectorToTag(residual, tag);
7636
7637 computeResidualTags({tag});
7638
7640 }
7641 catch (MooseException & e)
7642 {
7643 // If a MooseException propagates all the way to here, it means
7644 // that it was thrown from a MOOSE system where we do not
7645 // (currently) properly support the throwing of exceptions, and
7646 // therefore we have no choice but to error out. It may be
7647 // *possible* to handle exceptions from other systems, but in the
7648 // meantime, we don't want to silently swallow any unhandled
7649 // exceptions here.
7650 mooseError("An unhandled MooseException was raised during residual computation. Please "
7651 "contact the MOOSE team for assistance.");
7652 }
7653}

◆ computeResidualTags()

void FEProblemBase::computeResidualTags ( const std::set< TagID > &  tags)
virtualinherited

Form multiple residual vectors and each is associated with one tag.

Definition at line 7775 of file FEProblemBase.C.

7776{
7777 parallel_object_only();
7778
7779 try
7780 {
7781 try
7782 {
7783 TIME_SECTION("computeResidualTags", 5, "Computing Residual");
7784
7785 ADReal::do_derivatives = false;
7786
7788
7789 _aux->zeroVariablesForResidual();
7790
7791 unsigned int n_threads = libMesh::n_threads();
7792
7794
7795 // Random interface objects
7796 for (const auto & it : _random_data_objects)
7797 it.second->updateSeeds(EXEC_LINEAR);
7798
7800
7802
7803 for (unsigned int tid = 0; tid < n_threads; tid++)
7804 reinitScalars(tid);
7805
7807
7808 _aux->residualSetup();
7809
7811 {
7813 _displaced_problem->updateMesh();
7814 if (_mortar_data->hasDisplacedObjects())
7816 }
7817
7818 for (THREAD_ID tid = 0; tid < n_threads; tid++)
7819 {
7822 }
7823
7824#ifdef MOOSE_KOKKOS_ENABLED
7826#endif
7827
7829
7831
7833
7835
7838 }
7839 catch (...)
7840 {
7841 handleException("computeResidualTags");
7842 }
7843 }
7844 catch (const MooseException &)
7845 {
7846 // The buck stops here, we have already handled the exception by
7847 // calling the system's stopSolve() method, it is now up to PETSc to return a
7848 // "diverged" reason during the next solve.
7849 }
7850 catch (...)
7851 {
7852 mooseError("Unexpected exception type");
7853 }
7854
7855 resetState();
7856}
void computeResidualTags(const std::set< TagID > &tags)
Form multiple tag-associated residual vectors for all the given tags.

Referenced by EigenProblem::computeResidualAB(), FEProblemBase::computeResidualInternal(), FEProblemBase::computeResidualTag(), EigenProblem::computeResidualTag(), and FEProblemBase::computeResidualType().

◆ computeResidualType()

void FEProblemBase::computeResidualType ( const NumericVector< libMesh::Number > &  soln,
NumericVector< libMesh::Number > &  residual,
TagID  tag 
)
virtualinherited

Form a residual vector for a given tag and "residual" tag.

Definition at line 7689 of file FEProblemBase.C.

7692{
7693 TIME_SECTION("computeResidualType", 5);
7694
7695 try
7696 {
7698
7700
7702
7704 }
7705 catch (MooseException & e)
7706 {
7707 // If a MooseException propagates all the way to here, it means
7708 // that it was thrown from a MOOSE system where we do not
7709 // (currently) properly support the throwing of exceptions, and
7710 // therefore we have no choice but to error out. It may be
7711 // *possible* to handle exceptions from other systems, but in the
7712 // meantime, we don't want to silently swallow any unhandled
7713 // exceptions here.
7714 mooseError("An unhandled MooseException was raised during residual computation. Please "
7715 "contact the MOOSE team for assistance.");
7716 }
7717}

◆ computeSystems()

void FEProblemBase::computeSystems ( const ExecFlagType type)
protectedinherited

Do generic system computations.

Definition at line 10020 of file FEProblemBase.C.

10021{
10022 // When performing an adjoint solve in the optimization module, the current solver system is the
10023 // adjoint. However, the adjoint solve requires having accurate time derivative calculations for
10024 // the forward system. The cleanest way to handle such uses is just to compute the time
10025 // derivatives for all solver systems instead of trying to guess which ones we need and don't need
10026 for (auto & solver_sys : _solver_systems)
10027 solver_sys->compute(type);
10028
10029 _aux->compute(type);
10030}

Referenced by FEProblemBase::computeBounds(), FEProblemBase::computeJacobianBlocks(), EigenProblem::computeJacobianBlocks(), FEProblemBase::computeJacobianTags(), FEProblemBase::computeLinearSystemTags(), FEProblemBase::computeResidualAndJacobian(), FEProblemBase::computeResidualTags(), and FEProblemBase::execute().

◆ computeTransposeNullSpace()

void FEProblemBase::computeTransposeNullSpace ( libMesh::NonlinearImplicitSystem sys,
std::vector< NumericVector< libMesh::Number > * > &  sp 
)
virtualinherited

Definition at line 8244 of file FEProblemBase.C.

8246{
8247 mooseAssert(_current_nl_sys && (sys.number() == _current_nl_sys->number()),
8248 "I expect these system numbers to be the same");
8249 sp.clear();
8250 for (unsigned int i = 0; i < subspaceDim("TransposeNullSpace"); ++i)
8251 {
8252 std::stringstream postfix;
8253 postfix << "_" << i;
8254 sp.push_back(&_current_nl_sys->getVector("TransposeNullSpace" + postfix.str()));
8255 }
8256}

Referenced by Moose::compute_transpose_nullspace().

◆ computeUserObjectByName()

void FEProblemBase::computeUserObjectByName ( const ExecFlagType type,
const Moose::AuxGroup group,
const std::string &  name 
)
virtualinherited

Compute an user object with the given name.

Definition at line 5313 of file FEProblemBase.C.

5316{
5317 const auto old_exec_flag = _current_execute_on_flag;
5319
5320 std::set<int> execution_groups;
5321
5322#ifdef MOOSE_KOKKOS_ENABLED
5323 TheWarehouse::Query kokkos_query =
5324 getUOQuery("KokkosUserObject", type, group).condition<AttribName>(name);
5325 getUOExecutionGroups(kokkos_query, execution_groups);
5326#endif
5327
5329 getUOExecutionGroups(query, execution_groups);
5330
5331 for (const auto execution_group : execution_groups)
5332 {
5333#ifdef MOOSE_KOKKOS_ENABLED
5335 type, kokkos_query.clone().condition<AttribExecutionOrderGroup>(execution_group));
5336#endif
5337
5339 query.clone().condition<AttribExecutionOrderGroup>(execution_group));
5340 }
5341
5342 _current_execute_on_flag = old_exec_flag;
5343}
TheWarehouse::Query getUOQuery(const std::string &system, const ExecFlagType &type, const Moose::AuxGroup &group) const
void computeUserObjectsInternal(const ExecFlagType &type, TheWarehouse::Query &query)
void computeKokkosUserObjectsInternal(const ExecFlagType &type, TheWarehouse::Query &query)
void getUOExecutionGroups(TheWarehouse::Query &query, std::set< int > &execution_groups) const
QueryCache is a convenient way to construct and pass around (possible partially constructed) warehous...
QueryCache clone() const
clone creates and returns an independent copy of the query in its current state.
query_obj query

Referenced by MultiAppConservativeTransfer::adjustTransferredSolution(), MultiAppConservativeTransfer::adjustTransferredSolutionNearestPoint(), MultiAppGeneralFieldFunctorTransfer::execute(), MultiAppGeneralFieldUserObjectTransfer::execute(), MultiAppPostprocessorToAuxScalarTransfer::execute(), MultiAppPostprocessorTransfer::execute(), MultiAppUserObjectTransfer::execute(), MultiAppVectorPostprocessorTransfer::executeToMultiapp(), and MultiAppConservativeTransfer::postExecute().

◆ computeUserObjects()

void FEProblemBase::computeUserObjects ( const ExecFlagType type,
const Moose::AuxGroup group 
)
virtualinherited

Call compute methods on UserObjects.

Definition at line 5346 of file FEProblemBase.C.

5347{
5348 std::set<int> execution_groups;
5349
5350#ifdef MOOSE_KOKKOS_ENABLED
5351 TheWarehouse::Query kokkos_query = getUOQuery("KokkosUserObject", type, group);
5352 getUOExecutionGroups(kokkos_query, execution_groups);
5353#endif
5354
5355 TheWarehouse::Query query = getUOQuery("UserObject", type, group);
5356 getUOExecutionGroups(query, execution_groups);
5357
5358 for (const auto execution_group : execution_groups)
5359 {
5360#ifdef MOOSE_KOKKOS_ENABLED
5362 type, kokkos_query.clone().condition<AttribExecutionOrderGroup>(execution_group));
5363#endif
5364
5366 query.clone().condition<AttribExecutionOrderGroup>(execution_group));
5367 }
5368}

Referenced by FEProblemBase::computeJacobianTags(), FEProblemBase::computeLinearSystemTags(), FEProblemBase::computeResidualAndJacobian(), FEProblemBase::computeResidualTags(), and FEProblemBase::execute().

◆ computeUserObjectsInternal()

void FEProblemBase::computeUserObjectsInternal ( const ExecFlagType type,
TheWarehouse::Query query 
)
protectedinherited

Definition at line 5371 of file FEProblemBase.C.

5372{
5373 try
5374 {
5375 TIME_SECTION("computeUserObjects", 1, "Computing User Objects");
5376
5377 std::vector<GeneralUserObject *> genobjs;
5378 query.clone().condition<AttribInterfaces>(Interfaces::GeneralUserObject).queryInto(genobjs);
5379
5380 std::vector<UserObject *> userobjs;
5381 query.clone()
5385 .queryInto(userobjs);
5386
5387 std::vector<UserObject *> tgobjs;
5388 query.clone()
5390 .queryInto(tgobjs);
5391
5392 std::vector<UserObject *> nodal;
5393 query.clone().condition<AttribInterfaces>(Interfaces::NodalUserObject).queryInto(nodal);
5394
5395 std::vector<MortarUserObject *> mortar;
5396 query.clone().condition<AttribInterfaces>(Interfaces::MortarUserObject).queryInto(mortar);
5397
5398 if (userobjs.empty() && genobjs.empty() && tgobjs.empty() && nodal.empty() && mortar.empty())
5399 return;
5400
5401 // Start the timer here since we have at least one active user object
5402 std::string compute_uo_tag = "computeUserObjects(" + Moose::stringify(type) + ")";
5403
5404 // Perform Residual/Jacobian setups
5405 if (type == EXEC_LINEAR)
5406 {
5407 for (auto obj : userobjs)
5408 obj->residualSetup();
5409 for (auto obj : nodal)
5410 obj->residualSetup();
5411 for (auto obj : mortar)
5412 obj->residualSetup();
5413 for (auto obj : tgobjs)
5414 obj->residualSetup();
5415 for (auto obj : genobjs)
5416 obj->residualSetup();
5417 }
5418 else if (type == EXEC_NONLINEAR)
5419 {
5420 for (auto obj : userobjs)
5421 obj->jacobianSetup();
5422 for (auto obj : nodal)
5423 obj->jacobianSetup();
5424 for (auto obj : mortar)
5425 obj->jacobianSetup();
5426 for (auto obj : tgobjs)
5427 obj->jacobianSetup();
5428 for (auto obj : genobjs)
5429 obj->jacobianSetup();
5430 }
5431
5432 for (auto obj : userobjs)
5433 obj->initialize();
5434
5435 // Execute Side/InternalSide/Interface/Elemental/DomainUserObjects
5436 if (!userobjs.empty())
5437 {
5438 // non-nodal user objects have to be run separately before the nodal user objects run
5439 // because some nodal user objects (NodalNormal related) depend on elemental user objects
5440 // :-(
5441 ComputeUserObjectsThread cppt(*this, query);
5443
5444 // There is one instance in rattlesnake where an elemental user object's finalize depends
5445 // on a side user object having been finalized first :-(
5452 }
5453
5454 // if any elemental user object may have written to variables we need to close the aux solution
5455 for (const auto & uo : userobjs)
5456 if (auto euo = dynamic_cast<const ElementUserObject *>(uo);
5457 euo && euo->hasWritableCoupledVariables())
5458 {
5459 _aux->solution().close();
5460 _aux->system().update();
5461 break;
5462 }
5463
5464 // Execute NodalUserObjects
5465 // BISON has an axial reloc elemental user object that has a finalize func that depends on a
5466 // nodal user object's prev value. So we can't initialize this until after elemental objects
5467 // have been finalized :-(
5468 for (auto obj : nodal)
5469 obj->initialize();
5470 if (query.clone().condition<AttribInterfaces>(Interfaces::NodalUserObject).count() > 0)
5471 {
5472 ComputeNodalUserObjectsThread cnppt(*this, query);
5475 }
5476
5477 // if any nodal user object may have written to variables we need to close the aux solution
5478 for (const auto & uo : nodal)
5479 if (auto nuo = dynamic_cast<const NodalUserObject *>(uo);
5480 nuo && nuo->hasWritableCoupledVariables())
5481 {
5482 _aux->solution().close();
5483 _aux->system().update();
5484 break;
5485 }
5486
5487 // Execute MortarUserObjects
5488 {
5489 for (auto obj : mortar)
5490 obj->initialize();
5491 if (!mortar.empty())
5492 {
5493 auto create_and_run_mortar_functors = [this, type, &mortar](const bool displaced)
5494 {
5495 // go over mortar interfaces and construct functors
5496 const auto & mortar_interfaces = getMortarInterfaces(displaced);
5497 for (const auto & [primary_secondary_boundary_pair, interface_config] : mortar_interfaces)
5498 {
5499 auto mortar_uos_to_execute =
5500 getMortarUserObjects(primary_secondary_boundary_pair.first,
5501 primary_secondary_boundary_pair.second,
5502 displaced,
5503 mortar);
5504
5505 auto * const subproblem = displaced
5506 ? static_cast<SubProblem *>(_displaced_problem.get())
5507 : static_cast<SubProblem *>(this);
5508 MortarUserObjectThread muot(mortar_uos_to_execute,
5509 *interface_config.amg,
5510 *subproblem,
5511 *this,
5512 displaced,
5513 subproblem->assembly(0, 0));
5514
5515 muot();
5516 }
5517 };
5518
5519 create_and_run_mortar_functors(false);
5521 create_and_run_mortar_functors(true);
5522 }
5523 for (auto obj : mortar)
5524 obj->finalize();
5525 }
5526
5527 // Execute threaded general user objects
5528 for (auto obj : tgobjs)
5529 obj->initialize();
5530 std::vector<GeneralUserObject *> tguos_zero;
5531 query.clone()
5532 .condition<AttribThread>(0)
5533 .condition<AttribInterfaces>(Interfaces::ThreadedGeneralUserObject)
5534 .queryInto(tguos_zero);
5535 for (auto obj : tguos_zero)
5536 {
5537 std::vector<GeneralUserObject *> tguos;
5538 auto q = query.clone()
5539 .condition<AttribName>(obj->name())
5540 .condition<AttribInterfaces>(Interfaces::ThreadedGeneralUserObject);
5541 q.queryInto(tguos);
5542
5544
5545 // Force one thread per ThreadedGeneralUserObject via grainsize
5547 tguos.end(),
5548 /*grainsize=*/1),
5549 ctguot);
5550 joinAndFinalize(q);
5551 }
5552
5553 // Execute general user objects
5555 }
5556 catch (...)
5557 {
5558 handleException("computeUserObjectsInternal");
5559 }
5560}
@ InternalSideUserObject
@ ThreadedGeneralUserObject
@ InterfaceUserObject
StoredRange< std::vector< GeneralUserObject * >::iterator, GeneralUserObject * > GeneralUserObjectRange
Thread to compute threaded general user objects.
Class for threaded computation of UserObjects.
bool hasWritableCoupledVariables() const
Checks whether the object has any writable coupled variables.
Definition Coupleable.h:142
void jacobianSetup() override
void joinAndFinalize(TheWarehouse::Query query, bool isgen=false)
void residualSetup() override
const std::unordered_map< std::pair< BoundaryID, BoundaryID >, MortarInterfaceConfig > & getMortarInterfaces(bool on_displaced) const
std::vector< MortarUserObject * > getMortarUserObjects(BoundaryID primary_boundary_id, BoundaryID secondary_boundary_id, bool displaced, const std::vector< MortarUserObject * > &mortar_uo_superset)
Helper for getting mortar objects corresponding to primary boundary ID, secondary boundary ID,...
const libMesh::ConstNodeRange & getCurrentAlgebraicNodeRange()
A user object that runs over all the nodes and does an aggregation step to compute a single value.
void initialize(EquationSystems &es, const std::string &system_name)

Referenced by FEProblemBase::computeUserObjectByName(), and FEProblemBase::computeUserObjects().

◆ computingNonlinearResid() [1/3]

bool SubProblem::computingNonlinearResid ( ) const
inlineinherited

Returns true if the problem is in the process of computing the nonlinear residual.

Definition at line 715 of file SubProblem.h.

bool _computing_nonlinear_residual
Whether the non-linear residual is being evaluated.

◆ computingNonlinearResid() [2/3]

void FEProblemBase::computingNonlinearResid ( bool  computing_nonlinear_residual)
finalvirtualinherited

Set whether or not the problem is in the process of computing the nonlinear residual.

Reimplemented from SubProblem.

Definition at line 9655 of file FEProblemBase.C.

9656{
9657 parallel_object_only();
9658
9660 _displaced_problem->computingNonlinearResid(computing_nonlinear_residual);
9661 _computing_nonlinear_residual = computing_nonlinear_residual;
9662}

Referenced by NonlinearSystemBase::computeResidualInternal(), NonlinearSystemBase::computeScaling(), ComputeFDResidualFunctor::residual(), ComputeResidualFunctor::residual(), and ComputeResidualAndJacobian::residual_and_jacobian().

◆ computingNonlinearResid() [3/3]

virtual void SubProblem::computingNonlinearResid ( const bool  computing_nonlinear_residual)
inlinevirtualinherited

Set whether or not the problem is in the process of computing the nonlinear residual.

Reimplemented from SubProblem.

Definition at line 720 of file SubProblem.h.

721 {
722 _computing_nonlinear_residual = computing_nonlinear_residual;
723 }

◆ computingPreSMOResidual()

bool FEProblemBase::computingPreSMOResidual ( const unsigned int  nl_sys_num) const
overridevirtualinherited

Returns true if the problem is in the process of computing it's initial residual.

Returns
Whether or not the problem is currently computing the initial residual.

Implements SubProblem.

Definition at line 7162 of file FEProblemBase.C.

7163{
7164 return _nl[nl_sys_num]->computingPreSMOResidual();
7165}

Referenced by DisplacedProblem::computingPreSMOResidual().

◆ computingScalingJacobian() [1/2]

bool FEProblemBase::computingScalingJacobian ( ) const
inlinefinaloverridevirtualinherited

Getter for whether we're computing the scaling jacobian.

Implements SubProblem.

Definition at line 2841 of file FEProblemBase.h.

bool _computing_scaling_jacobian
Flag used to indicate whether we are computing the scaling Jacobian.

◆ computingScalingJacobian() [2/2]

void FEProblemBase::computingScalingJacobian ( bool  computing_scaling_jacobian)
inlineinherited

◆ computingScalingResidual() [1/2]

bool FEProblemBase::computingScalingResidual ( ) const
inlinefinaloverridevirtualinherited
Returns
whether we are currently computing a residual for automatic scaling purposes

Implements SubProblem.

Definition at line 2854 of file FEProblemBase.h.

bool _computing_scaling_residual
Flag used to indicate whether we are computing the scaling Residual.

◆ computingScalingResidual() [2/2]

void FEProblemBase::computingScalingResidual ( bool  computing_scaling_residual)
inlineinherited

Setter for whether we're computing the scaling residual.

Definition at line 2846 of file FEProblemBase.h.

2847 {
2848 _computing_scaling_residual = computing_scaling_residual;
2849 }

Referenced by NonlinearSystemBase::computeResidualInternal(), NonlinearSystemBase::computeResidualTags(), NonlinearSystemBase::computeScaling(), and DisplacedProblem::computingScalingResidual().

◆ connectControllableParams()

void MooseBase::connectControllableParams ( const std::string &  parameter,
const std::string &  object_type,
const std::string &  object_name,
const std::string &  object_parameter 
) const
inherited

Connect controllable parameter of this action with the controllable parameters of the objects added by this action.

Parameters
parameterName of the controllable parameter of this action
object_typeType of the object added by this action.
object_nameName of the object added by this action.
object_parameterName of the parameter of the object.

Definition at line 77 of file MooseBase.C.

81{
82 auto & factory = _app.getFactory();
83 auto & ip_warehouse = _app.getInputParameterWarehouse();
84
85 MooseObjectParameterName primary_name(uniqueName(), parameter);
86 const auto base_type = factory.getValidParams(object_type).getBase();
87 MooseObjectParameterName secondary_name(base_type, object_name, object_parameter);
88 ip_warehouse.addControllableParameterConnection(primary_name, secondary_name);
89
90 const auto & tags = _pars.get<std::vector<std::string>>("control_tags");
91 for (const auto & tag : tags)
92 {
93 if (!tag.empty())
94 {
95 // Only adds the parameter with the different control tags if the derived class
96 // properly registers the parameter to its own syntax
97 MooseObjectParameterName tagged_name(tag, name(), parameter);
98 ip_warehouse.addControllableParameterConnection(
99 tagged_name, secondary_name, /*error_on_empty=*/false);
100 }
101 }
102}
Factory & getFactory()
Retrieve a writable reference to the Factory associated with this App.
Definition MooseApp.h:407
MooseObjectName uniqueName() const
Definition MooseBase.C:69

◆ console()

const ConsoleStream & Problem::console ( ) const
inlineinherited

Return console handle.

Definition at line 48 of file Problem.h.

48{ return _console; }

Referenced by Moose::SlepcSupport::mooseSlepcEPSMonitor(), ComputeLinearFVElementalThread::printBlockExecutionInformation(), ComputeLinearFVFaceThread::printBlockExecutionInformation(), ComputeDiracThread::printBlockExecutionInformation(), ComputeIndicatorThread::printBlockExecutionInformation(), ComputeMarkerThread::printBlockExecutionInformation(), ComputeUserObjectsThread::printBlockExecutionInformation(), NonlinearThread::printBlockExecutionInformation(), NonlinearThread::printBoundaryExecutionInformation(), ComputeFVInitialConditionThread::printGeneralExecutionInformation(), ComputeInitialConditionThread::printGeneralExecutionInformation(), ComputeLinearFVElementalThread::printGeneralExecutionInformation(), ComputeLinearFVFaceThread::printGeneralExecutionInformation(), ComputeDiracThread::printGeneralExecutionInformation(), ComputeElemDampingThread::printGeneralExecutionInformation(), ComputeIndicatorThread::printGeneralExecutionInformation(), ComputeMarkerThread::printGeneralExecutionInformation(), ComputeNodalDampingThread::printGeneralExecutionInformation(), ComputeNodalKernelBCJacobiansThread::printGeneralExecutionInformation(), ComputeNodalKernelBcsThread::printGeneralExecutionInformation(), ComputeNodalKernelJacobiansThread::printGeneralExecutionInformation(), ComputeNodalKernelsThread::printGeneralExecutionInformation(), ComputeNodalUserObjectsThread::printGeneralExecutionInformation(), ComputeUserObjectsThread::printGeneralExecutionInformation(), NonlinearThread::printGeneralExecutionInformation(), and ComputeThreadedGeneralUserObjectsThread::printGeneralExecutionInformation().

◆ constJacobian()

bool FEProblemBase::constJacobian ( ) const
inherited

Returns _const_jacobian (whether a MOOSE object has specified that the Jacobian is the same as the previous time it was computed)

Definition at line 9504 of file FEProblemBase.C.

9505{
9506 return _const_jacobian;
9507}

Referenced by Moose::SlepcSupport::moosePetscSNESFormMatricesTags(), Moose::SlepcSupport::moosePetscSNESFormMatrixTag(), and DisplacedProblem::prepare().

◆ converged()

virtual bool SubProblem::converged ( const unsigned int  sys_num)
inlinevirtualinherited

Eventually we want to convert this virtual over to taking a solver system number argument.

We will have to first convert apps to use solverSystemConverged, and then once that is done, we can change this signature. Then we can go through the apps again and convert back to this changed API

Definition at line 113 of file SubProblem.h.

113{ return solverSystemConverged(sys_num); }
virtual bool solverSystemConverged(const unsigned int sys_num)
Definition SubProblem.h:100

Referenced by EigenExecutionerBase::inversePowerIteration(), EigenExecutionerBase::nonlinearSolve(), FEProblemSolve::solve(), AStableDirk4::solve(), ExplicitRK2::solve(), ExplicitTVDRK2::solve(), ImplicitMidpoint::solve(), LStableDirk2::solve(), LStableDirk3::solve(), LStableDirk4::solve(), DisplacedProblem::solverSystemConverged(), SubProblem::solverSystemConverged(), and AB2PredictorCorrector::step().

◆ coordTransform()

MooseAppCoordTransform & FEProblemBase::coordTransform ( )
inherited
Returns
the coordinate transformation object that describes how to transform this problem's coordinate system into the canonical/reference coordinate system

Definition at line 9891 of file FEProblemBase.C.

9892{
9893 return mesh().coordTransform();
9894}

Referenced by MultiApp::preTransfer().

◆ copySolutionsBackwards()

void FEProblemBase::copySolutionsBackwards ( )
virtualinherited

Definition at line 7168 of file FEProblemBase.C.

7169{
7170 TIME_SECTION("copySolutionsBackwards", 3, "Copying Solutions Backward");
7171
7172 for (auto & sys : _solver_systems)
7174 _aux->copySolutionsBackwards();
7175}
virtual void copySolutionsBackwards()

◆ coupling()

Moose::CouplingType FEProblemBase::coupling ( ) const
inlineinherited

Definition at line 196 of file FEProblemBase.h.

196{ return _coupling; }
Moose::CouplingType _coupling
Type of variable coupling.

Referenced by DiffusionLHDGAssemblyHelper::checkCoupling(), and NonlinearSystemBase::computeJacobianInternal().

◆ couplingEntries()

std::vector< std::pair< MooseVariableFieldBase *, MooseVariableFieldBase * > > & FEProblemBase::couplingEntries ( const THREAD_ID  tid,
const unsigned int  nl_sys_num 
)
inherited

◆ couplingMatrix()

const libMesh::CouplingMatrix * FEProblemBase::couplingMatrix ( const unsigned int  nl_sys_num) const
inlineoverridevirtualinherited

The coupling matrix defining what blocks exist in the preconditioning matrix.

Implements SubProblem.

Definition at line 3856 of file FEProblemBase.h.

3857{
3858 return _cm[i].get();
3859}

Referenced by DiffusionLHDGAssemblyHelper::checkCoupling(), DisplacedProblem::couplingMatrix(), and DisplacedProblem::init().

◆ createMortarInterface()

void FEProblemBase::createMortarInterface ( const std::pair< BoundaryID, BoundaryID > &  primary_secondary_boundary_pair,
const std::pair< SubdomainID, SubdomainID > &  primary_secondary_subdomain_pair,
bool  on_displaced,
bool  periodic,
const bool  debug,
const bool  correct_edge_dropping,
const Real  minimum_projection_angle,
const Mortar3DSubpatchPlane  mortar_3d_subpatch_plane,
const MooseEnum triangulation,
const bool  triangulate_triangles,
const Mortar3DQuadraturePointMapping  mortar_3d_qp_mapping = Mortar3DQuadraturePointMapping::NORMAL_PROJECTION 
)
inherited

Definition at line 8419 of file FEProblemBase.C.

8431{
8432 _has_mortar = true;
8433
8434 if (on_displaced)
8435 return _mortar_data->createMortarInterface(primary_secondary_boundary_pair,
8436 primary_secondary_subdomain_pair,
8438 on_displaced,
8439 periodic,
8440 debug,
8441 correct_edge_dropping,
8442 minimum_projection_angle,
8443 mortar_3d_subpatch_plane,
8444 triangulation,
8445 triangulate_triangles,
8446 mortar_3d_qp_mapping);
8447 else
8448 return _mortar_data->createMortarInterface(primary_secondary_boundary_pair,
8449 primary_secondary_subdomain_pair,
8450 *this,
8451 on_displaced,
8452 periodic,
8453 debug,
8454 correct_edge_dropping,
8455 minimum_projection_angle,
8456 mortar_3d_subpatch_plane,
8457 triangulation,
8458 triangulate_triangles,
8459 mortar_3d_qp_mapping);
8460}
bool _has_mortar
Whether the simulation requires mortar coupling.

◆ createQRules()

void FEProblemBase::createQRules ( libMesh::QuadratureType  type,
libMesh::Order  order,
libMesh::Order  volume_order = libMesh::INVALID_ORDER,
libMesh::Order  face_order = libMesh::INVALID_ORDER,
SubdomainID  block = Moose::ANY_BLOCK_ID,
bool  allow_negative_qweights = true 
)
virtualinherited

Definition at line 6588 of file FEProblemBase.C.

6594{
6595 if (order == INVALID_ORDER)
6596 {
6597 // automatically determine the integration order
6598 order = _solver_systems[0]->getMinQuadratureOrder();
6599 for (const auto i : make_range(std::size_t(1), _solver_systems.size()))
6600 if (order < _solver_systems[i]->getMinQuadratureOrder())
6601 order = _solver_systems[i]->getMinQuadratureOrder();
6602 if (order < _aux->getMinQuadratureOrder())
6603 order = _aux->getMinQuadratureOrder();
6604 }
6605
6606 if (volume_order == INVALID_ORDER)
6607 volume_order = order;
6608
6609 if (face_order == INVALID_ORDER)
6610 face_order = order;
6611
6612 for (unsigned int tid = 0; tid < libMesh::n_threads(); ++tid)
6613 for (const auto i : index_range(_solver_systems))
6614 _assembly[tid][i]->createQRules(
6615 type, order, volume_order, face_order, block, allow_negative_qweights);
6616
6618 _displaced_problem->createQRules(
6619 type, order, volume_order, face_order, block, allow_negative_qweights);
6620
6621 updateMaxQps();
6622}
virtual void createQRules(libMesh::QuadratureType type, libMesh::Order order, libMesh::Order volume_order=libMesh::INVALID_ORDER, libMesh::Order face_order=libMesh::INVALID_ORDER, SubdomainID block=Moose::ANY_BLOCK_ID, bool allow_negative_qweights=true)

Referenced by ActionUnitTest::buildMinimalObjects(), MooseObjectUnitTest::buildObjects(), and FEProblemBase::createQRules().

◆ createTagMatrices()

void FEProblemBase::createTagMatrices ( CreateTaggedMatrixKey  )
inherited

Definition at line 724 of file FEProblemBase.C.

725{
726 auto & matrices = getParam<std::vector<std::vector<TagName>>>("extra_tag_matrices");
727 for (const auto sys_num : index_range(matrices))
728 for (auto & matrix : matrices[sys_num])
729 {
730 auto tag = addMatrixTag(matrix);
731 _solver_systems[sys_num]->addMatrix(tag);
732 }
733
734 for (auto & sys : _solver_systems)
735 sys->sizeVariableMatrixData();
736 _aux->sizeVariableMatrixData();
737}
for(PetscInt i=0;i< nvars;++i)
virtual TagID addMatrixTag(TagName tag_name)
Create a Tag.
Definition SubProblem.C:312

◆ createTagSolutions()

void FEProblemBase::createTagSolutions ( )
protectedinherited

Create extra tagged solution vectors.

Definition at line 740 of file FEProblemBase.C.

741{
742 for (auto & vector : getParam<std::vector<TagName>>("extra_tag_solutions"))
743 {
744 auto tag = addVectorTag(vector, Moose::VECTOR_TAG_SOLUTION);
745 for (auto & sys : _solver_systems)
746 sys->addVector(tag, false, libMesh::GHOSTED);
747 _aux->addVector(tag, false, libMesh::GHOSTED);
748 }
749
751 {
752 // We'll populate the zeroth state of the nonlinear iterations with the current solution for
753 // ease of use in doing things like copying solutions backwards. We're just storing pointers in
754 // the solution states containers so populating the zeroth state does not cost us the memory of
755 // a new vector
757 }
758
760 for (auto & sys : _solver_systems)
761 sys->associateVectorToTag(*sys->system().current_local_solution.get(), tag);
762 _aux->associateVectorToTag(*_aux->system().current_local_solution.get(), tag);
763}
bool _previous_nl_solution_required
Indicates we need to save the previous NL iteration variable values.
void needSolutionState(unsigned int oldest_needed, Moose::SolutionIterationType iteration_type)
Declare that we need up to old (1) or older (2) solution states for a given type of iteration.
virtual TagID addVectorTag(const TagName &tag_name, const Moose::VectorTagType type=Moose::VECTOR_TAG_RESIDUAL)
Create a Tag.
Definition SubProblem.C:93
@ VECTOR_TAG_SOLUTION
const TagName SOLUTION_TAG
Definition MooseTypes.C:25

Referenced by DumpObjectsProblem::DumpObjectsProblem(), EigenProblem::EigenProblem(), ExternalProblem(), and FEProblem::FEProblem().

◆ createTagVectors()

void FEProblemBase::createTagVectors ( )
protectedinherited

Create extra tagged vectors and matrices.

Definition at line 702 of file FEProblemBase.C.

703{
704 // add vectors and their tags to system
705 auto & vectors = getParam<std::vector<std::vector<TagName>>>("extra_tag_vectors");
706 for (const auto sys_num : index_range(vectors))
707 for (auto & vector : vectors[sys_num])
708 {
709 auto tag = addVectorTag(vector);
710 _solver_systems[sys_num]->addVector(tag, false, libMesh::GHOSTED);
711 }
712
713 auto & not_zeroed_vectors = getParam<std::vector<std::vector<TagName>>>("not_zeroed_tag_vectors");
714 for (const auto sys_num : index_range(not_zeroed_vectors))
715 for (auto & vector : not_zeroed_vectors[sys_num])
716 {
717 auto tag = addVectorTag(vector);
718 _solver_systems[sys_num]->addVector(tag, false, GHOSTED);
720 }
721}
void addNotZeroedVectorTag(const TagID tag)
Adds a vector tag to the list of vectors that will not be zeroed when other tagged vectors are.
Definition SubProblem.C:150

Referenced by DumpObjectsProblem::DumpObjectsProblem(), EigenProblem::EigenProblem(), ExternalProblem(), and FEProblem::FEProblem().

◆ currentLinearSysNum()

unsigned int FEProblemBase::currentLinearSysNum ( ) const
overridevirtualinherited
Returns
the current linear system number

Implements SubProblem.

Definition at line 9908 of file FEProblemBase.C.

9909{
9910 // If we don't have linear systems this should be an invalid number
9911 unsigned int current_linear_sys_num = libMesh::invalid_uint;
9912 if (_linear_systems.size())
9913 current_linear_sys_num = currentLinearSystem().number();
9914
9915 return current_linear_sys_num;
9916}
LinearSystem & currentLinearSystem()
Get a non-constant reference to the current linear system.
const unsigned int invalid_uint

Referenced by DisplacedProblem::currentLinearSysNum().

◆ currentLinearSystem() [1/2]

LinearSystem & FEProblemBase::currentLinearSystem ( )
inlineinherited

Get a non-constant reference to the current linear system.

Definition at line 3824 of file FEProblemBase.h.

3825{
3826 mooseAssert(_current_linear_sys, "The linear system is not currently set");
3827 return *_current_linear_sys;
3828}

Referenced by FEProblemBase::currentLinearSysNum(), and Moose::PetscSupport::petscLinearConverged().

◆ currentLinearSystem() [2/2]

const LinearSystem & FEProblemBase::currentLinearSystem ( ) const
inlineinherited

Get a constant reference to the current linear system.

Definition at line 3831 of file FEProblemBase.h.

3832{
3833 mooseAssert(_current_linear_sys, "The linear system is not currently set");
3834 return *_current_linear_sys;
3835}

◆ currentlyComputingJacobian()

const bool & SubProblem::currentlyComputingJacobian ( ) const
inlineinherited

◆ currentlyComputingResidual()

const bool & SubProblem::currentlyComputingResidual ( ) const
inlineinherited

Returns true if the problem is in the process of computing the residual.

Definition at line 728 of file SubProblem.h.

bool _currently_computing_residual
Whether the residual is being evaluated.

◆ currentlyComputingResidualAndJacobian()

const bool & SubProblem::currentlyComputingResidualAndJacobian ( ) const
inlineinherited

Returns true if the problem is in the process of computing the residual and the Jacobian.

Definition at line 1505 of file SubProblem.h.

1506{
1508}
bool _currently_computing_residual_and_jacobian
Flag to determine whether the problem is currently computing the residual and Jacobian.

Referenced by SubProblem::reinitElemFaceRef(), and NEML2Utils::shouldCompute().

◆ currentNlSysNum()

unsigned int FEProblemBase::currentNlSysNum ( ) const
overridevirtualinherited
Returns
the current nonlinear system number

Implements SubProblem.

Definition at line 9897 of file FEProblemBase.C.

9898{
9899 // If we don't have nonlinear systems this should be an invalid number
9900 unsigned int current_nl_sys_num = libMesh::invalid_uint;
9901 if (_nl.size())
9902 current_nl_sys_num = currentNonlinearSystem().number();
9903
9904 return current_nl_sys_num;
9905}
NonlinearSystemBase & currentNonlinearSystem()

Referenced by DisplacedProblem::currentNlSysNum(), FEProblemBase::jacobianSetup(), and FEProblemBase::residualSetup().

◆ currentNonlinearSystem() [1/2]

NonlinearSystemBase & FEProblemBase::currentNonlinearSystem ( )
inlineinherited

◆ currentNonlinearSystem() [2/2]

const NonlinearSystemBase & FEProblemBase::currentNonlinearSystem ( ) const
inlineinherited

Definition at line 3801 of file FEProblemBase.h.

3802{
3803 mooseAssert(_current_nl_sys, "The nonlinear system is not currently set");
3804 return *_current_nl_sys;
3805}

◆ currentResidualVectorTags()

const std::vector< VectorTag > & FEProblemBase::currentResidualVectorTags ( ) const
inlineoverridevirtualinherited

◆ customSetup()

void FEProblemBase::customSetup ( const ExecFlagType exec_type)
overridevirtualinherited

Reimplemented from SubProblem.

Definition at line 5078 of file FEProblemBase.C.

5079{
5080 SubProblem::customSetup(exec_type);
5081
5082 if (_line_search)
5083 _line_search->customSetup(exec_type);
5084
5085 unsigned int n_threads = libMesh::n_threads();
5086 for (THREAD_ID tid = 0; tid < n_threads; tid++)
5087 {
5088 _all_materials.customSetup(exec_type, tid);
5089 _functions.customSetup(exec_type, tid);
5090 }
5091
5092#ifdef MOOSE_KOKKOS_ENABLED
5093 _kokkos_functions.customSetup(exec_type);
5094#endif
5095
5096 _aux->customSetup(exec_type);
5097 for (auto & nl : _nl)
5098 nl->customSetup(exec_type);
5099
5101 _displaced_problem->customSetup(exec_type);
5102
5103 for (THREAD_ID tid = 0; tid < n_threads; tid++)
5104 {
5105 _internal_side_indicators.customSetup(exec_type, tid);
5106 _indicators.customSetup(exec_type, tid);
5107 _markers.customSetup(exec_type, tid);
5108 }
5109
5110 std::vector<UserObject *> userobjs;
5111 theWarehouse().query().condition<AttribSystem>("UserObject").queryIntoUnsorted(userobjs);
5112 for (auto obj : userobjs)
5113 obj->customSetup(exec_type);
5114
5115#ifdef MOOSE_KOKKOS_ENABLED
5116 {
5117 std::vector<UserObjectBase *> userobjs;
5118 theWarehouse().query().condition<AttribSystem>("KokkosUserObject").queryIntoUnsorted(userobjs);
5119 for (auto obj : userobjs)
5120 obj->customSetup(exec_type);
5121 }
5122#endif
5123
5124 _app.getOutputWarehouse().customSetup(exec_type);
5125}
void customSetup(const ExecFlagType &exec_type) override
std::shared_ptr< LineSearch > _line_search
virtual void customSetup(const ExecFlagType &exec_type, THREAD_ID tid=0) const
void customSetup(const ExecFlagType &exec_type)
Calls the setup function for each of the output objects.
virtual void customSetup(const ExecFlagType &exec_type)

Referenced by FEProblemBase::execute().

◆ declareManagedRestartableDataWithContext()

template<typename T , typename... Args>
Restartable::ManagedValue< T > Restartable::declareManagedRestartableDataWithContext ( const std::string &  data_name,
void *  context,
Args &&...  args 
)
protectedinherited

Declares a piece of "managed" restartable data and initialize it.

Here, "managed" restartable data means that the caller can destruct this data upon destruction of the return value of this method. Therefore, this ManagedValue<T> wrapper should survive after the final calls to dataStore() for it. That is... at the very end.

This is needed for objects whose destruction ordering is important, and enables natural c++ destruction in reverse construction order of the object that declares it.

See delcareRestartableData and declareRestartableDataWithContext for more information.

Definition at line 283 of file Restartable.h.

286{
287 auto & data_ptr =
288 declareRestartableDataHelper<T>(data_name, context, std::forward<Args>(args)...);
289 return Restartable::ManagedValue<T>(data_ptr);
290}
Wrapper class for restartable data that is "managed.
Definition Restartable.h:43

◆ declareRecoverableData()

template<typename T , typename... Args>
T & Restartable::declareRecoverableData ( const std::string &  data_name,
Args &&...  args 
)
protectedinherited

Declare a piece of data as "recoverable" and initialize it.

This means that in the event of a restart this piece of data will be restored back to its previous value.

Note - this data will NOT be restored on Restart!

NOTE: This returns a reference! Make sure you store it in a reference!

Parameters
data_nameThe name of the data (usually just use the same name as the member variable)
argsArguments to forward to the constructor of the data

Definition at line 358 of file Restartable.h.

359{
360 const auto full_name = restartableName(data_name);
361
363
364 return declareRestartableDataWithContext<T>(data_name, nullptr, std::forward<Args>(args)...);
365}
std::string restartableName(const std::string &data_name) const
Gets the name of a piece of restartable data given a data name, adding the system name and object nam...
Definition Restartable.C:78
void registerRestartableNameWithFilterOnApp(const std::string &name, Moose::RESTARTABLE_FILTER filter)
Helper function for actually registering the restartable data.
Definition Restartable.C:71

◆ declareRestartableData()

template<typename T , typename... Args>
T & Restartable::declareRestartableData ( const std::string &  data_name,
Args &&...  args 
)
protectedinherited

Declare a piece of data as "restartable" and initialize it.

This means that in the event of a restart this piece of data will be restored back to its previous value.

NOTE: This returns a reference! Make sure you store it in a reference!

Parameters
data_nameThe name of the data (usually just use the same name as the member variable)
argsArguments to forward to the constructor of the data

Definition at line 276 of file Restartable.h.

277{
278 return declareRestartableDataWithContext<T>(data_name, nullptr, std::forward<Args>(args)...);
279}

◆ declareRestartableDataHelper()

template<typename T , typename... Args>
RestartableData< T > & Restartable::declareRestartableDataHelper ( const std::string &  data_name,
void *  context,
Args &&...  args 
) const
privateinherited

Helper function for declaring restartable data.

We use this function to reduce code duplication when returning const/nonconst references to the data.

Parameters
data_nameThe name of the data (usually just use the same name as the member variable)
contextContext pointer that will be passed to the load and store functions
argsArguments to forward to the constructor of the data

Definition at line 310 of file Restartable.h.

313{
314 const auto full_name = restartableName(data_name);
315
316 // Here we will create the RestartableData even though we may not use this instance.
317 // If it's already in use, the App will return a reference to the existing instance and we'll
318 // return that one instead. We might refactor this to have the app create the RestartableData
319 // at a later date.
320 auto data_ptr =
321 std::make_unique<RestartableData<T>>(full_name, context, std::forward<Args>(args)...);
322 auto & restartable_data_ref = static_cast<RestartableData<T> &>(
323 registerRestartableDataOnApp(std::move(data_ptr), _restartable_tid));
324
325 return restartable_data_ref;
326}
Concrete definition of a parameter value for a specified type.
const THREAD_ID _restartable_tid
The thread ID for this object.
RestartableDataValue & registerRestartableDataOnApp(std::unique_ptr< RestartableDataValue > data, THREAD_ID tid) const
Helper function for actually registering the restartable data.
Definition Restartable.C:63

◆ declareRestartableDataWithContext()

template<typename T , typename... Args>
T & Restartable::declareRestartableDataWithContext ( const std::string &  data_name,
void *  context,
Args &&...  args 
)
protectedinherited

Declare a piece of data as "restartable" and initialize it.

This means that in the event of a restart this piece of data will be restored back to its previous value.

NOTE: This returns a reference! Make sure you store it in a reference!

Parameters
data_nameThe name of the data (usually just use the same name as the member variable)
contextContext pointer that will be passed to the load and store functions
argsArguments to forward to the constructor of the data

Definition at line 301 of file Restartable.h.

304{
305 return declareRestartableDataHelper<T>(data_name, context, std::forward<Args>(args)...).set();
306}

◆ declareRestartableDataWithObjectName()

template<typename T , typename... Args>
T & Restartable::declareRestartableDataWithObjectName ( const std::string &  data_name,
const std::string &  object_name,
Args &&...  args 
)
protectedinherited

Declare a piece of data as "restartable".

This means that in the event of a restart this piece of data will be restored back to its previous value.

NOTE: This returns a reference! Make sure you store it in a reference!

Parameters
data_nameThe name of the data (usually just use the same name as the member variable)
object_nameA supplied name for the object that is declaring this data.
argsArguments to forward to the constructor of the data

Definition at line 330 of file Restartable.h.

333{
334 return declareRestartableDataWithObjectNameWithContext<T>(
335 data_name, object_name, nullptr, std::forward<Args>(args)...);
336}

◆ declareRestartableDataWithObjectNameWithContext()

template<typename T , typename... Args>
T & Restartable::declareRestartableDataWithObjectNameWithContext ( const std::string &  data_name,
const std::string &  object_name,
void *  context,
Args &&...  args 
)
protectedinherited

Declare a piece of data as "restartable".

This means that in the event of a restart this piece of data will be restored back to its previous value.

NOTE: This returns a reference! Make sure you store it in a reference!

Parameters
data_nameThe name of the data (usually just use the same name as the member variable)
object_nameA supplied name for the object that is declaring this data.
contextContext pointer that will be passed to the load and store functions
argsArguments to forward to the constructor of the data

Definition at line 340 of file Restartable.h.

344{
345 std::string old_name = _restartable_name;
346
347 _restartable_name = object_name;
348
349 T & value = declareRestartableDataWithContext<T>(data_name, context, std::forward<Args>(args)...);
350
351 _restartable_name = old_name;
352
353 return value;
354}
std::string _restartable_name
The name of the object.
Real value(unsigned n, unsigned alpha, unsigned beta, Real x)

◆ defaultGhosting()

bool SubProblem::defaultGhosting ( )
inlineinherited

Whether or not the user has requested default ghosting ot be on.

Definition at line 144 of file SubProblem.h.

144{ return _default_ghosting; }
bool _default_ghosting
Whether or not to use default libMesh coupling.

Referenced by DisplacedSystem::DisplacedSystem(), and NonlinearSystemBase::NonlinearSystemBase().

◆ determineSolverSystem()

std::pair< bool, unsigned int > FEProblemBase::determineSolverSystem ( const std::string &  var_name,
bool  error_if_not_found = false 
) const
overrideprivatevirtualinherited

Determine what solver system the provided variable name lies in.

Parameters
var_nameThe name of the variable we are doing solver system lookups for
error_if_not_foundWhether to error if the variable name isn't found in any of the solver systems
Returns
A pair in which the first member indicates whether the variable was found in the solver systems and the second member indicates the solver system number in which the variable was found (or an invalid unsigned integer if not found)

Implements SubProblem.

Definition at line 3068 of file FEProblemBase.C.

3070{
3071 auto map_it = _solver_var_to_sys_num.find(var_name);
3072 const bool var_in_sys = map_it != _solver_var_to_sys_num.end();
3073 if (var_in_sys)
3074 mooseAssert(_solver_systems[map_it->second]->hasVariable(var_name) ||
3075 _solver_systems[map_it->second]->hasScalarVariable(var_name),
3076 "If the variable is in our FEProblem solver system map, then it must be in the "
3077 "solver system we expect");
3078 else if (error_if_not_found)
3079 {
3080 if (_aux->hasVariable(var_name) || _aux->hasScalarVariable(var_name))
3081 mooseError("No solver variable named ",
3082 var_name,
3083 " found. Did you specify an auxiliary variable when you meant to specify a "
3084 "solver variable?");
3085 else
3086 mooseError("Unknown variable '",
3087 var_name,
3088 "'. It does not exist in the solver system(s) or auxiliary system");
3089 }
3090
3091 return std::make_pair(var_in_sys, var_in_sys ? map_it->second : libMesh::invalid_uint);
3092}

Referenced by FEProblemBase::addBoundaryCondition(), FEProblemBase::addConstraint(), FEProblemBase::addDamper(), FEProblemBase::addDGKernel(), FEProblemBase::addDiracKernel(), FEProblemBase::addHDGKernel(), FEProblemBase::addInterfaceKernel(), FEProblemBase::addKernel(), FEProblemBase::addNodalKernel(), FEProblemBase::addScalarKernel(), DisplacedProblem::determineSolverSystem(), and FEProblemBase::getSystem().

◆ diracKernelInfo()

DiracKernelInfo & SubProblem::diracKernelInfo ( )
virtualinherited

Definition at line 749 of file SubProblem.C.

750{
751 return _dirac_kernel_info;
752}

◆ doingPRefinement()

bool SubProblem::doingPRefinement ( ) const
inherited
Returns
whether we're doing p-refinement

Definition at line 1366 of file SubProblem.C.

1367{
1368 return mesh().doingPRefinement();
1369}
void doingPRefinement(bool doing_p_refinement)
Indicate whether the kind of adaptivity we're doing includes p-refinement.
Definition MooseMesh.h:1504

Referenced by FEProblemBase::meshChanged().

◆ dt()

virtual Real & FEProblemBase::dt ( ) const
inlinevirtualinherited

◆ dtOld()

virtual Real & FEProblemBase::dtOld ( ) const
inlinevirtualinherited

Definition at line 578 of file FEProblemBase.h.

578{ return _dt_old; }

Referenced by IterationAdaptiveDT::acceptStep().

◆ duplicateVariableCheck()

bool FEProblemBase::duplicateVariableCheck ( const std::string &  var_name,
const libMesh::FEType type,
bool  is_aux,
const std::set< SubdomainID > *const  active_subdomains 
)
protectedinherited

Helper to check for duplicate variable names across systems or within a single system.

Definition at line 2920 of file FEProblemBase.C.

2924{
2925 std::set<SubdomainID> subdomainIDs;
2926 if (active_subdomains->size() == 0)
2927 {
2928 const auto subdomains = _mesh.meshSubdomains();
2929 subdomainIDs.insert(subdomains.begin(), subdomains.end());
2930 }
2931 else
2932 subdomainIDs.insert(active_subdomains->begin(), active_subdomains->end());
2933
2934 for (auto & sys : _solver_systems)
2935 {
2936 SystemBase * curr_sys_ptr = sys.get();
2937 SystemBase * other_sys_ptr = _aux.get();
2938 std::string error_prefix = "";
2939 if (is_aux)
2940 {
2941 curr_sys_ptr = _aux.get();
2942 other_sys_ptr = sys.get();
2943 error_prefix = "aux";
2944 }
2945
2946 if (other_sys_ptr->hasVariable(var_name))
2947 mooseError("Cannot have an auxiliary variable and a solver variable with the same name: ",
2948 var_name);
2949
2950 if (curr_sys_ptr->hasVariable(var_name))
2951 {
2952 const Variable & var =
2953 curr_sys_ptr->system().variable(curr_sys_ptr->system().variable_number(var_name));
2954
2955 // variable type
2956 if (var.type() != type)
2957 {
2958 const auto stringifyType = [](FEType t)
2959 { return Moose::stringify(t.family) + " of order " + Moose::stringify(t.order); };
2960
2961 mooseError("Mismatching types are specified for ",
2962 error_prefix,
2963 "variable with name '",
2964 var_name,
2965 "': '",
2966 stringifyType(var.type()),
2967 "' and '",
2968 stringifyType(type),
2969 "'");
2970 }
2971
2972 // block-restriction
2973 if (!(active_subdomains->size() == 0 && var.active_subdomains().size() == 0))
2974 {
2975 const auto varActiveSubdomains = var.active_subdomains();
2976 std::set<SubdomainID> varSubdomainIDs;
2977 if (varActiveSubdomains.size() == 0)
2978 {
2979 const auto subdomains = _mesh.meshSubdomains();
2980 varSubdomainIDs.insert(subdomains.begin(), subdomains.end());
2981 }
2982 else
2983 varSubdomainIDs.insert(varActiveSubdomains.begin(), varActiveSubdomains.end());
2984
2985 // Is subdomainIDs a subset of varSubdomainIDs? With this we allow the case that the newly
2986 // requested block restriction is only a subset of the existing one.
2987 const auto isSubset = std::includes(varSubdomainIDs.begin(),
2988 varSubdomainIDs.end(),
2989 subdomainIDs.begin(),
2990 subdomainIDs.end());
2991
2992 if (!isSubset)
2993 {
2994 // helper function: make a string from a set of subdomain ids
2995 const auto stringifySubdomains = [this](std::set<SubdomainID> subdomainIDs)
2996 {
2997 std::stringstream s;
2998 for (auto const i : subdomainIDs)
2999 {
3000 // do we need to insert a comma?
3001 if (s.tellp() != 0)
3002 s << ", ";
3003
3004 // insert subdomain name and id -or- only the id (if no name is given)
3005 const auto subdomainName = _mesh.getSubdomainName(i);
3006 if (subdomainName.empty())
3007 s << i;
3008 else
3009 s << subdomainName << " (" << i << ")";
3010 }
3011 return s.str();
3012 };
3013
3014 const std::string msg = "Mismatching block-restrictions are specified for " +
3015 error_prefix + "variable with name '" + var_name + "': {" +
3016 stringifySubdomains(varSubdomainIDs) + "} and {" +
3017 stringifySubdomains(subdomainIDs) + "}";
3018
3019 mooseError(msg);
3020 }
3021 }
3022
3023 return true;
3024 }
3025 }
3026
3027 return false;
3028}
virtual bool hasVariable(const std::string &var_name) const
Query a system for a variable.
Definition SystemBase.C:850
const Variable & variable(unsigned int var) const
unsigned int variable_number(std::string_view var) const
const std::set< subdomain_id_type > & active_subdomains() const
const FEType & type() const

Referenced by FEProblemBase::addAuxArrayVariable(), FEProblemBase::addAuxScalarVariable(), FEProblemBase::addAuxVariable(), FEProblemBase::addAuxVariable(), and FEProblemBase::addVariable().

◆ enabled()

virtual bool MooseObject::enabled ( ) const
inlinevirtualinherited

Return the enabled status of the object.

Reimplemented in EigenKernel.

Definition at line 49 of file MooseObject.h.

49{ return _enabled; }
const bool & _enabled
Reference to the "enable" InputParameters, used by Controls for toggling on/off MooseObjects.
Definition MooseObject.h:71

Referenced by EigenKernel::enabled(), BlockRestrictionDebugOutput::printBlockRestrictionGroups(), BlockRestrictionDebugOutput::printBoundaryRestrictionGroups(), and NodeFaceConstraint::validParams().

◆ errorOnJacobianNonzeroReallocation()

bool FEProblemBase::errorOnJacobianNonzeroReallocation ( ) const
inlineinherited

Will return True if the user wants to get an error when a nonzero is reallocated in the Jacobian by PETSc.

Definition at line 2366 of file FEProblemBase.h.

2367 {
2369 }
bool _error_on_jacobian_nonzero_reallocation
Whether to error when the Jacobian is re-allocated, usually because the sparsity pattern changed.

Referenced by NonlinearSystemBase::computeJacobianBlocks(), NonlinearSystemBase::computeJacobianInternal(), LinearSystem::computeLinearSystemInternal(), NonlinearSystemBase::computeResidualAndJacobianInternal(), and NonlinearSystemBase::constraintJacobians().

◆ errorPrefix()

std::string MooseBase::errorPrefix ( const std::string &  ) const
inlineinherited

Deprecated message prefix; the error type is no longer used.

Definition at line 264 of file MooseBase.h.

264{ return messagePrefix(); }

◆ es()

virtual libMesh::EquationSystems & FEProblemBase::es ( )
inlineoverridevirtualinherited

Implements SubProblem.

Definition at line 180 of file FEProblemBase.h.

180{ return _req.set().es(); }
Restartable::ManagedValue< RestartableEquationSystems > _req
The EquationSystems object, wrapped for restart.
libMesh::EquationSystems & es()

Referenced by FEProblemBase::adaptMesh(), PhysicsBasedPreconditioner::addSystem(), MooseMesh::cacheFaceInfoVariableOwnership(), MooseMesh::cacheFVElementalDoFs(), DefaultNonlinearConvergence::DefaultNonlinearConvergence(), EigenProblem::EigenProblem(), MultiAppProjectionTransfer::execute(), FEProblem::FEProblem(), FEProblemBase::FEProblemBase(), FEProblemSolve::FEProblemSolve(), MultiAppFieldTransfer::getEquationSystem(), FEProblemBase::getEvaluableElementRange(), MFEMMultiAppTransfer::getlibMeshEquationSystem(), FEProblemBase::init(), Adaptivity::init(), MultiAppProjectionTransfer::initialSetup(), SampledOutput::initSample(), EigenExecutionerBase::inversePowerIteration(), FEProblemBase::meshChanged(), EigenExecutionerBase::nonlinearSolve(), DOFMapOutput::output(), Output::Output(), Moose::PetscSupport::petscSetKSPDefaults(), MultiAppProjectionTransfer::projectSolution(), FEProblemBase::reinitBecauseOfGhostingOrNewGeomObjects(), Moose::SlepcSupport::setEigenProblemSolverParams(), ExplicitTimeIntegrator::solveLinearSystem(), FEProblemBase::timestepSetup(), and SampledOutput::updateSample().

◆ execMultiApps()

bool FEProblemBase::execMultiApps ( ExecFlagType  type,
bool  auto_advance = true 
)
inherited

Execute the MultiApps associated with the ExecFlagType.

Definition at line 5978 of file FEProblemBase.C.

5979{
5980 // Active MultiApps
5981 const std::vector<MooseSharedPointer<MultiApp>> & multi_apps =
5983
5984 // Do anything that needs to be done to Apps before transfers
5985 for (const auto & multi_app : multi_apps)
5986 multi_app->preTransfer(_dt, _time);
5987
5988 // Execute Transfers _to_ MultiApps
5990
5991 // Execute Transfers _between_ Multiapps
5993
5994 // Execute MultiApps
5995 if (multi_apps.size())
5996 {
5997 TIME_SECTION("execMultiApps", 1, "Executing MultiApps", false);
5998
6000 _console << COLOR_CYAN << "\nExecuting MultiApps on " << Moose::stringify(type)
6001 << COLOR_DEFAULT << std::endl;
6002
6003 bool success = true;
6004
6005 for (const auto & multi_app : multi_apps)
6006 {
6007 success = multi_app->solveStep(_dt, _time, auto_advance);
6008 // no need to finish executing the subapps if one fails
6009 if (!success)
6010 break;
6011 }
6012
6014
6015 _communicator.min(success);
6016
6017 if (!success)
6018 return false;
6019
6021 _console << COLOR_CYAN << "Finished Executing MultiApps on " << Moose::stringify(type) << "\n"
6022 << COLOR_DEFAULT << std::endl;
6023 }
6024
6025 // Execute Transfers _from_ MultiApps
6027
6028 // If we made it here then everything passed
6029 return true;
6030}
void execMultiAppTransfers(ExecFlagType type, Transfer::DIRECTION direction)
Execute MultiAppTransfers associated with execution flag and direction.
void min(const T &r, T &o, Request &req) const

Referenced by FEProblemBase::adaptMesh(), FEProblemBase::computeJacobianTags(), FEProblemBase::computeLinearSystemTags(), FEProblemBase::computeResidualAndJacobian(), FEProblemBase::computeResidualTags(), Eigenvalue::execute(), SteadyBase::execute(), TransientBase::execute(), MFEMSteady::execute(), EigenExecutionerBase::postExecute(), FixedPointSolve::solve(), FixedPointSolve::solveStep(), and MFEMTransient::takeStep().

◆ execMultiAppTransfers()

void FEProblemBase::execMultiAppTransfers ( ExecFlagType  type,
Transfer::DIRECTION  direction 
)
inherited

Execute MultiAppTransfers associated with execution flag and direction.

Parameters
typeThe execution flag to execute.
directionThe direction (to or from) to transfer.

Definition at line 5878 of file FEProblemBase.C.

5879{
5880 bool to_multiapp = direction == MultiAppTransfer::TO_MULTIAPP;
5881 bool from_multiapp = direction == MultiAppTransfer::FROM_MULTIAPP;
5882 std::string string_direction;
5883 if (to_multiapp)
5884 string_direction = " To ";
5885 else if (from_multiapp)
5886 string_direction = " From ";
5887 else
5888 string_direction = " Between ";
5889
5891 : from_multiapp ? _from_multi_app_transfers[type]
5893
5894 if (wh.hasActiveObjects())
5895 {
5896 TIME_SECTION("execMultiAppTransfers", 1, "Executing Transfers");
5897
5898 const auto & transfers = wh.getActiveObjects();
5899
5901 {
5902 _console << COLOR_CYAN << "\nTransfers on " << Moose::stringify(type) << string_direction
5903 << "MultiApps" << COLOR_DEFAULT << ":" << std::endl;
5904
5906 {"Name", "Type", "From", "To"});
5907
5908 // Build Table of Transfer Info
5909 for (const auto & transfer : transfers)
5910 {
5911 auto multiapp_transfer = dynamic_cast<MultiAppTransfer *>(transfer.get());
5912
5913 table.addRow(multiapp_transfer->name(),
5914 multiapp_transfer->type(),
5915 multiapp_transfer->getFromName(),
5916 multiapp_transfer->getToName());
5917 }
5918
5919 // Print it
5920 table.print(_console);
5921 }
5922
5923 for (const auto & transfer : transfers)
5924 {
5925 transfer->setCurrentDirection(direction);
5926 transfer->execute();
5927 }
5928
5930
5932 _console << COLOR_CYAN << "Transfers on " << Moose::stringify(type) << " Are Finished\n"
5933 << COLOR_DEFAULT << std::endl;
5934 }
5935 else if (_multi_apps[type].getActiveObjects().size())
5936 {
5938 _console << COLOR_CYAN << "\nNo Transfers on " << Moose::stringify(type) << string_direction
5939 << "MultiApps\n"
5940 << COLOR_DEFAULT << std::endl;
5941 }
5942}
Base class for all MultiAppTransfer objects.
void setCurrentDirection(const int direction)
Set this Transfer to be executed in a given direction.
Definition Transfer.h:89
A class for "pretty printing" a table of data.

Referenced by FEProblemBase::execMultiApps().

◆ execTransfers()

void FEProblemBase::execTransfers ( ExecFlagType  type)
inherited

Execute the Transfers associated with the ExecFlagType.

Note: This does not execute MultiApp Transfers! Those are executed automatically when MultiApps are executed.

Definition at line 6148 of file FEProblemBase.C.

6149{
6150 if (_transfers[type].hasActiveObjects())
6151 {
6152 TIME_SECTION("execTransfers", 3, "Executing Transfers");
6153
6154 const auto & transfers = _transfers[type].getActiveObjects();
6155
6156 for (const auto & transfer : transfers)
6157 transfer->execute();
6158 }
6159}
virtual void execute(const ExecFlagType &exec_type)
Convenience function for performing execution of MOOSE systems.

Referenced by FEProblemBase::computeJacobianTags(), FEProblemBase::computeLinearSystemTags(), FEProblemBase::computeResidualAndJacobian(), FEProblemBase::computeResidualTags(), MFEMSteady::execute(), FixedPointSolve::solve(), FixedPointSolve::solveStep(), and MFEMTransient::takeStep().

◆ execute()

void FEProblemBase::execute ( const ExecFlagType exec_type)
virtualinherited

Convenience function for performing execution of MOOSE systems.

Reimplemented in DumpObjectsProblem, MFEMProblem, and EigenProblem.

Definition at line 5128 of file FEProblemBase.C.

5129{
5130 // Set the current flag
5131 setCurrentExecuteOnFlag(exec_type);
5132
5133 if (exec_type != EXEC_INITIAL)
5134 executeControls(exec_type);
5135
5136 // intentially call this after executing controls because the setups may rely on the controls
5137 // FIXME: we skip the following flags because they have dedicated setup functions in
5138 // SetupInterface and it may not be appropriate to call them here.
5139 if (!(exec_type == EXEC_INITIAL || exec_type == EXEC_TIMESTEP_BEGIN ||
5140 exec_type == EXEC_SUBDOMAIN || exec_type == EXEC_NONLINEAR || exec_type == EXEC_LINEAR))
5141 customSetup(exec_type);
5142
5143 executeSamplers(exec_type);
5144
5145 // Pre-aux UserObjects
5147
5148 // Systems (includes system time derivative and aux kernel calculations)
5149 computeSystems(exec_type);
5150 // With the auxiliary system solution computed, sync the displaced problem auxiliary solution
5151 // before computation of post-aux user objects. The undisplaced auxiliary system current local
5152 // solution is updated (via System::update) within the AuxiliarySystem class's variable
5153 // computation methods (e.g. computeElementalVarsHelper, computeNodalVarsHelper), so it is safe to
5154 // use it here
5156 _displaced_problem->syncAuxSolution(*getAuxiliarySystem().currentSolution());
5157
5158 // Post-aux UserObjects
5160
5161 // Return the current flag to None
5163
5165 {
5166 // we will only check aux variables and postprocessors
5167 // checking more reporter data can be added in the future if needed
5168 std::unique_ptr<NumericVector<Number>> x = _aux->currentSolution()->clone();
5170
5171 // call THIS execute one more time for checking the possible states
5173 FEProblemBase::execute(exec_type);
5174 _checking_uo_aux_state = false;
5175
5176 const Real check_tol = 1e-8;
5177
5178 const Real xnorm = x->l2_norm();
5179 *x -= *_aux->currentSolution();
5180 if (x->l2_norm() > check_tol * xnorm)
5181 {
5182 const auto & sys = _aux->system();
5183 const unsigned int n_vars = sys.n_vars();
5184 std::multimap<Real, std::string, std::greater<Real>> ordered_map;
5185 for (const auto i : make_range(n_vars))
5186 {
5187 const Real vnorm = sys.calculate_norm(*x, i, DISCRETE_L2);
5188 ordered_map.emplace(vnorm, sys.variable_name(i));
5189 }
5190
5191 std::ostringstream oss;
5192 for (const auto & [error_norm, var_name] : ordered_map)
5193 oss << " {" << var_name << ", " << error_norm << "},\n";
5194
5195 mooseError("Aux kernels, user objects appear to have states for aux variables on ",
5196 exec_type,
5197 ".\nVariable error norms in descending order:\n",
5198 oss.str());
5199 }
5200
5202 if (pp_values.size() != new_pp_values.size())
5203 mooseError("Second execution for uo/aux state check should not change the number of "
5204 "real reporter values");
5205
5206 const Real ppnorm = pp_values.l2_norm();
5207 pp_values -= new_pp_values;
5208 if (pp_values.l2_norm() > check_tol * ppnorm)
5209 {
5210 const auto pp_names = getReporterData().getAllRealReporterFullNames();
5211 std::multimap<Real, std::string, std::greater<Real>> ordered_map;
5212 for (const auto i : index_range(pp_names))
5213 ordered_map.emplace(std::abs(pp_values(i)), pp_names[i]);
5214
5215 std::ostringstream oss;
5216 for (const auto & [error_norm, pp_name] : ordered_map)
5217 oss << " {" << pp_name << ", " << error_norm << "},\n";
5218
5219 mooseError("Aux kernels, user objects appear to have states for real reporter values on ",
5220 exec_type,
5221 ".\nErrors of real reporter values in descending order:\n",
5222 oss.str());
5223 }
5224 }
5225}
const ExecFlagType EXEC_SUBDOMAIN
Definition Moose.C:52
const ExecFlagType EXEC_TIMESTEP_BEGIN
Definition Moose.C:37
unsigned int n_vars
AuxiliarySystem & getAuxiliarySystem()
const ReporterData & getReporterData() const
Provides const access the ReporterData object.
const bool _uo_aux_state_check
Whether or not checking the state of uo/aux evaluation.
void executeSamplers(const ExecFlagType &exec_type)
Performs setup and execute calls for Sampler objects.
void setCurrentExecuteOnFlag(const ExecFlagType &)
std::vector< std::string > getAllRealReporterFullNames() const
Get full names of all real reporter values Note: For a postprocessor, the full name is the postproces...
DenseVector< Real > getAllRealReporterValues() const
Get all real reporter values including postprocessor and vector postprocessor values into a dense vec...
Real l2_norm() const
virtual unsigned int size() const override final
MetaPhysicL::DualNumber< V, D, asd > abs(const MetaPhysicL::DualNumber< V, D, asd > &a)
Definition EigenADReal.h:50

Referenced by EigenExecutionerBase::chebyshev(), FixedPointSolve::examineFixedPointConvergence(), SteadyBase::execute(), TransientBase::execute(), FEProblemBase::execute(), MFEMProblem::execute(), EigenProblem::execute(), EigenExecutionerBase::init(), NonlinearEigen::init(), Steady::init(), TransientBase::init(), EigenExecutionerBase::makeBXConsistent(), EigenExecutionerBase::normalizeSolution(), Moose::PetscSupport::petscLinearConverged(), Moose::PetscSupport::petscNonlinearConverged(), EigenExecutionerBase::postExecute(), FEProblemSolve::solve(), FixedPointSolve::solve(), FixedPointSolve::solveStep(), InversePowerMethod::takeStep(), NonlinearEigen::takeStep(), and MFEMTransient::takeStep().

◆ executeAllObjects()

void FEProblemBase::executeAllObjects ( const ExecFlagType exec_type)
virtualinherited

Definition at line 5073 of file FEProblemBase.C.

5074{
5075}

Referenced by Executor::exec().

◆ executeControls()

void FEProblemBase::executeControls ( const ExecFlagType exec_type)
inherited

Performs setup and execute calls for Control objects.

Definition at line 5563 of file FEProblemBase.C.

5564{
5565 if (_control_warehouse[exec_type].hasActiveObjects())
5566 {
5567 TIME_SECTION("executeControls", 1, "Executing Controls");
5568
5570
5571 auto controls_wh = _control_warehouse[exec_type];
5572 // Add all of the dependencies into the resolver and sort them
5573 for (const auto & it : controls_wh.getActiveObjects())
5574 {
5575 // Make sure an item with no dependencies comes out too!
5576 resolver.addItem(it);
5577
5578 std::vector<std::string> & dependent_controls = it->getDependencies();
5579 for (const auto & depend_name : dependent_controls)
5580 {
5581 if (controls_wh.hasActiveObject(depend_name))
5582 {
5583 auto dep_control = controls_wh.getActiveObject(depend_name);
5584 resolver.addEdge(dep_control, it);
5585 }
5586 else
5587 mooseError("The Control \"",
5588 depend_name,
5589 "\" was not created, did you make a "
5590 "spelling mistake or forget to include it "
5591 "in your input file?");
5592 }
5593 }
5594
5595 const auto & ordered_controls = resolver.getSortedValues();
5596
5597 if (!ordered_controls.empty())
5598 {
5599 // already called by initialSetup when exec_type == EXEC_INITIAL
5600 if (exec_type != EXEC_INITIAL)
5601 _control_warehouse.setup(exec_type);
5602
5603 // Run the controls in the proper order
5604 for (const auto & control : ordered_controls)
5605 control->execute();
5606 }
5607 }
5608}
Class that represents the dependecy as a graph.
void addItem(const T &value)
Add an independent item to the set.
const std::vector< T > & getSortedValues()
This function also returns dependency resolved values but with a simpler single vector interface.
void addEdge(const T &a, const T &b)
Add an edge between nodes 'a' and 'b'.
void setup(const ExecFlagType &exec_flag, THREAD_ID tid=0) const
ExecuteMooseObjectWarehouse< Control > _control_warehouse
The control logic warehouse.

Referenced by FEProblemBase::computeJacobianTags(), FEProblemBase::computeLinearSystemTags(), FEProblemBase::computeResidualAndJacobian(), FEProblemBase::computeResidualTags(), and FEProblemBase::execute().

◆ executeSamplers()

void FEProblemBase::executeSamplers ( const ExecFlagType exec_type)
inherited

Performs setup and execute calls for Sampler objects.

Definition at line 5611 of file FEProblemBase.C.

5612{
5613 // TODO: This should be done in a threaded loop, but this should be super quick so for now
5614 // do a serial loop.
5615 for (THREAD_ID tid = 0; tid < libMesh::n_threads(); ++tid)
5616 {
5617 std::vector<Sampler *> objects;
5618 theWarehouse()
5619 .query()
5620 .condition<AttribSystem>("Sampler")
5621 .condition<AttribThread>(tid)
5622 .condition<AttribExecOns>(exec_type)
5623 .queryInto(objects);
5624
5625 if (!objects.empty())
5626 {
5627 TIME_SECTION("executeSamplers", 1, "Executing Samplers");
5628 FEProblemBase::objectSetupHelper<Sampler>(objects, exec_type);
5629 FEProblemBase::objectExecuteHelper<Sampler>(objects);
5630 }
5631 }
5632}

Referenced by FEProblemBase::execute().

◆ externalSolve()

virtual void ExternalProblem::externalSolve ( )
pure virtual

New interface for solving an External problem.

"solve()" is finalized here to provide callbacks for solution syncing.

Implemented in MFEMProblem.

Referenced by solve().

◆ feBackend()

virtual Moose::FEBackend FEProblemBase::feBackend ( ) const
inlinevirtualinherited

◆ finalizeMultiApps()

void FEProblemBase::finalizeMultiApps ( )
inherited

Definition at line 6033 of file FEProblemBase.C.

6034{
6035 const auto & multi_apps = _multi_apps.getActiveObjects();
6036
6037 for (const auto & multi_app : multi_apps)
6038 multi_app->finalize();
6039}

Referenced by Eigenvalue::execute(), SteadyBase::execute(), TransientBase::execute(), and MFEMSteady::execute().

◆ finalNonlinearResidual()

Real FEProblemBase::finalNonlinearResidual ( const unsigned int  nl_sys_num) const
overridevirtualinherited

Reimplemented from SubProblem.

Definition at line 7156 of file FEProblemBase.C.

7157{
7158 return _nl[nl_sys_num]->finalNonlinearResidual();
7159}

◆ finishMultiAppStep()

void FEProblemBase::finishMultiAppStep ( ExecFlagType  type,
bool  recurse_through_multiapp_levels = false 
)
inherited

Finish the MultiApp time step (endStep, postStep) associated with the ExecFlagType.

Optionally recurse through all multi-app levels

Definition at line 6061 of file FEProblemBase.C.

6062{
6063 const auto & multi_apps = _multi_apps[type].getActiveObjects();
6064
6065 if (multi_apps.size())
6066 {
6068 _console << COLOR_CYAN << "\nAdvancing MultiApps on " << type.name() << COLOR_DEFAULT
6069 << std::endl;
6070
6071 for (const auto & multi_app : multi_apps)
6072 multi_app->finishStep(recurse_through_multiapp_levels);
6073
6075
6077 _console << COLOR_CYAN << "Finished Advancing MultiApps on " << type.name() << "\n"
6078 << COLOR_DEFAULT << std::endl;
6079 }
6080}

Referenced by FEProblemBase::advanceMultiApps(), TransientBase::execute(), TransientMultiApp::finishStep(), and TransientBase::incrementStepOrReject().

◆ flagInvalidSolutionInternal()

template<bool warning>
template void SolutionInvalidInterface::flagInvalidSolutionInternal< false > ( const InvalidSolutionID  invalid_solution_id) const
protectedinherited

Set solution invalid mark for the given solution ID.

Definition at line 41 of file SolutionInvalidInterface.C.

43{
44 mooseAssert(
45 warning == moose::internal::getSolutionInvalidityRegistry().item(invalid_solution_id).warning,
46 "Inconsistent warning flag");
47 auto & solution_invalidity = _si_moose_base.getMooseApp().solutionInvalidity();
48 if constexpr (!warning)
50 solution_invalidity.printDebug(invalid_solution_id);
51 return solution_invalidity.flagInvalidSolutionInternal(invalid_solution_id);
52}
bool immediatelyPrintInvalidSolution() const
Whether or not the solution invalid warnings are printed out immediately.
const FEProblemBase * _si_problem
A pointer to FEProblem base.
const MooseBase & _si_moose_base
The MooseBase that owns this interface.
void printDebug(InvalidSolutionID _invalid_solution_id) const
Immediately print the section and message for debug purpose.
SolutionInvalidityRegistry & getSolutionInvalidityRegistry()
Get the global SolutionInvalidityRegistry singleton.

◆ forceOutput()

void FEProblemBase::forceOutput ( )
inherited

Indicates that the next call to outputStep should be forced.

This is needed by the MultiApp system, if forceOutput is called the next call to outputStep, regardless of the type supplied to the call, will be executed with EXEC_FORCED.

Forced output will NOT override the allowOutput flag.

Definition at line 7299 of file FEProblemBase.C.

7300{
7302}
void forceOutput()
Indicates that the next call to outputStep should be forced This is private, users should utilize FEP...

Referenced by TransientMultiApp::solveStep().

◆ fvBCsIntegrityCheck() [1/2]

bool FEProblemBase::fvBCsIntegrityCheck ( ) const
inlineinherited
Returns
whether to perform a boundary condition integrity check for finite volume

Definition at line 2756 of file FEProblemBase.h.

2756{ return _fv_bcs_integrity_check; }
bool _fv_bcs_integrity_check
Whether to check overlapping Dirichlet and Flux BCs and/or multiple DirichletBCs per sideset.

◆ fvBCsIntegrityCheck() [2/2]

void FEProblemBase::fvBCsIntegrityCheck ( bool  fv_bcs_integrity_check)
inlineinherited
Parameters
fv_bcs_integrity_checkWhether to perform a boundary condition integrity check for finite volume

Definition at line 3862 of file FEProblemBase.h.

3863{
3865 // the user has requested that we don't check integrity so we will honor that
3866 return;
3867
3868 _fv_bcs_integrity_check = fv_bcs_integrity_check;
3869}

◆ geomSearchData()

virtual GeometricSearchData & FEProblemBase::geomSearchData ( )
inlineoverridevirtualinherited

◆ getActiveElementalMooseVariables()

const std::set< MooseVariableFEBase * > & SubProblem::getActiveElementalMooseVariables ( const THREAD_ID  tid) const
virtualinherited

Get the MOOSE variables to be reinited on each element.

Parameters
tidThe thread id

Definition at line 455 of file SubProblem.C.

456{
458}
std::vector< std::set< MooseVariableFieldBase * > > _active_elemental_moose_variables
This is the set of MooseVariableFieldBase that will actually get reinited by a call to reinit(elem)

Referenced by SystemBase::prepare(), SystemBase::prepareFace(), FEProblemBase::prepareMaterials(), and SystemBase::reinitElem().

◆ getActiveFEVariableCoupleableMatrixTags()

const std::set< TagID > & SubProblem::getActiveFEVariableCoupleableMatrixTags ( const THREAD_ID  tid) const
inherited

Definition at line 391 of file SubProblem.C.

392{
394}
std::vector< std::set< TagID > > _active_fe_var_coupleable_matrix_tags

◆ getActiveFEVariableCoupleableVectorTags()

const std::set< TagID > & SubProblem::getActiveFEVariableCoupleableVectorTags ( const THREAD_ID  tid) const
inherited

Definition at line 397 of file SubProblem.C.

398{
400}
std::vector< std::set< TagID > > _active_fe_var_coupleable_vector_tags

Referenced by MultiAppVariableValueSamplePostprocessorTransfer::execute().

◆ getActiveScalarVariableCoupleableMatrixTags()

const std::set< TagID > & SubProblem::getActiveScalarVariableCoupleableMatrixTags ( const THREAD_ID  tid) const
inherited

Definition at line 432 of file SubProblem.C.

433{
435}
std::vector< std::set< TagID > > _active_sc_var_coupleable_matrix_tags

Referenced by MooseVariableScalar::reinit().

◆ getActiveScalarVariableCoupleableVectorTags()

const std::set< TagID > & SubProblem::getActiveScalarVariableCoupleableVectorTags ( const THREAD_ID  tid) const
inherited

Definition at line 438 of file SubProblem.C.

439{
441}
std::vector< std::set< TagID > > _active_sc_var_coupleable_vector_tags

◆ getActualFieldVariable()

MooseVariableFieldBase & FEProblemBase::getActualFieldVariable ( const THREAD_ID  tid,
const std::string &  var_name 
)
overridevirtualinherited

Returns the variable reference for requested MooseVariableField which may be in any system.

Implements SubProblem.

Definition at line 6278 of file FEProblemBase.C.

6279{
6280 for (auto & sys : _solver_systems)
6281 if (sys->hasVariable(var_name))
6282 return sys->getActualFieldVariable<Real>(tid, var_name);
6283 if (_aux->hasVariable(var_name))
6284 return _aux->getActualFieldVariable<Real>(tid, var_name);
6285
6286 mooseError("Unknown variable " + var_name);
6287}
MooseVariableFieldBase & getActualFieldVariable(const THREAD_ID tid, const std::string &var_name) override
Returns the variable reference for requested MooseVariableField which may be in any system.

Referenced by MultiAppVariableValueSampleTransfer::execute().

◆ getArrayVariable()

ArrayMooseVariable & FEProblemBase::getArrayVariable ( const THREAD_ID  tid,
const std::string &  var_name 
)
overridevirtualinherited

Returns the variable reference for requested ArrayMooseVariable which may be in any system.

Implements SubProblem.

Definition at line 6302 of file FEProblemBase.C.

6303{
6304 for (auto & sys : _solver_systems)
6305 if (sys->hasVariable(var_name))
6306 return sys->getFieldVariable<RealEigenVector>(tid, var_name);
6307 if (_aux->hasVariable(var_name))
6308 return _aux->getFieldVariable<RealEigenVector>(tid, var_name);
6309
6310 mooseError("Unknown variable " + var_name);
6311}
Eigen::Matrix< Real, Eigen::Dynamic, 1 > RealEigenVector
Definition MooseTypes.h:147

Referenced by CoupleableMooseVariableDependencyIntermediateInterface::coupledArrayValueByName(), MultiAppVariableValueSamplePostprocessorTransfer::execute(), and PointwiseRenormalizeVector::PointwiseRenormalizeVector().

◆ getAuxiliarySystem()

AuxiliarySystem & FEProblemBase::getAuxiliarySystem ( )
inlineinherited

◆ getAxisymmetricRadialCoord()

unsigned int SubProblem::getAxisymmetricRadialCoord ( ) const
inherited

Returns the desired radial direction for RZ coordinate transformation.

Returns
The coordinate direction for the radial direction

Definition at line 797 of file SubProblem.C.

798{
800}
unsigned int getAxisymmetricRadialCoord() const
Returns the desired radial direction for RZ coordinate transformation.
Definition MooseMesh.C:4415

◆ getBase()

const std::string & MooseBase::getBase ( ) const
inlineinherited
Returns
The registered base for this object (set via InputParameters::registerBase())

Definition at line 147 of file MooseBase.h.

147{ return _pars.getBase(); }

Referenced by Factory::copyConstruct(), and MooseBase::uniqueParameterName().

◆ getBndMaterialPropertyStorage()

const MaterialPropertyStorage & FEProblemBase::getBndMaterialPropertyStorage ( )
inlineinherited

Definition at line 2059 of file FEProblemBase.h.

2059{ return _bnd_material_props; }

◆ getCheckedPointerParam()

template<typename T >
T MooseBase::getCheckedPointerParam ( const std::string &  name,
const std::string &  error_string = "" 
) const
inherited

Verifies that the requested parameter exists and is not NULL and returns it to the caller.

The template parameter must be a pointer or an error will be thrown.

Definition at line 450 of file MooseBase.h.

451{
452 return _pars.getCheckedPointerParam<T>(name, error_string);
453}
T getCheckedPointerParam(const std::string &name, const std::string &error_string="") const
Verifies that the requested parameter exists and is not NULL and returns it to the caller.

◆ getConsumedPropertyMap()

const std::map< MooseObjectName, std::set< std::string > > & SubProblem::getConsumedPropertyMap ( ) const
inherited

Return the map that tracks the object with consumed material properties.

Definition at line 743 of file SubProblem.C.

744{
746}

Referenced by MaterialPropertyDebugOutput::output().

◆ getControlWarehouse()

ExecuteMooseObjectWarehouse< Control > & FEProblemBase::getControlWarehouse ( )
inlineinherited

Reference to the control logic warehouse.

Definition at line 2548 of file FEProblemBase.h.

2548{ return _control_warehouse; }

Referenced by LibtorchControlValuePostprocessor::initialSetup(), and LibtorchArtificialNeuralNetParameters::initialSetup().

◆ getConvergence()

Convergence & FEProblemBase::getConvergence ( const std::string &  name,
const THREAD_ID  tid = 0 
) const
virtualinherited

◆ getConvergenceObjects()

const std::vector< std::shared_ptr< Convergence > > & FEProblemBase::getConvergenceObjects ( const THREAD_ID  tid = 0) const
virtualinherited

Gets the Convergence objects.

Definition at line 2793 of file FEProblemBase.C.

2794{
2795 return _convergences.getActiveObjects(tid);
2796}

◆ getCoordSystem()

Moose::CoordinateSystemType SubProblem::getCoordSystem ( SubdomainID  sid) const
inherited

Definition at line 1283 of file SubProblem.C.

1284{
1285 return mesh().getCoordSystem(sid);
1286}
Moose::CoordinateSystemType getCoordSystem(SubdomainID sid) const
Get the coordinate system type, e.g.
Definition MooseMesh.C:4296

Referenced by BlockRestrictable::getBlockCoordSystem(), MultiApp::getBoundingBox(), Assembly::reinitLowerDElem(), Assembly::reinitNeighborLowerDElem(), and Assembly::setCoordinateTransformation().

◆ getCurrentAlgebraicBndNodeRange()

const ConstBndNodeRange & FEProblemBase::getCurrentAlgebraicBndNodeRange ( )
inherited

◆ getCurrentAlgebraicElementRange()

const ConstElemRange & FEProblemBase::getCurrentAlgebraicElementRange ( )
inherited

These are the element and nodes that contribute to the jacobian and residual for this local processor.

getCurrentAlgebraicElementRange() returns the element range that contributes to the system getCurrentAlgebraicNodeRange() returns the node range that contributes to the system getCurrentAlgebraicBndNodeRange returns the boundary node ranges that contributes to the system

Definition at line 10033 of file FEProblemBase.C.

10034{
10037
10039}
std::unique_ptr< libMesh::ConstElemRange > _current_algebraic_elem_range
const libMesh::ConstElemRange * getActiveLocalElementRange()
Return pointers to range objects for various types of ranges (local nodes, boundary elems,...
Definition MooseMesh.C:1242

Referenced by NonlinearSystemBase::computeDamping(), FEProblemBase::computeIndicators(), NonlinearSystemBase::computeJacobianBlocks(), NonlinearSystemBase::computeJacobianInternal(), FEProblemBase::computeMarkers(), NonlinearSystemBase::computeResidualAndJacobianInternal(), NonlinearSystemBase::computeResidualInternal(), NonlinearSystemBase::computeScaling(), FEProblemBase::computeUserObjectsInternal(), FEProblemBase::initialSetup(), FEProblemBase::projectSolution(), and FEProblemBase::updateMaxQps().

◆ getCurrentAlgebraicNodeRange()

const ConstNodeRange & FEProblemBase::getCurrentAlgebraicNodeRange ( )
inherited

◆ getCurrentExecuteOnFlag()

const ExecFlagType & FEProblemBase::getCurrentExecuteOnFlag ( ) const
inherited

Return/set the current execution flag.

Returns EXEC_NONE when not being executed.

See also
FEProblemBase::execute

Definition at line 5061 of file FEProblemBase.C.

5062{
5064}

Referenced by MultiAppGeneralFieldTransfer::acceptPointInOriginMesh(), MultiAppTransfer::checkParentAppUserObjectExecuteOn(), MultiAppGeneralFieldTransfer::closestToPosition(), MultiAppGeneralFieldKDTreeTransferBase::computeNumSources(), NearestPositionsDivision::divisionIndex(), CartesianGridDivision::divisionIndex(), CylindricalGridDivision::divisionIndex(), NearestPositionsDivision::divisionIndex(), SphericalGridDivision::divisionIndex(), PIDTransientControl::execute(), Terminator::execute(), PositionsFunctorValueSampler::execute(), Control::getControllableParameterByName(), Material::getMaterialByName(), MultiAppGeneralFieldKDTreeTransferBase::getNumDivisions(), NumPositions::getValue(), DistributedPositions::initialize(), ParsedDownSelectionPositions::initialize(), TransformedPositions::initialize(), PositionsFunctorValueSampler::initialize(), MultiAppGeneralFieldTransfer::locatePointReceivers(), ComputeUserObjectsThread::printBlockExecutionInformation(), ComputeFVInitialConditionThread::printGeneralExecutionInformation(), ComputeInitialConditionThread::printGeneralExecutionInformation(), ComputeLinearFVElementalThread::printGeneralExecutionInformation(), ComputeLinearFVFaceThread::printGeneralExecutionInformation(), ComputeDiracThread::printGeneralExecutionInformation(), ComputeElemDampingThread::printGeneralExecutionInformation(), ComputeIndicatorThread::printGeneralExecutionInformation(), ComputeMarkerThread::printGeneralExecutionInformation(), ComputeNodalDampingThread::printGeneralExecutionInformation(), ComputeNodalKernelBCJacobiansThread::printGeneralExecutionInformation(), ComputeNodalKernelBcsThread::printGeneralExecutionInformation(), ComputeNodalKernelJacobiansThread::printGeneralExecutionInformation(), ComputeNodalKernelsThread::printGeneralExecutionInformation(), ComputeNodalUserObjectsThread::printGeneralExecutionInformation(), ComputeUserObjectsThread::printGeneralExecutionInformation(), NonlinearThread::printGeneralExecutionInformation(), ComputeThreadedGeneralUserObjectsThread::printGeneralExecutionInformation(), MultiApp::restore(), SolutionInvalidityOutput::shouldOutput(), ElementReporter::shouldStore(), GeneralReporter::shouldStore(), and NodalReporter::shouldStore().

◆ getCurrentICState()

unsigned short FEProblemBase::getCurrentICState ( )
inherited

Retrieves the current initial condition state.

Returns
current initial condition state

Definition at line 10092 of file FEProblemBase.C.

10093{
10094 return _current_ic_state;
10095}
unsigned short _current_ic_state

Referenced by ComputeInitialConditionThread::operator()().

◆ getDataFileName()

std::string DataFileInterface::getDataFileName ( const std::string &  param) const
inherited

Deprecated method.

The data file paths are now automatically set within the InputParameters object, so using getParam<DataFileName>("param_name") is now sufficient.

Definition at line 21 of file DataFileInterface.C.

22{
23 _parent.mooseDeprecated("getDataFileName() is deprecated. The file path is now directly set "
24 "within the InputParameters.\nUse getParam<DataFileName>(\"",
25 param,
26 "\") instead.");
27 return _parent.getParam<DataFileName>(param);
28}
const ParallelParamObject & _parent
void mooseDeprecated(Args &&... args) const
Emits a deprecation warning prefixed with the object name and type, and a stack trace.
Definition MooseBase.h:317

◆ getDataFileNameByName()

std::string DataFileInterface::getDataFileNameByName ( const std::string &  relative_path) const
inherited

Deprecated method.

Use getDataFilePath() instead.

Definition at line 31 of file DataFileInterface.C.

32{
33 _parent.mooseDeprecated("getDataFileNameByName() is deprecated. Use getDataFilePath(\"",
34 relative_path,
35 "\") instead.");
36 return getDataFilePath(relative_path);
37}
std::string getDataFilePath(const std::string &relative_path) const
Returns the path of a data file for a given relative file path.

◆ getDataFilePath()

std::string DataFileInterface::getDataFilePath ( const std::string &  relative_path) const
inherited

Returns the path of a data file for a given relative file path.

This can be used for hardcoded datafile names and will search the same locations as getDataFileName

Definition at line 40 of file DataFileInterface.C.

41{
42 // This should only ever be used with relative paths. There is no point to
43 // use this search path with an absolute path.
44 if (std::filesystem::path(relative_path).is_absolute())
45 _parent.mooseWarning("While using getDataFilePath(\"",
46 relative_path,
47 "\"): This API should not be used for absolute paths.");
48
49 // This will search the data paths for this relative path
50 std::optional<std::string> error;
52 {
53 // Throw on error so that if getPath() fails, we can throw an error
54 // with the context of _parent.mooseError()
55 Moose::ScopedThrowOnError scoped_throw_on_error;
56
57 try
58 {
59 found_path = Moose::DataFileUtils::getPath(relative_path);
60 }
61 catch (std::exception & e)
62 {
63 error = e.what();
64 }
65 }
66
67 if (error)
68 _parent.mooseError(*error);
69
70 mooseAssert(found_path.context == Moose::DataFileUtils::Context::DATA,
71 "Should only ever obtain data");
72 mooseAssert(found_path.data_name, "Should be set");
73
74 const std::string msg =
75 "Using data file '" + found_path.path + "' from " + *found_path.data_name + " data";
76 _parent.mooseInfo(msg);
77
78 return found_path.path;
79}
void mooseWarning(Args &&... args) const
Emits a warning prefixed with object name and type.
Definition MooseBase.h:299
void mooseInfo(Args &&... args) const
Definition MooseBase.h:334
Scoped helper for setting Moose::_throw_on_error during this scope.
Definition Moose.h:298
@ DATA
From installed/in-tree data.
Path getPath(std::string path, const GetPathOptions &options={})
Get the data path for a given path, searching the registered data.
Representation of a data file path.
std::optional< std::string > data_name
The name of the data registry the file came from (with context == DATA)
Context context
Context for the file (where it came from)

Referenced by DataFileInterface::getDataFileNameByName().

◆ getDiracElements()

void FEProblemBase::getDiracElements ( std::set< const Elem * > &  elems)
overridevirtualinherited

Fills "elems" with the elements that should be looped over for Dirac Kernels.

Implements SubProblem.

Definition at line 2596 of file FEProblemBase.C.

2597{
2598 // First add in the undisplaced elements
2600
2602 {
2603 std::set<const Elem *> displaced_elements;
2604 _displaced_problem->getDiracElements(displaced_elements);
2605
2606 { // Use the ids from the displaced elements to get the undisplaced elements
2607 // and add them to the list
2608 for (const auto & elem : displaced_elements)
2609 elems.insert(_mesh.elemPtr(elem->id()));
2610 }
2611 }
2612}
std::set< const Elem * > & getElements()
Returns a writeable reference to the _elements container.

Referenced by NonlinearSystemBase::computeDiracContributions().

◆ getDiscreteMaterialWarehouse()

const MaterialWarehouse & FEProblemBase::getDiscreteMaterialWarehouse ( ) const
inlineinherited

Definition at line 2306 of file FEProblemBase.h.

2306{ return _discrete_materials; }

◆ getDisplacedProblem() [1/2]

virtual std::shared_ptr< DisplacedProblem > FEProblemBase::getDisplacedProblem ( )
inlinevirtualinherited

Definition at line 1993 of file FEProblemBase.h.

1993{ return _displaced_problem; }

◆ getDisplacedProblem() [2/2]

virtual std::shared_ptr< const DisplacedProblem > FEProblemBase::getDisplacedProblem ( ) const
inlinevirtualinherited

◆ getDistribution()

Distribution & FEProblemBase::getDistribution ( const std::string &  name)
virtualinherited

Definition at line 2865 of file FEProblemBase.C.

2866{
2867 std::vector<Distribution *> objs;
2868 theWarehouse()
2869 .query()
2870 .condition<AttribSystem>("Distribution")
2871 .condition<AttribName>(name)
2872 .queryInto(objs);
2873 if (objs.empty())
2874 {
2875 mooseAssert(getMooseApp().actionWarehouse().isTaskComplete("add_distribution"),
2876 "A Distribution getter was called before Distributions have been constructed. "
2877 "If you are attempting to access this object in the constructor of another object "
2878 "then make sure that the Distribution is constructed before the object using it.");
2879 mooseError("Unable to find Distribution with name '" + name + "'");
2880 }
2881 return *(objs[0]);
2882}

Referenced by MooseServer::buildDistPlotResponses(), DistributionInterface::getDistribution(), and DistributionInterface::getDistributionByName().

◆ getEvaluableElementRange()

const ConstElemRange & FEProblemBase::getEvaluableElementRange ( )
inherited

In general, {evaluable elements} >= {local elements} U {algebraic ghosting elements}.

That is, the number of evaluable elements does NOT necessarily equal to the number of local and algebraic ghosting elements. For example, if using a Lagrange basis for all variables, if a non-local, non-algebraically-ghosted element is surrounded by neighbors which are local or algebraically ghosted, then all the nodal (Lagrange) degrees of freedom associated with the non-local, non-algebraically-ghosted element will be evaluable, and hence that element will be considered evaluable.

getNonlinearEvaluableElementRange() returns the evaluable element range based on the nonlinear system dofmap; getAuxliaryEvaluableElementRange() returns the evaluable element range based on the auxiliary system dofmap; getEvaluableElementRange() returns the element range that is evaluable based on both the nonlinear dofmap and the auxliary dofmap.

Definition at line 890 of file FEProblemBase.C.

891{
893 {
894 std::vector<const DofMap *> dof_maps(es().n_systems());
895 for (const auto i : make_range(es().n_systems()))
896 {
897 const auto & sys = es().get_system(i);
898 dof_maps[i] = &sys.get_dof_map();
899 }
901 std::make_unique<ConstElemRange>(_mesh.getMesh().multi_evaluable_elements_begin(dof_maps),
902 _mesh.getMesh().multi_evaluable_elements_end(dof_maps));
903 }
905}
std::unique_ptr< libMesh::ConstElemRange > _evaluable_local_elem_range

Referenced by NodalPatchRecoveryBase::gatherRequestList().

◆ getExecutor()

virtual Executor & FEProblemBase::getExecutor ( const std::string &  name)
inlinevirtualinherited

Definition at line 2438 of file FEProblemBase.h.

2438{ return _app.getExecutor(name); }
Executor * getExecutor() const
Definition MooseApp.h:341

◆ getFailNextNonlinearConvergenceCheck()

bool FEProblemBase::getFailNextNonlinearConvergenceCheck ( ) const
inlineinherited

Whether it will skip further residual evaluations and fail the next nonlinear convergence check(s)

Definition at line 2897 of file FEProblemBase.h.

bool getFailNextSystemConvergenceCheck() const
Whether it will fail the next system convergence check(s), triggering failed step behavior.

Referenced by NonlinearSystemBase::computeScaling(), NonlinearSystem::converged(), Moose::PetscSupport::petscNonlinearConverged(), and ComputeResidualFunctor::residual().

◆ getFailNextSystemConvergenceCheck()

bool FEProblemBase::getFailNextSystemConvergenceCheck ( ) const
inlineinherited

Whether it will fail the next system convergence check(s), triggering failed step behavior.

Definition at line 2899 of file FEProblemBase.h.

Referenced by FEProblemBase::getFailNextNonlinearConvergenceCheck(), and Moose::PetscSupport::petscLinearConverged().

◆ getFunction()

Function & FEProblemBase::getFunction ( const std::string &  name,
const THREAD_ID  tid = 0 
)
virtualinherited

Definition at line 2725 of file FEProblemBase.C.

2726{
2727 // This thread lock is necessary since this method will create functions
2728 // for all threads if one is missing.
2729 Threads::spin_mutex::scoped_lock lock(get_function_mutex);
2730
2731 if (!hasFunction(name, tid))
2732 {
2733 // If we didn't find a function, it might be a default function, attempt to construct one now
2734 std::istringstream ss(name);
2735 Real real_value;
2736
2737 // First see if it's just a constant. If it is, build a ConstantFunction
2738 if (ss >> real_value && ss.eof())
2739 {
2740 InputParameters params = _factory.getValidParams("ConstantFunction");
2741 params.set<Real>("value") = real_value;
2742 addFunction("ConstantFunction", ss.str(), params);
2743 }
2744 else
2745 {
2747 std::string vars = "x,y,z,t,NaN,pi,e";
2748 if (fp.Parse(name, vars) == -1) // -1 for success
2749 {
2750 // It parsed ok, so build a MooseParsedFunction
2751 InputParameters params = _factory.getValidParams("ParsedFunction");
2752 params.set<std::string>("expression") = name;
2753 addFunction("ParsedFunction", name, params);
2754 }
2755 }
2756
2757 // Try once more
2758 if (!hasFunction(name, tid))
2759 {
2760 mooseAssert(getMooseApp().actionWarehouse().isTaskComplete("add_function"),
2761 "getFunction() was called before Functions have been constructed. The requested "
2762 "Function '" +
2763 name + "' may exist in the input file, but Functions are not available yet.");
2764
2765 mooseError("Unable to find function " + name);
2766 }
2767 }
2768
2769 auto * const ret = dynamic_cast<Function *>(_functions.getActiveObject(name, tid).get());
2770 if (!ret)
2771 mooseError("No function named ", name, " of appropriate type");
2772
2773 return *ret;
2774}
Threads::spin_mutex get_function_mutex
char ** vars
virtual void addFunction(const std::string &type, const std::string &name, InputParameters &parameters)
virtual bool hasFunction(const std::string &name, const THREAD_ID tid=0)

Referenced by MFEMProblem::addFunction(), MooseServer::buildFuncPlotResponse(), FunctionInterface::getFunctionByName(), FunctionPeriodicBoundary::getFunctions(), IterationAdaptiveDT::init(), MooseParsedFunctionWrapper::initialize(), ChainControlParsedFunctionWrapper::initializeFunctionInputs(), and ParsedConvergence::initializeFunctionSymbol().

◆ getFunctionWarehouse()

const MooseObjectWarehouse< Function > & FEProblemBase::getFunctionWarehouse ( )
inlineinherited

Definition at line 2295 of file FEProblemBase.h.

2295{ return _functions; }

◆ getFunctor()

template<typename T >
const Moose::Functor< T > & SubProblem::getFunctor ( const std::string &  name,
const THREAD_ID  tid,
const std::string &  requestor_name,
bool  requestor_is_ad 
)
inherited
Template Parameters
TThe type that the functor will return when evaluated, e.g. ADReal or Real
Parameters
nameThe name of the functor to retrieve
tidThe thread ID that we are retrieving the functor property for
requestor_nameThe name of the object that is requesting this functor property
requestor_is_adWhether the requesting object is an AD object
Returns
a constant reference to the functor

Definition at line 1232 of file SubProblem.h.

1236{
1237 mooseAssert(tid < _functors.size(), "Too large a thread ID");
1238
1239 // Log the requestor
1240 _functor_to_requestors["wraps_" + name].insert(requestor_name);
1241
1242 constexpr bool requested_functor_is_ad =
1243 !std::is_same<T, typename MetaPhysicL::RawType<T>::value_type>::value;
1244
1245 auto & functor_to_request_info = _functor_to_request_info[tid];
1246
1247 // Get the requested functor if we already have it
1248 auto & functors = _functors[tid];
1249 if (auto find_ret = functors.find("wraps_" + name); find_ret != functors.end())
1250 {
1251 if (functors.count("wraps_" + name) > 1)
1252 mooseError("Attempted to get a functor with the name '",
1253 name,
1254 "' but multiple (" + std::to_string(functors.count("wraps_" + name)) +
1255 ") functors match. Make sure that you do not have functor material "
1256 "properties, functions, postprocessors or variables with the same names.");
1257
1258 auto & [true_functor_is, non_ad_functor, ad_functor] = find_ret->second;
1259 auto & functor_wrapper = requested_functor_is_ad ? *ad_functor : *non_ad_functor;
1260
1261 auto * const functor = dynamic_cast<Moose::Functor<T> *>(&functor_wrapper);
1262 if (!functor)
1263 mooseError("A call to SubProblem::getFunctor requested a functor named '",
1264 name,
1265 "' that returns the type: '",
1266 libMesh::demangle(typeid(T).name()),
1267 "'. However, that functor already exists and returns a different type: '",
1268 functor_wrapper.returnType(),
1269 "'");
1270
1271 if (functor->template wrapsType<Moose::NullFunctor<T>>())
1272 // Store for future checking when the actual functor gets added
1273 functor_to_request_info.emplace(name,
1274 std::make_pair(requested_functor_is_ad, requestor_is_ad));
1275 else
1276 {
1277 // We already have the actual functor
1278 if (true_functor_is == SubProblem::TrueFunctorIs::UNSET)
1279 mooseError("We already have the functor; it should not be unset");
1280
1281 // Check for whether this is a valid request
1282 // We allow auxiliary variables and linear variables to be retrieved as non AD
1283 if (!requested_functor_is_ad && requestor_is_ad &&
1284 true_functor_is == SubProblem::TrueFunctorIs::AD &&
1286 mooseError("The AD object '",
1287 requestor_name,
1288 "' is requesting the functor '",
1289 name,
1290 "' as a non-AD functor even though it is truly an AD functor, which is not "
1291 "allowed, since this may unintentionally drop derivatives.");
1292 }
1293
1294 return *functor;
1295 }
1296
1297 // We don't have the functor yet but we could have it in the future. We'll create null functors
1298 // for now
1299 functor_to_request_info.emplace(name, std::make_pair(requested_functor_is_ad, requestor_is_ad));
1300 if constexpr (requested_functor_is_ad)
1301 {
1302 typedef typename MetaPhysicL::RawType<T>::value_type NonADType;
1303 typedef T ADType;
1304
1305 auto emplace_ret =
1306 functors.emplace("wraps_" + name,
1307 std::make_tuple(SubProblem::TrueFunctorIs::UNSET,
1308 std::make_unique<Moose::Functor<NonADType>>(
1309 std::make_unique<Moose::NullFunctor<NonADType>>()),
1310 std::make_unique<Moose::Functor<ADType>>(
1311 std::make_unique<Moose::NullFunctor<ADType>>())));
1312
1313 return static_cast<Moose::Functor<T> &>(*(requested_functor_is_ad
1314 ? std::get<2>(emplace_ret->second)
1315 : std::get<1>(emplace_ret->second)));
1316 }
1317 else
1318 {
1319 typedef T NonADType;
1320 typedef typename Moose::ADType<T>::type ADType;
1321
1322 auto emplace_ret =
1323 functors.emplace("wraps_" + name,
1324 std::make_tuple(SubProblem::TrueFunctorIs::UNSET,
1325 std::make_unique<Moose::Functor<NonADType>>(
1326 std::make_unique<Moose::NullFunctor<NonADType>>()),
1327 std::make_unique<Moose::Functor<ADType>>(
1328 std::make_unique<Moose::NullFunctor<ADType>>())));
1329
1330 return static_cast<Moose::Functor<T> &>(*(requested_functor_is_ad
1331 ? std::get<2>(emplace_ret->second)
1332 : std::get<1>(emplace_ret->second)));
1333 }
1334}
virtual bool hasLinearVariable(const std::string &var_name) const
Whether or not this problem has this linear variable.
Definition SubProblem.C:803
std::map< std::string, std::set< std::string > > _functor_to_requestors
The requestors of functors where the key is the prop name and the value is a set of names of requesto...
virtual bool hasAuxiliaryVariable(const std::string &var_name) const
Whether or not this problem has this auxiliary variable.
Definition SubProblem.C:812
std::string demangle(const char *name)

Referenced by FunctorInterface::getFunctorByName().

◆ getFVAdvectedInterpolationMethod()

const FVAdvectedInterpolationMethod & FEProblemBase::getFVAdvectedInterpolationMethod ( const InterpolationMethodName &  name,
const THREAD_ID  tid = 0 
) const
inherited

Retrieve an advected interpolation method.

Parameters
nameThe name of the method.
tidThe thread ID.

Definition at line 4841 of file FEProblemBase.C.

4843{
4844 const auto & method = getFVInterpolationMethod(name, tid);
4845 const auto * advected_method = dynamic_cast<const FVAdvectedInterpolationMethod *>(&method);
4846
4847 if (!advected_method)
4848 mooseError("FVInterpolationMethod '",
4849 name,
4850 "' (",
4851 method.type(),
4852 ") is not an advected interpolation method.");
4853
4854 return *advected_method;
4855}
const FVInterpolationMethod & getFVInterpolationMethod(const InterpolationMethodName &name, const THREAD_ID tid=0) const
Retrieve an FV interpolation method.
Interface for interpolation methods that provide matrix and RHS contributions for advected face value...

Referenced by FVInterpolationMethodInterface::getFVAdvectedInterpolationMethod().

◆ getFVFaceInterpolationMethod()

const FVFaceInterpolationMethod & FEProblemBase::getFVFaceInterpolationMethod ( const InterpolationMethodName &  name,
const THREAD_ID  tid = 0 
) const
inherited

Retrieve a scalar face interpolation method.

Parameters
nameThe name of the method.
tidThe thread ID.

Definition at line 4824 of file FEProblemBase.C.

4826{
4827 const auto & method = getFVInterpolationMethod(name, tid);
4828 const auto * face_method = dynamic_cast<const FVFaceInterpolationMethod *>(&method);
4829
4830 if (!face_method)
4831 mooseError("FVInterpolationMethod '",
4832 name,
4833 "' (",
4834 method.type(),
4835 ") is not a scalar face interpolation method.");
4836
4837 return *face_method;
4838}
Abstract base class for interpolation methods that produce a scalar face value from adjacent cell val...

Referenced by FVInterpolationMethodInterface::getFVFaceInterpolationMethod().

◆ getFVInitialConditionWarehouse()

const FVInitialConditionWarehouse & FEProblemBase::getFVInitialConditionWarehouse ( ) const
inlineinherited

◆ getFVInterpolationMethod()

const FVInterpolationMethod & FEProblemBase::getFVInterpolationMethod ( const InterpolationMethodName &  name,
const THREAD_ID  tid = 0 
) const
inherited

Retrieve an FV interpolation method.

Parameters
nameThe name of the method.
tidThe thread ID.

Definition at line 4797 of file FEProblemBase.C.

4799{
4800 std::vector<FVInterpolationMethod *> methods;
4801 theWarehouse()
4802 .query()
4803 .condition<AttribSystem>("FVInterpolationMethod")
4804 .condition<AttribThread>(tid)
4805 .condition<AttribName>(name)
4806 .queryInto(methods);
4807
4808 if (methods.empty())
4809 {
4810 mooseAssert(getMooseApp().actionWarehouse().isTaskComplete("add_interpolation_method"),
4811 "An FVInterpolationMethod getter was called before FVInterpolationMethods have "
4812 "been constructed. If you are attempting to access this object in the constructor "
4813 "of another object then make sure that the FVInterpolationMethod is constructed "
4814 "before the object using it.");
4815
4816 mooseError("Unable to find FVInterpolationMethod with name '", name, "'");
4817 }
4818
4819 mooseAssert(methods.size() == 1, "Expected a single FVInterpolationMethod per thread");
4820 return *(methods[0]);
4821}

Referenced by FEProblemBase::getFVAdvectedInterpolationMethod(), and FEProblemBase::getFVFaceInterpolationMethod().

◆ getFVMatsAndDependencies()

void FEProblemBase::getFVMatsAndDependencies ( SubdomainID  block_id,
std::vector< std::shared_ptr< MaterialBase > > &  face_materials,
std::vector< std::shared_ptr< MaterialBase > > &  neighbor_materials,
std::set< MooseVariableFieldBase * > &  variables,
const THREAD_ID  tid 
)
inherited

Get the materials and variables potentially needed for FV.

Parameters
block_idSubdomainID The subdomain id that we want to retrieve materials for
face_materialsThe face materials container that we will fill
neighbor_materialsThe neighbor materials container that we will fill
variablesThe variables container that we will fill that our materials depend on
tidThe thread id

Definition at line 9728 of file FEProblemBase.C.

9734{
9735 if (_materials[Moose::FACE_MATERIAL_DATA].hasActiveBlockObjects(blk_id, tid))
9736 {
9737 auto & this_face_mats =
9739 for (std::shared_ptr<MaterialBase> face_mat : this_face_mats)
9740 if (face_mat->ghostable())
9741 {
9742 face_materials.push_back(face_mat);
9743 auto & var_deps = face_mat->getMooseVariableDependencies();
9744 for (auto * var : var_deps)
9745 {
9746 if (!var->isFV())
9747 mooseError(
9748 "Ghostable materials should only have finite volume variables coupled into them.");
9749 else if (face_mat->hasStatefulProperties())
9750 mooseError("Finite volume materials do not currently support stateful properties.");
9751 variables.insert(var);
9752 }
9753 }
9754 }
9755
9756 if (_materials[Moose::NEIGHBOR_MATERIAL_DATA].hasActiveBlockObjects(blk_id, tid))
9757 {
9758 auto & this_neighbor_mats =
9760 for (std::shared_ptr<MaterialBase> neighbor_mat : this_neighbor_mats)
9761 if (neighbor_mat->ghostable())
9762 {
9763 neighbor_materials.push_back(neighbor_mat);
9764#ifndef NDEBUG
9765 auto & var_deps = neighbor_mat->getMooseVariableDependencies();
9766 for (auto * var : var_deps)
9767 {
9768 if (!var->isFV())
9769 mooseError(
9770 "Ghostable materials should only have finite volume variables coupled into them.");
9771 else if (neighbor_mat->hasStatefulProperties())
9772 mooseError("Finite volume materials do not currently support stateful properties.");
9773 auto pr = variables.insert(var);
9774 mooseAssert(!pr.second,
9775 "We should not have inserted any new variables dependencies from our "
9776 "neighbor materials that didn't exist for our face materials");
9777 }
9778#endif
9779 }
9780 }
9781}

◆ getHitNode() [1/2]

const hit::Node * MooseBase::getHitNode ( ) const
inlineinherited
Returns
The block-level hit node for this object, if any

Definition at line 136 of file MooseBase.h.

136{ return getHitNode(_pars); }

Referenced by MooseBase::callMooseError(), MooseBase::getHitNode(), and MooseBase::messagePrefix().

◆ getHitNode() [2/2]

const hit::Node * MooseBase::getHitNode ( const InputParameters params)
staticprivateinherited

Internal method for getting a hit node (if available) given a set of parameters.

Needs to be static so that we can call it externally from InputParameters for errors that do not have context of the MooseBase

Definition at line 167 of file MooseBase.C.

168{
169 if (const auto hit_node = params.getHitNode())
170 if (!hit_node->isRoot())
171 return hit_node;
172 return nullptr;
173}

◆ getIndicatorWarehouse()

const MooseObjectWarehouse< Indicator > & FEProblemBase::getIndicatorWarehouse ( )
inlineinherited

Return indicator/marker storage.

Definition at line 2085 of file FEProblemBase.h.

2085{ return _indicators; }

◆ getInitialConditionWarehouse()

const InitialConditionWarehouse & FEProblemBase::getInitialConditionWarehouse ( ) const
inlineinherited

◆ getInterfaceMaterialsWarehouse()

const MaterialWarehouse & FEProblemBase::getInterfaceMaterialsWarehouse ( ) const
inlineinherited

◆ getInternalSideIndicatorWarehouse()

const MooseObjectWarehouse< InternalSideIndicatorBase > & FEProblemBase::getInternalSideIndicatorWarehouse ( )
inlineinherited

Definition at line 2086 of file FEProblemBase.h.

2087 {
2089 }

◆ getKokkosBndMaterialPropertyStorage()

Moose::Kokkos::MaterialPropertyStorage & FEProblemBase::getKokkosBndMaterialPropertyStorage ( )
inlineinherited

Definition at line 2070 of file FEProblemBase.h.

2071 {
2073 }

◆ getKokkosFESystem() [1/2]

Moose::Kokkos::FESystem & FEProblemBase::getKokkosFESystem ( const unsigned int  sys_num)
inherited

Get the Kokkos FESystem of a specified number.

Parameters
sys_numThe system number
Returns
The Kokkos FESystem

◆ getKokkosFESystem() [2/2]

const Moose::Kokkos::FESystem & FEProblemBase::getKokkosFESystem ( const unsigned int  sys_num) const
inherited

◆ getKokkosFESystems() [1/2]

Moose::Kokkos::Array< Moose::Kokkos::FESystem > & FEProblemBase::getKokkosFESystems ( )
inlineinherited

Get the Kokkos FESystem array (populated only when FE Kokkos objects exist)

Returns
The array of Kokkos FESystem objects

Definition at line 882 of file FEProblemBase.h.

883 {
884 return _kokkos_fe_systems;
885 }
Moose::Kokkos::Array< Moose::Kokkos::FESystem > _kokkos_fe_systems
FESystem array - sparsely populated (only slots for systems needing a Kokkos::FESystem)

◆ getKokkosFESystems() [2/2]

const Moose::Kokkos::Array< Moose::Kokkos::FESystem > & FEProblemBase::getKokkosFESystems ( ) const
inlineinherited

Definition at line 886 of file FEProblemBase.h.

887 {
888 return _kokkos_fe_systems;
889 }

◆ getKokkosFunction() [1/2]

virtual Moose::Kokkos::Function FEProblemBase::getKokkosFunction ( const std::string &  name)
virtualinherited

Get a Kokkos function in an abstract type.

Parameters
nameThe Kokkos function name
Returns
The copy of the Kokkos function in the abstract type

◆ getKokkosFunction() [2/2]

template<typename T >
T & FEProblemBase::getKokkosFunction ( const std::string &  name)
inherited

Get a Kokkos function in a concrete type.

Template Parameters
TThe Kokkos function type
Parameters
nameThe Kokkos function name
Returns
The reference of the Kokkos function in the concrete type

Definition at line 3892 of file FEProblemBase.h.

3893{
3894 if (!hasKokkosFunction(name))
3895 {
3896 // If we didn't find a function, it might be a default function, attempt to construct one now
3897 std::istringstream ss(name);
3898 Real real_value;
3899
3900 // First see if it's just a constant. If it is, build a ConstantFunction
3901 if (ss >> real_value && ss.eof())
3902 {
3903 InputParameters params = _factory.getValidParams("KokkosConstantFunction");
3904 params.set<Real>("value") = real_value;
3905 addKokkosFunction("KokkosConstantFunction", ss.str(), params);
3906 }
3907
3908 // Try once more
3909 if (!hasKokkosFunction(name))
3910 mooseError("Unable to find Kokkos function '" + name, "'");
3911 }
3912
3913 auto * const ret = dynamic_cast<T *>(_kokkos_functions.getActiveObject(name).get());
3914 if (!ret)
3915 mooseError("No Kokkos function named '", name, "' of appropriate type");
3916
3917 return *ret;
3918}
virtual bool hasKokkosFunction(const std::string &name) const
Get whether a Kokkos function exists.
virtual void addKokkosFunction(const std::string &type, const std::string &name, InputParameters &parameters)
Add a Kokkos function to the problem.
InputParameters getValidParams(const std::string &name) const
Get valid parameters for the object.
Definition Factory.C:68

◆ getKokkosMaterialData()

MaterialData & FEProblemBase::getKokkosMaterialData ( Moose::MaterialDataType  type,
const MooseObject object = nullptr 
) const
inherited
Returns
The Kokkos MaterialData for the type type for thread tid

Referenced by BlockRestrictable::initializeBlockRestrictable().

◆ getKokkosMaterialPropertyStorage()

Moose::Kokkos::MaterialPropertyStorage & FEProblemBase::getKokkosMaterialPropertyStorage ( )
inlineinherited

Definition at line 2066 of file FEProblemBase.h.

2067 {
2069 }

◆ getKokkosMaterialPropertyStorageConsumers()

const std::set< const MooseObject * > & FEProblemBase::getKokkosMaterialPropertyStorageConsumers ( Moose::MaterialDataType  type) const
inherited
Returns
The consumers of the Kokkos MaterialPropertyStorage for the type type

◆ getKokkosMaterialsWarehouse()

const MaterialWarehouse & FEProblemBase::getKokkosMaterialsWarehouse ( ) const
inlineinherited

Definition at line 2313 of file FEProblemBase.h.

2313{ return _kokkos_materials; }
MaterialWarehouse _kokkos_materials

◆ getKokkosNeighborMaterialPropertyStorage()

Moose::Kokkos::MaterialPropertyStorage & FEProblemBase::getKokkosNeighborMaterialPropertyStorage ( )
inlineinherited

Definition at line 2074 of file FEProblemBase.h.

2075 {
2077 }

◆ getKokkosSystem() [1/2]

Moose::Kokkos::System & FEProblemBase::getKokkosSystem ( const unsigned int  sys_num)
inherited

Get the Kokkos System of a specified number.

Parameters
sys_numThe system number
Returns
The Kokkos System

◆ getKokkosSystem() [2/2]

const Moose::Kokkos::System & FEProblemBase::getKokkosSystem ( const unsigned int  sys_num) const
inherited

◆ getKokkosSystems() [1/2]

Moose::Kokkos::Array< Moose::Kokkos::System > & FEProblemBase::getKokkosSystems ( )
inlineinherited

Get the Kokkos System array (always populated when any Kokkos object exists)

Returns
The array of Kokkos System objects

Definition at line 870 of file FEProblemBase.h.

870{ return _kokkos_systems; }
Moose::Kokkos::Array< Moose::Kokkos::System > _kokkos_systems
System array - sparsely populated (only slots for systems needing a Kokkos::System)

◆ getKokkosSystems() [2/2]

const Moose::Kokkos::Array< Moose::Kokkos::System > & FEProblemBase::getKokkosSystems ( ) const
inlineinherited

Definition at line 871 of file FEProblemBase.h.

872 {
873 return _kokkos_systems;
874 }

◆ getKokkosUserObject()

template<class T >
const T & FEProblemBase::getKokkosUserObject ( const std::string &  name) const
inlineinherited

Get the Kokkos user object by its name.

Parameters
nameThe name of the Kokkos user object being retrieved
Returns
const reference to the Kokkos user object

Definition at line 1439 of file FEProblemBase.h.

1440 {
1441 std::vector<T *> objs;
1442 theWarehouse()
1443 .query()
1444 .condition<AttribSystem>("KokkosUserObject")
1445 .condition<AttribName>(name)
1446 .queryInto(objs);
1447 if (objs.empty())
1448 mooseError("Unable to find Kokkos user object with name '" + name + "'");
1449 return *(objs[0]);
1450 }

Referenced by UserObjectInterface::getUserObjectFromFEProblem().

◆ getLinearConvergenceNames()

const std::vector< ConvergenceName > & FEProblemBase::getLinearConvergenceNames ( ) const
inherited

Gets the linear convergence object name(s).

Definition at line 9837 of file FEProblemBase.C.

9838{
9841 mooseError("The linear convergence name(s) have not been set.");
9842}
std::optional< std::vector< ConvergenceName > > _linear_convergence_names
Linear system(s) convergence name(s) (if any)

Referenced by Moose::PetscSupport::petscLinearConverged().

◆ getLinearSystem() [1/2]

LinearSystem & FEProblemBase::getLinearSystem ( unsigned int  sys_num)
inlineinherited

Get non-constant reference to a linear system.

Parameters
sys_numThe number of the linear system

Definition at line 3808 of file FEProblemBase.h.

3809{
3810 mooseAssert(sys_num < _linear_systems.size(),
3811 "System number greater than the number of linear systems");
3812 return *_linear_systems[sys_num];
3813}

Referenced by IterationAdaptiveDT::acceptStep(), Moose::compute_linear_system(), Moose::PetscSupport::petscSetDefaults(), and FEProblemSolve::solve().

◆ getLinearSystem() [2/2]

const LinearSystem & FEProblemBase::getLinearSystem ( unsigned int  sys_num) const
inlineinherited

Get a constant reference to a linear system.

Parameters
sys_numThe number of the linear system

Definition at line 3816 of file FEProblemBase.h.

3817{
3818 mooseAssert(sys_num < _linear_systems.size(),
3819 "System number greater than the number of linear systems");
3820 return *_linear_systems[sys_num];
3821}

◆ getLinearSystemNames()

const std::vector< LinearSystemName > & FEProblemBase::getLinearSystemNames ( ) const
inlineinherited
Returns
the linear system names in the problem

Definition at line 2978 of file FEProblemBase.h.

2978{ return _linear_sys_names; }
const std::vector< LinearSystemName > _linear_sys_names
The linear system names.

Referenced by PhysicsBase::initializePhysics(), and MultiSystemSolveObject::MultiSystemSolveObject().

◆ getLineSearch()

LineSearch * FEProblemBase::getLineSearch ( )
inlineoverridevirtualinherited

getter for the MOOSE line search

Implements SubProblem.

Definition at line 829 of file FEProblemBase.h.

829{ return _line_search.get(); }

Referenced by DisplacedProblem::getLineSearch().

◆ getMarkerWarehouse()

const MooseObjectWarehouse< Marker > & FEProblemBase::getMarkerWarehouse ( )
inlineinherited

Definition at line 2090 of file FEProblemBase.h.

2090{ return _markers; }

◆ getMaterial()

std::shared_ptr< MaterialBase > FEProblemBase::getMaterial ( std::string  name,
Moose::MaterialDataType  type,
const THREAD_ID  tid = 0,
bool  no_warn = false 
)
inherited

Return a pointer to a MaterialBase object.

If no_warn is true, suppress warning about retrieving a material reference potentially during the material's calculation.

This will return enabled or disabled objects, the main purpose is for iterative materials.

Definition at line 4010 of file FEProblemBase.C.

4014{
4015 switch (type)
4016 {
4018 name += "_neighbor";
4019 break;
4021 name += "_face";
4022 break;
4023 default:
4024 break;
4025 }
4026
4027 std::shared_ptr<MaterialBase> material = _all_materials[type].getActiveObject(name, tid);
4028 if (!no_warn && material->getParam<bool>("compute") && type == Moose::BLOCK_MATERIAL_DATA)
4029 mooseWarning("You are retrieving a Material object (",
4030 material->name(),
4031 "), but its compute flag is set to true. This indicates that MOOSE is "
4032 "computing this property which may not be desired and produce un-expected "
4033 "results.");
4034
4035 return material;
4036}
void mooseWarning(Args &&... args)
Emit a warning message with the given stringified, concatenated args.
Definition MooseError.h:345
@ BLOCK_MATERIAL_DATA
Definition MooseTypes.h:747

Referenced by MaterialPropertyInterface::getMaterialByName().

◆ getMaterialData()

MaterialData & FEProblemBase::getMaterialData ( Moose::MaterialDataType  type,
const THREAD_ID  tid = 0,
const MooseObject object = nullptr 
) const
inherited
Returns
The MaterialData for the type type for thread tid

Definition at line 4039 of file FEProblemBase.C.

4042{
4043 switch (type)
4044 {
4046 if (object)
4048 return _material_props.getMaterialData(tid);
4050 if (object)
4056 if (object)
4059 }
4060
4061 mooseError("FEProblemBase::getMaterialData(): Invalid MaterialDataType ", type);
4062}
void addConsumer(Moose::MaterialDataType type, const MooseObject *object)
Add object as the consumer of storage of type type.
const MaterialData & getMaterialData(const THREAD_ID tid) const
@ BOUNDARY_MATERIAL_DATA
Definition MooseTypes.h:748
@ INTERFACE_MATERIAL_DATA
Definition MooseTypes.h:751

Referenced by BlockRestrictable::initializeBlockRestrictable(), and FEProblemBase::resizeMaterialData().

◆ getMaterialPropertyBlockNames()

std::vector< SubdomainName > SubProblem::getMaterialPropertyBlockNames ( const std::string &  prop_name)
virtualinherited

Get a vector of block id equivalences that the material property is defined on.

Definition at line 490 of file SubProblem.C.

491{
492 std::set<SubdomainID> blocks = getMaterialPropertyBlocks(prop_name);
493 std::vector<SubdomainName> block_names;
494 block_names.reserve(blocks.size());
495 for (const auto & block_id : blocks)
496 {
497 SubdomainName name;
498 name = mesh().getMesh().subdomain_name(block_id);
499 if (name.empty())
500 {
501 std::ostringstream oss;
502 oss << block_id;
503 name = oss.str();
504 }
505 block_names.push_back(name);
506 }
507
508 return block_names;
509}
virtual std::set< SubdomainID > getMaterialPropertyBlocks(const std::string &prop_name)
Get a vector containing the block ids the material property is defined on.
Definition SubProblem.C:474
std::string & subdomain_name(subdomain_id_type id)

Referenced by MaterialPropertyInterface::getMaterialPropertyBlockNames().

◆ getMaterialPropertyBlocks()

std::set< SubdomainID > SubProblem::getMaterialPropertyBlocks ( const std::string &  prop_name)
virtualinherited

Get a vector containing the block ids the material property is defined on.

Definition at line 474 of file SubProblem.C.

475{
476 std::set<SubdomainID> blocks;
477
478 for (const auto & it : _map_block_material_props)
479 {
480 const std::set<std::string> & prop_names = it.second;
481 std::set<std::string>::iterator name_it = prop_names.find(prop_name);
482 if (name_it != prop_names.end())
483 blocks.insert(it.first);
484 }
485
486 return blocks;
487}

Referenced by SubProblem::getMaterialPropertyBlockNames(), and MaterialPropertyInterface::getMaterialPropertyBlocks().

◆ getMaterialPropertyBoundaryIDs()

std::set< BoundaryID > SubProblem::getMaterialPropertyBoundaryIDs ( const std::string &  prop_name)
virtualinherited

Get a vector containing the block ids the material property is defined on.

Definition at line 526 of file SubProblem.C.

527{
528 std::set<BoundaryID> boundaries;
529
530 for (const auto & it : _map_boundary_material_props)
531 {
532 const std::set<std::string> & prop_names = it.second;
533 std::set<std::string>::iterator name_it = prop_names.find(prop_name);
534 if (name_it != prop_names.end())
535 boundaries.insert(it.first);
536 }
537
538 return boundaries;
539}

Referenced by MaterialPropertyInterface::getMaterialPropertyBoundaryIDs(), and SubProblem::getMaterialPropertyBoundaryNames().

◆ getMaterialPropertyBoundaryNames()

std::vector< BoundaryName > SubProblem::getMaterialPropertyBoundaryNames ( const std::string &  prop_name)
virtualinherited

Get a vector of block id equivalences that the material property is defined on.

Definition at line 542 of file SubProblem.C.

543{
544 std::set<BoundaryID> boundaries = getMaterialPropertyBoundaryIDs(prop_name);
545 std::vector<BoundaryName> boundary_names;
546 boundary_names.reserve(boundaries.size());
547 const BoundaryInfo & boundary_info = mesh().getMesh().get_boundary_info();
548
549 for (const auto & bnd_id : boundaries)
550 {
551 BoundaryName name;
552 if (bnd_id == Moose::ANY_BOUNDARY_ID)
553 name = "ANY_BOUNDARY_ID";
554 else
555 {
556 name = boundary_info.get_sideset_name(bnd_id);
557 if (name.empty())
558 {
559 std::ostringstream oss;
560 oss << bnd_id;
561 name = oss.str();
562 }
563 }
564 boundary_names.push_back(name);
565 }
566
567 return boundary_names;
568}
virtual std::set< BoundaryID > getMaterialPropertyBoundaryIDs(const std::string &prop_name)
Get a vector containing the block ids the material property is defined on.
Definition SubProblem.C:526
const std::string & get_sideset_name(boundary_id_type id) const
const BoundaryInfo & get_boundary_info() const

Referenced by MaterialPropertyInterface::getMaterialPropertyBoundaryNames().

◆ getMaterialPropertyRegistry()

const MaterialPropertyRegistry & FEProblemBase::getMaterialPropertyRegistry ( ) const
inlineinherited
Returns
A reference to the material property registry

Definition at line 2048 of file FEProblemBase.h.

2049 {
2051 }

Referenced by SideUserObject::checkNoInterfaceMaterialPropertyDependencies(), and MaterialBase::checkStatefulSanity().

◆ getMaterialPropertyStorage()

const MaterialPropertyStorage & FEProblemBase::getMaterialPropertyStorage ( )
inlineinherited

Return a reference to the material property storage.

Returns
A const reference to the material property storage

Definition at line 2058 of file FEProblemBase.h.

2058{ return _material_props; }

◆ getMaterialPropertyStorageConsumers()

const std::set< const MooseObject * > & FEProblemBase::getMaterialPropertyStorageConsumers ( Moose::MaterialDataType  type) const
inherited
Returns
The consumers of the MaterialPropertyStorage for the type type

Definition at line 4065 of file FEProblemBase.C.

4066{
4067 switch (type)
4068 {
4077 }
4078
4079 mooseError("FEProblemBase::getMaterialPropertyStorageConsumers(): Invalid MaterialDataType ",
4080 type);
4081}
const std::set< const MooseObject * > & getConsumers(Moose::MaterialDataType type) const

◆ getMaterialWarehouse()

const MaterialWarehouse & FEProblemBase::getMaterialWarehouse ( ) const
inlineinherited

◆ getMatrixTagID()

TagID SubProblem::getMatrixTagID ( const TagName &  tag_name) const
virtualinherited

Get a TagID from a TagName.

Reimplemented in DisplacedProblem.

Definition at line 343 of file SubProblem.C.

344{
345 auto tag_name_upper = MooseUtils::toUpper(tag_name);
346
347 if (!matrixTagExists(tag_name))
348 mooseError("Matrix tag: ",
349 tag_name,
350 " does not exist. ",
351 "If this is a TimeKernel then this may have happened because you didn't "
352 "specify a Transient Executioner.");
353
354 return _matrix_tag_name_to_tag_id.at(tag_name_upper);
355}
virtual bool matrixTagExists(const TagName &tag_name) const
Check to see if a particular Tag exists.
Definition SubProblem.C:329

Referenced by Coupleable::coupledMatrixTagValue(), Coupleable::coupledMatrixTagValues(), ExplicitTimeIntegrator::ExplicitTimeIntegrator(), DisplacedProblem::getMatrixTagID(), TaggingInterface::TaggingInterface(), and TaggingInterface::useMatrixTag().

◆ getMatrixTags()

virtual std::map< TagName, TagID > & SubProblem::getMatrixTags ( )
inlinevirtualinherited

◆ getMaxQps()

unsigned int FEProblemBase::getMaxQps ( ) const
inherited
Returns
The maximum number of quadrature points in use on any element in this problem.

Definition at line 1717 of file FEProblemBase.C.

1718{
1719 if (_max_qps == std::numeric_limits<unsigned int>::max())
1720 mooseError("Max QPS uninitialized");
1721 return _max_qps;
1722}
unsigned int _max_qps
Maximum number of quadrature points used in the problem.

Referenced by MaterialBase::getMaxQps(), MaterialPropertyInterface::getMaxQps(), FEProblemBase::reinitDirac(), Material::subdomainSetup(), and FEProblemBase::updateMaxQps().

◆ getMaxScalarOrder()

Order FEProblemBase::getMaxScalarOrder ( ) const
inherited
Returns
The maximum order for all scalar variables in this problem's systems.

Definition at line 1725 of file FEProblemBase.C.

1726{
1727 return _max_scalar_order;
1728}

Referenced by ScalarCoupleable::coupledScalarOrder(), ScalarCoupleable::getADDefaultValue(), and ScalarCoupleable::getDefaultValue().

◆ getMeshDivision()

MeshDivision & FEProblemBase::getMeshDivision ( const std::string &  name,
const THREAD_ID  tid = 0 
) const
inherited

Get a MeshDivision.

Definition at line 2814 of file FEProblemBase.C.

2815{
2816 auto * const ret = dynamic_cast<MeshDivision *>(_mesh_divisions.getActiveObject(name, tid).get());
2817 if (!ret)
2818 mooseError("No MeshDivision object named ", name, " of appropriate type");
2819 return *ret;
2820}

Referenced by NestedDivision::NestedDivision().

◆ getMooseApp()

MooseApp & MooseBase::getMooseApp ( ) const
inlineinherited

Get the MooseApp this class is associated with.

Definition at line 87 of file MooseBase.h.

87{ return _app; }

Referenced by ChainControlSetupAction::act(), AddDefaultConvergenceAction::addDefaultMultiAppFixedPointConvergence(), AddDefaultConvergenceAction::addDefaultNonlinearConvergence(), AddDefaultConvergenceAction::addDefaultSteadyStateConvergence(), FEProblemBase::advanceState(), ParsedChainControl::buildFunction(), ReporterTransferInterface::checkHasReporterValue(), AddDefaultConvergenceAction::checkUnusedMultiAppFixedPointConvergenceParameters(), AddDefaultConvergenceAction::checkUnusedNonlinearConvergenceParameters(), AddDefaultConvergenceAction::checkUnusedSteadyStateConvergenceParameters(), Coupleable::checkWritableVar(), ComponentPhysicsInterface::ComponentPhysicsInterface(), Coupleable::Coupleable(), MortarInterfaceWarehouse::createMortarInterface(), EigenProblem::doFreeNonlinearPowerIterations(), Terminator::execute(), FEProblemSolve::FEProblemSolve(), SolutionInvalidInterface::flagInvalidSolutionInternal(), ChainControl::getChainControlDataSystem(), FEProblemBase::getDistribution(), FEProblemBase::getFunction(), FEProblemBase::getFVInterpolationMethod(), FEProblemBase::getMultiApp(), FEProblemBase::getSampler(), DefaultConvergenceBase::getSharedExecutionerParam(), FEProblemBase::getUserObjectBase(), FEProblemBase::getVectorPostprocessorObjectByName(), ChainControlDataPostprocessor::initialSetup(), MaterialPropertyInterface::MaterialPropertyInterface(), MooseVariableDataFV< OutputType >::MooseVariableDataFV(), ProgressOutput::output(), PetscOutputInterface::petscLinearOutput(), PetscOutputInterface::petscNonlinearOutput(), Moose::PetscSupport::PetscOptionsScope::PetscOptionsScope(), PetscOutputInterface::PetscOutputInterface(), PostprocessorInterface::postprocessorsAdded(), MultiApp::preTransfer(), Reporter::Reporter(), ReporterInterface::reportersAdded(), MultiApp::restore(), and VectorPostprocessorInterface::vectorPostprocessorsAdded().

◆ getMortarInterface() [1/2]

AutomaticMortarGeneration & FEProblemBase::getMortarInterface ( const std::pair< BoundaryID, BoundaryID > &  primary_secondary_boundary_pair,
const std::pair< SubdomainID, SubdomainID > &  primary_secondary_subdomain_pair,
bool  on_displaced 
)
inherited

Definition at line 8473 of file FEProblemBase.C.

8477{
8478 return _mortar_data->getMortarInterface(
8479 primary_secondary_boundary_pair, primary_secondary_subdomain_pair, on_displaced);
8480}

◆ getMortarInterface() [2/2]

const AutomaticMortarGeneration & FEProblemBase::getMortarInterface ( const std::pair< BoundaryID, BoundaryID > &  primary_secondary_boundary_pair,
const std::pair< SubdomainID, SubdomainID > &  primary_secondary_subdomain_pair,
bool  on_displaced 
) const
inherited

Return the undisplaced or displaced mortar generation object associated with the provided boundaries and subdomains.

Definition at line 8463 of file FEProblemBase.C.

8467{
8468 return _mortar_data->getMortarInterface(
8469 primary_secondary_boundary_pair, primary_secondary_subdomain_pair, on_displaced);
8470}

◆ getMortarInterfaces()

const std::unordered_map< std::pair< BoundaryID, BoundaryID >, MortarInterfaceConfig > & FEProblemBase::getMortarInterfaces ( bool  on_displaced) const
inherited

Definition at line 10125 of file FEProblemBase.C.

10126{
10127 return _mortar_data->getMortarInterfaces(on_displaced);
10128}

Referenced by FEProblemBase::computeUserObjectsInternal(), MortarSegmentMeshReporter::execute(), and NonlinearSystemBase::initialSetup().

◆ getMortarUserObjects() [1/2]

std::vector< MortarUserObject * > FEProblemBase::getMortarUserObjects ( BoundaryID  primary_boundary_id,
BoundaryID  secondary_boundary_id,
bool  displaced 
)
privateinherited

Helper for getting mortar objects corresponding to primary boundary ID, secondary boundary ID, and displaced parameters from the entire active mortar user object set.

Definition at line 9950 of file FEProblemBase.C.

9953{
9954 std::vector<MortarUserObject *> mortar_uos;
9955 theWarehouse()
9956 .query()
9958 .queryInto(mortar_uos);
9959 return getMortarUserObjects(primary_boundary_id, secondary_boundary_id, displaced, mortar_uos);
9960}

◆ getMortarUserObjects() [2/2]

std::vector< MortarUserObject * > FEProblemBase::getMortarUserObjects ( BoundaryID  primary_boundary_id,
BoundaryID  secondary_boundary_id,
bool  displaced,
const std::vector< MortarUserObject * > &  mortar_uo_superset 
)
privateinherited

Helper for getting mortar objects corresponding to primary boundary ID, secondary boundary ID, and displaced parameters, given some initial set.

Definition at line 9933 of file FEProblemBase.C.

9937{
9938 std::vector<MortarUserObject *> mortar_uos;
9939 auto * const subproblem = displaced ? static_cast<SubProblem *>(_displaced_problem.get())
9940 : static_cast<SubProblem *>(this);
9941 for (auto * const obj : mortar_uo_superset)
9942 if (obj->onInterface(primary_boundary_id, secondary_boundary_id) &&
9943 (&obj->getSubProblem() == subproblem))
9944 mortar_uos.push_back(obj);
9945
9946 return mortar_uos;
9947}

Referenced by FEProblemBase::computeUserObjectsInternal(), FEProblemBase::getMortarUserObjects(), and FEProblemBase::reinitMortarUserObjects().

◆ getMultiApp()

std::shared_ptr< MultiApp > FEProblemBase::getMultiApp ( const std::string &  multi_app_name) const
inherited

Get a MultiApp object by name.

Definition at line 5866 of file FEProblemBase.C.

5867{
5868 if (!hasMultiApp(multi_app_name))
5869 mooseAssert(getMooseApp().actionWarehouse().isTaskComplete("add_multi_app"),
5870 "A MultiApp getter was called before MultiApps have been constructed. "
5871 "If you are attempting to access this object in the constructor of another object "
5872 "then make sure that the MultiApp is constructed before the object using it.");
5873
5874 return _multi_apps.getObject(multi_app_name);
5875}
bool hasMultiApp(const std::string &name) const
std::shared_ptr< T > getObject(const std::string &name, THREAD_ID tid=0) const

Referenced by FEProblemBase::addTransfer(), MultiAppPositions::initialize(), and MultiAppTransfer::MultiAppTransfer().

◆ getMultiAppFixedPointConvergenceName()

const ConvergenceName & FEProblemBase::getMultiAppFixedPointConvergenceName ( ) const
inherited

Gets the MultiApp fixed point convergence object name.

Definition at line 9845 of file FEProblemBase.C.

9846{
9849 else
9850 mooseError("The fixed point convergence name has not been set.");
9851}
std::optional< ConvergenceName > _multiapp_fixed_point_convergence_name
MultiApp fixed point convergence name.

Referenced by FEProblemBase::addDefaultMultiAppFixedPointConvergence(), FixedPointSolve::examineFixedPointConvergence(), FixedPointIterationAdaptiveDT::init(), FixedPointSolve::initialSetup(), SteffensenSolve::initialSetup(), FixedPointSolve::solve(), and FixedPointSolve::solveStep().

◆ getMultiAppTransferWarehouse()

const ExecuteMooseObjectWarehouse< Transfer > & FEProblemBase::getMultiAppTransferWarehouse ( Transfer::DIRECTION  direction) const
inherited

Return the complete warehouse for MultiAppTransfer object for the given direction.

Definition at line 5967 of file FEProblemBase.C.

5968{
5969 if (direction == MultiAppTransfer::TO_MULTIAPP)
5971 else if (direction == MultiAppTransfer::FROM_MULTIAPP)
5973 else
5975}

◆ getMultiAppWarehouse()

ExecuteMooseObjectWarehouse< MultiApp > & FEProblemBase::getMultiAppWarehouse ( )
inlineinherited

◆ getNeighborMaterialPropertyStorage()

const MaterialPropertyStorage & FEProblemBase::getNeighborMaterialPropertyStorage ( )
inlineinherited

Definition at line 2060 of file FEProblemBase.h.

2061 {
2063 }

◆ getNonlinearConvergenceNames()

const std::vector< ConvergenceName > & FEProblemBase::getNonlinearConvergenceNames ( ) const
inherited

Gets the nonlinear system convergence object name(s).

Definition at line 9813 of file FEProblemBase.C.

9814{
9817 mooseError("The nonlinear system convergence name(s) have not been set.");
9818}
std::optional< std::vector< ConvergenceName > > _nonlinear_convergence_names
Nonlinear system(s) convergence name(s)

Referenced by FEProblemBase::addDefaultNonlinearConvergence(), ReferenceResidualProblem::addDefaultNonlinearConvergence(), FEProblemSolve::convergenceSetup(), and Moose::PetscSupport::petscNonlinearConverged().

◆ getNonlinearEvaluableElementRange()

const ConstElemRange & FEProblemBase::getNonlinearEvaluableElementRange ( )
inherited

Definition at line 908 of file FEProblemBase.C.

909{
911 {
912 std::vector<const DofMap *> dof_maps(_nl.size());
913 for (const auto i : index_range(dof_maps))
914 dof_maps[i] = &_nl[i]->dofMap();
916 std::make_unique<ConstElemRange>(_mesh.getMesh().multi_evaluable_elements_begin(dof_maps),
917 _mesh.getMesh().multi_evaluable_elements_end(dof_maps));
918 }
919
921}
std::unique_ptr< libMesh::ConstElemRange > _nl_evaluable_local_elem_range

Referenced by ElemSideNeighborLayersTester::execute().

◆ getNonlinearSystem()

NonlinearSystem & FEProblemBase::getNonlinearSystem ( const unsigned int  sys_num)
virtualinherited

Reimplemented in FEProblem.

Definition at line 2829 of file FEProblemBase.C.

2830{
2831 mooseDeprecated("FEProblemBase::getNonlinearSystem() is deprecated, please use "
2832 "FEProblemBase::getNonlinearSystemBase() \n");
2833
2834 mooseAssert(sys_num < _nl.size(), "System number greater than the number of nonlinear systems");
2835 auto nl_sys = std::dynamic_pointer_cast<NonlinearSystem>(_nl[sys_num]);
2836
2837 if (!nl_sys)
2838 mooseError("This is not a NonlinearSystem");
2839
2840 return *nl_sys;
2841}

Referenced by PNGOutput::calculateRescalingValues(), and PNGOutput::makeMeshFunc().

◆ getNonlinearSystemBase() [1/2]

NonlinearSystemBase & FEProblemBase::getNonlinearSystemBase ( const unsigned int  sys_num)
inlineinherited

◆ getNonlinearSystemBase() [2/2]

const NonlinearSystemBase & FEProblemBase::getNonlinearSystemBase ( const unsigned int  sys_num) const
inlineinherited

Definition at line 3771 of file FEProblemBase.h.

3772{
3773 mooseAssert(sys_num < _nl.size(), "System number greater than the number of nonlinear systems");
3774 return *_nl[sys_num];
3775}

◆ getNonlinearSystemNames()

const std::vector< NonlinearSystemName > & FEProblemBase::getNonlinearSystemNames ( ) const
inlineinherited
Returns
the nolinear system names in the problem

Definition at line 2974 of file FEProblemBase.h.

2974{ return _nl_sys_names; }
const std::vector< NonlinearSystemName > _nl_sys_names
The nonlinear system names.

Referenced by PhysicsBase::initializePhysics(), Console::meshChanged(), MultiSystemSolveObject::MultiSystemSolveObject(), ConsoleUtils::outputExecutionInformation(), and Console::outputSystemInformation().

◆ getNumCyclesCompleted()

unsigned int FEProblemBase::getNumCyclesCompleted ( )
inlineinherited
Returns
The number of adaptivity cycles completed.

Definition at line 2126 of file FEProblemBase.h.

2126{ return _cycles_completed; }

◆ getParam() [1/2]

template<typename T >
const T & MooseBase::getParam ( const std::string &  name) const
inherited

Retrieve a parameter for the object.

Parameters
nameThe name of the parameter
Returns
The value of the parameter

Definition at line 406 of file MooseBase.h.

407{
408 return InputParameters::getParamHelper<T>(name, _pars);
409}

Referenced by CommonOutputAction::act(), CreateDisplacedProblemAction::act(), CylinderComponent::addMeshGenerators(), FEProblemBase::addOutput(), ArrayParsedAux::ArrayParsedAux(), BicubicSplineFunction::BicubicSplineFunction(), Console::Console(), CutMeshByLevelSetGenerator::CutMeshByLevelSetGenerator(), DebugResidualAux::DebugResidualAux(), DerivativeParsedMaterialTempl< is_ad >::DerivativeParsedMaterialTempl(), DynamicObjectRegistrationAction::DynamicObjectRegistrationAction(), EigenKernel::EigenKernel(), ElementGroupCentroidPositions::ElementGroupCentroidPositions(), MFEMEigenvaluesPostprocessor::execute(), FEProblemSolve::FEProblemSolve(), ParsedVectorReporter::finalize(), FiniteDifferencePreconditioner::FiniteDifferencePreconditioner(), FixedPointSolve::FixedPointSolve(), ParsedSubdomainGeneratorBase::functionInitialize(), BlockDeletionGenerator::generate(), BoundaryLayerSubdomainGenerator::generate(), BreakMeshByBlockGenerator::generate(), CoarsenBlockGenerator::generate(), FileMeshGenerator::generate(), MeshExtruderGenerator::generate(), RefineBlockGenerator::generate(), RefineSidesetGenerator::generate(), SubdomainsFromPartitionerGenerator::generate(), XYDelaunayGenerator::generate(), GenericConstantRankTwoTensorTempl< is_ad >::GenericConstantRankTwoTensorTempl(), GenericConstantSymmetricRankTwoTensorTempl< is_ad >::GenericConstantSymmetricRankTwoTensorTempl(), GeometricSearchInterface::GeometricSearchInterface(), MooseApp::getCheckpointDirectories(), DataFileInterface::getDataFileName(), ExecutorInterface::getExecutor(), DefaultConvergenceBase::getSharedExecutionerParam(), AddVariableAction::init(), AdvancedOutput::init(), FixedPointIterationAdaptiveDT::init(), TimeSequenceStepper::init(), AdvancedOutput::initAvailableLists(), AttribThread::initFrom(), AttribExecutionOrderGroup::initFrom(), AttribSysNum::initFrom(), AttribResidualObject::initFrom(), AttribDisplaced::initFrom(), BlockRestrictable::initializeBlockRestrictable(), BoundaryRestrictable::initializeBoundaryRestrictable(), Console::initialSetup(), SampledOutput::initSample(), IterationAdaptiveDT::limitDTToPostprocessorValue(), MooseMesh::MooseMesh(), MooseVariableBase::MooseVariableBase(), MultiPostprocessorConvergence::MultiPostprocessorConvergence(), PerfGraphOutput::output(), Console::outputSystemInformation(), ParsedCurveGenerator::ParsedCurveGenerator(), ParsedElementDeletionGenerator::ParsedElementDeletionGenerator(), ParsedGenerateNodeset::ParsedGenerateNodeset(), ParsedGenerateSideset::ParsedGenerateSideset(), ParsedMaterialTempl< is_ad >::ParsedMaterialTempl(), ParsedNodeTransformGenerator::ParsedNodeTransformGenerator(), ParsedODEKernel::ParsedODEKernel(), ParsedPostprocessor::ParsedPostprocessor(), ParsedReporterBase::ParsedReporterBase(), ParsedVectorReporter::ParsedVectorReporter(), ProjectSideSetOntoLevelSetGenerator::ProjectSideSetOntoLevelSetGenerator(), ReferenceResidualInterface::ReferenceResidualInterface(), Moose::FV::setInterpolationMethod(), SetupMeshAction::setupMesh(), MooseApp::setupOptions(), Output::setWallTimeIntervalFromCommandLineParam(), PetscOutput::solveSetup(), TimePeriod::TimePeriod(), UniqueExtraIDMeshGenerator::UniqueExtraIDMeshGenerator(), VariableCondensationPreconditioner::VariableCondensationPreconditioner(), and VectorOfPostprocessors::VectorOfPostprocessors().

◆ getParam() [2/2]

template<typename T1 , typename T2 >
std::vector< std::pair< T1, T2 > > MooseBase::getParam ( const std::string &  param1,
const std::string &  param2 
) const
inherited

Retrieve two parameters and provide pair of parameters for the object.

Parameters
param1The name of first parameter
param2The name of second parameter
Returns
Vector of pairs of first and second parameters

Definition at line 443 of file MooseBase.h.

444{
445 return _pars.get<T1, T2>(param1, param2);
446}

◆ getPetscOptions()

Moose::PetscSupport::PetscOptions & FEProblemBase::getPetscOptions ( )
inlineinherited

◆ getPositionsObject()

const Positions & FEProblemBase::getPositionsObject ( const std::string &  name) const
inherited

Get the Positions object by its name.

Parameters
nameThe name of the Positions object being retrieved
Returns
Const reference to the Positions object

Definition at line 4769 of file FEProblemBase.C.

4770{
4771 std::vector<Positions *> objs;
4772 theWarehouse()
4773 .query()
4774 .condition<AttribSystem>("UserObject")
4775 .condition<AttribName>(name)
4776 .queryInto(objs);
4777 if (objs.empty())
4778 mooseError("Unable to find Positions object with name '" + name + "'");
4779 mooseAssert(objs.size() == 1, "Should only find one Positions");
4780 return *(objs[0]);
4781}

Referenced by DistributedPositions::DistributedPositions(), MultiApp::fillPositions(), ParsedDownSelectionPositions::initialize(), Positions::initialized(), MultiAppGeneralFieldTransfer::MultiAppGeneralFieldTransfer(), and TransformedPositions::TransformedPositions().

◆ getPostprocessorObjectByName()

const Postprocessor & FEProblemBase::getPostprocessorObjectByName ( const PostprocessorName &  object_name,
const THREAD_ID  tid = 0 
) const
inherited

Return the Postprocessor object registered under the supplied object name.

Parameters
object_nameThe name of the Postprocessor object
tidThe thread identifier for thread-local object lookup

Definition at line 4877 of file FEProblemBase.C.

4879{
4880 std::vector<Postprocessor *> objs;
4881 theWarehouse()
4882 .query()
4884 .condition<AttribThread>(tid)
4885 .condition<AttribName>(object_name)
4886 .queryInto(objs);
4887
4888 if (objs.empty())
4889 mooseError("Unable to find Postprocessor with name '", object_name, "'");
4890 mooseAssert(objs.size() == 1,
4891 "We shouldn't find more than one postprocessor object for a given name");
4892 return *(objs[0]);
4893}

◆ getPostprocessorValueByName()

const PostprocessorValue & FEProblemBase::getPostprocessorValueByName ( const PostprocessorName &  name,
std::size_t  t_index = 0 
) const
inherited

Get a read-only reference to the value associated with a Postprocessor that exists.

Parameters
nameThe name of the post-processor
t_indexFlag for getting current (0), old (1), or older (2) values
Returns
The reference to the value at the given time index

Note: This method is only for retrieving values that already exist, the Postprocessor and PostprocessorInterface objects should be used rather than this method for creating and getting values within objects.

Definition at line 4896 of file FEProblemBase.C.

4898{
4900 t_index);
4901}
Real PostprocessorValue
various MOOSE typedefs
Definition MooseTypes.h:230
A ReporterName that represents a Postprocessor.
const T & getReporterValue(const ReporterName &reporter_name, const MooseObject &consumer, const ReporterMode &mode, const std::size_t time_index=0) const
Method for returning read only references to Reporter values.

Referenced by MFEMProblem::addPostprocessor(), MultiAppConservativeTransfer::adjustTransferredSolution(), MultiAppConservativeTransfer::adjustTransferredSolutionNearestPoint(), MultiApp::appPostprocessorValue(), MultiAppPostprocessorToAuxScalarTransfer::execute(), MultiAppPostprocessorTransfer::execute(), EigenProblem::formNorm(), MooseParsedFunctionWrapper::initialize(), ParsedConvergence::initializePostprocessorSymbol(), EigenExecutionerBase::inversePowerIteration(), Exodus::outputPostprocessors(), Nemesis::outputPostprocessors(), TableOutput::outputPostprocessorsRow(), EigenProblem::postScaleEigenVector(), and TableOutput::shouldOutputPostprocessorsRow().

◆ getRegularMaterialsWarehouse()

const MaterialWarehouse & FEProblemBase::getRegularMaterialsWarehouse ( ) const
inlineinherited

Definition at line 2305 of file FEProblemBase.h.

2305{ return _materials; }

Referenced by Moose::Mortar::setupMortarMaterials().

◆ getRenamedParam()

template<typename T >
const T & MooseBase::getRenamedParam ( const std::string &  old_name,
const std::string &  new_name 
) const
inherited

Retrieve a renamed parameter for the object.

This helper makes sure we check both names before erroring, and that only one parameter is passed to avoid silent errors

Parameters
old_namethe old name for the parameter
new_namethe new name for the parameter

Definition at line 420 of file MooseBase.h.

421{
422 // Most important: accept new parameter
423 if (isParamSetByUser(new_name) && !isParamValid(old_name))
424 return getParam<T>(new_name);
425 // Second most: accept old parameter
426 if (isParamValid(old_name) && !isParamSetByUser(new_name))
427 return getParam<T>(old_name);
428 // Third most: accept default for new parameter
429 if (isParamValid(new_name) && !isParamValid(old_name))
430 return getParam<T>(new_name);
431 // Refuse: no default, no value passed
432 if (!isParamValid(old_name) && !isParamValid(new_name))
433 mooseError("parameter '" + new_name +
434 "' is being retrieved without being set.\nDid you misspell it?");
435 // Refuse: both old and new parameters set by user
436 else
437 mooseError("Parameter '" + new_name + "' may not be provided alongside former parameter '" +
438 old_name + "'");
439}
bool isParamSetByUser(const std::string &name) const
Test if the supplied parameter is set by a user, as opposed to not set or set to default.
Definition MooseBase.h:205
bool isParamValid(const std::string &name) const
Test if the supplied parameter is valid.
Definition MooseBase.h:199

◆ getReporterData() [1/2]

const ReporterData & FEProblemBase::getReporterData ( ) const
inlineinherited

Provides const access the ReporterData object.

NOTE: There is a private non-const version of this function that uses a key object only constructable by the correct interfaces. This was done by design to encourage the use of the Reporter and ReporterInterface classes.

Definition at line 1380 of file FEProblemBase.h.

1380{ return _reporter_data; }

Referenced by ReporterTransferInterface::addReporterTransferMode(), ReporterTransferInterface::checkHasReporterValue(), ReporterTransferInterface::clearVectorReporter(), ConstantPostprocessor::ConstantPostprocessor(), AccumulateReporter::declareAccumulateHelper(), ReporterTransferInterface::declareClone(), ReporterTransferInterface::declareClone(), AccumulateReporter::declareLateValues(), VectorPostprocessor::declareVector(), ReporterTransferInterface::declareVectorClone(), ReporterTransferInterface::declareVectorClone(), FEProblemBase::execute(), PostprocessorInterface::getPostprocessorValueByNameInternal(), VectorPostprocessorInterface::getVectorPostprocessorByNameHelper(), VectorPostprocessorInterface::getVectorPostprocessorContextByNameHelper(), PostprocessorInterface::hasPostprocessorByName(), VectorPostprocessorInterface::hasVectorPostprocessorByName(), MooseParsedFunctionWrapper::initialize(), ReporterPositions::initialize(), ReporterTimes::initialize(), ParsedConvergence::initializeSymbols(), JSONOutput::initialSetup(), PostprocessorInterface::isDefaultPostprocessorValueByName(), ReporterDebugOutput::output(), Receiver::Receiver(), ReporterTransferInterface::resizeReporter(), ReporterTransferInterface::sumVectorReporter(), ReporterTransferInterface::transferFromVectorReporter(), ReporterTransferInterface::transferReporter(), and ReporterTransferInterface::transferToVectorReporter().

◆ getReporterData() [2/2]

ReporterData & FEProblemBase::getReporterData ( ReporterData::WriteKey  )
inlineinherited

Provides non-const access the ReporterData object that is used to store reporter values.

see ReporterData.h

Definition at line 1387 of file FEProblemBase.h.

1387{ return _reporter_data; }

◆ getRestartableData()

template<typename T , typename... Args>
const T & Restartable::getRestartableData ( const std::string &  data_name) const
protectedinherited

Declare a piece of data as "restartable" and initialize it Similar to declareRestartableData but returns a const reference to the object.

Forwarded arguments are not allowed in this case because we assume that the object is restarted and we won't need different constructors to initialize it.

NOTE: This returns a const reference! Make sure you store it in a const reference!

Parameters
data_nameThe name of the data (usually just use the same name as the member variable)

Definition at line 294 of file Restartable.h.

295{
296 return declareRestartableDataHelper<T>(data_name, nullptr).get();
297}

◆ getRestartableEquationSystems()

const RestartableEquationSystems & FEProblemBase::getRestartableEquationSystems ( ) const
inherited

Get the RestartableEquationSystems object.

Definition at line 6350 of file FEProblemBase.C.

6351{
6352 return _req.get();
6353}
const T & get() const
Get the restartable value.
Definition Restartable.h:58

◆ getSampler()

Sampler & FEProblemBase::getSampler ( const std::string &  name,
const THREAD_ID  tid = 0 
)
virtualinherited

Definition at line 2895 of file FEProblemBase.C.

2896{
2897 std::vector<Sampler *> objs;
2898 theWarehouse()
2899 .query()
2900 .condition<AttribSystem>("Sampler")
2901 .condition<AttribThread>(tid)
2902 .condition<AttribName>(name)
2903 .queryInto(objs);
2904 if (objs.empty())
2905 {
2906 mooseAssert(getMooseApp().actionWarehouse().isTaskComplete("add_sampler"),
2907 "A Sampler getter was called before Samplers have been constructed. "
2908 "If you are attempting to access this object in the constructor of another object "
2909 "then make sure that the Sampler is constructed before the object using it.");
2910
2911 mooseError(
2912 "Unable to find Sampler with name '" + name +
2913 "', if you are attempting to access this object in the constructor of another object then "
2914 "make sure that the Sampler is constructed before the object using it.");
2915 }
2916 return *(objs[0]);
2917}

Referenced by SamplerInterface::getSampler(), and SamplerInterface::getSamplerByName().

◆ getScalarVariable()

MooseVariableScalar & FEProblemBase::getScalarVariable ( const THREAD_ID  tid,
const std::string &  var_name 
)
overridevirtualinherited

Returns the scalar variable reference from whichever system contains it.

Implements SubProblem.

Definition at line 6326 of file FEProblemBase.C.

6327{
6328 for (auto & sys : _solver_systems)
6329 if (sys->hasScalarVariable(var_name))
6330 return sys->getScalarVariable(tid, var_name);
6331 if (_aux->hasScalarVariable(var_name))
6332 return _aux->getScalarVariable(tid, var_name);
6333
6334 mooseError("Unknown variable " + var_name);
6335}

Referenced by FEProblemBase::addInitialCondition(), EigenProblem::adjustEigenVector(), MultiAppScalarToAuxScalarTransfer::execute(), MooseParsedFunctionWrapper::initialize(), ChainControlParsedFunctionWrapper::initializeFunctionInputs(), Exodus::outputScalarVariables(), Nemesis::outputScalarVariables(), and TableOutput::outputScalarVariables().

◆ getSharedPtr() [1/2]

std::shared_ptr< MooseObject > MooseObject::getSharedPtr ( )
inherited

Get another shared pointer to this object that has the same ownership group.

Wrapper around shared_from_this().

Definition at line 70 of file MooseObject.C.

71{
72 try
73 {
74 return shared_from_this();
75 }
76 catch (std::bad_weak_ptr &)
77 {
78 mooseError(not_shared_error);
79 }
80}

Referenced by MFEMProblem::addImagComponentToBC(), MFEMProblem::addImagComponentToKernel(), MFEMProblem::addRealComponentToBC(), MFEMProblem::addRealComponentToKernel(), and WebServerControl::addServerAction().

◆ getSharedPtr() [2/2]

std::shared_ptr< const MooseObject > MooseObject::getSharedPtr ( ) const
inherited

Definition at line 83 of file MooseObject.C.

84{
85 try
86 {
87 return shared_from_this();
88 }
89 catch (std::bad_weak_ptr &)
90 {
91 mooseError(not_shared_error);
92 }
93}

◆ getSolverSystem() [1/2]

SolverSystem & FEProblemBase::getSolverSystem ( unsigned int  sys_num)
inlineinherited

◆ getSolverSystem() [2/2]

const SolverSystem & FEProblemBase::getSolverSystem ( unsigned int  sys_num) const
inlineinherited

Get a constant reference to a solver system.

Parameters
sys_numThe number of the solver system

Definition at line 3786 of file FEProblemBase.h.

3787{
3788 mooseAssert(sys_num < _solver_systems.size(),
3789 "System number greater than the number of solver systems");
3790 return *_solver_systems[sys_num];
3791}

◆ getSolverSystemNames()

const std::vector< SolverSystemName > & FEProblemBase::getSolverSystemNames ( ) const
inlineinherited
Returns
the solver system names in the problem

Definition at line 2982 of file FEProblemBase.h.

2982{ return _solver_sys_names; }
std::vector< SolverSystemName > _solver_sys_names
The union of nonlinear and linear system names.

Referenced by ConsoleUtils::outputExecutionInformation().

◆ getStandardVariable()

MooseVariable & FEProblemBase::getStandardVariable ( const THREAD_ID  tid,
const std::string &  var_name 
)
overridevirtualinherited

Returns the variable reference for requested MooseVariable which may be in any system.

Implements SubProblem.

Definition at line 6266 of file FEProblemBase.C.

6267{
6268 for (auto & sys : _solver_systems)
6269 if (sys->hasVariable(var_name))
6270 return sys->getFieldVariable<Real>(tid, var_name);
6271 if (_aux->hasVariable(var_name))
6272 return _aux->getFieldVariable<Real>(tid, var_name);
6273
6274 mooseError("Unknown variable " + var_name);
6275}

Referenced by CoupleableMooseVariableDependencyIntermediateInterface::coupledValueByName(), FEProblemBase::projectFunctionOnCustomRange(), LinearFVKernel::requestVariableCellGradient(), and ElementSubdomainModifierBase::storeOverriddenDofValues().

◆ getSteadyStateConvergenceName()

const ConvergenceName & FEProblemBase::getSteadyStateConvergenceName ( ) const
inherited

Gets the steady-state detection convergence object name.

Definition at line 9854 of file FEProblemBase.C.

9855{
9857 return _steady_state_convergence_name.value();
9858 else
9859 mooseError("The steady convergence name has not been set.");
9860}
std::optional< ConvergenceName > _steady_state_convergence_name
Steady-state detection convergence name.

Referenced by FEProblemBase::addDefaultSteadyStateConvergence(), TransientBase::convergedToSteadyState(), and TransientBase::init().

◆ getSystem()

System & FEProblemBase::getSystem ( const std::string &  var_name)
overridevirtualinherited

Returns the equation system containing the variable provided.

Implements SubProblem.

Definition at line 6338 of file FEProblemBase.C.

6339{
6340 const auto [var_in_sys, sys_num] = determineSolverSystem(var_name);
6341 if (var_in_sys)
6342 return _solver_systems[sys_num]->system();
6343 else if (_aux->hasVariable(var_name) || _aux->hasScalarVariable(var_name))
6344 return _aux->system();
6345 else
6346 mooseError("Unable to find a system containing the variable " + var_name);
6347}

Referenced by FEProblemBase::addObjectParamsHelper(), MultiApp::appTransferVector(), FunctorChangeFunctorMaterialTempl< is_ad >::FunctorChangeFunctorMaterialTempl(), ElementSubdomainModifierBase::gatherPatchElements(), and ElementSubdomainModifierBase::storeOverriddenDofValues().

◆ getSystemBase() [1/3]

SystemBase & FEProblemBase::getSystemBase ( const std::string &  sys_name)
inherited

Get non-constant reference to a system in this problem.

Parameters
sys_nameThe name of the system

Definition at line 9576 of file FEProblemBase.C.

9577{
9578 if (std::find(_solver_sys_names.begin(), _solver_sys_names.end(), sys_name) !=
9579 _solver_sys_names.end())
9580 return getSystemBase(solverSysNum(sys_name));
9581 else if (sys_name == "aux0")
9582 return *_aux;
9583 else
9584 mooseError("System '" + sys_name + "' was requested from problem but does not exist.");
9585}

◆ getSystemBase() [2/3]

SystemBase & FEProblemBase::getSystemBase ( const unsigned int  sys_num)
virtualinherited

Get non-constant reference to a system in this problem.

Parameters
sys_numThe number of the system

Definition at line 9588 of file FEProblemBase.C.

9589{
9590 if (sys_num < _solver_systems.size())
9591 return *_solver_systems[sys_num];
9592
9593 return *_aux;
9594}

◆ getSystemBase() [3/3]

const SystemBase & FEProblemBase::getSystemBase ( const unsigned int  sys_num) const
virtualinherited

Get constant reference to a system in this problem.

Parameters
sys_numThe number of the system

Definition at line 9567 of file FEProblemBase.C.

9568{
9569 if (sys_num < _solver_systems.size())
9570 return *_solver_systems[sys_num];
9571
9572 return *_aux;
9573}

Referenced by FEProblemBase::addObjectParamsHelper(), PhysicsBase::copyVariablesFromMesh(), FEProblemBase::getSystemBase(), FEProblemBase::projectFunctionOnCustomRange(), and ElementSubdomainModifierBase::restoreOverriddenDofValues().

◆ getTimeFromStateArg()

Real FEProblemBase::getTimeFromStateArg ( const Moose::StateArg state) const
inherited

Returns the time associated with the requested state.

Definition at line 7326 of file FEProblemBase.C.

7327{
7329 // If we are any iteration type other than time (e.g. nonlinear), then temporally we are still
7330 // in the present time
7331 return time();
7332
7333 switch (state.state)
7334 {
7335 case 0:
7336 return time();
7337
7338 case 1:
7339 return timeOld();
7340
7341 default:
7342 mooseError("Unhandled state ", state.state, " in FEProblemBase::getTimeFromStateArg");
7343 }
7344}
virtual Real & timeOld() const
virtual Real & time() const
SolutionIterationType iteration_type
The solution iteration type, e.g. time or nonlinear.
unsigned int state
The state.

Referenced by Function::evaluate(), Function::evaluateDotHelper(), Function::evaluateGradientHelper(), Function::evaluateHelper(), and ParsedFunctorMaterialTempl< is_ad >::ParsedFunctorMaterialTempl().

◆ getTransfers() [1/2]

std::vector< std::shared_ptr< Transfer > > FEProblemBase::getTransfers ( ExecFlagType  type,
Transfer::DIRECTION  direction 
) const
inherited

Get Transfers by ExecFlagType and direction.

Definition at line 5945 of file FEProblemBase.C.

5946{
5947 if (direction == MultiAppTransfer::TO_MULTIAPP)
5949 else if (direction == MultiAppTransfer::FROM_MULTIAPP)
5951 else
5953}

◆ getTransfers() [2/2]

std::vector< std::shared_ptr< Transfer > > FEProblemBase::getTransfers ( Transfer::DIRECTION  direction) const
inherited

Definition at line 5956 of file FEProblemBase.C.

5957{
5958 if (direction == MultiAppTransfer::TO_MULTIAPP)
5960 else if (direction == MultiAppTransfer::FROM_MULTIAPP)
5962 else
5964}

◆ getUOExecutionGroups()

void FEProblemBase::getUOExecutionGroups ( TheWarehouse::Query query,
std::set< int > &  execution_groups 
) const
privateinherited

Definition at line 5303 of file FEProblemBase.C.

5305{
5306 std::vector<UserObjectBase *> uos;
5307 query.queryIntoUnsorted(uos);
5308 for (const auto & uo : uos)
5309 execution_groups.insert(uo->getParam<int>("execution_order_group"));
5310}

Referenced by FEProblemBase::computeUserObjectByName(), and FEProblemBase::computeUserObjects().

◆ getUOQuery()

TheWarehouse::Query FEProblemBase::getUOQuery ( const std::string &  system,
const ExecFlagType type,
const Moose::AuxGroup group 
) const
privateinherited

Definition at line 5285 of file FEProblemBase.C.

5288{
5290 theWarehouse().query().condition<AttribSystem>(system).condition<AttribExecOns>(type);
5291
5292 if (group == Moose::PRE_IC)
5293 query.condition<AttribPreIC>(true);
5294 else if (group == Moose::PRE_AUX)
5295 query.condition<AttribPreAux>(type);
5296 else if (group == Moose::POST_AUX)
5297 query.condition<AttribPostAux>(type);
5298
5299 return query;
5300}
TODO: delete this later - it is a temporary hack for dealing with inter-system dependencies.
Definition Attributes.h:346
TODO: delete this later - it is a temporary hack for dealing with inter-system dependencies.
Definition Attributes.h:315
TODO: delete this later - it is a temporary hack for dealing with inter-system dependencies.
Definition Attributes.h:296

Referenced by FEProblemBase::computeUserObjectByName(), and FEProblemBase::computeUserObjects().

◆ getUserObject()

template<class T >
T & FEProblemBase::getUserObject ( const std::string &  name,
unsigned int  tid = 0 
) const
inlineinherited

Get the user object by its name.

Parameters
nameThe name of the user object being retrieved
Returns
Reference to the user object

Definition at line 1399 of file FEProblemBase.h.

1400 {
1401 std::vector<T *> objs;
1402 theWarehouse()
1403 .query()
1404 .condition<AttribSystem>("UserObject")
1405 .condition<AttribThread>(tid)
1406 .condition<AttribName>(name)
1407 .queryInto(objs);
1408 if (objs.empty())
1409 mooseError("Unable to find user object with name '" + name + "'");
1410 return *(objs[0]);
1411 }

Referenced by ChangeOverFixedPointPostprocessor::ChangeOverFixedPointPostprocessor(), ChangeOverTimePostprocessor::ChangeOverTimePostprocessor(), MultiAppTransfer::checkParentAppUserObjectExecuteOn(), ExtraIDIntegralReporter::ExtraIDIntegralReporter(), ReporterTransferInterface::hideVariableHelper(), EigenExecutionerBase::init(), EigenProblemSolve::initialSetup(), IntegralPreservingFunctionIC::initialSetup(), ElementSubdomainModifierBase::initialSetup(), EigenExecutionerBase::inversePowerIteration(), and NEML2FEInterpolation::syncWithMainThread().

◆ getUserObjectBase()

const UserObject & FEProblemBase::getUserObjectBase ( const std::string &  name,
const THREAD_ID  tid = 0 
) const
inherited

Get the user object by its name.

Parameters
nameThe name of the user object being retrieved
tidThe thread of the user object (defaults to 0)
Returns
Const reference to the user object

Definition at line 4746 of file FEProblemBase.C.

4747{
4748 std::vector<UserObject *> objs;
4749 theWarehouse()
4750 .query()
4751 .condition<AttribSystem>("UserObject")
4752 .condition<AttribThread>(tid)
4753 .condition<AttribName>(name)
4754 .queryInto(objs);
4755 if (objs.empty())
4756 {
4757 mooseAssert(getMooseApp().actionWarehouse().isTaskComplete("add_user_object"),
4758 "A UserObject getter was called before UserObjects have been constructed. The "
4759 "requested UserObject '" +
4760 name + "' may exist in the input file, but UserObjects are not available yet.");
4761
4762 mooseError("Unable to find user object with name '" + name + "'");
4763 }
4764 mooseAssert(objs.size() == 1, "Should only find one UO");
4765 return *(objs[0]);
4766}

Referenced by MultiAppConservativeTransfer::adjustTransferredSolution(), MultiAppConservativeTransfer::adjustTransferredSolutionNearestPoint(), MultiApp::appUserObjectBase(), EigenProblem::checkProblemIntegrity(), FEProblemBase::checkUserObjectNameCollision(), UserObjectInterface::getUserObjectFromFEProblem(), MultiAppCloneReporterTransfer::initialSetup(), MultiAppConservativeTransfer::initialSetup(), and Terminator::initialSetup().

◆ getUserObjectJacobianVariables()

const std::vector< const MooseVariableFEBase * > & FEProblemBase::getUserObjectJacobianVariables ( const THREAD_ID  tid) const
inlineinherited

Definition at line 353 of file FEProblemBase.h.

354 {
355 return _uo_jacobian_moose_vars[tid];
356 }

Referenced by ComputeUserObjectsThread::onBoundary(), and ComputeUserObjectsThread::onElement().

◆ getVariable() [1/3]

virtual MooseVariableFieldBase & SubProblem::getVariable ( const THREAD_ID  tid,
const std::string &  var_name,
Moose::VarKindType  expected_var_type = Moose::VarKindType::VAR_ANY,
Moose::VarFieldType  expected_var_field_type = Moose::VarFieldType::VAR_FIELD_ANY 
)
inlinevirtualinherited

Reimplemented from SubProblem.

Definition at line 279 of file SubProblem.h.

283 {
284 return const_cast<MooseVariableFieldBase &>(const_cast<const SubProblem *>(this)->getVariable(
285 tid, var_name, expected_var_type, expected_var_field_type));
286 }

◆ getVariable() [2/3]

const MooseVariableFieldBase & FEProblemBase::getVariable ( const THREAD_ID  tid,
const std::string &  var_name,
Moose::VarKindType  expected_var_type = Moose::VarKindType::VAR_ANY,
Moose::VarFieldType  expected_var_field_type = Moose::VarFieldType::VAR_FIELD_ANY 
) const
overridevirtualinherited

Returns the variable reference for requested variable which must be of the expected_var_type (Nonlinear vs.

Auxiliary) and expected_var_field_type (standard, scalar, vector). The default values of VAR_ANY and VAR_FIELD_ANY should be used when "any" type of variable is acceptable. Throws an error if the variable in question is not in the expected System or of the expected type.

Implements SubProblem.

Definition at line 6256 of file FEProblemBase.C.

6260{
6261 return getVariableHelper(
6262 tid, var_name, expected_var_type, expected_var_field_type, _solver_systems, *_aux);
6263}
MooseVariableFieldBase & getVariableHelper(const THREAD_ID tid, const std::string &var_name, Moose::VarKindType expected_var_type, Moose::VarFieldType expected_var_field_type, const std::vector< T > &nls, const SystemBase &aux) const
Helper function called by getVariable that handles the logic for checking whether Variables of the re...

Referenced by FEProblemBase::addFVInitialCondition(), FEProblemBase::addInitialCondition(), EigenProblem::adjustEigenVector(), MultiAppConservativeTransfer::adjustTransferredSolution(), MultiAppConservativeTransfer::adjustTransferredSolutionNearestPoint(), MultiAppGeneralFieldNearestLocationTransfer::buildKDTrees(), MultiAppGeneralFieldShapeEvaluationTransfer::buildMeshFunctions(), CoupleableMooseVariableDependencyIntermediateInterface::coupledArrayValueByName(), CoupleableMooseVariableDependencyIntermediateInterface::coupledValueByName(), MultiAppGeometricInterpolationTransfer::execute(), MultiAppProjectionTransfer::execute(), MultiAppUserObjectTransfer::execute(), NodalNormalsCorner::execute(), NodalNormalsEvaluator::execute(), NodalNormalsPreprocessor::execute(), NEML2FEInterpolation::getMOOSEVariable(), LazyCoupleable::init(), AdvancedOutput::initAvailableLists(), MultiAppGeneralFieldNearestLocationTransfer::initialSetup(), MultiAppProjectionTransfer::initialSetup(), AdvancedOutput::initShowHideLists(), MultiApplibMeshToMFEMShapeEvaluationTransfer::interpolatelibMeshVariable(), SolutionUserObjectBase::pointValueWrapper(), PointwiseRenormalizeVector::PointwiseRenormalizeVector(), BlockRestrictionDebugOutput::printBlockRestrictionGroups(), BlockRestrictionDebugOutput::printBlockRestrictionMap(), MultiAppProjectionTransfer::projectSolution(), MultiAppDofCopyTransfer::transfer(), MultiAppShapeEvaluationTransfer::transferVariable(), and MultiAppMFEMTolibMeshShapeEvaluationTransfer::transferVariables().

◆ getVariable() [3/3]

virtual const MooseVariableFieldBase & SubProblem::getVariable ( const THREAD_ID  tid,
const std::string &  var_name,
Moose::VarKindType  expected_var_type = Moose::VarKindType::VAR_ANY,
Moose::VarFieldType  expected_var_field_type = Moose::VarFieldType::VAR_FIELD_ANY 
) const
virtualinherited

Returns the variable reference for requested variable which must be of the expected_var_type (Nonlinear vs.

Auxiliary) and expected_var_field_type (standard, scalar, vector). The default values of VAR_ANY and VAR_FIELD_ANY should be used when "any" type of variable is acceptable. Throws an error if the variable in question is not in the expected System or of the expected type.

Implements SubProblem.

◆ getVariableHelper() [1/2]

template<typename T >
MooseVariableFieldBase & SubProblem::getVariableHelper ( const THREAD_ID  tid,
const std::string &  var_name,
Moose::VarKindType  expected_var_type,
Moose::VarFieldType  expected_var_field_type,
const std::vector< T > &  nls,
const SystemBase aux 
) const
protectedinherited

Helper function called by getVariable that handles the logic for checking whether Variables of the requested type are available.

Referenced by DisplacedProblem::getVariable(), and FEProblemBase::getVariable().

◆ getVariableHelper() [2/2]

template<typename T >
MooseVariableFEBase & SubProblem::getVariableHelper ( const THREAD_ID  tid,
const std::string &  var_name,
Moose::VarKindType  expected_var_type,
Moose::VarFieldType  expected_var_field_type,
const std::vector< T > &  systems,
const SystemBase aux 
) const
inherited

Definition at line 819 of file SubProblem.C.

825{
826 // Eventual return value
827 MooseVariableFEBase * var = nullptr;
828
829 const auto [var_in_sys, sys_num] = determineSolverSystem(var_name);
830
831 // First check that the variable is found on the expected system.
832 if (expected_var_type == Moose::VarKindType::VAR_ANY)
833 {
834 if (var_in_sys)
835 var = &(systems[sys_num]->getVariable(tid, var_name));
836 else if (aux.hasVariable(var_name))
837 var = &(aux.getVariable(tid, var_name));
838 else
839 mooseError("Unknown variable " + var_name);
840 }
841 else if (expected_var_type == Moose::VarKindType::VAR_SOLVER && var_in_sys &&
842 systems[sys_num]->hasVariable(var_name))
843 var = &(systems[sys_num]->getVariable(tid, var_name));
844 else if (expected_var_type == Moose::VarKindType::VAR_AUXILIARY && aux.hasVariable(var_name))
845 var = &(aux.getVariable(tid, var_name));
846 else
847 {
848 std::string expected_var_type_string =
849 (expected_var_type == Moose::VarKindType::VAR_SOLVER ? "nonlinear" : "auxiliary");
850 mooseError("No ",
851 expected_var_type_string,
852 " variable named ",
853 var_name,
854 " found. "
855 "Did you specify an auxiliary variable when you meant to specify a nonlinear "
856 "variable (or vice-versa)?");
857 }
858
859 // Now make sure the var found has the expected field type.
860 if ((expected_var_field_type == Moose::VarFieldType::VAR_FIELD_ANY) ||
861 (expected_var_field_type == var->fieldType()))
862 return *var;
863 else
864 {
865 std::string expected_var_field_type_string =
866 MooseUtils::toLower(Moose::stringify(expected_var_field_type));
867 std::string var_field_type_string = MooseUtils::toLower(Moose::stringify(var->fieldType()));
868
869 mooseError("No ",
870 expected_var_field_type_string,
871 " variable named ",
872 var_name,
873 " found. "
874 "Did you specify a ",
875 var_field_type_string,
876 " variable when you meant to specify a ",
877 expected_var_field_type_string,
878 " variable?");
879 }
880}
virtual Moose::VarFieldType fieldType() const =0
Field type of this variable.
virtual std::pair< bool, unsigned int > determineSolverSystem(const std::string &var_name, bool error_if_not_found=false) const =0
virtual bool hasVariable(const std::string &var_name) const =0
Whether or not this problem has the variable.
std::string toLower(std::string name)
Convert supplied string to lower case.

◆ getVariableNames()

std::vector< VariableName > FEProblemBase::getVariableNames ( )
virtualinherited

Returns a list of all the variables in the problem (both from the NL and Aux systems.

Definition at line 9283 of file FEProblemBase.C.

9284{
9285 std::vector<VariableName> names;
9286
9287 for (auto & sys : _solver_systems)
9288 {
9289 const std::vector<VariableName> & var_names = sys->getVariableNames();
9290 names.insert(names.end(), var_names.begin(), var_names.end());
9291 }
9292
9293 const std::vector<VariableName> & aux_var_names = _aux->getVariableNames();
9294 names.insert(names.end(), aux_var_names.begin(), aux_var_names.end());
9295
9296 return names;
9297}

Referenced by EigenProblem::adjustEigenVector(), AdvancedOutput::initAvailableLists(), and ElementSubdomainModifierBase::initialSetup().

◆ getVectorPostprocessorObjectByName()

const VectorPostprocessor & FEProblemBase::getVectorPostprocessorObjectByName ( const std::string &  object_name,
const THREAD_ID  tid = 0 
) const
inherited

Return the VPP object given the name.

Parameters
object_nameThe name of the VPP object
Returns
Desired VPP object

This is used by various output objects as well as the scatter value handling.

See also
CSV.C, XMLOutput.C, VectorPostprocessorInterface.C

Definition at line 4940 of file FEProblemBase.C.

4942{
4943 std::vector<VectorPostprocessor *> objs;
4944 theWarehouse()
4945 .query()
4947 .condition<AttribThread>(tid)
4948 .condition<AttribName>(object_name)
4949 .queryInto(objs);
4950
4951 if (objs.empty())
4952 {
4953 mooseAssert(
4954 getMooseApp().actionWarehouse().isTaskComplete("add_vector_postprocessor"),
4955 "A VectorPostprocessor getter was called before VectorPostprocessors have been "
4956 "constructed. The requested VectorPostprocessor '" +
4957 object_name +
4958 "' may exist in the input file, but VectorPostprocessors are not available yet.");
4959
4960 mooseError("Unable to find VectorPostprocessor with name '", object_name, "'");
4961 }
4962 mooseAssert(objs.size() == 1,
4963 "We shouldn't find more than one vector postprocessor object for a given name");
4964 return *(objs[0]);
4965}
@ VectorPostprocessor

Referenced by CombinedVectorPostprocessor::CombinedVectorPostprocessor(), VectorPostprocessorInterface::isVectorPostprocessorDistributedByName(), CSV::output(), and XMLOutput::outputVectorPostprocessors().

◆ getVectorPostprocessorValueByName()

const VectorPostprocessorValue & FEProblemBase::getVectorPostprocessorValueByName ( const std::string &  object_name,
const std::string &  vector_name,
std::size_t  t_index = 0 
) const
inherited

Get a read-only reference to the vector value associated with the VectorPostprocessor.

Parameters
object_nameThe name of the VPP object.
vector_nameThe namve of the decalred vector within the object.
Returns
Referent to the vector of data.

Note: This method is only for retrieving values that already exist, the VectorPostprocessor and VectorPostprocessorInterface objects should be used rather than this method for creating and getting values within objects.

Definition at line 4921 of file FEProblemBase.C.

4924{
4926 VectorPostprocessorReporterName(object_name, vector_name), t_index);
4927}
std::vector< Real > VectorPostprocessorValue
Definition MooseTypes.h:231
A ReporterName that represents a VectorPostprocessor.

Referenced by HistogramVectorPostprocessor::execute().

◆ getVectorTag()

const VectorTag & SubProblem::getVectorTag ( const TagID  tag_id) const
virtualinherited

◆ getVectorTagID()

TagID SubProblem::getVectorTagID ( const TagName &  tag_name) const
virtualinherited

Get a TagID from a TagName.

Reimplemented in DisplacedProblem.

Definition at line 204 of file SubProblem.C.

205{
206 mooseAssert(verifyVectorTags(), "Vector tag storage invalid");
207
208 const auto tag_name_upper = MooseUtils::toUpper(tag_name);
209 const auto search = _vector_tags_name_map.find(tag_name_upper);
210 if (search != _vector_tags_name_map.end())
211 return search->second;
212
213 std::string message =
214 tag_name_upper == "TIME"
215 ? ".\n\nThis may occur if "
216 "you have a TimeKernel in your problem but did not specify a transient executioner."
217 : "";
218 mooseError("Vector tag '", tag_name_upper, "' does not exist", message);
219}

Referenced by Coupleable::coupledVectorTagArrayGradient(), Coupleable::coupledVectorTagArrayGradients(), Coupleable::coupledVectorTagArrayValues(), Coupleable::coupledVectorTagDofValues(), Coupleable::coupledVectorTagGradient(), Coupleable::coupledVectorTagGradients(), Coupleable::coupledVectorTagValues(), MultiAppVariableValueSamplePostprocessorTransfer::execute(), DisplacedProblem::getVectorTagID(), MooseVariableDataBase< OutputType >::MooseVariableDataBase(), ReferenceResidualConvergence::ReferenceResidualConvergence(), SolverSystem::setSolution(), TaggingInterface::TaggingInterface(), TagVectorAux::TagVectorAux(), MultiAppDofCopyTransfer::transfer(), TaggingInterface::useVectorTag(), Coupleable::vectorTagDofValueHelper(), and Coupleable::vectorTagValueHelper().

◆ getVectorTags() [1/2]

const std::vector< VectorTag > & SubProblem::getVectorTags ( const Moose::VectorTagType  type = Moose::VECTOR_TAG_ANY) const
virtualinherited

Return all vector tags, where a tag is represented by a map from name to ID.

Can optionally be limited to a vector tag type.

Reimplemented in DisplacedProblem.

Definition at line 185 of file SubProblem.C.

186{
187 mooseAssert(verifyVectorTags(), "Vector tag storage invalid");
188
190 return _vector_tags;
191 else
192 return _typed_vector_tags[type];
193}

◆ getVectorTags() [2/2]

std::vector< VectorTag > SubProblem::getVectorTags ( const std::set< TagID > &  tag_ids) const
inherited

◆ getVectorVariable()

VectorMooseVariable & FEProblemBase::getVectorVariable ( const THREAD_ID  tid,
const std::string &  var_name 
)
overridevirtualinherited

Returns the variable reference for requested VectorMooseVariable which may be in any system.

Implements SubProblem.

Definition at line 6290 of file FEProblemBase.C.

6291{
6292 for (auto & sys : _solver_systems)
6293 if (sys->hasVariable(var_name))
6294 return sys->getFieldVariable<RealVectorValue>(tid, var_name);
6295 if (_aux->hasVariable(var_name))
6296 return _aux->getFieldVariable<RealVectorValue>(tid, var_name);
6297
6298 mooseError("Unknown variable " + var_name);
6299}

◆ getXFEM()

std::shared_ptr< XFEMInterface > FEProblemBase::getXFEM ( )
inlineinherited

Get a pointer to the XFEM controller object.

Definition at line 2143 of file FEProblemBase.h.

2143{ return _xfem; }
std::shared_ptr< XFEMInterface > _xfem
Pointer to XFEM controller.

◆ ghostedElems()

virtual std::set< dof_id_type > & SubProblem::ghostedElems ( )
inlinevirtualinherited

Return the list of elements that should have their DoFs ghosted to this processor.

Returns
The list

Reimplemented in DisplacedProblem.

Definition at line 680 of file SubProblem.h.

680{ return _ghosted_elems; }

Referenced by SystemBase::augmentSendList(), NearestNodeLocator::findNodes(), DisplacedProblem::ghostedElems(), and NearestNodeLocator::updatePatch().

◆ ghostGhostedBoundaries()

void FEProblemBase::ghostGhostedBoundaries ( )
overridevirtualinherited

Causes the boundaries added using addGhostedBoundary to actually be ghosted.

Implements SubProblem.

Definition at line 2250 of file FEProblemBase.C.

2251{
2252 TIME_SECTION("ghostGhostedBoundaries", 3, "Ghosting Ghosted Boundaries");
2253
2255
2258}
void ghostGhostedBoundaries()
Actually do the ghosting of boundaries that need to be ghosted to this processor.
Definition MooseMesh.C:3415

Referenced by DisplacedProblem::ghostGhostedBoundaries(), FEProblemBase::init(), and FEProblemBase::meshChanged().

◆ handleException()

void FEProblemBase::handleException ( const std::string &  calling_method)
privateinherited

Handle exceptions.

Note that the result of this call will be a thrown MooseException. The caller of this method must determine how to handle the thrown exception

Definition at line 7720 of file FEProblemBase.C.

7721{
7722 auto create_exception_message =
7723 [&calling_method](const std::string & exception_type, const auto & exception)
7724 {
7725 return std::string("A " + exception_type + " was raised during FEProblemBase::" +
7726 calling_method + "\n" + std::string(exception.what()));
7727 };
7728
7729 try
7730 {
7731 throw;
7732 }
7733 catch (const MooseException & e)
7734 {
7735 setException(create_exception_message("MooseException", e));
7736 }
7737 catch (const MetaPhysicL::LogicError & e)
7738 {
7740 }
7741 catch (const libMesh::PetscSolverException & e)
7742 {
7743 // One PETSc solver exception that we cannot currently recover from are new nonzero errors. In
7744 // particular I have observed the following scenario in a parallel test:
7745 // - Both processes throw because of a new nonzero during MOOSE's computeJacobianTags
7746 // - We potentially handle the exceptions nicely here
7747 // - When the matrix is closed in libMesh's libmesh_petsc_snes_solver, there is a new nonzero
7748 // throw which we do not catch here in MOOSE and the simulation terminates. This only appears
7749 // in parallel (and not all the time; a test I was examining threw with distributed mesh, but
7750 // not with replicated). In serial there are no new throws from libmesh_petsc_snes_solver.
7751 // So for uniformity of behavior across serial/parallel, we will choose to abort here and always
7752 // produce a non-zero exit code
7753 mooseError(create_exception_message("libMesh::PetscSolverException", e));
7754 }
7755 catch (const std::exception & e)
7756 {
7757 // This might be libMesh detecting a degenerate Jacobian or matrix
7758 if (strstr(e.what(), "Jacobian") || strstr(e.what(), "singular") ||
7759 strstr(e.what(), "det != 0"))
7760 setException(create_exception_message("libMesh DegenerateMap", e));
7761 else
7762 {
7763 const auto message = create_exception_message("std::exception", e);
7765 mooseError(message);
7766 else
7767 setException(message);
7768 }
7769 }
7770
7772}
virtual void setException(const std::string &message)
Set an exception, which is stored at this point by toggling a member variable in this class,...
const bool _regard_general_exceptions_as_errors
If we catch an exception during residual/Jacobian evaluaton for which we don't have specific handling...
virtual void checkExceptionAndStopSolve(bool print_message=true)
Check to see if an exception has occurred on any processor and, if possible, force the solve to fail,...
void translateMetaPhysicLError(const MetaPhysicL::LogicError &)
emit a relatively clear error message when we catch a MetaPhysicL logic error
Definition MooseError.C:155

Referenced by FEProblemBase::computeBounds(), FEProblemBase::computeJacobianTags(), FEProblemBase::computeResidualAndJacobian(), FEProblemBase::computeResidualTags(), and FEProblemBase::computeUserObjectsInternal().

◆ hasActiveElementalMooseVariables()

bool SubProblem::hasActiveElementalMooseVariables ( const THREAD_ID  tid) const
virtualinherited

Whether or not a list of active elemental moose variables has been set.

Returns
True if there has been a list of active elemental moose variables set, False otherwise

Definition at line 461 of file SubProblem.C.

462{
464}
std::vector< unsigned int > _has_active_elemental_moose_variables
Whether or not there is currently a list of active elemental moose variables.

Referenced by SystemBase::prepare(), SystemBase::prepareFace(), and SystemBase::reinitElem().

◆ hasActiveMaterialProperties()

bool FEProblemBase::hasActiveMaterialProperties ( const THREAD_ID  tid) const
inherited

Method to check whether or not a list of active material roperties has been set.

This method is called by reinitMaterials to determine whether Material computeProperties methods need to be called. If the return is False, this check prevents unnecessary material property computation

Parameters
tidThe thread id
Returns
True if there has been a list of active material properties set, False otherwise

Definition at line 6464 of file FEProblemBase.C.

6465{
6467}

Referenced by ComputeMarkerThread::onElement(), FEProblemBase::reinitMaterials(), FEProblemBase::reinitMaterialsBoundary(), FEProblemBase::reinitMaterialsFace(), FEProblemBase::reinitMaterialsFaceOnBoundary(), FEProblemBase::reinitMaterialsInterface(), FEProblemBase::reinitMaterialsNeighbor(), and FEProblemBase::reinitMaterialsNeighborOnBoundary().

◆ hasAuxiliaryVariable()

bool SubProblem::hasAuxiliaryVariable ( const std::string &  var_name) const
virtualinherited

◆ hasBase()

bool MooseBase::hasBase ( ) const
inlineinherited
Returns
Whether or not this object has a registered base (set via InputParameters::registerBase())

Definition at line 142 of file MooseBase.h.

142{ return _pars.hasBase(); }
bool hasBase() const

◆ hasBlockMaterialProperty()

bool SubProblem::hasBlockMaterialProperty ( SubdomainID  block_id,
const std::string &  prop_name 
)
virtualinherited

Check if a material property is defined on a block.

Definition at line 512 of file SubProblem.C.

513{
514 auto it = _map_block_material_props.find(bid);
515 if (it == _map_block_material_props.end())
516 return false;
517
518 if (it->second.count(prop_name) > 0)
519 return true;
520 else
521 return false;
522}

◆ hasBoundaryMaterialProperty()

bool SubProblem::hasBoundaryMaterialProperty ( BoundaryID  boundary_id,
const std::string &  prop_name 
)
virtualinherited

Check if a material property is defined on a block.

Definition at line 571 of file SubProblem.C.

572{
573 auto it = _map_boundary_material_props.find(bid);
574 if (it == _map_boundary_material_props.end())
575 return false;
576
577 if (it->second.count(prop_name) > 0)
578 return true;
579 else
580 return false;
581}

◆ hasConvergence()

bool FEProblemBase::hasConvergence ( const std::string &  name,
const THREAD_ID  tid = 0 
) const
virtualinherited

Returns true if the problem has a Convergence object of the given name.

Definition at line 2777 of file FEProblemBase.C.

2778{
2779 return _convergences.hasActiveObject(name, tid);
2780}
bool hasActiveObject(const std::string &name, THREAD_ID tid=0) const
Convenience functions for checking/getting specific objects.

Referenced by ParsedConvergence::initializeSymbols().

◆ hasDampers()

bool FEProblemBase::hasDampers ( )
inlineinherited

Whether or not this system has dampers.

Definition at line 1624 of file FEProblemBase.h.

1624{ return _has_dampers; }

Referenced by NonlinearSystemBase::preInit(), and NonlinearSystem::solve().

◆ hasDistribution()

bool FEProblemBase::hasDistribution ( const std::string &  name) const
virtualinherited

Definition at line 2853 of file FEProblemBase.C.

2854{
2855 std::vector<Distribution *> objs;
2856 theWarehouse()
2857 .query()
2858 .condition<AttribSystem>("Distribution")
2859 .condition<AttribName>(name)
2860 .queryInto(objs);
2861 return !objs.empty();
2862}

◆ hasException()

virtual bool FEProblemBase::hasException ( )
inlinevirtualinherited

Whether or not an exception has occurred.

Definition at line 535 of file FEProblemBase.h.

535{ return _has_exception; }

Referenced by NonlinearSystem::converged(), ThreadedNodeLoop< RangeType, IteratorType >::keepGoing(), and ThreadedElementLoop< RangeType >::keepGoing().

◆ hasFunction()

bool FEProblemBase::hasFunction ( const std::string &  name,
const THREAD_ID  tid = 0 
)
virtualinherited

◆ hasFunctor()

bool SubProblem::hasFunctor ( const std::string &  name,
const THREAD_ID  tid 
) const
inherited

checks whether we have a functor corresponding to name on the thread id tid

Definition at line 1275 of file SubProblem.C.

1276{
1277 mooseAssert(tid < _functors.size(), "Too large a thread ID");
1278 auto & functors = _functors[tid];
1279 return (functors.find("wraps_" + name) != functors.end());
1280}

Referenced by FunctorInterface::isFunctor().

◆ hasFunctorWithType()

template<typename T >
bool SubProblem::hasFunctorWithType ( const std::string &  name,
const THREAD_ID  tid 
) const
inherited

checks whether we have a functor of type T corresponding to name on the thread id tid

Definition at line 1338 of file SubProblem.h.

1339{
1340 mooseAssert(tid < _functors.size(), "Too large a thread ID");
1341 auto & functors = _functors[tid];
1342
1343 const auto & it = functors.find("wraps_" + name);
1344 constexpr bool requested_functor_is_ad =
1345 !std::is_same<T, typename MetaPhysicL::RawType<T>::value_type>::value;
1346
1347 if (it == functors.end())
1348 return false;
1349 else
1350 return dynamic_cast<Moose::Functor<T> *>(
1351 requested_functor_is_ad ? std::get<2>(it->second).get() : std::get<1>(it->second).get());
1352}

◆ hasFVInterpolationMethod()

bool FEProblemBase::hasFVInterpolationMethod ( const InterpolationMethodName &  name) const
inherited

Check if an FV interpolation method with a given name exists.

Definition at line 4858 of file FEProblemBase.C.

4859{
4860 std::vector<FVInterpolationMethod *> methods;
4861 theWarehouse()
4862 .query()
4863 .condition<AttribSystem>("FVInterpolationMethod")
4864 .condition<AttribThread>(0)
4865 .condition<AttribName>(name)
4866 .queryInto(methods);
4867 return !methods.empty();
4868}

Referenced by FVInterpolationMethodInterface::hasFVInterpolationMethod().

◆ hasInitialAdaptivity() [1/2]

bool FEProblemBase::hasInitialAdaptivity ( ) const
inlineinherited

Return a Boolean indicating whether initial AMR is turned on.

Definition at line 2131 of file FEProblemBase.h.

2131{ return _adaptivity.getInitialSteps() > 0; }
unsigned int getInitialSteps() const
Pull out the number of initial steps previously set by calling init()
Definition Adaptivity.h:112

◆ hasInitialAdaptivity() [2/2]

bool FEProblemBase::hasInitialAdaptivity ( ) const
inlineinherited

Return a Boolean indicating whether initial AMR is turned on.

Definition at line 2136 of file FEProblemBase.h.

2136{ return false; }

◆ hasJacobian()

bool FEProblemBase::hasJacobian ( ) const
inherited

Returns _has_jacobian.

Definition at line 9498 of file FEProblemBase.C.

9499{
9500 return _has_jacobian;
9501}

Referenced by DisplacedProblem::prepare().

◆ hasKokkosFunction()

virtual bool FEProblemBase::hasKokkosFunction ( const std::string &  name) const
virtualinherited

Get whether a Kokkos function exists.

Parameters
nameThe Kokkos function name
Returns
Whether a Kokkos function exists

Referenced by FEProblemBase::getKokkosFunction().

◆ hasKokkosObjects()

bool FEProblemBase::hasKokkosObjects ( ) const
inlineinherited
Returns
whether any Kokkos object was added in the problem

Definition at line 3006 of file FEProblemBase.h.

3006{ return _has_kokkos_objects; }
bool _has_kokkos_objects
Whether we have any Kokkos objects.

Referenced by MooseMesh::update().

◆ hasKokkosResidualObjects()

bool FEProblemBase::hasKokkosResidualObjects ( ) const
inlineinherited

◆ hasKokkosUserObject()

bool FEProblemBase::hasKokkosUserObject ( const std::string &  name) const
inherited

Check if there if a Kokkos user object of given name.

Parameters
nameThe name of the Kokkos user object being checked for
Returns
true if the Kokkos user object exists, false otherwise

Referenced by FEProblemBase::checkUserObjectNameCollision(), UserObjectInterface::getUserObjectFromFEProblem(), and UserObjectInterface::hasUserObjectByName().

◆ hasLinearConvergenceObjects()

bool FEProblemBase::hasLinearConvergenceObjects ( ) const
inherited

Whether we have linear convergence objects.

Definition at line 9821 of file FEProblemBase.C.

9822{
9823 // If false,this means we have not set one, not that we are querying this too early
9824 // TODO: once there is a default linear CV object, error on the 'not set' case
9825 return _linear_convergence_names.has_value();
9826}

Referenced by Moose::PetscSupport::petscSetDefaults().

◆ hasLinearVariable()

bool SubProblem::hasLinearVariable ( const std::string &  var_name) const
virtualinherited

Whether or not this problem has this linear variable.

Definition at line 803 of file SubProblem.C.

804{
805 for (const auto i : make_range(numLinearSystems()))
806 if (systemBaseLinear(i).hasVariable(var_name))
807 return true;
808 return false;
809}
virtual std::size_t numLinearSystems() const =0
virtual const SystemBase & systemBaseLinear(const unsigned int sys_num) const =0
Return the linear system object as a base class reference given the system number.

Referenced by SubProblem::getFunctor().

◆ hasMortarCoupling()

virtual bool FEProblemBase::hasMortarCoupling ( ) const
inlinevirtualinherited

Whether the simulation has mortar coupling.

Definition at line 2695 of file FEProblemBase.h.

2695{ return _has_mortar; }

◆ hasMultiApp()

bool FEProblemBase::hasMultiApp ( const std::string &  name) const
inherited

Definition at line 5860 of file FEProblemBase.C.

5861{
5862 return _multi_apps.hasActiveObject(multi_app_name);
5863}

Referenced by FEProblemBase::getMultiApp().

◆ hasMultiApps() [1/2]

bool FEProblemBase::hasMultiApps ( ) const
inlineinherited

◆ hasMultiApps() [2/2]

bool FEProblemBase::hasMultiApps ( ExecFlagType  type) const
inherited

Definition at line 5854 of file FEProblemBase.C.

5855{
5857}

◆ hasNeighborCoupling()

virtual bool FEProblemBase::hasNeighborCoupling ( ) const
inlinevirtualinherited

Whether the simulation has neighbor coupling.

Definition at line 2690 of file FEProblemBase.h.

◆ hasNonlocalCoupling()

virtual bool FEProblemBase::hasNonlocalCoupling ( ) const
inlineoverridevirtualinherited

Whether the simulation has active nonlocal coupling which should be accounted for in the Jacobian.

For this to return true, there must be at least one active nonlocal kernel or boundary condition

Implements SubProblem.

Definition at line 2961 of file FEProblemBase.h.

2961{ return _has_nonlocal_coupling; }

Referenced by DisplacedProblem::hasNonlocalCoupling().

◆ hasPostprocessor()

bool FEProblemBase::hasPostprocessor ( const std::string &  name) const
inherited

Deprecated.

Use hasPostprocessorValueByName

Definition at line 4913 of file FEProblemBase.C.

4914{
4915 mooseDeprecated("FEProblemBase::hasPostprocssor is being removed; use "
4916 "hasPostprocessorValueByName instead.");
4918}
bool hasPostprocessorValueByName(const PostprocessorName &name) const
Whether or not a Postprocessor value exists by a given name.

Referenced by GenericFunctorTimeDerivativeMaterialTempl< is_ad >::GenericFunctorTimeDerivativeMaterialTempl().

◆ hasPostprocessorValueByName()

bool FEProblemBase::hasPostprocessorValueByName ( const PostprocessorName &  name) const
inherited

Whether or not a Postprocessor value exists by a given name.

Parameters
nameThe name of the Postprocessor
Returns
True if a Postprocessor value exists

Note: You should prioritize the use of PostprocessorInterface::hasPostprocessor and PostprocessorInterface::hasPostprocessorByName over this method when possible.

Definition at line 4871 of file FEProblemBase.C.

4872{
4874}
bool hasReporterValue(const ReporterName &reporter_name) const
Return True if a Reporter value with the given type and name have been created.

Referenced by DiffusionCG::addFEBCs(), DiffusionCG::addFEKernels(), DiffusionFV::addFVKernels(), FunctorExtremaPositions::FunctorExtremaPositions(), FEProblemBase::hasPostprocessor(), MooseParsedFunction::initialSetup(), and FunctorIC::value().

◆ hasScalarVariable()

bool FEProblemBase::hasScalarVariable ( const std::string &  var_name) const
overridevirtualinherited

Returns a Boolean indicating whether any system contains a variable with the name provided.

Implements SubProblem.

Definition at line 6314 of file FEProblemBase.C.

6315{
6316 for (auto & sys : _solver_systems)
6317 if (sys->hasScalarVariable(var_name))
6318 return true;
6319 if (_aux->hasScalarVariable(var_name))
6320 return true;
6321
6322 return false;
6323}

Referenced by FEProblemBase::addInitialCondition(), FEProblemBase::addObjectParamsHelper(), EigenProblem::adjustEigenVector(), FEProblemBase::checkDuplicatePostprocessorVariableNames(), AdvancedOutput::initAvailableLists(), MooseParsedFunctionWrapper::initialize(), ChainControlParsedFunctionWrapper::initializeFunctionInputs(), MooseParsedFunction::initialSetup(), AdvancedOutput::initShowHideLists(), and Split::setup().

◆ hasScalingVector()

void SubProblem::hasScalingVector ( const unsigned int  nl_sys_num)
inherited

Tells this problem that the assembly associated with the given nonlinear system number involves a scaling vector.

Definition at line 1171 of file SubProblem.C.

1172{
1173 for (const THREAD_ID tid : make_range(libMesh::n_threads()))
1174 assembly(tid, nl_sys_num).hasScalingVector();
1175}
void hasScalingVector(const unsigned int nl_sys_num)
Tells this problem that the assembly associated with the given nonlinear system number involves a sca...
virtual Assembly & assembly(const THREAD_ID tid, const unsigned int sys_num)=0

Referenced by SystemBase::addScalingVector().

◆ hasSetMultiAppFixedPointConvergenceName()

bool FEProblemBase::hasSetMultiAppFixedPointConvergenceName ( ) const
inlineinherited

Returns true if the problem has set the fixed point convergence name.

Definition at line 771 of file FEProblemBase.h.

772 {
774 }

◆ hasSetSteadyStateConvergenceName()

bool FEProblemBase::hasSetSteadyStateConvergenceName ( ) const
inlineinherited

Returns true if the problem has set the steady-state detection convergence name.

Definition at line 776 of file FEProblemBase.h.

777 {
778 return _steady_state_convergence_name.has_value();
779 }

◆ hasSolutionState()

bool FEProblemBase::hasSolutionState ( unsigned int  state,
Moose::SolutionIterationType  iteration_type 
) const
inherited

Whether we need up to old (1) or older (2) solution states for a given type of iteration.

Parameters
oldest_neededoldest solution state needed
iteration_typethe type of iteration for which old/older states are needed

Definition at line 774 of file FEProblemBase.C.

776{
777 bool has_solution_state = false;
778 for (auto & sys : _solver_systems)
779 has_solution_state |= sys->hasSolutionState(state, iteration_type);
780 has_solution_state |= _aux->hasSolutionState(state, iteration_type);
781 return has_solution_state;
782}
bool hasSolutionState(unsigned int state, Moose::SolutionIterationType iteration_type) const
Whether we need up to old (1) or older (2) solution states for a given type of iteration.

◆ hasSolverVariable()

bool FEProblemBase::hasSolverVariable ( const std::string &  var_name) const
inherited

Definition at line 6246 of file FEProblemBase.C.

6247{
6248 for (auto & sys : _solver_systems)
6249 if (sys->hasVariable(var_name))
6250 return true;
6251
6252 return false;
6253}

Referenced by FunctorChangeFunctorMaterialTempl< is_ad >::FunctorChangeFunctorMaterialTempl().

◆ hasTimeIntegrator()

bool FEProblemBase::hasTimeIntegrator ( ) const
inlineinherited

Returns whether or not this Problem has a TimeIntegrator.

Definition at line 2419 of file FEProblemBase.h.

2419{ return _has_time_integrator; }

Referenced by TransientBase::setupTimeIntegrator().

◆ hasUOAuxStateCheck()

bool FEProblemBase::hasUOAuxStateCheck ( ) const
inlineinherited

Whether or not MOOSE will perform a user object/auxiliary kernel state check.

Definition at line 220 of file FEProblemBase.h.

220{ return _uo_aux_state_check; }

◆ hasUserObject()

bool FEProblemBase::hasUserObject ( const std::string &  name) const
inherited

Check if there if a user object of given name.

Parameters
nameThe name of the user object being checked for
Returns
true if the user object exists, false otherwise

Definition at line 4784 of file FEProblemBase.C.

4785{
4786 std::vector<UserObject *> objs;
4787 theWarehouse()
4788 .query()
4789 .condition<AttribSystem>("UserObject")
4790 .condition<AttribThread>(0)
4791 .condition<AttribName>(name)
4792 .queryInto(objs);
4793 return !objs.empty();
4794}

Referenced by FEProblemBase::checkUserObjectNameCollision(), DistributedPositions::DistributedPositions(), MultiAppGeneralFieldFunctorTransfer::execute(), UserObjectInterface::getUserObjectFromFEProblem(), UserObjectInterface::hasUserObjectByName(), ReporterTransferInterface::hideVariableHelper(), ParsedDownSelectionPositions::initialize(), and TransformedPositions::TransformedPositions().

◆ hasVariable()

bool FEProblemBase::hasVariable ( const std::string &  var_name) const
overridevirtualinherited

◆ haveADObjects() [1/3]

bool SubProblem::haveADObjects ( ) const
inlineinherited

Method for reading wehther we have any ad objects.

Definition at line 779 of file SubProblem.h.

779{ return _have_ad_objects; }
bool _have_ad_objects
AD flag indicating whether any AD objects have been added.

Referenced by FEProblemBase::computeJacobianTags(), FEProblemBase::computeResidualAndJacobian(), and FEProblemBase::init().

◆ haveADObjects() [2/3]

virtual void SubProblem::haveADObjects ( bool  have_ad_objects)
inlinevirtualinherited

Method for setting whether we have any ad objects.

Reimplemented from SubProblem.

Definition at line 775 of file SubProblem.h.

775{ _have_ad_objects = have_ad_objects; }

◆ haveADObjects() [3/3]

void FEProblemBase::haveADObjects ( bool  have_ad_objects)
overridevirtualinherited

Method for setting whether we have any ad objects.

Reimplemented from SubProblem.

Definition at line 9559 of file FEProblemBase.C.

9560{
9561 _have_ad_objects = have_ad_objects;
9563 _displaced_problem->SubProblem::haveADObjects(have_ad_objects);
9564}

◆ haveDisplaced()

bool FEProblemBase::haveDisplaced ( ) const
inlinefinaloverridevirtualinherited

Whether we have a displaced problem in our simulation.

Implements SubProblem.

Definition at line 2795 of file FEProblemBase.h.

2795{ return _displaced_problem.get(); }

◆ haveFV()

virtual bool FEProblemBase::haveFV ( ) const
inlineoverridevirtualinherited

◆ havePRefinement()

bool SubProblem::havePRefinement ( ) const
inlineinherited

Query whether p-refinement has been requested at any point during the simulation.

Definition at line 1024 of file SubProblem.h.

1024{ return _have_p_refinement; }
bool _have_p_refinement
Whether p-refinement has been requested at any point during the simulation.

Referenced by AdvancedOutput::initAvailableLists(), and FEProblemBase::meshChanged().

◆ haveXFEM()

bool FEProblemBase::haveXFEM ( )
inlineinherited

Find out whether the current analysis is using XFEM.

Definition at line 2146 of file FEProblemBase.h.

2146{ return _xfem != nullptr; }

Referenced by FixedPointSolve::solveStep(), TransientBase::takeStep(), and FEProblemBase::updateMeshXFEM().

◆ identifyVariableGroupsInNL()

bool FEProblemBase::identifyVariableGroupsInNL ( ) const
inlineinherited

Whether to identify variable groups in nonlinear systems.

This affects dof ordering

Definition at line 2966 of file FEProblemBase.h.

const bool _identify_variable_groups_in_nl
Whether to identify variable groups in nonlinear systems. This affects dof ordering.

Referenced by NonlinearSystemBase::NonlinearSystemBase().

◆ ignoreZerosInJacobian()

bool FEProblemBase::ignoreZerosInJacobian ( ) const
inlineinherited

Will return true if zeros in the Jacobian are to be dropped from the sparsity pattern.

Note that this can make preserving the matrix sparsity pattern impossible.

Definition at line 2391 of file FEProblemBase.h.

2391{ return _ignore_zeros_in_jacobian; }
bool _ignore_zeros_in_jacobian
Whether to ignore zeros in the Jacobian, thereby leading to a reduced sparsity pattern.

Referenced by NonlinearSystemBase::computeJacobianInternal(), NonlinearSystemBase::computeResidualAndJacobianInternal(), and NonlinearSystemBase::constraintJacobians().

◆ immediatelyPrintInvalidSolution()

bool FEProblemBase::immediatelyPrintInvalidSolution ( ) const
inlineinherited

Whether or not the solution invalid warnings are printed out immediately.

Definition at line 2416 of file FEProblemBase.h.

const bool & _immediately_print_invalid_solution

Referenced by SolutionInvalidInterface::flagInvalidSolutionInternal().

◆ incrementMultiAppTStep()

void FEProblemBase::incrementMultiAppTStep ( ExecFlagType  type)
inherited

Advance the MultiApps t_step (incrementStepOrReject) associated with the ExecFlagType.

Definition at line 6051 of file FEProblemBase.C.

6052{
6053 const auto & multi_apps = _multi_apps[type].getActiveObjects();
6054
6055 if (multi_apps.size())
6056 for (const auto & multi_app : multi_apps)
6057 multi_app->incrementTStep(_time);
6058}

Referenced by TransientBase::incrementStepOrReject().

◆ init()

void FEProblemBase::init ( )
overridevirtualinherited

Implements Problem.

Reimplemented in EigenProblem, and FEProblem.

Definition at line 6738 of file FEProblemBase.C.

6739{
6740 if (_initialized)
6741 return;
6742
6743 TIME_SECTION("init", 2, "Initializing");
6744
6745 // call executioner's preProblemInit so that it can do some setups before problem init
6747
6748 // If we have AD and we are doing global AD indexing, then we should by default set the matrix
6749 // coupling to full. If the user has told us to trust their coupling matrix, then this call will
6750 // not do anything
6753
6754 for (const auto i : index_range(_nl))
6755 {
6756 auto & nl = _nl[i];
6757 auto & cm = _cm[i];
6758
6759 unsigned int n_vars = nl->nVariables();
6760 {
6761 TIME_SECTION("fillCouplingMatrix", 3, "Filling Coupling Matrix");
6762
6763 switch (_coupling)
6764 {
6766 cm = std::make_unique<CouplingMatrix>(n_vars);
6767 for (unsigned int i = 0; i < n_vars; i++)
6768 (*cm)(i, i) = 1;
6769 break;
6770
6771 // for full jacobian
6773 cm = std::make_unique<CouplingMatrix>(n_vars);
6774 for (unsigned int i = 0; i < n_vars; i++)
6775 for (unsigned int j = 0; j < n_vars; j++)
6776 (*cm)(i, j) = 1;
6777 break;
6778
6780 // do nothing, _cm was already set through couplingMatrix() call
6781 break;
6782 }
6783 }
6784
6785 nl->dofMap()._dof_coupling = cm.get();
6786
6787 // If there are no variables, make sure to pass a nullptr coupling
6788 // matrix, to avoid warnings about non-nullptr yet empty
6789 // CouplingMatrices.
6790 if (n_vars == 0)
6791 nl->dofMap()._dof_coupling = nullptr;
6792
6793 nl->dofMap().attach_extra_sparsity_function(&extraSparsity, nl.get());
6794 nl->dofMap().attach_extra_send_list_function(&extraSendList, nl.get());
6795 _aux->dofMap().attach_extra_send_list_function(&extraSendList, _aux.get());
6796
6797 if (!_skip_nl_system_check && _solve && n_vars == 0)
6798 mooseError("No variables specified in nonlinear system '", nl->name(), "'.");
6799 }
6800
6801 ghostGhostedBoundaries(); // We do this again right here in case new boundaries have been added
6802
6803 // We may have added element/nodes to the mesh in ghostGhostedBoundaries so we need to update
6804 // all of our mesh information. We need to make sure that mesh information is up-to-date before
6805 // EquationSystems::init because that will call through to updateGeomSearch (for sparsity
6806 // augmentation) and if we haven't added back boundary node information before that latter call,
6807 // then we're screwed. We'll get things like "Unable to find closest node!"
6811
6812 if (_mesh.doingPRefinement())
6813 {
6816 _displaced_problem->preparePRefinement();
6817 }
6818
6819 // do not assemble system matrix for JFNK solve
6820 for (auto & nl : _nl)
6821 if (solverParams(nl->number())._type == Moose::ST_JFNK)
6822 nl->turnOffJacobian();
6823
6824 for (auto & sys : _solver_systems)
6825 sys->preInit();
6826 _aux->preInit();
6827
6828 // Build the mortar segment meshes, if they haven't been already, for a couple reasons:
6829 // 1) Get the ghosting correct for both static and dynamic meshes
6830 // 2) Make sure the mortar mesh is built for mortar constraints that live on the static mesh
6831 //
6832 // It is worth-while to note that mortar meshes that live on a dynamic mesh will be built
6833 // during residual and Jacobian evaluation because when displacements are solution variables
6834 // the mortar mesh will move and change during the course of a non-linear solve. We DO NOT
6835 // redo ghosting during non-linear solve, so for purpose 1) the below call has to be made
6836 if (!_mortar_data->initialized())
6838
6839 {
6840 TIME_SECTION("EquationSystems::Init", 2, "Initializing Equation Systems");
6841 es().init();
6842 }
6843
6844 for (auto & sys : _solver_systems)
6845 sys->postInit();
6846 _aux->postInit();
6847
6848 // Now that the equation system and the dof distribution is done, we can generate the
6849 // finite volume-related parts if needed.
6850 if (haveFV())
6852
6853 for (auto & sys : _solver_systems)
6854 sys->update();
6855 _aux->update();
6856
6857 for (THREAD_ID tid = 0; tid < libMesh::n_threads(); ++tid)
6858 for (const auto i : index_range(_nl))
6859 {
6860 mooseAssert(
6861 _cm[i],
6862 "Coupling matrix not set for system "
6863 << i
6864 << ". This should only happen if a preconditioner was not setup for this system");
6865 _assembly[tid][i]->init(_cm[i].get());
6866 }
6867
6869 _displaced_problem->init();
6870
6871#ifdef MOOSE_KOKKOS_ENABLED
6873 initKokkos();
6874#endif
6875
6876 _initialized = true;
6877}
void extraSendList(std::vector< dof_id_type > &send_list, void *context)
///< Type of coordinate system
void extraSparsity(libMesh::SparsityPattern::Graph &sparsity, std::vector< dof_id_type > &n_nz, std::vector< dof_id_type > &n_oz, void *context)
Free function used for a libMesh callback.
virtual void preProblemInit()
Perform initializations during executing actions right before init_problem task.
Definition Executioner.h:57
virtual bool haveFV() const override
returns true if this problem includes/needs finite volume functionality.
void setCoupling(Moose::CouplingType type)
Set the coupling between variables TODO: allow user-defined coupling.
SolverParams & solverParams(unsigned int solver_sys_num=0)
Get the solver parameters.
void initKokkos()
Construct Kokkos assembly and systems and allocate Kokkos material property storages.
virtual void ghostGhostedBoundaries() override
Causes the boundaries added using addGhostedBoundary to actually be ghosted.
Executioner * getExecutioner() const
Retrieve the Executioner for this App.
Definition MooseApp.C:2015
const std::string & _type
The type of this class.
Definition MooseBase.h:378
void setupFiniteVolumeMeshData() const
Sets up the additional data needed for finite volume computations.
Definition MooseMesh.C:4193
void meshChanged()
Declares that the MooseMesh has changed, invalidates cached data and rebuilds caches.
Definition MooseMesh.C:889
void preparePRefinement()
Prepare DofMap and Assembly classes with our p-refinement information.
@ ST_JFNK
Jacobian-Free Newton Krylov.
Definition MooseTypes.h:899
@ COUPLING_FULL
Definition MooseTypes.h:787
@ COUPLING_DIAG
Definition MooseTypes.h:786
@ COUPLING_CUSTOM
Definition MooseTypes.h:788
bool globalADIndexing()
Whether we are using global AD indexing.
Definition ADUtils.h:28

Referenced by EigenProblem::init(), and FEProblem::init().

◆ initElementStatefulProps()

void FEProblemBase::initElementStatefulProps ( const libMesh::ConstElemRange elem_range,
const bool  threaded 
)
inherited

Initialize stateful properties for elements in a specific elem_range This is needed when elements/boundary nodes are added to a specific subdomain at an intermediate step.

Definition at line 8877 of file FEProblemBase.C.

8878{
8881 if (threaded)
8882 Threads::parallel_reduce(elem_range, cmt);
8883 else
8884 cmt(elem_range, true);
8885
8886#ifdef MOOSE_KOKKOS_ENABLED
8889#endif
8890}
void initKokkosStatefulProps()

Referenced by ActivateElementsUserObjectBase::finalize(), and ElementSubdomainModifierBase::initElementStatefulProps().

◆ initialAdaptMesh()

void FEProblemBase::initialAdaptMesh ( )
virtualinherited

Definition at line 8545 of file FEProblemBase.C.

8546{
8547 unsigned int n = adaptivity().getInitialSteps();
8549 if (n)
8550 {
8551 if (!_mesh.interiorLowerDBlocks().empty() || !_mesh.boundaryLowerDBlocks().empty())
8552 mooseError("HFEM does not support mesh adaptivity currently.");
8553
8554 TIME_SECTION("initialAdaptMesh", 2, "Performing Initial Adaptivity");
8555
8556 for (unsigned int i = 0; i < n; i++)
8557 {
8560
8562 {
8564 /*intermediate_change=*/false, /*contract_mesh=*/true, /*clean_refinement_flags=*/true);
8565
8566 // reproject the initial condition
8568
8570 }
8571 else
8572 {
8573 _console << "Mesh unchanged, skipping remaining steps..." << std::endl;
8574 return;
8575 }
8576 }
8577 }
8578}
bool initialAdaptMesh()
Used during initial adaptivity.
Definition Adaptivity.C:295
Adaptivity & adaptivity()

◆ initialized()

bool FEProblemBase::initialized ( ) const
inlineinherited
Returns
Whether the problem was initialized, i.e. whether init() has executed

Definition at line 168 of file FEProblemBase.h.

168{ return _initialized; }

Referenced by MooseMesh::update().

◆ initialSetup()

void FEProblemBase::initialSetup ( )
overridevirtualinherited

If this is a restart run, the user may want to override the start time, which we already set in the constructor. "_time" however will have been "restored" from the restart file. We need to honor the original request of the developer now that the restore has been completed.

If we are not recovering but we are doing restart (_app.getExodusFileRestart() == true) with additional uniform refinements. We have to delay the refinement until this point in time so that the equation systems are initialized and projections can be performed.

Reimplemented from SubProblem.

Reimplemented in MFEMProblem.

Definition at line 924 of file FEProblemBase.C.

925{
926 TIME_SECTION("initialSetup", 2, "Performing Initial Setup");
927
929
931 mooseError("Checkpoint recovery and restart and exodus restart are all mutually exclusive.");
932
934 mooseWarning("MOOSE may fail to catch an exception when the \"skip_exception_check\" parameter "
935 "is used. If you receive a terse MPI error during execution, remove this "
936 "parameter and rerun your simulation");
937
938 // set state flag indicating that we are in or beyond initialSetup.
939 // This can be used to throw errors in methods that _must_ be called at construction time.
942
943 // Setup the solution states (current, old, etc) in each system based on
944 // its default and the states requested of each of its variables
945 for (const auto i : index_range(_solver_systems))
946 {
947 _solver_systems[i]->initSolutionState();
949 getDisplacedProblem()->solverSys(i).initSolutionState();
950 }
951 _aux->initSolutionState();
953 getDisplacedProblem()->auxSys().initSolutionState();
954
955 // always execute to get the max number of DoF per element and node needed to initialize phi_zero
956 // variables
957 dof_id_type global_max_var_n_dofs_per_elem = 0;
958 for (const auto i : index_range(_solver_systems))
959 {
960 auto & sys = *_solver_systems[i];
961 dof_id_type max_var_n_dofs_per_elem;
962 dof_id_type max_var_n_dofs_per_node;
963 {
964 TIME_SECTION("computingMaxDofs", 3, "Computing Max Dofs Per Element");
965
966 MaxVarNDofsPerElem mvndpe(*this, sys);
968 max_var_n_dofs_per_elem = mvndpe.max();
969 _communicator.max(max_var_n_dofs_per_elem);
970
971 MaxVarNDofsPerNode mvndpn(*this, sys);
973 max_var_n_dofs_per_node = mvndpn.max();
974 _communicator.max(max_var_n_dofs_per_node);
975 global_max_var_n_dofs_per_elem =
976 std::max(global_max_var_n_dofs_per_elem, max_var_n_dofs_per_elem);
977 }
978
979 {
980 TIME_SECTION("assignMaxDofs", 5, "Assigning Maximum Dofs Per Elem");
981
982 sys.assignMaxVarNDofsPerElem(max_var_n_dofs_per_elem);
985 displaced_problem->solverSys(i).assignMaxVarNDofsPerElem(max_var_n_dofs_per_elem);
986
987 sys.assignMaxVarNDofsPerNode(max_var_n_dofs_per_node);
989 displaced_problem->solverSys(i).assignMaxVarNDofsPerNode(max_var_n_dofs_per_node);
990 }
991 }
992
993 {
994 TIME_SECTION("resizingVarValues", 5, "Resizing Variable Values");
995
996 for (unsigned int tid = 0; tid < libMesh::n_threads(); ++tid)
997 {
998 _phi_zero[tid].resize(global_max_var_n_dofs_per_elem, std::vector<Real>(getMaxQps(), 0.));
999 _grad_phi_zero[tid].resize(global_max_var_n_dofs_per_elem,
1000 std::vector<RealGradient>(getMaxQps(), RealGradient(0.)));
1001 _second_phi_zero[tid].resize(global_max_var_n_dofs_per_elem,
1002 std::vector<RealTensor>(getMaxQps(), RealTensor(0.)));
1003 }
1004 }
1005
1006 // Set up stateful material property redistribution, if we suspect
1007 // it may be necessary later.
1009
1011 {
1012 // Only load all of the vectors if we're recovering
1014
1015 // This forces stateful material property loading to be an exact one-to-one match
1016 if (_app.isRecovering())
1017 {
1019 props->setRecovering();
1020
1021#ifdef MOOSE_KOKKOS_ENABLED
1022 for (auto props :
1024 props->setRecovering();
1025#endif
1026 }
1027
1028 TIME_SECTION("restore", 3, "Restoring from backup");
1029
1030 // We could have a cached backup when this app is a sub-app and has been given a Backup
1031 if (!_app.hasInitialBackup())
1033 else
1035
1041 if (_app.isRestarting())
1042 {
1043 if (_app.hasStartTime())
1045 else
1046 _time_old = _time;
1047 }
1048 }
1049 else
1050 {
1052
1053 if (reader)
1054 {
1055 TIME_SECTION("copyingFromExodus", 3, "Copying Variables From Exodus");
1056
1057 for (auto & sys : _solver_systems)
1058 sys->copyVars(*reader);
1059 _aux->copyVars(*reader);
1060 }
1061 else
1062 {
1063 if (_solver_systems[0]->hasVarCopy() || _aux->hasVarCopy())
1064 mooseError("Need Exodus reader to restart variables but the reader is not available\n"
1065 "Use either FileMesh with an Exodus mesh file or FileMeshGenerator with an "
1066 "Exodus mesh file and with use_for_exodus_restart equal to true");
1067 }
1068 }
1069
1070 // Perform output related setups
1072
1073 // Flush all output to _console that occur during construction and initialization of objects
1075
1076 // Build Refinement and Coarsening maps for stateful material projections if necessary
1077 if ((_adaptivity.isOn() || _num_grid_steps) &&
1080 {
1082 mooseError("Stateful neighbor material properties do not work with mesh adaptivity");
1083
1085 }
1086
1087 if (!_app.isRecovering())
1088 {
1095 {
1096 if (!_app.isUltimateMaster())
1097 mooseError(
1098 "Doing extra refinements when restarting is NOT supported for sub-apps of a MultiApp");
1099
1101 }
1102 }
1103
1104 unsigned int n_threads = libMesh::n_threads();
1105
1106 // Convergence initial setup
1107 {
1108 TIME_SECTION("convergenceInitialSetup", 5, "Initializing Convergence objects");
1109
1110 for (THREAD_ID tid = 0; tid < n_threads; tid++)
1112 }
1113
1114 // UserObject initialSetup
1115 std::set<std::string> depend_objects_ic = _ics.getDependObjects();
1116 std::set<std::string> depend_objects_aux = _aux->getDependObjects();
1117
1118 std::map<int, std::vector<UserObjectBase *>> group_userobjs;
1119
1120 // This replaces all prior updateDependObjects calls on the old user object warehouses.
1121 TheWarehouse::Query uo_query = theWarehouse().query().condition<AttribSystem>("UserObject");
1122 std::vector<UserObjectBase *> userobjs;
1123 uo_query.queryInto(userobjs);
1125 theWarehouse(), getAuxiliarySystem(), _app.getExecuteOnEnum(), userobjs, depend_objects_ic);
1126
1127 for (auto obj : userobjs)
1128 group_userobjs[obj->getParam<int>("execution_order_group")].push_back(obj);
1129
1130#ifdef MOOSE_KOKKOS_ENABLED
1131 {
1132 TheWarehouse::Query uo_query =
1133 theWarehouse().query().condition<AttribSystem>("KokkosUserObject");
1134 std::vector<UserObjectBase *> userobjs;
1135 uo_query.queryInto(userobjs);
1137 theWarehouse(), getAuxiliarySystem(), _app.getExecuteOnEnum(), userobjs, depend_objects_ic);
1138
1139 for (auto obj : userobjs)
1140 group_userobjs[obj->getParam<int>("execution_order_group")].push_back(obj);
1141 }
1142#endif
1143
1144 for (auto & [group, objs] : group_userobjs)
1145 for (auto obj : objs)
1146 obj->initialSetup();
1147
1148 // check if jacobian calculation is done in userobject
1149 for (THREAD_ID tid = 0; tid < n_threads; ++tid)
1151
1152 // Check whether nonlocal coupling is required or not
1156
1157 {
1158 TIME_SECTION("initializingFunctions", 5, "Initializing Functions");
1159
1160 // Call the initialSetup methods for functions
1161 for (THREAD_ID tid = 0; tid < n_threads; tid++)
1162 {
1163 reinitScalars(tid); // initialize scalars so they are properly sized for use as input into
1164 // ParsedFunctions
1166 }
1167
1168#ifdef MOOSE_KOKKOS_ENABLED
1170#endif
1171 }
1172
1173 {
1174 TIME_SECTION("initializingRandomObjects", 5, "Initializing Random Objects");
1175
1176 // Random interface objects
1177 for (const auto & it : _random_data_objects)
1178 it.second->updateSeeds(EXEC_INITIAL);
1179 }
1180
1181 if (!_app.isRecovering())
1182 {
1184
1185 {
1186 TIME_SECTION("ICinitialSetup", 5, "Setting Up Initial Conditions");
1187
1188 for (THREAD_ID tid = 0; tid < n_threads; tid++)
1189 {
1190 _ics.initialSetup(tid);
1191 _fv_ics.initialSetup(tid);
1192 }
1193
1195 }
1196
1198 }
1199
1200 // Materials
1202 {
1203 TIME_SECTION("materialInitialSetup", 3, "Setting Up Materials");
1204
1205 for (THREAD_ID tid = 0; tid < n_threads; tid++)
1206 {
1207 // Sort the Material objects, these will be actually computed by MOOSE in reinit methods.
1208 _materials.sort(tid);
1210
1211 // Call initialSetup on all material objects
1213
1214 // Discrete materials may insert additional dependencies on materials during the initial
1215 // setup. Therefore we resolve the dependencies once more, now with the additional
1216 // dependencies due to discrete materials.
1218 {
1219 _materials.sort(tid);
1221 }
1222 }
1223
1224#ifdef MOOSE_KOKKOS_ENABLED
1225 _kokkos_materials.sort(0, true);
1226#endif
1227
1228 {
1229 TIME_SECTION("computingInitialStatefulProps", 3, "Computing Initial Material Values");
1230
1232
1236#ifdef MOOSE_KOKKOS_ENABLED
1241#endif
1242 }
1243 }
1244
1245 // setRestartInPlace() is set because the property maps have now been setup and we can
1246 // dataLoad() them directly in place
1247 // setRecovering() is set because from now on we require a one-to-one mapping of
1248 // stateful properties because we shouldn't be declaring any more
1250 {
1251 props->setRestartInPlace();
1252 props->setRecovering();
1253 }
1254
1255 for (THREAD_ID tid = 0; tid < n_threads; tid++)
1256 {
1259 _markers.sort(tid);
1261 }
1262
1263#ifdef LIBMESH_ENABLE_AMR
1264
1266 {
1267 unsigned int n = adaptivity().getInitialSteps();
1268 if (n && !_app.isUltimateMaster() && _app.isRestarting())
1269 mooseError("Cannot perform initial adaptivity during restart on sub-apps of a MultiApp!");
1270
1272 }
1273
1274#endif // LIBMESH_ENABLE_AMR
1275
1276 if (!_app.isRecovering() && !_app.isRestarting())
1277 {
1278 // During initial setup the solution is copied to the older solution states (old, older, etc)
1280
1281 // Check if there are old state initial conditions
1282 auto ics = _ics.getActiveObjects();
1283 auto fv_ics = _fv_ics.getActiveObjects();
1284 auto scalar_ics = _scalar_ics.getActiveObjects();
1285 unsigned short ic_state_max = 0;
1286
1287 auto findMax = [&ic_state_max](const auto & obj_list)
1288 {
1289 for (auto ic : obj_list.getActiveObjects())
1290 ic_state_max = std::max(ic_state_max, ic->getState());
1291 };
1292 findMax(_ics);
1293 findMax(_fv_ics);
1294 findMax(_scalar_ics);
1295
1296 // if there are old state ICs, compute them and write to old states accordingly
1297 if (ic_state_max > 0)
1298 {
1299 // state 0 copy (we'll overwrite current state when evaluating ICs and need to restore it once
1300 // we're done with the old/older state ICs)
1301 std::vector<std::unique_ptr<NumericVector<Real>>> state0_sys_buffers(_solver_systems.size());
1302 std::unique_ptr<NumericVector<Real>> state0_aux_buffer;
1303
1304 // save state 0
1305 for (const auto i : index_range(_solver_systems))
1306 state0_sys_buffers[i] = _solver_systems[i]->solutionState(0).clone();
1307
1308 state0_aux_buffer = _aux->solutionState(0).clone();
1309
1310 // compute old state ICs
1311 for (_current_ic_state = 1; _current_ic_state <= ic_state_max; _current_ic_state++)
1312 {
1314
1315 for (auto & sys : _solver_systems)
1316 sys->solutionState(_current_ic_state) = sys->solutionState(0);
1317
1318 _aux->solutionState(_current_ic_state) = _aux->solutionState(0);
1319 }
1321
1322 // recover state 0
1323 for (const auto i : index_range(_solver_systems))
1324 {
1325 _solver_systems[i]->solutionState(0) = *state0_sys_buffers[i];
1326 _solver_systems[i]->solutionState(0).close();
1327 _solver_systems[i]->update();
1328 }
1329 _aux->solutionState(0) = *state0_aux_buffer;
1330 _aux->solutionState(0).close();
1331 _aux->update();
1332 }
1333 }
1334
1335 if (!_app.isRecovering())
1336 {
1337 if (haveXFEM())
1339 }
1340
1341 // Call initialSetup on the solver systems
1342 for (auto & sys : _solver_systems)
1343 sys->initialSetup();
1344
1345 // Auxilary variable initialSetup calls
1346 _aux->initialSetup();
1347
1349 // initialSetup for displaced systems
1350 _displaced_problem->initialSetup();
1351
1352 for (auto & sys : _solver_systems)
1353 sys->setSolution(*(sys->system().current_local_solution.get()));
1354
1355 // Update the nearest node searches (has to be called after the problem is all set up)
1356 // We do this here because this sets up the Element's DoFs to ghost
1358
1360 if (_displaced_mesh)
1362
1363 // We need to move the mesh in order to build a map between mortar secondary and primary
1364 // interfaces. This map will then be used by the AgumentSparsityOnInterface ghosting functor to
1365 // know which dofs we need ghosted when we call EquationSystems::reinit
1366 if (_displaced_problem && _mortar_data->hasDisplacedObjects())
1367 {
1368 _displaced_problem->updateMesh();
1369 // if displacements were applied to the mesh, the mortar mesh should be updated too
1371 }
1372
1373 // Possibly reinit one more time to get ghosting correct
1375
1376 if (_displaced_mesh)
1377 _displaced_problem->updateMesh();
1378
1379 updateGeomSearch(); // Call all of the rest of the geometric searches
1380
1381 for (auto & sys : _solver_systems)
1382 {
1383 const auto & tis = sys->getTimeIntegrators();
1384
1385 {
1386 TIME_SECTION("timeIntegratorInitialSetup", 5, "Initializing Time Integrator");
1387 for (auto & ti : tis)
1388 ti->initialSetup();
1389 }
1390 }
1391
1392 // HUGE NOTE: MultiApp initialSetup() MUST... I repeat MUST be _after_ main-app restartable data
1393 // has been restored
1394
1395 // Call initialSetup on the MultiApps
1396 if (_multi_apps.hasObjects())
1397 {
1398 TIME_SECTION("initialSetupMultiApps", 2, "Initializing MultiApps", false);
1400 }
1401
1402 // Call initialSetup on the transfers
1403 {
1404 TIME_SECTION("initialSetupTransfers", 2, "Initializing Transfers");
1405
1407
1408 // Call initialSetup on the MultiAppTransfers to be executed on TO_MULTIAPP
1409 const auto & to_multi_app_objects = _to_multi_app_transfers.getActiveObjects();
1410 for (const auto & transfer : to_multi_app_objects)
1411 {
1412 transfer->setCurrentDirection(Transfer::DIRECTION::TO_MULTIAPP);
1413 transfer->initialSetup();
1414 }
1415
1416 // Call initialSetup on the MultiAppTransfers to be executed on FROM_MULTIAPP
1417 const auto & from_multi_app_objects = _from_multi_app_transfers.getActiveObjects();
1418 for (const auto & transfer : from_multi_app_objects)
1419 {
1420 transfer->setCurrentDirection(Transfer::DIRECTION::FROM_MULTIAPP);
1421 transfer->initialSetup();
1422 }
1423
1424 // Call initialSetup on the MultiAppTransfers to be executed on BETWEEN_MULTIAPP
1425 const auto & between_multi_app_objects = _between_multi_app_transfers.getActiveObjects();
1426 for (const auto & transfer : between_multi_app_objects)
1427 {
1428 transfer->setCurrentDirection(Transfer::DIRECTION::BETWEEN_MULTIAPP);
1429 transfer->initialSetup();
1430 }
1431 }
1432
1434 {
1435 TIME_SECTION("BoundaryRestrictedNodeIntegrityCheck", 5);
1436
1437 // check that variables are defined along boundaries of boundary restricted nodal objects
1438 const auto & bnd_nodes = getCurrentAlgebraicBndNodeRange();
1439 BoundaryNodeIntegrityCheckThread bnict(*this, uo_query);
1440 Threads::parallel_reduce(bnd_nodes, bnict);
1441
1442 // Nodal bcs aren't threaded
1443 for (auto & nl : _nl)
1444 {
1445 const auto & nodal_bcs = nl->getNodalBCWarehouse();
1446 if (!nodal_bcs.hasBoundaryObjects())
1447 continue;
1448
1449 for (const auto & bnode : bnd_nodes)
1450 {
1451 const auto boundary_id = bnode->_bnd_id;
1452 const Node * const node = bnode->_node;
1453
1454 if (node->processor_id() != this->processor_id())
1455 continue;
1456
1457 const auto & bnd_name = _mesh.getBoundaryName(boundary_id);
1458
1459 // Avoid assertion in getBoundaryObjects that we have boundary objects for this boundary ID
1460 if (!nodal_bcs.hasBoundaryObjects(boundary_id))
1461 continue;
1462
1463 const auto & bnd_objects = nodal_bcs.getBoundaryObjects(boundary_id);
1464 for (const auto & bnd_object : bnd_objects)
1465 {
1466 const auto & bnd_variable = bnd_object->variable();
1467 // Skip if this object uses geometric search because coupled variables may be defined on
1468 // paired boundaries instead of the boundary this node is on. Also skip if this boundary
1469 // condition isn't applicable to the current node, e.g. if the node doesn't have any
1470 // degrees of freedom for the boundary condition's variable
1471 if (!bnd_object->requiresGeometricSearch() &&
1472 bnd_object->checkVariableBoundaryIntegrity() &&
1473 node->n_dofs(nl->number(), bnd_variable.number()))
1474 {
1475 std::set<MooseVariableFieldBase *> vars_to_omit = {
1476 &static_cast<MooseVariableFieldBase &>(
1477 const_cast<MooseVariableBase &>(bnd_variable))};
1478
1480 *bnd_object, bnd_object->checkAllVariables(*node, vars_to_omit), bnd_name);
1481 }
1482 }
1483 }
1484 }
1485 }
1486
1488 {
1489 TIME_SECTION("BoundaryRestrictedElemIntegrityCheck", 5);
1490
1491 // check that variables are defined along boundaries of boundary restricted elemental objects
1493 BoundaryElemIntegrityCheckThread beict(*this, uo_query);
1494 Threads::parallel_reduce(bnd_elems, beict);
1495 }
1496
1497 if (!_app.isRecovering())
1498 {
1500
1502 if (!converged)
1503 mooseError("failed to converge initial MultiApp");
1504
1505 // We'll backup the Multiapp here
1507
1508 for (THREAD_ID tid = 0; tid < n_threads; tid++)
1509 reinitScalars(tid);
1510
1512
1513 // The FEProblemBase::execute method doesn't call all the systems on EXEC_INITIAL, but it does
1514 // set/unset the current flag. Therefore, this resets the current flag to EXEC_INITIAL so that
1515 // subsequent calls (e.g., executeControls) have the proper flag.
1517 }
1518
1519 // Here we will initialize the stateful properties once more since they may have been updated
1520 // during initialSetup by calls to computeProperties.
1521 //
1522 // It's really bad that we don't allow this during restart. It means that we can't add new
1523 // stateful materials
1524 // during restart. This is only happening because this _has_ to be below initial userobject
1525 // execution.
1526 // Otherwise this could be done up above... _before_ restoring restartable data... which would
1527 // allow you to have
1528 // this happen during restart. I honestly have no idea why this has to happen after initial user
1529 // object computation.
1530 // THAT is something we should fix... so I've opened this ticket: #5804
1531 if (!_app.isRecovering() && !_app.isRestarting())
1532 {
1535 {
1536 TIME_SECTION("computeMaterials", 2, "Computing Initial Material Properties");
1537
1539 }
1540#ifdef MOOSE_KOKKOS_ENABLED
1544 {
1545 TIME_SECTION("computeMaterials", 2, "Computing Initial Material Properties");
1546
1548 }
1549#endif
1550 }
1551
1552 // Control Logic
1555
1556 // Scalar variables need to reinited for the initial conditions to be available for output
1557 for (unsigned int tid = 0; tid < n_threads; tid++)
1558 reinitScalars(tid);
1559
1560 if (_displaced_mesh)
1561 _displaced_problem->syncSolutions();
1562
1563 // Writes all calls to _console from initialSetup() methods
1565
1567 {
1569 for (THREAD_ID tid = 0; tid < n_threads; ++tid)
1570 for (auto & assembly : _assembly[tid])
1571 assembly->initNonlocalCoupling();
1572 }
1573
1574 {
1575 TIME_SECTION("lineSearchInitialSetup", 5, "Initializing Line Search");
1576
1577 if (_line_search)
1578 _line_search->initialSetup();
1579 }
1580
1581 // Perform Reporter get/declare check
1583
1584 // We do this late to allow objects to get late restartable data
1587
1589}
void boundaryIntegrityCheckError(const MooseObject &object, const std::set< MooseVariableFieldBase * > &variables, const BoundaryName &boundary_name)
Compose boundary restricted error message for the provided object, variables, and boundary_name if th...
void groupUserObjects(TheWarehouse &w, AuxiliarySystem &aux, const ExecFlagEnum &execute_flags, const std::vector< T * > &objs, const std::set< std::string > &ic_deps)
void uniformRefineWithProjection()
Performs uniform refinement on the meshes in the current object.
Definition Adaptivity.C:328
std::vector< VariablePhiSecond > _second_phi_zero
std::vector< VariablePhiGradient > _grad_phi_zero
unsigned int getMaxQps() const
virtual bool updateMeshXFEM()
Update the mesh due to changing XFEM cuts.
const bool _boundary_restricted_node_integrity_check
whether to perform checking of boundary restricted nodal object variable dependencies,...
bool haveXFEM()
Find out whether the current analysis is using XFEM.
void addAnyRedistributers()
void initElementStatefulProps(const libMesh::ConstElemRange &elem_range, const bool threaded)
Initialize stateful properties for elements in a specific elem_range This is needed when elements/bou...
void checkNonlocalCoupling()
std::vector< VariablePhiValue > _phi_zero
virtual std::shared_ptr< const DisplacedProblem > getDisplacedProblem() const
void reinitBecauseOfGhostingOrNewGeomObjects(bool mortar_changed=false)
Call when it is possible that the needs for ghosted elements has changed.
const bool _force_restart
const ConstBndNodeRange & getCurrentAlgebraicBndNodeRange()
void setNonlocalCouplingMatrix()
Set custom coupling matrix for variables requiring nonlocal contribution.
void setVariableAllDoFMap(const std::vector< const MooseVariableFEBase * > &moose_vars)
void checkUserObjectJacobianRequirement(THREAD_ID tid)
const bool _boundary_restricted_elem_integrity_check
whether to perform checking of boundary restricted elemental object variable dependencies,...
bool _started_initial_setup
At or beyond initialSteup stage.
virtual void initialAdaptMesh()
void backupMultiApps(ExecFlagType type)
Backup the MultiApps associated with the ExecFlagType.
virtual void updateGeomSearch(GeometricSearchData::GeometricSearchType type=GeometricSearchData::ALL) override
Update this object's geometric search data as well as the displaced problem's if it exists.
virtual Assembly & assembly(const THREAD_ID tid, const unsigned int sys_num) override
bool _has_initialized_stateful
Whether nor not stateful materials have been initialized.
void initialSetup() override
void initialSetup(THREAD_ID tid)
Initial setup.
std::set< std::string > getDependObjects() const
Get a list of dependent UserObjects for this exec type.
void initialSetup(THREAD_ID tid)
Initial setup.
void sort(THREAD_ID tid=0, bool sort_all_objects=false)
By default, this method only sorts block and boundary-wise object storages that are used by the MOOSE...
virtual void initialSetup(THREAD_ID tid=0) const override
Convenience methods for calling object setup methods that handle the extra neighbor and face objects.
bool restoredInitialBackupMesh() const
Whether this app has restored mesh topology from its initial Backup object.
Definition MooseApp.h:750
void restoreFromInitialBackup(const bool for_restart)
Restores from a "initial" backup, that is, one set in _initial_backup.
Definition MooseApp.C:1800
bool hasStartTime() const
Definition MooseApp.h:301
std::unique_ptr< Backup > finalizeRestore()
Finalizes (closes) the restoration process done in restore().
Definition MooseApp.C:1807
void restore(const std::filesystem::path &folder_base, const bool for_restart)
Restore an application from file.
Definition MooseApp.C:1756
std::string getRestartRecoverFileBase() const
The file_base for the recovery file.
Definition MooseApp.h:500
const ExecFlagEnum & getExecuteOnEnum() const
Return the app level ExecFlagEnum, this contains all the available flags for the app.
Definition MooseApp.h:1040
bool getExodusFileRestart() const
Whether or not we need to use a separate Exodus reader to read the mesh BEFORE we create the mesh.
Definition MooseApp.h:436
bool isRecovering() const
Whether or not this is a "recover" calculation.
Definition MooseApp.C:1669
bool hasInitialBackup() const
Definition MooseApp.h:1047
Real getStartTime() const
Definition MooseApp.h:306
std::filesystem::path restartFolderBase(const std::filesystem::path &folder_base) const
The file suffix for restartable data.
Definition MooseApp.C:3054
unsigned int uniformRefineLevel() const
Returns the level of uniform refinement requested (zero if AMR is disabled).
Definition MooseMesh.C:3317
void buildRefinementAndCoarseningMaps(Assembly *assembly)
Create the refinement and coarsening maps necessary for projection of stateful material properties wh...
Definition MooseMesh.C:2513
const std::string & getBoundaryName(const BoundaryID boundary_id) const
Return the name of the boundary given the id.
Definition MooseMesh.C:1780
void updateActiveSemiLocalNodeRange(std::set< dof_id_type > &ghosted_elems)
Clears the "semi-local" node list and rebuilds it.
Definition MooseMesh.C:957
libMesh::StoredRange< MooseMesh::const_bnd_elem_iterator, const BndElement * > * getBoundaryElementRange()
Definition MooseMesh.C:1298
void sort(THREAD_ID tid=0)
Sort the objects using the DependencyResolver.
bool hasObjects(THREAD_ID tid=0) const
Convenience functions for determining if objects exist.
virtual void initialSetup(THREAD_ID tid=0) const
Convenience methods for calling object setup methods.
Base variable class.
void initialSetup()
Calls the initialSetup function for each of the output objects.
void check() const
Perform integrity check for get/declare calls.
void setLoadAllVectors(const bool load_all_vectors)
Sets whether or not all vectors are to be loaded.
virtual void initialSetup()
virtual bool converged(const unsigned int sys_num)
Eventually we want to convert this virtual over to taking a solver system number argument.
Definition SubProblem.h:113
std::vector< T * > & queryInto(std::vector< T * > &results, Args &&... args)
queryInto executes the query and stores the results in the given vector.
unsigned int n_dofs(const unsigned int s, const unsigned int var=libMesh::invalid_uint) const
auto max(const L &left, const R &right)
RealTensorValue RealTensor
uint8_t dof_id_type
RealVectorValue RealGradient

Referenced by EigenExecutionerBase::init(), Eigenvalue::init(), Steady::init(), TransientBase::init(), and MFEMProblem::initialSetup().

◆ initKokkos()

void FEProblemBase::initKokkos ( )
inherited

Construct Kokkos assembly and systems and allocate Kokkos material property storages.

Referenced by FEProblemBase::init().

◆ initKokkosStatefulProps()

void FEProblemBase::initKokkosStatefulProps ( )
inherited

◆ initNullSpaceVectors()

void FEProblemBase::initNullSpaceVectors ( const InputParameters parameters,
std::vector< std::shared_ptr< NonlinearSystemBase > > &  nl 
)
virtualinherited

Definition at line 799 of file FEProblemBase.C.

801{
802 TIME_SECTION("initNullSpaceVectors", 5, "Initializing Null Space Vectors");
803
804 unsigned int dimNullSpace = parameters.get<unsigned int>("null_space_dimension");
805 unsigned int dimTransposeNullSpace =
806 parameters.get<unsigned int>("transpose_null_space_dimension");
807 unsigned int dimNearNullSpace = parameters.get<unsigned int>("near_null_space_dimension");
808 for (unsigned int i = 0; i < dimNullSpace; ++i)
809 {
810 std::ostringstream oss;
811 oss << "_" << i;
812 // do not project, since this will be recomputed, but make it ghosted, since the near nullspace
813 // builder might march over all nodes
814 for (auto & nl : nls)
815 nl->addVector("NullSpace" + oss.str(), false, libMesh::GHOSTED);
816 }
817 _subspace_dim["NullSpace"] = dimNullSpace;
818 for (unsigned int i = 0; i < dimTransposeNullSpace; ++i)
819 {
820 std::ostringstream oss;
821 oss << "_" << i;
822 // do not project, since this will be recomputed, but make it ghosted, since the near nullspace
823 // builder might march over all nodes
824 for (auto & nl : nls)
825 nl->addVector("TransposeNullSpace" + oss.str(), false, libMesh::GHOSTED);
826 }
827 _subspace_dim["TransposeNullSpace"] = dimTransposeNullSpace;
828 for (unsigned int i = 0; i < dimNearNullSpace; ++i)
829 {
830 std::ostringstream oss;
831 oss << "_" << i;
832 // do not project, since this will be recomputed, but make it ghosted, since the near-nullspace
833 // builder might march over all semilocal nodes
834 for (auto & nl : nls)
835 nl->addVector("NearNullSpace" + oss.str(), false, libMesh::GHOSTED);
836 }
837 _subspace_dim["NearNullSpace"] = dimNearNullSpace;
838}
std::map< std::string, unsigned int > _subspace_dim
Dimension of the subspace spanned by the vectors with a given prefix.

Referenced by EigenProblem::EigenProblem(), and FEProblem::FEProblem().

◆ initPetscOutputAndSomeSolverSettings()

void FEProblemBase::initPetscOutputAndSomeSolverSettings ( )
virtualinherited

Reinitialize PETSc output for proper linear/nonlinear iteration display.

This also may be used for some PETSc-related solver settings

Reimplemented in EigenProblem.

Definition at line 7305 of file FEProblemBase.C.

7306{
7309}
void solveSetup()
Calls the timestepSetup function for each of the output objects.
void petscSetDefaults(FEProblemBase &problem)
Sets the default options for PETSc.

Referenced by FEProblemBase::possiblyRebuildGeomSearchPatches(), AStableDirk4::solve(), ExplicitRK2::solve(), ExplicitTVDRK2::solve(), ImplicitMidpoint::solve(), LStableDirk2::solve(), LStableDirk3::solve(), LStableDirk4::solve(), and FEProblemBase::solve().

◆ initXFEM()

void FEProblemBase::initXFEM ( std::shared_ptr< XFEMInterface xfem)
inherited

Create XFEM controller object.

Definition at line 8643 of file FEProblemBase.C.

8644{
8645 _xfem = xfem;
8646 _xfem->setMesh(&_mesh);
8647 if (_displaced_mesh)
8648 _xfem->setDisplacedMesh(_displaced_mesh);
8649
8650 auto fill_data = [](auto & storage)
8651 {
8652 std::vector<MaterialData *> data(libMesh::n_threads());
8653 for (const auto tid : make_range(libMesh::n_threads()))
8654 data[tid] = &storage.getMaterialData(tid);
8655 return data;
8656 };
8657 _xfem->setMaterialData(fill_data(_material_props));
8658 _xfem->setBoundaryMaterialData(fill_data(_bnd_material_props));
8659
8660 unsigned int n_threads = libMesh::n_threads();
8661 for (unsigned int i = 0; i < n_threads; ++i)
8662 for (const auto nl_sys_num : index_range(_nl))
8663 {
8664 _assembly[i][nl_sys_num]->setXFEM(_xfem);
8666 _displaced_problem->assembly(i, nl_sys_num).setXFEM(_xfem);
8667 }
8668}
MaterialData & getMaterialData(Moose::MaterialDataType type, const THREAD_ID tid=0, const MooseObject *object=nullptr) const
void fill_data(std::map< processor_id_type, std::vector< std::set< unsigned int > > > &data, int M)

◆ isKokkosObject()

bool MooseObject::isKokkosObject ( ) const
inlineinherited

Get whether this object is a Kokkos functor The parameter MooseBase::kokkos_object_param is set by the Kokkos base classes.

Definition at line 63 of file MooseObject.h.

63{ return parameters().isKokkosObject(); }

Referenced by AttribKokkos::initFrom(), BlockRestrictable::initializeBlockRestrictable(), and BoundaryRestrictable::initializeBoundaryRestrictable().

◆ isMatPropRequested()

bool SubProblem::isMatPropRequested ( const std::string &  prop_name) const
virtualinherited

Find out if a material property has been requested by any object.

Definition at line 731 of file SubProblem.C.

732{
733 return _material_property_requested.find(prop_name) != _material_property_requested.end();
734}
std::set< std::string > _material_property_requested
set containing all material property names that have been requested by getMaterialProperty*

◆ isParamSetByUser()

bool MooseBase::isParamSetByUser ( const std::string &  name) const
inlineinherited

Test if the supplied parameter is set by a user, as opposed to not set or set to default.

Parameters
nameThe name of the parameter to test

Definition at line 205 of file MooseBase.h.

206 {
208 }
bool isParamSetByUser(const std::string &name) const
Method returns true if the parameter was set by the user.

Referenced by DiffusionCG::addFEBCs(), DiffusionPhysicsBase::addInitialConditions(), CylinderComponent::addMeshGenerators(), AdvancedExtruderGenerator::AdvancedExtruderGenerator(), MFEMMesh::buildMesh(), MFEMBoundarySubMesh::buildSubMesh(), MFEMDomainSubMesh::buildSubMesh(), LibtorchNeuralNetControl::conditionalParameterError(), ConservativeAdvectionBCTempl< is_ad >::ConservativeAdvectionBCTempl(), MooseApp::copyInputs(), DiffusionPhysicsBase::DiffusionPhysicsBase(), MooseApp::errorCheck(), FileMesh::FileMesh(), FullSolveMultiApp::FullSolveMultiApp(), OrientSurfaceMeshGenerator::generate(), SurfaceSubdomainsFromAllNormalsGenerator::generate(), MFEMVectorFESpace::getFECName(), MooseBase::getRenamedParam(), DefaultConvergenceBase::getSharedExecutionerParam(), AddVariableAction::init(), MFEMMesh::init(), PhysicsBase::initializePhysics(), ElementSubdomainModifierBase::initialSetup(), MatrixSymmetryCheck::MatrixSymmetryCheck(), MeshDiagnosticsGenerator::MeshDiagnosticsGenerator(), MFEMVariable::MFEMVariable(), MortarConstraintBase::MortarConstraintBase(), MultiAppGeneralFieldFunctorTransfer::MultiAppGeneralFieldFunctorTransfer(), MultiAppGeneralFieldTransfer::MultiAppGeneralFieldTransfer(), OrientSurfaceMeshGenerator::OrientSurfaceMeshGenerator(), SolutionInvalidityOutput::output(), Output::Output(), MultiAppGeneralFieldTransfer::outputValueConflicts(), PetscExternalPartitioner::partition(), PolyLineMeshFollowingNodeSetGenerator::PolyLineMeshFollowingNodeSetGenerator(), MooseMesh::prepare(), SolutionUserObjectBase::readXda(), ReferenceResidualConvergence::ReferenceResidualConvergence(), PhysicsBase::reportPotentiallyMissedParameters(), MooseApp::run(), MooseApp::runInputFile(), MooseApp::runInputs(), Moose::MFEM::LinearSolverBase::SetPreconditioner(), SetupMeshAction::setupMesh(), MooseApp::setupOptions(), SideSetsFromBoundingBoxGenerator::SideSetsFromBoundingBoxGenerator(), SmoothMeshGenerator::SmoothMeshGenerator(), SurfaceSubdomainsDelaunayRemesher::SurfaceSubdomainsDelaunayRemesher(), SurfaceSubdomainsFromAllNormalsGenerator::SurfaceSubdomainsFromAllNormalsGenerator(), TagVectorAux::TagVectorAux(), TimedSubdomainModifier::TimedSubdomainModifier(), TimeIntegratedPostprocessor::TimeIntegratedPostprocessor(), XYDelaunayGenerator::XYDelaunayGenerator(), and XYZDelaunayGenerator::XYZDelaunayGenerator().

◆ isParamValid()

bool MooseBase::isParamValid ( const std::string &  name) const
inlineinherited

Test if the supplied parameter is valid.

Parameters
nameThe name of the parameter to test

Definition at line 199 of file MooseBase.h.

199{ return _pars.isParamValid(name); }

Referenced by GridPartitioner::_do_partition(), HierarchicalGridPartitioner::_do_partition(), AddVariableAction::act(), AutoCheckpointAction::act(), CommonOutputAction::act(), ComposeTimeStepperAction::act(), CopyNodalVarsAction::act(), CreateDisplacedProblemAction::act(), SetAdaptivityOptionsAction::act(), SetupDebugAction::act(), SetupMeshAction::act(), DiffusionCG::addFEKernels(), DiffusionFV::addFVBCs(), DiffusionFV::addFVKernels(), DiffusionPhysicsBase::addInitialConditions(), ComponentJunction::addMeshGenerators(), CylinderComponent::addMeshGenerators(), DiffusionPhysicsBase::addPostprocessors(), AdvancedExtruderGenerator::AdvancedExtruderGenerator(), AdvectiveFluxAux::AdvectiveFluxAux(), ArrayHFEMDirichletBC::ArrayHFEMDirichletBC(), ArrayVarReductionAux::ArrayVarReductionAux(), BicubicSplineFunction::BicubicSplineFunction(), BlockDeletionGenerator::BlockDeletionGenerator(), BSplineCurveGenerator::BSplineCurveGenerator(), TimedSubdomainModifier::buildFromFile(), ParsedChainControl::buildFunction(), GeneratedMesh::buildMesh(), MooseMesh::buildTypedMesh(), CartesianGridDivision::CartesianGridDivision(), CartesianMeshGenerator::CartesianMeshGenerator(), MultiAppTransfer::checkParentAppUserObjectExecuteOn(), LibmeshPartitioner::clone(), SampledOutput::cloneMesh(), CombinedVectorPostprocessor::CombinedVectorPostprocessor(), CombinerGenerator::CombinerGenerator(), ComponentJunction::ComponentJunction(), ConservativeAdvectionBCTempl< is_ad >::ConservativeAdvectionBCTempl(), ConservativeAdvectionTempl< is_ad >::ConservativeAdvectionTempl(), FEProblemSolve::convergenceSetup(), CopyMeshPartitioner::CopyMeshPartitioner(), CSVReaderVectorPostprocessor::CSVReaderVectorPostprocessor(), CutMeshByLevelSetGeneratorBase::CutMeshByLevelSetGeneratorBase(), ConstantReporter::declareConstantReporterValue(), ConstantReporter::declareConstantReporterValues(), DGKernelBase::DGKernelBase(), DiffusionFluxAux::DiffusionFluxAux(), DomainUserObject::DomainUserObject(), DynamicObjectRegistrationAction::DynamicObjectRegistrationAction(), EigenProblemSolve::EigenProblemSolve(), ElementGenerator::ElementGenerator(), ElementGroupCentroidPositions::ElementGroupCentroidPositions(), PIDTransientControl::execute(), MultiAppNearestNodeTransfer::execute(), MultiAppUserObjectTransfer::execute(), Exodus::Exodus(), ExtraIDIntegralReporter::ExtraIDIntegralReporter(), ExtraIDIntegralVectorPostprocessor::ExtraIDIntegralVectorPostprocessor(), FEProblemBase::FEProblemBase(), FEProblemSolve::FEProblemSolve(), FileOutput::FileOutput(), SpatialUserObjectVectorPostprocessor::fillPoints(), CombinerGenerator::fillPositions(), MultiApp::fillPositions(), FiniteDifferencePreconditioner::FiniteDifferencePreconditioner(), FixedPointSolve::FixedPointSolve(), FunctionDT::FunctionDT(), FunctionValuePostprocessor::FunctionValuePostprocessor(), FVInterfaceKernel::FVInterfaceKernel(), FVMassMatrix::FVMassMatrix(), SurfaceSubdomainsDelaunayRemesher::General2DDelaunay(), AddMetaDataGenerator::generate(), BlockDeletionGenerator::generate(), BreakBoundaryOnSubdomainGenerator::generate(), BSplineCurveGenerator::generate(), ConcentricCircleMeshGenerator::generate(), DistributedRectilinearMeshGenerator::generate(), ElementGenerator::generate(), ExtraNodesetGenerator::generate(), FileMeshGenerator::generate(), GeneratedMeshGenerator::generate(), LowerDBlockFromSidesetGenerator::generate(), ManifoldSubdomainGenerator::generate(), MeshExtruderGenerator::generate(), OrientSurfaceMeshGenerator::generate(), ParsedExtraElementIDGenerator::generate(), ParsedSubdomainGeneratorBase::generate(), RenumberBySubdomainGenerator::generate(), SideSetsFromNodeSetsGenerator::generate(), SphereMeshGenerator::generate(), SubdomainBoundingBoxGenerator::generate(), SubdomainPerElementGenerator::generate(), XYDelaunayGenerator::generate(), XYMeshLineCutter::generate(), XYZDelaunayGenerator::generate(), PropertyReadFile::getFileNames(), MultiAppNearestNodeTransfer::getLocalEntitiesAndComponents(), MeshGenerator::getMeshGeneratorNameFromParam(), MeshGenerator::getMeshGeneratorNamesFromParam(), MooseBase::getRenamedParam(), MultiAppNearestNodeTransfer::getTargetLocalNodes(), AddPeriodicBCAction::getVariables(), Terminator::handleMessage(), HFEMDirichletBC::HFEMDirichletBC(), EigenExecutionerBase::init(), IterationAdaptiveDT::init(), AdvancedOutput::initAvailableLists(), AdvancedOutput::initExecutionTypes(), BlockRestrictable::initializeBlockRestrictable(), BoundaryRestrictable::initializeBoundaryRestrictable(), SolutionAux::initialSetup(), SolutionScalarAux::initialSetup(), PIDTransientControl::initialSetup(), ParsedConvergence::initialSetup(), EigenProblemSolve::initialSetup(), MooseParsedFunction::initialSetup(), MooseParsedGradFunction::initialSetup(), MooseParsedVectorFunction::initialSetup(), PiecewiseTabularBase::initialSetup(), SolutionIC::initialSetup(), Console::initialSetup(), MultiAppCloneReporterTransfer::initialSetup(), MultiAppGeneralFieldTransfer::initialSetup(), MultiAppVariableValueSampleTransfer::initialSetup(), SampledOutput::initSample(), IterationAdaptiveDT::IterationAdaptiveDT(), LeastSquaresFit::LeastSquaresFit(), LibmeshPartitioner::LibmeshPartitioner(), LibtorchNeuralNetControl::LibtorchNeuralNetControl(), PNGOutput::makePNG(), MassMatrix::MassMatrix(), MatCoupledForce::MatCoupledForce(), MeshGeneratorComponent::MeshGeneratorComponent(), MFEMProblemSolve::MFEMProblemSolve(), MooseMesh::MooseMesh(), MoosePreconditioner::MoosePreconditioner(), MooseStaticCondensationPreconditioner::MooseStaticCondensationPreconditioner(), MooseVariableBase::MooseVariableBase(), MortarConstraintBase::MortarConstraintBase(), MoveNodeGenerator::MoveNodeGenerator(), MultiApp::MultiApp(), MultiAppCloneReporterTransfer::MultiAppCloneReporterTransfer(), MultiAppGeneralFieldKDTreeTransferBase::MultiAppGeneralFieldKDTreeTransferBase(), MultiAppGeneralFieldShapeEvaluationTransfer::MultiAppGeneralFieldShapeEvaluationTransfer(), MultiAppGeneralFieldTransfer::MultiAppGeneralFieldTransfer(), MultiAppGeneralFieldUserObjectTransfer::MultiAppGeneralFieldUserObjectTransfer(), MultiAppPostprocessorInterpolationTransfer::MultiAppPostprocessorInterpolationTransfer(), MultiAppPostprocessorTransfer::MultiAppPostprocessorTransfer(), MultiAppReporterTransfer::MultiAppReporterTransfer(), MultiAppTransfer::MultiAppTransfer(), MultiAppUserObjectTransfer::MultiAppUserObjectTransfer(), MultiAppVariableValueSampleTransfer::MultiAppVariableValueSampleTransfer(), MultiPostprocessorConvergence::MultiPostprocessorConvergence(), MultiSystemSolveObject::MultiSystemSolveObject(), NodeSetsGeneratorBase::NodeSetsGeneratorBase(), EigenExecutionerBase::normalizeSolution(), OrientSurfaceMeshGenerator::OrientSurfaceMeshGenerator(), Output::Output(), ParsedCurveGenerator::ParsedCurveGenerator(), ParsedSubdomainGeneratorBase::ParsedSubdomainGeneratorBase(), PetscOutput::PetscOutput(), PhysicsBasedPreconditioner::PhysicsBasedPreconditioner(), EqualValueBoundaryConstraint::pickPrimaryNode(), PIDTransientControl::PIDTransientControl(), PiecewiseTabularBase::PiecewiseTabularBase(), PlaneIDMeshGenerator::PlaneIDMeshGenerator(), EqualValueBoundaryConstraint::populateSecondaryNodes(), MooseMesh::prepare(), MultiApp::readCommandLineArguments(), SolutionUserObjectBase::readExodusIIOrNemesis(), ReferenceResidualInterface::ReferenceResidualInterface(), RenameBlockGenerator::RenameBlockGenerator(), ReporterPointSource::ReporterPointSource(), PhysicsBase::reportPotentiallyMissedParameters(), ParsedSubdomainMeshGenerator::setBlockName(), MooseMesh::setCoordSystem(), FileOutput::setFileBase(), FileOutput::setFileBaseInternal(), SideSetsGeneratorBase::setup(), SurfaceMeshGeneratorBase::setup(), Split::setup(), SetupMeshAction::setupMesh(), MooseApp::setupOptions(), Output::setWallTimeIntervalFromCommandLineParam(), SideDiffusiveFluxIntegralTempl< is_ad, T >::SideDiffusiveFluxIntegralTempl(), SideSetsGeneratorBase::SideSetsGeneratorBase(), SolutionUserObjectBase::SolutionUserObjectBase(), Terminator::Terminator(), TimeIntervalTimes::TimeIntervalTimes(), TimePeriod::TimePeriod(), PIDTransientControl::timestepSetup(), MultiAppDofCopyTransfer::transfer(), TransformGenerator::TransformGenerator(), TransientBase::TransientBase(), VariableCondensationPreconditioner::VariableCondensationPreconditioner(), VectorMagnitudeFunctorMaterialTempl< is_ad >::VectorMagnitudeFunctorMaterialTempl(), XYDelaunayGenerator::XYDelaunayGenerator(), and XYZDelaunayGenerator::XYZDelaunayGenerator().

◆ isSNESMFReuseBaseSetbyUser()

bool FEProblemBase::isSNESMFReuseBaseSetbyUser ( )
inlineinherited

Return a flag to indicate if _snesmf_reuse_base is set by users.

Definition at line 2616 of file FEProblemBase.h.

bool _snesmf_reuse_base_set_by_user
If or not _snesmf_reuse_base is set by user.

◆ isSolverSystemNonlinear()

bool FEProblemBase::isSolverSystemNonlinear ( const unsigned int  sys_num)
inlineinherited

◆ isSolveTerminationRequested()

virtual bool Problem::isSolveTerminationRequested ( ) const
inlinevirtualinherited

Check of termination has been requested.

This should be called by transient Executioners in the keepGoing() member.

Definition at line 43 of file Problem.h.

43{ return _termination_requested; };
bool _termination_requested
True if termination of the solve has been requested.
Definition Problem.h:58

Referenced by WebServerControl::execute(), and TransientBase::keepGoing().

◆ isTransient()

virtual bool FEProblemBase::isTransient ( ) const
inlineoverridevirtualinherited

◆ jacobianSetup()

void FEProblemBase::jacobianSetup ( )
overridevirtualinherited

Reimplemented from SubProblem.

Definition at line 9877 of file FEProblemBase.C.

9878{
9880 // We need to setup all the nonlinear systems other than our current one which actually called
9881 // this method (so we have to make sure we don't go in a circle)
9882 for (const auto i : make_range(numNonlinearSystems()))
9883 if (i != currentNlSysNum())
9884 _nl[i]->jacobianSetup();
9885 // We don't setup the aux sys because that's been done elsewhere
9887 _displaced_problem->jacobianSetup();
9888}
virtual unsigned int currentNlSysNum() const override
virtual void jacobianSetup()

Referenced by FEProblemBase::jacobianSetup(), and NonlinearSystemBase::jacobianSetup().

◆ joinAndFinalize()

void FEProblemBase::joinAndFinalize ( TheWarehouse::Query  query,
bool  isgen = false 
)
privateinherited

Definition at line 5229 of file FEProblemBase.C.

5230{
5231 std::vector<UserObject *> objs;
5232 query.queryInto(objs);
5233 if (!isgen)
5234 {
5235 // join all threaded user objects (i.e. not regular general user objects) to the primary
5236 // thread
5237 for (auto obj : objs)
5238 if (obj->primaryThreadCopy())
5239 obj->primaryThreadCopy()->threadJoin(*obj);
5240 }
5241
5242 query.condition<AttribThread>(0).queryInto(objs);
5243
5244 // finalize objects and retrieve/store any postprocessor values
5245 for (auto obj : objs)
5246 {
5247 if (isgen && dynamic_cast<ThreadedGeneralUserObject *>(obj))
5248 continue;
5249 if (isgen)
5250 {
5251 // general user objects are not run in their own threaded loop object - so run them here
5252 if (shouldPrintExecution(0))
5253 _console << "[DBG] Initializing, executing & finalizing general UO '" << obj->name()
5254 << "' on " << _current_execute_on_flag.name() << std::endl;
5255 obj->initialize();
5256 obj->execute();
5257 }
5258
5259 obj->finalize();
5260
5261 // These have to be stored piecemeal (with every call to this function) because general
5262 // postprocessors (which run last after other userobjects have been completed) might depend on
5263 // them being stored. This wouldn't be a problem if all userobjects satisfied the dependency
5264 // resolver interface and could be sorted appropriately with the general userobjects, but they
5265 // don't.
5266 auto pp = dynamic_cast<const Postprocessor *>(obj);
5267 if (pp)
5268 {
5269 _reporter_data.finalize(obj->name());
5270 setPostprocessorValueByName(obj->name(), pp->getValue());
5271 }
5272
5273 auto vpp = dynamic_cast<VectorPostprocessor *>(obj);
5274 if (vpp)
5275 _reporter_data.finalize(obj->name());
5276
5277 // Update Reporter data
5278 auto reporter = dynamic_cast<Reporter *>(obj);
5279 if (reporter)
5280 _reporter_data.finalize(obj->name());
5281 }
5282}
void setPostprocessorValueByName(const PostprocessorName &name, const PostprocessorValue &value, std::size_t t_index=0)
Set the value of a PostprocessorValue.
bool shouldPrintExecution(const THREAD_ID tid) const
Check whether the problem should output execution orders at this time.
const std::string & name() const
Base class for all Postprocessors.
void finalize(const std::string &object_name)
Helper function for performing post calculation actions via the ReporterContext objects.
Reporter objects allow for the declaration of arbitrary data types that are aggregate values for a si...
Definition Reporter.h:48
An instance of this object type has one copy per thread that runs on each thread.
Base class for Postprocessors that produce a vector of values.

Referenced by FEProblemBase::computeUserObjectsInternal().

◆ kokkosAssembly() [1/2]

Moose::Kokkos::Assembly & FEProblemBase::kokkosAssembly ( )
inlineinherited

Definition at line 362 of file FEProblemBase.h.

362{ return _kokkos_assembly; }
Moose::Kokkos::Assembly _kokkos_assembly

◆ kokkosAssembly() [2/2]

const Moose::Kokkos::Assembly & FEProblemBase::kokkosAssembly ( ) const
inlineinherited

Definition at line 363 of file FEProblemBase.h.

363{ return _kokkos_assembly; }

◆ kokkosJoinAndFinalize()

void FEProblemBase::kokkosJoinAndFinalize ( const std::vector< Moose::Kokkos::UserObject * > &  userobjs)
privateinherited

◆ linearSysNum()

unsigned int FEProblemBase::linearSysNum ( const LinearSystemName &  linear_sys_name) const
overridevirtualinherited
Returns
the linear system number corresponding to the provided linear_sys_name

Implements SubProblem.

Definition at line 6891 of file FEProblemBase.C.

6892{
6893 std::istringstream ss(linear_sys_name);
6894 unsigned int linear_sys_num;
6895 if (!(ss >> linear_sys_num) || !ss.eof())
6896 linear_sys_num = libmesh_map_find(_linear_sys_name_to_num, linear_sys_name);
6897
6898 return linear_sys_num;
6899}
std::map< LinearSystemName, unsigned int > _linear_sys_name_to_num
Map from linear system name to number.

Referenced by Moose::compute_linear_system(), FEProblemBase::computeLinearSystemSys(), LinearSystem::computeLinearSystemTags(), and DisplacedProblem::linearSysNum().

◆ lineSearch()

void FEProblemBase::lineSearch ( )
virtualinherited

execute MOOSE line search

Definition at line 2823 of file FEProblemBase.C.

2824{
2825 _line_search->lineSearch();
2826}

Referenced by ComputeLineSearchObjectWrapper::linesearch().

◆ logAdd()

void FEProblemBase::logAdd ( const std::string &  system,
const std::string &  name,
const std::string &  type,
const InputParameters params 
) const
inherited

◆ makeLinearSolverParams()

SolverParams FEProblemBase::makeLinearSolverParams ( )
staticprivateinherited

Make basic solver params for linear solves.

Definition at line 10104 of file FEProblemBase.C.

10105{
10106 SolverParams solver_params;
10107 solver_params._type = Moose::SolveType::ST_LINEAR;
10109 return solver_params;
10110}
Moose::LineSearchType _line_search
Moose::SolveType _type
@ ST_LINEAR
Solving a linear problem.
Definition MooseTypes.h:902
@ LS_NONE
Definition MooseTypes.h:983

Referenced by FEProblemBase::FEProblemBase().

◆ markFamilyPRefinement()

void SubProblem::markFamilyPRefinement ( const InputParameters params)
inherited

Mark a variable family for either disabling or enabling p-refinement with valid parameters of a variable.

Definition at line 1372 of file SubProblem.C.

1373{
1374 auto family = Utility::string_to_enum<FEFamily>(params.get<MooseEnum>("family"));
1375 bool flag = _default_families_without_p_refinement.count(family);
1376 if (params.isParamValid("disable_p_refinement"))
1377 flag = params.get<bool>("disable_p_refinement");
1378
1379 auto [it, inserted] = _family_for_p_refinement.emplace(family, flag);
1380 if (!inserted && flag != it->second)
1381 mooseError("'disable_p_refinement' not set consistently for variables in ", family);
1382}
std::unordered_map< FEFamily, bool > _family_for_p_refinement
Indicate whether a family is disabled for p-refinement.
static const std::unordered_set< FEFamily > _default_families_without_p_refinement
The set of variable families by default disable p-refinement.
Definition SubProblem.h:50

Referenced by FEProblemBase::addAuxArrayVariable(), FEProblemBase::addAuxVariable(), FEProblemBase::addAuxVariable(), and FEProblemBase::addVariable().

◆ markMatPropRequested()

void SubProblem::markMatPropRequested ( const std::string &  prop_name)
virtualinherited

Helper method for adding a material property name to the _material_property_requested set.

Definition at line 725 of file SubProblem.C.

726{
727 _material_property_requested.insert(prop_name);
728}

Referenced by MaterialPropertyInterface::markMatPropRequested(), and MaterialBase::markMatPropRequested().

◆ matrixTagExists() [1/2]

bool SubProblem::matrixTagExists ( const TagName &  tag_name) const
virtualinherited

◆ matrixTagExists() [2/2]

bool SubProblem::matrixTagExists ( TagID  tag_id) const
virtualinherited

Check to see if a particular Tag exists.

Reimplemented in DisplacedProblem.

Definition at line 337 of file SubProblem.C.

338{
339 return _matrix_tag_id_to_tag_name.find(tag_id) != _matrix_tag_id_to_tag_name.end();
340}

◆ matrixTagName()

TagName SubProblem::matrixTagName ( TagID  tag)
virtualinherited

Retrieve the name associated with a TagID.

Reimplemented in DisplacedProblem.

Definition at line 358 of file SubProblem.C.

359{
360 return _matrix_tag_id_to_tag_name[tag];
361}

Referenced by SystemBase::addMatrix(), DisplacedProblem::matrixTagName(), and SystemBase::removeMatrix().

◆ mesh() [1/4]

virtual const MooseMesh & FEProblemBase::mesh ( ) const
inlineoverridevirtualinherited

Implements SubProblem.

Reimplemented in MFEMProblem.

Definition at line 182 of file FEProblemBase.h.

182{ return _mesh; }

◆ mesh() [2/4]

virtual MooseMesh & FEProblemBase::mesh ( )
inlineoverridevirtualinherited

Implements SubProblem.

Reimplemented in MFEMProblem.

Definition at line 181 of file FEProblemBase.h.

181{ return _mesh; }

Referenced by Adaptivity::adaptMesh(), FEProblemBase::addAnyRedistributers(), MultiAppConservativeTransfer::adjustTransferredSolution(), MultiAppConservativeTransfer::adjustTransferredSolutionNearestPoint(), PhysicsBasedPreconditioner::apply(), MultiAppGeneralFieldFunctorTransfer::buildKDTrees(), MultiAppGeneralFieldNearestLocationTransfer::buildKDTrees(), MultiAppVariableValueSamplePostprocessorTransfer::cacheElemToPostprocessorData(), SampledOutput::cloneMesh(), NonlinearSystemBase::computeJacobianInternal(), LinearSystem::computeLinearSystemInternal(), ComputeFullJacobianThread::computeOnInternalFace(), NonlinearSystemBase::computeResidualAndJacobianInternal(), NonlinearSystemBase::computeResidualInternal(), FEProblemBase::coordTransform(), MultiApp::createApp(), DMMooseGetEmbedding_Private(), ElementsAlongLine::ElementsAlongLine(), ElementsAlongPlane::ElementsAlongPlane(), MultiAppUserObjectTransfer::execute(), MultiAppVariableValueSamplePostprocessorTransfer::execute(), MultiAppVariableValueSampleTransfer::execute(), ElementsAlongLine::execute(), ElementsAlongPlane::execute(), IntersectionPointsAlongLine::execute(), WorkBalance::execute(), MultiAppMFEMTolibMeshShapeEvaluationTransfer::extractlibMeshNodePositions(), CentroidMultiApp::fillPositions(), QuadraturePointMultiApp::fillPositions(), MultiAppGeometricInterpolationTransfer::fillSourceInterpolationPoints(), FunctionPeriodicBoundary::FunctionPeriodicBoundary(), MultiApp::getBoundingBox(), Exodus::handleExodusIOMeshRenumbering(), FunctorPositions::initialize(), ParsedDownSelectionPositions::initialize(), FunctorTimes::initialize(), BlockRestrictable::initializeBlockRestrictable(), BoundaryRestrictable::initializeBoundaryRestrictable(), ImageFunction::initialSetup(), PiecewiseConstantFromCSV::initialSetup(), MultiAppDofCopyTransfer::initialSetup(), SolutionUserObjectBase::initialSetup(), MultiAppGeometricInterpolationTransfer::interpolateTargetPoints(), IntersectionPointsAlongLine::IntersectionPointsAlongLine(), Moose::Mortar::loopOverMortarSegments(), ReporterPointMarker::markerSetup(), MFEMProblem::mesh(), FEProblemBase::mesh(), FEProblemBase::mesh(), MultiAppGeometricInterpolationTransfer::MultiAppGeometricInterpolationTransfer(), MultiAppUserObjectTransfer::MultiAppUserObjectTransfer(), BoundaryNodeIntegrityCheckThread::onNode(), ComputeNodalUserObjectsThread::onNode(), BoundaryElemIntegrityCheckThread::operator()(), ComputeLinearFVGreenGaussGradientVolumeThread::operator()(), ComputeLinearFVLimitedGradientThread::operator()(), ComputeInitialConditionThread::operator()(), Checkpoint::output(), Output::Output(), Exodus::outputEmptyTimestep(), ConsoleUtils::outputMeshInformation(), Exodus::outputNodalVariables(), Exodus::outputSetup(), Nemesis::outputSetup(), PiecewiseConstantFromCSV::PiecewiseConstantFromCSV(), SolutionUserObjectBase::pointValueGradientWrapper(), SolutionUserObjectBase::pointValueWrapper(), MeshInfo::possiblyAddDomainInfo(), ComputeLinearFVElementalThread::printBlockExecutionInformation(), ComputeLinearFVFaceThread::printBlockExecutionInformation(), BlockRestrictionDebugOutput::printBlockRestrictionGroups(), BlockRestrictionDebugOutput::printBlockRestrictionMap(), BlockRestrictionDebugOutput::printBoundaryRestrictionGroups(), MaterialPropertyDebugOutput::printMaterialMap(), TopResidualDebugOutput::printTopResiduals(), MultiAppMFEMTolibMeshShapeEvaluationTransfer::projectlibMeshNodalValues(), SolutionUserObjectBase::readExodusIIOrNemesis(), MooseApp::restore(), TransientMultiApp::setupApp(), Moose::PeriodicBCHelper::setupManualPeriodicBoundaries(), Moose::PeriodicBCHelper::setupPeriodicBoundaries(), SolutionUserObjectBase::SolutionUserObjectBase(), FixedPointSolve::solve(), TransientMultiApp::solveStep(), Moose::PetscSupport::storePetscOptions(), MultiAppDofCopyTransfer::transfer(), MultiAppMFEMTolibMeshShapeEvaluationTransfer::transferVariables(), Checkpoint::updateCheckpointFiles(), and SampledOutput::updateSample().

◆ mesh() [3/4]

MooseMesh & FEProblemBase::mesh ( bool  use_displaced)
inherited

Definition at line 693 of file FEProblemBase.C.

694{
695 if (use_displaced && !_displaced_problem)
696 mooseWarning("Displaced mesh was requested but the displaced problem does not exist. "
697 "Regular mesh will be returned");
698 return ((use_displaced && _displaced_problem) ? _displaced_problem->mesh() : mesh());
699}

◆ mesh() [4/4]

const MooseMesh & FEProblemBase::mesh ( bool  use_displaced) const
overridevirtualinherited

Implements SubProblem.

Definition at line 684 of file FEProblemBase.C.

685{
686 if (use_displaced && !_displaced_problem)
687 mooseWarning("Displaced mesh was requested but the displaced problem does not exist. "
688 "Regular mesh will be returned");
689 return ((use_displaced && _displaced_problem) ? _displaced_problem->mesh() : mesh());
690}

◆ meshChanged() [1/2]

virtual void FEProblemBase::meshChanged ( )
inlineprotectedvirtualinherited

Deprecated.

Users should switch to overriding the meshChanged which takes arguments

Definition at line 3025 of file FEProblemBase.h.

3025{}

Referenced by FEProblemBase::adaptMesh(), FEProblemBase::initialAdaptMesh(), FEProblemBase::meshChanged(), FEProblemBase::timestepSetup(), FEProblemBase::uniformRefine(), and FEProblemBase::updateMeshXFEM().

◆ meshChanged() [2/2]

void FEProblemBase::meshChanged ( bool  intermediate_change,
bool  contract_mesh,
bool  clean_refinement_flags 
)
virtualinherited

Update data after a mesh change.

Iff intermediate_change is true, only perform updates as necessary to prepare for another mesh change immediately-subsequent. An example of data that is not updated during an intermediate change is libMesh System matrix data. An example of data that \emph is updated during an intermediate change is libMesh System vectors. These vectors are projected or restricted based off of adaptive mesh refinement or the changing of element subdomain IDs. The flags contract_mesh and clean_refinement_flags should generally only be set to true when the mesh has changed due to mesh refinement. contract_mesh deletes children of coarsened elements and renumbers nodes and elements. clean_refinement_flags resets refinement flags such that any subsequent calls to System::restrict_vectors or System::prolong_vectors before another AMR step do not mistakenly attempt to re-do the restriction/prolongation which occurred in this method

Definition at line 8701 of file FEProblemBase.C.

8704{
8705 TIME_SECTION("meshChanged", 3, "Handling Mesh Changes");
8706
8708
8711 _mesh.cacheChangedLists(); // Currently only used with adaptivity and stateful material
8712 // properties
8713
8714 // Clear these out because they corresponded to the old mesh
8715 _ghosted_elems.clear();
8717
8718 // The mesh changed. We notify the MooseMesh first, because
8719 // callbacks (e.g. for sparsity calculations) triggered by the
8720 // EquationSystems reinit may require up-to-date MooseMesh caches.
8722
8723 // If we're just going to alter the mesh again, all we need to
8724 // handle here is AMR and projections, not full system reinit
8725 if (intermediate_change)
8726 es().reinit_solutions();
8727 else
8728 es().reinit();
8729
8730 if (contract_mesh)
8731 // Once vectors are restricted, we can delete children of coarsened elements
8733 if (clean_refinement_flags)
8734 {
8735 // Finally clear refinement flags so that if someone tries to project vectors again without
8736 // an intervening mesh refinement to clear flags they won't run into trouble
8737 MeshRefinement refinement(_mesh.getMesh());
8738 refinement.clean_refinement_flags();
8739 }
8740
8741 if (!intermediate_change)
8742 {
8743 // Since the mesh has changed, we need to make sure that we update any of our
8744 // MOOSE-system specific data.
8745 for (auto & sys : _solver_systems)
8746 sys->reinit();
8747 _aux->reinit();
8748 }
8749
8750 // Updating MooseMesh first breaks other adaptivity code, unless we
8751 // then *again* update the MooseMesh caches. E.g. the definition of
8752 // "active" and "local" may have been *changed* by refinement and
8753 // repartitioning done in EquationSystems::reinit().
8755
8756 // If we have finite volume variables, we will need to recompute additional elemental/face
8757 // quantities
8760
8761 // Let the meshChangedInterface notify the mesh changed event before we update the active
8762 // semilocal nodes, because the set of ghosted elements may potentially be updated during a mesh
8763 // changed event.
8764 for (const auto & mci : _notify_when_mesh_changes)
8765 mci->meshChanged();
8766
8767 // Since the Mesh changed, update the PointLocator object used by DiracKernels.
8769
8770 // Need to redo ghosting
8772
8774 {
8775 _displaced_problem->meshChanged(contract_mesh, clean_refinement_flags);
8777 }
8778
8780
8783
8784 // Just like we reinitialized our geometric search objects, we also need to reinitialize our
8785 // mortar meshes. Note that this needs to happen after DisplacedProblem::meshChanged because the
8786 // mortar mesh discretization will depend necessarily on the displaced mesh being re-displaced
8787 _mortar_data->meshChanged();
8788
8789 // Nonlinear systems hold the mortar mesh functors. The domains of definition of the mortar
8790 // functors might have changed when the mesh changed.
8791 for (auto & nl_sys : _nl)
8792 nl_sys->reinitMortarFunctors();
8793
8794 reinitBecauseOfGhostingOrNewGeomObjects(/*mortar_changed=*/true);
8795
8796 // We need to create new storage for newly active elements, and copy
8797 // stateful properties from the old elements.
8800 {
8801 if (havePRefinement())
8803
8804 // Prolong properties onto newly refined elements' children
8805 {
8807 /* refine = */ true, *this, _material_props, _bnd_material_props, _assembly);
8808 const auto & range = *_mesh.refinedElementRange();
8809 Threads::parallel_reduce(range, pmp);
8810
8811 // Concurrent erasure from the shared hash map is not safe while we are reading from it in
8812 // ProjectMaterialProperties, so we handle erasure here. Moreover, erasure based on key is
8813 // not thread safe in and of itself because it is a read-write operation. Note that we do not
8814 // do the erasure for p-refinement because the coarse level element is the same as our active
8815 // refined level element
8816 if (!doingPRefinement())
8817 for (const auto & elem : range)
8818 {
8822 }
8823 }
8824
8825 // Restrict properties onto newly coarsened elements
8826 {
8828 /* refine = */ false, *this, _material_props, _bnd_material_props, _assembly);
8829 const auto & range = *_mesh.coarsenedElementRange();
8830 Threads::parallel_reduce(range, pmp);
8831 // Note that we do not do the erasure for p-refinement because the coarse level element is the
8832 // same as our active refined level element
8833 if (!doingPRefinement())
8834 for (const auto & elem : range)
8835 {
8836 auto && coarsened_children = _mesh.coarsenedElementChildren(elem);
8837 for (auto && child : coarsened_children)
8838 {
8842 }
8843 }
8844 }
8845 }
8846
8849
8850 _has_jacobian = false; // we have to recompute jacobian when mesh changed
8851
8852 // Now for backwards compatibility with user code that overrode the old no-arg meshChanged we must
8853 // call it here
8854 meshChanged();
8855}
void updatePointLocator(const MooseMesh &mesh)
Called during FEProblemBase::meshChanged() to update the PointLocator object used by the DiracKernels...
std::vector< MeshChangedInterface * > _notify_when_mesh_changes
Objects to be notified when the mesh changes.
void reinit()
Completely redo all geometric search objects.
void eraseProperty(const Elem *elem)
Remove the property storage and element pointer from internal data structures Use this when elements ...
void markMeshChangedForBackup()
Mark this app as requiring mesh topology data in its next Backup object.
Definition MooseApp.h:755
const std::vector< const Elem * > & coarsenedElementChildren(const Elem *elem) const
Get the newly removed children element ids for an element that was just coarsened.
Definition MooseMesh.C:949
ConstElemPointerRange * refinedElementRange() const
Return a range that is suitable for threaded execution over elements that were just refined.
Definition MooseMesh.C:937
bool isFiniteVolumeInfoDirty() const
Definition MooseMesh.h:1461
void cacheChangedLists()
Cache information about what elements were refined and coarsened in the previous step.
Definition MooseMesh.C:919
ConstElemPointerRange * coarsenedElementRange() const
Return a range that is suitable for threaded execution over elements that were just coarsened.
Definition MooseMesh.C:943
void buildPRefinementAndCoarseningMaps(Assembly *assembly)
Definition MooseMesh.C:2419
bool havePRefinement() const
Query whether p-refinement has been requested at any point during the simulation.
bool doingPRefinement() const
virtual bool contract()=0

Referenced by ActivateElementsUserObjectBase::finalize(), SidesetAroundSubdomainUpdater::finalize(), Exodus::handleExodusIOMeshRenumbering(), ElementSubdomainModifierBase::modify(), MooseApp::restore(), TransientMultiApp::setupApp(), and Adaptivity::uniformRefineWithProjection().

◆ meshDisplaced()

void FEProblemBase::meshDisplaced ( )
protectedvirtualinherited

Update data after a mesh displaced.

Definition at line 8870 of file FEProblemBase.C.

8871{
8872 for (const auto & mdi : _notify_when_mesh_displaces)
8873 mdi->meshDisplaced();
8874}
std::vector< MeshDisplacedInterface * > _notify_when_mesh_displaces
Objects to be notified when the mesh displaces.
virtual void meshDisplaced()
Update data after a mesh displaced.

Referenced by DisplacedProblem::updateMesh().

◆ messagePrefix() [1/2]

std::string MooseBase::messagePrefix ( const bool  hit_prefix = true) const
inlineinherited
Returns
A prefix to be used in messages that contain the input file location associated with this object (if any) and the name and type of the object.

Definition at line 256 of file MooseBase.h.

257 {
258 return messagePrefix(_pars, hit_prefix);
259 }

Referenced by MooseBase::callMooseError(), MooseBase::errorPrefix(), MooseBase::messagePrefix(), MooseBase::mooseDeprecated(), MooseBase::mooseDeprecatedNoTrace(), MooseBase::mooseInfo(), and MooseBase::mooseWarning().

◆ messagePrefix() [2/2]

std::string MooseBase::messagePrefix ( const InputParameters params,
const bool  hit_prefix 
)
staticprivateinherited

Internal method for getting the message prefix for an object (object type, name, etc).

Needs to be static so that we can call it externally from InputParameters for errors that do not have context of the MooseBase

Definition at line 140 of file MooseBase.C.

141{
142 std::string prefix = "";
143
144 if (hit_prefix)
145 if (const auto node = MooseBase::getHitNode(params))
146 prefix += Moose::hitMessagePrefix(*node);
147
148 // Don't have context without type and name
149 if (!params.isMooseBaseObject())
150 return prefix;
151
152 const auto & name = params.getObjectName();
153 const std::string base = params.hasBase() ? params.getBase() : "object";
154 const bool is_main_app = base == "Application" && name == AppFactory::main_app_name;
155 prefix += "The following occurred in the ";
156 if (is_main_app)
157 prefix += "main " + base;
158 else
159 prefix += base;
160 if (base != params.getObjectName() && name.size() && !is_main_app)
161 prefix += " '" + name + "'";
162 prefix += " of type " + params.getObjectType() + ".";
163 return prefix + "\n\n";
164}
static const std::string main_app_name
The name for the "main" moose application.
Definition AppFactory.h:68
bool isMooseBaseObject() const
const std::string & getObjectType() const
std::string hitMessagePrefix(const hit::Node &node)
Get the prefix to be associated with a hit node for a message.
Definition Moose.C:883

◆ mooseDeprecated() [1/2]

template<typename... Args>
void MooseBase::mooseDeprecated ( Args &&...  args) const
inlineinherited

Emits a deprecation warning prefixed with the object name and type, and a stack trace.

Definition at line 317 of file MooseBase.h.

318 {
320 _console, false, true, true, messagePrefix(true), std::forward<Args>(args)...);
321 }
void mooseDeprecatedStream(S &oss, const bool expired, const bool print_title, const bool show_trace, Args &&... args)
Definition MooseError.h:252

Referenced by MooseApp::addCapability(), DataFileInterface::getDataFileName(), DataFileInterface::getDataFileNameByName(), MooseApp::getRecoverFileBase(), MooseApp::hasRecoverFileBase(), and MooseApp::setupOptions().

◆ mooseDeprecated() [2/2]

template<typename... Args>
void SolutionInvalidInterface::mooseDeprecated ( Args &&...  args) const
inlineinherited

◆ mooseDeprecatedNoTrace()

template<typename... Args>
void MooseBase::mooseDeprecatedNoTrace ( Args &&...  args) const
inlineinherited

Emits a deprecation warning prefixed with the object name and type, and no stack trace.

Definition at line 327 of file MooseBase.h.

328 {
330 _console, false, true, false, messagePrefix(true), std::forward<Args>(args)...);
331 }

◆ mooseDocumentedError()

template<typename... Args>
void MooseBase::mooseDocumentedError ( const std::string &  repo_name,
const unsigned int  issue_num,
Args &&...  args 
) const
inlineinherited

Definition at line 277 of file MooseBase.h.

280 {
282 repo_name, issue_num, argumentsToString(std::forward<Args>(args)...)),
283 /* with_prefix = */ true);
284 }
std::string formatMooseDocumentedError(const std::string &repo_name, const unsigned int issue_num, const std::string &msg)
Formats a documented error.
Definition MooseError.C:142

Referenced by ManifoldSubdomainGenerator::ManifoldSubdomainGenerator().

◆ mooseError()

template<typename... Args>
void MooseBase::mooseError ( Args &&...  args) const
inlineinherited

Emits an error prefixed with object name and type and optionally a file path to the top-level block parameter if available.

Definition at line 271 of file MooseBase.h.

272 {
273 callMooseError(argumentsToString(std::forward<Args>(args)...), /* with_prefix = */ true);
274 }

Referenced by CopyMeshPartitioner::_do_partition(), GridPartitioner::_do_partition(), HierarchicalGridPartitioner::_do_partition(), PetscExternalPartitioner::_do_partition(), AdaptivityAction::act(), AddBoundsVectorsAction::act(), AddFVICAction::act(), AddICAction::act(), AddMeshGeneratorAction::act(), AddPeriodicBCAction::act(), AddTimeStepperAction::act(), AddVectorPostprocessorAction::act(), ChainControlSetupAction::act(), CheckFVBCAction::act(), CheckIntegrityAction::act(), CombineComponentsMeshes::act(), CommonOutputAction::act(), CreateDisplacedProblemAction::act(), CreateExecutionerAction::act(), CreateProblemAction::act(), CreateProblemDefaultAction::act(), CSGOnlyAction::act(), DeprecatedBlockAction::act(), InitProblemAction::act(), MaterialDerivativeTestAction::act(), MaterialOutputAction::act(), SetAdaptivityOptionsAction::act(), SetupDebugAction::act(), SetupMeshAction::act(), SetupMeshCompleteAction::act(), SetupPredictorAction::act(), SetupTimeStepperAction::act(), SplitMeshAction::act(), Action::Action(), AddActionComponentAction::AddActionComponentAction(), PhysicsComponentInterface::addBoundaryConditionsFromComponents(), MooseApp::addCapabilityInternal(), DistributedRectilinearMeshGenerator::addElement(), MooseApp::addExecutor(), SubProblem::addFunctor(), PhysicsComponentInterface::addInitialConditionsFromComponents(), ComponentJunction::addMeshGenerators(), MeshGenerator::addMeshSubgenerator(), SubProblem::addPiecewiseByBlockLambdaFunctor(), DistributedRectilinearMeshGenerator::addPoint(), DiracKernelBase::addPointWithValidId(), CreateDisplacedProblemAction::addProxyRelationshipManagers(), MooseMesh::addQuadratureNode(), AddActionComponentAction::addRelationshipManagers(), WebServerControl::addServerAction(), AddVariableAction::addVariable(), SubProblem::addVectorTag(), MooseVariableScalar::adUDot(), Output::advancedExecuteOn(), MooseVariableBase::allDofIndices(), MooseApp::appNameToLibName(), MultiApp::appPostprocessorValue(), MultiApp::appProblem(), MultiApp::appProblemBase(), MultiApp::appUserObjectBase(), MooseApp::attachRelationshipManagers(), MooseApp::attachRelationshipManagers(), FEProblemBase::automaticScaling(), Function::average(), BatchMeshGeneratorAction::BatchMeshGeneratorAction(), MooseMesh::buildCoarseningMap(), MultiApp::buildComm(), DistributedRectilinearMeshGenerator::buildCube(), PiecewiseTabularInterface::buildFromFile(), PiecewiseTabularInterface::buildFromJSON(), PiecewiseTabularInterface::buildFromXY(), MooseMesh::buildLowerDMesh(), GeneratedMesh::buildMesh(), MeshGeneratorMesh::buildMesh(), SpiralAnnularMesh::buildMesh(), TiledMesh::buildMesh(), MooseMesh::buildRefinementMap(), MaterialBase::buildRequiredMaterials(), MooseMesh::buildTypedMesh(), MooseMesh::cacheFaceInfoVariableOwnership(), CartesianGridDivision::CartesianGridDivision(), CartesianMeshGenerator::CartesianMeshGenerator(), EigenExecutionerBase::chebyshev(), SubProblem::checkBlockMatProps(), PhysicsBase::checkBlockRestrictionIdentical(), ComponentBoundaryConditionInterface::checkBoundaryConditionsAllRequested(), SubProblem::checkBoundaryMatProps(), PhysicsBase::checkComponentType(), IterationCountConvergence::checkConvergence(), MooseMesh::checkCoordinateSystems(), DiffusionLHDGAssemblyHelper::checkCoupling(), DefaultConvergenceBase::checkDuplicateSetSharedExecutionerParams(), MooseMesh::checkDuplicateSubdomainNames(), MaterialBase::checkExecutionStage(), MeshGenerator::checkGetMesh(), ReporterTransferInterface::checkHasReporterValue(), EigenExecutionerBase::checkIntegrity(), Eigenvalue::checkIntegrity(), ExplicitTimeIntegrator::checkLinearConvergence(), MooseApp::checkMetaDataIntegrity(), MeshDiagnosticsGenerator::checkNonConformalMeshFromAdaptivity(), MeshDiagnosticsGenerator::checkNonMatchingEdges(), PostprocessorInterface::checkParam(), Moose::PeriodicBCHelper::checkPeriodicParams(), Sampler::checkReinitStatus(), MultiAppTransfer::checkSiblingsTransferSupported(), MaterialBase::checkStatefulSanity(), AddDefaultConvergenceAction::checkUnusedMultiAppFixedPointConvergenceParameters(), AddDefaultConvergenceAction::checkUnusedNonlinearConvergenceParameters(), AddDefaultConvergenceAction::checkUnusedSteadyStateConvergenceParameters(), Moose::PetscSupport::checkUserProvidedPetscOption(), MultiAppTransfer::checkVariable(), MeshDiagnosticsGenerator::checkWatertightNodesets(), MeshDiagnosticsGenerator::checkWatertightSidesets(), MooseMesh::clone(), LibmeshPartitioner::clone(), CombinerGenerator::CombinerGenerator(), MooseVariableFieldBase::componentName(), VariableCondensationPreconditioner::computeDInverseDiag(), CompositionDT::computeDT(), MooseVariableFieldBase::computeFaceValues(), TimeStepper::computeFailedDT(), IterationAdaptiveDT::computeFailedDT(), MooseMesh::computeFiniteVolumeCoords(), Moose::Kokkos::ResidualObject::computeOffDiagJacobian(), MaterialBase::computeProperties(), FVFluxBC::computeResidual(), ResidualObject::computeResidualAndJacobian(), TimeStepper::computeStep(), AStableDirk4::computeTimeDerivatives(), BDF2::computeTimeDerivatives(), CrankNicolson::computeTimeDerivatives(), ExplicitEuler::computeTimeDerivatives(), ExplicitRK2::computeTimeDerivatives(), ExplicitTVDRK2::computeTimeDerivatives(), ImplicitEuler::computeTimeDerivatives(), ImplicitMidpoint::computeTimeDerivatives(), LStableDirk2::computeTimeDerivatives(), LStableDirk3::computeTimeDerivatives(), LStableDirk4::computeTimeDerivatives(), NewmarkBeta::computeTimeDerivatives(), ConcentricCircleMesh::ConcentricCircleMesh(), ConditionalEnableControl::ConditionalEnableControl(), TimeStepper::constrainStep(), LibtorchNeuralNetControl::controlNeuralNet(), TransientBase::convergedToSteadyState(), ParsedConvergence::convertRealToBool(), MooseApp::copyInputs(), CopyMeshPartitioner::CopyMeshPartitioner(), MultiApp::createApp(), MooseApp::createExecutors(), AddVariableAction::createInitialConditionAction(), MooseApp::createRMFromTemplateAndInit(), Function::curl(), ReporterTransferInterface::declareClone(), Moose::Kokkos::MaterialBase::declareKokkosPropertyInternal(), MeshGenerator::declareMeshProperty(), ReporterTransferInterface::declareVectorClone(), FunctorRelationshipManager::delete_remote_elements(), MooseMesh::deleteRemoteElements(), MooseApp::determineLibtorchDeviceType(), MeshDiagnosticsGenerator::diagnosticsLog(), Function::div(), FunctorBinnedValuesDivision::divisionIndex(), FunctorRelationshipManager::dofmap_reinit(), MooseApp::dynamicAllRegistration(), MooseApp::dynamicAppRegistration(), DistributedRectilinearMeshGenerator::elemId(), MooseApp::errorCheck(), MooseMesh::errorIfDistributedMesh(), MultiAppTransfer::errorIfObjectExecutesOnTransferInSourceApp(), FixedPointSolve::examineFixedPointConvergence(), Eigenvalue::execute(), TransientBase::execute(), WebServerControl::execute(), MooseApp::executeExecutioner(), MultiApp::fillPositions(), MooseApp::finalizeRestore(), Transfer::find_sys(), DiracKernelInfo::findPoint(), FixedPointSolve::findTransformedSystem(), FixedPointSolve::FixedPointSolve(), FunctionDT::FunctionDT(), FunctionScalarAux::FunctionScalarAux(), FunctionScalarIC::FunctionScalarIC(), LinearFVBoundaryCondition::functorFaceArg(), FVInitialConditionTempl< T >::FVInitialConditionTempl(), FVScalarLagrangeMultiplierInterface::FVScalarLagrangeMultiplierInterface(), AdvancedExtruderGenerator::generate(), BoundingBoxNodeSetGenerator::generate(), CoarsenBlockGenerator::generate(), CombinerGenerator::generate(), CutMeshByLevelSetGeneratorBase::generate(), DistributedRectilinearMeshGenerator::generate(), ElementOrderConversionGenerator::generate(), ExtraNodesetGenerator::generate(), FileMeshGenerator::generate(), FlipSidesetGenerator::generate(), GeneratedMeshGenerator::generate(), LowerDBlockFromSidesetGenerator::generate(), MeshCollectionGenerator::generate(), MeshDiagnosticsGenerator::generate(), MeshExtruderGenerator::generate(), MeshRepairGenerator::generate(), MoveNodeGenerator::generate(), PlaneIDMeshGenerator::generate(), PolyLineMeshFollowingNodeSetGenerator::generate(), ProjectSideSetOntoLevelSetGenerator::generate(), RenameBlockGenerator::generate(), RenameBoundaryGenerator::generate(), RenumberBySubdomainGenerator::generate(), SmoothMeshGenerator::generate(), SpiralAnnularMeshGenerator::generate(), StackGenerator::generate(), SubdomainBoundingBoxGenerator::generate(), SubdomainPerElementGenerator::generate(), TiledMeshGenerator::generate(), XYMeshLineCutter::generate(), XYZDelaunayGenerator::generate(), PatternedMeshGenerator::generate(), MeshGenerator::generateCSG(), MeshGenerator::generateData(), GeneratedMesh::GeneratedMesh(), GeneratedMeshGenerator::GeneratedMeshGenerator(), MeshGenerator::generateInternal(), MeshGenerator::generateInternalCSG(), CircularBoundaryCorrectionGenerator::generateRadialCorrectionFactor(), MooseMesh::getAxisymmetricRadialCoord(), MooseMesh::getBlockConnectedBlocks(), MooseMesh::getBoundaryID(), MultiApp::getBoundingBox(), ChainControl::getChainControlDataByName(), WebServerControl::getClientInfo(), MooseMesh::getCoarseningMap(), MultiApp::getCommandLineArgs(), MooseVariableBase::getContinuity(), Control::getControllableParameterByName(), MooseMesh::getCoordSystem(), PhysicsBase::getCoupledPhysics(), PhysicsBase::getCoupledPhysics(), DataFileInterface::getDataFilePath(), TransfiniteMeshGenerator::getDiscreteEdge(), MooseVariableBase::getDofIndices(), VariableCondensationPreconditioner::getDofToCondense(), TransfiniteMeshGenerator::getEdge(), MooseMesh::getElementIDIndex(), Material::getElementIDNeighbor(), Material::getElementIDNeighborByName(), MooseMesh::getElemIDMapping(), MooseMesh::getElemIDsOnBlocks(), WebServerControl::Response::getError(), MultiApp::getExecutioner(), MooseApp::getExecutor(), MultiAppTransfer::getFromMultiApp(), MultiAppTransfer::getFromMultiAppInfo(), SubProblem::getFunctor(), MooseMesh::getGeneralAxisymmetricCoordAxis(), MaterialPropertyInterface::getGenericMaterialPropertyByName(), DistributedRectilinearMeshGenerator::getGhostNeighbors(), DistributedRectilinearMeshGenerator::getIndices(), MaterialPropertyInterface::getKokkosBlockMaterialProperty(), FunctionInterface::getKokkosFunctionByName(), MaterialPropertyInterface::getKokkosMaterialPropertyByName(), Material::getMaterialByName(), SubProblem::getMatrixTagID(), AnnularMesh::getMaxInDimension(), GeneratedMesh::getMaxInDimension(), MeshGenerator::getMeshGeneratorNameFromParam(), MeshGenerator::getMeshGeneratorNamesFromParam(), AnnularMesh::getMinInDimension(), GeneratedMesh::getMinInDimension(), MultiAppTransfer::getMultiApp(), DistributedRectilinearMeshGenerator::getNeighbors(), MooseMesh::getNodeBlockIds(), MooseMesh::getNodeList(), MooseMesh::getPairedBoundaryMapping(), MaterialOutputAction::getParams(), PlaneIDMeshGenerator::getPlaneID(), PostprocessorInterface::getPostprocessorValueByNameInternal(), ComponentMaterialPropertyInterface::getPropertyValue(), MooseMesh::getRefinementMap(), MooseBase::getRenamedParam(), ReporterInterface::getReporterContextBaseByName(), ReporterInterface::getReporterName(), Reporter::getReporterValueName(), MooseApp::getRestartableDataMap(), MooseApp::getRestartableDataMapName(), MooseApp::getRestartableMetaData(), MooseApp::getRMClone(), MooseObject::getSharedPtr(), MooseObject::getSharedPtr(), PhysicsBase::getSolverSystem(), MooseMesh::getSubdomainBoundaryIds(), TransientBase::getTimeIntegratorNames(), MultiAppTransfer::getToMultiApp(), MultiAppTransfer::getToMultiAppInfo(), MooseMesh::getUniqueCoordSystem(), UserObjectInterface::getUserObjectBaseByName(), UserObjectInterface::getUserObjectName(), AddPeriodicBCAction::getVariables(), VectorPostprocessorInterface::getVectorPostprocessorName(), SubProblem::getVectorTag(), SubProblem::getVectorTagID(), MultiApp::globalAppToLocal(), Function::gradient(), MooseVariableBase::hasDoFsOnNodes(), PostprocessorInterface::hasPostprocessor(), PostprocessorInterface::hasPostprocessorByName(), ReporterInterface::hasReporterValue(), ReporterInterface::hasReporterValueByName(), VectorPostprocessorInterface::hasVectorPostprocessor(), VectorPostprocessorInterface::hasVectorPostprocessor(), VectorPostprocessorInterface::hasVectorPostprocessorByName(), VectorPostprocessorInterface::hasVectorPostprocessorByName(), TransientBase::incrementStepOrReject(), NEML2Action::inferMOOSEIOType(), AddVariableAction::init(), MooseMesh::init(), Sampler::init(), EigenExecutionerBase::init(), TransientBase::init(), CrankNicolson::init(), ExplicitTimeIntegrator::init(), FixedPointIterationAdaptiveDT::init(), IterationAdaptiveDT::init(), MultiApp::init(), NestedDivision::initialize(), ParsedConvergence::initializeConstantSymbol(), PhysicsBase::initializePhysics(), SubProblem::initialSetup(), AuxKernelBase::initialSetup(), SolutionScalarAux::initialSetup(), FullSolveMultiApp::initialSetup(), ExplicitTimeIntegrator::initialSetup(), Function::integral(), InternalSideIndicatorBase::InternalSideIndicatorBase(), EigenExecutionerBase::inversePowerIteration(), Sampler::isAdaptiveSamplingCompleted(), MooseMesh::isBoundaryFullyExternalToSubdomains(), MooseVariableBase::isNodal(), IterationAdaptiveDT::IterationAdaptiveDT(), IterationCountConvergence::IterationCountConvergence(), LibmeshPartitioner::LibmeshPartitioner(), MooseApp::libNameToAppName(), LibtorchNeuralNetControl::LibtorchNeuralNetControl(), LineSearch::lineSearch(), MooseApp::loadLibraryAndDependencies(), ReporterPointMarker::markerSetup(), SubProblem::markFamilyPRefinement(), Material::Material(), Distribution::median(), FunctorRelationshipManager::mesh_reinit(), MeshDiagnosticsGenerator::MeshDiagnosticsGenerator(), MeshExtruderGenerator::MeshExtruderGenerator(), MeshRepairGenerator::MeshRepairGenerator(), SetupMeshAction::modifyParamsForUseSplit(), MeshMetaDataInterface::mooseErrorInternal(), MooseMesh::MooseMesh(), MooseObject::MooseObject(), UserObjectInterface::mooseObjectError(), MooseVariableBase::MooseVariableBase(), MoveNodeGenerator::MoveNodeGenerator(), MultiApp::MultiApp(), MultiAppTransfer::MultiAppTransfer(), NewmarkBeta::NewmarkBeta(), DistributedRectilinearMeshGenerator::nodeId(), DistributedRectilinearMeshGenerator::numNeighbors(), Output::onInterval(), FunctorRelationshipManager::operator()(), RelationshipManager::operator==(), ActionComponent::outerSurfaceArea(), ActionComponent::outerSurfaceBoundaries(), MortarNodalGeometryOutput::output(), Output::Output(), MooseApp::outputMachineReadableData(), DistributedRectilinearMeshGenerator::paritionSquarely(), ParsedConvergence::ParsedConvergence(), ParsedCurveGenerator::ParsedCurveGenerator(), ExplicitTimeIntegrator::performExplicitSolve(), PetscExternalPartitioner::PetscExternalPartitioner(), PhysicsBasedPreconditioner::PhysicsBasedPreconditioner(), PIDTransientControl::PIDTransientControl(), PiecewiseTabularInterface::PiecewiseTabularInterface(), CutMeshByLevelSetGeneratorBase::pointPairLevelSetInterception(), ProjectSideSetOntoLevelSetGenerator::pointPairLevelSetInterception(), ReporterInterface::possiblyCheckHasReporter(), VectorPostprocessorInterface::possiblyCheckHasVectorPostprocessorByName(), AStableDirk4::postResidual(), ExplicitRK2::postResidual(), ExplicitTVDRK2::postResidual(), ImplicitMidpoint::postResidual(), LStableDirk2::postResidual(), LStableDirk3::postResidual(), LStableDirk4::postResidual(), VariableCondensationPreconditioner::preallocateCondensedJacobian(), Predictor::Predictor(), TransientBase::preExecute(), MooseMesh::prepare(), MooseMesh::prepared(), FixedPointSolve::printFixedPointConvergenceReason(), MultiApp::readCommandLineArguments(), CoarsenBlockGenerator::recursiveCoarsen(), MooseApp::recursivelyCreateExecutors(), FunctorRelationshipManager::redistribute(), MooseApp::registerRestartableData(), MooseApp::registerRestartableNameWithFilter(), Sampler::reinit(), MooseApp::removeRelationshipManager(), PhysicsBase::reportPotentiallyMissedParameters(), MooseApp::restore(), RinglebMesh::RinglebMesh(), RinglebMeshGenerator::RinglebMeshGenerator(), MooseApp::run(), MooseApp::runInputs(), ScalarComponentIC::ScalarComponentIC(), DistributedRectilinearMeshGenerator::scaleNodalPositions(), FunctorRelationshipManager::set_mesh(), MooseVariableBase::setActiveTags(), DistributedRectilinearMeshGenerator::setBoundaryNames(), MooseMesh::setCoordSystem(), MooseMesh::setGeneralAxisymmetricCoordAxes(), MeshGenerator::setMeshProperty(), MooseApp::setMFEMDevice(), Sampler::setNumberOfCols(), Sampler::setNumberOfRandomSeeds(), Sampler::setNumberOfRows(), Moose::MFEM::LinearSolverBase::SetPreconditioner(), Split::setup(), TransientMultiApp::setupApp(), Moose::PeriodicBCHelper::setupAutoPeriodicBoundaries(), Moose::PeriodicBCHelper::setupManualPeriodicBoundaries(), SetupMeshAction::setupMesh(), MooseApp::setupOptions(), TimeSequenceStepperBase::setupSequence(), TransientBase::setupTimeIntegrator(), PhysicsBase::shouldCreateIC(), PhysicsBase::shouldCreateTimeDerivative(), PhysicsBase::shouldCreateVariable(), SingleMatrixPreconditioner::SingleMatrixPreconditioner(), MooseVariableBase::sizeMatrixTagData(), SmoothMeshGenerator::SmoothMeshGenerator(), SolutionTimeAdaptiveDT::SolutionTimeAdaptiveDT(), Moose::MFEM::LinearSolverBase::Solve(), TimeIntegrator::solve(), ExplicitRK2::solve(), ExplicitTVDRK2::solve(), FullSolveMultiApp::solveStep(), UserObject::spatialPoints(), UserObject::spatialValue(), SpiralAnnularMesh::SpiralAnnularMesh(), SpiralAnnularMeshGenerator::SpiralAnnularMeshGenerator(), MeshRepairGenerator::splitNonConvexPolygons(), WebServerControl::startServer(), StitchedMesh::StitchedMesh(), MaterialBase::subdomainSetup(), CutMeshByLevelSetGeneratorBase::tet4ElemCutter(), Action::timedAct(), Function::timeDerivative(), Function::timeIntegral(), ParsedCurveGenerator::tSectionSpaceDefiner(), MooseVariableScalar::uDot(), MooseVariableScalar::uDotDot(), MooseVariableScalar::uDotDotOld(), MooseVariableScalar::uDotOld(), MooseBase::uniqueName(), AuxScalarKernel::uOld(), ScalarKernelBase::uOld(), Function::value(), VariableCondensationPreconditioner::VariableCondensationPreconditioner(), PhysicsBase::variableExists(), MultiAppTransfer::variableIntegrityCheck(), AddVariableAction::variableType(), SubProblem::vectorTagName(), SubProblem::vectorTagType(), Function::vectorValue(), SubProblem::verifyVectorTags(), ActionComponent::volume(), WebServerControl::WebServerControl(), and MooseApp::writeRestartableMetaData().

◆ mooseErrorNonPrefixed()

template<typename... Args>
void MooseBase::mooseErrorNonPrefixed ( Args &&...  args) const
inlineinherited

Emits an error without the prefixing included in mooseError().

Definition at line 290 of file MooseBase.h.

291 {
292 callMooseError(argumentsToString(std::forward<Args>(args)...), /* with_prefix = */ false);
293 }

◆ mooseInfo()

template<typename... Args>
void MooseBase::mooseInfo ( Args &&...  args) const
inlineinherited

◆ mooseWarning() [1/2]

template<typename... Args>
void MooseBase::mooseWarning ( Args &&...  args) const
inlineinherited

Emits a warning prefixed with object name and type.

Definition at line 299 of file MooseBase.h.

300 {
301 moose::internal::mooseWarningStream(_console, messagePrefix(true), std::forward<Args>(args)...);
302 }
void mooseWarningStream(S &oss, Args &&... args)
Definition MooseError.h:197

Referenced by DiracKernelInfo::findPoint(), DataFileInterface::getDataFilePath(), MooseApp::loadLibraryAndDependencies(), and MooseBase::paramWarning().

◆ mooseWarning() [2/2]

template<typename... Args>
void SolutionInvalidInterface::mooseWarning ( Args &&...  args) const
inlineinherited

Definition at line 73 of file SolutionInvalidInterface.h.

74 {
75 _si_moose_base.MooseBase::mooseWarning(std::forward<Args>(args)...);
76 flagSolutionWarningMultipleRegistration(_si_moose_base.name() + ": warning");
77 }

Referenced by CopyMeshPartitioner::_do_partition(), AddFunctionAction::act(), AddKernelAction::act(), CommonOutputAction::act(), MaterialOutputAction::act(), MeshOnlyAction::act(), MooseMesh::addPeriodicVariable(), BoundaryMarker::BoundaryMarker(), DistributedRectilinearMeshGenerator::buildCube(), CartesianMeshGenerator::CartesianMeshGenerator(), CheckOutputAction::checkConsoleOutput(), MultiAppTransfer::checkMultiAppExecuteOn(), MeshDiagnosticsGenerator::checkNonMatchingEdges(), MeshDiagnosticsGenerator::checkPolygons(), ActionComponent::checkRequiredTasks(), PhysicsBase::checkRequiredTasks(), MultiApp::createApp(), MeshDiagnosticsGenerator::diagnosticsLog(), CartesianGridDivision::divisionIndex(), CylindricalGridDivision::divisionIndex(), SphericalGridDivision::divisionIndex(), Postprocessor::evaluateDotWarning(), FiniteDifferencePreconditioner::FiniteDifferencePreconditioner(), FixedPointSolve::FixedPointSolve(), BSplineCurveGenerator::generate(), RenumberBySubdomainGenerator::generate(), SubdomainPerElementGenerator::generate(), SurfaceMeshGeneratorBase::get2DElemNormal(), MultiAppTransfer::getAppInfo(), FunctorBinnedValuesDivision::getBinIndex(), IndicatorMarker::IndicatorMarker(), CartesianGridDivision::initialize(), CylindricalGridDivision::initialize(), SphericalGridDivision::initialize(), MFEMRefinementMarker::initialSetup(), MaterialBase::initStatefulProperties(), IterationAdaptiveDT::limitDTToPostprocessorValue(), NewmarkBeta::NewmarkBeta(), Output::Output(), MaterialOutputAction::outputHelper(), Executioner::problem(), TestSourceStepper::rejectStep(), PhysicsBase::reportPotentiallyMissedParameters(), MaterialBase::resetQpProperties(), MooseMesh::setCoordSystem(), TransientMultiApp::solveStep(), MeshRepairGenerator::splitNonConvexPolygons(), and VariableCondensationPreconditioner::VariableCondensationPreconditioner().

◆ mooseWarningNonPrefixed() [1/2]

template<typename... Args>
void MooseBase::mooseWarningNonPrefixed ( Args &&...  args) const
inlineinherited

Emits a warning without the prefixing included in mooseWarning().

Definition at line 308 of file MooseBase.h.

309 {
310 moose::internal::mooseWarningStream(_console, std::forward<Args>(args)...);
311 }

◆ mooseWarningNonPrefixed() [2/2]

template<typename... Args>
void SolutionInvalidInterface::mooseWarningNonPrefixed ( Args &&...  args) const
inlineinherited

Definition at line 80 of file SolutionInvalidInterface.h.

81 {
82 _si_moose_base.MooseBase::mooseWarningNonPrefixed(std::forward<Args>(args)...);
83 flagSolutionWarningMultipleRegistration(_si_moose_base.name() + ": warning");
84 }

◆ mortarData() [1/2]

MortarInterfaceWarehouse & FEProblemBase::mortarData ( )
inlineinherited

Definition at line 2685 of file FEProblemBase.h.

2685{ return *_mortar_data; }

◆ mortarData() [2/2]

const MortarInterfaceWarehouse & FEProblemBase::mortarData ( ) const
inlineinherited

Returns the mortar data object.

Definition at line 2684 of file FEProblemBase.h.

2684{ return *_mortar_data; }

◆ name()

const std::string & MooseBase::name ( ) const
inlineinherited

Get the name of the class.

Returns
The name of the class

Definition at line 103 of file MooseBase.h.

104 {
105 mooseAssert(_name.size(), "Empty name");
106 return _name;
107 }
const std::string & _name
The name of this class.
Definition MooseBase.h:381

Referenced by AdaptivityAction::act(), AddActionComponentAction::act(), AddElementalFieldAction::act(), AddPeriodicBCAction::act(), AddTimeStepperAction::act(), CommonOutputAction::act(), CopyNodalVarsAction::act(), CSGOnlyAction::act(), DeprecatedBlockAction::act(), DisplayGhostingAction::act(), MaterialOutputAction::act(), SetupResidualDebugAction::act(), SetupTimeIntegratorAction::act(), FEProblemBase::addAnyRedistributers(), Executioner::addAttributeReporter(), FEProblemBase::addAuxKernel(), MFEMProblem::addAuxKernel(), FEProblemBase::addAuxScalarKernel(), DisplacedProblem::addAuxVariable(), FEProblemBase::addBoundaryCondition(), MFEMProblem::addBoundaryCondition(), PhysicsComponentInterface::addComponent(), FEProblemBase::addConstraint(), FEProblemBase::addConvergence(), FEProblemBase::addDamper(), FEProblemBase::addDGKernel(), FEProblemBase::addDiracKernel(), FEProblemBase::addDistribution(), MooseApp::addExecutor(), MooseApp::addExecutorParams(), MFEMProblem::addFESpace(), MFEMProblem::addFESpaceHierarchy(), FEProblemBase::addFunction(), MFEMProblem::addFunction(), SubProblem::addFunctor(), FEProblemBase::addFunctorMaterial(), MFEMProblem::addFunctorMaterial(), FunctorMaterial::addFunctorProperty(), FunctorMaterial::addFunctorPropertyByBlocks(), FEProblemBase::addFVBC(), FEProblemBase::addFVInitialCondition(), FEProblemBase::addFVInterfaceKernel(), FEProblemBase::addFVInterpolationMethod(), FEProblemBase::addFVKernel(), ADDGKernel::ADDGKernel(), FEProblemBase::addHDGKernel(), MFEMProblem::addImagComponentToBC(), MFEMProblem::addImagComponentToKernel(), FEProblemBase::addIndicator(), MFEMProblem::addIndicator(), FEProblemBase::addInitialCondition(), MFEMProblem::addInitialCondition(), FEProblemBase::addInterfaceKernel(), FEProblemBase::addInterfaceMaterial(), ElementAndTraceScalarHDGAssemblyHelper::additionalROVariables(), BoundaryIntegralValueConstraint::additionalROVariables(), DiffusionLHDGKernel::additionalROVariables(), ADKernelScalarBase::additionalROVariables(), FEProblemBase::addKernel(), MFEMProblem::addKernel(), FEProblemBase::addLinearFVBC(), FEProblemBase::addLinearFVKernel(), FEProblemBase::addMarker(), MFEMProblem::addMarker(), FEProblemBase::addMaterial(), FEProblemBase::addMaterialHelper(), ComponentMaterialPropertyInterface::addMaterials(), FEProblemBase::addMeshDivision(), MooseApp::addMeshGenerator(), ComponentJunction::addMeshGenerators(), ComponentMeshTransformHelper::addMeshGenerators(), CylinderComponent::addMeshGenerators(), MeshGenerator::addMeshSubgenerator(), MeshGenerator::addMeshSubgenerator(), MFEMProblem::addMFEMSolver(), FEProblemBase::addMultiApp(), FEProblemBase::addNodalKernel(), FEProblemBase::addObject(), InitialConditionWarehouse::addObject(), ComponentPhysicsInterface::addPhysics(), SubProblem::addPiecewiseByBlockLambdaFunctor(), FEProblemBase::addPostprocessor(), MFEMProblem::addPostprocessor(), UserObjectBase::addPostprocessorDependencyHelper(), AuxKernelBase::addPostprocessorDependencyHelper(), InitialConditionBase::addPostprocessorDependencyHelper(), FEProblemBase::addPredictor(), CreateDisplacedProblemAction::addProxyRelationshipManagers(), MFEMProblem::addQuadratureFunction(), MFEMProblem::addRealComponentToBC(), MFEMProblem::addRealComponentToKernel(), AddActionComponentAction::addRelationshipManagers(), FEProblemBase::addReporter(), FEProblemBase::addSampler(), FEProblemBase::addScalarKernel(), WebServerControl::addServerActionsInternal(), FEProblemBase::addTimeIntegrator(), FEProblemBase::addTransfer(), MFEMProblem::addTransfer(), PhysicsBase::addUserObject(), FEProblemBase::addUserObject(), UserObjectBase::addUserObjectDependencyHelper(), AuxKernelBase::addUserObjectDependencyHelper(), InitialConditionBase::addUserObjectDependencyHelper(), DisplacedProblem::addVariable(), FEProblemBase::addVectorPostprocessor(), MFEMProblem::addVectorPostprocessor(), UserObjectBase::addVectorPostprocessorDependencyHelper(), AuxKernelBase::addVectorPostprocessorDependencyHelper(), MooseLinearVariableFV< OutputType >::adError(), Output::advancedExecuteOn(), AdvancedExtruderGenerator::AdvancedExtruderGenerator(), NEML2ModelExecutor::advanceState(), MooseVariableBase::allDofIndices(), MooseApp::appBinaryName(), MooseApp::appendMeshGenerator(), MultiApp::appPostprocessorValue(), MultiApp::appProblem(), MultiApp::appProblemBase(), MultiApp::appUserObjectBase(), ArrayDGKernel::ArrayDGKernel(), ArrayParsedAux::ArrayParsedAux(), PhysicsBase::assignBlocks(), AStableDirk4::AStableDirk4(), Function::average(), MultiApp::backup(), CoarsenedPiecewiseLinear::buildCoarsenedGrid(), PiecewiseTabularInterface::buildFromFile(), PiecewiseTabularInterface::buildFromXY(), MFEMGeometricMultigridSolver::BuildMultigrid(), MooseMesh::buildNodeListFromSideList(), MultiAppVariableValueSamplePostprocessorTransfer::cacheElemToPostprocessorData(), MooseBase::callMooseError(), ChangeOverFixedPointPostprocessor::ChangeOverFixedPointPostprocessor(), ChangeOverTimePostprocessor::ChangeOverTimePostprocessor(), PhysicsBase::checkBlockRestrictionIdentical(), PhysicsBase::checkComponentType(), DefaultNonlinearConvergence::checkConvergence(), ParsedConvergence::checkConvergence(), FEProblemBase::checkDependMaterialsHelper(), TaggingInterface::checkForNans(), SamplerBase::checkForStandardFieldVariableType(), ReporterTransferInterface::checkHasReporterValue(), FEProblemBase::checkICRestartError(), NonlinearSystemBase::checkKernelCoverage(), Moose::Kokkos::Material::checkMaterialProperty(), Material::checkMaterialProperty(), MooseApp::checkMetaDataIntegrity(), Damper::checkMinDamping(), SideUserObject::checkNoInterfaceMaterialPropertyDependencies(), MultiAppTransfer::checkParentAppUserObjectExecuteOn(), Checkpoint::checkpointInfo(), FEProblemBase::checkUserObjectNameCollision(), BlockRestrictable::checkVariable(), DomainUserObject::checkVariable(), Coupleable::checkWritableVar(), MooseVariableFieldBase::componentName(), CompositeFunction::CompositeFunction(), MaterialBase::computeProperties(), FEProblemBase::computeUserObjectByName(), VectorPostprocessorVisualizationAux::computeValue(), MooseBase::connectControllableParams(), ConstantPostprocessor::ConstantPostprocessor(), Coupleable::coupledName(), CommonOutputAction::create(), MultiApp::createApp(), MooseApp::createExecutors(), MeshGeneratorSystem::createMeshGeneratorOrder(), MooseApp::createRecoverablePerfGraph(), CutMeshByPlaneGenerator::CutMeshByPlaneGenerator(), DebugResidualAux::DebugResidualAux(), MaterialBase::declareADProperty(), MFEMComplexVariable::declareCoefficients(), MFEMVariable::declareCoefficients(), MeshInfo::declareHelper(), Moose::Kokkos::MaterialBase::declareKokkosOnDemandProperty(), Moose::Kokkos::MaterialBase::declareKokkosProperty(), MeshGenerator::declareMeshesForSubByName(), MeshGenerator::declareNullMeshName(), MaterialBase::declareProperty(), DOFMapOutput::demangle(), DerivativeSumMaterialTempl< is_ad >::DerivativeSumMaterialTempl(), MooseMesh::detectPairedSidesets(), DGKernel::DGKernel(), DGKernelBase::DGKernelBase(), DomainUserObject::DomainUserObject(), DumpObjectsProblem::dumpObjectHelper(), ElementDamper::ElementDamper(), ElementGroupCentroidPositions::ElementGroupCentroidPositions(), ElementMaterialSampler::ElementMaterialSampler(), ElementValueSampler::ElementValueSampler(), EigenKernel::enabled(), MooseMesh::errorIfDistributedMesh(), SolutionUserObjectBase::evalMeshFunction(), SolutionUserObjectBase::evalMeshFunctionGradient(), SolutionUserObjectBase::evalMultiValuedMeshFunction(), SolutionUserObjectBase::evalMultiValuedMeshFunctionGradient(), GreaterThanLessThanPostprocessor::execute(), PointValue::execute(), RestartableDataReporter::execute(), MultiAppGeneralFieldTransfer::execute(), MultiAppNearestNodeTransfer::execute(), MultiAppProjectionTransfer::execute(), MultiAppUserObjectTransfer::execute(), SideValueSampler::execute(), WebServerControl::execute(), ActionWarehouse::executeActionsWithAction(), Exodus::Exodus(), ExtraIDIntegralVectorPostprocessor::ExtraIDIntegralVectorPostprocessor(), FEProblemBase::FEProblemBase(), NEML2ModelExecutor::fillInputs(), MultiApp::fillPositions(), MultiAppGeometricInterpolationTransfer::fillSourceInterpolationPoints(), PointSamplerBase::finalize(), ChainControl::fullControlDataName(), FunctionArrayAux::FunctionArrayAux(), FunctionDT::FunctionDT(), FVFunctionIC::functionName(), FunctionIC::functionName(), FunctorPositions::FunctorPositions(), FunctorSmootherTempl< T >::FunctorSmootherTempl(), FVInitialConditionTempl< T >::FVInitialConditionTempl(), FVOneVarDiffusionInterface::FVOneVarDiffusionInterface(), GapValueAux::GapValueAux(), BoundaryDeletionGenerator::generate(), BreakMeshByBlockGenerator::generate(), GeneratedMeshGenerator::generate(), ManifoldSubdomainGenerator::generate(), ParsedExtraElementIDGenerator::generate(), ParsedSubdomainGeneratorBase::generate(), RenameBlockGenerator::generate(), RenameBoundaryGenerator::generate(), RenumberBySubdomainGenerator::generate(), SideSetsFromNodeSetsGenerator::generate(), StitchBoundaryMeshGenerator::generate(), StitchMeshGenerator::generate(), SubdomainBoundingBoxGenerator::generate(), SubdomainsFromPartitionerGenerator::generate(), UniqueExtraIDMeshGenerator::generate(), MeshGenerator::generateInternal(), MeshGenerator::generateInternalCSG(), InterfaceMaterial::getADMaterialProperty(), Material::getADMaterialProperty(), MultiAppTransfer::getAppInfo(), MooseMesh::getBoundaryString(), MultiApp::getBoundingBox(), MooseBase::getCheckedPointerParam(), MooseApp::getCheckpointDirectories(), MFEMProblem::getComplexGridFunction(), Control::getControllableParameterByName(), Control::getControllableValue(), Control::getControllableValueByName(), FEProblemBase::getConvergence(), MeshGenerator::getCSGBase(), MeshGenerator::getCSGBasesByName(), UserObjectBase::getDependObjects(), FEProblemBase::getDistribution(), DistributionInterface::getDistribution(), DistributionInterface::getDistributionByName(), ElementUOProvider::getElementalValueLong(), ElementUOProvider::getElementalValueReal(), MultiApp::getExecutioner(), FEProblemBase::getExecutor(), MooseApp::getExecutor(), OutputWarehouse::getFileNumbers(), FEProblemBase::getFunction(), SubProblem::getFunctor(), FEProblemBase::getFVAdvectedInterpolationMethod(), FEProblemBase::getFVFaceInterpolationMethod(), FEProblemBase::getFVInterpolationMethod(), AuxKernelTempl< ComputeValueType >::getGenericMaterialProperty(), NodalPatchRecovery::getGenericMaterialProperty(), InterfaceMaterial::getGenericMaterialProperty(), Material::getGenericMaterialProperty(), InterfaceMaterial::getGenericNeighborMaterialProperty(), InterfaceMaterial::getGenericNeighborMaterialPropertyByName(), Material::getGenericOptionalMaterialProperty(), MaterialBase::getGenericZeroMaterialProperty(), MFEMProblem::getGridFunction(), FEProblemBase::getKokkosFunction(), FEProblemBase::getKokkosUserObject(), SolutionUserObjectBase::getLocalVarIndex(), Marker::getMarkerValue(), Material::getMaterial(), FEProblemBase::getMaterial(), Material::getMaterialByName(), AuxKernelTempl< ComputeValueType >::getMaterialProperty(), NodalPatchRecovery::getMaterialProperty(), InterfaceMaterial::getMaterialProperty(), Material::getMaterialProperty(), SubProblem::getMaterialPropertyBlockNames(), SubProblem::getMaterialPropertyBoundaryNames(), AuxKernelTempl< ComputeValueType >::getMaterialPropertyOld(), NodalPatchRecovery::getMaterialPropertyOld(), InterfaceMaterial::getMaterialPropertyOld(), Material::getMaterialPropertyOld(), AuxKernelTempl< ComputeValueType >::getMaterialPropertyOlder(), NodalPatchRecovery::getMaterialPropertyOlder(), InterfaceMaterial::getMaterialPropertyOlder(), Material::getMaterialPropertyOlder(), MFEMObject::getMatrixCoefficient(), MFEMObject::getMatrixCoefficientByName(), MeshGenerator::getMesh(), FEProblemBase::getMeshDivision(), MeshGenerator::getMeshesByName(), MooseApp::getMeshGenerator(), MeshGenerator::getMeshGeneratorNameFromParam(), MeshGenerator::getMeshGeneratorNamesFromParam(), MFEMProblem::getMFEMObject(), ActionWarehouse::getMooseAppName(), NEML2FEInterpolation::getMOOSEVariable(), MultiAppTransfer::getMultiApp(), InterfaceMaterial::getNeighborADMaterialProperty(), InterfaceMaterial::getNeighborMaterialProperty(), InterfaceMaterial::getNeighborMaterialPropertyOld(), InterfaceMaterial::getNeighborMaterialPropertyOlder(), Material::getOptionalADMaterialProperty(), Material::getOptionalMaterialProperty(), Material::getOptionalMaterialPropertyOld(), Material::getOptionalMaterialPropertyOlder(), MooseBase::getParam(), FEProblemBase::getPositionsObject(), FEProblemBase::getPostprocessorValueByName(), ComponentMaterialPropertyInterface::getPropertyValue(), ReporterData::getReporterInfo(), MFEMExecutedObject::getRequestedItems(), MooseApp::getRestartableDataMap(), MooseApp::getRestartableDataMapName(), MooseApp::getRestartableMetaData(), FEProblemBase::getSampler(), MFEMObject::getScalarCoefficient(), MFEMObject::getScalarCoefficientByName(), TimedSubdomainModifier::getSubdomainIDAndCheck(), MFEMExecutedObject::getSuppliedItems(), TransientBase::getTimeStepperName(), ProjectedStatefulMaterialStorageAction::getTypeEnum(), FEProblemBase::getUserObject(), FEProblemBase::getUserObjectBase(), MFEMObject::getVectorCoefficient(), MFEMObject::getVectorCoefficientByName(), Terminator::handleMessage(), Control::hasControllableParameterByName(), FEProblemBase::hasConvergence(), FEProblemBase::hasDistribution(), FEProblemBase::hasFunction(), SubProblem::hasFunctor(), SubProblem::hasFunctorWithType(), FEProblemBase::hasFVInterpolationMethod(), MeshInfo::hasItem(), MooseApp::hasMeshGenerator(), MFEMProblem::hasMFEMObject(), AdvancedOutput::hasOutputHelper(), FEProblemBase::hasPostprocessor(), FEProblemBase::hasPostprocessorValueByName(), MooseApp::hasRelationshipManager(), MooseApp::hasRestartableDataMap(), MooseApp::hasRestartableMetaData(), FEProblemBase::hasUserObject(), NEML2Action::inferMOOSEIOType(), AddVariableAction::init(), AdvancedOutput::init(), IterationAdaptiveDT::init(), AdvancedOutput::initAvailableLists(), MeshInfo::initCombinedInfos(), AdvancedOutput::initExecutionTypes(), AttribName::initFrom(), NestedDivision::initialize(), TransformedPositions::initialize(), BoundaryRestrictable::initializeBoundaryRestrictable(), AuxKernelBase::initialSetup(), SolutionScalarAux::initialSetup(), Console::initialSetup(), JSONOutput::initialSetup(), BoundaryLinearFVFluxIntegral::initialSetup(), NodalVariableValue::initialSetup(), SideFVFluxBCIntegral::initialSetup(), MultiAppGeneralFieldFunctorTransfer::initialSetup(), MultiAppProjectionTransfer::initialSetup(), SolutionUserObjectBase::initialSetup(), AdvancedOutput::initOutputList(), AdvancedOutput::initPostprocessorOrVectorPostprocessorLists(), MaterialBase::initStatefulProperties(), Function::integral(), InterfaceKernelTempl< T >::InterfaceKernelTempl(), MultiAppGeometricInterpolationTransfer::interpolateTargetPoints(), MeshGenerator::isChildMeshGenerator(), DerivativeMaterialInterface< T >::isNotObjectVariable(), MeshGenerator::isNullMeshName(), MooseBase::isParamSetByUser(), MooseBase::isParamValid(), MeshGenerator::isParentMeshGenerator(), LinearCombinationFunction::LinearCombinationFunction(), FEProblemBase::logAdd(), MooseLinearVariableFV< OutputType >::lowerDError(), Marker::Marker(), MaterialBase::markMatPropRequested(), Material::Material(), Distribution::median(), MemoryUsageReporter::MemoryUsageReporter(), NEML2ModelExecutor::meshChanged(), MeshGenerator::meshPropertyPrefix(), MooseBase::messagePrefix(), MFEMGeometricMultigridSolver::MFEMGeometricMultigridSolver(), MFEMScalarQuadratureFunction::MFEMScalarQuadratureFunction(), MFEMVectorQuadratureFunction::MFEMVectorQuadratureFunction(), OutputWarehouse::mooseConsole(), SolutionInvalidInterface::mooseDeprecated(), MooseVariableBase::MooseVariableBase(), MooseVariableInterface< T >::MooseVariableInterface(), SolutionInvalidInterface::mooseWarning(), SolutionInvalidInterface::mooseWarningNonPrefixed(), MultiAppGeneralFieldTransfer::MultiAppGeneralFieldTransfer(), MultiAppUserObjectTransfer::MultiAppUserObjectTransfer(), NEML2PreKernel::NEML2PreKernel(), NodalDamper::NodalDamper(), MooseLinearVariableFV< OutputType >::nodalError(), NodalPatchRecoveryAuxBase::NodalPatchRecoveryAuxBase(), NodalValueSampler::NodalValueSampler(), MeshGenerator::Comparator::operator()(), DOFMapOutput::output(), ProgressOutput::output(), Output::Output(), AdvancedOutput::outputElementalVariables(), ConsoleUtils::outputExecutionInformation(), MaterialOutputAction::outputHelper(), AdvancedOutput::outputInput(), AdvancedOutput::outputNodalVariables(), AdvancedOutput::outputPostprocessors(), Exodus::outputPostprocessors(), Nemesis::outputPostprocessors(), TableOutput::outputReporter(), AdvancedOutput::outputReporters(), AdvancedOutput::outputScalarVariables(), AdvancedOutput::outputSystemInformation(), AdvancedOutput::outputVectorPostprocessors(), SolutionInvalidInterface::paramWarning(), ParsedCurveGenerator::ParsedCurveGenerator(), ParsedODEKernel::ParsedODEKernel(), ComponentPhysicsInterface::physicsExists(), PiecewiseBilinear::PiecewiseBilinear(), PiecewiseByBlockFunctorMaterialTempl< T >::PiecewiseByBlockFunctorMaterialTempl(), PiecewiseFunction::PiecewiseFunction(), MooseApp::possiblyLoadRestartableMetaData(), MFEMExecutedObject::postprocessorDependencyKey(), PhysicsBase::prefix(), MooseMesh::prepare(), BlockRestrictionDebugOutput::printBlockRestrictionMap(), PerfGraphLivePrint::printStats(), FEProblemBase::projectInitialConditionOnCustomRange(), MooseBase::queryParam(), MultiApp::readCommandLineArguments(), Receiver::Receiver(), Executor::Result::record(), FEProblemBase::registerRandomInterface(), MooseApp::registerRestartableDataMapName(), MooseApp::registerRestartableNameWithFilter(), MaterialBase::resetQpProperties(), MultiApp::restore(), ScalarComponentIC::ScalarComponentIC(), MultiApp::setAppOutputFileBase(), FEProblemBase::setAuxKernelParamsAndLog(), MooseMesh::setBoundaryName(), Control::setControllableValue(), Control::setControllableValueByName(), OutputWarehouse::setFileNumbers(), FEProblemBase::setPostprocessorValueByName(), FEProblemBase::setResidualObjectParamsAndLog(), MooseMesh::setSubdomainName(), MooseMesh::setSubdomainName(), NodeSetsGeneratorBase::setup(), SideSetsGeneratorBase::setup(), SurfaceMeshGeneratorBase::setup(), Split::setup(), TransientMultiApp::setupApp(), NEML2Action::setupOutputMappings(), SideSetExtruderGenerator::SideSetExtruderGenerator(), TransientMultiApp::solveStep(), UserObject::spatialValue(), StitchedMesh::StitchedMesh(), SubProblem::storeBoundaryDelayedCheckMatProp(), SubProblem::storeBoundaryMatPropName(), MaterialBase::storeBoundaryZeroMatProp(), SubProblem::storeBoundaryZeroMatProp(), SubProblem::storeSubdomainDelayedCheckMatProp(), SubProblem::storeSubdomainMatPropName(), MaterialBase::storeSubdomainZeroMatProp(), SubProblem::storeSubdomainZeroMatProp(), ConstraintWarehouse::subdomainsCovered(), MaterialBase::subdomainSetup(), SumPostprocessor::SumPostprocessor(), MFEMPostprocessor::suppliedPostprocessorName(), MFEMVectorPostprocessor::suppliedVectorPostprocessorName(), NEML2FEInterpolation::syncWithMainThread(), TaggingInterface::TaggingInterface(), MooseLinearVariableFV< OutputType >::timeIntegratorError(), VectorPostprocessorVisualizationAux::timestepSetup(), ElementSubdomainModifierBase::timestepSetup(), to_json(), MultiAppDofCopyTransfer::transfer(), MultiAppShapeEvaluationTransfer::transferVariable(), MultiAppMFEMCopyTransfer::transferVariables(), MultiAppMFEMShapeEvaluationTransfer::transferVariables(), TransientMultiApp::TransientMultiApp(), MooseBase::typeAndName(), MooseBase::uniqueParameterName(), FVQpFluxBC::uOnGhost(), FVQpFluxBC::uOnUSub(), UserObjectBase::UserObjectBase(), UserObjectInterface::userObjectName(), ParsedAux::validateGenericVectorNames(), MeshInfo::validParams(), MFEMExecutedObject::variableDependencyKey(), PhysicsBase::variableExists(), MultiAppTransfer::variableIntegrityCheck(), VectorMagnitudeFunctorMaterialTempl< is_ad >::VectorMagnitudeFunctorMaterialTempl(), MFEMExecutedObject::vectorPostprocessorDependencyKey(), Convergence::verboseOutput(), AdvancedOutput::wantOutput(), Coupleable::writableCoupledValue(), Coupleable::writableVariable(), Console::write(), and MooseApp::writeRestartableMetaData().

◆ needBoundaryMaterialOnSide()

bool FEProblemBase::needBoundaryMaterialOnSide ( BoundaryID  bnd_id,
const THREAD_ID  tid 
)
inherited

These methods are used to determine whether stateful material properties need to be stored on internal sides.

There are five situations where this may be the case: 1) DGKernels 2) IntegratedBCs 3)InternalSideUserObjects 4)ElementalAuxBCs 5)InterfaceUserObjects

Method 1:

Parameters
bnd_idthe boundary id for which to see if stateful material properties need to be stored
tidthe THREAD_ID of the caller
Returns
Boolean indicating whether material properties need to be stored

Method 2:

Parameters
subdomain_idthe subdomain id for which to see if stateful material properties need to be stored
tidthe THREAD_ID of the caller
Returns
Boolean indicating whether material properties need to be stored

Definition at line 9325 of file FEProblemBase.C.

9326{
9327 if (_bnd_mat_side_cache[tid].find(bnd_id) == _bnd_mat_side_cache[tid].end())
9328 {
9329 auto & bnd_mat_side_cache = _bnd_mat_side_cache[tid][bnd_id];
9330 bnd_mat_side_cache = false;
9331
9332 // Check systems
9333 if (_aux->needMaterialOnSide(bnd_id))
9334 {
9335 bnd_mat_side_cache = true;
9336 return true;
9337 }
9338 for (auto & nl : _nl)
9339 if (nl->needBoundaryMaterialOnSide(bnd_id, tid))
9340 {
9341 bnd_mat_side_cache = true;
9342 return true;
9343 }
9344
9345 // TODO: these objects should be checked for whether they actually consume materials
9346 // NOTE: InterfaceUO can use use boundary properties too
9347 if (theWarehouse()
9348 .query()
9349 .condition<AttribThread>(tid)
9350 .condition<AttribInterfaces>(Interfaces::SideUserObject | Interfaces::DomainUserObject |
9352 .condition<AttribBoundaries>(bnd_id)
9353 .count() > 0)
9354 {
9355 bnd_mat_side_cache = true;
9356 return true;
9357 }
9358 }
9359
9360 return _bnd_mat_side_cache[tid][bnd_id];
9361}
std::vector< std::unordered_map< BoundaryID, bool > > _bnd_mat_side_cache
Cache for calculating materials on side.
bool needBoundaryMaterialOnSide(BoundaryID bnd_id, const THREAD_ID tid)
These methods are used to determine whether stateful material properties need to be stored on interna...
KOKKOS_INLINE_FUNCTION const T * find(const T &target, const T *const begin, const T *const end)
Find a value in an array.
Definition KokkosUtils.h:40

Referenced by ComputeMaterialsObjectThread::onBoundary(), ProjectMaterialProperties::onBoundary(), FEProblemBase::reinitMaterialsBoundary(), FEProblemBase::reinitMaterialsFaceOnBoundary(), and FEProblemBase::reinitMaterialsNeighborOnBoundary().

◆ needFV()

virtual void FEProblemBase::needFV ( )
inlineoverridevirtualinherited

marks this problem as including/needing finite volume functionality.

Implements SubProblem.

Definition at line 2958 of file FEProblemBase.h.

2958{ _have_fv = true; }

Referenced by DiffusionFV::initializePhysicsAdditional(), and DisplacedProblem::needFV().

◆ needInterfaceMaterialOnSide()

bool FEProblemBase::needInterfaceMaterialOnSide ( BoundaryID  bnd_id,
const THREAD_ID  tid 
)
inherited

Definition at line 9364 of file FEProblemBase.C.

9365{
9366 if (_interface_mat_side_cache[tid].find(bnd_id) == _interface_mat_side_cache[tid].end())
9367 {
9368 auto & interface_mat_side_cache = _interface_mat_side_cache[tid][bnd_id];
9369 interface_mat_side_cache = false;
9370
9371 // Aux-system has not needed interface materials so far
9372 for (auto & nl : _nl)
9373 if (nl->needInterfaceMaterialOnSide(bnd_id, tid))
9374 {
9375 interface_mat_side_cache = true;
9376 return true;
9377 }
9378
9379 // TODO: these objects should be checked for whether they actually consume materials
9380 if (theWarehouse()
9381 .query()
9382 .condition<AttribThread>(tid)
9383 .condition<AttribInterfaces>(Interfaces::InterfaceUserObject |
9385 .condition<AttribBoundaries>(bnd_id)
9386 .count() > 0)
9387 {
9388 interface_mat_side_cache = true;
9389 return true;
9390 }
9391 else if (_interface_materials.hasActiveBoundaryObjects(bnd_id, tid))
9392 {
9393 interface_mat_side_cache = true;
9394 return true;
9395 }
9396 }
9397 return _interface_mat_side_cache[tid][bnd_id];
9398}
bool needInterfaceMaterialOnSide(BoundaryID bnd_id, const THREAD_ID tid)
std::vector< std::unordered_map< BoundaryID, bool > > _interface_mat_side_cache
Cache for calculating materials on interface.
bool hasActiveBoundaryObjects(THREAD_ID tid=0) const

Referenced by ComputeMaterialsObjectThread::onInterface(), FEProblemBase::reinitMaterialsFaceOnBoundary(), FEProblemBase::reinitMaterialsInterface(), and FEProblemBase::reinitMaterialsNeighborOnBoundary().

◆ needInternalNeighborSideMaterial()

bool FEProblemBase::needInternalNeighborSideMaterial ( SubdomainID  subdomain_id,
const THREAD_ID  tid 
)
inherited

Definition at line 9401 of file FEProblemBase.C.

9402{
9403 if (_block_mat_side_cache[tid].find(subdomain_id) == _block_mat_side_cache[tid].end())
9404 {
9405 _block_mat_side_cache[tid][subdomain_id] = false;
9406
9407 for (auto & nl : _nl)
9408 if (nl->needInternalNeighborSideMaterial(subdomain_id, tid))
9409 {
9410 _block_mat_side_cache[tid][subdomain_id] = true;
9411 return true;
9412 }
9413
9414 // TODO: these objects should be checked for whether they actually consume materials
9415 if (theWarehouse()
9416 .query()
9417 .condition<AttribThread>(tid)
9418 .condition<AttribInterfaces>(Interfaces::InternalSideUserObject |
9420 .condition<AttribSubdomains>(subdomain_id)
9421 .count() > 0)
9422 {
9423 _block_mat_side_cache[tid][subdomain_id] = true;
9424 return true;
9425 }
9426 }
9427
9428 return _block_mat_side_cache[tid][subdomain_id];
9429}
std::vector< std::unordered_map< SubdomainID, bool > > _block_mat_side_cache
Cache for calculating materials on side.
bool needInternalNeighborSideMaterial(SubdomainID subdomain_id, const THREAD_ID tid)

Referenced by FEProblemBase::reinitMaterialsFaceOnBoundary(), FEProblemBase::reinitMaterialsNeighborOnBoundary(), ComputeMaterialsObjectThread::subdomainChanged(), and ProjectMaterialProperties::subdomainChanged().

◆ needSolutionState()

void FEProblemBase::needSolutionState ( unsigned int  oldest_needed,
Moose::SolutionIterationType  iteration_type 
)
inherited

Declare that we need up to old (1) or older (2) solution states for a given type of iteration.

Parameters
oldest_neededoldest solution state needed
iteration_typethe type of iteration for which old/older states are needed

Definition at line 766 of file FEProblemBase.C.

767{
768 for (auto & sys : _solver_systems)
769 sys->needSolutionState(state, iteration_type);
770 _aux->needSolutionState(state, iteration_type);
771}

Referenced by FEProblemBase::createTagSolutions().

◆ needsPreviousMultiAppFixedPointIterationAuxiliary() [1/2]

bool FEProblemBase::needsPreviousMultiAppFixedPointIterationAuxiliary ( ) const
inherited

Check to see whether we need to compute the variable values of the previous multiapp fixed point iteration for the auxiliary system.

Returns
true if the user required values of the previous multiapp fixed point iteration from the auxiliary system

Definition at line 9466 of file FEProblemBase.C.

9467{
9469}
bool _previous_multiapp_fp_aux_solution_required
Indicates we need to save the previous multiapp fixed-point iteration auxiliary variable values.

◆ needsPreviousMultiAppFixedPointIterationAuxiliary() [2/2]

void FEProblemBase::needsPreviousMultiAppFixedPointIterationAuxiliary ( bool  state)
inherited

Set a flag that indicated that user required values for the previous multiapp fixed point iterate for the auxiliary system.

Definition at line 9460 of file FEProblemBase.C.

Referenced by FunctorChangeFunctorMaterialTempl< is_ad >::FunctorChangeFunctorMaterialTempl(), and FixedPointSolve::initialSetup().

◆ needsPreviousMultiAppFixedPointIterationSolution() [1/2]

void FEProblemBase::needsPreviousMultiAppFixedPointIterationSolution ( bool  needed,
const unsigned int  solver_sys_num 
)
inherited

Set a flag that indicated that user required values for the previous multiapp fixed point iterate for the solver systems (not auxiliary)

Parameters
neededthe value that should be set to the flag
solver_sys_numthe index of the solver system for which the previous iteration is needed

Definition at line 9446 of file FEProblemBase.C.

9448{
9449 _previous_multiapp_fp_nl_solution_required[solver_sys_num] = needed;
9450}
std::vector< bool > _previous_multiapp_fp_nl_solution_required
Indicates we need to save the previous multiapp fixed-point iteration solver variable values.

Referenced by FunctorChangeFunctorMaterialTempl< is_ad >::FunctorChangeFunctorMaterialTempl(), and FixedPointSolve::initialSetup().

◆ needsPreviousMultiAppFixedPointIterationSolution() [2/2]

bool FEProblemBase::needsPreviousMultiAppFixedPointIterationSolution ( const unsigned int  solver_sys_num) const
inherited

Check to see whether we need to compute the variable values of the previous multiapp fixed point iteration for the solver systems (not auxiliary)

Parameters
solver_sys_numthe index of the solver system for which the previous iteration is needed
Returns
true if the user required values of the previous multiapp fixed point iteration

Definition at line 9453 of file FEProblemBase.C.

9455{
9456 return _previous_multiapp_fp_nl_solution_required[solver_sys_num];
9457}

◆ needsPreviousMultiSystemFixedPointIterationAuxiliary() [1/2]

bool FEProblemBase::needsPreviousMultiSystemFixedPointIterationAuxiliary ( ) const
inherited

Check to see whether we need to compute the variable values of the previous multi-system fixed point iteration for the auxiliary system.

Returns
true if the user required values of the previous multi-system fixed point iteration from the auxiliary system

Definition at line 9492 of file FEProblemBase.C.

9493{
9495}
bool _previous_multisystem_fp_aux_solution_required
Indicates we need to save the previous multi-system fixed-point iteration auxiliary variable values.

◆ needsPreviousMultiSystemFixedPointIterationAuxiliary() [2/2]

void FEProblemBase::needsPreviousMultiSystemFixedPointIterationAuxiliary ( bool  state)
inherited

Set a flag that indicates that user requires values for the previous multi-system fixed point iterate for the auxiliary system.

Definition at line 9486 of file FEProblemBase.C.

Referenced by FunctorChangeFunctorMaterialTempl< is_ad >::FunctorChangeFunctorMaterialTempl(), and FEProblemSolve::initialSetup().

◆ needsPreviousMultiSystemFixedPointIterationSolution() [1/2]

void FEProblemBase::needsPreviousMultiSystemFixedPointIterationSolution ( bool  needed,
const unsigned int  solver_sys_num 
)
inherited

Set a flag that indicates that user requires values for the previous multi-system fixed point iterate for the solver systems (not auxiliary)

Parameters
neededthe value that should be set to the flag
solver_sys_numthe index of the solver system for which the previous iteration is needed

Definition at line 9472 of file FEProblemBase.C.

9474{
9475 _previous_multisystem_fp_nl_solution_required[solver_sys_num] = needed;
9476}
std::vector< bool > _previous_multisystem_fp_nl_solution_required
Indicates we need to save the previous multi-system fixed-point iteration solver variable values.

Referenced by FunctorChangeFunctorMaterialTempl< is_ad >::FunctorChangeFunctorMaterialTempl(), and FEProblemSolve::initialSetup().

◆ needsPreviousMultiSystemFixedPointIterationSolution() [2/2]

bool FEProblemBase::needsPreviousMultiSystemFixedPointIterationSolution ( const unsigned int  solver_sys_num) const
inherited

Check to see whether we need to compute the variable values of the previous multi-system fixed point iteration for the solver systems (not auxiliary)

Parameters
solver_sys_numthe index of the solver system for which the previous iteration is needed
Returns
true if the user required values of the previous multi-system fixed point iteration

Definition at line 9479 of file FEProblemBase.C.

9481{
9482 return _previous_multisystem_fp_nl_solution_required[solver_sys_num];
9483}

◆ needsPreviousNewtonIteration() [1/2]

bool FEProblemBase::needsPreviousNewtonIteration ( ) const
inherited

Check to see whether we need to compute the variable values of the previous Newton iterate.

Returns
true if the user required values of the previous Newton iterate

Definition at line 9432 of file FEProblemBase.C.

◆ needsPreviousNewtonIteration() [2/2]

void FEProblemBase::needsPreviousNewtonIteration ( bool  state)
inherited

Set a flag that indicated that user required values for the previous Newton iterate.

Definition at line 9438 of file FEProblemBase.C.

9439{
9441 mooseError("Previous nonlinear solution is required but not added through "
9442 "Problem/previous_nl_solution_required=true");
9443}

Referenced by Coupleable::coupledGradientPreviousNL(), Coupleable::coupledNodalValuePreviousNL(), Coupleable::coupledSecondPreviousNL(), Coupleable::coupledValuePreviousNL(), and NonlinearSystem::solve().

◆ needToAddDefaultMultiAppFixedPointConvergence()

bool FEProblemBase::needToAddDefaultMultiAppFixedPointConvergence ( ) const
inlineinherited

Returns true if the problem needs to add the default fixed point convergence.

Definition at line 746 of file FEProblemBase.h.

747 {
749 }
bool _need_to_add_default_multiapp_fixed_point_convergence
Flag that the problem needs to add the default fixed point convergence.

◆ needToAddDefaultNonlinearConvergence()

bool FEProblemBase::needToAddDefaultNonlinearConvergence ( ) const
inlineinherited

Returns true if the problem needs to add the default nonlinear convergence.

Definition at line 741 of file FEProblemBase.h.

742 {
744 }
bool _need_to_add_default_nonlinear_convergence
Flag that the problem needs to add the default nonlinear convergence.

◆ needToAddDefaultSteadyStateConvergence()

bool FEProblemBase::needToAddDefaultSteadyStateConvergence ( ) const
inlineinherited

Returns true if the problem needs to add the default steady-state detection convergence.

Definition at line 751 of file FEProblemBase.h.

752 {
754 }
bool _need_to_add_default_steady_state_convergence
Flag that the problem needs to add the default steady convergence.

◆ neighborSubdomainSetup()

void FEProblemBase::neighborSubdomainSetup ( SubdomainID  subdomain,
const THREAD_ID  tid 
)
virtualinherited

Definition at line 2639 of file FEProblemBase.C.

2640{
2641 _all_materials.neighborSubdomainSetup(subdomain, tid);
2642}
virtual void neighborSubdomainSetup(THREAD_ID tid=0) const

Referenced by ThreadedFaceLoop< RangeType >::neighborSubdomainChanged().

◆ newAssemblyArray()

void FEProblemBase::newAssemblyArray ( std::vector< std::shared_ptr< SolverSystem > > &  solver_systems)
virtualinherited

Definition at line 785 of file FEProblemBase.C.

786{
787 unsigned int n_threads = libMesh::n_threads();
788
789 _assembly.resize(n_threads);
790 for (const auto i : make_range(n_threads))
791 {
792 _assembly[i].resize(solver_systems.size());
793 for (const auto j : index_range(solver_systems))
794 _assembly[i][j] = std::make_unique<Assembly>(*solver_systems[j], i);
795 }
796}
Keeps track of stuff related to assembling.
Definition Assembly.h:110

Referenced by DumpObjectsProblem::DumpObjectsProblem(), EigenProblem::EigenProblem(), ExternalProblem(), and FEProblem::FEProblem().

◆ nlConverged()

bool SubProblem::nlConverged ( const unsigned int  nl_sys_num)
virtualinherited
Returns
whether the given nonlinear system nl_sys_num is converged.

Definition at line 717 of file SubProblem.C.

718{
719 mooseAssert(nl_sys_num < numNonlinearSystems(),
720 "The nonlinear system number is higher than the number of systems we have!");
721 return solverSystemConverged(nl_sys_num);
722}

◆ nLinearIterations()

unsigned int FEProblemBase::nLinearIterations ( const unsigned int  nl_sys_num) const
overridevirtualinherited

Reimplemented from SubProblem.

Definition at line 7150 of file FEProblemBase.C.

7151{
7152 return _nl[nl_sys_num]->nLinearIterations();
7153}

Referenced by PiecewiseLinearFromVectorPostprocessor::valueInternal().

◆ nlSysNum()

unsigned int FEProblemBase::nlSysNum ( const NonlinearSystemName &  nl_sys_name) const
overridevirtualinherited
Returns
the nonlinear system number corresponding to the provided nl_sys_name

Implements SubProblem.

Definition at line 6880 of file FEProblemBase.C.

6881{
6882 std::istringstream ss(nl_sys_name);
6883 unsigned int nl_sys_num;
6884 if (!(ss >> nl_sys_num) || !ss.eof())
6885 nl_sys_num = libmesh_map_find(_nl_sys_name_to_num, nl_sys_name);
6886
6887 return nl_sys_num;
6888}
std::map< NonlinearSystemName, unsigned int > _nl_sys_name_to_num
Map from nonlinear system name to number.

Referenced by DisplacedProblem::nlSysNum().

◆ nNonlinearIterations()

unsigned int FEProblemBase::nNonlinearIterations ( const unsigned int  nl_sys_num) const
overridevirtualinherited

Reimplemented from SubProblem.

Definition at line 7144 of file FEProblemBase.C.

7145{
7146 return _nl[nl_sys_num]->nNonlinearIterations();
7147}

Referenced by PiecewiseLinearFromVectorPostprocessor::valueInternal().

◆ nonlocalCouplingEntries()

std::vector< std::pair< MooseVariableFieldBase *, MooseVariableFieldBase * > > & FEProblemBase::nonlocalCouplingEntries ( const THREAD_ID  tid,
const unsigned int  nl_sys_num 
)
inherited

Definition at line 6732 of file FEProblemBase.C.

6733{
6734 return _assembly[tid][nl_sys]->nonlocalCouplingEntries();
6735}

Referenced by ComputeFullJacobianThread::computeOnBoundary(), and ComputeFullJacobianThread::computeOnElement().

◆ nonlocalCouplingMatrix()

const libMesh::CouplingMatrix & FEProblemBase::nonlocalCouplingMatrix ( const unsigned  i) const
overridevirtualinherited
Returns
the nonlocal coupling matrix for the i'th nonlinear system

Implements SubProblem.

Definition at line 10113 of file FEProblemBase.C.

10114{
10115 return _nonlocal_cm[i];
10116}

Referenced by DisplacedProblem::nonlocalCouplingMatrix().

◆ notifyWhenMeshChanges()

void FEProblemBase::notifyWhenMeshChanges ( MeshChangedInterface mci)
inherited

Register an object that derives from MeshChangedInterface to be notified when the mesh changes.

Definition at line 8858 of file FEProblemBase.C.

8859{
8860 _notify_when_mesh_changes.push_back(mci);
8861}

Referenced by MeshChangedInterface::MeshChangedInterface().

◆ notifyWhenMeshDisplaces()

void FEProblemBase::notifyWhenMeshDisplaces ( MeshDisplacedInterface mdi)
inherited

Register an object that derives from MeshDisplacedInterface to be notified when the displaced mesh gets updated.

Definition at line 8864 of file FEProblemBase.C.

8865{
8866 _notify_when_mesh_displaces.push_back(mdi);
8867}

Referenced by MeshDisplacedInterface::MeshDisplacedInterface().

◆ numGridSteps()

void FEProblemBase::numGridSteps ( unsigned int  num_grid_steps)
inlineinherited

Set the number of steps in a grid sequences.

Definition at line 2706 of file FEProblemBase.h.

2706{ _num_grid_steps = num_grid_steps; }

Referenced by FEProblemSolve::FEProblemSolve().

◆ numLinearSystems()

virtual std::size_t FEProblemBase::numLinearSystems ( ) const
inlineoverridevirtualinherited

◆ numMatrixTags()

virtual unsigned int SubProblem::numMatrixTags ( ) const
inlinevirtualinherited

◆ numNonlinearSystems()

virtual std::size_t FEProblemBase::numNonlinearSystems ( ) const
inlineoverridevirtualinherited

◆ numSolverSystems()

virtual std::size_t FEProblemBase::numSolverSystems ( ) const
inlineoverridevirtualinherited

◆ numVectorTags()

unsigned int SubProblem::numVectorTags ( const Moose::VectorTagType  type = Moose::VECTOR_TAG_ANY) const
virtualinherited

◆ objectExecuteHelper()

template<typename T >
void FEProblemBase::objectExecuteHelper ( const std::vector< T * > &  objects)
staticinherited

Definition at line 3731 of file FEProblemBase.h.

3732{
3733 for (T * obj_ptr : objects)
3734 obj_ptr->execute();
3735}

◆ objectSetupHelper()

template<typename T >
void FEProblemBase::objectSetupHelper ( const std::vector< T * > &  objects,
const ExecFlagType exec_flag 
)
staticinherited

Helpers for calling the necessary setup/execute functions for the supplied objects.

Definition at line 3697 of file FEProblemBase.h.

3698{
3699 if (exec_flag == EXEC_INITIAL)
3700 {
3701 for (T * obj_ptr : objects)
3702 obj_ptr->initialSetup();
3703 }
3704
3705 else if (exec_flag == EXEC_TIMESTEP_BEGIN)
3706 {
3707 for (const auto obj_ptr : objects)
3708 obj_ptr->timestepSetup();
3709 }
3710 else if (exec_flag == EXEC_SUBDOMAIN)
3711 {
3712 for (const auto obj_ptr : objects)
3713 obj_ptr->subdomainSetup();
3714 }
3715
3716 else if (exec_flag == EXEC_NONLINEAR)
3717 {
3718 for (const auto obj_ptr : objects)
3719 obj_ptr->jacobianSetup();
3720 }
3721
3722 else if (exec_flag == EXEC_LINEAR)
3723 {
3724 for (const auto obj_ptr : objects)
3725 obj_ptr->residualSetup();
3726 }
3727}
void timestepSetup() override
virtual void subdomainSetup(SubdomainID subdomain, const THREAD_ID tid)

◆ onlyAllowDefaultNonlinearConvergence()

virtual bool FEProblemBase::onlyAllowDefaultNonlinearConvergence ( ) const
inlinevirtualinherited

Returns true if an error will result if the user supplies 'nonlinear_convergence'.

Some problems are strongly tied to their convergence, and it does not make sense to use any convergence other than their default and additionally would be error-prone.

Reimplemented in ReferenceResidualProblem.

Definition at line 795 of file FEProblemBase.h.

795{ return false; }

Referenced by FEProblemSolve::FEProblemSolve().

◆ onTimestepBegin()

void FEProblemBase::onTimestepBegin ( )
overridevirtualinherited

Implements SubProblem.

Definition at line 7312 of file FEProblemBase.C.

7313{
7314 TIME_SECTION("onTimestepBegin", 2);
7315
7316 for (auto & nl : _nl)
7317 nl->onTimestepBegin();
7318}
virtual void onTimestepBegin() override

Referenced by TransientBase::takeStep(), and MFEMTransient::takeStep().

◆ onTimestepEnd()

void FEProblemBase::onTimestepEnd ( )
overridevirtualinherited

◆ outputStep()

void FEProblemBase::outputStep ( ExecFlagType  type)
virtualinherited

Output the current step.

Will ensure that everything is in the proper state to be outputted. Then tell the OutputWarehouse to do its thing

Parameters
typeThe type execution flag (see Moose.h)

Reimplemented in DumpObjectsProblem.

Definition at line 7275 of file FEProblemBase.C.

7276{
7277 TIME_SECTION("outputStep", 1, "Outputting");
7278
7280
7281 for (auto & sys : _solver_systems)
7282 sys->update();
7283 _aux->update();
7284
7286 _displaced_problem->syncSolutions();
7288
7290}
void outputStep(ExecFlagType type)
Calls the outputStep method for each output object.

Referenced by TransientBase::endStep(), Eigenvalue::execute(), SteadyBase::execute(), TransientBase::execute(), MFEMSteady::execute(), InversePowerMethod::init(), NonlinearEigen::init(), EigenExecutionerBase::postExecute(), TransientBase::preExecute(), FEProblemSolve::solve(), FixedPointSolve::solve(), FixedPointSolve::solveStep(), and TransientMultiApp::solveStep().

◆ paramError()

template<typename... Args>
void MooseBase::paramError ( const std::string &  param,
Args...  args 
) const
inherited

Emits an error prefixed with the file and line number of the given param (from the input file) along with the full parameter path+name followed by the given args as the message.

If this object's parameters were not created directly by the Parser, then this function falls back to the normal behavior of mooseError - only printing a message using the given args.

Definition at line 457 of file MooseBase.h.

458{
459 _pars.paramError(param, std::forward<Args>(args)...);
460}
void paramError(const std::string &param, Args... args) const
Emits a parameter error prefixed with the parameter location and object information if available.

Referenced by HierarchicalGridPartitioner::_do_partition(), AutoCheckpointAction::act(), CommonOutputAction::act(), SetupDebugAction::act(), DiffusionCG::addFEKernels(), DiffusionFV::addFVKernels(), NEML2ModelExecutor::addGatheredParameter(), NEML2ModelExecutor::addGatheredVariable(), ADDGKernel::ADDGKernel(), ComponentJunction::addMeshGenerators(), CylinderComponent::addMeshGenerators(), ReporterPointSource::addPoints(), ADIntegratedBCTempl< T >::ADIntegratedBCTempl(), ADKernelTempl< T >::ADKernelTempl(), ADPenaltyPeriodicSegmentalConstraint::ADPenaltyPeriodicSegmentalConstraint(), ADPeriodicSegmentalConstraint::ADPeriodicSegmentalConstraint(), AdvancedExtruderGenerator::AdvancedExtruderGenerator(), AdvectiveFluxAux::AdvectiveFluxAux(), AnnularMesh::AnnularMesh(), AnnularMeshGenerator::AnnularMeshGenerator(), ArrayBodyForce::ArrayBodyForce(), ArrayCoupledForce::ArrayCoupledForce(), ArrayDGKernel::ArrayDGKernel(), ArrayDGLowerDKernel::ArrayDGLowerDKernel(), ArrayDirichletBC::ArrayDirichletBC(), ArrayHFEMDirichletBC::ArrayHFEMDirichletBC(), ArrayIntegratedBC::ArrayIntegratedBC(), ArrayKernel::ArrayKernel(), ArrayLowerDIntegratedBC::ArrayLowerDIntegratedBC(), ArrayParsedAux::ArrayParsedAux(), ArrayPenaltyDirichletBC::ArrayPenaltyDirichletBC(), ArrayReactionNodalKernelTempl< is_ad >::ArrayReactionNodalKernelTempl(), ArrayVacuumBC::ArrayVacuumBC(), ArrayVarReductionAux::ArrayVarReductionAux(), ParsedSubdomainIDsGenerator::assignElemSubdomainID(), AuxKernelBase::AuxKernelBase(), BatchMeshGeneratorAction::BatchMeshGeneratorAction(), BlockDeletionGenerator::BlockDeletionGenerator(), BlockWeightedPartitioner::BlockWeightedPartitioner(), BoundaryIntegralValueConstraint::BoundaryIntegralValueConstraint(), BoundaryLinearFVFluxIntegral::BoundaryLinearFVFluxIntegral(), BoundsBase::BoundsBase(), BreakMeshByBlockGenerator::BreakMeshByBlockGenerator(), BSplineCurveGenerator::BSplineCurveGenerator(), BuildArrayVariableAux::BuildArrayVariableAux(), MFEMFESpaceHierarchy::buildHierarchy(), MFEMMesh::buildMesh(), MFEMGeometricMultigridSolver::BuildMultigrid(), TimeSequenceStepperBase::buildSequence(), CartesianGridDivision::CartesianGridDivision(), CartesianMeshGenerator::CartesianMeshGenerator(), checkComponent(), Moose::Kokkos::ParsedObjectBase::checkDuplicateSymbols(), SamplerBase::checkForStandardFieldVariableType(), MeshGenerator::checkGetMesh(), ComponentInitialConditionInterface::checkInitialConditionsAllRequested(), BatchMeshGeneratorAction::checkInputParameterType(), PhysicsBase::checkIntegrityEarly(), SideUserObject::checkNoInterfaceMaterialPropertyDependencies(), PostprocessorInterface::checkParam(), FEProblemBase::checkProblemIntegrity(), MultiAppReporterTransfer::checkSiblingsTransferSupported(), MFEMMultiAppTransfer::checkValidTransferProblemTypes(), Coupleable::checkVar(), MultiAppTransfer::checkVariable(), CircularBoundaryCorrectionGenerator::CircularBoundaryCorrectionGenerator(), CircularBoundaryCorrectionGenerator::circularCenterCalculator(), MultiAppGeneralFieldTransfer::closestToPosition(), CoarsenBlockGenerator::CoarsenBlockGenerator(), CombinedVectorPostprocessor::CombinedVectorPostprocessor(), CombinerGenerator::CombinerGenerator(), ComponentInitialConditionInterface::ComponentInitialConditionInterface(), ComponentJunction::ComponentJunction(), ComponentMaterialPropertyInterface::ComponentMaterialPropertyInterface(), CompositionDT::CompositionDT(), ConcentricCircleMeshGenerator::ConcentricCircleMeshGenerator(), LibtorchNeuralNetControl::conditionalParameterError(), ConservativeAdvectionBCTempl< is_ad >::ConservativeAdvectionBCTempl(), ConservativeAdvectionTempl< is_ad >::ConservativeAdvectionTempl(), ConstantVectorPostprocessor::ConstantVectorPostprocessor(), ContainsPointAux::ContainsPointAux(), CopyValueAux::CopyValueAux(), MultiAppGeneralFieldTransfer::correctSolutionVectorValues(), Coupleable::Coupleable(), CoupledForceTempl< is_ad >::CoupledForceTempl(), CoupledValueFunctionMaterialTempl< is_ad >::CoupledValueFunctionMaterialTempl(), MultiApp::createApp(), MeshGeneratorSystem::createMeshGenerator(), CylindricalGridDivision::CylindricalGridDivision(), DebugResidualAux::DebugResidualAux(), ConstantReporter::declareConstantReporterValue(), ConstantReporter::declareConstantReporterValues(), AccumulateReporter::declareLateValues(), DefaultMultiAppFixedPointConvergence::DefaultMultiAppFixedPointConvergence(), DGKernel::DGKernel(), DGKernelBase::DGKernelBase(), DGLowerDKernel::DGLowerDKernel(), DiffusionFluxAux::DiffusionFluxAux(), DomainUserObject::DomainUserObject(), EigenProblem::EigenProblem(), EigenProblemSolve::EigenProblemSolve(), ElementAdaptivityLevelAux::ElementAdaptivityLevelAux(), ElementGenerator::ElementGenerator(), ElementGroupCentroidPositions::ElementGroupCentroidPositions(), ElementLengthAux::ElementLengthAux(), ElementLpNormAux::ElementLpNormAux(), ElementNormalAux::ElementNormalAux(), ExtraIDIntegralVectorPostprocessor::elementValue(), ElementValueSampler::ElementValueSampler(), ElementVectorL2Error::ElementVectorL2Error(), EqualValueEmbeddedConstraintTempl< is_ad >::EqualValueEmbeddedConstraintTempl(), ReporterPointSource::errorCheck(), StitchMeshGeneratorBase::errorMissingBoundary(), ExamplePatchMeshGenerator::ExamplePatchMeshGenerator(), MultiAppNearestNodeTransfer::execute(), MultiAppUserObjectTransfer::execute(), ExtraElementIDAux::ExtraElementIDAux(), ExtraElementIntegerDivision::ExtraElementIntegerDivision(), ExtraIDIntegralVectorPostprocessor::ExtraIDIntegralVectorPostprocessor(), FEProblemBase::FEProblemBase(), FEProblemSolve::FEProblemSolve(), FileMeshGenerator::FileMeshGenerator(), FillBetweenCurvesGenerator::FillBetweenCurvesGenerator(), FillBetweenSidesetsGenerator::FillBetweenSidesetsGenerator(), SpatialUserObjectVectorPostprocessor::fillPoints(), CombinerGenerator::fillPositions(), MultiApp::fillPositions(), InternalSideIndicatorBase::finalize(), FixedPointSolve::findTransformedSystem(), FixedPointSolve::FixedPointSolve(), ForcingFunctionAux::ForcingFunctionAux(), FullSolveMultiApp::FullSolveMultiApp(), FunctionArrayAux::FunctionArrayAux(), FunctionValuePostprocessor::FunctionValuePostprocessor(), FunctorADConverterTempl< T >::FunctorADConverterTempl(), FunctorAux::FunctorAux(), FunctorBinnedValuesDivision::FunctorBinnedValuesDivision(), FunctorCoordinatesFunctionAux::FunctorCoordinatesFunctionAux(), FunctorElementalGradientAuxTempl< is_ad >::FunctorElementalGradientAuxTempl(), FunctorExtremaPositions::FunctorExtremaPositions(), FunctorIC::FunctorIC(), FunctorPositions::FunctorPositions(), FunctorVectorElementalAuxTempl< is_ad >::FunctorVectorElementalAuxTempl(), FVAdvection::FVAdvection(), FVFluxBC::FVFluxBC(), FVInterfaceKernel::FVInterfaceKernel(), FVOneVarDiffusionInterface::FVOneVarDiffusionInterface(), FVTwoVarContinuityConstraint::FVTwoVarContinuityConstraint(), Boundary2DDelaunayGenerator::General2DDelaunay(), SurfaceSubdomainsDelaunayRemesher::General2DDelaunay(), AddMetaDataGenerator::generate(), AdvancedExtruderGenerator::generate(), BlockDeletionGenerator::generate(), BlockToMeshConverterGenerator::generate(), Boundary2DDelaunayGenerator::generate(), BoundaryDeletionGenerator::generate(), BoundaryElementConversionGenerator::generate(), BreakBoundaryOnSubdomainGenerator::generate(), BreakMeshByBlockGenerator::generate(), BreakMeshByElementGenerator::generate(), CircularBoundaryCorrectionGenerator::generate(), CoarsenBlockGenerator::generate(), CombinerGenerator::generate(), CutMeshByLevelSetGeneratorBase::generate(), ElementsToTetrahedronsConverter::generate(), ExtraNodesetGenerator::generate(), FillBetweenCurvesGenerator::generate(), FillBetweenSidesetsGenerator::generate(), FlipSidesetGenerator::generate(), GeneratedMeshGenerator::generate(), LowerDBlockFromSidesetGenerator::generate(), ManifoldSubdomainGenerator::generate(), MeshCollectionGenerator::generate(), MeshExtruderGenerator::generate(), ParsedCurveGenerator::generate(), ParsedExtraElementIDGenerator::generate(), ParsedSubdomainGeneratorBase::generate(), PlaneIDMeshGenerator::generate(), PolyLineMeshFollowingNodeSetGenerator::generate(), ProjectSideSetOntoLevelSetGenerator::generate(), RefineBlockGenerator::generate(), RefineSidesetGenerator::generate(), RenameBlockGenerator::generate(), RenameBoundaryGenerator::generate(), RenumberBySubdomainGenerator::generate(), SideSetsFromNodeSetsGenerator::generate(), StackGenerator::generate(), SubdomainBoundingBoxGenerator::generate(), SubdomainsFromPartitionerGenerator::generate(), SurfaceSubdomainsDelaunayRemesher::generate(), UniqueExtraIDMeshGenerator::generate(), XYMeshLineCutter::generate(), XYZDelaunayGenerator::generate(), PatternedMeshGenerator::generate(), GeneratedMeshGenerator::GeneratedMeshGenerator(), BoundaryLayerUtils::generateOffsetPolyline(), GenericConstantStdVectorMaterialTempl< is_ad >::GenericConstantStdVectorMaterialTempl(), GenericFunctorGradientMaterialTempl< is_ad >::GenericFunctorGradientMaterialTempl(), GenericFunctorMaterialTempl< is_ad >::GenericFunctorMaterialTempl(), GenericFunctorTimeDerivativeMaterialTempl< is_ad >::GenericFunctorTimeDerivativeMaterialTempl(), GenericVectorFunctorMaterialTempl< is_ad >::GenericVectorFunctorMaterialTempl(), PropertyReadFile::getBlockData(), ComponentBoundaryConditionInterface::getBoundaryCondition(), MultiApp::getCommandLineArgs(), PropertyReadFile::getData(), PropertyReadFile::getFileNames(), Sampler::getGlobalSamples(), ComponentInitialConditionInterface::getInitialCondition(), NEML2Action::getInputParameterMapping(), MultiAppNearestNodeTransfer::getLocalEntitiesAndComponents(), Sampler::getLocalSamples(), MeshGenerator::getMeshGeneratorNameFromParam(), MeshGenerator::getMeshGeneratorNamesFromParam(), Sampler::getNextLocalRow(), FEProblemSolve::getParamFromNonlinearSystemVectorParam(), PostprocessorInterface::getPostprocessorNameInternal(), PostprocessorInterface::getPostprocessorValueInternal(), MultiAppNearestNodeTransfer::getTargetLocalNodes(), UserObjectInterface::getUserObjectBase(), UserObjectInterface::getUserObjectName(), AddPeriodicBCAction::getVariables(), HFEMDirichletBC::HFEMDirichletBC(), AddVariableAction::init(), MFEMTransient::init(), MultiApp::init(), DistributedPositions::initialize(), BlockWeightedPartitioner::initialize(), BlockRestrictable::initializeBlockRestrictable(), BoundaryRestrictable::initializeBoundaryRestrictable(), PhysicsBase::initializePhysics(), ReferenceResidualConvergence::initialSetup(), PiecewiseConstantFromCSV::initialSetup(), SolutionIC::initialSetup(), LibtorchControlValuePostprocessor::initialSetup(), ElementSubdomainModifierBase::initialSetup(), MFEMScalarCoefficientPointValueSampler::initialSetup(), FullSolveMultiApp::initialSetup(), JSONOutput::initialSetup(), BoundaryLinearFVFluxIntegral::initialSetup(), SideFVFluxBCIntegral::initialSetup(), MultiAppCloneReporterTransfer::initialSetup(), MultiAppDofCopyTransfer::initialSetup(), MultiAppGeneralFieldKDTreeTransferBase::initialSetup(), MultiAppGeneralFieldNearestLocationTransfer::initialSetup(), MultiAppGeneralFieldTransfer::initialSetup(), MultiAppVariableValueSamplePostprocessorTransfer::initialSetup(), HistogramVectorPostprocessor::initialSetup(), SampledOutput::initSample(), AddMetaDataGenerator::inputChecker(), IntegratedBC::IntegratedBC(), InterfaceDiffusiveFluxIntegralTempl< is_ad >::InterfaceDiffusiveFluxIntegralTempl(), InterfaceValueUserObjectAux::InterfaceValueUserObjectAux(), InternalSideIndicatorBase::InternalSideIndicatorBase(), InterpolatedStatefulMaterialTempl< T >::InterpolatedStatefulMaterialTempl(), InversePowerMethod::InversePowerMethod(), IterationAdaptiveDT::IterationAdaptiveDT(), MultiApp::keepSolutionDuringRestore(), Kernel::Kernel(), LibtorchNeuralNetControl::LibtorchNeuralNetControl(), LinearCombinationFunction::LinearCombinationFunction(), LinearFVAdvectionDiffusionFunctorRobinBC::LinearFVAdvectionDiffusionFunctorRobinBC(), LowerDIntegratedBC::LowerDIntegratedBC(), PNGOutput::makeMeshFunc(), MatCoupledForce::MatCoupledForce(), MaterialADConverterTempl< T >::MaterialADConverterTempl(), MaterialFunctorConverterTempl< T >::MaterialFunctorConverterTempl(), MatReactionTempl< is_ad >::MatReactionTempl(), MatrixSymmetryCheck::MatrixSymmetryCheck(), PatternedMeshGenerator::mergeSubdomainNameMaps(), MeshCollectionGenerator::MeshCollectionGenerator(), MeshDiagnosticsGenerator::MeshDiagnosticsGenerator(), MeshDivisionAux::MeshDivisionAux(), MeshGenerator::MeshGenerator(), MeshGeneratorComponent::MeshGeneratorComponent(), MeshInfo::MeshInfo(), MFEMComplexSumAux::MFEMComplexSumAux(), MFEMFunctorMaterial::MFEMFunctorMaterial(), MFEMGenericFunctorMaterial::MFEMGenericFunctorMaterial(), MFEMGenericFunctorVectorMaterial::MFEMGenericFunctorVectorMaterial(), MFEMGeometricMultigridSolver::MFEMGeometricMultigridSolver(), MFEMMultiAppTransfer::MFEMMultiAppTransfer(), MFEMNDtoRTAux::MFEMNDtoRTAux(), MFEMSumAux::MFEMSumAux(), MFEMVariable::MFEMVariable(), UserObjectInterface::mooseObjectError(), MoosePreconditioner::MoosePreconditioner(), MooseStaticCondensationPreconditioner::MooseStaticCondensationPreconditioner(), MooseVariableBase::MooseVariableBase(), MortarConstraintBase::MortarConstraintBase(), MortarNodalAuxKernelTempl< ComputeValueType >::MortarNodalAuxKernelTempl(), MultiApp::moveApp(), MoveNodeGenerator::MoveNodeGenerator(), MultiApp::MultiApp(), MultiAppCloneReporterTransfer::MultiAppCloneReporterTransfer(), MultiAppGeneralFieldFunctorTransfer::MultiAppGeneralFieldFunctorTransfer(), MultiAppGeneralFieldKDTreeTransferBase::MultiAppGeneralFieldKDTreeTransferBase(), MultiAppGeneralFieldShapeEvaluationTransfer::MultiAppGeneralFieldShapeEvaluationTransfer(), MultiAppGeneralFieldTransfer::MultiAppGeneralFieldTransfer(), MultiAppGeneralFieldUserObjectTransfer::MultiAppGeneralFieldUserObjectTransfer(), MultiAppGeometricInterpolationTransfer::MultiAppGeometricInterpolationTransfer(), MultiAppNearestNodeTransfer::MultiAppNearestNodeTransfer(), MultiAppPostprocessorInterpolationTransfer::MultiAppPostprocessorInterpolationTransfer(), MultiAppPostprocessorToAuxScalarTransfer::MultiAppPostprocessorToAuxScalarTransfer(), MultiAppPostprocessorTransfer::MultiAppPostprocessorTransfer(), MultiAppProjectionTransfer::MultiAppProjectionTransfer(), MultiAppReporterTransfer::MultiAppReporterTransfer(), MultiAppScalarToAuxScalarTransfer::MultiAppScalarToAuxScalarTransfer(), MultiAppShapeEvaluationTransfer::MultiAppShapeEvaluationTransfer(), MultiAppTransfer::MultiAppTransfer(), MultiAppUserObjectTransfer::MultiAppUserObjectTransfer(), MultiAppVariableValueSamplePostprocessorTransfer::MultiAppVariableValueSamplePostprocessorTransfer(), MultiAppVariableValueSampleTransfer::MultiAppVariableValueSampleTransfer(), MultiAppVectorPostprocessorTransfer::MultiAppVectorPostprocessorTransfer(), MultiSystemSolveObject::MultiSystemSolveObject(), NearestNodeValueAux::NearestNodeValueAux(), NEML2Action::NEML2Action(), NEML2PreKernel::NEML2PreKernel(), NestedDivision::NestedDivision(), NodalBC::NodalBC(), NodalEqualValueConstraint::NodalEqualValueConstraint(), NodalKernel::NodalKernel(), NodalPatchRecoveryAux::NodalPatchRecoveryAux(), NodalValueSampler::NodalValueSampler(), NumDOFs::NumDOFs(), OrientSurfaceMeshGenerator::OrientSurfaceMeshGenerator(), Output::Output(), ParsedCurveGenerator::ParsedCurveGenerator(), ParsedFunctorMaterialTempl< is_ad >::ParsedFunctorMaterialTempl(), ParsedPostprocessor::ParsedPostprocessor(), ParsedReporterBase::ParsedReporterBase(), ParsedScalarReporter::ParsedScalarReporter(), ParsedSubdomainGeneratorBase::ParsedSubdomainGeneratorBase(), ParsedVectorRealReductionReporter::ParsedVectorRealReductionReporter(), ParsedVectorReporter::ParsedVectorReporter(), ParsedVectorVectorRealReductionReporter::ParsedVectorVectorRealReductionReporter(), PatternedMeshGenerator::PatternedMeshGenerator(), PenaltyPeriodicSegmentalConstraint::PenaltyPeriodicSegmentalConstraint(), PeriodicSegmentalConstraint::PeriodicSegmentalConstraint(), PIDTransientControl::PIDTransientControl(), PlaneDeletionGenerator::PlaneDeletionGenerator(), PlaneIDMeshGenerator::PlaneIDMeshGenerator(), PointwiseRenormalizeVector::PointwiseRenormalizeVector(), PolyLineMeshFollowingNodeSetGenerator::PolyLineMeshFollowingNodeSetGenerator(), EqualValueBoundaryConstraint::populateSecondaryNodes(), ReporterInterface::possiblyCheckHasReporter(), VectorPostprocessorInterface::possiblyCheckHasVectorPostprocessor(), LibmeshPartitioner::prepareBlocksForSubdomainPartitioner(), ProjectedMaterialPropertyNodalPatchRecoveryAux::ProjectedMaterialPropertyNodalPatchRecoveryAux(), ProjectSideSetOntoLevelSetGenerator::ProjectSideSetOntoLevelSetGenerator(), PropertyReadFile::PropertyReadFile(), RandomIC::RandomIC(), RankTwoTensorFromComponentProperties::RankTwoTensorFromComponentProperties(), MultiApp::readCommandLineArguments(), PropertyReadFile::readData(), SolutionUserObjectBase::readExodusIIOrNemesis(), SolutionUserObjectBase::readXda(), ReferenceResidualConvergence::ReferenceResidualConvergence(), RefineBlockGenerator::RefineBlockGenerator(), RefineSidesetGenerator::RefineSidesetGenerator(), RenameBlockGenerator::RenameBlockGenerator(), RenameBoundaryGenerator::RenameBoundaryGenerator(), ReporterPointSource::ReporterPointSource(), FEProblemBase::restoreSolutions(), SecondTimeDerivativeAux::SecondTimeDerivativeAux(), FEProblemBase::setLinearConvergenceNames(), FEProblemBase::setNonlinearConvergenceNames(), MooseMesh::setPartitioner(), NodeSetsGeneratorBase::setup(), SideSetsGeneratorBase::setup(), SurfaceMeshGeneratorBase::setup(), CylinderComponent::setupComponent(), NEML2Action::setupDerivativeMappings(), NEML2Action::setupInputMappings(), MultiSystemSolveObject::setupMultiSystemFixedPointRelaxationFactors(), NEML2Action::setupParameterDerivativeMappings(), NEML2Action::setupParameterMappings(), SetupQuadratureAction::SetupQuadratureAction(), SidesetAroundSubdomainUpdater::SidesetAroundSubdomainUpdater(), SideSetsFromBoundingBoxGenerator::SideSetsFromBoundingBoxGenerator(), SideValueSampler::SideValueSampler(), SingleRankPartitioner::SingleRankPartitioner(), SphericalGridDivision::SphericalGridDivision(), StitchBoundaryMeshGenerator::StitchBoundaryMeshGenerator(), StitchMeshGenerator::StitchMeshGenerator(), SurfaceSubdomainsDelaunayRemesher::SurfaceSubdomainsDelaunayRemesher(), SymmetryTransformGenerator::SymmetryTransformGenerator(), TagVectorAux::TagVectorAux(), Terminator::Terminator(), TimeDerivativeAux::TimeDerivativeAux(), Transfer::Transfer(), TransformGenerator::TransformGenerator(), TransientMultiApp::TransientMultiApp(), CylinderComponent::translation(), MeshTriangulationUtils::triangulateWithDelaunay(), ParsedCurveGenerator::tSectionSpaceDefiner(), UniqueExtraIDMeshGenerator::UniqueExtraIDMeshGenerator(), UserObjectBase::UserObjectBase(), Checkpoint::validateExecuteOn(), ParsedAux::validateGenericVectorNames(), MFEMProblem::validateVariableNumericType(), VariableCondensationPreconditioner::VariableCondensationPreconditioner(), VectorBodyForce::VectorBodyForce(), VectorFunctionDirichletBC::VectorFunctionDirichletBC(), VectorFunctionIC::VectorFunctionIC(), VolumeAux::VolumeAux(), WebServerControl::WebServerControl(), XYDelaunayGenerator::XYDelaunayGenerator(), XYMeshLineCutter::XYMeshLineCutter(), and XYZDelaunayGenerator::XYZDelaunayGenerator().

◆ parameters()

const InputParameters & MooseBase::parameters ( ) const
inlineinherited

Get the parameters of the object.

Returns
The parameters of the object

Definition at line 131 of file MooseBase.h.

131{ return _pars; }

Referenced by AddActionComponentAction::act(), CommonOutputAction::act(), CSGOnlyAction::act(), MeshOnlyAction::act(), SetupDebugAction::act(), SplitMeshAction::act(), Action::Action(), FEProblemBase::addAnyRedistributers(), FEProblemBase::addAuxKernel(), MFEMProblem::addAuxKernel(), FEProblemBase::addAuxScalarKernel(), DisplacedProblem::addAuxVariable(), MFEMProblem::addAuxVariable(), FEProblemBase::addBoundaryCondition(), MFEMProblem::addBoundaryCondition(), FEProblemBase::addConstraint(), FEProblemBase::addConvergence(), FEProblemBase::addDamper(), AddDefaultConvergenceAction::addDefaultMultiAppFixedPointConvergence(), FEProblemBase::addDefaultMultiAppFixedPointConvergence(), AddDefaultConvergenceAction::addDefaultNonlinearConvergence(), FEProblemBase::addDefaultNonlinearConvergence(), ReferenceResidualProblem::addDefaultNonlinearConvergence(), AddDefaultConvergenceAction::addDefaultSteadyStateConvergence(), FEProblemBase::addDefaultSteadyStateConvergence(), FEProblemBase::addDGKernel(), FEProblemBase::addDiracKernel(), FEProblemBase::addDistribution(), MFEMProblem::addFESpace(), MFEMProblem::addFESpaceHierarchy(), FEProblemBase::addFunction(), MFEMProblem::addFunction(), FEProblemBase::addFunctorMaterial(), MFEMProblem::addFunctorMaterial(), FEProblemBase::addFVBC(), FEProblemBase::addFVInitialCondition(), FEProblemBase::addFVInterfaceKernel(), FEProblemBase::addFVInterpolationMethod(), FEProblemBase::addFVKernel(), MFEMProblem::addGridFunction(), FEProblemBase::addHDGKernel(), MFEMProblem::addImagComponentToBC(), MFEMProblem::addImagComponentToKernel(), FEProblemBase::addIndicator(), MFEMProblem::addIndicator(), FEProblemBase::addInitialCondition(), MFEMProblem::addInitialCondition(), DiffusionPhysicsBase::addInitialConditions(), FEProblemBase::addInterfaceKernel(), FEProblemBase::addInterfaceMaterial(), FEProblemBase::addKernel(), MFEMProblem::addKernel(), FEProblemBase::addLinearFVBC(), FEProblemBase::addLinearFVKernel(), FEProblem::addLineSearch(), FEProblemBase::addMarker(), MFEMProblem::addMarker(), FEProblemBase::addMaterial(), FEProblemBase::addMaterialHelper(), FEProblemBase::addMeshDivision(), MFEMProblem::addMFEMFESpaceFromMOOSEVariable(), MFEMProblem::addMFEMSolver(), FEProblemBase::addMultiApp(), FEProblemBase::addNodalKernel(), FEProblemBase::addObject(), FEProblemBase::addObjectParamsHelper(), FEProblemBase::addOutput(), FEProblemBase::addPostprocessor(), MFEMProblem::addPostprocessor(), FEProblemBase::addPredictor(), MFEMProblem::addQuadratureFunction(), MFEMProblem::addRealComponentToBC(), MFEMProblem::addRealComponentToKernel(), FEProblemBase::addReporter(), FEProblemBase::addSampler(), FEProblemBase::addScalarKernel(), MFEMProblem::addSubMesh(), FEProblemBase::addTimeIntegrator(), FEProblemBase::addTransfer(), MFEMProblem::addTransfer(), FEProblemBase::addUserObject(), DisplacedProblem::addVariable(), MFEMEigenproblem::addVariable(), MFEMProblem::addVariable(), FEProblemBase::addVectorPostprocessor(), MFEMProblem::addVectorPostprocessor(), ADPiecewiseLinearInterpolationMaterial::ADPiecewiseLinearInterpolationMaterial(), AdvancedOutput::AdvancedOutput(), AnnularMesh::AnnularMesh(), AnnularMeshGenerator::AnnularMeshGenerator(), Action::associateWithParameter(), AuxKernelBase::AuxKernelBase(), AuxScalarKernel::AuxScalarKernel(), BoundsBase::BoundsBase(), MooseMesh::buildTypedMesh(), PostprocessorInterface::checkParam(), AddDefaultConvergenceAction::checkUnusedMultiAppFixedPointConvergenceParameters(), AddDefaultConvergenceAction::checkUnusedNonlinearConvergenceParameters(), AddDefaultConvergenceAction::checkUnusedSteadyStateConvergenceParameters(), SampledOutput::cloneMesh(), LibtorchNeuralNetControl::conditionalParameterError(), Console::Console(), MooseMeshUtils::copyIntoMesh(), CommonOutputAction::create(), MultiApp::createApp(), Postprocessor::declareValue(), DumpObjectsProblem::deduceNecessaryParameters(), DefaultMultiAppFixedPointConvergence::DefaultMultiAppFixedPointConvergence(), DumpObjectsProblem::dumpObjectHelper(), DumpObjectsProblem::DumpObjectsProblem(), EigenProblem::EigenProblem(), EigenProblemSolve::EigenProblemSolve(), ElementMaterialSampler::ElementMaterialSampler(), ExamplePatchMeshGenerator::ExamplePatchMeshGenerator(), Executor::Executor(), Exodus::Exodus(), ElementSubdomainModifierBase::extrapolatePolynomial(), FEProblem::FEProblem(), FixedPointSolve::FixedPointSolve(), FunctorSmootherTempl< T >::FunctorSmootherTempl(), GapValueAux::GapValueAux(), ParsedSubdomainGeneratorBase::generate(), ActionWarehouse::getCurrentActionName(), ExecutorInterface::getExecutor(), Material::getMaterial(), Moose::PeriodicBCHelper::getParams(), ReporterInterface::getReporterName(), Reporter::getReporterValueName(), UserObjectInterface::getUserObjectName(), AuxKernelBase::getVariableHelper(), VectorPostprocessorInterface::getVectorPostprocessorName(), GhostingUserObject::GhostingUserObject(), MeshGeneratorSystem::hasDataDrivenAllowed(), AttribSystem::initFrom(), AttribDisplaced::initFrom(), BlockRestrictable::initializeBlockRestrictable(), FullSolveMultiApp::initialSetup(), FEProblemBase::initNullSpaceVectors(), InterfaceDiffusiveFluxIntegralTempl< is_ad >::InterfaceDiffusiveFluxIntegralTempl(), InterfaceIntegralVariableValuePostprocessor::InterfaceIntegralVariableValuePostprocessor(), InterfaceKernelTempl< T >::InterfaceKernelTempl(), MooseObject::isKokkosObject(), isValid(), IterationAdaptiveDT::IterationAdaptiveDT(), LibtorchNeuralNetControl::LibtorchNeuralNetControl(), MooseObject::MooseObject(), UserObjectInterface::mooseObjectError(), MooseVariableInterface< T >::MooseVariableInterface(), MultiApp::MultiApp(), MultiAppGeneralFieldTransfer::MultiAppGeneralFieldTransfer(), MultiAppGeneralFieldUserObjectTransfer::MultiAppGeneralFieldUserObjectTransfer(), MultiAppTransfer::MultiAppTransfer(), MultiAppVariableValueSamplePostprocessorTransfer::MultiAppVariableValueSamplePostprocessorTransfer(), NodeFaceConstraint::NodeFaceConstraint(), ConsoleUtils::outputLegacyInformation(), OverlayMeshGenerator::OverlayMeshGenerator(), ParsedReporterBase::ParsedReporterBase(), ParsedScalarReporter::ParsedScalarReporter(), PenetrationAux::PenetrationAux(), PiecewiseBilinear::PiecewiseBilinear(), PiecewiseLinearInterpolationMaterial::PiecewiseLinearInterpolationMaterial(), NEML2Action::printSummary(), ProjectedStatefulMaterialStorageAction::processProperty(), PropertyReadFile::PropertyReadFile(), PseudoTimestep::PseudoTimestep(), RandomIC::RandomIC(), ReferenceResidualConvergence::ReferenceResidualConvergence(), InputParameterWarehouse::removeInputParameters(), FEProblemBase::setAuxKernelParamsAndLog(), FEProblemBase::setInputParametersFEProblem(), FEProblem::setInputParametersFEProblem(), FEProblemBase::setResidualObjectParamsAndLog(), SideSetsGeneratorBase::setup(), NonlinearSystemBase::shouldEvaluatePreSMOResidual(), SideSetsFromBoundingBoxGenerator::SideSetsFromBoundingBoxGenerator(), Moose::PetscSupport::storePetscOptions(), DumpObjectsProblem::stringifyParameters(), TaggingInterface::TaggingInterface(), Transfer::Transfer(), TransientBase::TransientBase(), VectorBodyForce::VectorBodyForce(), VectorFunctionDirichletBC::VectorFunctionDirichletBC(), VectorFunctionIC::VectorFunctionIC(), and VectorMagnitudeFunctorMaterialTempl< is_ad >::VectorMagnitudeFunctorMaterialTempl().

◆ paramInfo()

template<typename... Args>
void MooseBase::paramInfo ( const std::string &  param,
Args...  args 
) const
inherited

Emits an informational message prefixed with the file and line number of the given param (from the input file) along with the full parameter path+name followed by the given args as the message.

If this object's parameters were not created directly by the Parser, then this function falls back to the normal behavior of mooseInfo - only printing a message using the given args.

Definition at line 471 of file MooseBase.h.

472{
473 mooseInfo(_pars.paramMessage(param, std::forward<Args>(args)...));
474}
std::string paramMessage(const std::string &param, Args... args) const

Referenced by GridPartitioner::_do_partition(), ComboMarker::ComboMarker(), Control::Control(), FunctorIC::FunctorIC(), and TransientMultiApp::TransientMultiApp().

◆ paramWarning() [1/2]

template<typename... Args>
void MooseBase::paramWarning ( const std::string &  param,
Args...  args 
) const
inherited

Emits a warning prefixed with the file and line number of the given param (from the input file) along with the full parameter path+name followed by the given args as the message.

If this object's parameters were not created directly by the Parser, then this function falls back to the normal behavior of mooseWarning - only printing a message using the given args.

Definition at line 464 of file MooseBase.h.

465{
466 mooseWarning(_pars.paramMessage(param, std::forward<Args>(args)...));
467}

◆ paramWarning() [2/2]

template<typename... Args>
void SolutionInvalidInterface::paramWarning ( const std::string &  param,
Args...  args 
) const
inlineinherited

◆ parentOutputPositionChanged()

void FEProblemBase::parentOutputPositionChanged ( )
inherited

Calls parentOutputPositionChanged() on all sub apps.

Definition at line 4968 of file FEProblemBase.C.

4969{
4970 for (const auto & it : _multi_apps)
4971 {
4972 const auto & objects = it.second.getActiveObjects();
4973 for (const auto & obj : objects)
4975 }
4976}
void parentOutputPositionChanged()
Calls parentOutputPositionChanged() on all sub apps.

Referenced by TransientBase::parentOutputPositionChanged().

◆ perfGraph()

PerfGraph & PerfGraphInterface::perfGraph ( )
inherited

Get the PerfGraph.

Definition at line 86 of file PerfGraphInterface.C.

87{
88 return _pg_moose_app.perfGraph();
89}
PerfGraph & perfGraph()
Get the PerfGraph for this app.
Definition MooseApp.h:179
MooseApp & _pg_moose_app
The MooseApp that owns the PerfGraph.

Referenced by CommonOutputAction::act(), PerfGraphData::finalize(), PerfGraphReporter::finalize(), and PerfGraphOutput::output().

◆ petscOptionsDatabase()

PetscOptions & FEProblemBase::petscOptionsDatabase ( )
inlineinherited

◆ petscOptionsInserted()

bool & FEProblemBase::petscOptionsInserted ( )
inlineinherited

If PETSc options are already inserted.

Definition at line 2621 of file FEProblemBase.h.

bool _is_petsc_options_inserted
If or not PETSc options have been added to database.

Referenced by EigenProblemSolve::initialSetup().

◆ possiblyRebuildGeomSearchPatches()

void FEProblemBase::possiblyRebuildGeomSearchPatches ( )
virtualinherited

Definition at line 8483 of file FEProblemBase.C.

8484{
8485 if (_displaced_problem) // Only need to do this if things are moving...
8486 {
8487 TIME_SECTION("possiblyRebuildGeomSearchPatches", 5, "Rebuilding Geometric Search Patches");
8488
8489 switch (_mesh.getPatchUpdateStrategy())
8490 {
8491 case Moose::Never:
8492 break;
8493 case Moose::Iteration:
8494 // Update the list of ghosted elements at the start of the time step
8497
8498 _displaced_problem->geomSearchData().updateGhostedElems();
8500
8501 // The commands below ensure that the sparsity of the Jacobian matrix is
8502 // augmented at the start of the time step using neighbor nodes from the end
8503 // of the previous time step.
8504
8506
8507 // This is needed to reinitialize PETSc output
8509
8510 break;
8511
8512 case Moose::Auto:
8513 {
8514 Real max = _displaced_problem->geomSearchData().maxPatchPercentage();
8515 _communicator.max(max);
8516
8517 // If we haven't moved very far through the patch
8518 if (max < 0.4)
8519 break;
8520 }
8521 libmesh_fallthrough();
8522
8523 // Let this fall through if things do need to be updated...
8524 case Moose::Always:
8525 // Flush output here to see the message before the reinitialization, which could take a
8526 // while
8527 _console << "\n\nUpdating geometric search patches\n" << std::endl;
8528
8531
8532 _displaced_problem->geomSearchData().clearNearestNodeLocators();
8534
8536
8537 // This is needed to reinitialize PETSc output
8539 }
8540 }
8541}
virtual void initPetscOutputAndSomeSolverSettings()
Reinitialize PETSc output for proper linear/nonlinear iteration display.
void clearNearestNodeLocators()
Clear out the Penetration Locators so they will redo the search.
void updateGhostedElems()
Updates the list of ghosted elements at the start of each time step for the nonlinear iteration patch...
const Moose::PatchUpdateType & getPatchUpdateStrategy() const
Get the current patch update strategy.
Definition MooseMesh.C:3514
@ Iteration

Referenced by FEProblemBase::solve().

◆ postExecute()

void FEProblemBase::postExecute ( )
virtualinherited

Method called at the end of the simulation.

Definition at line 6042 of file FEProblemBase.C.

6043{
6044 const auto & multi_apps = _multi_apps.getActiveObjects();
6045
6046 for (const auto & multi_app : multi_apps)
6047 multi_app->postExecute();
6048}
virtual void postExecute()
Method called at the end of the simulation.

Referenced by Eigenvalue::execute(), SteadyBase::execute(), TransientBase::execute(), and MFEMSteady::execute().

◆ predictorCleanup()

void FEProblemBase::predictorCleanup ( NumericVector< libMesh::Number > &  ghosted_solution)
virtualinherited

Perform cleanup tasks after application of predictor to solution vector.

Parameters
ghosted_solutionGhosted solution vector

Definition at line 8384 of file FEProblemBase.C.

8385{
8386}

Referenced by NonlinearSystemBase::setInitialSolution().

◆ prepare() [1/2]

void FEProblemBase::prepare ( const Elem elem,
const THREAD_ID  tid 
)
overridevirtualinherited

Implements SubProblem.

Definition at line 1820 of file FEProblemBase.C.

1821{
1822 for (const auto i : index_range(_solver_systems))
1823 {
1824 _assembly[tid][i]->reinit(elem);
1825 _solver_systems[i]->prepare(tid);
1826
1827 if (i < _num_nl_sys)
1828 {
1829 // This method is called outside of residual/Jacobian callbacks during initial condition
1830 // evaluation
1832 _assembly[tid][i]->prepareJacobianBlock();
1833 _assembly[tid][i]->prepareResidual();
1835 _assembly[tid][i]->prepareNonlocal();
1836 }
1837 }
1838 _aux->prepare(tid);
1839
1840 if (_displaced_problem &&
1841 // _reinit_displaced_neighbor applies to interface type objects which will do computations
1842 // based on both elem and neighbor. Consequently, despite what you might think by its name, we
1843 // must make sure we prepare the displaced elem
1845 {
1846 _displaced_problem->prepare(_displaced_mesh->elemPtr(elem->id()), tid);
1848 _displaced_problem->prepareNonlocal(tid);
1849 }
1850}
const bool & currentlyComputingJacobian() const
Returns true if the problem is in the process of computing the Jacobian.
Definition SubProblem.h:692
dof_id_type id() const

Referenced by NodalPatchRecovery::compute(), ComputeElemDampingThread::onElement(), ComputeIndicatorThread::onElement(), ComputeMarkerThread::onElement(), ComputeMaterialsObjectThread::onElement(), ComputeUserObjectsThread::onElement(), and ComputeInitialConditionThread::operator()().

◆ prepare() [2/2]

void FEProblemBase::prepare ( const Elem elem,
unsigned int  ivar,
unsigned int  jvar,
const std::vector< dof_id_type > &  dof_indices,
const THREAD_ID  tid 
)
overridevirtualinherited

Implements SubProblem.

Definition at line 1864 of file FEProblemBase.C.

1869{
1870 for (const auto i : index_range(_nl))
1871 {
1872 _assembly[tid][i]->reinit(elem);
1873 _nl[i]->prepare(tid);
1874 }
1875
1876 _aux->prepare(tid);
1877 const auto current_nl_sys_num = _current_nl_sys->number();
1878 _assembly[tid][current_nl_sys_num]->prepareBlock(ivar, jvar, dof_indices);
1880 if (_nonlocal_cm[current_nl_sys_num](ivar, jvar) != 0)
1881 {
1883 _assembly[tid][current_nl_sys_num]->prepareBlockNonlocal(
1884 ivar, jvar, dof_indices, jv.allDofIndices());
1885 }
1886
1888 {
1889 _displaced_problem->prepare(_displaced_mesh->elemPtr(elem->id()), ivar, jvar, dof_indices, tid);
1891 if (_nonlocal_cm[current_nl_sys_num](ivar, jvar) != 0)
1892 {
1894 _displaced_problem->prepareBlockNonlocal(ivar, jvar, dof_indices, jv.allDofIndices(), tid);
1895 }
1896 }
1897}
virtual void prepare()=0
Prepare the elemental degrees of freedom.

◆ prepareAssembly()

void FEProblemBase::prepareAssembly ( const THREAD_ID  tid)
overridevirtualinherited

◆ prepareAssemblyNeighbor()

void FEProblemBase::prepareAssemblyNeighbor ( const THREAD_ID  tid)
virtualinherited

Begin a fresh neighbor accumulation phase by sizing and zeroing the neighbor blocks.

Definition at line 1955 of file FEProblemBase.C.

1956{
1957 _assembly[tid][_current_nl_sys->number()]->prepareNeighbor();
1958
1960 _displaced_problem->prepareAssemblyNeighbor(tid);
1961}

Referenced by NonlinearSystemBase::constraintJacobians().

◆ prepareFace()

void FEProblemBase::prepareFace ( const Elem elem,
const THREAD_ID  tid 
)
overridevirtualinherited

Implements SubProblem.

Definition at line 1853 of file FEProblemBase.C.

1854{
1855 for (auto & nl : _nl)
1856 nl->prepareFace(tid, true);
1857 _aux->prepareFace(tid, false);
1858
1860 _displaced_problem->prepareFace(_displaced_mesh->elemPtr(elem->id()), tid);
1861}
virtual void prepareFace(const Elem *elem, const THREAD_ID tid) override

Referenced by ComputeUserObjectsThread::onInterface(), and ComputeUserObjectsThread::onInternalSide().

◆ prepareFaceShapes()

void FEProblemBase::prepareFaceShapes ( unsigned int  var,
const THREAD_ID  tid 
)
overridevirtualinherited

Implements SubProblem.

Definition at line 2223 of file FEProblemBase.C.

2224{
2225 _assembly[tid][_current_nl_sys->number()]->copyFaceShapes(var);
2226}

Referenced by ComputeUserObjectsThread::onBoundary().

◆ prepareKokkosMaterials()

void FEProblemBase::prepareKokkosMaterials ( const std::unordered_set< unsigned int > &  consumer_needed_mat_props)
inherited

◆ prepareMaterials()

void FEProblemBase::prepareMaterials ( const std::unordered_set< unsigned int > &  consumer_needed_mat_props,
const SubdomainID  blk_id,
const THREAD_ID  tid 
)
inherited

Add the MooseVariables and the material properties that the current materials depend on to the dependency list.

Parameters
consumer_needed_mat_propsThe material properties needed by consumer objects (other than the materials themselves)
blk_idThe subdomain ID for which we are preparing our list of needed vars and props
tidThe thread ID we are preparing the requirements for

This MUST be done after the moose variable dependency list has been set for all the other objects using the setActiveElementalMooseVariables API!

Definition at line 4267 of file FEProblemBase.C.

4270{
4271 std::set<MooseVariableFEBase *> needed_moose_vars;
4272 std::unordered_set<unsigned int> needed_mat_props;
4273
4274 if (_all_materials.hasActiveBlockObjects(blk_id, tid))
4275 {
4276 _all_materials.updateVariableDependency(needed_moose_vars, tid);
4277 _all_materials.updateBlockMatPropDependency(blk_id, needed_mat_props, tid);
4278 }
4279
4280 const auto & ids = _mesh.getSubdomainBoundaryIds(blk_id);
4281 for (const auto id : ids)
4282 {
4283 _materials.updateBoundaryVariableDependency(id, needed_moose_vars, tid);
4284 _materials.updateBoundaryMatPropDependency(id, needed_mat_props, tid);
4285 }
4286
4287 const auto & current_active_elemental_moose_variables = getActiveElementalMooseVariables(tid);
4288 needed_moose_vars.insert(current_active_elemental_moose_variables.begin(),
4289 current_active_elemental_moose_variables.end());
4290
4291 needed_mat_props.insert(consumer_needed_mat_props.begin(), consumer_needed_mat_props.end());
4292
4293 setActiveElementalMooseVariables(needed_moose_vars, tid);
4294 setActiveMaterialProperties(needed_mat_props, tid);
4295}
void setActiveMaterialProperties(const std::unordered_set< unsigned int > &mat_prop_ids, const THREAD_ID tid)
Record and set the material properties required by the current computing thread.
virtual void setActiveElementalMooseVariables(const std::set< MooseVariableFEBase * > &moose_vars, const THREAD_ID tid) override
Set the MOOSE variables to be reinited on each element.
const std::set< BoundaryID > & getSubdomainBoundaryIds(const SubdomainID subdomain_id) const
Get the list of boundary ids associated with the given subdomain id.
Definition MooseMesh.C:3598
void updateVariableDependency(std::set< MooseVariableFieldBase * > &needed_moose_vars, THREAD_ID tid=0) const
Update variable dependency vector.
void updateBlockMatPropDependency(SubdomainID id, std::unordered_set< unsigned int > &needed_mat_props, THREAD_ID tid=0, const bool producer_only=false) const
void updateBoundaryVariableDependency(std::set< MooseVariableFieldBase * > &needed_moose_vars, THREAD_ID tid=0) const
bool hasActiveBlockObjects(THREAD_ID tid=0) const
void updateBoundaryMatPropDependency(std::unordered_set< unsigned int > &needed_mat_props, THREAD_ID tid=0, const bool producer_only=false) const
virtual const std::set< MooseVariableFieldBase * > & getActiveElementalMooseVariables(const THREAD_ID tid) const
Get the MOOSE variables to be reinited on each element.
Definition SubProblem.C:455

Referenced by ComputeIndicatorThread::subdomainChanged(), ComputeMarkerThread::subdomainChanged(), and ComputeUserObjectsThread::subdomainChanged().

◆ prepareNeighborShapes()

void FEProblemBase::prepareNeighborShapes ( unsigned int  var,
const THREAD_ID  tid 
)
overridevirtualinherited

Implements SubProblem.

Definition at line 2229 of file FEProblemBase.C.

2230{
2231 _assembly[tid][_current_nl_sys->number()]->copyNeighborShapes(var);
2232}

◆ preparePRefinement()

void SubProblem::preparePRefinement ( )
inherited

Prepare DofMap and Assembly classes with our p-refinement information.

Definition at line 1337 of file SubProblem.C.

1338{
1339 std::unordered_set<FEFamily> disable_families;
1340 for (const auto & [family, flag] : _family_for_p_refinement)
1341 if (flag)
1342 disable_families.insert(family);
1343
1344 for (const auto tid : make_range(libMesh::n_threads()))
1345 for (const auto s : make_range(numNonlinearSystems()))
1346 assembly(tid, s).havePRefinement(disable_families);
1347
1348 auto & eq = es();
1349 for (const auto family : disable_families)
1350 for (const auto i : make_range(eq.n_systems()))
1351 {
1352 auto & system = eq.get_system(i);
1353 auto & dof_map = system.get_dof_map();
1354 for (const auto vg : make_range(system.n_variable_groups()))
1355 {
1356 const auto & var_group = system.variable_group(vg);
1357 if (var_group.type().family == family)
1358 dof_map.should_p_refine(vg, false);
1359 }
1360 }
1361
1362 _have_p_refinement = true;
1363}

Referenced by FEProblemBase::init().

◆ prepareShapes()

void FEProblemBase::prepareShapes ( unsigned int  var,
const THREAD_ID  tid 
)
overridevirtualinherited

Implements SubProblem.

Definition at line 2217 of file FEProblemBase.C.

2218{
2219 _assembly[tid][_current_nl_sys->number()]->copyShapes(var);
2220}

Referenced by ComputeUserObjectsThread::onElement().

◆ preserveMatrixSparsityPattern()

bool FEProblemBase::preserveMatrixSparsityPattern ( ) const
inlineinherited

Will return True if the executioner in use requires preserving the sparsity pattern of the matrices being formed during the solve.

This is usually the Jacobian.

Definition at line 2380 of file FEProblemBase.h.

bool _preserve_matrix_sparsity_pattern
Whether to preserve the system matrix / Jacobian sparsity pattern, using 0-valued entries usually.

◆ projectFunctionOnCustomRange()

void FEProblemBase::projectFunctionOnCustomRange ( ConstElemRange elem_range,
Number(*)(const Point &, const libMesh::Parameters &, const std::string &, const std::string &)  func,
Gradient(*)(const Point &, const libMesh::Parameters &, const std::string &, const std::string &)  func_grad,
const libMesh::Parameters params,
const std::vector< VariableName > &  target_vars 
)
inherited

Project a function onto a range of elements for a given variable.

Parameters
elem_rangeElement range to project on
funcFunction to project
func_gradGradient of the function
paramsParameters to pass to the function
target_varsvariable names to project

Definition at line 3977 of file FEProblemBase.C.

3988{
3989 mooseAssert(!Threads::in_threads,
3990 "We're performing a projection based on data from just the thread 0 variable, so any "
3991 "modifications to the variable solution must have been thread joined already");
3992
3993 std::unordered_map<unsigned int, std::vector<unsigned int>> sys_to_var_nums;
3994
3995 for (const auto & target_var : target_vars)
3996 {
3997 const auto sn = systemNumForVariable(target_var);
3998 const auto & var = getStandardVariable(0, target_var);
3999 sys_to_var_nums[sn].push_back(var.number());
4000 }
4001
4002 for (const auto & [sys_num, var_nums] : sys_to_var_nums)
4003 {
4004 System & libmesh_sys = getSystemBase(sys_num).system();
4005 libmesh_sys.project_solution(func, func_grad, params, elem_range, var_nums);
4006 }
4007}
virtual MooseVariable & getStandardVariable(const THREAD_ID tid, const std::string &var_name) override
Returns the variable reference for requested MooseVariable which may be in any system.
unsigned int systemNumForVariable(const VariableName &variable_name) const
void project_solution(FunctionBase< Number > *f, FunctionBase< Gradient > *g=nullptr, std::optional< ConstElemRange > active_local_range=std::nullopt, std::optional< std::vector< unsigned int > > variable_numbers=std::nullopt) const

Referenced by ElementSubdomainModifierBase::extrapolatePolynomial().

◆ projectInitialConditionOnCustomRange()

void FEProblemBase::projectInitialConditionOnCustomRange ( libMesh::ConstElemRange elem_range,
ConstBndNodeRange bnd_node_range,
const std::optional< std::set< VariableName > > &  target_vars = std::nullopt 
)
inherited

Project initial conditions for custom elem_range and bnd_node_range This is needed when elements/boundary nodes are added to a specific subdomain at an intermediate step.

Parameters
elem_rangeElement range to project on
bnd_node_rangeBoundary node range to project on
target_varsSet of variable names to project ICs

Definition at line 3902 of file FEProblemBase.C.

3906{
3907 if (target_vars)
3908 {
3909 ComputeInitialConditionThread cic(*this, &(*target_vars));
3910 Threads::parallel_reduce(elem_range, cic);
3911 }
3912 else
3913 {
3915 Threads::parallel_reduce(elem_range, cic);
3916 }
3917
3918 // Need to close the solution vector here so that boundary ICs take precendence
3919 for (auto & nl : _nl)
3920 nl->solution().close();
3921 _aux->solution().close();
3922
3923 if (target_vars)
3924 {
3925 ComputeBoundaryInitialConditionThread cbic(*this, &(*target_vars));
3926 Threads::parallel_reduce(bnd_nodes, cbic);
3927 }
3928 else
3929 {
3931 Threads::parallel_reduce(bnd_nodes, cbic);
3932 }
3933
3934 for (auto & nl : _nl)
3935 nl->solution().close();
3936 _aux->solution().close();
3937
3938 // Also, load values into the SCALAR dofs
3939 // Note: We assume that all SCALAR dofs are on the
3940 // processor with highest ID
3942 {
3943 const auto & ics = _scalar_ics.getActiveObjects();
3944 for (const auto & ic : ics)
3945 {
3946 MooseVariableScalar & var = ic->variable();
3947
3948 if (target_vars && !target_vars->count(var.name()))
3949 continue;
3950
3951 var.reinit();
3952
3953 DenseVector<Number> vals(var.order());
3954 ic->compute(vals);
3955
3956 const unsigned int n_scalar_dofs = var.dofIndices().size();
3957 for (unsigned int i = 0; i < n_scalar_dofs; i++)
3958 {
3959 const auto global_index = var.dofIndices()[i];
3960 var.sys().solution().set(global_index, vals(i));
3961 var.setValue(i, vals(i));
3962 }
3963 }
3964 }
3965
3966 for (auto & nl : _nl)
3967 {
3968 nl->solution().close();
3969 nl->solution().localize(*nl->system().current_local_solution, nl->dofMap().get_send_list());
3970 }
3971
3972 _aux->solution().close();
3973 _aux->solution().localize(*_aux->sys().current_local_solution, _aux->dofMap().get_send_list());
3974}
virtual const std::vector< dof_id_type > & dofIndices() const
Get local DoF indices.
void setValue(unsigned int i, Number value)
Set the nodal value for this variable (to keep everything up to date.
void reinit(bool reinit_for_derivative_reordering=false)
Fill out the VariableValue arrays from the system solution vector.
NumericVector< Number > & solution()
Definition SystemBase.h:203
virtual void set(const numeric_index_type i, const T value)=0
processor_id_type n_processors() const

Referenced by ElementSubdomainModifierBase::applyIC(), and ActivateElementsUserObjectBase::initSolutions().

◆ projectSolution()

void FEProblemBase::projectSolution ( )
inherited

Definition at line 3836 of file FEProblemBase.C.

3837{
3838 TIME_SECTION("projectSolution", 2, "Projecting Initial Solutions")
3839
3841
3843 Threads::parallel_reduce(getCurrentAlgebraicElementRange(), cic);
3844
3845 if (haveFV())
3846 {
3848 ElemInfoRange elem_info_range(_mesh.ownedElemInfoBegin(), _mesh.ownedElemInfoEnd());
3849
3851 Threads::parallel_reduce(elem_info_range, cfvic);
3852 }
3853
3854 // Need to close the solution vector here so that boundary ICs take precendence
3855 for (auto & nl : _nl)
3856 nl->solution().close();
3857 _aux->solution().close();
3858
3859 // now run boundary-restricted initial conditions
3862
3863 for (auto & nl : _nl)
3864 nl->solution().close();
3865 _aux->solution().close();
3866
3867 // Also, load values into the SCALAR dofs
3868 // Note: We assume that all SCALAR dofs are on the
3869 // processor with highest ID
3871 {
3872 const auto & ics = _scalar_ics.getActiveObjects();
3873 for (const auto & ic : ics)
3874 {
3875 MooseVariableScalar & var = ic->variable();
3876 var.reinit();
3877
3878 DenseVector<Number> vals(var.order());
3879 ic->compute(vals);
3880
3881 const unsigned int n_scalar_dofs = var.dofIndices().size();
3882 for (unsigned int i = 0; i < n_scalar_dofs; i++)
3883 {
3884 const auto global_index = var.dofIndices()[i];
3885 var.sys().solution().set(global_index, vals(i));
3886 var.setValue(i, vals(i));
3887 }
3888 }
3889 }
3890
3891 for (auto & sys : _solver_systems)
3892 {
3893 sys->solution().close();
3894 sys->solution().localize(*sys->system().current_local_solution, sys->dofMap().get_send_list());
3895 }
3896
3897 _aux->solution().close();
3898 _aux->solution().localize(*_aux->sys().current_local_solution, _aux->dofMap().get_send_list());
3899}
Scope guard for starting and stopping Floating Point Exception Trapping.
elem_info_iterator ownedElemInfoEnd()
Definition MooseMesh.C:1526
elem_info_iterator ownedElemInfoBegin()
Iterators to owned faceInfo objects.
Definition MooseMesh.C:1518

Referenced by FEProblemBase::initialAdaptMesh().

◆ queryParam()

template<typename T >
const T * MooseBase::queryParam ( const std::string &  name) const
inherited

Query a parameter for the object.

If a parameter of the given name and type does not exist or if the parameter is not valid, nullptr will be returned

Parameters
nameThe name of the parameter
Returns
A pointer to the parameter value, if it exists

Definition at line 413 of file MooseBase.h.

414{
415 return _pars.queryParam<T>(name);
416}
const T * queryParam(const std::string &name) const
Query a parameter.

Referenced by MFEMExecutedObject::getRequestedItems(), and MFEMGeometricMultigridSolver::MFEMGeometricMultigridSolver().

◆ registerInvalidSolutionInternal()

InvalidSolutionID SolutionInvalidInterface::registerInvalidSolutionInternal ( const std::string &  message,
const bool  warning 
) const
protectedinherited

Definition at line 55 of file SolutionInvalidInterface.C.

57{
59 _si_moose_base.type(), message, warning);
60}
InvalidSolutionID registerInvalidity(const std::string &object_type, const std::string &message, const bool warning)
Call to register an invalid calculation.

◆ registerRandomInterface()

void FEProblemBase::registerRandomInterface ( RandomInterface random_interface,
const std::string &  name 
)
inherited

Definition at line 9315 of file FEProblemBase.C.

9316{
9317 auto insert_pair = moose_try_emplace(
9318 _random_data_objects, name, std::make_unique<RandomData>(*this, random_interface));
9319
9320 auto random_data_ptr = insert_pair.first->second.get();
9321 random_interface.setRandomDataPointer(random_data_ptr);
9322}
std::pair< typename M::iterator, bool > moose_try_emplace(M &m, const typename M::key_type &k, Args &&... args)
Function to mirror the behavior of the C++17 std::map::try_emplace() method (no hint).
Definition Moose.h:103
void setRandomDataPointer(RandomData *random_data)

Referenced by RandomInterface::setRandomResetFrequency().

◆ registerRestartableDataOnApp()

RestartableDataValue & Restartable::registerRestartableDataOnApp ( std::unique_ptr< RestartableDataValue data,
THREAD_ID  tid 
) const
privateinherited

Helper function for actually registering the restartable data.

Definition at line 63 of file Restartable.C.

65{
67 std::move(data), tid, _restartable_read_only, _metaname);
68}
RestartableDataValue & registerRestartableData(std::unique_ptr< RestartableDataValue > data, THREAD_ID tid, bool read_only, const RestartableDataMapName &metaname="")
Definition MooseApp.C:2449
const RestartableDataMapName _metaname
Restartable metadata name.
const bool _restartable_read_only
Flag for toggling read only status (see ReporterData)
MooseApp & _restartable_app
Reference to the application.

Referenced by Restartable::declareRestartableDataHelper().

◆ registerRestartableNameWithFilterOnApp()

void Restartable::registerRestartableNameWithFilterOnApp ( const std::string &  name,
Moose::RESTARTABLE_FILTER  filter 
)
privateinherited

Helper function for actually registering the restartable data.

Definition at line 71 of file Restartable.C.

73{
75}
void registerRestartableNameWithFilter(const std::string &name, Moose::RESTARTABLE_FILTER filter)
NOTE: This is an internal function meant for MOOSE use only!
Definition MooseApp.C:1701

Referenced by Restartable::declareRecoverableData().

◆ registerTimedSection() [1/2]

PerfID PerfGraphInterface::registerTimedSection ( const std::string &  section_name,
const unsigned int  level 
) const
protectedinherited

Call to register a named section for timing.

Parameters
section_nameThe name of the code section to be timed
levelThe importance of the timer - lower is more important (0 will always come out)
Returns
The ID of the section - use when starting timing

Definition at line 61 of file PerfGraphInterface.C.

63{
64 const auto timed_section_name = timedSectionName(section_name);
65 if (!moose::internal::getPerfGraphRegistry().sectionExists(timed_section_name))
66 return moose::internal::getPerfGraphRegistry().registerSection(timed_section_name, level);
67 else
68 return moose::internal::getPerfGraphRegistry().sectionID(timed_section_name);
69}
std::string timedSectionName(const std::string &section_name) const
PerfID sectionID(const std::string &section_name) const
Given a name return the PerfID @section_name The name of the section.
PerfID registerSection(const std::string &section_name, const unsigned int level)
Call to register a named section for timing.
PerfGraphRegistry & getPerfGraphRegistry()
Get the global PerfGraphRegistry singleton.

◆ registerTimedSection() [2/2]

PerfID PerfGraphInterface::registerTimedSection ( const std::string &  section_name,
const unsigned int  level,
const std::string &  live_message,
const bool  print_dots = true 
) const
protectedinherited

Call to register a named section for timing.

Parameters
section_nameThe name of the code section to be timed
levelThe importance of the timer - lower is more important (0 will always come out)
live_messageThe message to be printed to the screen during execution
print_dotsWhether or not progress dots should be printed for this section
Returns
The ID of the section - use when starting timing

Definition at line 72 of file PerfGraphInterface.C.

76{
77 const auto timed_section_name = timedSectionName(section_name);
78 if (!moose::internal::getPerfGraphRegistry().sectionExists(timed_section_name))
80 timedSectionName(section_name), level, live_message, print_dots);
81 else
82 return moose::internal::getPerfGraphRegistry().sectionID(timed_section_name);
83}

◆ registerUnfilledFunctorRequest()

template<typename T >
void SubProblem::registerUnfilledFunctorRequest ( T *  functor_interface,
const std::string &  functor_name,
const THREAD_ID  tid 
)
inherited

Register an unfulfilled functor request.

◆ reinitBecauseOfGhostingOrNewGeomObjects()

void FEProblemBase::reinitBecauseOfGhostingOrNewGeomObjects ( bool  mortar_changed = false)
protectedinherited

Call when it is possible that the needs for ghosted elements has changed.

Parameters
mortar_changedWhether an update of mortar data has been requested since the last EquationSystems (re)initialization

Definition at line 5672 of file FEProblemBase.C.

5673{
5674 TIME_SECTION("reinitBecauseOfGhostingOrNewGeomObjects",
5675 3,
5676 "Reinitializing Because of Geometric Search Objects");
5677
5678 // Need to see if _any_ processor has ghosted elems or geometry objects.
5679 bool needs_reinit = !_ghosted_elems.empty();
5680 needs_reinit = needs_reinit || !_geometric_search_data._nearest_node_locators.empty() ||
5681 (_mortar_data->hasObjects() && mortar_changed);
5682 needs_reinit =
5683 needs_reinit || (_displaced_problem &&
5684 (!_displaced_problem->geomSearchData()._nearest_node_locators.empty() ||
5685 (_mortar_data->hasDisplacedObjects() && mortar_changed)));
5686 _communicator.max(needs_reinit);
5687
5688 if (needs_reinit)
5689 {
5690 // Call reinit to get the ghosted vectors correct now that some geometric search has been done
5691 es().reinit();
5692
5693 if (_displaced_mesh)
5694 _displaced_problem->es().reinit();
5695 }
5696}
std::map< std::pair< BoundaryID, BoundaryID >, NearestNodeLocator * > _nearest_node_locators

Referenced by FEProblemBase::meshChanged(), and FEProblemBase::possiblyRebuildGeomSearchPatches().

◆ reinitDirac()

bool FEProblemBase::reinitDirac ( const Elem elem,
const THREAD_ID  tid 
)
overridevirtualinherited

Returns true if the Problem has Dirac kernels it needs to compute on elem.

The maximum number of qps can rise if several Dirac points are added to a single element. In that case we need to resize the zeros to compensate.

Implements SubProblem.

Definition at line 2268 of file FEProblemBase.C.

2269{
2270 std::vector<Point> & points = _dirac_kernel_info.getPoints()[elem].first;
2271
2272 unsigned int n_points = points.size();
2273
2274 if (n_points)
2275 {
2276 if (n_points > _max_qps)
2277 {
2278 _max_qps = n_points;
2279
2284 unsigned int max_qpts = getMaxQps();
2285 for (unsigned int tid = 0; tid < libMesh::n_threads(); ++tid)
2286 {
2287 // the highest available order in libMesh is 43
2288 _scalar_zero[tid].resize(FORTYTHIRD, 0);
2289 _zero[tid].resize(max_qpts, 0);
2290 _grad_zero[tid].resize(max_qpts, RealGradient(0.));
2291 _second_zero[tid].resize(max_qpts, RealTensor(0.));
2292 _vector_zero[tid].resize(max_qpts, RealGradient(0.));
2293 _vector_curl_zero[tid].resize(max_qpts, RealGradient(0.));
2294 }
2295 }
2296
2297 for (const auto i : index_range(_nl))
2298 {
2299 _assembly[tid][i]->reinitAtPhysical(elem, points);
2300 _nl[i]->prepare(tid);
2301 }
2302 _aux->prepare(tid);
2303
2304 reinitElem(elem, tid);
2305 }
2306
2307 _assembly[tid][_current_nl_sys->number()]->prepare();
2309 _assembly[tid][_current_nl_sys->number()]->prepareNonlocal();
2310
2311 bool have_points = n_points > 0;
2313 {
2314 have_points |= _displaced_problem->reinitDirac(_displaced_mesh->elemPtr(elem->id()), tid);
2316 _displaced_problem->prepareNonlocal(tid);
2317 }
2318
2319 return have_points;
2320}
MultiPointMap & getPoints()
Returns a writeable reference to the _points container.
std::vector< VariableGradient > _grad_zero
std::vector< VariableSecond > _second_zero
virtual void reinitElem(const Elem *elem, const THREAD_ID tid) override
std::vector< VectorVariableValue > _vector_zero
std::vector< VariableValue > _scalar_zero
std::vector< VectorVariableCurl > _vector_curl_zero
std::vector< VariableValue > _zero

Referenced by ComputeDiracThread::onElement().

◆ reinitElem()

void FEProblemBase::reinitElem ( const Elem elem,
const THREAD_ID  tid 
)
overridevirtualinherited

◆ reinitElemFace() [1/2]

void FEProblemBase::reinitElemFace ( const Elem *  elem,
unsigned int  side,
BoundaryID  ,
const THREAD_ID  tid 
)
inherited

◆ reinitElemFace() [2/2]

virtual void FEProblemBase::reinitElemFace ( const Elem *  elem,
unsigned int  side,
const THREAD_ID  tid 
)
overridevirtualinherited

Implements SubProblem.

◆ reinitElemFaceRef()

void FEProblemBase::reinitElemFaceRef ( const Elem elem,
unsigned int  side,
Real  tolerance,
const std::vector< Point > *const  pts,
const std::vector< Real > *const  weights = nullptr,
const THREAD_ID  tid = 0 
)
overridevirtualinherited

reinitialize FE objects on a given element on a given side at a given set of reference points and then compute variable data.

Note that this method makes no assumptions about what's been called beforehand, e.g. you don't have to call some prepare method before this one. This is an all-in-one reinit

Reimplemented from SubProblem.

Definition at line 9698 of file FEProblemBase.C.

9704{
9705 SubProblem::reinitElemFaceRef(elem, side, tolerance, pts, weights, tid);
9706
9708 _displaced_problem->reinitElemFaceRef(
9709 _displaced_mesh->elemPtr(elem->id()), side, tolerance, pts, weights, tid);
9710}
virtual void reinitElemFaceRef(const Elem *elem, unsigned int side, Real tolerance, const std::vector< Point > *const pts, const std::vector< Real > *const weights=nullptr, const THREAD_ID tid=0)
reinitialize FE objects on a given element on a given side at a given set of reference points and the...
Definition SubProblem.C:883

Referenced by Moose::Mortar::loopOverMortarSegments().

◆ reinitElemNeighborAndLowerD()

void FEProblemBase::reinitElemNeighborAndLowerD ( const Elem elem,
unsigned int  side,
const THREAD_ID  tid 
)
overridevirtualinherited

Implements SubProblem.

Definition at line 2509 of file FEProblemBase.C.

2512{
2513 reinitNeighbor(elem, side, tid);
2514
2515 const Elem * lower_d_elem = _mesh.getLowerDElem(elem, side);
2516 if (lower_d_elem && _mesh.interiorLowerDBlocks().count(lower_d_elem->subdomain_id()) > 0)
2517 reinitLowerDElem(lower_d_elem, tid);
2518 else
2519 {
2520 // with mesh refinement, lower-dimensional element might be defined on neighbor side
2521 auto & neighbor = _assembly[tid][0]->neighbor();
2522 auto & neighbor_side = _assembly[tid][0]->neighborSide();
2523 const Elem * lower_d_elem_neighbor = _mesh.getLowerDElem(neighbor, neighbor_side);
2524 if (lower_d_elem_neighbor &&
2525 _mesh.interiorLowerDBlocks().count(lower_d_elem_neighbor->subdomain_id()) > 0)
2526 {
2527 auto qps = _assembly[tid][0]->qPointsFaceNeighbor().stdVector();
2528 std::vector<Point> reference_points;
2530 lower_d_elem_neighbor->dim(), lower_d_elem_neighbor, qps, reference_points);
2531 reinitLowerDElem(lower_d_elem_neighbor, tid, &reference_points);
2532 }
2533 }
2534
2536 _displaced_problem->reinitElemNeighborAndLowerD(
2537 _displaced_mesh->elemPtr(elem->id()), side, tid);
2538}
virtual void reinitLowerDElem(const Elem *lower_d_elem, const THREAD_ID tid, const std::vector< Point > *const pts=nullptr, const std::vector< Real > *const weights=nullptr) override
virtual void reinitNeighbor(const Elem *elem, unsigned int side, const THREAD_ID tid) override
const Elem * getLowerDElem(const Elem *, unsigned short int) const
Returns a const pointer to a lower dimensional element that corresponds to a side of a higher dimensi...
Definition MooseMesh.C:1690
virtual unsigned short dim() const=0
subdomain_id_type subdomain_id() const
static Point inverse_map(const unsigned int dim, const Elem *elem, const Point &p, const Real tolerance=TOLERANCE, const bool secure=true, const bool extra_checks=true)

Referenced by ComputeMaterialsObjectThread::onInternalSide(), and NonlinearThread::onInternalSide().

◆ reinitElemPhys()

void FEProblemBase::reinitElemPhys ( const Elem elem,
const std::vector< Point > &  phys_points_in_elem,
const THREAD_ID  tid 
)
overridevirtualinherited

Implements SubProblem.

Definition at line 2334 of file FEProblemBase.C.

2337{
2338 mooseAssert(_mesh.queryElemPtr(elem->id()) == elem,
2339 "Are you calling this method with a displaced mesh element?");
2340
2341 for (const auto i : index_range(_solver_systems))
2342 {
2343 _assembly[tid][i]->reinitAtPhysical(elem, phys_points_in_elem);
2344 _solver_systems[i]->prepare(tid);
2345 _assembly[tid][i]->prepare();
2347 _assembly[tid][i]->prepareNonlocal();
2348 }
2349 _aux->prepare(tid);
2350
2351 reinitElem(elem, tid);
2352}
virtual Elem * queryElemPtr(const dof_id_type i)
Definition MooseMesh.C:3226

Referenced by MultiAppVariableValueSamplePostprocessorTransfer::execute().

◆ reinitFVFace()

void SubProblem::reinitFVFace ( const THREAD_ID  tid,
const FaceInfo fi 
)
inherited

reinitialize the finite volume assembly data for the provided face and thread

Definition at line 1289 of file SubProblem.C.

1290{
1291 for (const auto nl : make_range(numNonlinearSystems()))
1292 assembly(tid, nl).reinitFVFace(fi);
1293}
void reinitFVFace(const THREAD_ID tid, const FaceInfo &fi)
reinitialize the finite volume assembly data for the provided face and thread

◆ reinitGeomSearch()

void SubProblem::reinitGeomSearch ( )
inherited

reinitialize this object's geometric search data, e.g.

do things like clear and re-add quadrature nodes

Definition at line 1407 of file SubProblem.C.

1408{
1410}
virtual GeometricSearchData & geomSearchData()=0

◆ reinitKokkosMaterials()

void FEProblemBase::reinitKokkosMaterials ( )
inherited

◆ reinitLowerDElem()

void FEProblemBase::reinitLowerDElem ( const Elem lower_d_elem,
const THREAD_ID  tid,
const std::vector< Point > *const  pts = nullptr,
const std::vector< Real > *const  weights = nullptr 
)
overridevirtualinherited

Reimplemented from SubProblem.

Definition at line 2382 of file FEProblemBase.C.

2386{
2387 SubProblem::reinitLowerDElem(lower_d_elem, tid, pts, weights);
2388
2390 _displaced_problem->reinitLowerDElem(
2391 _displaced_mesh->elemPtr(lower_d_elem->id()), tid, pts, weights);
2392}
virtual void reinitLowerDElem(const Elem *lower_d_elem, const THREAD_ID tid, const std::vector< Point > *const pts=nullptr, const std::vector< Real > *const weights=nullptr)
Definition SubProblem.C:958

Referenced by ComputeUserObjectsThread::onBoundary(), NonlinearThread::prepareFace(), and FEProblemBase::reinitElemNeighborAndLowerD().

◆ reinitMaterials()

void FEProblemBase::reinitMaterials ( SubdomainID  blk_id,
const THREAD_ID  tid,
bool  swap_stateful = true 
)
inherited

Definition at line 4298 of file FEProblemBase.C.

4299{
4301 {
4302 auto && elem = _assembly[tid][0]->elem();
4303 unsigned int n_points = _assembly[tid][0]->qRule()->n_points();
4304
4305 auto & material_data = _material_props.getMaterialData(tid);
4306 material_data.resize(n_points);
4307
4308 // Only swap if requested
4309 if (swap_stateful)
4310 material_data.swap(*elem);
4311
4313 material_data.reset(_discrete_materials.getActiveBlockObjects(blk_id, tid));
4314
4315 if (_materials.hasActiveBlockObjects(blk_id, tid))
4316 material_data.reinit(_materials.getActiveBlockObjects(blk_id, tid));
4317 }
4318}
bool hasActiveMaterialProperties(const THREAD_ID tid) const
Method to check whether or not a list of active material roperties has been set.
void resize(unsigned int n_qpoints)
Resize the data to hold properties for n_qpoints quadrature points.

Referenced by NodalPatchRecovery::compute(), ComputeDiracThread::onElement(), ComputeIndicatorThread::onElement(), ComputeMarkerThread::onElement(), and ComputeUserObjectsThread::onElement().

◆ reinitMaterialsBoundary()

void FEProblemBase::reinitMaterialsBoundary ( BoundaryID  boundary_id,
const THREAD_ID  tid,
bool  swap_stateful = true,
const std::deque< MaterialBase * > *  reinit_mats = nullptr 
)
inherited

reinit materials on a boundary

Parameters
boundary_idThe boundary on which to reinit corresponding materials
tidThe thread id
swap_statefulWhether to swap stateful material properties between MaterialData and MaterialPropertyStorage
execute_statefulWhether to execute material objects that have stateful properties. This should be false when for example executing material objects for mortar contexts in which stateful properties don't make sense
reinit_matsspecific list of materials to reinit. Used notably in the context of mortar with stateful elements

Definition at line 4443 of file FEProblemBase.C.

4447{
4448 if (hasActiveMaterialProperties(tid) && needBoundaryMaterialOnSide(boundary_id, tid))
4449 {
4450 auto && elem = _assembly[tid][0]->elem();
4451 unsigned int side = _assembly[tid][0]->side();
4452 unsigned int n_points = _assembly[tid][0]->qRuleFace()->n_points();
4453
4454 auto & bnd_material_data = _bnd_material_props.getMaterialData(tid);
4455 bnd_material_data.resize(n_points);
4456
4457 if (swap_stateful && !bnd_material_data.isSwapped())
4458 bnd_material_data.swap(*elem, side);
4459
4460 if (_discrete_materials.hasActiveBoundaryObjects(boundary_id, tid))
4461 bnd_material_data.reset(_discrete_materials.getActiveBoundaryObjects(boundary_id, tid));
4462
4463 if (reinit_mats)
4464 bnd_material_data.reinit(*reinit_mats);
4465 else if (_materials.hasActiveBoundaryObjects(boundary_id, tid))
4466 bnd_material_data.reinit(_materials.getActiveBoundaryObjects(boundary_id, tid));
4467 }
4468}
const std::map< BoundaryID, std::vector< std::shared_ptr< T > > > & getActiveBoundaryObjects(THREAD_ID tid=0) const

Referenced by Moose::Mortar::loopOverMortarSegments(), ComputeUserObjectsThread::onBoundary(), ComputeUserObjectsThread::onInterface(), NonlinearThread::onInterface(), and NonlinearThread::prepareFace().

◆ reinitMaterialsFace()

void FEProblemBase::reinitMaterialsFace ( SubdomainID  blk_id,
const THREAD_ID  tid,
bool  swap_stateful = true,
const std::deque< MaterialBase * > *  reinit_mats = nullptr 
)
inherited

reinit materials on element faces

Parameters
blk_idThe subdomain on which the element owning the face lives
tidThe thread id
swap_statefulWhether to swap stateful material properties between MaterialData and MaterialPropertyStorage
reinit_matsspecific list of materials to reinit. Used notably in the context of mortar with stateful elements

Definition at line 4321 of file FEProblemBase.C.

4325{
4326 // we reinit more often than needed here because we dont have a way to check whether
4327 // we need to compute the face materials on a particular (possibly external) face
4329 {
4330 auto && elem = _assembly[tid][0]->elem();
4331 unsigned int side = _assembly[tid][0]->side();
4332 unsigned int n_points = _assembly[tid][0]->qRuleFace()->n_points();
4333
4334 auto & bnd_material_data = _bnd_material_props.getMaterialData(tid);
4335 bnd_material_data.resize(n_points);
4336
4337 if (swap_stateful && !bnd_material_data.isSwapped())
4338 bnd_material_data.swap(*elem, side);
4339
4340 if (_discrete_materials[Moose::FACE_MATERIAL_DATA].hasActiveBlockObjects(blk_id, tid))
4341 bnd_material_data.reset(
4342 _discrete_materials[Moose::FACE_MATERIAL_DATA].getActiveBlockObjects(blk_id, tid));
4343
4344 if (reinit_mats)
4345 bnd_material_data.reinit(*reinit_mats);
4346 else if (_materials[Moose::FACE_MATERIAL_DATA].hasActiveBlockObjects(blk_id, tid))
4347 bnd_material_data.reinit(
4348 _materials[Moose::FACE_MATERIAL_DATA].getActiveBlockObjects(blk_id, tid));
4349 }
4350}

Referenced by Moose::Mortar::loopOverMortarSegments(), ComputeIndicatorThread::onInternalSide(), ComputeUserObjectsThread::onInternalSide(), NonlinearThread::onInternalSide(), and NonlinearThread::prepareFace().

◆ reinitMaterialsFaceOnBoundary()

void FEProblemBase::reinitMaterialsFaceOnBoundary ( const BoundaryID  boundary_id,
const SubdomainID  blk_id,
const THREAD_ID  tid,
const bool  swap_stateful = true,
const std::deque< MaterialBase * > *const  reinit_mats = nullptr 
)
inherited

reinit materials on element faces on a boundary (internal or external) This specific routine helps us not reinit when don't need to

Parameters
boundary_idThe boundary on which the face belongs
blk_idThe block id to which the element (who owns the face) belong
tidThe thread id
swap_statefulWhether to swap stateful material properties between MaterialData and MaterialPropertyStorage
reinit_matsspecific list of materials to reinit. Used notably in the context of mortar with stateful elements

Definition at line 4353 of file FEProblemBase.C.

4358{
4359 if (hasActiveMaterialProperties(tid) && (needBoundaryMaterialOnSide(boundary_id, tid) ||
4360 needInterfaceMaterialOnSide(boundary_id, tid) ||
4362 {
4363 const auto * const elem = _assembly[tid][0]->elem();
4364 unsigned int side = _assembly[tid][0]->side();
4365 unsigned int n_points = _assembly[tid][0]->qRuleFace()->n_points();
4366
4367 auto & bnd_material_data = _bnd_material_props.getMaterialData(tid);
4368 bnd_material_data.resize(n_points);
4369
4370 if (swap_stateful && !bnd_material_data.isSwapped())
4371 bnd_material_data.swap(*elem, side);
4372
4373 if (_discrete_materials[Moose::FACE_MATERIAL_DATA].hasActiveBlockObjects(blk_id, tid))
4374 bnd_material_data.reset(
4375 _discrete_materials[Moose::FACE_MATERIAL_DATA].getActiveBlockObjects(blk_id, tid));
4376
4377 if (reinit_mats)
4378 bnd_material_data.reinit(*reinit_mats);
4379 else if (_materials[Moose::FACE_MATERIAL_DATA].hasActiveBlockObjects(blk_id, tid))
4380 bnd_material_data.reinit(
4381 _materials[Moose::FACE_MATERIAL_DATA].getActiveBlockObjects(blk_id, tid));
4382 }
4383}

Referenced by ComputeUserObjectsThread::onBoundary(), ComputeUserObjectsThread::onInterface(), NonlinearThread::onInterface(), and NonlinearThread::prepareFace().

◆ reinitMaterialsInterface()

void FEProblemBase::reinitMaterialsInterface ( BoundaryID  boundary_id,
const THREAD_ID  tid,
bool  swap_stateful = true 
)
inherited

Definition at line 4471 of file FEProblemBase.C.

4474{
4475 if (hasActiveMaterialProperties(tid) && needInterfaceMaterialOnSide(boundary_id, tid))
4476 {
4477 const Elem * const & elem = _assembly[tid][0]->elem();
4478 unsigned int side = _assembly[tid][0]->side();
4479 unsigned int n_points = _assembly[tid][0]->qRuleFace()->n_points();
4480
4481 auto & bnd_material_data = _bnd_material_props.getMaterialData(tid);
4482 bnd_material_data.resize(n_points);
4483
4484 if (swap_stateful && !bnd_material_data.isSwapped())
4485 bnd_material_data.swap(*elem, side);
4486
4487 if (_interface_materials.hasActiveBoundaryObjects(boundary_id, tid))
4488 bnd_material_data.reinit(_interface_materials.getActiveBoundaryObjects(boundary_id, tid));
4489 }
4490}

Referenced by ComputeUserObjectsThread::onInterface(), and NonlinearThread::onInterface().

◆ reinitMaterialsNeighbor()

void FEProblemBase::reinitMaterialsNeighbor ( SubdomainID  blk_id,
const THREAD_ID  tid,
bool  swap_stateful = true,
const std::deque< MaterialBase * > *  reinit_mats = nullptr 
)
inherited

reinit materials on the neighboring element face

Parameters
blk_idThe subdomain on which the neighbor element lives
tidThe thread id
swap_statefulWhether to swap stateful material properties between MaterialData and MaterialPropertyStorage
reinit_matsspecific list of materials to reinit. Used notably in the context of mortar with stateful elements

Definition at line 4403 of file FEProblemBase.C.

4407{
4409 {
4410 // NOTE: this will not work with h-adaptivity
4411 // lindsayad: why not?
4412
4413 const Elem * neighbor = _assembly[tid][0]->neighbor();
4414 unsigned int neighbor_side = neighbor->which_neighbor_am_i(_assembly[tid][0]->elem());
4415
4416 mooseAssert(neighbor, "neighbor should be non-null");
4417 mooseAssert(blk_id == neighbor->subdomain_id(),
4418 "The provided blk_id " << blk_id << " and neighbor subdomain ID "
4419 << neighbor->subdomain_id() << " do not match.");
4420
4421 unsigned int n_points = _assembly[tid][0]->qRuleNeighbor()->n_points();
4422
4423 auto & neighbor_material_data = _neighbor_material_props.getMaterialData(tid);
4424 neighbor_material_data.resize(n_points);
4425
4426 // Only swap if requested
4427 if (swap_stateful)
4428 neighbor_material_data.swap(*neighbor, neighbor_side);
4429
4430 if (_discrete_materials[Moose::NEIGHBOR_MATERIAL_DATA].hasActiveBlockObjects(blk_id, tid))
4431 neighbor_material_data.reset(
4432 _discrete_materials[Moose::NEIGHBOR_MATERIAL_DATA].getActiveBlockObjects(blk_id, tid));
4433
4434 if (reinit_mats)
4435 neighbor_material_data.reinit(*reinit_mats);
4436 else if (_materials[Moose::NEIGHBOR_MATERIAL_DATA].hasActiveBlockObjects(blk_id, tid))
4437 neighbor_material_data.reinit(
4438 _materials[Moose::NEIGHBOR_MATERIAL_DATA].getActiveBlockObjects(blk_id, tid));
4439 }
4440}
unsigned int which_neighbor_am_i(const Elem *e) const

Referenced by Moose::Mortar::loopOverMortarSegments(), ComputeUserObjectsThread::onInterface(), ComputeIndicatorThread::onInternalSide(), ComputeUserObjectsThread::onInternalSide(), NonlinearThread::onInternalSide(), FEProblemBase::reinitMaterialsNeighborOnBoundary(), and NonlinearSystemBase::reinitNodeFace().

◆ reinitMaterialsNeighborOnBoundary()

void FEProblemBase::reinitMaterialsNeighborOnBoundary ( const BoundaryID  boundary_id,
const SubdomainID  blk_id,
const THREAD_ID  tid,
const bool  swap_stateful = true,
const std::deque< MaterialBase * > *const  reinit_mats = nullptr 
)
inherited

reinit materials on neighbor element (usually faces) on a boundary (internal or external) This specific routine helps us not reinit when don't need to

Parameters
boundary_idThe boundary on which the face belongs
blk_idThe block id to which the element (who owns the face) belong
tidThe thread id
swap_statefulWhether to swap stateful material properties between MaterialData and MaterialPropertyStorage
reinit_matsspecific list of materials to reinit. Used notably in the context of mortar with stateful elements

Definition at line 4386 of file FEProblemBase.C.

4392{
4393 // Since objects don't declare whether they need the face or neighbor (side) material properties,
4394 // we use the same criteria for skipping material property computations as for face material
4395 // properties This could be a future optimization.
4396 if (hasActiveMaterialProperties(tid) && (needBoundaryMaterialOnSide(boundary_id, tid) ||
4397 needInterfaceMaterialOnSide(boundary_id, tid) ||
4399 reinitMaterialsNeighbor(blk_id, tid, swap_stateful, reinit_mats);
4400}
void reinitMaterialsNeighbor(SubdomainID blk_id, const THREAD_ID tid, bool swap_stateful=true, const std::deque< MaterialBase * > *reinit_mats=nullptr)
reinit materials on the neighboring element face

Referenced by NonlinearThread::onInterface().

◆ reinitMortarElem()

void SubProblem::reinitMortarElem ( const Elem elem,
const THREAD_ID  tid = 0 
)
inherited

Reinit a mortar element to obtain a valid JxW.

Definition at line 995 of file SubProblem.C.

996{
997 for (const auto nl_sys_num : make_range(numNonlinearSystems()))
998 assembly(tid, nl_sys_num).reinitMortarElem(elem);
999}
void reinitMortarElem(const Elem *elem, const THREAD_ID tid=0)
Reinit a mortar element to obtain a valid JxW.
Definition SubProblem.C:995

Referenced by Moose::Mortar::loopOverMortarSegments().

◆ reinitMortarUserObjects()

void FEProblemBase::reinitMortarUserObjects ( BoundaryID  primary_boundary_id,
BoundaryID  secondary_boundary_id,
bool  displaced 
)
inherited

Call reinit on mortar user objects with matching primary boundary ID, secondary boundary ID, and displacement characteristics.

Definition at line 9963 of file FEProblemBase.C.

9966{
9967 const auto mortar_uos =
9968 getMortarUserObjects(primary_boundary_id, secondary_boundary_id, displaced);
9969 for (auto * const mortar_uo : mortar_uos)
9970 {
9971 mortar_uo->setNormals();
9972 mortar_uo->reinit();
9973 }
9974}

Referenced by Moose::Mortar::loopOverMortarSegments().

◆ reinitNeighbor()

void FEProblemBase::reinitNeighbor ( const Elem elem,
unsigned int  side,
const THREAD_ID  tid 
)
overridevirtualinherited

Implements SubProblem.

Definition at line 2470 of file FEProblemBase.C.

2471{
2472 setNeighborSubdomainID(elem, side, tid);
2473
2474 const Elem * neighbor = elem->neighbor_ptr(side);
2475 unsigned int neighbor_side = neighbor->which_neighbor_am_i(elem);
2476
2477 for (const auto i : index_range(_nl))
2478 {
2479 _assembly[tid][i]->reinitElemAndNeighbor(elem, side, neighbor, neighbor_side);
2480 _nl[i]->prepareNeighbor(tid);
2481 // Called during stateful material property evaluation outside of solve
2482 _assembly[tid][i]->prepareNeighbor();
2483 }
2484 _aux->prepareNeighbor(tid);
2485
2486 for (auto & nl : _nl)
2487 {
2488 nl->reinitElemFace(elem, side, tid);
2489 nl->reinitNeighborFace(neighbor, neighbor_side, tid);
2490 }
2491 _aux->reinitElemFace(elem, side, tid);
2492 _aux->reinitNeighborFace(neighbor, neighbor_side, tid);
2493
2495 {
2496 // There are cases like for cohesive zone modeling without significant sliding where we cannot
2497 // use FEInterface::inverse_map in Assembly::reinitElemAndNeighbor in the displaced problem
2498 // because the physical points coming from the element don't actually lie on the neighbor.
2499 // Moreover, what's the point of doing another physical point inversion in other cases? We only
2500 // care about the reference points which we can just take from the undisplaced computation
2501 const auto & displaced_ref_pts = _assembly[tid][0]->qRuleNeighbor()->get_points();
2502
2503 _displaced_problem->reinitNeighbor(
2504 _displaced_mesh->elemPtr(elem->id()), side, tid, &displaced_ref_pts);
2505 }
2506}
virtual void setNeighborSubdomainID(const Elem *elem, unsigned int side, const THREAD_ID tid) override
const Elem * neighbor_ptr(unsigned int i) const

Referenced by ComputeMaterialsObjectThread::onInterface(), ComputeUserObjectsThread::onInterface(), NonlinearThread::onInterface(), ComputeIndicatorThread::onInternalSide(), ComputeUserObjectsThread::onInternalSide(), and FEProblemBase::reinitElemNeighborAndLowerD().

◆ reinitNeighborFaceRef()

void FEProblemBase::reinitNeighborFaceRef ( const Elem neighbor_elem,
unsigned int  neighbor_side,
Real  tolerance,
const std::vector< Point > *const  pts,
const std::vector< Real > *const  weights = nullptr,
const THREAD_ID  tid = 0 
)
overridevirtualinherited

reinitialize FE objects on a given neighbor element on a given side at a given set of reference points and then compute variable data.

Note that this method makes no assumptions about what's been called beforehand, e.g. you don't have to call some prepare method before this one. This is an all-in-one reinit

Reimplemented from SubProblem.

Definition at line 9713 of file FEProblemBase.C.

9719{
9720 SubProblem::reinitNeighborFaceRef(neighbor_elem, neighbor_side, tolerance, pts, weights, tid);
9721
9723 _displaced_problem->reinitNeighborFaceRef(
9724 _displaced_mesh->elemPtr(neighbor_elem->id()), neighbor_side, tolerance, pts, weights, tid);
9725}
virtual void reinitNeighborFaceRef(const Elem *neighbor_elem, unsigned int neighbor_side, Real tolerance, const std::vector< Point > *const pts, const std::vector< Real > *const weights=nullptr, const THREAD_ID tid=0)
reinitialize FE objects on a given neighbor element on a given side at a given set of reference point...
Definition SubProblem.C:922

Referenced by Moose::Mortar::loopOverMortarSegments().

◆ reinitNeighborLowerDElem()

void SubProblem::reinitNeighborLowerDElem ( const Elem elem,
const THREAD_ID  tid = 0 
)
inherited

reinitialize a neighboring lower dimensional element

Definition at line 988 of file SubProblem.C.

989{
990 for (const auto nl_sys_num : make_range(numNonlinearSystems()))
991 assembly(tid, nl_sys_num).reinitNeighborLowerDElem(elem);
992}
void reinitNeighborLowerDElem(const Elem *elem, const THREAD_ID tid=0)
reinitialize a neighboring lower dimensional element
Definition SubProblem.C:988

Referenced by Moose::Mortar::loopOverMortarSegments().

◆ reinitNeighborPhys() [1/2]

void FEProblemBase::reinitNeighborPhys ( const Elem neighbor,
const std::vector< Point > &  physical_points,
const THREAD_ID  tid 
)
overridevirtualinherited

Implements SubProblem.

Definition at line 2569 of file FEProblemBase.C.

2572{
2573 mooseAssert(_mesh.queryElemPtr(neighbor->id()) == neighbor,
2574 "Are you calling this method with a displaced mesh element?");
2575
2576 for (const auto i : index_range(_nl))
2577 {
2578 // Reinits shape the functions at the physical points
2579 _assembly[tid][i]->reinitNeighborAtPhysical(neighbor, physical_points);
2580
2581 // Sets the neighbor dof indices
2582 _nl[i]->prepareNeighbor(tid);
2583 }
2584 _aux->prepareNeighbor(tid);
2585
2586 // Resizes Re and Ke
2587 _assembly[tid][_current_nl_sys->number()]->prepareNeighbor();
2588
2589 // Compute the values of each variable at the points
2590 for (auto & nl : _nl)
2591 nl->reinitNeighbor(neighbor, tid);
2592 _aux->reinitNeighbor(neighbor, tid);
2593}

◆ reinitNeighborPhys() [2/2]

void FEProblemBase::reinitNeighborPhys ( const Elem neighbor,
unsigned int  neighbor_side,
const std::vector< Point > &  physical_points,
const THREAD_ID  tid 
)
overridevirtualinherited

Implements SubProblem.

Definition at line 2541 of file FEProblemBase.C.

2545{
2546 mooseAssert(_mesh.queryElemPtr(neighbor->id()) == neighbor,
2547 "Are you calling this method with a displaced mesh element?");
2548
2549 for (const auto i : index_range(_nl))
2550 {
2551 // Reinits shape the functions at the physical points
2552 _assembly[tid][i]->reinitNeighborAtPhysical(neighbor, neighbor_side, physical_points);
2553
2554 // Sets the neighbor dof indices
2555 _nl[i]->prepareNeighbor(tid);
2556 }
2557 _aux->prepareNeighbor(tid);
2558
2559 // Resizes Re and Ke
2560 _assembly[tid][_current_nl_sys->number()]->prepareNeighbor();
2561
2562 // Compute the values of each variable at the points
2563 for (auto & nl : _nl)
2564 nl->reinitNeighborFace(neighbor, neighbor_side, tid);
2565 _aux->reinitNeighborFace(neighbor, neighbor_side, tid);
2566}

Referenced by NonlinearSystemBase::reinitNodeFace().

◆ reinitNode()

void FEProblemBase::reinitNode ( const Node node,
const THREAD_ID  tid 
)
overridevirtualinherited

Implements SubProblem.

Definition at line 2395 of file FEProblemBase.C.

2396{
2398 _displaced_problem->reinitNode(&_displaced_mesh->nodeRef(node->id()), tid);
2399
2400 for (const auto i : index_range(_nl))
2401 {
2402 _assembly[tid][i]->reinit(node);
2403 _nl[i]->reinitNode(node, tid);
2404 }
2405 _aux->reinitNode(node, tid);
2406}
virtual const Node & nodeRef(const dof_id_type i) const
Definition MooseMesh.C:841

Referenced by NodalPatchRecovery::compute(), NonlinearSystemBase::computeResidualInternal(), ComputeNodalDampingThread::onNode(), ComputeNodalKernelJacobiansThread::onNode(), ComputeNodalKernelsThread::onNode(), and ComputeNodalUserObjectsThread::onNode().

◆ reinitNodeFace()

void FEProblemBase::reinitNodeFace ( const Node node,
BoundaryID  bnd_id,
const THREAD_ID  tid 
)
overridevirtualinherited

◆ reinitNodes()

void FEProblemBase::reinitNodes ( const std::vector< dof_id_type > &  nodes,
const THREAD_ID  tid 
)
overridevirtualinherited

Implements SubProblem.

Definition at line 2423 of file FEProblemBase.C.

2424{
2426 _displaced_problem->reinitNodes(nodes, tid);
2427
2428 for (auto & nl : _nl)
2429 nl->reinitNodes(nodes, tid);
2430 _aux->reinitNodes(nodes, tid);
2431}
virtual void reinitNodes(const std::vector< dof_id_type > &nodes, const THREAD_ID tid) override

Referenced by NonlinearSystemBase::enforceNodalConstraintsJacobian(), and NonlinearSystemBase::enforceNodalConstraintsResidual().

◆ reinitNodesNeighbor()

void FEProblemBase::reinitNodesNeighbor ( const std::vector< dof_id_type > &  nodes,
const THREAD_ID  tid 
)
overridevirtualinherited

Implements SubProblem.

Definition at line 2434 of file FEProblemBase.C.

2435{
2437 _displaced_problem->reinitNodesNeighbor(nodes, tid);
2438
2439 for (auto & nl : _nl)
2440 nl->reinitNodesNeighbor(nodes, tid);
2441 _aux->reinitNodesNeighbor(nodes, tid);
2442}
virtual void reinitNodesNeighbor(const std::vector< dof_id_type > &nodes, const THREAD_ID tid) override

Referenced by NonlinearSystemBase::enforceNodalConstraintsJacobian(), and NonlinearSystemBase::enforceNodalConstraintsResidual().

◆ reinitOffDiagScalars()

void FEProblemBase::reinitOffDiagScalars ( const THREAD_ID  tid)
overridevirtualinherited

Implements SubProblem.

Definition at line 2462 of file FEProblemBase.C.

2463{
2464 _assembly[tid][_current_nl_sys->number()]->prepareOffDiagScalar();
2466 _displaced_problem->reinitOffDiagScalars(tid);
2467}

Referenced by NonlinearSystemBase::computeScalarKernelsJacobians(), NonlinearSystemBase::constraintJacobians(), and NonlinearThread::onElement().

◆ reinitScalars()

void FEProblemBase::reinitScalars ( const THREAD_ID  tid,
bool  reinit_for_derivative_reordering = false 
)
overridevirtualinherited

fills the VariableValue arrays for scalar variables from the solution vector

Parameters
tidThe thread id
reinit_for_derivative_reorderingA flag indicating whether we are reinitializing for the purpose of re-ordering derivative information for ADNodalBCs

Implements SubProblem.

Definition at line 2445 of file FEProblemBase.C.

2446{
2447 TIME_SECTION("reinitScalars", 3, "Reinitializing Scalar Variables");
2448
2450 _displaced_problem->reinitScalars(tid, reinit_for_derivative_reordering);
2451
2452 for (auto & nl : _nl)
2453 nl->reinitScalars(tid, reinit_for_derivative_reordering);
2454 _aux->reinitScalars(tid, reinit_for_derivative_reordering);
2455
2456 // This is called outside of residual/Jacobian call-backs
2457 for (auto & assembly : _assembly[tid])
2458 assembly->prepareScalar();
2459}

Referenced by NonlinearSystemBase::computeJacobianBlocks(), NonlinearSystemBase::computeJacobianInternal(), FEProblemBase::computeJacobianTags(), NonlinearSystemBase::computeNodalBCsJacobian(), FEProblemBase::computeResidualAndJacobian(), NonlinearSystemBase::computeResidualAndJacobianInternal(), NonlinearSystemBase::computeResidualInternal(), FEProblemBase::computeResidualTags(), NonlinearSystemBase::computeScalarKernelsJacobians(), and AuxiliarySystem::computeScalarVars().

◆ removeAlgebraicGhostingFunctor()

void SubProblem::removeAlgebraicGhostingFunctor ( libMesh::GhostingFunctor algebraic_gf)
inherited

Remove an algebraic ghosting functor from this problem's DofMaps.

Definition at line 1068 of file SubProblem.C.

1069{
1070 EquationSystems & eq = es();
1071 const auto n_sys = eq.n_systems();
1072 DofMap & nl_dof_map = eq.get_system(0).get_dof_map();
1073
1074 const bool found_in_root_sys =
1075 std::find(nl_dof_map.algebraic_ghosting_functors_begin(),
1077 &algebraic_gf) != nl_dof_map.algebraic_ghosting_functors_end();
1078
1079#ifndef NDEBUG
1080 const bool found_in_our_map =
1081 _root_alg_gf_to_sys_clones.find(&algebraic_gf) != _root_alg_gf_to_sys_clones.end();
1082 mooseAssert(found_in_root_sys == found_in_our_map,
1083 "If the ghosting functor exists in the root DofMap, then we need to have a key for "
1084 "it in our gf to clones map");
1085#endif
1086
1087 if (found_in_root_sys) // libMesh yells if we try to remove
1088 // something that's not there
1089 nl_dof_map.remove_algebraic_ghosting_functor(algebraic_gf);
1090
1091 auto it = _root_alg_gf_to_sys_clones.find(&algebraic_gf);
1092 if (it == _root_alg_gf_to_sys_clones.end())
1093 return;
1094
1095 auto & clones_vec = it->second;
1096 mooseAssert((n_sys - 1) == clones_vec.size(),
1097 "The size of the gf clones vector doesn't match the number of systems minus one");
1098 if (clones_vec.empty())
1099 {
1100 mooseAssert(n_sys == 1, "The clones vector should only be empty if there is only one system");
1101 return;
1102 }
1103
1104 for (const auto i : make_range(n_sys))
1105 eq.get_system(i + 1).get_dof_map().remove_algebraic_ghosting_functor(*clones_vec[i]);
1106
1107 _root_alg_gf_to_sys_clones.erase(it->first);
1108}
void remove_algebraic_ghosting_functor(GhostingFunctor &evaluable_functor)
GhostingFunctorIterator algebraic_ghosting_functors_end() const
GhostingFunctorIterator algebraic_ghosting_functors_begin() const

◆ removeCouplingGhostingFunctor()

void SubProblem::removeCouplingGhostingFunctor ( libMesh::GhostingFunctor coupling_gf)
inherited

Remove a coupling ghosting functor from this problem's DofMaps.

Definition at line 1111 of file SubProblem.C.

1112{
1113 EquationSystems & eq = es();
1114 const auto num_nl_sys = numNonlinearSystems();
1115 if (!num_nl_sys)
1116 return;
1117
1118 DofMap & nl_dof_map = eq.get_system(0).get_dof_map();
1119 const bool found_in_root_sys = std::find(nl_dof_map.coupling_functors_begin(),
1120 nl_dof_map.coupling_functors_end(),
1121 &coupling_gf) != nl_dof_map.coupling_functors_end();
1122
1123#ifndef NDEBUG
1124 const bool found_in_our_map =
1126 mooseAssert(found_in_root_sys == found_in_our_map,
1127 "If the ghosting functor exists in the root DofMap, then we need to have a key for "
1128 "it in our gf to clones map");
1129#endif
1130
1131 if (found_in_root_sys) // libMesh yells if we try to remove
1132 // something that's not there
1133 nl_dof_map.remove_coupling_functor(coupling_gf);
1134
1135 auto it = _root_coupling_gf_to_sys_clones.find(&coupling_gf);
1136 if (it == _root_coupling_gf_to_sys_clones.end())
1137 return;
1138
1139 auto & clones_vec = it->second;
1140 mooseAssert((num_nl_sys - 1) == clones_vec.size(),
1141 "The size of the gf clones vector doesn't match the number of systems minus one");
1142 if (clones_vec.empty())
1143 {
1144 mooseAssert(num_nl_sys == 1,
1145 "The clones vector should only be empty if there is only one nonlinear system");
1146 return;
1147 }
1148
1149 for (const auto i : make_range(num_nl_sys))
1150 eq.get_system(i + 1).get_dof_map().remove_coupling_functor(*clones_vec[i]);
1151
1152 _root_coupling_gf_to_sys_clones.erase(it->first);
1153}
GhostingFunctorIterator coupling_functors_begin() const
void remove_coupling_functor(GhostingFunctor &coupling_functor)
GhostingFunctorIterator coupling_functors_end() const

◆ reportMooseObjectDependency()

void FEProblemBase::reportMooseObjectDependency ( MooseObject a,
MooseObject b 
)
inherited

Register a MOOSE object dependency so we can either order operations properly or report when we cannot.

a -> b (a depends on b)

Definition at line 5666 of file FEProblemBase.C.

5667{
5668 //<< "Object " << a->name() << " -> " << b->name() << std::endl;
5669}

◆ resetFailNextNonlinearConvergenceCheck()

void FEProblemBase::resetFailNextNonlinearConvergenceCheck ( )
inlineinherited

Tell the problem that the nonlinear convergence check(s) may proceed as normal.

Definition at line 2907 of file FEProblemBase.h.

void resetFailNextSystemConvergenceCheck()
Tell the problem that the system convergence check(s) may proceed as normal.

Referenced by Moose::PetscSupport::petscNonlinearConverged().

◆ resetFailNextSystemConvergenceCheck()

void FEProblemBase::resetFailNextSystemConvergenceCheck ( )
inlineinherited

Tell the problem that the system convergence check(s) may proceed as normal.

Definition at line 2909 of file FEProblemBase.h.

Referenced by Moose::PetscSupport::petscLinearConverged(), and FEProblemBase::resetFailNextNonlinearConvergenceCheck().

◆ resetState()

void FEProblemBase::resetState ( )
privatevirtualinherited

Reset state of this object in preparation for the next evaluation.

Definition at line 7070 of file FEProblemBase.C.

7071{
7072 // Our default state is to allow computing derivatives
7073 ADReal::do_derivatives = true;
7075
7076 // Clear the VectorTags and MatrixTags
7079
7082
7087 {
7088 _displaced_problem->setCurrentlyComputingResidual(false);
7089 _displaced_problem->setCurrentlyComputingJacobian(false);
7090 _displaced_problem->setCurrentlyComputingResidualAndJacobian(false);
7091 }
7092}
void clearCurrentJacobianMatrixTags()
Clear the current Jacobian matrix tag data structure ... if someone creates it.
void clearCurrentResidualVectorTags()
Clear the current residual vector tag data structure.

Referenced by FEProblemBase::computeJacobianTags(), FEProblemBase::computeResidualAndJacobian(), and FEProblemBase::computeResidualTags().

◆ residualSetup()

void FEProblemBase::residualSetup ( )
overridevirtualinherited

Reimplemented from SubProblem.

Definition at line 9863 of file FEProblemBase.C.

9864{
9866 // We need to setup all the nonlinear systems other than our current one which actually called
9867 // this method (so we have to make sure we don't go in a circle)
9868 for (const auto i : make_range(numNonlinearSystems()))
9869 if (i != currentNlSysNum())
9870 _nl[i]->residualSetup();
9871 // We don't setup the aux sys because that's been done elsewhere
9873 _displaced_problem->residualSetup();
9874}
virtual void residualSetup()

Referenced by FEProblemBase::residualSetup(), and NonlinearSystemBase::residualSetup().

◆ resizeMaterialData()

void FEProblemBase::resizeMaterialData ( Moose::MaterialDataType  data_type,
unsigned int  nqp,
const THREAD_ID  tid 
)
inherited

Resize material data.

Parameters
data_typeThe type of material data to resize
nqpThe number of quadrature points to resize for
tidThe thread ID

Definition at line 9784 of file FEProblemBase.C.

9787{
9788 getMaterialData(data_type, tid).resize(nqp);
9789}

◆ restartableName()

std::string Restartable::restartableName ( const std::string &  data_name) const
protectedinherited

Gets the name of a piece of restartable data given a data name, adding the system name and object name prefix.

This should only be used in this interface and in testing.

Definition at line 78 of file Restartable.C.

79{
80 return _restartable_system_name + "/" + _restartable_name + "/" + data_name;
81}
const std::string _restartable_system_name
The system name this object is in.

Referenced by Restartable::declareRecoverableData(), and Restartable::declareRestartableDataHelper().

◆ restoreMultiApps()

void FEProblemBase::restoreMultiApps ( ExecFlagType  type,
bool  force = false 
)
inherited

Restore the MultiApps associated with the ExecFlagType.

Parameters
forceForce restoration because something went wrong with the solve

Definition at line 6107 of file FEProblemBase.C.

6108{
6109 const auto & multi_apps = _multi_apps[type].getActiveObjects();
6110
6111 if (multi_apps.size())
6112 {
6114 {
6115 if (force)
6116 _console << COLOR_CYAN << "\nRestoring Multiapps on " << type.name()
6117 << " because of solve failure!" << COLOR_DEFAULT << std::endl;
6118 else
6119 _console << COLOR_CYAN << "\nRestoring MultiApps on " << type.name() << COLOR_DEFAULT
6120 << std::endl;
6121 }
6122
6123 for (const auto & multi_app : multi_apps)
6124 multi_app->restore(force);
6125
6127
6129 _console << COLOR_CYAN << "Finished Restoring MultiApps on " << type.name() << "\n"
6130 << COLOR_DEFAULT << std::endl;
6131 }
6132}

Referenced by TransientBase::incrementStepOrReject(), and FixedPointSolve::solve().

◆ restoreOldSolutions()

void FEProblemBase::restoreOldSolutions ( )
virtualinherited

Restore old solutions from the backup vectors and deallocate them.

Definition at line 7265 of file FEProblemBase.C.

7266{
7267 TIME_SECTION("restoreOldSolutions", 5, "Restoring Old Solutions");
7268
7269 for (auto & sys : _solver_systems)
7270 sys->restoreOldSolutions();
7271 _aux->restoreOldSolutions();
7272}
virtual void restoreOldSolutions()
Restore old solutions from the backup vectors and deallocate them.

Referenced by EigenExecutionerBase::inversePowerIteration().

◆ restoreOriginalNonzeroPattern()

bool FEProblemBase::restoreOriginalNonzeroPattern ( ) const
inlineinherited
Returns
Whether the original matrix nonzero pattern is restored before each Jacobian assembly

Definition at line 2360 of file FEProblemBase.h.

Referenced by NonlinearSystemBase::computeJacobianInternal().

◆ restoreSolutions()

void FEProblemBase::restoreSolutions ( )
virtualinherited

Definition at line 7227 of file FEProblemBase.C.

7228{
7229 TIME_SECTION("restoreSolutions", 5, "Restoring Solutions");
7230
7231 if (!_not_zeroed_tagged_vectors.empty())
7232 paramError("not_zeroed_tag_vectors",
7233 "There is currently no way to restore not-zeroed vectors.");
7234
7235 for (auto & sys : _solver_systems)
7236 {
7237 if (_verbose_restore)
7238 _console << "Restoring solutions on system " << sys->name() << "..." << std::endl;
7239 sys->restoreSolutions();
7240 }
7241
7242 if (_verbose_restore)
7243 _console << "Restoring solutions on Auxiliary system..." << std::endl;
7244 _aux->restoreSolutions();
7245
7246 if (_verbose_restore)
7247 _console << "Restoring postprocessor, vector-postprocessor, and reporter data..." << std::endl;
7249
7251 _displaced_problem->updateMesh();
7252}
bool _verbose_restore
Whether or not to be verbose on solution restoration post a failed time step.
void restoreState(bool verbose=false)
When a time step fails, this method is called to revert the current reporter values to their old stat...

Referenced by ActivateElementsUserObjectBase::initSolutions(), TimeStepper::rejectStep(), and FEProblemBase::updateMeshXFEM().

◆ restrictionBoundaryCheckName()

std::string SubProblem::restrictionBoundaryCheckName ( BoundaryID  check_id)
privateinherited

Definition at line 784 of file SubProblem.C.

785{
786 return mesh().getMesh().get_boundary_info().sideset_name(check_id);
787}
std::string & sideset_name(boundary_id_type id)

Referenced by SubProblem::checkBoundaryMatProps().

◆ restrictionSubdomainCheckName()

std::string SubProblem::restrictionSubdomainCheckName ( SubdomainID  check_id)
privateinherited

Helper functions for checking MaterialProperties.

Definition at line 773 of file SubProblem.C.

774{
775 // TODO: Put a better a interface in MOOSE
776 std::map<subdomain_id_type, std::string> & name_map = mesh().getMesh().set_subdomain_name_map();
777 std::map<subdomain_id_type, std::string>::const_iterator pos = name_map.find(check_id);
778 if (pos != name_map.end())
779 return pos->second;
780 return "";
781}
std::map< subdomain_id_type, std::string > & set_subdomain_name_map()

Referenced by SubProblem::checkBlockMatProps().

◆ safeAccessTaggedMatrices()

virtual bool SubProblem::safeAccessTaggedMatrices ( ) const
inlinevirtualinherited

Is it safe to access the tagged matrices.

Reimplemented in DisplacedProblem.

Definition at line 739 of file SubProblem.h.

Referenced by MooseVariableScalar::reinit(), and DisplacedProblem::safeAccessTaggedMatrices().

◆ safeAccessTaggedVectors()

virtual bool SubProblem::safeAccessTaggedVectors ( ) const
inlinevirtualinherited

Is it safe to access the tagged vectors.

Reimplemented in DisplacedProblem.

Definition at line 742 of file SubProblem.h.

Referenced by MooseVariableScalar::reinit(), and DisplacedProblem::safeAccessTaggedVectors().

◆ saveOldSolutions()

void FEProblemBase::saveOldSolutions ( )
virtualinherited

Allocate vectors and save old solutions into them.

Definition at line 7255 of file FEProblemBase.C.

7256{
7257 TIME_SECTION("saveOldSolutions", 5, "Saving Old Solutions");
7258
7259 for (auto & sys : _solver_systems)
7260 sys->saveOldSolutions();
7261 _aux->saveOldSolutions();
7262}
virtual void saveOldSolutions()
Allocate vectors and save old solutions into them.

Referenced by EigenExecutionerBase::inversePowerIteration().

◆ selectMatrixTagsFromSystem()

void SubProblem::selectMatrixTagsFromSystem ( const SystemBase system,
const std::map< TagName, TagID > &  input_matrix_tags,
std::set< TagID > &  selected_tags 
)
staticinherited

Select the matrix tags which belong to a specific system.

Parameters
systemReference to the system
input_matrix_tagsA map of matrix tags
selected_tagsA set which gets populated by the tag-ids that belong to the system

Definition at line 301 of file SubProblem.C.

304{
305 selected_tags.clear();
306 for (const auto & matrix_tag_pair : input_matrix_tags)
307 if (system.hasMatrix(matrix_tag_pair.second))
308 selected_tags.insert(matrix_tag_pair.second);
309}

Referenced by FEProblemBase::computeLinearSystemSys().

◆ selectVectorTagsFromSystem()

void SubProblem::selectVectorTagsFromSystem ( const SystemBase system,
const std::vector< VectorTag > &  input_vector_tags,
std::set< TagID > &  selected_tags 
)
staticinherited

Select the vector tags which belong to a specific system.

Parameters
systemReference to the system
input_vector_tagsA vector of vector tags
selected_tagsA set which gets populated by the tag-ids that belong to the system

Definition at line 290 of file SubProblem.C.

293{
294 selected_tags.clear();
295 for (const auto & vector_tag : input_vector_tags)
296 if (system.hasVector(vector_tag._id))
297 selected_tags.insert(vector_tag._id);
298}

Referenced by FEProblemBase::computeLinearSystemSys(), FEProblemBase::computeResidualAndJacobian(), and ComputeResidualAndJacobianThread::determineObjectWarehouses().

◆ setActiveElementalMooseVariables()

void FEProblemBase::setActiveElementalMooseVariables ( const std::set< MooseVariableFEBase * > &  moose_vars,
const THREAD_ID  tid 
)
overridevirtualinherited

Set the MOOSE variables to be reinited on each element.

Parameters
moose_varsA set of variables that need to be reinited each time reinit() is called.
tidThe thread id

Reimplemented from SubProblem.

Definition at line 6394 of file FEProblemBase.C.

6396{
6398
6400 _displaced_problem->setActiveElementalMooseVariables(moose_vars, tid);
6401}
virtual void setActiveElementalMooseVariables(const std::set< MooseVariableFieldBase * > &moose_vars, const THREAD_ID tid)
Set the MOOSE variables to be reinited on each element.
Definition SubProblem.C:444

Referenced by FEProblemBase::prepareMaterials(), ComputeDiracThread::subdomainChanged(), ComputeIndicatorThread::subdomainChanged(), ComputeMarkerThread::subdomainChanged(), ComputeMaterialsObjectThread::subdomainChanged(), and ComputeUserObjectsThread::subdomainChanged().

◆ setActiveFEVariableCoupleableMatrixTags()

void FEProblemBase::setActiveFEVariableCoupleableMatrixTags ( std::set< TagID > &  mtags,
const THREAD_ID  tid 
)
overridevirtualinherited

Reimplemented from SubProblem.

Definition at line 6356 of file FEProblemBase.C.

6357{
6359
6361 _displaced_problem->setActiveFEVariableCoupleableMatrixTags(mtags, tid);
6362}
virtual void setActiveFEVariableCoupleableMatrixTags(std::set< TagID > &mtags, const THREAD_ID tid)
Definition SubProblem.C:364

◆ setActiveFEVariableCoupleableVectorTags()

void FEProblemBase::setActiveFEVariableCoupleableVectorTags ( std::set< TagID > &  vtags,
const THREAD_ID  tid 
)
overridevirtualinherited

◆ setActiveMaterialProperties()

void FEProblemBase::setActiveMaterialProperties ( const std::unordered_set< unsigned int > &  mat_prop_ids,
const THREAD_ID  tid 
)
inherited

Record and set the material properties required by the current computing thread.

Parameters
mat_prop_idsThe set of material properties required by the current computing thread.
tidThe thread id

Definition at line 6449 of file FEProblemBase.C.

6451{
6452 // mark active properties in every material
6453 for (auto & mat : _all_materials.getObjects(tid))
6454 mat->setActiveProperties(mat_prop_ids);
6455 for (auto & mat : _all_materials[Moose::FACE_MATERIAL_DATA].getObjects(tid))
6456 mat->setActiveProperties(mat_prop_ids);
6457 for (auto & mat : _all_materials[Moose::NEIGHBOR_MATERIAL_DATA].getObjects(tid))
6458 mat->setActiveProperties(mat_prop_ids);
6459
6460 _has_active_material_properties[tid] = !mat_prop_ids.empty();
6461}

Referenced by Moose::Mortar::loopOverMortarSegments(), FEProblemBase::prepareMaterials(), NodalPatchRecovery::reinitPatch(), NonlinearSystemBase::setConstraintSecondaryValues(), and ComputeDiracThread::subdomainChanged().

◆ setActiveScalarVariableCoupleableMatrixTags()

void FEProblemBase::setActiveScalarVariableCoupleableMatrixTags ( std::set< TagID > &  mtags,
const THREAD_ID  tid 
)
overridevirtualinherited

Reimplemented from SubProblem.

Definition at line 6374 of file FEProblemBase.C.

6376{
6378
6380 _displaced_problem->setActiveScalarVariableCoupleableMatrixTags(mtags, tid);
6381}
virtual void setActiveScalarVariableCoupleableMatrixTags(std::set< TagID > &mtags, const THREAD_ID tid)
Definition SubProblem.C:403

Referenced by AuxiliarySystem::setScalarVariableCoupleableTags().

◆ setActiveScalarVariableCoupleableVectorTags()

void FEProblemBase::setActiveScalarVariableCoupleableVectorTags ( std::set< TagID > &  vtags,
const THREAD_ID  tid 
)
overridevirtualinherited

Reimplemented from SubProblem.

Definition at line 6384 of file FEProblemBase.C.

6386{
6388
6390 _displaced_problem->setActiveScalarVariableCoupleableVectorTags(vtags, tid);
6391}
virtual void setActiveScalarVariableCoupleableVectorTags(std::set< TagID > &vtags, const THREAD_ID tid)
Definition SubProblem.C:410

Referenced by AuxiliarySystem::setScalarVariableCoupleableTags().

◆ setAuxKernelParamsAndLog()

void FEProblemBase::setAuxKernelParamsAndLog ( const std::string &  ak_name,
const std::string &  name,
InputParameters parameters,
const std::string &  base_name 
)
privateinherited

Set the subproblem and system parameters for auxiliary kernels and log their addition.

Parameters
ak_nameThe type of the auxiliary kernel
nameThe name of the auxiliary kernel
parametersThe auxiliary kernel parameters
base_nameThe base type of the auxiliary kernel, i.e. AuxKernel or KokkosAuxKernel

Definition at line 3128 of file FEProblemBase.C.

3132{
3133 if (_displaced_problem && parameters.get<bool>("use_displaced_mesh"))
3134 {
3135 parameters.set<SubProblem *>("_subproblem") = _displaced_problem.get();
3136 parameters.set<SystemBase *>("_sys") = &_displaced_problem->auxSys();
3137 parameters.set<SystemBase *>("_nl_sys") = &_displaced_problem->solverSys(0);
3138 if (!parameters.get<std::vector<BoundaryName>>("boundary").empty())
3140 else
3142 }
3143 else
3144 {
3145 if (_displaced_problem == nullptr && parameters.get<bool>("use_displaced_mesh"))
3146 {
3147 // We allow AuxKernels to request that they use_displaced_mesh,
3148 // but then be overridden when no displacements variables are
3149 // provided in the Mesh block. If that happened, update the value
3150 // of use_displaced_mesh appropriately for this AuxKernel.
3151 if (parameters.have_parameter<bool>("use_displaced_mesh"))
3152 parameters.set<bool>("use_displaced_mesh") = false;
3153 }
3154
3155 parameters.set<SubProblem *>("_subproblem") = this;
3156 parameters.set<SystemBase *>("_sys") = _aux.get();
3157 parameters.set<SystemBase *>("_nl_sys") = _solver_systems[0].get();
3158 }
3159
3160 logAdd(base_name, name, ak_name, parameters);
3161}

Referenced by FEProblemBase::addAuxKernel().

◆ setAxisymmetricCoordAxis()

void FEProblemBase::setAxisymmetricCoordAxis ( const MooseEnum rz_coord_axis)
inherited

Definition at line 884 of file FEProblemBase.C.

885{
886 _mesh.setAxisymmetricCoordAxis(rz_coord_axis);
887}
void setAxisymmetricCoordAxis(const MooseEnum &rz_coord_axis)
For axisymmetric simulations, set the symmetry coordinate axis.
Definition MooseMesh.C:4334

◆ setChainControlDataOutput()

void SubProblem::setChainControlDataOutput ( bool  set_output)
inlineinherited

Setter for debug chain control data output.

Definition at line 934 of file SubProblem.h.

934{ _show_chain_control_data = set_output; }
bool _show_chain_control_data
Whether to output a list of all the chain control data.

◆ setCheckResidualForNans()

void FEProblemBase::setCheckResidualForNans ( bool  check_residual_for_nans)
inlineinherited

Setter for residual NaN/Inf checking.

Definition at line 234 of file FEProblemBase.h.

235 {
236 _check_residual_for_nans = check_residual_for_nans;
237 }

◆ setConstJacobian()

void FEProblemBase::setConstJacobian ( bool  state)
inlineinherited

Set flag that Jacobian is constant (for optimization purposes)

Parameters
stateTrue if the Jacobian is constant, false otherwise

Definition at line 2203 of file FEProblemBase.h.

2203{ _const_jacobian = state; }

Referenced by ExplicitEuler::preSolve(), ExplicitRK2::preSolve(), and ExplicitTVDRK2::preSolve().

◆ setCoordSystem()

void FEProblemBase::setCoordSystem ( const std::vector< SubdomainName > &  blocks,
const MultiMooseEnum coord_sys 
)
inherited

Definition at line 876 of file FEProblemBase.C.

878{
879 TIME_SECTION("setCoordSystem", 5, "Setting Coordinate System");
880 _mesh.setCoordSystem(blocks, coord_sys);
881}
void setCoordSystem(const std::vector< SubdomainName > &blocks, const MultiMooseEnum &coord_sys)
Set the coordinate system for the provided blocks to coord_sys.
Definition MooseMesh.C:4202

◆ setCoupling()

void FEProblemBase::setCoupling ( Moose::CouplingType  type)
inherited

Set the coupling between variables TODO: allow user-defined coupling.

Parameters
typeType of coupling

Definition at line 6625 of file FEProblemBase.C.

6626{
6628 {
6630 mooseError("Someone told us (the FEProblemBase) to trust the user coupling matrix, but we "
6631 "haven't been provided a coupling matrix!");
6632
6633 // We've been told to trust the user coupling matrix, so we're going to leave things alone
6634 return;
6635 }
6636
6637 _coupling = type;
6638}
bool _trust_user_coupling_matrix
Whether to trust the user coupling matrix no matter what.

Referenced by FEProblemBase::init(), FEProblemBase::setCouplingMatrix(), FEProblemBase::setCouplingMatrix(), and Moose::SlepcSupport::setEigenProblemSolverParams().

◆ setCouplingMatrix() [1/2]

void FEProblemBase::setCouplingMatrix ( libMesh::CouplingMatrix cm,
const unsigned int  nl_sys_num 
)
inherited

Definition at line 6641 of file FEProblemBase.C.

6642{
6643 // TODO: Deprecate method
6645 _cm[i].reset(cm);
6646}

◆ setCouplingMatrix() [2/2]

void FEProblemBase::setCouplingMatrix ( std::unique_ptr< libMesh::CouplingMatrix cm,
const unsigned int  nl_sys_num 
)
inherited

Set custom coupling matrix.

Parameters
cmcoupling matrix to be set
nl_sys_numwhich nonlinear system we are setting the coupling matrix for

Definition at line 6649 of file FEProblemBase.C.

6650{
6652 _cm[i] = std::move(cm);
6653}

Referenced by MoosePreconditioner::setCouplingMatrix().

◆ setCurrentAlgebraicBndNodeRange()

void FEProblemBase::setCurrentAlgebraicBndNodeRange ( ConstBndNodeRange range)
inherited

Definition at line 10080 of file FEProblemBase.C.

10081{
10082 if (!range)
10083 {
10085 return;
10086 }
10087
10088 _current_algebraic_bnd_node_range = std::make_unique<ConstBndNodeRange>(*range);
10089}

◆ setCurrentAlgebraicElementRange()

void FEProblemBase::setCurrentAlgebraicElementRange ( libMesh::ConstElemRange range)
inherited

These functions allow setting custom ranges for the algebraic elements, nodes, and boundary nodes that contribute to the jacobian and residual for this local processor.

setCurrentAlgebraicElementRange() sets the element range that contributes to the system. A nullptr will reset the range to use the mesh's range.

setCurrentAlgebraicNodeRange() sets the node range that contributes to the system. A nullptr will reset the range to use the mesh's range.

setCurrentAlgebraicBndNodeRange() sets the boundary node range that contributes to the system. A nullptr will reset the range to use the mesh's range.

Parameters
rangeA pointer to the const range object representing the algebraic elements, nodes, or boundary nodes.

Definition at line 10058 of file FEProblemBase.C.

10059{
10060 if (!range)
10061 {
10063 return;
10064 }
10065
10066 _current_algebraic_elem_range = std::make_unique<ConstElemRange>(*range);
10067}

◆ setCurrentAlgebraicNodeRange()

void FEProblemBase::setCurrentAlgebraicNodeRange ( libMesh::ConstNodeRange range)
inherited

Definition at line 10069 of file FEProblemBase.C.

10070{
10071 if (!range)
10072 {
10074 return;
10075 }
10076
10077 _current_algebraic_node_range = std::make_unique<ConstNodeRange>(*range);
10078}

◆ setCurrentBoundaryID()

void FEProblemBase::setCurrentBoundaryID ( BoundaryID  bid,
const THREAD_ID  tid 
)
overridevirtualinherited

sets the current boundary ID in assembly

Reimplemented from SubProblem.

Definition at line 9994 of file FEProblemBase.C.

9995{
9998 _displaced_problem->setCurrentBoundaryID(bid, tid);
9999}
virtual void setCurrentBoundaryID(BoundaryID bid, const THREAD_ID tid)
sets the current boundary ID in assembly
Definition SubProblem.C:790

◆ setCurrentExecuteOnFlag()

void FEProblemBase::setCurrentExecuteOnFlag ( const ExecFlagType flag)
inherited

◆ setCurrentLinearSystem()

void FEProblemBase::setCurrentLinearSystem ( unsigned int  sys_num)
inherited

Set the current linear system pointer.

Parameters
sys_numThe number of linear system

Definition at line 10011 of file FEProblemBase.C.

10012{
10013 mooseAssert(sys_num < _linear_systems.size(),
10014 "System number greater than the number of linear systems");
10015 _current_linear_sys = _linear_systems[sys_num].get();
10017}
SolverSystem * _current_solver_sys
The current solver system.

Referenced by FEProblemBase::computeLinearSystemSys(), LinearSystem::computeLinearSystemTags(), and FEProblemBase::solveLinearSystem().

◆ setCurrentLowerDElem()

void FEProblemBase::setCurrentLowerDElem ( const Elem *const  lower_d_elem,
const THREAD_ID  tid 
)
overridevirtualinherited

Set the current lower dimensional element.

This can be null

Reimplemented from SubProblem.

Definition at line 9985 of file FEProblemBase.C.

9986{
9987 SubProblem::setCurrentLowerDElem(lower_d_elem, tid);
9989 _displaced_problem->setCurrentLowerDElem(
9990 lower_d_elem ? _displaced_mesh->elemPtr(lower_d_elem->id()) : nullptr, tid);
9991}
virtual void setCurrentLowerDElem(const Elem *const lower_d_elem, const THREAD_ID tid)
Set the current lower dimensional element.

◆ setCurrentlyComputingJacobian()

void SubProblem::setCurrentlyComputingJacobian ( const bool  currently_computing_jacobian)
inlineinherited

Set whether or not the problem is in the process of computing the Jacobian.

Definition at line 697 of file SubProblem.h.

698 {
699 _currently_computing_jacobian = currently_computing_jacobian;
700 }

Referenced by FEProblemBase::computeResidualAndJacobian(), and FEProblemBase::resetState().

◆ setCurrentlyComputingResidual()

void FEProblemBase::setCurrentlyComputingResidual ( bool  currently_computing_residual)
finalvirtualinherited

Set whether or not the problem is in the process of computing the residual.

Reimplemented from SubProblem.

Definition at line 9665 of file FEProblemBase.C.

9666{
9668 _displaced_problem->setCurrentlyComputingResidual(currently_computing_residual);
9669 _currently_computing_residual = currently_computing_residual;
9670}

Referenced by FEProblemBase::computeResidualAndJacobian(), NonlinearSystemBase::computeResidualTags(), and FEProblemBase::resetState().

◆ setCurrentlyComputingResidualAndJacobian()

void SubProblem::setCurrentlyComputingResidualAndJacobian ( bool  currently_computing_residual_and_jacobian)
inlineinherited

Set whether or not the problem is in the process of computing the Jacobian.

Definition at line 1511 of file SubProblem.h.

1513{
1514 _currently_computing_residual_and_jacobian = currently_computing_residual_and_jacobian;
1515}

Referenced by FEProblemBase::computeResidualAndJacobian(), and FEProblemBase::resetState().

◆ setCurrentNonlinearSystem()

void FEProblemBase::setCurrentNonlinearSystem ( const unsigned int  nl_sys_num)
inherited

◆ setCurrentResidualVectorTags()

void FEProblemBase::setCurrentResidualVectorTags ( const std::set< TagID > &  vector_tags)
inlineinherited

Set the current residual vector tag data structure based on the passed in tag IDs.

Definition at line 3878 of file FEProblemBase.h.

3879{
3881}

Referenced by FEProblemBase::computeResidualAndJacobian(), FEProblemBase::computeResidualTags(), and CrankNicolson::init().

◆ setCurrentSubdomainID()

void FEProblemBase::setCurrentSubdomainID ( const Elem elem,
const THREAD_ID  tid 
)
overridevirtualinherited

◆ setErrorOnJacobianNonzeroReallocation()

void FEProblemBase::setErrorOnJacobianNonzeroReallocation ( bool  state)
inlineinherited

Definition at line 2371 of file FEProblemBase.h.

2372 {
2374 }

◆ setException()

void FEProblemBase::setException ( const std::string &  message)
virtualinherited

Set an exception, which is stored at this point by toggling a member variable in this class, and which must be followed up with by a call to checkExceptionAndStopSolve().

Parameters
messageThe error message describing the exception, which will get printed when checkExceptionAndStopSolve() is called

Definition at line 6999 of file FEProblemBase.C.

7000{
7001 _has_exception = true;
7002 _exception_message = message;
7003}

Referenced by ComputeThreadedGeneralUserObjectsThread::caughtMooseException(), ThreadedFaceLoop< RangeType >::caughtMooseException(), ThreadedNodeLoop< RangeType, IteratorType >::caughtMooseException(), NonlinearSystemBase::computeDamping(), AuxiliarySystem::computeElementalVarsHelper(), AuxiliarySystem::computeMortarNodalVars(), FEProblemBase::handleException(), ComputeMortarFunctor::operator()(), and DisplacedProblem::updateMesh().

◆ setExecutionPrinting()

void FEProblemBase::setExecutionPrinting ( const ExecFlagEnum print_exec)
inlineinherited

Definition at line 2915 of file FEProblemBase.h.

2915{ _print_execution_on = print_exec; }
ExecFlagEnum _print_execution_on
When to print the execution of loops.

◆ setFailNextNonlinearConvergenceCheck()

void FEProblemBase::setFailNextNonlinearConvergenceCheck ( )
inlineinherited

Skip further residual evaluations and fail the next nonlinear convergence check(s)

Definition at line 2902 of file FEProblemBase.h.

void setFailNextSystemConvergenceCheck()
Tell the problem that the system(s) cannot be considered converged next time convergence is checked.

Referenced by Terminator::execute().

◆ setFailNextSystemConvergenceCheck()

void FEProblemBase::setFailNextSystemConvergenceCheck ( )
inlineinherited

Tell the problem that the system(s) cannot be considered converged next time convergence is checked.

Definition at line 2904 of file FEProblemBase.h.

Referenced by FEProblemBase::setFailNextNonlinearConvergenceCheck().

◆ setFunctorOutput()

void SubProblem::setFunctorOutput ( bool  set_output)
inlineinherited

Setter for debug functor output.

Definition at line 932 of file SubProblem.h.

932{ _show_functors = set_output; }
bool _show_functors
Whether to output a list of the functors used and requested (currently only at initialSetup)

◆ setIgnoreZerosInJacobian()

void FEProblemBase::setIgnoreZerosInJacobian ( bool  state)
inlineinherited

Set whether the zeros in the Jacobian should be dropped from the sparsity pattern.

Definition at line 2394 of file FEProblemBase.h.

2394{ _ignore_zeros_in_jacobian = state; }

◆ setInputParametersFEProblem()

virtual void FEProblemBase::setInputParametersFEProblem ( InputParameters parameters)
inlinevirtualinherited

Reimplemented in FEProblem.

Definition at line 1024 of file FEProblemBase.h.

1025 {
1026 parameters.set<FEProblemBase *>("_fe_problem_base") = this;
1027 }

Referenced by FEProblem::setInputParametersFEProblem().

◆ setKernelCoverageCheck() [1/2]

void FEProblemBase::setKernelCoverageCheck ( bool  flag)
inlineinherited

Set flag to indicate whether kernel coverage checks should be performed.

This check makes sure that at least one kernel is active on all subdomains in the domain (default: true).

Definition at line 2215 of file FEProblemBase.h.

◆ setKernelCoverageCheck() [2/2]

void FEProblemBase::setKernelCoverageCheck ( CoverageCheckMode  mode)
inlineinherited

Set flag to indicate whether kernel coverage checks should be performed.

This check makes sure that at least one kernel is active on all subdomains in the domain (default: true).

Definition at line 2209 of file FEProblemBase.h.

2209{ _kernel_coverage_check = mode; }

◆ setLinearConvergenceNames()

void FEProblemBase::setLinearConvergenceNames ( const std::vector< ConvergenceName > &  convergence_names)
inherited

Sets the linear convergence object name(s) if there is one.

Definition at line 9829 of file FEProblemBase.C.

9830{
9831 if (convergence_names.size() != numLinearSystems())
9832 paramError("linear_convergence", "There must be one convergence object per linear system");
9833 _linear_convergence_names = convergence_names;
9834}

Referenced by FEProblemSolve::FEProblemSolve().

◆ setMaterialCoverageCheck() [1/2]

void FEProblemBase::setMaterialCoverageCheck ( bool  flag)
inlineinherited

Set flag to indicate whether material coverage checks should be performed.

This check makes sure that at least one material is active on all subdomains in the domain if any material is supplied. If no materials are supplied anywhere, a simulation is still considered OK as long as no properties are being requested anywhere.

Definition at line 2234 of file FEProblemBase.h.

◆ setMaterialCoverageCheck() [2/2]

void FEProblemBase::setMaterialCoverageCheck ( CoverageCheckMode  mode)
inlineinherited

Set flag to indicate whether material coverage checks should be performed.

This check makes sure that at least one material is active on all subdomains in the domain if any material is supplied. If no materials are supplied anywhere, a simulation is still considered OK as long as no properties are being requested anywhere.

Definition at line 2226 of file FEProblemBase.h.

2226{ _material_coverage_check = mode; }

◆ setMultiAppFixedPointConvergenceName()

void FEProblemBase::setMultiAppFixedPointConvergenceName ( const ConvergenceName &  convergence_name)
inherited

Sets the MultiApp fixed point convergence object name if there is one.

Definition at line 9801 of file FEProblemBase.C.

9802{
9803 _multiapp_fixed_point_convergence_name = convergence_name;
9804}

Referenced by FixedPointSolve::FixedPointSolve().

◆ setNeedToAddDefaultMultiAppFixedPointConvergence()

void FEProblemBase::setNeedToAddDefaultMultiAppFixedPointConvergence ( )
inlineinherited

Sets _need_to_add_default_multiapp_fixed_point_convergence to true.

Definition at line 761 of file FEProblemBase.h.

Referenced by FixedPointSolve::FixedPointSolve().

◆ setNeedToAddDefaultNonlinearConvergence()

void FEProblemBase::setNeedToAddDefaultNonlinearConvergence ( )
inlineinherited

Sets _need_to_add_default_nonlinear_convergence to true.

Definition at line 756 of file FEProblemBase.h.

Referenced by FEProblemSolve::FEProblemSolve().

◆ setNeedToAddDefaultSteadyStateConvergence()

void FEProblemBase::setNeedToAddDefaultSteadyStateConvergence ( )
inlineinherited

Sets _need_to_add_default_steady_state_convergence to true.

Definition at line 766 of file FEProblemBase.h.

Referenced by TransientBase::TransientBase().

◆ setNeighborSubdomainID() [1/2]

void FEProblemBase::setNeighborSubdomainID ( const Elem elem,
const THREAD_ID  tid 
)
virtualinherited

Definition at line 1926 of file FEProblemBase.C.

1927{
1928 SubdomainID did = elem->subdomain_id();
1929 for (const auto i : index_range(_nl))
1930 {
1931 _assembly[tid][i]->setCurrentNeighborSubdomainID(did);
1932 if (_displaced_problem &&
1934 _displaced_problem->assembly(tid, i).setCurrentNeighborSubdomainID(did);
1935 }
1936}

◆ setNeighborSubdomainID() [2/2]

void FEProblemBase::setNeighborSubdomainID ( const Elem elem,
unsigned int  side,
const THREAD_ID  tid 
)
overridevirtualinherited

Implements SubProblem.

Definition at line 1913 of file FEProblemBase.C.

1914{
1915 SubdomainID did = elem->neighbor_ptr(side)->subdomain_id();
1916 for (const auto i : index_range(_nl))
1917 {
1918 _assembly[tid][i]->setCurrentNeighborSubdomainID(did);
1919 if (_displaced_problem &&
1921 _displaced_problem->assembly(tid, i).setCurrentNeighborSubdomainID(did);
1922 }
1923}

Referenced by NonlinearSystemBase::constraintJacobians(), NonlinearSystemBase::constraintResiduals(), FEProblemBase::reinitNeighbor(), and NonlinearSystemBase::reinitNodeFace().

◆ setNonlinearConvergenceNames()

void FEProblemBase::setNonlinearConvergenceNames ( const std::vector< ConvergenceName > &  convergence_names)
inherited

Sets the nonlinear convergence object name(s) if there is one.

Definition at line 9792 of file FEProblemBase.C.

9793{
9794 if (convergence_names.size() != numNonlinearSystems())
9795 paramError("nonlinear_convergence",
9796 "There must be one convergence object per nonlinear system");
9797 _nonlinear_convergence_names = convergence_names;
9798}

Referenced by FEProblemSolve::FEProblemSolve().

◆ setNonlocalCouplingMatrix()

void FEProblemBase::setNonlocalCouplingMatrix ( )
inherited

Set custom coupling matrix for variables requiring nonlocal contribution.

Definition at line 6666 of file FEProblemBase.C.

6667{
6668 TIME_SECTION("setNonlocalCouplingMatrix", 5, "Setting Nonlocal Coupling Matrix");
6669
6670 if (_nl.size() > 1)
6671 mooseError("Nonlocal kernels are weirdly stored on the FEProblem so we don't currently support "
6672 "multiple nonlinear systems with nonlocal kernels.");
6673
6674 for (const auto nl_sys_num : index_range(_nl))
6675 {
6676 auto & nl = _nl[nl_sys_num];
6677 auto & nonlocal_cm = _nonlocal_cm[nl_sys_num];
6678 unsigned int n_vars = nl->nVariables();
6679 nonlocal_cm.resize(n_vars);
6680 const auto & vars = nl->getVariables(0);
6681 const auto & nonlocal_kernel = _nonlocal_kernels.getObjects();
6682 const auto & nonlocal_integrated_bc = _nonlocal_integrated_bcs.getObjects();
6683 for (const auto & ivar : vars)
6684 {
6685 for (const auto & kernel : nonlocal_kernel)
6686 {
6687 for (unsigned int i = ivar->number(); i < ivar->number() + ivar->count(); ++i)
6688 if (i == kernel->variable().number())
6689 for (const auto & jvar : vars)
6690 {
6691 const auto it = _var_dof_map.find(jvar->name());
6692 if (it != _var_dof_map.end())
6693 {
6694 unsigned int j = jvar->number();
6695 nonlocal_cm(i, j) = 1;
6696 }
6697 }
6698 }
6699 for (const auto & integrated_bc : nonlocal_integrated_bc)
6700 {
6701 for (unsigned int i = ivar->number(); i < ivar->number() + ivar->count(); ++i)
6702 if (i == integrated_bc->variable().number())
6703 for (const auto & jvar : vars)
6704 {
6705 const auto it = _var_dof_map.find(jvar->name());
6706 if (it != _var_dof_map.end())
6707 {
6708 unsigned int j = jvar->number();
6709 nonlocal_cm(i, j) = 1;
6710 }
6711 }
6712 }
6713 }
6714 }
6715}
std::map< std::string, std::vector< dof_id_type > > _var_dof_map
Definition SubProblem.h:682

◆ setParallelBarrierMessaging()

void FEProblemBase::setParallelBarrierMessaging ( bool  flag)
inlineinherited

Toggle parallel barrier messaging (defaults to on).

Definition at line 2242 of file FEProblemBase.h.

◆ setPostprocessorValueByName()

void FEProblemBase::setPostprocessorValueByName ( const PostprocessorName &  name,
const PostprocessorValue value,
std::size_t  t_index = 0 
)
inherited

Set the value of a PostprocessorValue.

Parameters
nameThe name of the post-processor
t_indexFlag for getting current (0), old (1), or older (2) values
Returns
The reference to the value at the given time index

Note: This method is only for setting values that already exist, the Postprocessor and PostprocessorInterface objects should be used rather than this method for creating and getting values within objects.

WARNING! This method should be used with caution. It exists to allow Transfers and other similar objects to modify Postprocessor values. It is not intended for general use.

Definition at line 4904 of file FEProblemBase.C.

4907{
4910}
void setReporterValue(const ReporterName &reporter_name, const T &value, const std::size_t time_index=0)
Method for setting Reporter values that already exist.

Referenced by PIDTransientControl::execute(), MultiAppPostprocessorTransfer::execute(), MFEMProblem::executeMFEMObjects(), PIDTransientControl::initialSetup(), FEProblemBase::joinAndFinalize(), PIDTransientControl::timestepSetup(), PicardSolve::transformPostprocessors(), SecantSolve::transformPostprocessors(), and SteffensenSolve::transformPostprocessors().

◆ setPreserveMatrixSparsityPattern()

void FEProblemBase::setPreserveMatrixSparsityPattern ( bool  preserve)
inherited

Set whether the sparsity pattern of the matrices being formed during the solve (usually the Jacobian) should be preserved.

This global setting can be retrieved by kernels, notably those using AD, to decide whether to take additional care to preserve the sparsity pattern

Definition at line 4084 of file FEProblemBase.C.

4085{
4086 if (_ignore_zeros_in_jacobian && preserve)
4088 "ignore_zeros_in_jacobian",
4089 "We likely cannot preserve the sparsity pattern if ignoring zeros in the Jacobian, which "
4090 "leads to removing those entries from the Jacobian sparsity pattern");
4092}
void paramWarning(const std::string &param, Args... args) const

◆ setResidual() [1/2]

virtual void SubProblem::setResidual ( libMesh::NumericVector< libMesh::Number > &  residual,
const THREAD_ID  tid 
)
pure virtualinherited

◆ setResidual() [2/2]

void FEProblemBase::setResidual ( NumericVector< libMesh::Number > &  residual,
const THREAD_ID  tid 
)
overridevirtualinherited

Definition at line 2059 of file FEProblemBase.C.

2060{
2061 _assembly[tid][_current_nl_sys->number()]->setResidual(
2062 residual,
2064 getVectorTag(_nl[_current_nl_sys->number()]->residualVectorTag()));
2066 _displaced_problem->setResidual(residual, tid);
2067}

Referenced by NonlinearSystemBase::constraintResiduals().

◆ setResidualNeighbor() [1/2]

virtual void SubProblem::setResidualNeighbor ( libMesh::NumericVector< libMesh::Number > &  residual,
const THREAD_ID  tid 
)
pure virtualinherited

◆ setResidualNeighbor() [2/2]

void FEProblemBase::setResidualNeighbor ( NumericVector< libMesh::Number > &  residual,
const THREAD_ID  tid 
)
overridevirtualinherited

Definition at line 2070 of file FEProblemBase.C.

2071{
2072 _assembly[tid][_current_nl_sys->number()]->setResidualNeighbor(
2075 _displaced_problem->setResidualNeighbor(residual, tid);
2076}

◆ setResidualObjectParamsAndLog()

void FEProblemBase::setResidualObjectParamsAndLog ( const std::string &  ro_name,
const std::string &  name,
InputParameters parameters,
const unsigned int  nl_sys_num,
const std::string &  base_name,
bool &  reinit_displaced 
)
privateinherited

Set the subproblem and system parameters for residual objects and log their addition.

Parameters
ro_nameThe type of the residual object
nameThe name of the residual object
parametersThe residual object parameters
nl_sys_numThe nonlinear system that the residual object belongs to
base_nameThe base type of the residual object, e.g. Kernel, BoundaryCondition, etc.
reinit_displacedA data member indicating whether a geometric concept should be reinit'd for the displaced problem. Examples of valid data members to pass in are _reinit_displaced_elem and _reinit_displaced_face

Definition at line 3095 of file FEProblemBase.C.

3101{
3102 if (_displaced_problem && parameters.get<bool>("use_displaced_mesh"))
3103 {
3104 parameters.set<SubProblem *>("_subproblem") = _displaced_problem.get();
3105 parameters.set<SystemBase *>("_sys") = &_displaced_problem->solverSys(nl_sys_num);
3106 reinit_displaced = true;
3107 }
3108 else
3109 {
3110 if (_displaced_problem == nullptr && parameters.get<bool>("use_displaced_mesh"))
3111 {
3112 // We allow Kernels to request that they use_displaced_mesh,
3113 // but then be overridden when no displacements variables are
3114 // provided in the Mesh block. If that happened, update the value
3115 // of use_displaced_mesh appropriately for this Kernel.
3116 if (parameters.have_parameter<bool>("use_displaced_mesh"))
3117 parameters.set<bool>("use_displaced_mesh") = false;
3118 }
3119
3120 parameters.set<SubProblem *>("_subproblem") = this;
3121 parameters.set<SystemBase *>("_sys") = _nl[nl_sys_num].get();
3122 }
3123
3124 logAdd(base_name, name, ro_name, parameters);
3125}

Referenced by FEProblemBase::addBoundaryCondition(), FEProblemBase::addHDGKernel(), and FEProblemBase::addKernel().

◆ setRestartFile()

void FEProblemBase::setRestartFile ( const std::string &  file_name)
inherited

Communicate to the Resurector the name of the restart filer.

Parameters
file_nameThe file name for restarting from

Definition at line 9268 of file FEProblemBase.C.

9269{
9270 if (_app.isRecovering())
9271 {
9272 mooseInfo("Restart file ", file_name, " is NOT being used since we are performing recovery.");
9273 }
9274 else
9275 {
9276 _app.setRestart(true);
9278 mooseInfo("Using ", file_name, " for restart.");
9279 }
9280}
void mooseInfo(Args &&... args)
Emit an informational message with the given stringified, concatenated args.
Definition MooseError.h:401
void setRestart(bool value)
Sets the restart/recover flags.
Definition MooseApp.C:2879
void setRestartRecoverFileBase(const std::string &file_base)
mutator for recover_base (set by RecoverBaseAction)
Definition MooseApp.h:512

Referenced by Executioner::Executioner(), Executioner::Executioner(), and FEProblemBase::FEProblemBase().

◆ setSNESMFReuseBase()

void FEProblemBase::setSNESMFReuseBase ( bool  reuse,
bool  set_by_user 
)
inlineinherited

If or not to reuse the base vector for matrix-free calculation.

Definition at line 2595 of file FEProblemBase.h.

2596 {
2598 }
bool _snesmf_reuse_base
If or not to resuse the base vector for matrix-free calculation.

Referenced by FEProblemSolve::FEProblemSolve().

◆ setSteadyStateConvergenceName()

void FEProblemBase::setSteadyStateConvergenceName ( const ConvergenceName &  convergence_name)
inherited

Sets the steady-state detection convergence object name if there is one.

Definition at line 9807 of file FEProblemBase.C.

9808{
9809 _steady_state_convergence_name = convergence_name;
9810}

Referenced by TransientBase::TransientBase().

◆ setUDotDotOldRequested()

virtual void FEProblemBase::setUDotDotOldRequested ( const bool  u_dotdot_old_requested)
inlinevirtualinherited

Set boolean flag to true to store old solution second time derivative.

Definition at line 2643 of file FEProblemBase.h.

2644 {
2645 _u_dotdot_old_requested = u_dotdot_old_requested;
2646 }
bool _u_dotdot_old_requested
Whether old solution second time derivative needs to be stored.

Referenced by CentralDifference::CentralDifference(), and NewmarkBeta::NewmarkBeta().

◆ setUDotDotRequested()

virtual void FEProblemBase::setUDotDotRequested ( const bool  u_dotdot_requested)
inlinevirtualinherited

Set boolean flag to true to store solution second time derivative.

Definition at line 2631 of file FEProblemBase.h.

2632 {
2633 _u_dotdot_requested = u_dotdot_requested;
2634 }
bool _u_dotdot_requested
Whether solution second time derivative needs to be stored.

Referenced by CentralDifference::CentralDifference(), and NewmarkBeta::NewmarkBeta().

◆ setUDotOldRequested()

virtual void FEProblemBase::setUDotOldRequested ( const bool  u_dot_old_requested)
inlinevirtualinherited

Set boolean flag to true to store old solution time derivative.

Definition at line 2637 of file FEProblemBase.h.

2638 {
2639 _u_dot_old_requested = u_dot_old_requested;
2640 }
bool _u_dot_old_requested
Whether old solution time derivative needs to be stored.

Referenced by CentralDifference::CentralDifference(), and NewmarkBeta::NewmarkBeta().

◆ setUDotRequested()

virtual void FEProblemBase::setUDotRequested ( const bool  u_dot_requested)
inlinevirtualinherited

Set boolean flag to true to store solution time derivative.

Definition at line 2628 of file FEProblemBase.h.

2628{ _u_dot_requested = u_dot_requested; }
bool _u_dot_requested
Whether solution time derivative needs to be stored.

Referenced by TimeIntegrator::TimeIntegrator().

◆ setupDampers()

void FEProblemBase::setupDampers ( )
inherited

Definition at line 5723 of file FEProblemBase.C.

5724{
5725 for (auto & nl : _nl)
5726 nl->setupDampers();
5727}

◆ setVariableAllDoFMap()

void FEProblemBase::setVariableAllDoFMap ( const std::vector< const MooseVariableFEBase * > &  moose_vars)
inherited

Definition at line 1808 of file FEProblemBase.C.

1809{
1810 for (unsigned int i = 0; i < moose_vars.size(); ++i)
1811 {
1812 VariableName var_name = moose_vars[i]->name();
1813 auto & sys = _solver_systems[moose_vars[i]->sys().number()];
1814 sys->setVariableGlobalDoFs(var_name);
1815 _var_dof_map[var_name] = sys->getVariableGlobalDoFs();
1816 }
1817}

Referenced by FEProblemBase::meshChanged().

◆ setVectorPostprocessorValueByName()

void FEProblemBase::setVectorPostprocessorValueByName ( const std::string &  object_name,
const std::string &  vector_name,
const VectorPostprocessorValue value,
std::size_t  t_index = 0 
)
inherited

Set the value of a VectorPostprocessor vector.

Parameters
object_nameThe name of the VPP object
vector_nameThe name of the declared vector
valueThe data to apply to the vector
t_indexFlag for getting current (0), old (1), or older (2) values

Definition at line 4930 of file FEProblemBase.C.

4934{
4936 VectorPostprocessorReporterName(object_name, vector_name), value, t_index);
4937}

◆ setVerboseProblem()

void FEProblemBase::setVerboseProblem ( bool  verbose)
inherited

Make the problem be verbose.

Definition at line 9977 of file FEProblemBase.C.

9978{
9979 _verbose_setup = verbose ? "true" : "false";
9980 _verbose_multiapps = verbose;
9981 _verbose_restore = verbose;
9982}

Referenced by PhysicsBase::initializePhysics().

◆ shouldPrintExecution()

bool FEProblemBase::shouldPrintExecution ( const THREAD_ID  tid) const
inherited

Check whether the problem should output execution orders at this time.

Definition at line 9919 of file FEProblemBase.C.

9920{
9921 // For now, only support printing from thread 0
9922 if (tid != 0)
9923 return false;
9924
9927 return true;
9928 else
9929 return false;
9930}
const ExecFlagType EXEC_ALWAYS
Definition Moose.C:53

Referenced by FEProblemBase::joinAndFinalize(), ComputeLinearFVElementalThread::printBlockExecutionInformation(), ComputeLinearFVFaceThread::printBlockExecutionInformation(), ComputeDiracThread::printBlockExecutionInformation(), ComputeIndicatorThread::printBlockExecutionInformation(), ComputeMarkerThread::printBlockExecutionInformation(), ComputeUserObjectsThread::printBlockExecutionInformation(), NonlinearThread::printBlockExecutionInformation(), NonlinearThread::printBoundaryExecutionInformation(), ComputeFVInitialConditionThread::printGeneralExecutionInformation(), ComputeInitialConditionThread::printGeneralExecutionInformation(), ComputeLinearFVElementalThread::printGeneralExecutionInformation(), ComputeLinearFVFaceThread::printGeneralExecutionInformation(), ComputeDiracThread::printGeneralExecutionInformation(), ComputeElemDampingThread::printGeneralExecutionInformation(), ComputeIndicatorThread::printGeneralExecutionInformation(), ComputeMarkerThread::printGeneralExecutionInformation(), ComputeNodalDampingThread::printGeneralExecutionInformation(), ComputeNodalKernelBCJacobiansThread::printGeneralExecutionInformation(), ComputeNodalKernelBcsThread::printGeneralExecutionInformation(), ComputeNodalKernelJacobiansThread::printGeneralExecutionInformation(), ComputeNodalKernelsThread::printGeneralExecutionInformation(), ComputeNodalUserObjectsThread::printGeneralExecutionInformation(), ComputeUserObjectsThread::printGeneralExecutionInformation(), NonlinearThread::printGeneralExecutionInformation(), and ComputeThreadedGeneralUserObjectsThread::printGeneralExecutionInformation().

◆ shouldSolve()

bool FEProblemBase::shouldSolve ( ) const
inlineinherited

Definition at line 2679 of file FEProblemBase.h.

2679{ return _solve; }

Referenced by FEProblemSolve::solve(), MFEMProblemSolve::solve(), solve(), and TransientBase::TransientBase().

◆ shouldUpdateSolution()

bool FEProblemBase::shouldUpdateSolution ( )
virtualinherited

Check to see whether the problem should update the solution.

Returns
true if the problem should update the solution, false otherwise

Definition at line 8371 of file FEProblemBase.C.

8372{
8373 return false;
8374}

Referenced by FEProblemBase::computePostCheck(), and NonlinearSystem::solve().

◆ showFunctorRequestors()

void SubProblem::showFunctorRequestors ( ) const
privateinherited

Lists all functors and all the objects that requested them.

Definition at line 1264 of file SubProblem.C.

1265{
1266 for (const auto & [functor, requestors] : _functor_to_requestors)
1267 {
1268 _console << "[DBG] Requestors for wrapped functor "
1269 << std::regex_replace(functor, std::regex("wraps_"), "") << std::endl;
1270 _console << "[DBG] " << MooseUtils::join(requestors, " ") << std::endl;
1271 }
1272}

Referenced by SubProblem::initialSetup().

◆ showFunctors()

void SubProblem::showFunctors ( ) const
privateinherited

Lists all functors in the problem.

Definition at line 1252 of file SubProblem.C.

1253{
1254 _console << "[DBG] Wrapped functors found in Subproblem" << std::endl;
1255 std::string functor_names = "[DBG] ";
1256 for (const auto & functor_pair : _functors[0])
1257 functor_names += std::regex_replace(functor_pair.first, std::regex("wraps_"), "") + " ";
1258 if (functor_names.size())
1259 functor_names.pop_back();
1260 _console << functor_names << std::endl;
1261}

Referenced by SubProblem::initialSetup().

◆ showInvalidSolutionConsole()

bool FEProblemBase::showInvalidSolutionConsole ( ) const
inlineinherited

Whether or not to print out the invalid solutions summary table in console.

Definition at line 2411 of file FEProblemBase.h.

const bool _show_invalid_solution_console

Referenced by SolverSystem::checkInvalidSolution().

◆ sideUOInterfaceMatPropIntegrityCheck()

bool FEProblemBase::sideUOInterfaceMatPropIntegrityCheck ( ) const
inlineinherited
Returns
whether to perform an integrity check for side user objects consuming interface material properties

Definition at line 2762 of file FEProblemBase.h.

2763 {
2765 }
const bool _side_uo_interface_mat_prop_integrity_check
Whether to check that side user objects do not consume interface material properties.

Referenced by SideUserObject::initialSetup().

◆ sizeZeroes()

void FEProblemBase::sizeZeroes ( unsigned int  size,
const THREAD_ID  tid 
)
virtualinherited

Definition at line 2261 of file FEProblemBase.C.

2262{
2263 mooseDoOnce(mooseWarning(
2264 "This function is deprecated and no longer performs any function. Please do not call it."));
2265}

◆ skipExceptionCheck()

void FEProblemBase::skipExceptionCheck ( bool  skip_exception_check)
inlineinherited

Set a flag that indicates if we want to skip exception and stop solve.

Definition at line 2608 of file FEProblemBase.h.

2609 {
2610 _skip_exception_check = skip_exception_check;
2611 }

Referenced by FEProblemSolve::FEProblemSolve().

◆ skipNextForwardSolutionCopyToOld()

void FEProblemBase::skipNextForwardSolutionCopyToOld ( )
inherited

Prevents the copy of the solution vector to the old solution vector in each system.

Old -> Older is still performed This is useful for MultiApps fixed point iterations

Definition at line 7178 of file FEProblemBase.C.

7179{
7180 for (auto & sys : _solver_systems)
7181 sys->skipNextSolutionToOldCopy();
7182 _aux->skipNextSolutionToOldCopy();
7183}

Referenced by FullSolveMultiApp::solveStep().

◆ solve()

void ExternalProblem::solve ( unsigned int  nl_sys_num = 0)
finaloverridevirtual

Solve is implemented to providing syncing to/from the "transfer" mesh.

Reimplemented from FEProblemBase.

Definition at line 64 of file ExternalProblem.C.

65{
66 TIME_SECTION("solve", 1, "Solving", false)
67
69 if (shouldSolve())
72}
if(!dmm->_nl) SETERRQ(PETSC_COMM_WORLD
virtual void syncSolutions(Direction direction)=0
Method to transfer data to/from the external application to the associated transfer mesh.
virtual void externalSolve()=0
New interface for solving an External problem.
bool shouldSolve() const

◆ solveLinearSystem()

void FEProblemBase::solveLinearSystem ( const unsigned int  linear_sys_num,
const Moose::PetscSupport::PetscOptions po = nullptr 
)
virtualinherited

Build and solve a linear system.

Parameters
linear_sys_numThe number of the linear system (1,..,num. of lin. systems)
poThe petsc options for the solve, if not supplied, the defaults are used

Reimplemented in DumpObjectsProblem.

Definition at line 7095 of file FEProblemBase.C.

7097{
7098 TIME_SECTION("solve", 1, "Solving", false);
7099
7100 setCurrentLinearSystem(linear_sys_num);
7101
7102 const Moose::PetscSupport::PetscOptions & options = po ? *po : _petsc_options;
7103 auto & solver_params = _solver_params[numNonlinearSystems() + linear_sys_num];
7104
7105 // Set custom convergence criteria
7107
7108#if PETSC_RELEASE_LESS_THAN(3, 12, 0)
7109 LibmeshPetscCall(Moose::PetscSupport::petscSetOptions(
7110 options, solver_params)); // Make sure the PETSc options are setup for this app
7111#else
7112 // Now this database will be the default
7113 // Each app should have only one database
7114 if (!_app.isUltimateMaster())
7115 LibmeshPetscCall(PetscOptionsPush(_petsc_option_data_base));
7116
7117 // We did not add PETSc options to database yet
7119 {
7120 Moose::PetscSupport::petscSetOptions(options, solver_params, this);
7122 }
7123#endif
7124
7125 if (_solve)
7127
7128#if !PETSC_RELEASE_LESS_THAN(3, 12, 0)
7129 if (!_app.isUltimateMaster())
7130 LibmeshPetscCall(PetscOptionsPop());
7131#endif
7132}
std::vector< SolverParams > _solver_params
virtual void solve() override
Solve the system (using libMesh magic)
A struct for storing the various types of petsc options and values.
void petscSetOptions(const PetscOptions &po, const SolverParams &solver_params, FEProblemBase *const problem=nullptr)
A function for setting the PETSc options in PETSc from the options supplied to MOOSE.

Referenced by FEProblemSolve::solve().

◆ solverParams() [1/2]

SolverParams & FEProblemBase::solverParams ( unsigned int  solver_sys_num = 0)
inherited

Get the solver parameters.

Definition at line 9300 of file FEProblemBase.C.

9301{
9302 mooseAssert(solver_sys_num < numSolverSystems(),
9303 "Solver system number '" << solver_sys_num << "' is out of bounds. We have '"
9304 << numSolverSystems() << "' solver systems");
9305 return _solver_params[solver_sys_num];
9306}
virtual std::size_t numSolverSystems() const override

Referenced by NonlinearEigenSystem::attachPreconditioner(), SolverSystem::compute(), SlepcEigenSolverConfiguration::configure_solver(), EigenProblemSolve::EigenProblemSolve(), ExplicitTimeIntegrator::ExplicitTimeIntegrator(), FEProblemSolve::FEProblemSolve(), EigenProblem::init(), FEProblemBase::init(), ExplicitTimeIntegrator::init(), EigenProblemSolve::initialSetup(), EigenProblem::isNonlinearEigenvalueSolver(), Moose::SlepcSupport::mooseSlepcEigenFormFunctionA(), Moose::SlepcSupport::mooseSlepcEigenFormFunctionAB(), Moose::SlepcSupport::mooseSlepcEigenFormFunctionB(), Moose::SlepcSupport::mooseSlepcEigenFormJacobianA(), MooseStaticCondensationPreconditioner::MooseStaticCondensationPreconditioner(), ConsoleUtils::outputExecutionInformation(), PhysicsBasedPreconditioner::PhysicsBasedPreconditioner(), NonlinearSystem::residualAndJacobianTogether(), Moose::SlepcSupport::setEigenProblemSolverParams(), Moose::PetscSupport::setLineSearchFromParams(), Moose::PetscSupport::setMFFDTypeFromParams(), Moose::PetscSupport::setSinglePetscOption(), Moose::PetscSupport::setSolveTypeFromParams(), NonlinearSystemBase::shouldEvaluatePreSMOResidual(), EigenProblem::solve(), FEProblemBase::solverParams(), FEProblemBase::solverTypeString(), EigenProblem::solverTypeString(), and Moose::SlepcSupport::storeSolveType().

◆ solverParams() [2/2]

const SolverParams & FEProblemBase::solverParams ( unsigned int  solver_sys_num = 0) const
inherited

const version

Definition at line 9309 of file FEProblemBase.C.

9310{
9311 return const_cast<FEProblemBase *>(this)->solverParams(solver_sys_num);
9312}

◆ solverSysNum()

unsigned int FEProblemBase::solverSysNum ( const SolverSystemName &  solver_sys_name) const
overridevirtualinherited
Returns
the solver system number corresponding to the provided solver_sys_name

Implements SubProblem.

Definition at line 6902 of file FEProblemBase.C.

6903{
6904 std::istringstream ss(solver_sys_name);
6905 unsigned int solver_sys_num;
6906 if (!(ss >> solver_sys_num) || !ss.eof())
6907 {
6908 const auto & search = _solver_sys_name_to_num.find(solver_sys_name);
6909 if (search == _solver_sys_name_to_num.end())
6910 mooseError("The solver system number was requested for system '" + solver_sys_name,
6911 "' but this system does not exist in the Problem. Systems can be added to the "
6912 "problem using the 'nl_sys_names'/'linear_sys_names' parameter.\nSystems in the "
6913 "Problem: " +
6915 solver_sys_num = search->second;
6916 }
6917
6918 return solver_sys_num;
6919}
std::map< SolverSystemName, unsigned int > _solver_sys_name_to_num
Map connecting solver system names with their respective systems.

Referenced by FEProblemBase::addVariable(), FEProblemBase::getSystemBase(), PhysicsBase::initializePhysics(), MultiSystemSolveObject::MultiSystemSolveObject(), and DisplacedProblem::solverSysNum().

◆ solverSystemConverged()

bool FEProblemBase::solverSystemConverged ( const unsigned int  sys_num)
overridevirtualinherited
Returns
whether the given solver system sys_num is converged

Reimplemented from SubProblem.

Reimplemented in EigenProblem.

Definition at line 7135 of file FEProblemBase.C.

7136{
7137 if (_solve)
7138 return _solver_systems[sys_num]->converged();
7139 else
7140 return true;
7141}

◆ solverTypeString()

std::string FEProblemBase::solverTypeString ( unsigned int  solver_sys_num = 0)
virtualinherited

Return solver type as a human readable string.

Reimplemented in MFEMProblem, and EigenProblem.

Definition at line 10098 of file FEProblemBase.C.

10099{
10100 return Moose::stringify(solverParams(solver_sys_num)._type);
10101}

Referenced by ConsoleUtils::outputExecutionInformation().

◆ startedInitialSetup()

virtual bool FEProblemBase::startedInitialSetup ( )
inlinevirtualinherited

Returns true if we are in or beyond the initialSetup stage.

Definition at line 569 of file FEProblemBase.h.

569{ return _started_initial_setup; }

Referenced by MaterialBase::checkExecutionStage(), MaterialPropertyInterface::checkExecutionStage(), and NEML2ModelExecutor::checkExecutionStage().

◆ storeBoundaryDelayedCheckMatProp()

void SubProblem::storeBoundaryDelayedCheckMatProp ( const std::string &  requestor,
BoundaryID  boundary_id,
const std::string &  name 
)
virtualinherited

Adds to a map based on boundary ids of material properties to validate.

Parameters
requestorThe MOOSE object name requesting the material property
boundary_idThe block id for the MaterialProperty
nameThe name of the property

Definition at line 616 of file SubProblem.C.

619{
620 _map_boundary_material_props_check[boundary_id].insert(std::make_pair(requestor, name));
621}

Referenced by MaterialPropertyInterface::checkMaterialProperty().

◆ storeBoundaryMatPropName()

void SubProblem::storeBoundaryMatPropName ( BoundaryID  boundary_id,
const std::string &  name 
)
virtualinherited

Adds the given material property to a storage map based on boundary ids.

This is method is called from within the Material class when the property is first registered.

Parameters
boundary_idThe block id for the MaterialProperty
nameThe name of the property

Definition at line 590 of file SubProblem.C.

591{
592 _map_boundary_material_props[boundary_id].insert(name);
593}

Referenced by MaterialBase::registerPropName().

◆ storeBoundaryZeroMatProp()

void SubProblem::storeBoundaryZeroMatProp ( BoundaryID  boundary_id,
const MaterialPropertyName &  name 
)
virtualinherited

Adds to a map based on boundary ids of material properties for which a zero value can be returned.

Thes properties are optional and will not trigger a missing material property error.

Parameters
boundary_idThe block id for the MaterialProperty
nameThe name of the property

Definition at line 602 of file SubProblem.C.

603{
604 _zero_boundary_material_props[boundary_id].insert(name);
605}

Referenced by MaterialBase::storeBoundaryZeroMatProp().

◆ storeSubdomainDelayedCheckMatProp()

void SubProblem::storeSubdomainDelayedCheckMatProp ( const std::string &  requestor,
SubdomainID  block_id,
const std::string &  name 
)
virtualinherited

Adds to a map based on block ids of material properties to validate.

Parameters
block_idThe block id for the MaterialProperty
nameThe name of the property

Definition at line 608 of file SubProblem.C.

611{
612 _map_block_material_props_check[block_id].insert(std::make_pair(requestor, name));
613}

Referenced by MaterialPropertyInterface::checkMaterialProperty().

◆ storeSubdomainMatPropName()

void SubProblem::storeSubdomainMatPropName ( SubdomainID  block_id,
const std::string &  name 
)
virtualinherited

Adds the given material property to a storage map based on block ids.

This is method is called from within the Material class when the property is first registered.

Parameters
block_idThe block id for the MaterialProperty
nameThe name of the property

Definition at line 584 of file SubProblem.C.

585{
586 _map_block_material_props[block_id].insert(name);
587}

Referenced by MaterialBase::registerPropName().

◆ storeSubdomainZeroMatProp()

void SubProblem::storeSubdomainZeroMatProp ( SubdomainID  block_id,
const MaterialPropertyName &  name 
)
virtualinherited

Adds to a map based on block ids of material properties for which a zero value can be returned.

Thes properties are optional and will not trigger a missing material property error.

Parameters
block_idThe block id for the MaterialProperty
nameThe name of the property

Definition at line 596 of file SubProblem.C.

597{
598 _zero_block_material_props[block_id].insert(name);
599}

Referenced by MaterialBase::storeSubdomainZeroMatProp().

◆ subdomainSetup()

void FEProblemBase::subdomainSetup ( SubdomainID  subdomain,
const THREAD_ID  tid 
)
virtualinherited

Definition at line 2624 of file FEProblemBase.C.

2625{
2626 _all_materials.subdomainSetup(subdomain, tid);
2627 // Call the subdomain methods of the output system, these are not threaded so only call it once
2628 if (tid == 0)
2630
2631 for (auto & nl : _nl)
2632 nl->subdomainSetup(subdomain, tid);
2633
2634 // FIXME: call displaced_problem->subdomainSetup() ?
2635 // When adding possibility with materials being evaluated on displaced mesh
2636}
virtual void subdomainSetup(THREAD_ID tid=0) const override
void subdomainSetup()
Calls the subdomainSetup function for each of the output objects.

Referenced by ThreadedFaceLoop< RangeType >::subdomainChanged(), ComputeDiracThread::subdomainChanged(), ComputeIndicatorThread::subdomainChanged(), ComputeMarkerThread::subdomainChanged(), ComputeMaterialsObjectThread::subdomainChanged(), ComputeUserObjectsThread::subdomainChanged(), and NonlinearThread::subdomainChanged().

◆ subspaceDim()

unsigned int FEProblemBase::subspaceDim ( const std::string &  prefix) const
inlineinherited

Dimension of the subspace spanned by vectors with a given prefix.

Parameters
prefixPrefix of the vectors spanning the subspace.

Definition at line 2284 of file FEProblemBase.h.

2285 {
2286 if (_subspace_dim.count(prefix))
2287 return _subspace_dim.find(prefix)->second;
2288 else
2289 return 0;
2290 }

Referenced by FEProblemBase::computeNearNullSpace(), FEProblemBase::computeNullSpace(), and FEProblemBase::computeTransposeNullSpace().

◆ swapBackMaterials()

void FEProblemBase::swapBackMaterials ( const THREAD_ID  tid)
virtualinherited

Definition at line 4493 of file FEProblemBase.C.

4494{
4495 auto && elem = _assembly[tid][0]->elem();
4497}
void swapBack(const Elem &elem, unsigned int side=0)
material properties for given element (and possible side)

Referenced by NodalPatchRecovery::compute(), LineMaterialSamplerBase< T >::execute(), ComputeElemAuxVarsThread< AuxKernelType >::onElement(), ComputeIndicatorThread::onElement(), ComputeMarkerThread::onElement(), ComputeUserObjectsThread::onElement(), and NonlinearThread::onElement().

◆ swapBackMaterialsFace()

void FEProblemBase::swapBackMaterialsFace ( const THREAD_ID  tid)
virtualinherited

◆ swapBackMaterialsNeighbor()

void FEProblemBase::swapBackMaterialsNeighbor ( const THREAD_ID  tid)
virtualinherited

Definition at line 4508 of file FEProblemBase.C.

4509{
4510 // NOTE: this will not work with h-adaptivity
4511 const Elem * neighbor = _assembly[tid][0]->neighbor();
4512 unsigned int neighbor_side =
4513 neighbor ? neighbor->which_neighbor_am_i(_assembly[tid][0]->elem()) : libMesh::invalid_uint;
4514
4515 if (!neighbor)
4516 {
4517 if (haveFV())
4518 {
4519 // If neighbor is null, then we're on the neighbor side of a mesh boundary, e.g. we're off
4520 // the mesh in ghost-land. If we're using the finite volume method, then variable values and
4521 // consequently material properties have well-defined values in this ghost region outside of
4522 // the mesh and we really do want to reinit our neighbor materials in this case. Since we're
4523 // off in ghost land it's safe to do swaps with `MaterialPropertyStorage` using the elem and
4524 // elem_side keys
4525 neighbor = _assembly[tid][0]->elem();
4526 neighbor_side = _assembly[tid][0]->side();
4527 mooseAssert(neighbor, "We should have an appropriate value for elem coming from Assembly");
4528 }
4529 else
4530 mooseError("neighbor is null in Assembly!");
4531 }
4532
4533 _neighbor_material_props.getMaterialData(tid).swapBack(*neighbor, neighbor_side);
4534}

Referenced by ComputeUserObjectsThread::onInterface(), NonlinearThread::onInterface(), ComputeIndicatorThread::onInternalSide(), ComputeUserObjectsThread::onInternalSide(), NonlinearThread::onInternalSide(), and ComputeElemAuxBcsThread< AuxKernelType >::operator()().

◆ syncSolutions()

virtual void ExternalProblem::syncSolutions ( Direction  direction)
pure virtual

Method to transfer data to/from the external application to the associated transfer mesh.

Implemented in MFEMProblem.

Referenced by solve().

◆ systemBaseAuxiliary() [1/2]

const SystemBase & FEProblemBase::systemBaseAuxiliary ( ) const
overridevirtualinherited

Return the auxiliary system object as a base class reference.

Implements SubProblem.

Definition at line 9643 of file FEProblemBase.C.

9644{
9645 return *_aux;
9646}

Referenced by PhysicsBase::copyVariablesFromMesh(), and MFEMProblem::getAuxVariableNames().

◆ systemBaseAuxiliary() [2/2]

SystemBase & FEProblemBase::systemBaseAuxiliary ( )
overridevirtualinherited

Implements SubProblem.

Definition at line 9649 of file FEProblemBase.C.

9650{
9651 return *_aux;
9652}

◆ systemBaseLinear() [1/2]

const SystemBase & FEProblemBase::systemBaseLinear ( unsigned int  sys_num) const
overridevirtualinherited

Get a constant base class reference to a linear system.

Parameters
sys_numThe number of the linear system

Implements SubProblem.

Definition at line 9611 of file FEProblemBase.C.

9612{
9613 mooseAssert(sys_num < _linear_systems.size(),
9614 "System number greater than the number of linear systems");
9615 return *_linear_systems[sys_num];
9616}

◆ systemBaseLinear() [2/2]

SystemBase & FEProblemBase::systemBaseLinear ( unsigned int  sys_num)
overridevirtualinherited

Get a non-constant base class reference to a linear system.

Parameters
sys_numThe number of the linear system

Implements SubProblem.

Definition at line 9619 of file FEProblemBase.C.

9620{
9621 mooseAssert(sys_num < _linear_systems.size(),
9622 "System number greater than the number of linear systems");
9623 return *_linear_systems[sys_num];
9624}

◆ systemBaseNonlinear() [1/2]

const SystemBase & FEProblemBase::systemBaseNonlinear ( const unsigned int  sys_num) const
overridevirtualinherited

Return the nonlinear system object as a base class reference given the system number.

Implements SubProblem.

Definition at line 9597 of file FEProblemBase.C.

9598{
9599 mooseAssert(sys_num < _nl.size(), "System number greater than the number of nonlinear systems");
9600 return *_nl[sys_num];
9601}

◆ systemBaseNonlinear() [2/2]

SystemBase & FEProblemBase::systemBaseNonlinear ( const unsigned int  sys_num)
overridevirtualinherited

Implements SubProblem.

Definition at line 9604 of file FEProblemBase.C.

9605{
9606 mooseAssert(sys_num < _nl.size(), "System number greater than the number of nonlinear systems");
9607 return *_nl[sys_num];
9608}

◆ systemBaseSolver() [1/2]

const SystemBase & FEProblemBase::systemBaseSolver ( const unsigned int  sys_num) const
overridevirtualinherited

Return the solver system object as a base class reference given the system number.

Implements SubProblem.

Definition at line 9627 of file FEProblemBase.C.

9628{
9629 mooseAssert(sys_num < _solver_systems.size(),
9630 "System number greater than the number of solver systems");
9631 return *_solver_systems[sys_num];
9632}

◆ systemBaseSolver() [2/2]

SystemBase & FEProblemBase::systemBaseSolver ( const unsigned int  sys_num)
overridevirtualinherited

Implements SubProblem.

Definition at line 9635 of file FEProblemBase.C.

9636{
9637 mooseAssert(sys_num < _solver_systems.size(),
9638 "System number greater than the number of solver systems");
9639 return *_solver_systems[sys_num];
9640}

◆ systemNumForVariable()

unsigned int FEProblemBase::systemNumForVariable ( const VariableName &  variable_name) const
inherited
Returns
the system number for the provided variable_name Can be nonlinear or auxiliary

Definition at line 6922 of file FEProblemBase.C.

6923{
6924 for (const auto & solver_sys : _solver_systems)
6925 if (solver_sys->hasVariable(variable_name))
6926 return solver_sys->number();
6927 mooseAssert(_aux, "Should have an auxiliary system");
6928 if (_aux->hasVariable(variable_name))
6929 return _aux->number();
6930
6931 mooseError("Variable '",
6932 variable_name,
6933 "' was not found in any solver (nonlinear/linear) or auxiliary system");
6934}

Referenced by FEProblemBase::projectFunctionOnCustomRange(), and ElementSubdomainModifierBase::restoreOverriddenDofValues().

◆ terminateSolve()

virtual void Problem::terminateSolve ( )
inlinevirtualinherited

Allow objects to request clean termination of the solve.

Definition at line 37 of file Problem.h.

37{ _termination_requested = true; };

Referenced by Terminator::execute(), WebServerControl::execute(), and TerminateChainControl::terminate().

◆ theWarehouse()

TheWarehouse & FEProblemBase::theWarehouse ( ) const
inlineinherited

Definition at line 2590 of file FEProblemBase.h.

2590{ return _app.theWarehouse(); }
TheWarehouse & theWarehouse()
Definition MooseApp.h:143

Referenced by NonlinearSystemBase::addBoundaryCondition(), NonlinearSystemBase::addDGKernel(), NonlinearSystemBase::addDiracKernel(), FEProblemBase::addFVInterpolationMethod(), NonlinearSystemBase::addHDGKernel(), NonlinearSystemBase::addInterfaceKernel(), NonlinearSystemBase::addKernel(), NonlinearSystemBase::addNodalKernel(), FEProblemBase::addObject(), NonlinearSystemBase::addScalarKernel(), NonlinearSystemBase::addSplit(), FEProblemBase::addUserObject(), NonlinearSystemBase::checkKernelCoverage(), FEProblemBase::checkUserObjectJacobianRequirement(), FEProblemBase::checkUserObjects(), ComputeResidualAndJacobianThread::compute(), NonlinearSystemBase::computeJacobianInternal(), NonlinearSystemBase::computeResidualAndJacobianInternal(), NonlinearSystemBase::computeResidualInternal(), LinearSystem::containsTimeKernel(), FEProblemBase::customSetup(), ComputeResidualAndJacobianThread::determineObjectWarehouses(), ComputeResidualThread::determineObjectWarehouses(), MFEMProblem::executeMFEMObjects(), FEProblemBase::executeSamplers(), ComputeLinearFVElementalThread::fetchBlockSystemContributionObjects(), ComputeLinearFVFaceThread::fetchBlockSystemContributionObjects(), FEProblemBase::getDistribution(), FEProblemBase::getFVInterpolationMethod(), NonlinearSystemBase::getFVSetupObjects(), FEProblemBase::getKokkosUserObject(), MFEMProblem::getMFEMObject(), FEProblemBase::getMortarUserObjects(), FEProblemBase::getPositionsObject(), FEProblemBase::getPostprocessorObjectByName(), FEProblemBase::getSampler(), CompositionDT::getTimeSteppers(), FEProblemBase::getUOQuery(), FEProblemBase::getUserObject(), FEProblemBase::getUserObjectBase(), FEProblemBase::getVectorPostprocessorObjectByName(), FEProblemBase::hasDistribution(), FEProblemBase::hasFVInterpolationMethod(), MFEMProblem::hasMFEMObject(), FEProblemBase::hasUserObject(), VectorPostprocessorInterface::hasVectorPostprocessorByName(), MFEMProblem::initialSetup(), BoundaryLinearFVFluxIntegral::initialSetup(), SideFVFluxBCIntegral::initialSetup(), LinearSystem::initialSetup(), ExplicitTimeIntegrator::initialSetup(), AdvancedOutput::initPostprocessorOrVectorPostprocessorLists(), FEProblemBase::needBoundaryMaterialOnSide(), FEProblemBase::needInterfaceMaterialOnSide(), FEProblemBase::needInternalNeighborSideMaterial(), JSONOutput::outputReporters(), BlockRestrictionDebugOutput::printBlockRestrictionGroups(), BlockRestrictionDebugOutput::printBlockRestrictionMap(), BlockRestrictionDebugOutput::printBoundaryRestrictionGroups(), ComputeLinearFVElementalThread::setupSystemContributionObjects(), ComputeLinearFVFaceThread::setupSystemContributionObjects(), and FEProblemBase::timestepSetup().

◆ time()

virtual Real & FEProblemBase::time ( ) const
inlinevirtualinherited

◆ timedSectionName()

std::string PerfGraphInterface::timedSectionName ( const std::string &  section_name) const
protectedinherited
Returns
The name of the timed section with the name section_name.

Optionally adds a prefix if one is defined.

Definition at line 55 of file PerfGraphInterface.C.

56{
57 return _prefix.empty() ? "" : (_prefix + "::") + section_name;
58}
const std::string _prefix
A prefix to use for all sections.

Referenced by PerfGraphInterface::registerTimedSection(), and PerfGraphInterface::registerTimedSection().

◆ timeOld()

virtual Real & FEProblemBase::timeOld ( ) const
inlinevirtualinherited

◆ timeStep()

virtual int & FEProblemBase::timeStep ( ) const
inlinevirtualinherited

◆ timestepSetup()

void FEProblemBase::timestepSetup ( )
overridevirtualinherited

Reimplemented from SubProblem.

Definition at line 1601 of file FEProblemBase.C.

1602{
1604
1605 if (_t_step > 1 && _num_grid_steps)
1606 {
1607 libMesh::MeshRefinement mesh_refinement(_mesh);
1608 std::unique_ptr<libMesh::MeshRefinement> displaced_mesh_refinement(nullptr);
1609 if (_displaced_mesh)
1610 displaced_mesh_refinement = std::make_unique<libMesh::MeshRefinement>(*_displaced_mesh);
1611
1612 for (MooseIndex(_num_grid_steps) i = 0; i < _num_grid_steps; ++i)
1613 {
1615 // If the DisplacedProblem is active, undisplace the DisplacedMesh in preparation for
1616 // refinement. We can't safely refine the DisplacedMesh directly, since the Hilbert keys
1617 // computed on the inconsistenly-displaced Mesh are different on different processors,
1618 // leading to inconsistent Hilbert keys. We must do this before the undisplaced Mesh is
1619 // coarsensed, so that the element and node numbering is still consistent. We also have to
1620 // make sure this is done during every step of coarsening otherwise different partitions
1621 // will be generated for the reference and displaced meshes (even for replicated)
1622 _displaced_problem->undisplaceMesh();
1623
1624 mesh_refinement.uniformly_coarsen();
1625 if (_displaced_mesh)
1626 displaced_mesh_refinement->uniformly_coarsen();
1627
1628 // Mark this as an intermediate change because we do not yet want to reinit_systems. E.g. we
1629 // need things to happen in the following order for the undisplaced problem:
1630 // u1) EquationSystems::reinit_solutions. This will restrict the solution vectors and then
1631 // contract the mesh
1632 // u2) MooseMesh::meshChanged. This will update the node/side lists and other
1633 // things which needs to happen after the contraction
1634 // u3) GeometricSearchData::reinit. Once the node/side lists are updated we can perform our
1635 // geometric searches which will aid in determining sparsity patterns
1636 //
1637 // We do these things for the displaced problem (if it exists)
1638 // d1) EquationSystems::reinit. Restrict the displaced problem vector copies and then contract
1639 // the mesh. It's safe to do a full reinit with the displaced because there are no
1640 // matrices that sparsity pattern calculations will be conducted for
1641 // d2) MooseMesh::meshChanged. This will update the node/side lists and other
1642 // things which needs to happen after the contraction
1643 // d3) UpdateDisplacedMeshThread::operator(). Re-displace the mesh using the *displaced*
1644 // solution vector copy because we don't know the state of the reference solution vector.
1645 // It's safe to use the displaced copy because we are outside of a non-linear solve,
1646 // and there is no concern about differences between solution and current_local_solution
1647 // d4) GeometricSearchData::reinit. With the node/side lists updated and the mesh
1648 // re-displaced, we can perform our geometric searches, which will aid in determining the
1649 // sparsity pattern of the matrix held by the libMesh::ImplicitSystem held by the
1650 // NonlinearSystem held by this
1652 /*intermediate_change=*/true, /*contract_mesh=*/true, /*clean_refinement_flags=*/true);
1653 }
1654
1655 // u4) Now that all the geometric searches have been done (both undisplaced and displaced),
1656 // we're ready to update the sparsity pattern
1657 es().reinit_systems();
1658 }
1659
1661 if (_line_search)
1662 _line_search->timestepSetup();
1663
1664 // Random interface objects
1665 for (const auto & it : _random_data_objects)
1666 it.second->updateSeeds(EXEC_TIMESTEP_BEGIN);
1667
1668 unsigned int n_threads = libMesh::n_threads();
1669 for (THREAD_ID tid = 0; tid < n_threads; tid++)
1670 {
1673 }
1674
1675#ifdef MOOSE_KOKKOS_ENABLED
1677#endif
1678
1679 _aux->timestepSetup();
1680 for (auto & sys : _solver_systems)
1681 sys->timestepSetup();
1682
1684 // timestepSetup for displaced systems
1685 _displaced_problem->timestepSetup();
1686
1687 for (THREAD_ID tid = 0; tid < n_threads; tid++)
1688 {
1692 }
1693
1694 std::vector<UserObject *> userobjs;
1695 theWarehouse().query().condition<AttribSystem>("UserObject").queryIntoUnsorted(userobjs);
1696 for (auto obj : userobjs)
1697 obj->timestepSetup();
1698
1699#ifdef MOOSE_KOKKOS_ENABLED
1700 {
1701 std::vector<UserObjectBase *> userobjs;
1702 theWarehouse().query().condition<AttribSystem>("KokkosUserObject").queryIntoUnsorted(userobjs);
1703 for (auto obj : userobjs)
1704 obj->timestepSetup();
1705 }
1706#endif
1707
1708 // Timestep setup of output objects
1710
1714}
virtual void timestepSetup(THREAD_ID tid=0) const override
virtual void timestepSetup(THREAD_ID tid=0) const
void timestepSetup()
Calls the timestepSetup function for each of the output objects.
virtual void timestepSetup()

Referenced by Eigenvalue::execute(), SteadyBase::execute(), MFEMSteady::execute(), NonlinearEigen::takeStep(), TransientBase::takeStep(), and MFEMTransient::takeStep().

◆ transient()

virtual void FEProblemBase::transient ( bool  trans)
inlinevirtualinherited

Definition at line 584 of file FEProblemBase.h.

584{ _transient = trans; }

Referenced by EigenExecutionerBase::EigenExecutionerBase(), and TransientBase::TransientBase().

◆ trustUserCouplingMatrix()

void FEProblemBase::trustUserCouplingMatrix ( )
inherited

Whether to trust the user coupling matrix even if we want to do things like be paranoid and create a full coupling matrix.

See https://github.com/idaholab/moose/issues/16395 for detailed background

Definition at line 6656 of file FEProblemBase.C.

6657{
6659 mooseError("Someone told us (the FEProblemBase) to trust the user coupling matrix, but we "
6660 "haven't been provided a coupling matrix!");
6661
6663}

Referenced by SingleMatrixPreconditioner::SingleMatrixPreconditioner().

◆ type()

const std::string & MooseBase::type ( ) const
inlineinherited

Get the type of this class.

Returns
the name of the type of this class

Definition at line 93 of file MooseBase.h.

94 {
95 mooseAssert(_type.size(), "Empty type");
96 return _type;
97 }

Referenced by CreateProblemDefaultAction::act(), MaterialDerivativeTestAction::act(), MaterialOutputAction::act(), SetupDebugAction::act(), FEProblemBase::addAuxArrayVariable(), FEProblemBase::addAuxScalarVariable(), FEProblemBase::addAuxVariable(), FEProblemBase::addConvergence(), FEProblemBase::addDistribution(), DistributedRectilinearMeshGenerator::addElement(), DistributedRectilinearMeshGenerator::addElement(), MooseApp::addExecutor(), MooseApp::addExecutorParams(), MFEMProblem::addFESpace(), MFEMProblem::addFESpaceHierarchy(), FEProblemBase::addFunction(), MFEMProblem::addFunction(), FEProblemBase::addMeshDivision(), MooseApp::addMeshGenerator(), MeshGenerator::addMeshSubgenerator(), MeshGenerator::addMeshSubgenerator(), FEProblemBase::addObject(), DistributedRectilinearMeshGenerator::addPoint(), MFEMProblem::addPostprocessor(), FEProblemBase::addPredictor(), CreateDisplacedProblemAction::addProxyRelationshipManagers(), MFEMProblem::addQuadratureFunction(), FEProblemBase::addReporter(), FEProblemBase::addSampler(), WebServerControl::addServerActionsInternal(), FEProblemBase::addTimeIntegrator(), MFEMProblem::addVectorPostprocessor(), SubProblem::addVectorTag(), DisplacedProblem::addVectorTag(), FEProblemBase::advanceMultiApps(), MooseApp::appendMeshGenerator(), AuxKernelBase::AuxKernelBase(), FEProblemBase::backupMultiApps(), BatchMeshGeneratorAction::BatchMeshGeneratorAction(), BoundaryPreservedMarker::BoundaryPreservedMarker(), DistributedRectilinearMeshGenerator::buildCube(), MooseMesh::buildHRefinementAndCoarseningMaps(), MooseMesh::buildLowerDMesh(), MooseMesh::buildPRefinementAndCoarseningMaps(), PhysicsBase::checkComponentType(), MeshDiagnosticsGenerator::checkNonConformalMeshFromAdaptivity(), ActionComponent::checkRequiredTasks(), PhysicsBase::checkRequiredTasks(), FEProblemBase::checkUserObjectNameCollision(), MFEMMultiAppTransfer::checkValidTransferProblemTypes(), MeshInfo::CombinedInfos< ElemInfoMap, ElemInfoItems >::CombinedInfos(), ElemElemConstraint::computeElemNeighJacobian(), ArrayDGKernel::computeElemNeighJacobian(), DGKernel::computeElemNeighJacobian(), ADDGKernel::computeElemNeighJacobian(), ElemElemConstraint::computeElemNeighResidual(), ArrayDGKernel::computeElemNeighResidual(), DGKernel::computeElemNeighResidual(), ADDGKernel::computeElemNeighResidual(), ArrayDGLowerDKernel::computeLowerDJacobian(), DGLowerDKernel::computeLowerDJacobian(), ArrayLowerDIntegratedBC::computeLowerDJacobian(), LowerDIntegratedBC::computeLowerDJacobian(), ArrayLowerDIntegratedBC::computeLowerDOffDiagJacobian(), LowerDIntegratedBC::computeLowerDOffDiagJacobian(), ArrayHFEMDirichletBC::computeLowerDQpJacobian(), HFEMDirichletBC::computeLowerDQpJacobian(), ArrayHFEMDiffusion::computeLowerDQpJacobian(), HFEMDiffusion::computeLowerDQpJacobian(), ArrayLowerDIntegratedBC::computeLowerDQpOffDiagJacobian(), ArrayDGLowerDKernel::computeLowerDQpOffDiagJacobian(), ArrayHFEMDirichletBC::computeLowerDQpOffDiagJacobian(), HFEMDirichletBC::computeLowerDQpOffDiagJacobian(), FEProblemBase::computeMultiAppsDT(), ArrayDGKernel::computeOffDiagElemNeighJacobian(), DGKernel::computeOffDiagElemNeighJacobian(), ADDGKernel::computeOffDiagElemNeighJacobian(), ArrayDGLowerDKernel::computeOffDiagLowerDJacobian(), DGLowerDKernel::computeOffDiagLowerDJacobian(), ScalarKernel::computeQpJacobian(), CoupledTiedValueConstraint::computeQpJacobian(), EqualValueBoundaryConstraint::computeQpJacobian(), LinearNodalConstraint::computeQpJacobian(), TiedValueConstraint::computeQpJacobian(), DGConvection::computeQpJacobian(), ArrayDGDiffusion::computeQpJacobian(), DGDiffusion::computeQpJacobian(), InterfaceDiffusion::computeQpJacobian(), InterfaceReaction::computeQpJacobian(), CoupledTiedValueConstraint::computeQpOffDiagJacobian(), ArrayDGKernel::computeQpOffDiagJacobian(), HFEMTestJump::computeQpOffDiagJacobian(), HFEMTrialJump::computeQpOffDiagJacobian(), ScalarKernel::computeQpResidual(), CoupledTiedValueConstraint::computeQpResidual(), EqualValueBoundaryConstraint::computeQpResidual(), LinearNodalConstraint::computeQpResidual(), TiedValueConstraint::computeQpResidual(), DGConvection::computeQpResidual(), ADDGAdvection::computeQpResidual(), ADDGDiffusion::computeQpResidual(), DGDiffusion::computeQpResidual(), HFEMDiffusion::computeQpResidual(), HFEMTestJump::computeQpResidual(), HFEMTrialJump::computeQpResidual(), ADMatInterfaceReaction::computeQpResidual(), InterfaceDiffusion::computeQpResidual(), InterfaceReaction::computeQpResidual(), ArrayDGDiffusion::computeQpResidual(), ArrayHFEMDiffusion::computeQpResidual(), FEProblemBase::computeSystems(), FEProblemBase::computeUserObjectByName(), FEProblemBase::computeUserObjects(), FEProblemBase::computeUserObjectsInternal(), FEProblemBase::createQRules(), DisplacedProblem::createQRules(), MooseApp::createRecoverablePerfGraph(), MeshGenerator::declareMeshProperty(), DumpObjectsProblem::deduceNecessaryParameters(), DumpObjectsProblem::dumpObjectHelper(), FEProblemBase::duplicateVariableCheck(), FEProblemBase::execMultiApps(), FEProblemBase::execMultiAppTransfers(), FEProblemBase::execTransfers(), SteadyBase::execute(), WebServerControl::execute(), ActionWarehouse::executeActionsWithAction(), FEProblemBase::finishMultiAppStep(), FVScalarLagrangeMultiplierInterface::FVScalarLagrangeMultiplierInterface(), Boundary2DDelaunayGenerator::General2DDelaunay(), SurfaceSubdomainsDelaunayRemesher::General2DDelaunay(), Boundary2DDelaunayGenerator::generate(), LowerDBlockFromSidesetGenerator::generate(), SubdomainPerElementGenerator::generate(), PatternedMeshGenerator::generate(), MeshGenerator::generateInternal(), MeshGenerator::generateInternalCSG(), MultiAppTransfer::getAppInfo(), TransfiniteMeshGenerator::getEdge(), ElementGenerator::getElemType(), FEProblemBase::getMaterial(), FEProblemBase::getMaterialData(), FEProblemBase::getMaterialPropertyStorageConsumers(), MaterialOutputAction::getParams(), ReporterData::getReporterInfo(), MooseServer::getSyntaxMetadata(), FEProblemBase::getTransfers(), FEProblemBase::getUOQuery(), SubProblem::getVectorTags(), DisplacedProblem::getVectorTags(), CommonOutputAction::hasConsole(), FEProblemBase::hasMultiApps(), AdvancedOutput::hasOutput(), FEProblemBase::incrementMultiAppTStep(), NEML2Action::inferMOOSEIOType(), AdvancedOutput::initAvailableLists(), FunctorPositions::initialize(), FunctorTimes::initialize(), LinearFVAdvection::initialSetup(), LinearFVAnisotropicDiffusion::initialSetup(), LinearFVDiffusion::initialSetup(), MultiAppConservativeTransfer::initialSetup(), ArrayDGDiffusion::initQpResidual(), AdvancedOutput::initShowHideLists(), RelationshipManager::isType(), FEProblemBase::logAdd(), MaterialFunctorConverterTempl< T >::MaterialFunctorConverterTempl(), MFEMProblem::mesh(), MooseObject::MooseObject(), SubProblem::numVectorTags(), DisplacedProblem::numVectorTags(), AdvancedOutput::output(), Console::output(), ConsoleUtils::outputExecutionInformation(), Output::outputStep(), SampledOutput::outputStep(), FEProblemBase::outputStep(), MooseServer::parseDocumentForDiagnostics(), MooseMesh::prepare(), ProjectedStatefulMaterialStorageAction::processProperty(), MooseApp::recursivelyCreateExecutors(), SolutionInvalidInterface::registerInvalidSolutionInternal(), FEProblemBase::restoreMultiApps(), MeshRepairGenerator::separateSubdomainsByElementType(), FEProblemBase::setCoupling(), MooseApp::setupOptions(), ExplicitRK2::solve(), ExplicitTVDRK2::solve(), Reporter::store(), MooseBase::typeAndName(), AuxScalarKernel::uOld(), ScalarKernelBase::uOld(), DisplacedProblem::updateGeomSearch(), FEProblemBase::updateGeomSearch(), UserObjectInterface::userObjectType(), and AdvancedOutput::wantOutput().

◆ typeAndName()

std::string MooseBase::typeAndName ( ) const
inherited

Get the class's combined type and name; useful in error handling.

Returns
The type and name of this class in the form '<type()> "<name()>"'.

Definition at line 57 of file MooseBase.C.

58{
59 return type() + std::string(" \"") + name() + std::string("\"");
60}

Referenced by MaterialPropertyStorage::addProperty(), FEProblemBase::checkUserObjectNameCollision(), MeshGeneratorSystem::dataDrivenError(), ReporterContext< T >::finalize(), ReporterData::getReporterInfo(), MFEMSamplerBase::initialSetup(), MFEMVariableSamplerBase::initialSetup(), WebServerControl::outputMessage(), and Action::timedAct().

◆ uDotDotOldRequested()

virtual bool FEProblemBase::uDotDotOldRequested ( )
inlinevirtualinherited

Get boolean flag to check whether old solution second time derivative needs to be stored.

Definition at line 2666 of file FEProblemBase.h.

2667 {
2669 mooseError("FEProblemBase: When requesting old second time derivative of solution, current "
2670 "second time derivation of solution should also be stored. Please set "
2671 "`u_dotdot_requested` to true using setUDotDotRequested.");
2673 }

Referenced by SystemBase::addDotVectors().

◆ uDotDotRequested()

virtual bool FEProblemBase::uDotDotRequested ( )
inlinevirtualinherited

Get boolean flag to check whether solution second time derivative needs to be stored.

Definition at line 2652 of file FEProblemBase.h.

2652{ return _u_dotdot_requested; }

Referenced by SystemBase::addDotVectors(), and FEProblemBase::addTimeIntegrator().

◆ uDotOldRequested()

virtual bool FEProblemBase::uDotOldRequested ( )
inlinevirtualinherited

Get boolean flag to check whether old solution time derivative needs to be stored.

Definition at line 2655 of file FEProblemBase.h.

2656 {
2658 mooseError("FEProblemBase: When requesting old time derivative of solution, current time "
2659 "derivative of solution should also be stored. Please set `u_dot_requested` to "
2660 "true using setUDotRequested.");
2661
2662 return _u_dot_old_requested;
2663 }

Referenced by SystemBase::addDotVectors().

◆ uDotRequested()

virtual bool FEProblemBase::uDotRequested ( )
inlinevirtualinherited

Get boolean flag to check whether solution time derivative needs to be stored.

Definition at line 2649 of file FEProblemBase.h.

2649{ return _u_dot_requested; }

Referenced by SystemBase::addDotVectors().

◆ uniformRefine()

void FEProblemBase::uniformRefine ( )
inherited

uniformly refine the problem mesh(es).

This will also prolong the the solution, and in order for that to be safe, we can only perform one refinement at a time

Definition at line 9673 of file FEProblemBase.C.

9674{
9675 // ResetDisplacedMeshThread::onNode looks up the reference mesh by ID, so we need to make sure
9676 // we undisplace before adapting the reference mesh
9678 _displaced_problem->undisplaceMesh();
9679
9683
9685 /*intermediate_change=*/false, /*contract_mesh=*/true, /*clean_refinement_flags=*/true);
9686}
static void uniformRefine(MooseMesh *mesh, unsigned int level=libMesh::invalid_uint)
Performs uniform refinement of the passed Mesh object.
Definition Adaptivity.C:301

Referenced by FEProblemSolve::solve().

◆ uniqueName()

MooseObjectName MooseBase::uniqueName ( ) const
inherited
Returns
The unique name for accessing input parameters of this object in the InputParameterWarehouse

Definition at line 69 of file MooseBase.C.

70{
71 if (!_pars.have_parameter<std::string>(unique_name_param))
72 mooseError("uniqueName(): Object does not have a unique name");
73 return MooseObjectName(_pars.get<std::string>(unique_name_param));
74}
static const std::string unique_name_param
The name of the parameter that contains the unique object name.
Definition MooseBase.h:57

Referenced by MooseBase::connectControllableParams(), and Action::uniqueActionName().

◆ uniqueParameterName()

MooseObjectParameterName MooseBase::uniqueParameterName ( const std::string &  parameter_name) const
inherited
Returns
The unique parameter name of a valid parameter of this object for accessing parameter controls

Definition at line 63 of file MooseBase.C.

64{
65 return MooseObjectParameterName(getBase(), name(), parameter_name);
66}
const std::string & getBase() const
Definition MooseBase.h:147

◆ updateActiveObjects()

void FEProblemBase::updateActiveObjects ( )
virtualinherited

Update the active objects in the warehouses.

Reimplemented in DumpObjectsProblem.

Definition at line 5635 of file FEProblemBase.C.

5636{
5637 TIME_SECTION("updateActiveObjects", 5, "Updating Active Objects");
5638
5639 for (THREAD_ID tid = 0; tid < libMesh::n_threads(); ++tid)
5640 {
5641 for (auto & nl : _nl)
5642 nl->updateActive(tid);
5643 _aux->updateActive(tid);
5650 }
5651
5659
5660#ifdef MOOSE_KOKKOS_ENABLED
5662#endif
5663}
void updateActive(THREAD_ID tid=0) override
Updates the active objects storage.
virtual void updateActive(THREAD_ID tid=0) override
Update the active status of Kernels.
virtual void updateActive(THREAD_ID tid=0) override
Update the active status of Kernels.

Referenced by MooseEigenSystem::eigenKernelOnCurrent(), MooseEigenSystem::eigenKernelOnOld(), and FixedPointSolve::solveStep().

◆ updateGeomSearch()

void FEProblemBase::updateGeomSearch ( GeometricSearchData::GeometricSearchType  type = GeometricSearchData::ALL)
overridevirtualinherited

Update this object's geometric search data as well as the displaced problem's if it exists.

Implements SubProblem.

Definition at line 8398 of file FEProblemBase.C.

8399{
8400 TIME_SECTION("updateGeometricSearch", 3, "Updating Geometric Search");
8401
8403
8405 _displaced_problem->updateGeomSearch(type);
8406}
void update(GeometricSearchType type=ALL)
Update all of the search objects.

Referenced by NonlinearSystemBase::augmentSparsity().

◆ updateMaxQps()

void FEProblemBase::updateMaxQps ( )
privateinherited

Definition at line 6524 of file FEProblemBase.C.

6525{
6526 // Find the maximum number of quadrature points
6527 {
6528 MaxQpsThread mqt(*this);
6530 _max_qps = mqt.max();
6531
6532 // If we have more shape functions or more quadrature points on
6533 // another processor, then we may need to handle those elements
6534 // ourselves later after repartitioning.
6536 }
6537
6538 unsigned int max_qpts = getMaxQps();
6539 if (max_qpts > Moose::constMaxQpsPerElem)
6540 mooseError("Max quadrature points per element assumptions made in some code (e.g. Coupleable ",
6541 "and MaterialPropertyInterface classes) have been violated.\n",
6542 "Complain to Moose developers to have constMaxQpsPerElem increased from ",
6544 " to ",
6545 max_qpts);
6546 for (unsigned int tid = 0; tid < libMesh::n_threads(); ++tid)
6547 {
6548 // the highest available order in libMesh is 43
6549 _scalar_zero[tid].resize(FORTYTHIRD, 0);
6550 _zero[tid].resize(max_qpts, 0);
6551 _ad_zero[tid].resize(max_qpts, 0);
6552 _grad_zero[tid].resize(max_qpts, RealGradient(0.));
6553 _ad_grad_zero[tid].resize(max_qpts, ADRealGradient(0));
6554 _second_zero[tid].resize(max_qpts, RealTensor(0.));
6555 _ad_second_zero[tid].resize(max_qpts, ADRealTensorValue(0));
6556 _vector_zero[tid].resize(max_qpts, RealGradient(0.));
6557 _vector_curl_zero[tid].resize(max_qpts, RealGradient(0.));
6558 }
6559}
libMesh::TensorValue< ADReal > ADRealTensorValue
Definition MooseTypes.h:414
ADRealVectorValue ADRealGradient
Definition MooseTypes.h:412
std::vector< MooseArray< ADRealVectorValue > > _ad_grad_zero
std::vector< MooseArray< ADRealTensorValue > > _ad_second_zero
std::vector< MooseArray< ADReal > > _ad_zero
This class determines the maximum number of Quadrature Points and Shape Functions used for a given si...
constexpr std::size_t constMaxQpsPerElem
This is used for places where we initialize some qp-sized data structures that would end up being siz...
Definition MooseTypes.h:258

Referenced by FEProblemBase::bumpAllQRuleOrder(), FEProblemBase::bumpVolumeQRuleOrder(), and FEProblemBase::createQRules().

◆ updateMeshXFEM()

bool FEProblemBase::updateMeshXFEM ( )
virtualinherited

Update the mesh due to changing XFEM cuts.

Definition at line 8671 of file FEProblemBase.C.

8672{
8673 TIME_SECTION("updateMeshXFEM", 5, "Updating XFEM");
8674
8675 bool updated = false;
8676 if (haveXFEM())
8677 {
8678 if (_xfem->updateHeal())
8679 // XFEM exodiff tests rely on a given numbering because they cannot use map = true due to
8680 // having coincident elements. While conceptually speaking we do not need to contract the
8681 // mesh, we need its call to renumber_nodes_and_elements in order to preserve these tests
8683 /*intermediate_change=*/false, /*contract_mesh=*/true, /*clean_refinement_flags=*/false);
8684
8685 updated = _xfem->update(_time, _nl, *_aux);
8686 if (updated)
8687 {
8689 /*intermediate_change=*/false, /*contract_mesh=*/true, /*clean_refinement_flags=*/false);
8690 _xfem->initSolution(_nl, *_aux);
8692 _console << "\nXFEM update complete: Mesh modified" << std::endl;
8693 }
8694 else
8695 _console << "\nXFEM update complete: Mesh not modified" << std::endl;
8696 }
8697 return updated;
8698}
virtual void restoreSolutions()

Referenced by FixedPointSolve::solveStep().

◆ updateMortarMesh()

void FEProblemBase::updateMortarMesh ( )
virtualinherited

Definition at line 8409 of file FEProblemBase.C.

8410{
8411 TIME_SECTION("updateMortarMesh", 5, "Updating Mortar Mesh");
8412
8414
8415 _mortar_data->update();
8416}

Referenced by FEProblemBase::computeJacobianTags(), FEProblemBase::computeResidualAndJacobian(), FEProblemBase::computeResidualTags(), and FEProblemBase::init().

◆ updateSolution()

bool FEProblemBase::updateSolution ( NumericVector< libMesh::Number > &  vec_solution,
NumericVector< libMesh::Number > &  ghosted_solution 
)
virtualinherited

Update the solution.

Parameters
vec_solutionLocal solution vector that gets modified by this method
ghosted_solutionGhosted solution vector
Returns
true if the solution was modified, false otherwise

Definition at line 8377 of file FEProblemBase.C.

8379{
8380 return false;
8381}

Referenced by FEProblemBase::computePostCheck().

◆ useHashTableMatrixAssembly()

bool FEProblemBase::useHashTableMatrixAssembly ( ) const
inlineinherited

Definition at line 3000 of file FEProblemBase.h.

const bool _use_hash_table_matrix_assembly
Whether to assemble matrices using hash tables instead of preallocating matrix memory.

Referenced by NonlinearSystemBase::addConstraint().

◆ useSNESMFReuseBase()

bool FEProblemBase::useSNESMFReuseBase ( )
inlineinherited

Return a flag that indicates if we are reusing the vector base.

Definition at line 2603 of file FEProblemBase.h.

2603{ return _snesmf_reuse_base; }

Referenced by NonlinearSystem::potentiallySetupFiniteDifferencing().

◆ validParams()

InputParameters ExternalProblem::validParams ( )
static

Definition at line 16 of file ExternalProblem.C.

17{
19 params.set<bool>("skip_nl_system_check") = true;
20
21 // there is no nonlinear system (we set it as empty in the constructor)
22 params.suppressParameter<bool>("ignore_zeros_in_jacobian");
23 params.suppressParameter<MooseEnum>("kernel_coverage_check");
24 params.suppressParameter<std::vector<NonlinearSystemName>>("nl_sys_names");
25 params.suppressParameter<bool>("previous_nl_solution_required");
26 params.suppressParameter<bool>("skip_nl_system_check");
27 params.suppressParameter<bool>("use_nonlinear");
28
29 params.addClassDescription("Problem extension point for wrapping external applications");
30 return params;
31}
static InputParameters validParams()
void suppressParameter(const std::string &name)
This method suppresses an inherited parameter so that it isn't required or valid in the derived class...
void addClassDescription(const std::string &doc_string)
This method adds a description of the class that will be displayed in the input file syntax dump.

Referenced by MFEMProblem::validParams().

◆ vectorTagExists() [1/2]

virtual bool SubProblem::vectorTagExists ( const TagID  tag_id) const
inlinevirtualinherited

◆ vectorTagExists() [2/2]

bool SubProblem::vectorTagExists ( const TagName &  tag_name) const
virtualinherited

Check to see if a particular Tag exists by using Tag name.

Reimplemented in DisplacedProblem.

Definition at line 137 of file SubProblem.C.

138{
139 mooseAssert(verifyVectorTags(), "Vector tag storage invalid");
140
141 const auto tag_name_upper = MooseUtils::toUpper(tag_name);
142 for (const auto & vector_tag : _vector_tags)
143 if (vector_tag._name == tag_name_upper)
144 return true;
145
146 return false;
147}

◆ vectorTagName()

TagName SubProblem::vectorTagName ( const TagID  tag) const
virtualinherited

Retrieve the name associated with a TagID.

Reimplemented in DisplacedProblem.

Definition at line 222 of file SubProblem.C.

223{
224 mooseAssert(verifyVectorTags(), "Vector tag storage invalid");
225 if (!vectorTagExists(tag_id))
226 mooseError("Vector tag with ID ", tag_id, " does not exist");
227
228 return _vector_tags[tag_id]._name;
229}

Referenced by SystemBase::addVector(), SystemBase::closeTaggedVector(), NonlinearSystemBase::getResidualNonTimeVector(), NonlinearSystemBase::getResidualTimeVector(), SystemBase::removeVector(), NonlinearSystemBase::residualGhosted(), DisplacedProblem::vectorTagName(), and SystemBase::zeroTaggedVector().

◆ vectorTagNotZeroed()

bool SubProblem::vectorTagNotZeroed ( const TagID  tag) const
inherited

Checks if a vector tag is in the list of vectors that will not be zeroed when other tagged vectors are.

Parameters
tagthe TagID of the vector that is currently being checked
Returns
false if the tag is not within the set of vectors that are intended to not be zero or if the set is empty. returns true otherwise

Definition at line 156 of file SubProblem.C.

157{
158 return _not_zeroed_tagged_vectors.count(tag);
159}

Referenced by SystemBase::zeroTaggedVector().

◆ vectorTagType()

Moose::VectorTagType SubProblem::vectorTagType ( const TagID  tag_id) const
virtualinherited

Reimplemented in DisplacedProblem.

Definition at line 232 of file SubProblem.C.

233{
234 mooseAssert(verifyVectorTags(), "Vector tag storage invalid");
235 if (!vectorTagExists(tag_id))
236 mooseError("Vector tag with ID ", tag_id, " does not exist");
237
238 return _vector_tags[tag_id]._type;
239}

Referenced by MooseVariableScalar::reinit(), TaggingInterface::TaggingInterface(), TagVectorAux::TagVectorAux(), and DisplacedProblem::vectorTagType().

◆ verboseMultiApps()

bool FEProblemBase::verboseMultiApps ( ) const
inlineinherited

Whether or not to use verbose printing for MultiApps.

Definition at line 2250 of file FEProblemBase.h.

2250{ return _verbose_multiapps; }

Referenced by MultiApp::backup(), MultiApp::createApp(), MultiApp::restore(), FullSolveMultiApp::showStatusMessage(), and TransientMultiApp::solveStep().

◆ verifyVectorTags()

bool SubProblem::verifyVectorTags ( ) const
protectedinherited

Verify the integrity of _vector_tags and _typed_vector_tags.

Definition at line 242 of file SubProblem.C.

243{
244 for (TagID tag_id = 0; tag_id < _vector_tags.size(); ++tag_id)
245 {
246 const auto & vector_tag = _vector_tags[tag_id];
247
248 if (vector_tag._id != tag_id)
249 mooseError("Vector tag ", vector_tag._id, " id mismatch in _vector_tags");
250 if (vector_tag._type == Moose::VECTOR_TAG_ANY)
251 mooseError("Vector tag '", vector_tag._name, "' has type VECTOR_TAG_ANY");
252
253 const auto search = _vector_tags_name_map.find(vector_tag._name);
254 if (search == _vector_tags_name_map.end())
255 mooseError("Vector tag ", vector_tag._id, " is not in _vector_tags_name_map");
256 else if (search->second != tag_id)
257 mooseError("Vector tag ", vector_tag._id, " has incorrect id in _vector_tags_name_map");
258
259 unsigned int found_in_type = 0;
260 for (TagTypeID tag_type_id = 0; tag_type_id < _typed_vector_tags[vector_tag._type].size();
261 ++tag_type_id)
262 {
263 const auto & vector_tag_type = _typed_vector_tags[vector_tag._type][tag_type_id];
264 if (vector_tag_type == vector_tag)
265 {
266 ++found_in_type;
267 if (vector_tag_type._type_id != tag_type_id)
268 mooseError("Type ID for Vector tag ", tag_id, " is incorrect");
269 }
270 }
271
272 if (found_in_type == 0)
273 mooseError("Vector tag ", tag_id, " not found in _typed_vector_tags");
274 if (found_in_type > 1)
275 mooseError("Vector tag ", tag_id, " found multiple times in _typed_vector_tags");
276 }
277
278 unsigned int num_typed_vector_tags = 0;
279 for (const auto & typed_vector_tags : _typed_vector_tags)
280 num_typed_vector_tags += typed_vector_tags.size();
281 if (num_typed_vector_tags != _vector_tags.size())
282 mooseError("Size mismatch between _vector_tags and _typed_vector_tags");
283 if (_vector_tags_name_map.size() != _vector_tags.size())
284 mooseError("Size mismatch between _vector_tags and _vector_tags_name_map");
285
286 return true;
287}

Referenced by SubProblem::addVectorTag(), SubProblem::getVectorTag(), SubProblem::getVectorTagID(), SubProblem::getVectorTags(), SubProblem::getVectorTags(), SubProblem::numVectorTags(), SubProblem::vectorTagExists(), SubProblem::vectorTagName(), and SubProblem::vectorTagType().

Member Data Documentation

◆ _action_factory

ActionFactory& ParallelParamObject::_action_factory
protectedinherited

◆ _active_elemental_moose_variables

std::vector<std::set<MooseVariableFieldBase *> > SubProblem::_active_elemental_moose_variables
protectedinherited

This is the set of MooseVariableFieldBase that will actually get reinited by a call to reinit(elem)

Definition at line 1090 of file SubProblem.h.

Referenced by SubProblem::clearActiveElementalMooseVariables(), SubProblem::getActiveElementalMooseVariables(), SubProblem::setActiveElementalMooseVariables(), and SubProblem::SubProblem().

◆ _active_fe_var_coupleable_matrix_tags

std::vector<std::set<TagID> > SubProblem::_active_fe_var_coupleable_matrix_tags
protectedinherited

◆ _active_fe_var_coupleable_vector_tags

std::vector<std::set<TagID> > SubProblem::_active_fe_var_coupleable_vector_tags
protectedinherited

◆ _active_sc_var_coupleable_matrix_tags

std::vector<std::set<TagID> > SubProblem::_active_sc_var_coupleable_matrix_tags
protectedinherited

◆ _active_sc_var_coupleable_vector_tags

std::vector<std::set<TagID> > SubProblem::_active_sc_var_coupleable_vector_tags
protectedinherited

◆ _ad_grad_zero

std::vector<MooseArray<ADRealVectorValue> > FEProblemBase::_ad_grad_zero
inherited

◆ _ad_second_zero

std::vector<MooseArray<ADRealTensorValue> > FEProblemBase::_ad_second_zero
inherited

◆ _ad_zero

std::vector<MooseArray<ADReal> > FEProblemBase::_ad_zero
inherited

◆ _adaptivity

Adaptivity FEProblemBase::_adaptivity
protectedinherited

◆ _all_materials

MaterialWarehouse FEProblemBase::_all_materials
protectedinherited

◆ _allow_ics_during_restart

const bool FEProblemBase::_allow_ics_during_restart
privateinherited

Definition at line 3595 of file FEProblemBase.h.

Referenced by FEProblemBase::checkICRestartError().

◆ _allow_invalid_solution

const bool FEProblemBase::_allow_invalid_solution
privateinherited

Definition at line 3598 of file FEProblemBase.h.

Referenced by FEProblemBase::allowInvalidSolution().

◆ _app

MooseApp& MooseBase::_app
protectedinherited

The MOOSE application this is associated with.

Definition at line 375 of file MooseBase.h.

Referenced by AB2PredictorCorrector::AB2PredictorCorrector(), FEProblemBase::acceptInvalidSolution(), FEProblemBase::addAnyRedistributers(), MeshGenerator::addChildMeshGenerator(), FEProblemBase::addMaterialHelper(), MeshGenerator::addMeshSubgenerator(), MeshGenerator::addMeshSubgenerator(), FEProblemBase::addOutput(), MeshGenerator::addParentMeshGenerator(), FEProblemBase::allowOutput(), AStableDirk4::AStableDirk4(), FileMesh::buildMesh(), MooseMesh::buildTypedMesh(), MooseMesh::cacheFaceInfoVariableOwnership(), MooseMesh::cacheFVElementalDoFs(), DefaultNonlinearConvergence::checkConvergence(), MeshGenerator::checkGetMesh(), FEProblemBase::checkICRestartError(), FEProblemBase::checkProblemIntegrity(), LibmeshPartitioner::clone(), BlockWeightedPartitioner::clone(), CopyMeshPartitioner::clone(), GridPartitioner::clone(), HierarchicalGridPartitioner::clone(), PetscExternalPartitioner::clone(), RandomPartitioner::clone(), SingleRankPartitioner::clone(), ElementPointNeighborLayers::clone(), ElementSideNeighborLayers::clone(), GhostAllPointNeighbors::clone(), GhostBoundary::clone(), GhostEverything::clone(), GhostHigherDLowerDPointNeighbors::clone(), GhostLowerDElems::clone(), GhostPrimaryFace::clone(), ProxyRelationshipManager::clone(), RedistributeProperties::clone(), SampledOutput::cloneMesh(), FEProblemBase::computeJacobianSys(), FEProblemBase::computeJacobianTags(), FEProblemBase::computeLinearSystemTags(), FEProblemBase::computeResidualAndJacobian(), FEProblemBase::computeResidualSys(), FEProblemBase::computeResidualTags(), Console::Console(), TimeStepper::constrainStep(), Control::Control(), CopyMeshPartitioner::CopyMeshPartitioner(), MultiApp::createApp(), MultiApp::createApps(), FEProblemBase::customSetup(), MeshGenerator::declareMeshProperty(), MeshGenerator::declareNullMeshName(), MooseMesh::determineUseDistributedMesh(), DumpObjectsProblem::dumpObjectHelper(), DumpObjectsProblem::DumpObjectsProblem(), DumpObjectsProblem::dumpVariableHelper(), EigenExecutionerBase::EigenExecutionerBase(), EigenKernel::EigenKernel(), PIDTransientControl::execute(), Eigenvalue::execute(), InversePowerMethod::execute(), NonlinearEigen::execute(), SteadyBase::execute(), TransientBase::execute(), MFEMSteady::execute(), PseudoTimestep::execute(), IterationInfo::execute(), EigenProblem::execute(), Executioner::Executioner(), Executioner::Executioner(), ExtraIDIntegralReporter::ExtraIDIntegralReporter(), FEProblemBase::FEProblemBase(), FileOutput::FileOutput(), NEML2Assembly::finalize(), ChangeOverFixedPointPostprocessor::finalize(), RadialAverage::finalize(), FixedPointSolve::FixedPointSolve(), FEProblemBase::forceOutput(), FullSolveMultiApp::FullSolveMultiApp(), FunctorSmootherTempl< T >::FunctorSmootherTempl(), FVAdvection::FVAdvection(), FileMeshGenerator::generate(), MeshGenerator::generateInternal(), MeshGenerator::generateInternalCSG(), MeshGenerator::getCSGBaseByName(), FEProblemBase::getExecutor(), MeshGenerator::getMeshByName(), NumFixedPointIterations::getValue(), NumRelationshipManagers::getValue(), GhostingUserObject::GhostingUserObject(), MooseMesh::init(), Eigenvalue::init(), InversePowerMethod::init(), NonlinearEigen::init(), TransientBase::init(), MFEMMesh::init(), FEProblemBase::init(), CompositionDT::init(), SubProblem::initialSetup(), PIDTransientControl::initialSetup(), RealFunctionControl::initialSetup(), TimePeriod::initialSetup(), EigenProblemSolve::initialSetup(), FEProblemSolve::initialSetup(), Console::initialSetup(), FEProblemBase::initialSetup(), AdvancedOutput::initOutputList(), FEProblemBase::initPetscOutputAndSomeSolverSettings(), EigenProblem::initPetscOutputAndSomeSolverSettings(), AdvancedOutput::initPostprocessorOrVectorPostprocessorLists(), FEProblemBase::meshChanged(), MeshGenerator::MeshGenerator(), MFEMProblemSolve::MFEMProblemSolve(), MooseMesh::MooseMesh(), MooseMesh::MooseMesh(), MooseObject::MooseObject(), MultiAppGeneralFieldTransfer::MultiAppGeneralFieldTransfer(), EigenExecutionerBase::normalizeSolution(), NumFailedTimeSteps::NumFailedTimeSteps(), Checkpoint::output(), Exodus::output(), Nemesis::output(), PerfGraphOutput::output(), Tecplot::output(), MortarNodalGeometryOutput::output(), ControlOutput::outputActiveObjects(), ControlOutput::outputChangedControls(), ControlOutput::outputControls(), Exodus::outputEmptyTimestep(), Console::outputInput(), Exodus::outputInput(), Exodus::outputNodalVariables(), JSONOutput::outputReporters(), Output::outputStep(), SampledOutput::outputStep(), FEProblemBase::outputStep(), Console::outputSystemInformation(), JSONOutput::outputSystemInformation(), OverlayMeshGenerator::OverlayMeshGenerator(), MultiApp::parentOutputPositionChanged(), TransientBase::preExecute(), FEProblemBase::projectSolution(), AnnularMesh::safeClone(), ConcentricCircleMesh::safeClone(), FileMesh::safeClone(), GeneratedMesh::safeClone(), ImageMesh::safeClone(), MeshGeneratorMesh::safeClone(), PatternedMesh::safeClone(), RinglebMesh::safeClone(), SpiralAnnularMesh::safeClone(), StitchedMesh::safeClone(), TiledMesh::safeClone(), MFEMMesh::safeClone(), MultiApp::setAppOutputFileBase(), FileOutput::setFileBaseInternal(), MeshGenerator::setMeshProperty(), MeshGenerator::setMeshPropertyHelper(), FEProblemBase::setRestartFile(), TransientMultiApp::setupApp(), TimeSequenceStepperBase::setupSequence(), TransientBase::setupTimeIntegrator(), Output::setWallTimeIntervalFromCommandLineParam(), SideSetExtruderGenerator::SideSetExtruderGenerator(), SolutionInvalidityReporter::SolutionInvalidityReporter(), FixedPointSolve::solve(), FEProblemBase::solve(), EigenProblem::solve(), FEProblemBase::solveLinearSystem(), PetscOutput::solveSetup(), FixedPointSolve::solveStep(), TransientMultiApp::solveStep(), FEProblemBase::subdomainSetup(), FEProblemBase::theWarehouse(), TimeExtremeValue::TimeExtremeValue(), TimeIntegratedPostprocessor::TimeIntegratedPostprocessor(), TimeIntervalTimes::TimeIntervalTimes(), TimePeriod::TimePeriod(), SubProblem::timestepSetup(), PIDTransientControl::timestepSetup(), FEProblemBase::timestepSetup(), TransientBase::TransientBase(), MooseMesh::update(), NEML2FEInterpolation::updateDofMap(), NEML2FEInterpolation::updateGradPhi(), NEML2FEInterpolation::updateInterpolations(), FEProblemBase::updateMortarMesh(), NEML2FEInterpolation::updatePhi(), Console::write(), and FEProblemBase::~FEProblemBase().

◆ _assembly

std::vector<std::vector<std::unique_ptr<Assembly> > > FEProblemBase::_assembly
protectedinherited

The Assembly objects.

The first index corresponds to the thread ID and the second index corresponds to the nonlinear system number

Definition at line 3195 of file FEProblemBase.h.

Referenced by FEProblemBase::addCachedResidualDirectly(), FEProblemBase::addJacobian(), FEProblemBase::addJacobianBlockTags(), FEProblemBase::addJacobianLowerD(), FEProblemBase::addJacobianNeighbor(), FEProblemBase::addJacobianNeighborLowerD(), FEProblemBase::addJacobianOffDiagScalar(), FEProblemBase::addJacobianScalar(), FEProblemBase::addResidual(), FEProblemBase::addResidualLower(), FEProblemBase::addResidualNeighbor(), FEProblemBase::addResidualScalar(), FEProblemBase::assembly(), FEProblemBase::assembly(), FEProblemBase::bumpAllQRuleOrder(), FEProblemBase::bumpVolumeQRuleOrder(), FEProblemBase::couplingEntries(), FEProblemBase::createQRules(), FEProblemBase::init(), FEProblemBase::initElementStatefulProps(), FEProblemBase::initXFEM(), FEProblemBase::meshChanged(), FEProblemBase::newAssemblyArray(), FEProblemBase::nonlocalCouplingEntries(), FEProblemBase::prepare(), FEProblemBase::prepare(), FEProblemBase::prepareAssembly(), FEProblemBase::prepareAssemblyNeighbor(), FEProblemBase::prepareFaceShapes(), FEProblemBase::prepareNeighborShapes(), FEProblemBase::prepareShapes(), FEProblemBase::reinitDirac(), FEProblemBase::reinitElemNeighborAndLowerD(), FEProblemBase::reinitElemPhys(), FEProblemBase::reinitMaterials(), FEProblemBase::reinitMaterialsBoundary(), FEProblemBase::reinitMaterialsFace(), FEProblemBase::reinitMaterialsFaceOnBoundary(), FEProblemBase::reinitMaterialsInterface(), FEProblemBase::reinitMaterialsNeighbor(), FEProblemBase::reinitNeighbor(), FEProblemBase::reinitNeighborPhys(), FEProblemBase::reinitNeighborPhys(), FEProblemBase::reinitNode(), FEProblemBase::reinitNodeFace(), FEProblemBase::reinitOffDiagScalars(), FEProblemBase::reinitScalars(), FEProblemBase::setCurrentSubdomainID(), FEProblemBase::setNeighborSubdomainID(), FEProblemBase::setNeighborSubdomainID(), FEProblemBase::setResidual(), FEProblemBase::setResidualNeighbor(), FEProblemBase::swapBackMaterials(), FEProblemBase::swapBackMaterialsFace(), and FEProblemBase::swapBackMaterialsNeighbor().

◆ _aux

std::shared_ptr<AuxiliarySystem> FEProblemBase::_aux
protectedinherited

The auxiliary system.

Definition at line 3178 of file FEProblemBase.h.

Referenced by FEProblemBase::addAuxArrayVariable(), FEProblemBase::addAuxKernel(), FEProblemBase::addAuxScalarKernel(), FEProblemBase::addAuxScalarVariable(), FEProblemBase::addAuxVariable(), FEProblemBase::addAuxVariable(), FEProblemBase::addIndicator(), FEProblemBase::addMarker(), FEProblemBase::addMultiApp(), FEProblemBase::addObjectParamsHelper(), FEProblemBase::addTimeIntegrator(), FEProblemBase::addTransfer(), FEProblemBase::advanceState(), FEProblemBase::checkExceptionAndStopSolve(), FEProblemBase::computeBounds(), FEProblemBase::computeIndicators(), FEProblemBase::computeJacobianTags(), FEProblemBase::computeLinearSystemTags(), FEProblemBase::computeMarkers(), FEProblemBase::computePostCheck(), FEProblemBase::computeResidualAndJacobian(), FEProblemBase::computeResidualTags(), FEProblemBase::computeSystems(), FEProblemBase::computeUserObjectsInternal(), FEProblemBase::copySolutionsBackwards(), FEProblemBase::createQRules(), FEProblemBase::createTagMatrices(), FEProblemBase::createTagSolutions(), FEProblemBase::customSetup(), FEProblemBase::determineSolverSystem(), DumpObjectsProblem::DumpObjectsProblem(), FEProblemBase::duplicateVariableCheck(), EigenProblem::EigenProblem(), FEProblemBase::execute(), ExternalProblem(), FEProblem::FEProblem(), FEProblemBase::getActualFieldVariable(), FEProblemBase::getArrayVariable(), FEProblemBase::getAuxiliarySystem(), FEProblemBase::getScalarVariable(), FEProblemBase::getStandardVariable(), FEProblemBase::getSystem(), FEProblemBase::getSystemBase(), FEProblemBase::getSystemBase(), FEProblemBase::getSystemBase(), FEProblemBase::getVariable(), FEProblemBase::getVariableNames(), FEProblemBase::getVectorVariable(), FEProblemBase::hasScalarVariable(), FEProblemBase::hasSolutionState(), FEProblemBase::hasVariable(), FEProblemBase::init(), FEProblemBase::initialSetup(), FEProblemBase::meshChanged(), FEProblemBase::needBoundaryMaterialOnSide(), FEProblemBase::needSolutionState(), FEProblemBase::outputStep(), FEProblemBase::prepare(), FEProblemBase::prepare(), FEProblemBase::prepareFace(), FEProblemBase::projectInitialConditionOnCustomRange(), FEProblemBase::projectSolution(), FEProblemBase::reinitDirac(), FEProblemBase::reinitElem(), FEProblemBase::reinitElemPhys(), FEProblemBase::reinitNeighbor(), FEProblemBase::reinitNeighborPhys(), FEProblemBase::reinitNeighborPhys(), FEProblemBase::reinitNode(), FEProblemBase::reinitNodeFace(), FEProblemBase::reinitNodes(), FEProblemBase::reinitNodesNeighbor(), FEProblemBase::reinitScalars(), FEProblemBase::restoreOldSolutions(), FEProblemBase::restoreSolutions(), FEProblemBase::saveOldSolutions(), FEProblemBase::setAuxKernelParamsAndLog(), FEProblemBase::skipNextForwardSolutionCopyToOld(), FEProblemBase::systemBaseAuxiliary(), FEProblemBase::systemBaseAuxiliary(), FEProblemBase::systemNumForVariable(), FEProblemBase::timestepSetup(), FEProblemBase::updateActiveObjects(), and FEProblemBase::updateMeshXFEM().

◆ _aux_evaluable_local_elem_range

std::unique_ptr<libMesh::ConstElemRange> FEProblemBase::_aux_evaluable_local_elem_range
protectedinherited

Definition at line 3497 of file FEProblemBase.h.

◆ _between_multi_app_transfers

ExecuteMooseObjectWarehouse<Transfer> FEProblemBase::_between_multi_app_transfers
protectedinherited

◆ _block_mat_side_cache

std::vector<std::unordered_map<SubdomainID, bool> > FEProblemBase::_block_mat_side_cache
protectedinherited

Cache for calculating materials on side.

Definition at line 3286 of file FEProblemBase.h.

Referenced by FEProblemBase::FEProblemBase(), and FEProblemBase::needInternalNeighborSideMaterial().

◆ _bnd_mat_side_cache

std::vector<std::unordered_map<BoundaryID, bool> > FEProblemBase::_bnd_mat_side_cache
protectedinherited

Cache for calculating materials on side.

Definition at line 3289 of file FEProblemBase.h.

Referenced by FEProblemBase::FEProblemBase(), and FEProblemBase::needBoundaryMaterialOnSide().

◆ _bnd_material_props

MaterialPropertyStorage& FEProblemBase::_bnd_material_props
protectedinherited

◆ _boundary_restricted_elem_integrity_check

const bool FEProblemBase::_boundary_restricted_elem_integrity_check
protectedinherited

whether to perform checking of boundary restricted elemental object variable dependencies, e.g.

whether the variable dependencies are defined on the selected boundaries

Definition at line 3428 of file FEProblemBase.h.

◆ _boundary_restricted_node_integrity_check

const bool FEProblemBase::_boundary_restricted_node_integrity_check
protectedinherited

whether to perform checking of boundary restricted nodal object variable dependencies, e.g.

whether the variable dependencies are defined on the selected boundaries

Definition at line 3424 of file FEProblemBase.h.

◆ _calculate_jacobian_in_uo

bool FEProblemBase::_calculate_jacobian_in_uo
protectedinherited

◆ _check_residual_for_nans

bool FEProblemBase::_check_residual_for_nans
protectedinherited

Whether to check the residual for NaN or Inf values.

Definition at line 3448 of file FEProblemBase.h.

Referenced by FEProblemBase::checkResidualForNans(), and FEProblemBase::setCheckResidualForNans().

◆ _checking_uo_aux_state

bool FEProblemBase::_checking_uo_aux_state = false
privateinherited

Flag used to indicate whether we are doing the uo/aux state check in execute.

Definition at line 3644 of file FEProblemBase.h.

Referenced by FEProblemBase::checkingUOAuxState(), and FEProblemBase::execute().

◆ _cli_option_found

bool Problem::_cli_option_found
protectedinherited

True if the CLI option is found.

Definition at line 52 of file Problem.h.

Referenced by Problem::_setCLIOption().

◆ _cm

std::vector<std::unique_ptr<libMesh::CouplingMatrix> > FEProblemBase::_cm
protectedinherited

◆ _color_output

bool Problem::_color_output
protectedinherited

True if we're going to attempt to write color output.

Definition at line 55 of file Problem.h.

◆ _computing_nonlinear_residual

bool SubProblem::_computing_nonlinear_residual
protectedinherited

Whether the non-linear residual is being evaluated.

Definition at line 1117 of file SubProblem.h.

Referenced by SubProblem::computingNonlinearResid(), FEProblemBase::computingNonlinearResid(), and SubProblem::computingNonlinearResid().

◆ _computing_scaling_jacobian

bool FEProblemBase::_computing_scaling_jacobian = false
privateinherited

Flag used to indicate whether we are computing the scaling Jacobian.

Definition at line 3638 of file FEProblemBase.h.

Referenced by FEProblemBase::computingScalingJacobian(), and FEProblemBase::computingScalingJacobian().

◆ _computing_scaling_residual

bool FEProblemBase::_computing_scaling_residual = false
privateinherited

Flag used to indicate whether we are computing the scaling Residual.

Definition at line 3641 of file FEProblemBase.h.

Referenced by FEProblemBase::computingScalingResidual(), and FEProblemBase::computingScalingResidual().

◆ _console

const ConsoleStream ConsoleStreamInterface::_console
inherited

An instance of helper class to write streams to the Console objects.

Definition at line 31 of file ConsoleStreamInterface.h.

Referenced by IterationAdaptiveDT::acceptStep(), MaterialOutputAction::act(), MeshOnlyAction::act(), SetupDebugAction::act(), FEProblemBase::adaptMesh(), Adaptivity::adaptMesh(), PerfGraph::addToExecutionList(), SimplePredictor::apply(), SystemBase::applyScalingFactors(), MultiApp::backup(), FEProblemBase::backupMultiApps(), CoarsenedPiecewiseLinear::buildCoarsenedGrid(), DefaultSteadyStateConvergence::checkConvergence(), MeshDiagnosticsGenerator::checkElementOverlap(), MeshDiagnosticsGenerator::checkElementTypes(), MeshDiagnosticsGenerator::checkElementVolumes(), FEProblemBase::checkExceptionAndStopSolve(), SolverSystem::checkInvalidSolution(), MeshDiagnosticsGenerator::checkLocalJacobians(), MeshDiagnosticsGenerator::checkNonConformalMesh(), MeshDiagnosticsGenerator::checkNonConformalMeshFromAdaptivity(), MeshDiagnosticsGenerator::checkNonMatchingEdges(), MeshDiagnosticsGenerator::checkNonPlanarSides(), MeshDiagnosticsGenerator::checkPolygons(), FEProblemBase::checkProblemIntegrity(), ReferenceResidualConvergence::checkResidualConvergence(), MeshDiagnosticsGenerator::checkSidesetsOrientation(), MeshDiagnosticsGenerator::checkWatertightNodesets(), MeshDiagnosticsGenerator::checkWatertightSidesets(), IterationAdaptiveDT::computeAdaptiveDT(), TransientBase::computeConstrainedDT(), DefaultMultiAppFixedPointConvergence::computeCustomConvergencePostprocessor(), NonlinearSystemBase::computeDamping(), FixedPointIterationAdaptiveDT::computeDT(), IterationAdaptiveDT::computeDT(), IterationAdaptiveDT::computeFailedDT(), IterationAdaptiveDT::computeInitialDT(), IterationAdaptiveDT::computeInterpolationDT(), FEProblemBase::computeLinearSystemTags(), LinearSystem::computeLinearSystemTags(), NonlinearSystemBase::computeScaling(), Problem::console(), TimeStepper::constrainStep(), IterationAdaptiveDT::constrainStep(), MultiApp::createApp(), FEProblemBase::execMultiApps(), FEProblemBase::execMultiAppTransfers(), Eigenvalue::execute(), SteadyBase::execute(), MFEMSteady::execute(), MessageFromInput::execute(), ActionWarehouse::executeActionsWithAction(), ActionWarehouse::executeAllActions(), MeshGeneratorSystem::executeMeshGenerators(), SidesetAroundSubdomainUpdater::finalize(), ElementQualityChecker::finalize(), FEProblemBase::finishMultiAppStep(), MeshRepairGenerator::fixOverlappingNodes(), SurfaceSubdomainsDelaunayRemesher::General2DDelaunay(), CoarsenBlockGenerator::generate(), OrientSurfaceMeshGenerator::generate(), PolyLineMeshFollowingNodeSetGenerator::generate(), MeshGenerator::generateInternal(), VariableCondensationPreconditioner::getDofToCondense(), InversePowerMethod::init(), NonlinearEigen::init(), FEProblemBase::initialAdaptMesh(), DefaultMultiAppFixedPointConvergence::initialize(), SubProblem::initialSetup(), EigenExecutionerBase::inversePowerIteration(), FEProblemBase::joinAndFinalize(), TransientBase::keepGoing(), IterationAdaptiveDT::limitDTByFunction(), IterationAdaptiveDT::limitDTToPostprocessorValue(), FEProblemBase::logAdd(), EigenExecutionerBase::makeBXConsistent(), Console::meshChanged(), SurfaceDelaunayGeneratorBase::meshNormalDeviation2D(), MooseBase::mooseDeprecated(), MooseBase::mooseDeprecatedNoTrace(), MooseBase::mooseInfo(), MooseBase::mooseWarning(), MooseBase::mooseWarningNonPrefixed(), ReferenceResidualConvergence::nonlinearConvergenceSetup(), Console::output(), DOFMapOutput::output(), MaterialPropertyDebugOutput::output(), PerfGraphOutput::output(), ReporterDebugOutput::output(), SolutionInvalidityOutput::output(), VariableResidualNormsDebugOutput::output(), ControlOutput::outputActiveObjects(), ControlOutput::outputChangedControls(), ControlOutput::outputControls(), Console::outputInput(), WebServerControl::outputMessage(), Console::outputPostprocessors(), PseudoTimestep::outputPseudoTimestep(), Console::outputReporters(), DefaultMultiAppFixedPointConvergence::outputResidualNorm(), Console::outputScalarVariables(), Console::outputSystemInformation(), FEProblemBase::possiblyRebuildGeomSearchPatches(), EigenExecutionerBase::postExecute(), AB2PredictorCorrector::postSolve(), ActionWarehouse::printActionDependencySets(), BlockRestrictionDebugOutput::printBlockRestrictionGroups(), BlockRestrictionDebugOutput::printBlockRestrictionMap(), BlockRestrictionDebugOutput::printBoundaryRestrictionGroups(), SolutionInvalidity::printDebug(), EigenExecutionerBase::printEigenvalue(), PicardSolve::printFixedPointConvergenceHistory(), SecantSolve::printFixedPointConvergenceHistory(), SteffensenSolve::printFixedPointConvergenceHistory(), FixedPointSolve::printFixedPointConvergenceReason(), PerfGraphLivePrint::printLiveMessage(), MaterialPropertyDebugOutput::printMaterialMap(), PerfGraphLivePrint::printStats(), NEML2Action::printSummary(), AutomaticMortarGeneration::projectPrimaryNodesSinglePair(), AutomaticMortarGeneration::projectSecondaryNodesSinglePair(), CoarsenBlockGenerator::recursiveCoarsen(), SolutionTimeAdaptiveDT::rejectStep(), MultiApp::restore(), FEProblemBase::restoreMultiApps(), FEProblemBase::restoreSolutions(), NonlinearSystemBase::setInitialSolution(), MooseApp::setupOptions(), Checkpoint::shouldOutput(), SubProblem::showFunctorRequestors(), SubProblem::showFunctors(), FullSolveMultiApp::showStatusMessage(), FEProblemSolve::solve(), FixedPointSolve::solve(), LinearSystem::solve(), NonlinearSystem::solve(), AStableDirk4::solve(), ExplicitRK2::solve(), ExplicitTVDRK2::solve(), ImplicitMidpoint::solve(), LStableDirk2::solve(), LStableDirk3::solve(), LStableDirk4::solve(), EigenProblem::solve(), FixedPointSolve::solveStep(), TransientMultiApp::solveStep(), MeshRepairGenerator::splitNonConvexPolygons(), PerfGraphLivePrint::start(), WebServerControl::startServer(), AB2PredictorCorrector::step(), NonlinearEigen::takeStep(), TransientBase::takeStep(), MFEMTransient::takeStep(), TerminateChainControl::terminate(), SubProblem::timestepSetup(), FEProblemBase::updateMeshXFEM(), Convergence::verboseOutput(), Console::writeTimestepInformation(), Console::writeVariableNorms(), and FEProblemBase::~FEProblemBase().

◆ _const_jacobian

bool FEProblemBase::_const_jacobian
protectedinherited

◆ _consumed_material_properties

std::map<MooseObjectName, std::set<std::string> > SubProblem::_consumed_material_properties
privateinherited

◆ _control_warehouse

ExecuteMooseObjectWarehouse<Control> FEProblemBase::_control_warehouse
protectedinherited

◆ _convergences

MooseObjectWarehouse<Convergence> FEProblemBase::_convergences
protectedinherited

◆ _coupling

Moose::CouplingType FEProblemBase::_coupling
protectedinherited

◆ _current_algebraic_bnd_node_range

std::unique_ptr<ConstBndNodeRange> FEProblemBase::_current_algebraic_bnd_node_range
protectedinherited

◆ _current_algebraic_elem_range

std::unique_ptr<libMesh::ConstElemRange> FEProblemBase::_current_algebraic_elem_range
protectedinherited

◆ _current_algebraic_node_range

std::unique_ptr<libMesh::ConstNodeRange> FEProblemBase::_current_algebraic_node_range
protectedinherited

◆ _current_execute_on_flag

ExecFlagType FEProblemBase::_current_execute_on_flag
protectedinherited

◆ _current_ic_state

unsigned short FEProblemBase::_current_ic_state
protectedinherited

Definition at line 3508 of file FEProblemBase.h.

Referenced by FEProblemBase::getCurrentICState().

◆ _current_linear_sys

LinearSystem* FEProblemBase::_current_linear_sys
protectedinherited

◆ _current_nl_sys

NonlinearSystemBase* FEProblemBase::_current_nl_sys
protectedinherited

The current nonlinear system that we are solving.

Definition at line 3160 of file FEProblemBase.h.

Referenced by FEProblemBase::addCachedResidualDirectly(), FEProblemBase::addJacobian(), FEProblemBase::addJacobianBlockTags(), FEProblemBase::addJacobianLowerD(), FEProblemBase::addJacobianNeighbor(), FEProblemBase::addJacobianNeighborLowerD(), FEProblemBase::addJacobianOffDiagScalar(), FEProblemBase::addJacobianScalar(), FEProblemBase::addResidual(), FEProblemBase::addResidualLower(), FEProblemBase::addResidualNeighbor(), FEProblemBase::addResidualScalar(), FEProblemBase::checkExceptionAndStopSolve(), FEProblemBase::computeBounds(), FEProblemBase::computeDamping(), FEProblemBase::computeJacobianBlock(), FEProblemBase::computeJacobianBlocks(), EigenProblem::computeJacobianBlocks(), FEProblemBase::computeJacobianInternal(), FEProblemBase::computeJacobianTag(), FEProblemBase::computeJacobianTags(), FEProblemBase::computeNearNullSpace(), FEProblemBase::computeNullSpace(), FEProblemBase::computePostCheck(), FEProblemBase::computeResidualAndJacobian(), FEProblemBase::computeResidualInternal(), FEProblemBase::computeResidualL2Norm(), FEProblemBase::computeResidualTag(), FEProblemBase::computeResidualTags(), FEProblemBase::computeResidualType(), FEProblemBase::computeTransposeNullSpace(), FEProblemBase::currentNonlinearSystem(), FEProblemBase::currentNonlinearSystem(), EigenProblem::doFreeNonlinearPowerIterations(), EigenProblem::EigenProblem(), FEProblemBase::prepare(), FEProblemBase::prepareAssembly(), FEProblemBase::prepareAssemblyNeighbor(), FEProblemBase::prepareFaceShapes(), FEProblemBase::prepareNeighborShapes(), FEProblemBase::prepareShapes(), FEProblemBase::reinitDirac(), FEProblemBase::reinitNeighborPhys(), FEProblemBase::reinitNeighborPhys(), FEProblemBase::reinitOffDiagScalars(), FEProblemBase::setCurrentNonlinearSystem(), FEProblemBase::setResidual(), FEProblemBase::setResidualNeighbor(), FEProblemBase::solve(), and EigenProblem::solve().

◆ _current_residual_vector_tags

std::vector<VectorTag> FEProblemBase::_current_residual_vector_tags
privateinherited

A data member to store the residual vector tag(s) passed into computeResidualTag(s).

This data member will be used when APIs like cacheResidual, addCachedResiduals, etc. are called

Definition at line 3655 of file FEProblemBase.h.

Referenced by FEProblemBase::clearCurrentResidualVectorTags(), FEProblemBase::currentResidualVectorTags(), and FEProblemBase::setCurrentResidualVectorTags().

◆ _current_solver_sys

SolverSystem* FEProblemBase::_current_solver_sys
protectedinherited

The current solver system.

Definition at line 3163 of file FEProblemBase.h.

Referenced by FEProblemBase::setCurrentLinearSystem(), and FEProblemBase::setCurrentNonlinearSystem().

◆ _currently_computing_jacobian

bool SubProblem::_currently_computing_jacobian
protectedinherited

◆ _currently_computing_residual

bool SubProblem::_currently_computing_residual
protectedinherited

◆ _currently_computing_residual_and_jacobian

bool SubProblem::_currently_computing_residual_and_jacobian
protectedinherited

Flag to determine whether the problem is currently computing the residual and Jacobian.

Definition at line 1114 of file SubProblem.h.

Referenced by SubProblem::currentlyComputingResidualAndJacobian(), and SubProblem::setCurrentlyComputingResidualAndJacobian().

◆ _cycles_completed

unsigned int FEProblemBase::_cycles_completed
protectedinherited

◆ _default_families_without_p_refinement

const std::unordered_set< FEFamily > SubProblem::_default_families_without_p_refinement
staticprivateinherited
Initial value:

The set of variable families by default disable p-refinement.

Definition at line 50 of file SubProblem.h.

54{
55class FunctorEnvelopeBase;
56}
57

Referenced by SubProblem::markFamilyPRefinement().

◆ _default_ghosting

bool SubProblem::_default_ghosting
protectedinherited

Whether or not to use default libMesh coupling.

Definition at line 1105 of file SubProblem.h.

Referenced by SubProblem::defaultGhosting().

◆ _dirac_kernel_info

DiracKernelInfo SubProblem::_dirac_kernel_info
protectedinherited

◆ _discrete_materials

MaterialWarehouse FEProblemBase::_discrete_materials
protectedinherited

◆ _displaced_mesh

MooseMesh* FEProblemBase::_displaced_mesh
protectedinherited

◆ _displaced_problem

std::shared_ptr<DisplacedProblem> FEProblemBase::_displaced_problem
protectedinherited

Definition at line 3355 of file FEProblemBase.h.

Referenced by FEProblemBase::adaptMesh(), FEProblemBase::addAnyRedistributers(), FEProblemBase::addAuxArrayVariable(), FEProblemBase::addAuxScalarKernel(), FEProblemBase::addAuxScalarVariable(), FEProblemBase::addAuxVariable(), FEProblemBase::addAuxVariable(), FEProblemBase::addCachedJacobian(), FEProblemBase::addCachedResidual(), FEProblemBase::addCachedResidualDirectly(), FEProblemBase::addConstraint(), FEProblemBase::addDGKernel(), FEProblemBase::addDiracKernel(), FEProblemBase::addDisplacedProblem(), FEProblemBase::addFunction(), FEProblemBase::addFunctorMaterial(), FEProblemBase::addFVKernel(), FEProblemBase::addGhostedBoundary(), FEProblemBase::addIndicator(), FEProblemBase::addInterfaceKernel(), FEProblemBase::addJacobian(), FEProblemBase::addJacobianBlockTags(), FEProblemBase::addJacobianLowerD(), FEProblemBase::addJacobianNeighbor(), FEProblemBase::addJacobianNeighborLowerD(), FEProblemBase::addMarker(), FEProblemBase::addMaterialHelper(), FEProblemBase::addMultiApp(), FEProblemBase::addNodalKernel(), FEProblemBase::addObjectParamsHelper(), FEProblemBase::addResidual(), FEProblemBase::addResidualLower(), FEProblemBase::addResidualNeighbor(), FEProblemBase::addScalarKernel(), FEProblemBase::addTimeIntegrator(), FEProblemBase::addTransfer(), FEProblemBase::addUserObject(), FEProblemBase::addVariable(), FEProblemBase::advanceState(), FEProblemBase::automaticScaling(), FEProblemBase::bumpAllQRuleOrder(), FEProblemBase::bumpVolumeQRuleOrder(), FEProblemBase::cacheJacobian(), FEProblemBase::cacheJacobianNeighbor(), FEProblemBase::cacheResidual(), FEProblemBase::cacheResidualNeighbor(), FEProblemBase::checkDisplacementOrders(), FEProblemBase::clearActiveElementalMooseVariables(), FEProblemBase::clearActiveFEVariableCoupleableMatrixTags(), FEProblemBase::clearActiveFEVariableCoupleableVectorTags(), FEProblemBase::clearActiveScalarVariableCoupleableMatrixTags(), FEProblemBase::clearActiveScalarVariableCoupleableVectorTags(), FEProblemBase::clearDiracInfo(), FEProblemBase::computeJacobianBlocks(), EigenProblem::computeJacobianBlocks(), FEProblemBase::computeJacobianTags(), FEProblemBase::computeResidualAndJacobian(), FEProblemBase::computeResidualTags(), FEProblemBase::computeUserObjectsInternal(), FEProblemBase::computingNonlinearResid(), FEProblemBase::createMortarInterface(), FEProblemBase::createQRules(), FEProblemBase::customSetup(), FEProblemBase::execute(), FEProblemBase::getDiracElements(), FEProblemBase::getDisplacedProblem(), FEProblemBase::getDisplacedProblem(), FEProblemBase::getMortarUserObjects(), FEProblemBase::ghostGhostedBoundaries(), FEProblemBase::haveADObjects(), FEProblemBase::haveDisplaced(), FEProblemBase::init(), FEProblemBase::initXFEM(), FEProblemBase::jacobianSetup(), FEProblemBase::mesh(), FEProblemBase::mesh(), FEProblemBase::meshChanged(), FEProblemBase::outputStep(), FEProblemBase::possiblyRebuildGeomSearchPatches(), FEProblemBase::prepare(), FEProblemBase::prepare(), FEProblemBase::prepareAssembly(), FEProblemBase::prepareAssemblyNeighbor(), FEProblemBase::prepareFace(), FEProblemBase::reinitBecauseOfGhostingOrNewGeomObjects(), FEProblemBase::reinitDirac(), FEProblemBase::reinitElem(), FEProblemBase::reinitElemFaceRef(), FEProblemBase::reinitElemNeighborAndLowerD(), FEProblemBase::reinitLowerDElem(), FEProblemBase::reinitNeighbor(), FEProblemBase::reinitNeighborFaceRef(), FEProblemBase::reinitNode(), FEProblemBase::reinitNodeFace(), FEProblemBase::reinitNodes(), FEProblemBase::reinitNodesNeighbor(), FEProblemBase::reinitOffDiagScalars(), FEProblemBase::reinitScalars(), FEProblemBase::resetState(), FEProblemBase::residualSetup(), FEProblemBase::restoreSolutions(), FEProblemBase::setActiveElementalMooseVariables(), FEProblemBase::setActiveFEVariableCoupleableMatrixTags(), FEProblemBase::setActiveFEVariableCoupleableVectorTags(), FEProblemBase::setActiveScalarVariableCoupleableMatrixTags(), FEProblemBase::setActiveScalarVariableCoupleableVectorTags(), FEProblemBase::setAuxKernelParamsAndLog(), FEProblemBase::setCurrentBoundaryID(), FEProblemBase::setCurrentLowerDElem(), FEProblemBase::setCurrentlyComputingResidual(), FEProblemBase::setCurrentSubdomainID(), FEProblemBase::setNeighborSubdomainID(), FEProblemBase::setNeighborSubdomainID(), FEProblemBase::setResidual(), FEProblemBase::setResidualNeighbor(), FEProblemBase::setResidualObjectParamsAndLog(), FEProblemBase::solve(), EigenProblem::solve(), FEProblemBase::timestepSetup(), FEProblemBase::uniformRefine(), and FEProblemBase::updateGeomSearch().

◆ _dt

Real& FEProblemBase::_dt
protectedinherited

◆ _dt_old

Real& FEProblemBase::_dt_old
protectedinherited

Definition at line 3120 of file FEProblemBase.h.

Referenced by FEProblemBase::dtOld(), and FEProblemBase::FEProblemBase().

◆ _enabled

const bool& MooseObject::_enabled
protectedinherited

Reference to the "enable" InputParameters, used by Controls for toggling on/off MooseObjects.

Definition at line 71 of file MooseObject.h.

Referenced by MooseObject::enabled().

◆ _error_on_jacobian_nonzero_reallocation

bool FEProblemBase::_error_on_jacobian_nonzero_reallocation
privateinherited

Whether to error when the Jacobian is re-allocated, usually because the sparsity pattern changed.

Definition at line 3583 of file FEProblemBase.h.

Referenced by FEProblemBase::errorOnJacobianNonzeroReallocation(), and FEProblemBase::setErrorOnJacobianNonzeroReallocation().

◆ _evaluable_local_elem_range

std::unique_ptr<libMesh::ConstElemRange> FEProblemBase::_evaluable_local_elem_range
protectedinherited

◆ _exception_message

std::string FEProblemBase::_exception_message
protectedinherited

The error message to go with an exception.

Definition at line 3476 of file FEProblemBase.h.

Referenced by FEProblemBase::checkExceptionAndStopSolve(), and FEProblemBase::setException().

◆ _factory

Factory& SubProblem::_factory
protectedinherited

◆ _fail_next_system_convergence_check

bool FEProblemBase::_fail_next_system_convergence_check
privateinherited

◆ _family_for_p_refinement

std::unordered_map<FEFamily, bool> SubProblem::_family_for_p_refinement
privateinherited

Indicate whether a family is disabled for p-refinement.

Definition at line 1223 of file SubProblem.h.

Referenced by SubProblem::markFamilyPRefinement(), and SubProblem::preparePRefinement().

◆ _fe_matrix_tags

std::set<TagID> FEProblemBase::_fe_matrix_tags
protectedinherited

◆ _fe_vector_tags

std::set<TagID> FEProblemBase::_fe_vector_tags
protectedinherited

◆ _force_restart

const bool FEProblemBase::_force_restart
privateinherited

Definition at line 3594 of file FEProblemBase.h.

◆ _from_multi_app_transfers

ExecuteMooseObjectWarehouse<Transfer> FEProblemBase::_from_multi_app_transfers
protectedinherited

◆ _functions

MooseObjectWarehouse<Function> FEProblemBase::_functions
protectedinherited

◆ _functor_to_request_info

std::vector<std::multimap<std::string, std::pair<bool, bool> > > SubProblem::_functor_to_request_info
privateinherited

A multimap (for each thread) from unfilled functor requests to whether the requests were for AD functors and whether the requestor was an AD object.

Definition at line 1176 of file SubProblem.h.

Referenced by SubProblem::addFunctor(), SubProblem::getFunctor(), and SubProblem::SubProblem().

◆ _functor_to_requestors

std::map<std::string, std::set<std::string> > SubProblem::_functor_to_requestors
privateinherited

The requestors of functors where the key is the prop name and the value is a set of names of requestors.

Definition at line 1172 of file SubProblem.h.

Referenced by SubProblem::getFunctor(), SubProblem::initialSetup(), and SubProblem::showFunctorRequestors().

◆ _functors

std::vector<std::multimap<std::string, std::tuple<TrueFunctorIs, std::unique_ptr<Moose::FunctorEnvelopeBase>, std::unique_ptr<Moose::FunctorEnvelopeBase> > > > SubProblem::_functors
privateinherited

A container holding pointers to all the functors in our problem.

We hold a tuple where the zeroth item in the tuple is an enumerator that describes what type of functor the "true" functor is (either NONAD or AD), the first item in the tuple is the non-AD version of the functor, and the second item in the tuple is the AD version of the functor

Definition at line 1159 of file SubProblem.h.

Referenced by SubProblem::addFunctor(), SubProblem::getFunctor(), SubProblem::hasFunctor(), SubProblem::hasFunctorWithType(), SubProblem::initialSetup(), SubProblem::showFunctors(), and SubProblem::SubProblem().

◆ _fv_bcs_integrity_check

bool FEProblemBase::_fv_bcs_integrity_check
protectedinherited

Whether to check overlapping Dirichlet and Flux BCs and/or multiple DirichletBCs per sideset.

Definition at line 3438 of file FEProblemBase.h.

Referenced by FEProblemBase::fvBCsIntegrityCheck(), and FEProblemBase::fvBCsIntegrityCheck().

◆ _fv_ics

FVInitialConditionWarehouse FEProblemBase::_fv_ics
protectedinherited

◆ _geometric_search_data

GeometricSearchData FEProblemBase::_geometric_search_data
protectedinherited

◆ _ghosted_elems

std::set<dof_id_type> SubProblem::_ghosted_elems
protectedinherited

◆ _grad_phi_zero

std::vector<VariablePhiGradient> FEProblemBase::_grad_phi_zero
inherited

◆ _grad_zero

std::vector<VariableGradient> FEProblemBase::_grad_zero
inherited

◆ _has_active_elemental_moose_variables

std::vector<unsigned int> SubProblem::_has_active_elemental_moose_variables
protectedinherited

Whether or not there is currently a list of active elemental moose variables.

Definition at line 1094 of file SubProblem.h.

Referenced by SubProblem::clearActiveElementalMooseVariables(), SubProblem::hasActiveElementalMooseVariables(), SubProblem::setActiveElementalMooseVariables(), and SubProblem::SubProblem().

◆ _has_active_material_properties

std::vector<unsigned char> FEProblemBase::_has_active_material_properties
protectedinherited

◆ _has_constraints

bool FEProblemBase::_has_constraints
protectedinherited

Whether or not this system has any Constraints.

Definition at line 3373 of file FEProblemBase.h.

Referenced by FEProblemBase::addConstraint(), NonlinearSystemBase::computeJacobianInternal(), and NonlinearSystemBase::computeResidualInternal().

◆ _has_dampers

bool FEProblemBase::_has_dampers
protectedinherited

Whether or not this system has any Dampers associated with it.

Definition at line 3370 of file FEProblemBase.h.

Referenced by FEProblemBase::addDamper(), FEProblemBase::computeDamping(), FEProblemBase::computePostCheck(), and FEProblemBase::hasDampers().

◆ _has_exception

bool FEProblemBase::_has_exception
protectedinherited

Whether or not an exception has occurred.

Definition at line 3461 of file FEProblemBase.h.

Referenced by FEProblemBase::checkExceptionAndStopSolve(), FEProblemBase::hasException(), and FEProblemBase::setException().

◆ _has_initialized_stateful

bool FEProblemBase::_has_initialized_stateful
protectedinherited

Whether nor not stateful materials have been initialized.

Definition at line 3385 of file FEProblemBase.h.

Referenced by FEProblemBase::meshChanged().

◆ _has_internal_edge_residual_objects

bool FEProblemBase::_has_internal_edge_residual_objects
privateinherited

Whether the problem has dgkernels or interface kernels.

Definition at line 3606 of file FEProblemBase.h.

Referenced by FEProblemBase::addDGKernel(), FEProblemBase::addInterfaceKernel(), and FEProblemBase::hasNeighborCoupling().

◆ _has_jacobian

bool FEProblemBase::_has_jacobian
protectedinherited

Indicates if the Jacobian was computed.

Definition at line 3391 of file FEProblemBase.h.

Referenced by FEProblemBase::computeJacobianTags(), FEProblemBase::hasJacobian(), FEProblemBase::meshChanged(), and FEProblemBase::prepare().

◆ _has_kokkos_objects

bool FEProblemBase::_has_kokkos_objects = false
privateinherited

Whether we have any Kokkos objects.

Definition at line 3672 of file FEProblemBase.h.

Referenced by FEProblemBase::hasKokkosObjects(), FEProblemBase::init(), and FEProblemBase::initElementStatefulProps().

◆ _has_kokkos_residual_objects

bool FEProblemBase::_has_kokkos_residual_objects = false
privateinherited

Whether we have any Kokkos residual objects.

Definition at line 3675 of file FEProblemBase.h.

Referenced by FEProblemBase::hasKokkosResidualObjects().

◆ _has_mortar

bool FEProblemBase::_has_mortar
privateinherited

Whether the simulation requires mortar coupling.

Definition at line 3628 of file FEProblemBase.h.

Referenced by FEProblemBase::createMortarInterface(), and FEProblemBase::hasMortarCoupling().

◆ _has_nonlocal_coupling

bool FEProblemBase::_has_nonlocal_coupling
protectedinherited

◆ _has_time_integrator

bool FEProblemBase::_has_time_integrator
protectedinherited

Indicates whether or not this executioner has a time integrator (during setup)

Definition at line 3458 of file FEProblemBase.h.

Referenced by FEProblemBase::addTimeIntegrator(), and FEProblemBase::hasTimeIntegrator().

◆ _have_ad_objects

bool SubProblem::_have_ad_objects
protectedinherited

AD flag indicating whether any AD objects have been added.

Definition at line 1129 of file SubProblem.h.

Referenced by SubProblem::haveADObjects(), SubProblem::haveADObjects(), DisplacedProblem::haveADObjects(), and FEProblemBase::haveADObjects().

◆ _have_fv

bool FEProblemBase::_have_fv = false
privateinherited

Whether we are performing some calculations with finite volume discretizations.

Definition at line 3658 of file FEProblemBase.h.

Referenced by FEProblemBase::haveFV(), and FEProblemBase::needFV().

◆ _have_p_refinement

bool SubProblem::_have_p_refinement
privateinherited

Whether p-refinement has been requested at any point during the simulation.

Definition at line 1220 of file SubProblem.h.

Referenced by SubProblem::havePRefinement(), and SubProblem::preparePRefinement().

◆ _ics

InitialConditionWarehouse FEProblemBase::_ics
protectedinherited

Initial condition storage

Definition at line 3224 of file FEProblemBase.h.

Referenced by FEProblemBase::addInitialCondition(), and FEProblemBase::getInitialConditionWarehouse().

◆ _identify_variable_groups_in_nl

const bool FEProblemBase::_identify_variable_groups_in_nl
privateinherited

Whether to identify variable groups in nonlinear systems. This affects dof ordering.

Definition at line 3650 of file FEProblemBase.h.

Referenced by FEProblemBase::identifyVariableGroupsInNL().

◆ _ignore_zeros_in_jacobian

bool FEProblemBase::_ignore_zeros_in_jacobian
privateinherited

Whether to ignore zeros in the Jacobian, thereby leading to a reduced sparsity pattern.

Definition at line 3590 of file FEProblemBase.h.

Referenced by FEProblemBase::ignoreZerosInJacobian(), FEProblemBase::setIgnoreZerosInJacobian(), and FEProblemBase::setPreserveMatrixSparsityPattern().

◆ _immediately_print_invalid_solution

const bool& FEProblemBase::_immediately_print_invalid_solution
privateinherited

Definition at line 3600 of file FEProblemBase.h.

Referenced by FEProblemBase::immediatelyPrintInvalidSolution().

◆ _indicators

MooseObjectWarehouse<Indicator> FEProblemBase::_indicators
protectedinherited

◆ _initialized

bool FEProblemBase::_initialized
protectedinherited

Definition at line 3091 of file FEProblemBase.h.

Referenced by FEProblemBase::init(), and FEProblemBase::initialized().

◆ _input_file_saved

bool FEProblemBase::_input_file_saved
protectedinherited

whether input file has been written

Definition at line 3367 of file FEProblemBase.h.

◆ _interface_mat_side_cache

std::vector<std::unordered_map<BoundaryID, bool> > FEProblemBase::_interface_mat_side_cache
protectedinherited

Cache for calculating materials on interface.

Definition at line 3292 of file FEProblemBase.h.

Referenced by FEProblemBase::FEProblemBase(), and FEProblemBase::needInterfaceMaterialOnSide().

◆ _interface_materials

MaterialWarehouse FEProblemBase::_interface_materials
protectedinherited

◆ _internal_side_indicators

MooseObjectWarehouse<InternalSideIndicatorBase> FEProblemBase::_internal_side_indicators
protectedinherited

◆ _is_petsc_options_inserted

bool FEProblemBase::_is_petsc_options_inserted
protectedinherited

If or not PETSc options have been added to database.

Definition at line 3491 of file FEProblemBase.h.

Referenced by FEProblemBase::FEProblemBase(), FEProblemBase::petscOptionsInserted(), FEProblemBase::solve(), and FEProblemBase::solveLinearSystem().

◆ _kernel_coverage_blocks

std::vector<SubdomainName> FEProblemBase::_kernel_coverage_blocks
protectedinherited

◆ _kernel_coverage_check

CoverageCheckMode FEProblemBase::_kernel_coverage_check
protectedinherited

Determines whether and which subdomains are to be checked to ensure that they have an active kernel.

Definition at line 3419 of file FEProblemBase.h.

Referenced by FEProblemBase::checkProblemIntegrity(), FEProblemBase::FEProblemBase(), FEProblemBase::setKernelCoverageCheck(), and FEProblemBase::setKernelCoverageCheck().

◆ _kokkos_assembly

Moose::Kokkos::Assembly FEProblemBase::_kokkos_assembly
protectedinherited

◆ _kokkos_bnd_material_props

Moose::Kokkos::MaterialPropertyStorage& FEProblemBase::_kokkos_bnd_material_props
protectedinherited

◆ _kokkos_fe_systems

Moose::Kokkos::Array<Moose::Kokkos::FESystem> FEProblemBase::_kokkos_fe_systems
protectedinherited

FESystem array - sparsely populated (only slots for systems needing a Kokkos::FESystem)

Definition at line 3187 of file FEProblemBase.h.

Referenced by FEProblemBase::getKokkosFESystems(), and FEProblemBase::getKokkosFESystems().

◆ _kokkos_functions

MooseObjectWarehouse<Moose::FunctionBase> FEProblemBase::_kokkos_functions
protectedinherited

◆ _kokkos_material_props

Moose::Kokkos::MaterialPropertyStorage& FEProblemBase::_kokkos_material_props
protectedinherited

◆ _kokkos_materials

MaterialWarehouse FEProblemBase::_kokkos_materials
protectedinherited

◆ _kokkos_mesh_initialization_hooks

std::vector<std::function<void()> > FEProblemBase::_kokkos_mesh_initialization_hooks
privateinherited

Container holding hooks for functions that need to be called after Kokkos mesh initialization.

Definition at line 3678 of file FEProblemBase.h.

Referenced by FEProblemBase::addKokkosMeshInitializationHook().

◆ _kokkos_neighbor_material_props

Moose::Kokkos::MaterialPropertyStorage& FEProblemBase::_kokkos_neighbor_material_props
protectedinherited

◆ _kokkos_systems

Moose::Kokkos::Array<Moose::Kokkos::System> FEProblemBase::_kokkos_systems
protectedinherited

System array - sparsely populated (only slots for systems needing a Kokkos::System)

Definition at line 3185 of file FEProblemBase.h.

Referenced by FEProblemBase::getKokkosSystems(), and FEProblemBase::getKokkosSystems().

◆ _line_search

std::shared_ptr<LineSearch> FEProblemBase::_line_search
protectedinherited

◆ _linear_convergence_names

std::optional<std::vector<ConvergenceName> > FEProblemBase::_linear_convergence_names
protectedinherited

Linear system(s) convergence name(s) (if any)

Definition at line 3096 of file FEProblemBase.h.

Referenced by FEProblemBase::getLinearConvergenceNames(), FEProblemBase::hasLinearConvergenceObjects(), and FEProblemBase::setLinearConvergenceNames().

◆ _linear_matrix_tags

std::set<TagID> FEProblemBase::_linear_matrix_tags
protectedinherited

Temporary storage for filtered matrix tags for linear systems.

Definition at line 3110 of file FEProblemBase.h.

Referenced by FEProblemBase::computeLinearSystemSys().

◆ _linear_sys_name_to_num

std::map<LinearSystemName, unsigned int> FEProblemBase::_linear_sys_name_to_num
protectedinherited

Map from linear system name to number.

Definition at line 3139 of file FEProblemBase.h.

Referenced by FEProblemBase::FEProblemBase(), and FEProblemBase::linearSysNum().

◆ _linear_sys_names

const std::vector<LinearSystemName> FEProblemBase::_linear_sys_names
protectedinherited

◆ _linear_systems

std::vector<std::shared_ptr<LinearSystem> > FEProblemBase::_linear_systems
protectedinherited

◆ _linear_vector_tags

std::set<TagID> FEProblemBase::_linear_vector_tags
protectedinherited

Temporary storage for filtered vector tags for linear systems.

Definition at line 3107 of file FEProblemBase.h.

Referenced by FEProblemBase::computeLinearSystemSys().

◆ _map_block_material_props

std::map<SubdomainID, std::set<std::string> > SubProblem::_map_block_material_props
protectedinherited

Map of material properties (block_id -> list of properties)

Definition at line 1067 of file SubProblem.h.

Referenced by SubProblem::checkBlockMatProps(), SubProblem::getMaterialPropertyBlocks(), SubProblem::hasBlockMaterialProperty(), and SubProblem::storeSubdomainMatPropName().

◆ _map_block_material_props_check

std::map<SubdomainID, std::multimap<std::string, std::string> > SubProblem::_map_block_material_props_check
protectedinherited

Data structures of the requested material properties.

We store them in a map from boundary/block id to multimap. Each of the multimaps is a list of requestor object names to material property names.

Definition at line 1085 of file SubProblem.h.

Referenced by SubProblem::checkBlockMatProps(), and SubProblem::storeSubdomainDelayedCheckMatProp().

◆ _map_boundary_material_props

std::map<BoundaryID, std::set<std::string> > SubProblem::_map_boundary_material_props
protectedinherited

Map for boundary material properties (boundary_id -> list of properties)

Definition at line 1070 of file SubProblem.h.

Referenced by SubProblem::checkBoundaryMatProps(), SubProblem::getMaterialPropertyBoundaryIDs(), SubProblem::hasBoundaryMaterialProperty(), and SubProblem::storeBoundaryMatPropName().

◆ _map_boundary_material_props_check

std::map<BoundaryID, std::multimap<std::string, std::string> > SubProblem::_map_boundary_material_props_check
protectedinherited

◆ _markers

MooseObjectWarehouse<Marker> FEProblemBase::_markers
protectedinherited

◆ _material_coverage_blocks

std::vector<SubdomainName> FEProblemBase::_material_coverage_blocks
protectedinherited

◆ _material_coverage_check

CoverageCheckMode FEProblemBase::_material_coverage_check
protectedinherited

Determines whether and which subdomains are to be checked to ensure that they have an active material.

Definition at line 3434 of file FEProblemBase.h.

Referenced by FEProblemBase::checkProblemIntegrity(), FEProblemBase::FEProblemBase(), FEProblemBase::setMaterialCoverageCheck(), and FEProblemBase::setMaterialCoverageCheck().

◆ _material_dependency_check

const bool FEProblemBase::_material_dependency_check
protectedinherited

Determines whether a check to verify material dependencies on every subdomain.

Definition at line 3441 of file FEProblemBase.h.

Referenced by FEProblemBase::checkProblemIntegrity().

◆ _material_prop_registry

MaterialPropertyRegistry FEProblemBase::_material_prop_registry
protectedinherited

◆ _material_property_requested

std::set<std::string> SubProblem::_material_property_requested
protectedinherited

set containing all material property names that have been requested by getMaterialProperty*

Definition at line 1077 of file SubProblem.h.

Referenced by SubProblem::isMatPropRequested(), and SubProblem::markMatPropRequested().

◆ _material_props

MaterialPropertyStorage& FEProblemBase::_material_props
protectedinherited

◆ _materials

MaterialWarehouse FEProblemBase::_materials
protectedinherited

◆ _matrix_tag_id_to_tag_name

std::map<TagID, TagName> SubProblem::_matrix_tag_id_to_tag_name
protectedinherited

Reverse map.

Definition at line 1059 of file SubProblem.h.

Referenced by SubProblem::addMatrixTag(), SubProblem::matrixTagExists(), and SubProblem::matrixTagName().

◆ _matrix_tag_name_to_tag_id

std::map<TagName, TagID> SubProblem::_matrix_tag_name_to_tag_id
protectedinherited

◆ _max_qps

unsigned int FEProblemBase::_max_qps
protectedinherited

Maximum number of quadrature points used in the problem.

Definition at line 3452 of file FEProblemBase.h.

Referenced by FEProblemBase::getMaxQps(), FEProblemBase::reinitDirac(), and FEProblemBase::updateMaxQps().

◆ _max_scalar_order

libMesh::Order FEProblemBase::_max_scalar_order
protectedinherited

Maximum scalar variable order.

Definition at line 3455 of file FEProblemBase.h.

Referenced by FEProblemBase::addAuxScalarVariable(), and FEProblemBase::getMaxScalarOrder().

◆ _mesh

MooseMesh& FEProblemBase::_mesh
protectedinherited

◆ _mesh_divisions

MooseObjectWarehouse<MeshDivision> FEProblemBase::_mesh_divisions
protectedinherited

Warehouse to store mesh divisions NOTE: this could probably be moved to the MooseMesh instead of the Problem Time (and people's uses) will tell where this fits best.

Definition at line 3204 of file FEProblemBase.h.

Referenced by FEProblemBase::addMeshDivision(), and FEProblemBase::getMeshDivision().

◆ _metaname

const RestartableDataMapName Restartable::_metaname
privateinherited

Restartable metadata name.

Definition at line 247 of file Restartable.h.

Referenced by Restartable::registerRestartableDataOnApp().

◆ _mortar_data

std::unique_ptr<MortarInterfaceWarehouse> FEProblemBase::_mortar_data
protectedinherited

◆ _multi_apps

ExecuteMooseObjectWarehouse<MultiApp> FEProblemBase::_multi_apps
protectedinherited

◆ _multiapp_fixed_point_convergence_name

std::optional<ConvergenceName> FEProblemBase::_multiapp_fixed_point_convergence_name
protectedinherited

◆ _name

const std::string& MooseBase::_name
protectedinherited

The name of this class.

Definition at line 381 of file MooseBase.h.

Referenced by AddFieldSplitAction::act(), AddBCAction::act(), AddConstraintAction::act(), AddControlAction::act(), AddConvergenceAction::act(), AddCorrectorAction::act(), AddDamperAction::act(), AddDGKernelAction::act(), AddDiracKernelAction::act(), AddDistributionAction::act(), AddFunctionAction::act(), AddFunctorMaterialAction::act(), AddFVBCAction::act(), AddFVInitialConditionAction::act(), AddFVInterfaceKernelAction::act(), AddFVInterpolationMethodAction::act(), AddFVKernelAction::act(), AddHDGKernelAction::act(), AddIndicatorAction::act(), AddInitialConditionAction::act(), AddInterfaceKernelAction::act(), AddKernelAction::act(), AddLinearFVBCAction::act(), AddLinearFVKernelAction::act(), AddMarkerAction::act(), AddMaterialAction::act(), AddMeshDivisionAction::act(), AddMeshGeneratorAction::act(), AddMeshModifiersAction::act(), AddMultiAppAction::act(), AddNodalKernelAction::act(), AddOutputAction::act(), AddPositionsAction::act(), AddPostprocessorAction::act(), AddReporterAction::act(), AddSamplerAction::act(), AddScalarKernelAction::act(), AddTimesAction::act(), AddTimeStepperAction::act(), AddTransferAction::act(), AddUserObjectAction::act(), AddVectorPostprocessorAction::act(), PartitionerAction::act(), ReadExecutorParamsAction::act(), SetupPreconditionerAction::act(), SetupTimeIntegratorAction::act(), AddMFEMComplexBCComponentAction::act(), AddMFEMComplexKernelComponentAction::act(), AddMFEMFESpaceAction::act(), AddMFEMFESpaceHierarchyAction::act(), AddMFEMQuadratureFunctionAction::act(), AddMFEMSolverAction::act(), AddMFEMSubMeshAction::act(), ADPiecewiseLinearInterpolationMaterial::ADPiecewiseLinearInterpolationMaterial(), BatchMeshGeneratorAction::BatchMeshGeneratorAction(), PiecewiseLinearBase::buildInterpolation(), CombinerGenerator::CombinerGenerator(), Executor::Executor(), ExtraIDIntegralReporter::ExtraIDIntegralReporter(), MultiApp::fillPositions(), CentroidMultiApp::fillPositions(), QuadraturePointMultiApp::fillPositions(), FunctionDT::FunctionDT(), FillBetweenCurvesGenerator::generate(), FillBetweenPointVectorsGenerator::generate(), FillBetweenSidesetsGenerator::generate(), MooseBase::MooseBase(), MooseBase::name(), ReferenceResidualConvergence::nonlinearConvergenceSetup(), ParsedFunctorMaterialTempl< is_ad >::ParsedFunctorMaterialTempl(), PiecewiseBilinear::PiecewiseBilinear(), PiecewiseLinearInterpolationMaterial::PiecewiseLinearInterpolationMaterial(), PiecewiseBase::setData(), and AddVariableAction::varName().

◆ _need_to_add_default_multiapp_fixed_point_convergence

bool FEProblemBase::_need_to_add_default_multiapp_fixed_point_convergence
protectedinherited

Flag that the problem needs to add the default fixed point convergence.

Definition at line 3125 of file FEProblemBase.h.

Referenced by FEProblemBase::needToAddDefaultMultiAppFixedPointConvergence(), and FEProblemBase::setNeedToAddDefaultMultiAppFixedPointConvergence().

◆ _need_to_add_default_nonlinear_convergence

bool FEProblemBase::_need_to_add_default_nonlinear_convergence
protectedinherited

Flag that the problem needs to add the default nonlinear convergence.

Definition at line 3123 of file FEProblemBase.h.

Referenced by FEProblemBase::needToAddDefaultNonlinearConvergence(), and FEProblemBase::setNeedToAddDefaultNonlinearConvergence().

◆ _need_to_add_default_steady_state_convergence

bool FEProblemBase::_need_to_add_default_steady_state_convergence
protectedinherited

Flag that the problem needs to add the default steady convergence.

Definition at line 3127 of file FEProblemBase.h.

Referenced by FEProblemBase::needToAddDefaultSteadyStateConvergence(), and FEProblemBase::setNeedToAddDefaultSteadyStateConvergence().

◆ _needs_old_newton_iter

bool FEProblemBase::_needs_old_newton_iter
protectedinherited

Indicates that we need to compute variable values for previous Newton iteration.

Definition at line 3394 of file FEProblemBase.h.

◆ _neighbor_material_props

MaterialPropertyStorage& FEProblemBase::_neighbor_material_props
protectedinherited

◆ _nl

std::vector<std::shared_ptr<NonlinearSystemBase> > FEProblemBase::_nl
protectedinherited

The nonlinear systems.

Definition at line 3154 of file FEProblemBase.h.

Referenced by FEProblemBase::addBoundaryCondition(), FEProblemBase::addConstraint(), FEProblemBase::addDamper(), FEProblemBase::addDGKernel(), FEProblemBase::addDiracKernel(), FEProblemBase::addHDGKernel(), FEProblemBase::addInterfaceKernel(), FEProblemBase::addKernel(), FEProblemBase::addNodalKernel(), FEProblemBase::addPredictor(), FEProblemBase::addScalarKernel(), FEProblemBase::addTimeIntegrator(), FEProblemBase::bumpAllQRuleOrder(), FEProblemBase::bumpVolumeQRuleOrder(), FEProblemBase::checkNonlocalCoupling(), FEProblemBase::checkProblemIntegrity(), FEProblemBase::computeResidualL2Norm(), FEProblemBase::computingPreSMOResidual(), FEProblemBase::currentNlSysNum(), FEProblemBase::customSetup(), DumpObjectsProblem::DumpObjectsProblem(), ExternalProblem(), FEProblemBase::finalNonlinearResidual(), FEProblemBase::getNonlinearEvaluableElementRange(), FEProblemBase::getNonlinearSystem(), FEProblemBase::getNonlinearSystemBase(), FEProblemBase::getNonlinearSystemBase(), FEProblemBase::init(), FEProblemBase::initXFEM(), FEProblemBase::jacobianSetup(), FEProblemBase::meshChanged(), FEProblemBase::needBoundaryMaterialOnSide(), FEProblemBase::needInterfaceMaterialOnSide(), FEProblemBase::needInternalNeighborSideMaterial(), FEProblemBase::nLinearIterations(), FEProblemBase::nNonlinearIterations(), FEProblemBase::onTimestepBegin(), FEProblemBase::prepare(), FEProblemBase::prepareFace(), FEProblemBase::projectInitialConditionOnCustomRange(), FEProblemBase::projectSolution(), FEProblemBase::reinitDirac(), FEProblemBase::reinitNeighbor(), FEProblemBase::reinitNeighborPhys(), FEProblemBase::reinitNeighborPhys(), FEProblemBase::reinitNode(), FEProblemBase::reinitNodeFace(), FEProblemBase::reinitNodes(), FEProblemBase::reinitNodesNeighbor(), FEProblemBase::reinitScalars(), FEProblemBase::residualSetup(), FEProblemBase::setCurrentNonlinearSystem(), FEProblemBase::setNeighborSubdomainID(), FEProblemBase::setNeighborSubdomainID(), FEProblemBase::setNonlocalCouplingMatrix(), FEProblemBase::setResidual(), FEProblemBase::setResidualObjectParamsAndLog(), FEProblemBase::setupDampers(), FEProblemBase::subdomainSetup(), FEProblemBase::systemBaseNonlinear(), FEProblemBase::systemBaseNonlinear(), FEProblemBase::updateActiveObjects(), and FEProblemBase::updateMeshXFEM().

◆ _nl_evaluable_local_elem_range

std::unique_ptr<libMesh::ConstElemRange> FEProblemBase::_nl_evaluable_local_elem_range
protectedinherited

◆ _nl_sys_name_to_num

std::map<NonlinearSystemName, unsigned int> FEProblemBase::_nl_sys_name_to_num
protectedinherited

Map from nonlinear system name to number.

Definition at line 3157 of file FEProblemBase.h.

Referenced by FEProblemBase::FEProblemBase(), and FEProblemBase::nlSysNum().

◆ _nl_sys_names

const std::vector<NonlinearSystemName> FEProblemBase::_nl_sys_names
protectedinherited

◆ _nonlinear_convergence_names

std::optional<std::vector<ConvergenceName> > FEProblemBase::_nonlinear_convergence_names
protectedinherited

Nonlinear system(s) convergence name(s)

Definition at line 3094 of file FEProblemBase.h.

Referenced by FEProblemBase::getNonlinearConvergenceNames(), and FEProblemBase::setNonlinearConvergenceNames().

◆ _nonlocal_cm

std::vector<libMesh::CouplingMatrix> FEProblemBase::_nonlocal_cm
privateinherited

◆ _nonlocal_integrated_bcs

MooseObjectWarehouse<IntegratedBCBase> FEProblemBase::_nonlocal_integrated_bcs
protectedinherited

◆ _nonlocal_kernels

MooseObjectWarehouse<KernelBase> FEProblemBase::_nonlocal_kernels
protectedinherited

◆ _not_zeroed_tagged_vectors

std::unordered_set<TagID> SubProblem::_not_zeroed_tagged_vectors
protectedinherited

the list of vector tags that will not be zeroed when all other tags are

Definition at line 1132 of file SubProblem.h.

Referenced by SubProblem::addNotZeroedVectorTag(), FEProblemBase::restoreSolutions(), and SubProblem::vectorTagNotZeroed().

◆ _notify_when_mesh_changes

std::vector<MeshChangedInterface *> FEProblemBase::_notify_when_mesh_changes
protectedinherited

Objects to be notified when the mesh changes.

Definition at line 3295 of file FEProblemBase.h.

Referenced by FEProblemBase::meshChanged(), and FEProblemBase::notifyWhenMeshChanges().

◆ _notify_when_mesh_displaces

std::vector<MeshDisplacedInterface *> FEProblemBase::_notify_when_mesh_displaces
protectedinherited

Objects to be notified when the mesh displaces.

Definition at line 3298 of file FEProblemBase.h.

Referenced by FEProblemBase::meshDisplaced(), and FEProblemBase::notifyWhenMeshDisplaces().

◆ _num_grid_steps

unsigned int FEProblemBase::_num_grid_steps
privateinherited

◆ _num_linear_sys

const std::size_t FEProblemBase::_num_linear_sys
protectedinherited

◆ _num_nl_sys

const std::size_t FEProblemBase::_num_nl_sys
protectedinherited

◆ _parallel_barrier_messaging

bool FEProblemBase::_parallel_barrier_messaging
protectedinherited

◆ _parent

const ParallelParamObject& DataFileInterface::_parent
privateinherited

◆ _pars

const InputParameters& MooseBase::_pars
protectedinherited

The object's parameters.

Definition at line 384 of file MooseBase.h.

Referenced by AddAuxKernelAction::act(), AddFVICAction::act(), AddICAction::act(), CommonOutputAction::act(), ComposeTimeStepperAction::act(), CreateProblemAction::act(), CreateProblemDefaultAction::act(), SetupDebugAction::act(), SetupMeshAction::act(), AddMFEMComplexBCComponentAction::act(), AddMFEMComplexKernelComponentAction::act(), FunctorMaterial::addFunctorPropertyByBlocks(), BreakMeshByBlockGenerator::BreakMeshByBlockGenerator(), PNGOutput::calculateRescalingValues(), MooseBase::callMooseError(), MooseBase::connectControllableParams(), Console::Console(), MooseApp::copyInputs(), MaterialBase::declareADProperty(), Moose::Kokkos::MaterialBase::declareKokkosOnDemandProperty(), Moose::Kokkos::MaterialBase::declareKokkosProperty(), MaterialBase::declareProperty(), FEProblemSolve::FEProblemSolve(), FileMeshGenerator::generate(), MooseBase::getBase(), MooseBase::getCheckedPointerParam(), MaterialBase::getGenericZeroMaterialProperty(), MooseBase::getHitNode(), MeshGenerator::getMeshGeneratorNameFromParam(), MeshGenerator::getMeshGeneratorNamesFromParam(), MooseBase::getParam(), MooseBase::getParam(), MooseBase::hasBase(), MeshGenerator::hasGenerateCSG(), MeshGenerator::hasGenerateData(), AddVariableAction::init(), AdvancedOutput::initExecutionTypes(), EigenProblemSolve::initialSetup(), Console::initialSetup(), MooseBase::isParamSetByUser(), MooseBase::isParamValid(), MultiApp::keepSolutionDuringRestore(), MooseBase::messagePrefix(), MooseBase::MooseBase(), MultiSystemSolveObject::MultiSystemSolveObject(), MooseApp::outputMachineReadableData(), MooseBase::paramError(), MooseBase::parameters(), MooseBase::paramInfo(), MooseBase::paramWarning(), MooseMesh::prepare(), MooseBase::queryParam(), MooseMesh::setCoordSystem(), MooseMesh::setPartitionerHelper(), SetupMeshAction::setupMesh(), TransientBase::setupTimeIntegrator(), MooseApp::showInputs(), and MooseBase::uniqueName().

◆ _pbblf_functors

std::vector<std::map<std::string, std::unique_ptr<Moose::FunctorAbstract> > > SubProblem::_pbblf_functors
privateinherited

◆ _petsc_option_data_base

PetscOptions FEProblemBase::_petsc_option_data_base
protectedinherited

◆ _petsc_options

Moose::PetscSupport::PetscOptions FEProblemBase::_petsc_options
protectedinherited

PETSc option storage.

Definition at line 3485 of file FEProblemBase.h.

Referenced by FEProblemBase::getPetscOptions(), FEProblemBase::solve(), and FEProblemBase::solveLinearSystem().

◆ _pg_moose_app

MooseApp& PerfGraphInterface::_pg_moose_app
protectedinherited

The MooseApp that owns the PerfGraph.

Definition at line 135 of file PerfGraphInterface.h.

Referenced by PerfGraphInterface::perfGraph().

◆ _phi_zero

std::vector<VariablePhiValue> FEProblemBase::_phi_zero
inherited

◆ _point_zero

std::vector<Point> FEProblemBase::_point_zero
inherited

Definition at line 2540 of file FEProblemBase.h.

Referenced by FEProblemBase::FEProblemBase().

◆ _prefix

const std::string PerfGraphInterface::_prefix
protectedinherited

A prefix to use for all sections.

Definition at line 138 of file PerfGraphInterface.h.

Referenced by PerfGraphInterface::timedSectionName().

◆ _preserve_matrix_sparsity_pattern

bool FEProblemBase::_preserve_matrix_sparsity_pattern
privateinherited

Whether to preserve the system matrix / Jacobian sparsity pattern, using 0-valued entries usually.

Definition at line 3592 of file FEProblemBase.h.

Referenced by FEProblemBase::preserveMatrixSparsityPattern(), and FEProblemBase::setPreserveMatrixSparsityPattern().

◆ _previous_multiapp_fp_aux_solution_required

bool FEProblemBase::_previous_multiapp_fp_aux_solution_required
protectedinherited

Indicates we need to save the previous multiapp fixed-point iteration auxiliary variable values.

Definition at line 3401 of file FEProblemBase.h.

Referenced by FEProblemBase::needsPreviousMultiAppFixedPointIterationAuxiliary(), and FEProblemBase::needsPreviousMultiAppFixedPointIterationAuxiliary().

◆ _previous_multiapp_fp_nl_solution_required

std::vector<bool> FEProblemBase::_previous_multiapp_fp_nl_solution_required
protectedinherited

Indicates we need to save the previous multiapp fixed-point iteration solver variable values.

Definition at line 3399 of file FEProblemBase.h.

Referenced by FEProblemBase::needsPreviousMultiAppFixedPointIterationSolution(), and FEProblemBase::needsPreviousMultiAppFixedPointIterationSolution().

◆ _previous_multisystem_fp_aux_solution_required

bool FEProblemBase::_previous_multisystem_fp_aux_solution_required
protectedinherited

Indicates we need to save the previous multi-system fixed-point iteration auxiliary variable values.

Definition at line 3405 of file FEProblemBase.h.

Referenced by FEProblemBase::needsPreviousMultiSystemFixedPointIterationAuxiliary(), and FEProblemBase::needsPreviousMultiSystemFixedPointIterationAuxiliary().

◆ _previous_multisystem_fp_nl_solution_required

std::vector<bool> FEProblemBase::_previous_multisystem_fp_nl_solution_required
protectedinherited

Indicates we need to save the previous multi-system fixed-point iteration solver variable values.

Definition at line 3403 of file FEProblemBase.h.

Referenced by FEProblemBase::needsPreviousMultiSystemFixedPointIterationSolution(), and FEProblemBase::needsPreviousMultiSystemFixedPointIterationSolution().

◆ _previous_nl_solution_required

bool FEProblemBase::_previous_nl_solution_required
protectedinherited

Indicates we need to save the previous NL iteration variable values.

Definition at line 3397 of file FEProblemBase.h.

Referenced by FEProblemBase::createTagSolutions().

◆ _print_execution_on

ExecFlagEnum FEProblemBase::_print_execution_on
privateinherited

When to print the execution of loops.

Definition at line 3647 of file FEProblemBase.h.

Referenced by FEProblemBase::setExecutionPrinting(), and FEProblemBase::shouldPrintExecution().

◆ _random_data_objects

std::map<std::string, std::unique_ptr<RandomData> > FEProblemBase::_random_data_objects
protectedinherited

◆ _real_zero

std::vector<Real> FEProblemBase::_real_zero
inherited

Convenience zeros.

Definition at line 2529 of file FEProblemBase.h.

Referenced by FEProblemBase::FEProblemBase().

◆ _regard_general_exceptions_as_errors

const bool FEProblemBase::_regard_general_exceptions_as_errors
privateinherited

If we catch an exception during residual/Jacobian evaluaton for which we don't have specific handling, immediately error instead of allowing the time step to be cut.

Definition at line 3662 of file FEProblemBase.h.

Referenced by FEProblemBase::handleException().

◆ _reinit_displaced_elem

bool FEProblemBase::_reinit_displaced_elem
protectedinherited

◆ _reinit_displaced_face

bool FEProblemBase::_reinit_displaced_face
protectedinherited

◆ _reinit_displaced_neighbor

bool FEProblemBase::_reinit_displaced_neighbor
protectedinherited

◆ _reporter_data

ReporterData FEProblemBase::_reporter_data
protectedinherited

◆ _req

Restartable::ManagedValue<RestartableEquationSystems> FEProblemBase::_req
privateinherited

The EquationSystems object, wrapped for restart.

Definition at line 3047 of file FEProblemBase.h.

Referenced by FEProblemBase::es(), and FEProblemBase::getRestartableEquationSystems().

◆ _requires_nonlocal_coupling

bool FEProblemBase::_requires_nonlocal_coupling
privateinherited

◆ _restartable_app

MooseApp& Restartable::_restartable_app
protectedinherited

Reference to the application.

Definition at line 234 of file Restartable.h.

Referenced by Restartable::registerRestartableDataOnApp(), and Restartable::registerRestartableNameWithFilterOnApp().

◆ _restartable_name

std::string Restartable::_restartable_name
privateinherited

The name of the object.

Definition at line 250 of file Restartable.h.

Referenced by Restartable::declareRestartableDataWithObjectNameWithContext(), and Restartable::restartableName().

◆ _restartable_read_only

const bool Restartable::_restartable_read_only
protectedinherited

Flag for toggling read only status (see ReporterData)

Definition at line 243 of file Restartable.h.

Referenced by Restartable::registerRestartableDataOnApp().

◆ _restartable_system_name

const std::string Restartable::_restartable_system_name
protectedinherited

The system name this object is in.

Definition at line 237 of file Restartable.h.

Referenced by Restartable::restartableName().

◆ _restartable_tid

const THREAD_ID Restartable::_restartable_tid
protectedinherited

The thread ID for this object.

Definition at line 240 of file Restartable.h.

Referenced by Restartable::declareRestartableDataHelper().

◆ _restore_original_nonzero_pattern

const bool FEProblemBase::_restore_original_nonzero_pattern
privateinherited

Whether we should restore the original nonzero pattern for every Jacobian evaluation.

This option is useful if the sparsity pattern is constantly changing and you are using hash table assembly or if you wish to continually restore the matrix to the originally preallocated sparsity pattern computed by relationship managers.

Definition at line 3588 of file FEProblemBase.h.

Referenced by FEProblemBase::computeJacobianTags(), and FEProblemBase::restoreOriginalNonzeroPattern().

◆ _root_alg_gf_to_sys_clones

std::unordered_map<libMesh::GhostingFunctor *, std::vector<std::shared_ptr<libMesh::GhostingFunctor> > > SubProblem::_root_alg_gf_to_sys_clones
privateinherited

A map from a root algebraic ghosting functor, e.g.

the ghosting functor passed into removeAlgebraicGhostingFunctor, to its clones in other systems, e.g. systems other than system 0

Definition at line 1210 of file SubProblem.h.

Referenced by SubProblem::cloneAlgebraicGhostingFunctor(), and SubProblem::removeAlgebraicGhostingFunctor().

◆ _root_coupling_gf_to_sys_clones

std::unordered_map<libMesh::GhostingFunctor *, std::vector<std::shared_ptr<libMesh::GhostingFunctor> > > SubProblem::_root_coupling_gf_to_sys_clones
privateinherited

A map from a root coupling ghosting functor, e.g.

the ghosting functor passed into removeCouplingGhostingFunctor, to its clones in other systems, e.g. systems other than system 0

Definition at line 1217 of file SubProblem.h.

Referenced by SubProblem::cloneCouplingGhostingFunctor(), and SubProblem::removeCouplingGhostingFunctor().

◆ _safe_access_tagged_matrices

bool SubProblem::_safe_access_tagged_matrices
protectedinherited

◆ _safe_access_tagged_vectors

bool SubProblem::_safe_access_tagged_vectors
protectedinherited

◆ _scalar_ics

ScalarInitialConditionWarehouse FEProblemBase::_scalar_ics
protectedinherited

◆ _scalar_zero

std::vector<VariableValue> FEProblemBase::_scalar_zero
inherited

◆ _second_phi_zero

std::vector<VariablePhiSecond> FEProblemBase::_second_phi_zero
inherited

◆ _second_zero

std::vector<VariableSecond> FEProblemBase::_second_zero
inherited

◆ _show_chain_control_data

bool SubProblem::_show_chain_control_data
privateinherited

Whether to output a list of all the chain control data.

Definition at line 1182 of file SubProblem.h.

Referenced by SubProblem::initialSetup(), SubProblem::setChainControlDataOutput(), and SubProblem::timestepSetup().

◆ _show_functors

bool SubProblem::_show_functors
privateinherited

Whether to output a list of the functors used and requested (currently only at initialSetup)

Definition at line 1179 of file SubProblem.h.

Referenced by SubProblem::initialSetup(), and SubProblem::setFunctorOutput().

◆ _show_invalid_solution_console

const bool FEProblemBase::_show_invalid_solution_console
privateinherited

Definition at line 3599 of file FEProblemBase.h.

Referenced by FEProblemBase::showInvalidSolutionConsole().

◆ _si_moose_base

const MooseBase& SolutionInvalidInterface::_si_moose_base
privateinherited

◆ _si_problem

const FEProblemBase* SolutionInvalidInterface::_si_problem
privateinherited

A pointer to FEProblem base.

Definition at line 114 of file SolutionInvalidInterface.h.

Referenced by SolutionInvalidInterface::flagInvalidSolutionInternal().

◆ _side_uo_interface_mat_prop_integrity_check

const bool FEProblemBase::_side_uo_interface_mat_prop_integrity_check
protectedinherited

Whether to check that side user objects do not consume interface material properties.

Definition at line 3431 of file FEProblemBase.h.

Referenced by FEProblemBase::sideUOInterfaceMatPropIntegrityCheck().

◆ _skip_exception_check

bool FEProblemBase::_skip_exception_check
protectedinherited

If or not skip 'exception and stop solve'.

Definition at line 3379 of file FEProblemBase.h.

Referenced by FEProblemBase::checkExceptionAndStopSolve(), FEProblemBase::initialSetup(), and FEProblemBase::skipExceptionCheck().

◆ _skip_nl_system_check

const bool FEProblemBase::_skip_nl_system_check
privateinherited

Definition at line 3596 of file FEProblemBase.h.

Referenced by FEProblemBase::checkProblemIntegrity(), and FEProblemBase::init().

◆ _snesmf_reuse_base

bool FEProblemBase::_snesmf_reuse_base
protectedinherited

If or not to resuse the base vector for matrix-free calculation.

Definition at line 3376 of file FEProblemBase.h.

Referenced by FEProblemBase::setSNESMFReuseBase(), and FEProblemBase::useSNESMFReuseBase().

◆ _snesmf_reuse_base_set_by_user

bool FEProblemBase::_snesmf_reuse_base_set_by_user
protectedinherited

If or not _snesmf_reuse_base is set by user.

Definition at line 3382 of file FEProblemBase.h.

Referenced by FEProblemBase::isSNESMFReuseBaseSetbyUser(), and FEProblemBase::setSNESMFReuseBase().

◆ _solve

const bool& FEProblemBase::_solve
protectedinherited

◆ _solver_params

std::vector<SolverParams> FEProblemBase::_solver_params
protectedinherited

◆ _solver_sys_name_to_num

std::map<SolverSystemName, unsigned int> FEProblemBase::_solver_sys_name_to_num
protectedinherited

Map connecting solver system names with their respective systems.

Definition at line 3172 of file FEProblemBase.h.

Referenced by FEProblemBase::FEProblemBase(), and FEProblemBase::solverSysNum().

◆ _solver_sys_names

std::vector<SolverSystemName> FEProblemBase::_solver_sys_names
protectedinherited

◆ _solver_systems

std::vector<std::shared_ptr<SolverSystem> > FEProblemBase::_solver_systems
protectedinherited

Combined container to base pointer of every solver system.

Definition at line 3166 of file FEProblemBase.h.

Referenced by FEProblemBase::addObjectParamsHelper(), FEProblemBase::addTimeIntegrator(), FEProblemBase::addVariable(), FEProblemBase::advanceState(), EigenProblem::computeJacobian(), FEProblemBase::computeSystems(), FEProblemBase::copySolutionsBackwards(), FEProblemBase::createQRules(), FEProblemBase::createTagMatrices(), FEProblemBase::createTagSolutions(), FEProblemBase::createTagVectors(), FEProblemBase::determineSolverSystem(), DumpObjectsProblem::DumpObjectsProblem(), FEProblemBase::duplicateVariableCheck(), EigenProblem::EigenProblem(), ExternalProblem(), FEProblem::FEProblem(), FEProblemBase::getActualFieldVariable(), FEProblemBase::getArrayVariable(), FEProblemBase::getScalarVariable(), FEProblemBase::getSolverSystem(), FEProblemBase::getSolverSystem(), FEProblemBase::getStandardVariable(), FEProblemBase::getSystem(), FEProblemBase::getSystemBase(), FEProblemBase::getSystemBase(), FEProblemBase::getVariable(), FEProblemBase::getVariableNames(), FEProblemBase::getVectorVariable(), FEProblemBase::hasScalarVariable(), FEProblemBase::hasSolutionState(), FEProblemBase::hasSolverVariable(), FEProblemBase::hasVariable(), FEProblem::init(), FEProblemBase::init(), FEProblemBase::initialSetup(), FEProblemBase::meshChanged(), FEProblemBase::needSolutionState(), FEProblemBase::outputStep(), FEProblemBase::prepare(), FEProblemBase::projectSolution(), FEProblemBase::reinitElem(), FEProblemBase::reinitElemPhys(), FEProblemBase::restoreOldSolutions(), FEProblemBase::restoreSolutions(), FEProblemBase::saveOldSolutions(), FEProblemBase::setAuxKernelParamsAndLog(), FEProblemBase::setCurrentSubdomainID(), Moose::PetscSupport::setSinglePetscOption(), FEProblemBase::skipNextForwardSolutionCopyToOld(), FEProblemBase::solverSystemConverged(), FEProblemBase::systemBaseSolver(), FEProblemBase::systemBaseSolver(), FEProblemBase::systemNumForVariable(), and FEProblemBase::timestepSetup().

◆ _solver_var_to_sys_num

std::map<SolverVariableName, unsigned int> FEProblemBase::_solver_var_to_sys_num
protectedinherited

Map connecting variable names with their respective solver systems.

Definition at line 3169 of file FEProblemBase.h.

Referenced by FEProblemBase::addVariable(), and FEProblemBase::determineSolverSystem().

◆ _started_initial_setup

bool FEProblemBase::_started_initial_setup
privateinherited

At or beyond initialSteup stage.

Definition at line 3603 of file FEProblemBase.h.

Referenced by FEProblemBase::initialSetup(), and FEProblemBase::startedInitialSetup().

◆ _steady_state_convergence_name

std::optional<ConvergenceName> FEProblemBase::_steady_state_convergence_name
protectedinherited

◆ _subspace_dim

std::map<std::string, unsigned int> FEProblemBase::_subspace_dim
protectedinherited

Dimension of the subspace spanned by the vectors with a given prefix.

Definition at line 3191 of file FEProblemBase.h.

Referenced by FEProblemBase::initNullSpaceVectors(), and FEProblemBase::subspaceDim().

◆ _t_step

int& FEProblemBase::_t_step
protectedinherited

◆ _termination_requested

bool Problem::_termination_requested
protectedinherited

True if termination of the solve has been requested.

Definition at line 58 of file Problem.h.

Referenced by Problem::isSolveTerminationRequested(), and Problem::terminateSolve().

◆ _time

Real& FEProblemBase::_time
protectedinherited

◆ _time_old

Real& FEProblemBase::_time_old
protectedinherited

Definition at line 3117 of file FEProblemBase.h.

Referenced by FEProblemBase::FEProblemBase(), and FEProblemBase::timeOld().

◆ _to_multi_app_transfers

ExecuteMooseObjectWarehouse<Transfer> FEProblemBase::_to_multi_app_transfers
protectedinherited

◆ _transfers

ExecuteMooseObjectWarehouse<Transfer> FEProblemBase::_transfers
protectedinherited

◆ _transient

bool FEProblemBase::_transient
protectedinherited

Definition at line 3115 of file FEProblemBase.h.

Referenced by FEProblemBase::isTransient(), and FEProblemBase::transient().

◆ _transient_multi_apps

ExecuteMooseObjectWarehouse<TransientMultiApp> FEProblemBase::_transient_multi_apps
protectedinherited

Storage for TransientMultiApps (only needed for calling 'computeDT')

Definition at line 3268 of file FEProblemBase.h.

Referenced by FEProblemBase::addMultiApp(), FEProblemBase::computeMultiAppsDT(), and FEProblemBase::updateActiveObjects().

◆ _trust_user_coupling_matrix

bool FEProblemBase::_trust_user_coupling_matrix = false
privateinherited

Whether to trust the user coupling matrix no matter what.

See https://github.com/idaholab/moose/issues/16395 for detailed background

Definition at line 3635 of file FEProblemBase.h.

Referenced by FEProblemBase::setCoupling(), and FEProblemBase::trustUserCouplingMatrix().

◆ _type

const std::string& MooseBase::_type
protectedinherited

◆ _typed_vector_tags

std::vector<std::vector<VectorTag> > SubProblem::_typed_vector_tags
privateinherited

The vector tags associated with each VectorTagType This is kept separate from _vector_tags for quick access into typed vector tags in places where we don't want to build a new vector every call (like in residual evaluation)

Definition at line 1192 of file SubProblem.h.

Referenced by SubProblem::addVectorTag(), SubProblem::getVectorTags(), and SubProblem::verifyVectorTags().

◆ _u_dot_old_requested

bool FEProblemBase::_u_dot_old_requested
privateinherited

Whether old solution time derivative needs to be stored.

Definition at line 3615 of file FEProblemBase.h.

Referenced by FEProblemBase::setUDotOldRequested(), and FEProblemBase::uDotOldRequested().

◆ _u_dot_requested

bool FEProblemBase::_u_dot_requested
privateinherited

Whether solution time derivative needs to be stored.

Definition at line 3609 of file FEProblemBase.h.

Referenced by FEProblemBase::setUDotRequested(), FEProblemBase::uDotOldRequested(), and FEProblemBase::uDotRequested().

◆ _u_dotdot_old_requested

bool FEProblemBase::_u_dotdot_old_requested
privateinherited

Whether old solution second time derivative needs to be stored.

Definition at line 3618 of file FEProblemBase.h.

Referenced by FEProblemBase::setUDotDotOldRequested(), and FEProblemBase::uDotDotOldRequested().

◆ _u_dotdot_requested

bool FEProblemBase::_u_dotdot_requested
privateinherited

Whether solution second time derivative needs to be stored.

Definition at line 3612 of file FEProblemBase.h.

Referenced by FEProblemBase::setUDotDotRequested(), FEProblemBase::uDotDotOldRequested(), and FEProblemBase::uDotDotRequested().

◆ _uo_aux_state_check

const bool FEProblemBase::_uo_aux_state_check
protectedinherited

Whether or not checking the state of uo/aux evaluation.

Definition at line 3444 of file FEProblemBase.h.

Referenced by FEProblemBase::execute(), and FEProblemBase::hasUOAuxStateCheck().

◆ _uo_jacobian_moose_vars

std::vector<std::vector<const MooseVariableFEBase *> > FEProblemBase::_uo_jacobian_moose_vars
protectedinherited

◆ _use_hash_table_matrix_assembly

const bool FEProblemBase::_use_hash_table_matrix_assembly
protectedinherited

Whether to assemble matrices using hash tables instead of preallocating matrix memory.

This can be a good option if the sparsity pattern changes throughout the course of the simulation

Definition at line 3512 of file FEProblemBase.h.

Referenced by EigenProblem::EigenProblem(), FEProblem::FEProblem(), and FEProblemBase::useHashTableMatrixAssembly().

◆ _using_ad_mat_props

bool FEProblemBase::_using_ad_mat_props
protectedinherited

Automatic differentiaion (AD) flag which indicates whether any consumer has requested an AD material property or whether any suppier has declared an AD material property.

Definition at line 3505 of file FEProblemBase.h.

◆ _using_default_nl

const bool FEProblemBase::_using_default_nl
protectedinherited

Boolean to check if we have the default nonlinear system.

Definition at line 3145 of file FEProblemBase.h.

◆ _var_dof_map

std::map<std::string, std::vector<dof_id_type> > SubProblem::_var_dof_map
inherited

◆ _vector_curl_zero

std::vector<VectorVariableCurl> FEProblemBase::_vector_curl_zero
inherited

◆ _vector_tags

std::vector<VectorTag> SubProblem::_vector_tags
privateinherited

◆ _vector_tags_name_map

std::map<TagName, TagID> SubProblem::_vector_tags_name_map
privateinherited

Map of vector tag TagName to TagID.

Definition at line 1195 of file SubProblem.h.

Referenced by SubProblem::addVectorTag(), SubProblem::getVectorTagID(), and SubProblem::verifyVectorTags().

◆ _vector_zero

std::vector<VectorVariableValue> FEProblemBase::_vector_zero
inherited

◆ _verbose_multiapps

bool FEProblemBase::_verbose_multiapps
protectedinherited

◆ _verbose_restore

bool FEProblemBase::_verbose_restore
protectedinherited

Whether or not to be verbose on solution restoration post a failed time step.

Definition at line 3473 of file FEProblemBase.h.

Referenced by FEProblemBase::restoreSolutions(), and FEProblemBase::setVerboseProblem().

◆ _verbose_setup

MooseEnum FEProblemBase::_verbose_setup
protectedinherited

Whether or not to be verbose during setup.

Definition at line 3467 of file FEProblemBase.h.

Referenced by FEProblemBase::logAdd(), and FEProblemBase::setVerboseProblem().

◆ _xfem

std::shared_ptr<XFEMInterface> FEProblemBase::_xfem
protectedinherited

Pointer to XFEM controller.

Definition at line 3351 of file FEProblemBase.h.

Referenced by FEProblemBase::getXFEM(), FEProblemBase::haveXFEM(), FEProblemBase::initXFEM(), and FEProblemBase::updateMeshXFEM().

◆ _zero

std::vector<VariableValue> FEProblemBase::_zero
inherited

◆ _zero_block_material_props

std::map<SubdomainID, std::set<MaterialPropertyName> > SubProblem::_zero_block_material_props
protectedinherited

Set of properties returned as zero properties.

Definition at line 1073 of file SubProblem.h.

Referenced by SubProblem::checkBlockMatProps(), FEProblemBase::checkDependMaterialsHelper(), and SubProblem::storeSubdomainZeroMatProp().

◆ _zero_boundary_material_props

std::map<BoundaryID, std::set<MaterialPropertyName> > SubProblem::_zero_boundary_material_props
protectedinherited

◆ app_param

const std::string MooseBase::app_param = "_moose_app"
staticinherited

◆ kokkos_object_param

const std::string MooseBase::kokkos_object_param = "_kokkos_object"
staticinherited

The name of the parameter that indicates an object is a Kokkos functor.

Definition at line 64 of file MooseBase.h.

Referenced by InputParameters::isKokkosObject().

◆ moose_base_param

const std::string MooseBase::moose_base_param = "_moose_base"
staticinherited

The name of the parameter that contains the moose system base.

Definition at line 61 of file MooseBase.h.

Referenced by InputParameters::getBase(), InputParameters::hasBase(), and InputParameters::registerBase().

◆ name_param

const std::string MooseBase::name_param = "_object_name"
staticinherited

◆ type_param

const std::string MooseBase::type_param = "_type"
staticinherited

◆ unique_name_param

const std::string MooseBase::unique_name_param = "_unique_name"
staticinherited

The name of the parameter that contains the unique object name.

Definition at line 57 of file MooseBase.h.

Referenced by InputParameterWarehouse::addInputParameters(), AppFactory::create(), InputParameterWarehouse::removeInputParameters(), MooseBase::uniqueName(), and MooseBase::validParams().

◆ usingCombinedWarningSolutionWarnings

MooseObject::usingCombinedWarningSolutionWarnings
inherited

Definition at line 67 of file MooseObject.h.


The documentation for this class was generated from the following files: