https://mooseframework.inl.gov
Public Types | Public Member Functions | Static Public Member Functions | Public Attributes | Protected Member Functions | Protected Attributes | List of all members
ReferenceResidualProblem Class Referenceabstract

Problem that checks for convergence relative to a user-supplied reference quantity rather than the initial residual. More...

#include <ReferenceResidualProblem.h>

Inheritance diagram for ReferenceResidualProblem:
[legend]

Public Types

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

Public Member Functions

 ReferenceResidualProblem (const InputParameters &params)
 
virtual void addDefaultNonlinearConvergence (const InputParameters &params) override
 Adds the default nonlinear Convergence associated with the problem. More...
 
virtual bool onlyAllowDefaultNonlinearConvergence () const override
 Returns true if an error will result if the user supplies 'nonlinear_convergence'. More...
 
virtual bool getUseNonlinear () const
 
virtual void setUseNonlinear (bool use_nonlinear)
 
virtual void setInputParametersFEProblem (InputParameters &parameters) override
 
virtual NonlinearSystemgetNonlinearSystem (const unsigned int nl_sys_num) override
 
virtual void addLineSearch (const InputParameters &parameters) override
 add a MOOSE line search More...
 
virtual void init () override
 
virtual libMesh::EquationSystemses () override
 
virtual MooseMeshmesh () override
 
virtual const MooseMeshmesh () const override
 
const MooseMeshmesh (bool use_displaced) const override
 
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. More...
 
Moose::CouplingType coupling () const
 
void setCouplingMatrix (std::unique_ptr< libMesh::CouplingMatrix > cm, const unsigned int nl_sys_num)
 Set custom coupling matrix. More...
 
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. More...
 
void setNonlocalCouplingMatrix ()
 Set custom coupling matrix for variables requiring nonlocal contribution. More...
 
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. More...
 
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. More...
 
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. More...
 
std::vector< std::pair< MooseVariableFEBase *, MooseVariableFEBase * > > & couplingEntries (const THREAD_ID tid, const unsigned int nl_sys_num)
 
std::vector< std::pair< MooseVariableFEBase *, MooseVariableFEBase * > > & 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. More...
 
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. More...
 
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. More...
 
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)
 
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. More...
 
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. More...
 
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. More...
 
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. More...
 
virtual bool hasScalarVariable (const std::string &var_name) const override
 Returns a Boolean indicating whether any system contains a variable with the name provided. More...
 
virtual MooseVariableScalargetScalarVariable (const THREAD_ID tid, const std::string &var_name) override
 Returns the scalar variable reference from whichever system contains it. More...
 
virtual libMesh::SystemgetSystem (const std::string &var_name) override
 Returns the equation system containing the variable provided. More...
 
virtual void setActiveElementalMooseVariables (const std::set< MooseVariableFEBase *> &moose_vars, const THREAD_ID tid) override
 Set the MOOSE variables to be reinited on each element. More...
 
virtual void clearActiveElementalMooseVariables (const THREAD_ID tid) override
 Clear the active elemental MooseVariableFEBase. More...
 
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. More...
 
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
 
virtual std::vector< VariableName > getVariableNames ()
 Returns a list of all the variables in the problem (both from the NL and Aux systems. More...
 
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 addGhostedElem (dof_id_type elem_id) override
 Will make sure that all dofs connected to elem_id are ghosted to this processor. More...
 
virtual void addGhostedBoundary (BoundaryID boundary_id) override
 Will make sure that all necessary elements from boundary_id are ghosted to this processor. More...
 
virtual void ghostGhostedBoundaries () override
 Causes the boundaries added using addGhostedBoundary to actually be ghosted. More...
 
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. More...
 
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 More...
 
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. More...
 
virtual void clearDiracInfo () override
 Gets called before Dirac Kernels are asked to add the points they are supposed to be evaluated in. More...
 
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 solve (const unsigned int nl_sys_num)
 
virtual void solveLinearSystem (const unsigned int linear_sys_num, const Moose::PetscSupport::PetscOptions *po=nullptr)
 Build and solve a linear system. More...
 
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(). More...
 
virtual bool hasException ()
 Whether or not an exception has occurred. More...
 
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. More...
 
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. More...
 
virtual std::string solverTypeString (unsigned int solver_sys_num=0)
 Return solver type as a human readable string. More...
 
virtual bool startedInitialSetup ()
 Returns true if we are in or beyond the initialSetup stage. More...
 
virtual void onTimestepBegin () override
 
virtual void onTimestepEnd () override
 
virtual Realtime () const
 
virtual RealtimeOld () const
 
virtual inttimeStep () const
 
virtual Realdt () const
 
virtual RealdtOld () const
 
Real getTimeFromStateArg (const Moose::StateArg &state) const
 Returns the time associated with the requested state. More...
 
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 ()
 
virtual void advanceState ()
 Advance all of the state holding vectors / datastructures so that we can move to the next timestep. More...
 
virtual void restoreSolutions ()
 
virtual void saveOldSolutions ()
 Allocate vectors and save old solutions into them. More...
 
virtual void restoreOldSolutions ()
 Restore old solutions from the backup vectors and deallocate them. More...
 
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. More...
 
virtual void outputStep (ExecFlagType type)
 Output the current step. More...
 
virtual void postExecute ()
 Method called at the end of the simulation. More...
 
void forceOutput ()
 Indicates that the next call to outputStep should be forced. More...
 
virtual void initPetscOutputAndSomeSolverSettings ()
 Reinitialize PETSc output for proper linear/nonlinear iteration display. More...
 
Moose::PetscSupport::PetscOptionsgetPetscOptions ()
 Retrieve a writable reference the PETSc options (used by PetscSupport) More...
 
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. More...
 
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 addMeshDivision (const std::string &type, const std::string &name, InputParameters &params)
 Add a MeshDivision. More...
 
MeshDivisiongetMeshDivision (const std::string &name, const THREAD_ID tid=0) const
 Get a MeshDivision. More...
 
virtual void addConvergence (const std::string &type, const std::string &name, InputParameters &parameters)
 Adds a Convergence object. More...
 
virtual ConvergencegetConvergence (const std::string &name, const THREAD_ID tid=0) const
 Gets a Convergence object. More...
 
virtual const std::vector< std::shared_ptr< Convergence > > & getConvergenceObjects (const THREAD_ID tid=0) const
 Gets the Convergence objects. More...
 
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. More...
 
bool needToAddDefaultNonlinearConvergence () const
 Returns true if the problem needs to add the default nonlinear convergence. More...
 
bool needToAddDefaultMultiAppFixedPointConvergence () const
 Returns true if the problem needs to add the default fixed point convergence. More...
 
void setNeedToAddDefaultNonlinearConvergence ()
 Sets _need_to_add_default_nonlinear_convergence to true. More...
 
void setNeedToAddDefaultMultiAppFixedPointConvergence ()
 Sets _need_to_add_default_multiapp_fixed_point_convergence to true. More...
 
bool hasSetMultiAppFixedPointConvergenceName () const
 Returns true if the problem has set the fixed point convergence name. More...
 
void addDefaultMultiAppFixedPointConvergence (const InputParameters &params)
 Adds the default fixed point Convergence associated with the problem. More...
 
virtual void lineSearch ()
 execute MOOSE line search More...
 
LineSearchgetLineSearch () override
 getter for the MOOSE line search More...
 
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. More...
 
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. More...
 
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. More...
 
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. More...
 
virtual SystemBasesystemBaseSolver (const unsigned int sys_num) override
 
virtual const SystemBasesystemBaseAuxiliary () const override
 Return the auxiliary system object as a base class reference. More...
 
virtual SystemBasesystemBaseAuxiliary () override
 
virtual const SystemBasegetSystemBase (const unsigned int sys_num) const
 Get constant reference to a system in this problem. More...
 
virtual SystemBasegetSystemBase (const unsigned int sys_num)
 Get non-constant reference to a system in this problem. More...
 
LinearSystemgetLinearSystem (unsigned int sys_num)
 Get non-constant reference to a linear system. More...
 
const LinearSystemgetLinearSystem (unsigned int sys_num) const
 Get a constant reference to a linear system. More...
 
SolverSystemgetSolverSystem (unsigned int sys_num)
 Get non-constant reference to a solver system. More...
 
const SolverSystemgetSolverSystem (unsigned int sys_num) const
 Get a constant reference to a solver system. More...
 
void setCurrentLinearSystem (unsigned int sys_num)
 Set the current linear system pointer. More...
 
LinearSystemcurrentLinearSystem ()
 Get a non-constant reference to the current linear system. More...
 
const LinearSystemcurrentLinearSystem () const
 Get a constant reference to the current linear system. More...
 
virtual const SystemBasesystemBaseLinear (unsigned int sys_num) const override
 Get a constant base class reference to a linear system. More...
 
virtual SystemBasesystemBaseLinear (unsigned int sys_num) override
 Get a non-constant base class reference to a linear system. More...
 
virtual void addVariable (const std::string &var_type, const std::string &var_name, InputParameters &params)
 Canonical method for adding a non-linear variable. More...
 
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 addConstraint (const std::string &c_name, const std::string &name, InputParameters &parameters)
 
virtual void addAuxVariable (const std::string &var_type, const std::string &var_name, InputParameters &params)
 Canonical method for adding an auxiliary variable. More...
 
virtual void addAuxVariable (const std::string &var_name, const libMesh::FEType &type, const std::set< SubdomainID > *const active_subdomains=NULL)
 
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)
 
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. More...
 
void projectSolution ()
 
unsigned short getCurrentICState ()
 Retrieves the current initial condition state. More...
 
void projectInitialConditionOnCustomRange (libMesh::ConstElemRange &elem_range, ConstBndNodeRange &bnd_node_range)
 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. More...
 
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)
 
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. More...
 
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 More...
 
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 More...
 
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 More...
 
void reinitMaterialsInterface (BoundaryID boundary_id, const THREAD_ID tid, bool swap_stateful=true)
 
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. More...
 
bool hasActiveMaterialProperties (const THREAD_ID tid) const
 Method to check whether or not a list of active material roperties has been set. More...
 
void clearActiveMaterialProperties (const THREAD_ID tid)
 Clear the active material properties. More...
 
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. More...
 
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. More...
 
const ReporterDatagetReporterData () const
 Provides const access the ReporterData object. More...
 
ReporterDatagetReporterData (ReporterData::WriteKey)
 Provides non-const access the ReporterData object that is used to store reporter values. More...
 
virtual std::vector< std::shared_ptr< UserObject > > addUserObject (const std::string &user_object_name, const std::string &name, InputParameters &parameters)
 
const ExecuteMooseObjectWarehouse< UserObject > & getUserObjects () const
 
template<class T >
T & getUserObject (const std::string &name, unsigned int tid=0) const
 Get the user object by its name. More...
 
const UserObjectgetUserObjectBase (const std::string &name, const THREAD_ID tid=0) const
 Get the user object by its name. More...
 
const PositionsgetPositionsObject (const std::string &name) const
 Get the Positions object by its name. More...
 
bool hasUserObject (const std::string &name) const
 Check if there if a user object of given name. More...
 
bool hasPostprocessorValueByName (const PostprocessorName &name) const
 Whether or not a Postprocessor value exists by a given name. More...
 
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. More...
 
void setPostprocessorValueByName (const PostprocessorName &name, const PostprocessorValue &value, std::size_t t_index=0)
 Set the value of a PostprocessorValue. More...
 
bool hasPostprocessor (const std::string &name) const
 Deprecated. More...
 
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. More...
 
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. More...
 
const VectorPostprocessorgetVectorPostprocessorObjectByName (const std::string &object_name, const THREAD_ID tid=0) const
 Return the VPP object given the name. More...
 
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. More...
 
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. More...
 
std::shared_ptr< MultiAppgetMultiApp (const std::string &multi_app_name) const
 Get a MultiApp object by name. More...
 
std::vector< std::shared_ptr< Transfer > > getTransfers (ExecFlagType type, Transfer::DIRECTION direction) const
 Get Transfers by ExecFlagType and direction. More...
 
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. More...
 
void execMultiAppTransfers (ExecFlagType type, Transfer::DIRECTION direction)
 Execute MultiAppTransfers associated with execution flag and direction. More...
 
bool execMultiApps (ExecFlagType type, bool auto_advance=true)
 Execute the MultiApps associated with the ExecFlagType. More...
 
void finalizeMultiApps ()
 
void incrementMultiAppTStep (ExecFlagType type)
 Advance the MultiApps t_step (incrementStepOrReject) associated with the ExecFlagType. More...
 
void advanceMultiApps (ExecFlagType type)
 Deprecated method; use finishMultiAppStep and/or incrementMultiAppTStep depending on your purpose. More...
 
void finishMultiAppStep (ExecFlagType type, bool recurse_through_multiapp_levels=false)
 Finish the MultiApp time step (endStep, postStep) associated with the ExecFlagType. More...
 
void backupMultiApps (ExecFlagType type)
 Backup the MultiApps associated with the ExecFlagType. More...
 
void restoreMultiApps (ExecFlagType type, bool force=false)
 Restore the MultiApps associated with the ExecFlagType. More...
 
Real computeMultiAppsDT (ExecFlagType type)
 Find the smallest timestep over all MultiApps. More...
 
virtual void addTransfer (const std::string &transfer_name, const std::string &name, InputParameters &parameters)
 Add a Transfer to the problem. More...
 
void execTransfers (ExecFlagType type)
 Execute the Transfers associated with the ExecFlagType. More...
 
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. More...
 
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. More...
 
virtual Real computeResidualL2Norm ()
 Computes the residual using whatever is sitting in the current solution vector then returns the L2 norm. More...
 
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. More...
 
void computeResidual (libMesh::NonlinearImplicitSystem &sys, const NumericVector< libMesh::Number > &soln, NumericVector< libMesh::Number > &residual)
 This function is called by Libmesh to form a residual. More...
 
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). More...
 
void computeResidualAndJacobian (const NumericVector< libMesh::Number > &soln, NumericVector< libMesh::Number > &residual, libMesh::SparseMatrix< libMesh::Number > &jacobian)
 Form a residual and Jacobian with default tags. More...
 
virtual void computeResidualTag (const NumericVector< libMesh::Number > &soln, NumericVector< libMesh::Number > &residual, TagID tag)
 Form a residual vector for a given tag. More...
 
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. More...
 
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. More...
 
virtual void computeResidualTags (const std::set< TagID > &tags)
 Form multiple residual vectors and each is associated with one tag. More...
 
virtual void computeJacobianSys (libMesh::NonlinearImplicitSystem &sys, const NumericVector< libMesh::Number > &soln, libMesh::SparseMatrix< libMesh::Number > &jacobian)
 Form a Jacobian matrix. More...
 
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). More...
 
virtual void computeJacobianTag (const NumericVector< libMesh::Number > &soln, libMesh::SparseMatrix< libMesh::Number > &jacobian, TagID tag)
 Form a Jacobian matrix for a given tag. More...
 
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. More...
 
virtual void computeJacobianTags (const std::set< TagID > &tags)
 Form multiple matrices, and each is associated with a tag. More...
 
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. More...
 
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. More...
 
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. More...
 
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. More...
 
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. More...
 
virtual bool updateSolution (NumericVector< libMesh::Number > &vec_solution, NumericVector< libMesh::Number > &ghosted_solution)
 Update the solution. More...
 
virtual void predictorCleanup (NumericVector< libMesh::Number > &ghosted_solution)
 Perform cleanup tasks after application of predictor to solution vector. More...
 
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. More...
 
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
 
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 std::unordered_map< std::pair< BoundaryID, BoundaryID >, AutomaticMortarGeneration > & 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. More...
 
const MaterialPropertyRegistrygetMaterialPropertyRegistry () const
 
const InitialConditionWarehousegetInitialConditionWarehouse () const
 Return InitialCondition storage. More...
 
const FVInitialConditionWarehousegetFVInitialConditionWarehouse () const
 Return FVInitialCondition storage. More...
 
SolverParamssolverParams (unsigned int solver_sys_num=0)
 Get the solver parameters. More...
 
const SolverParamssolverParams (unsigned int solver_sys_num=0) const
 const version More...
 
Adaptivityadaptivity ()
 
virtual void initialAdaptMesh ()
 
virtual bool adaptMesh ()
 
unsigned int getNumCyclesCompleted ()
 
bool hasInitialAdaptivity () const
 Return a Boolean indicating whether initial AMR is turned on. More...
 
bool hasInitialAdaptivity () const
 Return a Boolean indicating whether initial AMR is turned on. More...
 
void initXFEM (std::shared_ptr< XFEMInterface > xfem)
 Create XFEM controller object. More...
 
std::shared_ptr< XFEMInterfacegetXFEM ()
 Get a pointer to the XFEM controller object. More...
 
bool haveXFEM ()
 Find out whether the current analysis is using XFEM. More...
 
virtual bool updateMeshXFEM ()
 Update the mesh due to changing XFEM cuts. More...
 
virtual void meshChanged (bool intermediate_change, bool contract_mesh, bool clean_refinement_flags)
 Update data after a mesh change. More...
 
void notifyWhenMeshChanges (MeshChangedInterface *mci)
 Register an object that derives from MeshChangedInterface to be notified when the mesh changes. More...
 
void notifyWhenMeshDisplaces (MeshDisplacedInterface *mdi)
 Register an object that derives from MeshDisplacedInterface to be notified when the displaced mesh gets updated. More...
 
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. More...
 
virtual void checkProblemIntegrity ()
 Method called to perform a series of sanity checks before a simulation is run. More...
 
void registerRandomInterface (RandomInterface &random_interface, const std::string &name)
 
void setConstJacobian (bool state)
 Set flag that Jacobian is constant (for optimization purposes) More...
 
void setKernelCoverageCheck (CoverageCheckMode mode)
 Set flag to indicate whether kernel coverage checks should be performed. More...
 
void setKernelCoverageCheck (bool flag)
 Set flag to indicate whether kernel coverage checks should be performed. More...
 
void setMaterialCoverageCheck (CoverageCheckMode mode)
 Set flag to indicate whether material coverage checks should be performed. More...
 
void setMaterialCoverageCheck (bool flag)
 Set flag to indicate whether material coverage checks should be performed. More...
 
void setParallelBarrierMessaging (bool flag)
 Toggle parallel barrier messaging (defaults to on). More...
 
void setVerboseProblem (bool verbose)
 Make the problem be verbose. More...
 
bool verboseMultiApps () const
 Whether or not to use verbose printing for MultiApps. More...
 
void parentOutputPositionChanged ()
 Calls parentOutputPositionChanged() on all sub apps. More...
 
unsigned int subspaceDim (const std::string &prefix) const
 Dimension of the subspace spanned by vectors with a given prefix. More...
 
const MaterialWarehousegetMaterialWarehouse () const
 
const MaterialWarehousegetRegularMaterialsWarehouse () const
 
const MaterialWarehousegetDiscreteMaterialWarehouse () const
 
const MaterialWarehousegetInterfaceMaterialsWarehouse () 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. More...
 
MaterialDatagetMaterialData (Moose::MaterialDataType type, const THREAD_ID tid=0) 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. More...
 
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. More...
 
void setPreserveMatrixSparsityPattern (bool preserve)
 Set whether the sparsity pattern of the matrices being formed during the solve (usually the Jacobian) should be preserved. More...
 
bool ignoreZerosInJacobian () const
 Will return true if zeros in the Jacobian are to be dropped from the sparsity pattern. More...
 
void setIgnoreZerosInJacobian (bool state)
 Set whether the zeros in the Jacobian should be dropped from the sparsity pattern. More...
 
bool acceptInvalidSolution () const
 Whether or not to accept the solution based on its invalidity. More...
 
bool allowInvalidSolution () const
 Whether to accept / allow an invalid solution. More...
 
bool showInvalidSolutionConsole () const
 Whether or not to print out the invalid solutions summary table in console. More...
 
bool immediatelyPrintInvalidSolution () const
 Whether or not the solution invalid warnings are printed out immediately. More...
 
bool hasTimeIntegrator () const
 Returns whether or not this Problem has a TimeIntegrator. More...
 
virtual void execute (const ExecFlagType &exec_type)
 Convenience function for performing execution of MOOSE systems. More...
 
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. More...
 
virtual void computeUserObjectByName (const ExecFlagType &type, const Moose::AuxGroup &group, const std::string &name)
 Compute an user object with the given name. More...
 
void needsPreviousNewtonIteration (bool state)
 Set a flag that indicated that user required values for the previous Newton iterate. More...
 
bool needsPreviousNewtonIteration () const
 Check to see whether we need to compute the variable values of the previous Newton iterate. More...
 
ExecuteMooseObjectWarehouse< Control > & getControlWarehouse ()
 Reference to the control logic warehouse. More...
 
void executeControls (const ExecFlagType &exec_type)
 Performs setup and execute calls for Control objects. More...
 
void executeSamplers (const ExecFlagType &exec_type)
 Performs setup and execute calls for Sampler objects. More...
 
virtual void updateActiveObjects ()
 Update the active objects in the warehouses. More...
 
void reportMooseObjectDependency (MooseObject *a, MooseObject *b)
 Register a MOOSE object dependency so we can either order operations properly or report when we cannot. More...
 
ExecuteMooseObjectWarehouse< MultiApp > & getMultiAppWarehouse ()
 
bool hasJacobian () const
 Returns _has_jacobian. More...
 
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) More...
 
void addOutput (const std::string &, const std::string &, InputParameters &)
 Adds an Output object. More...
 
TheWarehousetheWarehouse () const
 
void setSNESMFReuseBase (bool reuse, bool set_by_user)
 If or not to reuse the base vector for matrix-free calculation. More...
 
bool useSNESMFReuseBase ()
 Return a flag that indicates if we are reusing the vector base. More...
 
void skipExceptionCheck (bool skip_exception_check)
 Set a flag that indicates if we want to skip exception and stop solve. More...
 
bool isSNESMFReuseBaseSetbyUser ()
 Return a flag to indicate if _snesmf_reuse_base is set by users. More...
 
bool & petscOptionsInserted ()
 If PETSc options are already inserted. More...
 
PetscOptions & petscOptionsDatabase ()
 
virtual void setUDotRequested (const bool u_dot_requested)
 Set boolean flag to true to store solution time derivative. More...
 
virtual void setUDotDotRequested (const bool u_dotdot_requested)
 Set boolean flag to true to store solution second time derivative. More...
 
virtual void setUDotOldRequested (const bool u_dot_old_requested)
 Set boolean flag to true to store old solution time derivative. More...
 
virtual void setUDotDotOldRequested (const bool u_dotdot_old_requested)
 Set boolean flag to true to store old solution second time derivative. More...
 
virtual bool uDotRequested ()
 Get boolean flag to check whether solution time derivative needs to be stored. More...
 
virtual bool uDotDotRequested ()
 Get boolean flag to check whether solution second time derivative needs to be stored. More...
 
virtual bool uDotOldRequested ()
 Get boolean flag to check whether old solution time derivative needs to be stored. More...
 
virtual bool uDotDotOldRequested ()
 Get boolean flag to check whether old solution second time derivative needs to be stored. More...
 
void haveADObjects (bool have_ad_objects) override
 Method for setting whether we have any ad objects. More...
 
virtual void haveADObjects (bool have_ad_objects)
 Method for setting whether we have any ad objects. More...
 
bool haveADObjects () const
 Method for reading wehther we have any ad objects. More...
 
bool haveADObjects () const
 Method for reading wehther we have any ad objects. More...
 
bool shouldSolve () const
 
const MortarDatamortarData () const
 Returns the mortar data object. More...
 
MortarDatamortarData ()
 
virtual bool hasNeighborCoupling () const
 Whether the simulation has neighbor coupling. More...
 
virtual bool hasMortarCoupling () const
 Whether the simulation has mortar coupling. More...
 
void computingNonlinearResid (bool computing_nonlinear_residual) final
 Set whether or not the problem is in the process of computing the nonlinear residual. More...
 
bool computingNonlinearResid () const
 Returns true if the problem is in the process of computing the nonlinear residual. More...
 
virtual void computingNonlinearResid (const bool computing_nonlinear_residual)
 Set whether or not the problem is in the process of computing the nonlinear residual. More...
 
bool computingNonlinearResid () const
 Returns true if the problem is in the process of computing the nonlinear residual. More...
 
void setCurrentlyComputingResidual (bool currently_computing_residual) final
 Set whether or not the problem is in the process of computing the residual. More...
 
void numGridSteps (unsigned int num_grid_steps)
 Set the number of steps in a grid sequences. More...
 
void uniformRefine ()
 uniformly refine the problem mesh(es). More...
 
void automaticScaling (bool automatic_scaling) override
 Automatic scaling setter. More...
 
virtual void automaticScaling (bool automatic_scaling)
 Automatic scaling setter. More...
 
bool automaticScaling () const
 Automatic scaling getter. More...
 
bool automaticScaling () const
 Automatic scaling getter. More...
 
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. More...
 
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. More...
 
bool fvBCsIntegrityCheck () const
 
void fvBCsIntegrityCheck (bool fv_bcs_integrity_check)
 
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. More...
 
void resizeMaterialData (Moose::MaterialDataType data_type, unsigned int nqp, const THREAD_ID tid)
 Resize material data. More...
 
bool haveDisplaced () const override final
 Whether we have a displaced problem in our simulation. More...
 
bool hasLinearConvergenceObjects () const
 Whether we have linear convergence objects. More...
 
void setNonlinearConvergenceNames (const std::vector< ConvergenceName > &convergence_names)
 Sets the nonlinear convergence object name(s) if there is one. More...
 
void setLinearConvergenceNames (const std::vector< ConvergenceName > &convergence_names)
 Sets the linear convergence object name(s) if there is one. More...
 
void setMultiAppFixedPointConvergenceName (const ConvergenceName &convergence_name)
 Sets the MultiApp fixed point convergence object name if there is one. More...
 
const std::vector< ConvergenceName > & getNonlinearConvergenceNames () const
 Gets the nonlinear system convergence object name(s). More...
 
const std::vector< ConvergenceName > & getLinearConvergenceNames () const
 Gets the linear convergence object name(s). More...
 
const ConvergenceName & getMultiAppFixedPointConvergenceName () const
 Gets the MultiApp fixed point convergence object name. More...
 
void computingScalingJacobian (bool computing_scaling_jacobian)
 Setter for whether we're computing the scaling jacobian. More...
 
bool computingScalingJacobian () const override final
 Getter for whether we're computing the scaling jacobian. More...
 
void computingScalingResidual (bool computing_scaling_residual)
 Setter for whether we're computing the scaling residual. More...
 
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. More...
 
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) More...
 
bool getFailNextSystemConvergenceCheck () const
 Whether it will fail the next system convergence check(s), triggering failed step behavior. More...
 
void setFailNextNonlinearConvergenceCheck ()
 Skip further residual evaluations and fail the next nonlinear convergence check(s) More...
 
void setFailNextSystemConvergenceCheck ()
 Tell the problem that the system(s) cannot be considered converged next time convergence is checked. More...
 
void resetFailNextNonlinearConvergenceCheck ()
 Tell the problem that the nonlinear convergence check(s) may proceed as normal. More...
 
void resetFailNextSystemConvergenceCheck ()
 Tell the problem that the system convergence check(s) may proceed as normal. More...
 
void setExecutionPrinting (const ExecFlagEnum &print_exec)
 
bool shouldPrintExecution (const THREAD_ID tid) const
 Check whether the problem should output execution orders at this time. More...
 
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. More...
 
virtual const std::vector< VectorTag > & currentResidualVectorTags () const override
 Return the residual vector tags we are currently computing. More...
 
void setCurrentResidualVectorTags (const std::set< TagID > &vector_tags)
 Set the current residual vector tag data structure based on the passed in tag IDs. More...
 
void clearCurrentResidualVectorTags ()
 Clear the current residual vector tag data structure. More...
 
void clearCurrentJacobianMatrixTags ()
 Clear the current Jacobian matrix tag data structure ... More...
 
virtual void needFV () override
 marks this problem as including/needing finite volume functionality. More...
 
virtual bool haveFV () const override
 returns true if this problem includes/needs finite volume functionality. More...
 
virtual bool hasNonlocalCoupling () const override
 Whether the simulation has active nonlocal coupling which should be accounted for in the Jacobian. More...
 
bool identifyVariableGroupsInNL () const
 Whether to identify variable groups in nonlinear systems. More...
 
virtual void setCurrentLowerDElem (const Elem *const lower_d_elem, const THREAD_ID tid) override
 Set the current lower dimensional element. More...
 
virtual void setCurrentBoundaryID (BoundaryID bid, const THREAD_ID tid) override
 sets the current boundary ID in assembly More...
 
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
 
const bool & currentlyComputingResidual () const
 Returns true if the problem is in the process of computing the residual. More...
 
const bool & currentlyComputingResidual () const
 Returns true if the problem is in the process of computing the residual. More...
 
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. More...
 
bool defaultGhosting ()
 Whether or not the user has requested default ghosting ot be on. More...
 
virtual TagID addVectorTag (const TagName &tag_name, const Moose::VectorTagType type=Moose::VECTOR_TAG_RESIDUAL)
 Create a Tag. More...
 
void addNotZeroedVectorTag (const TagID tag)
 Adds a vector tag to the list of vectors that will not be zeroed when other tagged vectors are. More...
 
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. More...
 
virtual const VectorTaggetVectorTag (const TagID tag_id) const
 Get a VectorTag from a TagID. More...
 
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. More...
 
virtual TagID getVectorTagID (const TagName &tag_name) const
 Get a TagID from a TagName. More...
 
virtual TagName vectorTagName (const TagID tag) const
 Retrieve the name associated with a TagID. More...
 
virtual bool vectorTagExists (const TagID tag_id) const
 Check to see if a particular Tag exists. More...
 
virtual bool vectorTagExists (const TagName &tag_name) const
 Check to see if a particular Tag exists by using Tag name. More...
 
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. More...
 
virtual Moose::VectorTagType vectorTagType (const TagID tag_id) const
 
virtual TagID addMatrixTag (TagName tag_name)
 Create a Tag. More...
 
virtual TagID getMatrixTagID (const TagName &tag_name) const
 Get a TagID from a TagName. More...
 
virtual TagName matrixTagName (TagID tag)
 Retrieve the name associated with a TagID. More...
 
virtual bool matrixTagExists (const TagName &tag_name) const
 Check to see if a particular Tag exists. More...
 
virtual bool matrixTagExists (TagID tag_id) const
 Check to see if a particular Tag exists. More...
 
virtual unsigned int numMatrixTags () const
 The total number of tags. More...
 
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. More...
 
virtual bool hasLinearVariable (const std::string &var_name) const
 Whether or not this problem has this linear variable. More...
 
virtual bool hasAuxiliaryVariable (const std::string &var_name) const
 Whether or not this problem has this auxiliary variable. More...
 
virtual const std::set< MooseVariableFieldBase * > & getActiveElementalMooseVariables (const THREAD_ID tid) const
 Get the MOOSE variables to be reinited on each element. More...
 
virtual bool hasActiveElementalMooseVariables (const THREAD_ID tid) const
 Whether or not a list of active elemental moose variables has been set. More...
 
Moose::CoordinateSystemType getCoordSystem (SubdomainID sid) const
 
unsigned int getAxisymmetricRadialCoord () const
 Returns the desired radial direction for RZ coordinate transformation. More...
 
virtual DiracKernelInfodiracKernelInfo ()
 
void reinitNeighborLowerDElem (const Elem *elem, const THREAD_ID tid=0)
 reinitialize a neighboring lower dimensional element More...
 
void reinitMortarElem (const Elem *elem, const THREAD_ID tid=0)
 Reinit a mortar element to obtain a valid JxW. More...
 
virtual void storeSubdomainMatPropName (SubdomainID block_id, const std::string &name)
 Adds the given material property to a storage map based on block ids. More...
 
virtual void storeBoundaryMatPropName (BoundaryID boundary_id, const std::string &name)
 Adds the given material property to a storage map based on boundary ids. More...
 
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. More...
 
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. More...
 
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. More...
 
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. More...
 
virtual void checkBlockMatProps ()
 Checks block material properties integrity. More...
 
virtual void checkBoundaryMatProps ()
 Checks boundary material properties integrity. More...
 
virtual void markMatPropRequested (const std::string &)
 Helper method for adding a material property name to the _material_property_requested set. More...
 
virtual bool isMatPropRequested (const std::string &prop_name) const
 Find out if a material property has been requested by any object. More...
 
void addConsumedPropertyName (const MooseObjectName &obj_name, const std::string &prop_name)
 Helper for tracking the object that is consuming a property for MaterialPropertyDebugOutput. More...
 
const std::map< MooseObjectName, std::set< std::string > > & getConsumedPropertyMap () const
 Return the map that tracks the object with consumed material properties. More...
 
virtual std::set< SubdomainIDgetMaterialPropertyBlocks (const std::string &prop_name)
 Get a vector containing the block ids the material property is defined on. More...
 
virtual std::vector< SubdomainName > getMaterialPropertyBlockNames (const std::string &prop_name)
 Get a vector of block id equivalences that the material property is defined on. More...
 
virtual bool hasBlockMaterialProperty (SubdomainID block_id, const std::string &prop_name)
 Check if a material property is defined on a block. More...
 
virtual std::set< BoundaryIDgetMaterialPropertyBoundaryIDs (const std::string &prop_name)
 Get a vector containing the block ids the material property is defined on. More...
 
virtual std::vector< BoundaryName > getMaterialPropertyBoundaryNames (const std::string &prop_name)
 Get a vector of block id equivalences that the material property is defined on. More...
 
virtual bool hasBoundaryMaterialProperty (BoundaryID boundary_id, const std::string &prop_name)
 Check if a material property is defined on a block. More...
 
virtual std::set< dof_id_type > & ghostedElems ()
 Return the list of elements that should have their DoFs ghosted to this processor. More...
 
const bool & currentlyComputingJacobian () const
 Returns true if the problem is in the process of computing the Jacobian. More...
 
void setCurrentlyComputingJacobian (const bool currently_computing_jacobian)
 Set whether or not the problem is in the process of computing the Jacobian. More...
 
const bool & currentlyComputingResidualAndJacobian () const
 Returns true if the problem is in the process of computing the residual and the Jacobian. More...
 
void setCurrentlyComputingResidualAndJacobian (bool currently_computing_residual_and_jacobian)
 Set whether or not the problem is in the process of computing the Jacobian. More...
 
virtual bool safeAccessTaggedMatrices () const
 Is it safe to access the tagged matrices. More...
 
virtual bool safeAccessTaggedVectors () const
 Is it safe to access the tagged vectors. More...
 
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. More...
 
void addCouplingGhostingFunctor (libMesh::GhostingFunctor &coupling_gf, bool to_mesh=true)
 Add a coupling functor to this problem's DofMaps. More...
 
void removeAlgebraicGhostingFunctor (libMesh::GhostingFunctor &algebraic_gf)
 Remove an algebraic ghosting functor from this problem's DofMaps. More...
 
void removeCouplingGhostingFunctor (libMesh::GhostingFunctor &coupling_gf)
 Remove a coupling ghosting functor from this problem's DofMaps. More...
 
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. More...
 
void clearAllDofIndices ()
 Clear dof indices from variables in nl and aux systems. More...
 
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 More...
 
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 More...
 
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 More...
 
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. More...
 
void setFunctorOutput (bool set_output)
 Setter for debug functor output. More...
 
template<typename T >
void registerUnfilledFunctorRequest (T *functor_interface, const std::string &functor_name, const THREAD_ID tid)
 Register an unfulfilled functor request. More...
 
void reinitFVFace (const THREAD_ID tid, const FaceInfo &fi)
 reinitialize the finite volume assembly data for the provided face and thread More...
 
void preparePRefinement ()
 Prepare DofMap and Assembly classes with our p-refinement information. More...
 
bool doingPRefinement () const
 
bool havePRefinement () const
 Query whether p-refinement has been requested at any point during the simulation. More...
 
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. More...
 
virtual void terminateSolve ()
 Allow objects to request clean termination of the solve. More...
 
virtual bool isSolveTerminationRequested () const
 Check of termination has been requested. More...
 
const ConsoleStreamconsole () const
 Return console handle. More...
 
virtual bool enabled () const
 Return the enabled status of the object. More...
 
std::shared_ptr< MooseObjectgetSharedPtr ()
 Get another shared pointer to this object that has the same ownership group. More...
 
std::shared_ptr< const MooseObjectgetSharedPtr () const
 
MooseAppgetMooseApp () const
 Get the MooseApp this class is associated with. More...
 
const std::string & type () const
 Get the type of this class. More...
 
virtual const std::string & name () const
 Get the name of the class. More...
 
std::string typeAndName () const
 Get the class's combined type and name; useful in error handling. More...
 
std::string errorPrefix (const std::string &error_type) const
 
void callMooseError (std::string msg, const bool with_prefix) const
 Calls moose error with the message msg. More...
 
MooseObjectParameterName uniqueParameterName (const std::string &parameter_name) const
 The unique parameter name of a valid parameter of this object for accessing parameter controls. More...
 
const InputParametersparameters () const
 Get the parameters of the object. More...
 
MooseObjectName uniqueName () const
 The unique name for accessing input parameters of this object in the InputParameterWarehouse. More...
 
template<typename T >
const T & getParam (const std::string &name) const
 Retrieve a parameter for the object. More...
 
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. More...
 
template<typename T >
const T * queryParam (const std::string &name) const
 Query a parameter for the object. More...
 
template<typename T >
const T & getRenamedParam (const std::string &old_name, const std::string &new_name) const
 Retrieve a renamed parameter for the object. More...
 
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. More...
 
bool isParamValid (const std::string &name) const
 Test if the supplied parameter is valid. More...
 
bool isParamSetByUser (const std::string &nm) const
 Test if the supplied parameter is set by a user, as opposed to not set or set to default. More...
 
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. More...
 
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. More...
 
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. More...
 
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. More...
 
template<typename... Args>
void mooseError (Args &&... args) const
 Emits an error prefixed with object name and type. More...
 
template<typename... Args>
void mooseErrorNonPrefixed (Args &&... args) const
 Emits an error without the prefixing included in mooseError(). More...
 
template<typename... Args>
void mooseDocumentedError (const std::string &repo_name, const unsigned int issue_num, Args &&... args) const
 Emits a documented error with object name and type. More...
 
template<typename... Args>
void mooseWarning (Args &&... args) const
 Emits a warning prefixed with object name and type. More...
 
template<typename... Args>
void mooseWarningNonPrefixed (Args &&... args) const
 Emits a warning without the prefixing included in mooseWarning(). More...
 
template<typename... Args>
void mooseDeprecated (Args &&... args) const
 
template<typename... Args>
void mooseInfo (Args &&... args) const
 
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. More...
 
std::string getDataFileNameByName (const std::string &relative_path) const
 Deprecated method. More...
 
std::string getDataFilePath (const std::string &relative_path) const
 Returns the path of a data file for a given relative file path. More...
 
PerfGraphperfGraph ()
 Get the PerfGraph. More...
 
template<typename T >
void addGroupVariables (const std::set< T > &group_vars)
 Add a set of variables that need to be grouped together. More...
 
const libMesh::ConstElemRangegetEvaluableElementRange ()
 In general, {evaluable elements} >= {local elements} U {algebraic ghosting elements}. More...
 
const libMesh::ConstElemRangegetNonlinearEvaluableElementRange ()
 
const libMesh::ConstElemRangegetCurrentAlgebraicElementRange ()
 These are the element and nodes that contribute to the jacobian and residual for this local processor. More...
 
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. More...
 
void setCurrentAlgebraicNodeRange (libMesh::ConstNodeRange *range)
 
void setCurrentAlgebraicBndNodeRange (ConstBndNodeRange *range)
 
void allowOutput (bool state)
 Ability to enable/disable all output calls. More...
 
template<typename T >
void allowOutput (bool state)
 
bool hasMultiApps () const
 Returns whether or not the current simulation has any multiapps. More...
 
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. More...
 
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. More...
 
const MaterialPropertyStoragegetBndMaterialPropertyStorage ()
 
const MaterialPropertyStoragegetNeighborMaterialPropertyStorage ()
 
const MooseObjectWarehouse< Indicator > & getIndicatorWarehouse ()
 Return indicator/marker storage. More...
 
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. More...
 
bool needInterfaceMaterialOnSide (BoundaryID bnd_id, const THREAD_ID tid)
 
bool needSubdomainMaterialOnSide (SubdomainID subdomain_id, const THREAD_ID tid)
 
const ExecFlagTypegetCurrentExecuteOnFlag () const
 Return/set the current execution flag. More...
 
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. More...
 
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. More...
 
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. More...
 
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
 
const ConsoleStream _console
 An instance of helper class to write streams to the Console objects. More...
 
std::vector< Real_real_zero
 Convenience zeros. More...
 
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
 

Protected Member Functions

virtual void meshChanged ()
 Deprecated. More...
 
void createTagVectors ()
 Create extra tagged vectors and matrices. More...
 
void createTagSolutions ()
 Create extra tagged solution vectors. More...
 
virtual void meshDisplaced ()
 Update data after a mesh displaced. More...
 
void computeSystems (const ExecFlagType &type)
 Do generic system computations. More...
 
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. More...
 
void computeUserObjectsInternal (const ExecFlagType &type, const Moose::AuxGroup &group, TheWarehouse::Query &query)
 
void checkDisplacementOrders ()
 Verify that SECOND order mesh uses SECOND order displacements. More...
 
void checkUserObjects ()
 
void checkDependMaterialsHelper (const std::map< SubdomainID, std::vector< std::shared_ptr< MaterialBase >>> &materials_map)
 Helper method for checking Material object dependency. More...
 
void checkCoordinateSystems ()
 Verify that there are no element type/coordinate type conflicts. More...
 
void reinitBecauseOfGhostingOrNewGeomObjects (bool mortar_changed=false)
 Call when it is possible that the needs for ghosted elements has changed. More...
 
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(). More...
 
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. More...
 
bool verifyVectorTags () const
 Verify the integrity of _vector_tags and _typed_vector_tags. More...
 
void markFamilyPRefinement (const InputParameters &params)
 Mark a variable family for either disabling or enabling p-refinement with valid parameters of a variable. More...
 
PerfID registerTimedSection (const std::string &section_name, const unsigned int level) const
 Call to register a named section for timing. More...
 
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. More...
 
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. More...
 
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. More...
 
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. More...
 
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. More...
 
template<typename T , typename... Args>
T & declareRecoverableData (const std::string &data_name, Args &&... args)
 Declare a piece of data as "recoverable" and initialize it. More...
 
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". More...
 
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". More...
 
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. More...
 

Protected Attributes

bool _use_nonlinear
 
std::vector< std::shared_ptr< NonlinearSystem > > _nl_sys
 
MooseMesh_mesh
 
bool _initialized
 
std::optional< std::vector< ConvergenceName > > _nonlinear_convergence_names
 Nonlinear system(s) convergence name(s) More...
 
std::optional< std::vector< ConvergenceName > > _linear_convergence_names
 Linear system(s) convergence name(s) (if any) More...
 
std::optional< ConvergenceName > _multiapp_fixed_point_convergence_name
 MultiApp fixed point convergence name. More...
 
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. More...
 
std::set< TagID_linear_matrix_tags
 Temporary storage for filtered matrix tags for linear systems. More...
 
const bool & _solve
 Whether or not to actually solve the nonlinear system. More...
 
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. More...
 
bool _need_to_add_default_multiapp_fixed_point_convergence
 Flag that the problem needs to add the default fixed point convergence. More...
 
const std::vector< LinearSystemName > _linear_sys_names
 The linear system names. More...
 
const std::size_t _num_linear_sys
 The number of linear systems. More...
 
std::vector< std::shared_ptr< LinearSystem > > _linear_systems
 The vector of linear systems. More...
 
std::map< LinearSystemName, unsigned int_linear_sys_name_to_num
 Map from linear system name to number. More...
 
LinearSystem_current_linear_sys
 The current linear system that we are solving. More...
 
const bool _using_default_nl
 Boolean to check if we have the default nonlinear system. More...
 
const std::vector< NonlinearSystemName > _nl_sys_names
 The nonlinear system names. More...
 
const std::size_t _num_nl_sys
 The number of nonlinear systems. More...
 
std::map< NonlinearSystemName, unsigned int_nl_sys_name_to_num
 Map from nonlinear system name to number. More...
 
NonlinearSystemBase_current_nl_sys
 The current nonlinear system that we are solving. More...
 
SolverSystem_current_solver_sys
 The current solver system. More...
 
std::vector< std::shared_ptr< SolverSystem > > _solver_systems
 Combined container to base pointer of every solver system. More...
 
std::map< SolverVariableName, unsigned int_solver_var_to_sys_num
 Map connecting variable names with their respective solver systems. More...
 
std::map< SolverSystemName, unsigned int_solver_sys_name_to_num
 Map connecting solver system names with their respective systems. More...
 
std::vector< SolverSystemName > _solver_sys_names
 The union of nonlinear and linear system names. More...
 
std::shared_ptr< AuxiliarySystem_aux
 The auxiliary system. More...
 
Moose::CouplingType _coupling
 Type of variable coupling. More...
 
std::vector< std::unique_ptr< libMesh::CouplingMatrix > > _cm
 Coupling matrix for variables. More...
 
std::map< std::string, unsigned int_subspace_dim
 Dimension of the subspace spanned by the vectors with a given prefix. More...
 
std::vector< std::vector< std::unique_ptr< Assembly > > > _assembly
 The Assembly objects. More...
 
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. More...
 
MooseObjectWarehouse< Function_functions
 functions More...
 
MooseObjectWarehouse< Convergence_convergences
 convergence warehouse More...
 
MooseObjectWarehouse< KernelBase_nonlocal_kernels
 nonlocal kernels More...
 
MooseObjectWarehouse< IntegratedBCBase_nonlocal_integrated_bcs
 nonlocal integrated_bcs More...
 
MaterialPropertyRegistry _material_prop_registry
 
MaterialPropertyStorage_material_props
 
MaterialPropertyStorage_bnd_material_props
 
MaterialPropertyStorage_neighbor_material_props
 
MooseObjectWarehouse< Marker_markers
 
ReporterData _reporter_data
 
ExecuteMooseObjectWarehouse< UserObject_all_user_objects
 
ExecuteMooseObjectWarehouse< MultiApp_multi_apps
 MultiApp Warehouse. More...
 
ExecuteMooseObjectWarehouse< TransientMultiApp_transient_multi_apps
 Storage for TransientMultiApps (only needed for calling 'computeDT') More...
 
ExecuteMooseObjectWarehouse< Transfer_transfers
 Normal Transfers. More...
 
ExecuteMooseObjectWarehouse< Transfer_to_multi_app_transfers
 Transfers executed just before MultiApps to transfer data to them. More...
 
ExecuteMooseObjectWarehouse< Transfer_from_multi_app_transfers
 Transfers executed just after MultiApps to transfer data from them. More...
 
ExecuteMooseObjectWarehouse< Transfer_between_multi_app_transfers
 Transfers executed just before MultiApps to transfer data between them. More...
 
std::map< std::string, std::unique_ptr< RandomData > > _random_data_objects
 A map of objects that consume random numbers. More...
 
std::vector< std::unordered_map< SubdomainID, bool > > _block_mat_side_cache
 Cache for calculating materials on side. More...
 
std::vector< std::unordered_map< BoundaryID, bool > > _bnd_mat_side_cache
 Cache for calculating materials on side. More...
 
std::vector< std::unordered_map< BoundaryID, bool > > _interface_mat_side_cache
 Cache for calculating materials on interface. More...
 
std::vector< MeshChangedInterface * > _notify_when_mesh_changes
 Objects to be notified when the mesh changes. More...
 
std::vector< MeshDisplacedInterface * > _notify_when_mesh_displaces
 Objects to be notified when the mesh displaces. More...
 
Adaptivity _adaptivity
 
unsigned int _cycles_completed
 
std::shared_ptr< XFEMInterface_xfem
 Pointer to XFEM controller. More...
 
MooseMesh_displaced_mesh
 
std::shared_ptr< DisplacedProblem_displaced_problem
 
GeometricSearchData _geometric_search_data
 
MortarData _mortar_data
 
bool _reinit_displaced_elem
 Whether to call DisplacedProblem::reinitElem when this->reinitElem is called. More...
 
bool _reinit_displaced_face
 Whether to call DisplacedProblem::reinitElemFace when this->reinitElemFace is called. More...
 
bool _reinit_displaced_neighbor
 Whether to call DisplacedProblem::reinitNeighbor when this->reinitNeighbor is called. More...
 
bool _input_file_saved
 whether input file has been written More...
 
bool _has_dampers
 Whether or not this system has any Dampers associated with it. More...
 
bool _has_constraints
 Whether or not this system has any Constraints. More...
 
bool _snesmf_reuse_base
 If or not to resuse the base vector for matrix-free calculation. More...
 
bool _skip_exception_check
 If or not skip 'exception and stop solve'. More...
 
bool _snesmf_reuse_base_set_by_user
 If or not _snesmf_reuse_base is set by user. More...
 
bool _has_initialized_stateful
 Whether nor not stateful materials have been initialized. More...
 
bool _const_jacobian
 true if the Jacobian is constant More...
 
bool _has_jacobian
 Indicates if the Jacobian was computed. More...
 
bool _needs_old_newton_iter
 Indicates that we need to compute variable values for previous Newton iteration. More...
 
bool _previous_nl_solution_required
 Indicates we need to save the previous NL iteration variable values. More...
 
bool _has_nonlocal_coupling
 Indicates if nonlocal coupling is required/exists. More...
 
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. More...
 
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. More...
 
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. More...
 
const bool _boundary_restricted_elem_integrity_check
 whether to perform checking of boundary restricted elemental object variable dependencies, e.g. More...
 
CoverageCheckMode _material_coverage_check
 Determines whether and which subdomains are to be checked to ensure that they have an active material. More...
 
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. More...
 
const bool _material_dependency_check
 Determines whether a check to verify material dependencies on every subdomain. More...
 
const bool _uo_aux_state_check
 Whether or not checking the state of uo/aux evaluation. More...
 
unsigned int _max_qps
 Maximum number of quadrature points used in the problem. More...
 
libMesh::Order _max_scalar_order
 Maximum scalar variable order. More...
 
bool _has_time_integrator
 Indicates whether or not this executioner has a time integrator (during setup) More...
 
bool _has_exception
 Whether or not an exception has occurred. More...
 
bool _parallel_barrier_messaging
 Whether or not information about how many transfers have completed is printed. More...
 
MooseEnum _verbose_setup
 Whether or not to be verbose during setup. More...
 
bool _verbose_multiapps
 Whether or not to be verbose with multiapps. More...
 
bool _verbose_restore
 Whether or not to be verbose on solution restoration post a failed time step. More...
 
std::string _exception_message
 The error message to go with an exception. More...
 
ExecFlagType _current_execute_on_flag
 Current execute_on flag. More...
 
ExecuteMooseObjectWarehouse< Control_control_warehouse
 The control logic warehouse. More...
 
Moose::PetscSupport::PetscOptions _petsc_options
 PETSc option storage. More...
 
PetscOptions _petsc_option_data_base
 
bool _is_petsc_options_inserted
 If or not PETSc options have been added to database. More...
 
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. More...
 
unsigned short _current_ic_state
 
const bool _use_hash_table_matrix_assembly
 Whether to assemble matrices using hash tables instead of preallocating matrix memory. More...
 
std::map< TagName, TagID_matrix_tag_name_to_tag_id
 The currently declared tags. More...
 
std::map< TagID, TagName > _matrix_tag_id_to_tag_name
 Reverse map. More...
 
Factory_factory
 The Factory for building objects. More...
 
DiracKernelInfo _dirac_kernel_info
 
std::map< SubdomainID, std::set< std::string > > _map_block_material_props
 Map of material properties (block_id -> list of properties) More...
 
std::map< BoundaryID, std::set< std::string > > _map_boundary_material_props
 Map for boundary material properties (boundary_id -> list of properties) More...
 
std::map< SubdomainID, std::set< MaterialPropertyName > > _zero_block_material_props
 Set of properties returned as zero properties. More...
 
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* More...
 
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) More...
 
std::vector< unsigned int_has_active_elemental_moose_variables
 Whether or not there is currently a list of active elemental moose variables. More...
 
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. More...
 
std::set< dof_id_type_ghosted_elems
 Elements that should have Dofs ghosted to the local processor. More...
 
bool _currently_computing_jacobian
 Flag to determine whether the problem is currently computing Jacobian. More...
 
bool _currently_computing_residual_and_jacobian
 Flag to determine whether the problem is currently computing the residual and Jacobian. More...
 
bool _computing_nonlinear_residual
 Whether the non-linear residual is being evaluated. More...
 
bool _currently_computing_residual
 Whether the residual is being evaluated. More...
 
bool _safe_access_tagged_matrices
 Is it safe to retrieve data from tagged matrices. More...
 
bool _safe_access_tagged_vectors
 Is it safe to retrieve data from tagged vectors. More...
 
bool _have_ad_objects
 AD flag indicating whether any AD objects have been added. More...
 
std::unordered_set< TagID_not_zeroed_tagged_vectors
 the list of vector tags that will not be zeroed when all other tags are More...
 
bool _cli_option_found
 True if the CLI option is found. More...
 
bool _color_output
 True if we're going to attempt to write color output. More...
 
bool _termination_requested
 True if termination of the solve has been requested. More...
 
const bool & _enabled
 Reference to the "enable" InputParameters, used by Controls for toggling on/off MooseObjects. More...
 
MooseApp_app
 The MOOSE application this is associated with. More...
 
const std::string _type
 The type of this class. More...
 
const std::string _name
 The name of this class. More...
 
const InputParameters_pars
 Parameters of this object, references the InputParameters stored in the InputParametersWarehouse. More...
 
ActionFactory_action_factory
 Builds Actions. More...
 
const Parallel::Communicator_communicator
 
MooseApp_pg_moose_app
 The MooseApp that owns the PerfGraph. More...
 
const std::string _prefix
 A prefix to use for all sections. More...
 
MooseApp_restartable_app
 Reference to the application. More...
 
const std::string _restartable_system_name
 The system name this object is in. More...
 
const THREAD_ID _restartable_tid
 The thread ID for this object. More...
 
const bool _restartable_read_only
 Flag for toggling read only status (see ReporterData) More...
 
std::vector< std::vector< NonlinearVariableName > > _group_variables
 Name of variables that are grouped together to check convergence. More...
 
bool _use_group_variables
 True if any variables are grouped. More...
 
InitialConditionWarehouse _ics
 
FVInitialConditionWarehouse _fv_ics
 
ScalarInitialConditionWarehouse _scalar_ics
 
MaterialWarehouse _materials
 
MaterialWarehouse _interface_materials
 
MaterialWarehouse _discrete_materials
 
MaterialWarehouse _all_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. More...
 
std::map< BoundaryID, std::multimap< std::string, std::string > > _map_boundary_material_props_check
 

Detailed Description

Problem that checks for convergence relative to a user-supplied reference quantity rather than the initial residual.

Definition at line 19 of file ReferenceResidualProblem.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 FEProblemBase::CoverageCheckMode
stronginherited
Enumerator
FALSE 
TRUE 
OFF 
ON 
SKIP_LIST 
ONLY_LIST 

Definition at line 140 of file FEProblemBase.h.

141  {
142  FALSE,
143  TRUE,
144  OFF,
145  ON,
146  SKIP_LIST,
147  ONLY_LIST,
148  };

Constructor & Destructor Documentation

◆ ReferenceResidualProblem()

ReferenceResidualProblem::ReferenceResidualProblem ( const InputParameters params)

Definition at line 30 of file ReferenceResidualProblem.C.

31  : FEProblem(params), ReferenceResidualInterface(this)
32 {
33 }
FEProblem(const InputParameters &parameters)
Definition: FEProblem.C:35
ReferenceResidualInterface(const MooseObject *moose_object)

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 3785 of file FEProblemBase.C.

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

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

◆ adaptivity()

Adaptivity& FEProblemBase::adaptivity ( )
inlineinherited

◆ adaptMesh()

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

Reimplemented in DumpObjectsProblem.

Definition at line 7920 of file FEProblemBase.C.

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

7921 {
7922  // reset cycle counter
7923  _cycles_completed = 0;
7924 
7926  return false;
7927 
7928  TIME_SECTION("adaptMesh", 3, "Adapting Mesh");
7929 
7930  unsigned int cycles_per_step = _adaptivity.getCyclesPerStep();
7931 
7932  bool mesh_changed = false;
7933 
7934  for (unsigned int i = 0; i < cycles_per_step; ++i)
7935  {
7936  if (!_mesh.interiorLowerDBlocks().empty() || !_mesh.boundaryLowerDBlocks().empty())
7937  mooseError("HFEM does not support mesh adaptivity currently.");
7938 
7939  // Markers were already computed once by Executioner
7940  if (_adaptivity.getRecomputeMarkersFlag() && i > 0)
7941  computeMarkers();
7942 
7943  bool mesh_changed_this_step;
7944  mesh_changed_this_step = _adaptivity.adaptMesh();
7945 
7946  if (mesh_changed_this_step)
7947  {
7948  mesh_changed = true;
7949 
7950  meshChanged(
7951  /*intermediate_change=*/true, /*contract_mesh=*/true, /*clean_refinement_flags=*/true);
7953  }
7954  else
7955  {
7956  // If the mesh didn't change, we still need to update the displaced mesh
7957  // to undo the undisplacement performed in Adaptivity::adaptMesh
7958  if (_displaced_problem)
7959  _displaced_problem->updateMesh();
7960 
7961  _console << "Mesh unchanged, skipping remaining steps..." << std::endl;
7962  break;
7963  }
7964 
7965  // Show adaptivity progress
7966  _console << std::flush;
7967  }
7968 
7969  // We're done with all intermediate changes; now get systems ready
7970  // for real if necessary.
7971  if (mesh_changed)
7972  es().reinit_systems();
7973 
7974  // Execute multi-apps that need to run after adaptivity, but before the next timestep.
7976 
7977  return mesh_changed;
7978 }
bool adaptMesh(std::string marker_name=std::string())
Adapts the mesh based on the error estimator used.
Definition: Adaptivity.C:131
virtual void meshChanged()
Deprecated.
const std::set< SubdomainID > & interiorLowerDBlocks() const
Definition: MooseMesh.h:1403
unsigned int _cycles_completed
unsigned int getCyclesPerStep() const
Pull out the number of cycles_per_step previously set through the AdaptivityAction.
Definition: Adaptivity.h:112
virtual void computeMarkers()
virtual void reinit_systems()
bool getRecomputeMarkersFlag() const
Pull out the _recompute_markers_during_cycles flag previously set through the AdaptivityAction.
Definition: Adaptivity.h:125
virtual libMesh::EquationSystems & es() override
MooseMesh & _mesh
Adaptivity _adaptivity
const std::set< SubdomainID > & boundaryLowerDBlocks() const
Definition: MooseMesh.h:1407
void mooseError(Args &&... args) const
Emits an error prefixed with object name and type.
std::shared_ptr< DisplacedProblem > _displaced_problem
bool isAdaptivityDue()
Query if an adaptivity step should be performed at the current time / time step.
Definition: Adaptivity.C:393
const ConsoleStream _console
An instance of helper class to write streams to the Console objects.
bool execMultiApps(ExecFlagType type, bool auto_advance=true)
Execute the MultiApps associated with the ExecFlagType.
const ExecFlagType EXEC_POST_ADAPTIVITY
Definition: Moose.C:54

◆ 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 1023 of file SubProblem.C.

1024 {
1025  EquationSystems & eq = es();
1026  const auto n_sys = eq.n_systems();
1027  if (!n_sys)
1028  return;
1029 
1030  eq.get_system(0).get_dof_map().add_algebraic_ghosting_functor(algebraic_gf, to_mesh);
1031  cloneAlgebraicGhostingFunctor(algebraic_gf, to_mesh);
1032 }
unsigned int n_systems() const
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...
Definition: SubProblem.C:1001
const T_sys & get_system(std::string_view name) const
virtual libMesh::EquationSystems & es()=0

◆ 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 3166 of file FEProblemBase.C.

3170 {
3171  parallel_object_only();
3172 
3173  mooseDeprecated("Please use the addAuxVariable(var_type, var_name, params) API instead");
3174 
3175  if (duplicateVariableCheck(var_name, type, /* is_aux = */ true, active_subdomains))
3176  return;
3177 
3178  InputParameters params = _factory.getValidParams("ArrayMooseVariable");
3179  params.set<FEProblemBase *>("_fe_problem_base") = this;
3181  params.set<MooseEnum>("order") = type.order.get_order();
3182  params.set<MooseEnum>("family") = Moose::stringify(type.family);
3183  params.set<unsigned int>("components") = components;
3184 
3185  if (active_subdomains)
3186  for (const SubdomainID & id : *active_subdomains)
3187  params.set<std::vector<SubdomainName>>("block").push_back(Moose::stringify(id));
3188 
3189  logAdd("Variable", var_name, "ArrayMooseVariable", params);
3190  _aux->addVariable("ArrayMooseVariable", var_name, params);
3191  if (_displaced_problem)
3192  _displaced_problem->addAuxVariable("ArrayMooseVariable", var_name, params);
3193 
3194  markFamilyPRefinement(params);
3195 }
Factory & _factory
The Factory for building objects.
Definition: SubProblem.h:1047
void mooseDeprecated(Args &&... args) const
T & set(const std::string &name, bool quiet_mode=false)
Returns a writable reference to the named parameters.
The main MOOSE class responsible for handling user-defined parameters in almost every MOOSE system...
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.
Specialization of SubProblem for solving nonlinear equations plus auxiliary equations.
VarKindType
Framework-wide stuff.
Definition: MooseTypes.h:714
std::shared_ptr< AuxiliarySystem > _aux
The auxiliary system.
void markFamilyPRefinement(const InputParameters &params)
Mark a variable family for either disabling or enabling p-refinement with valid parameters of a varia...
Definition: SubProblem.C:1361
const std::string & type() const
Get the type of this class.
Definition: MooseBase.h:51
This is a "smart" enum class intended to replace many of the shortcomings in the C++ enum type It sho...
Definition: MooseEnum.h:33
std::string stringify(const T &t)
conversion to string
Definition: Conversion.h:64
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.
std::shared_ptr< DisplacedProblem > _displaced_problem

◆ addAuxKernel()

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

Reimplemented in MFEMProblem.

Definition at line 3232 of file FEProblemBase.C.

3235 {
3236  parallel_object_only();
3237 
3238  if (_displaced_problem && parameters.get<bool>("use_displaced_mesh"))
3239  {
3240  parameters.set<SubProblem *>("_subproblem") = _displaced_problem.get();
3241  parameters.set<SystemBase *>("_sys") = &_displaced_problem->auxSys();
3242  parameters.set<SystemBase *>("_nl_sys") = &_displaced_problem->solverSys(0);
3243  if (!parameters.get<std::vector<BoundaryName>>("boundary").empty())
3244  _reinit_displaced_face = true;
3245  else
3246  _reinit_displaced_elem = true;
3247  }
3248  else
3249  {
3250  if (_displaced_problem == nullptr && parameters.get<bool>("use_displaced_mesh"))
3251  {
3252  // We allow AuxKernels to request that they use_displaced_mesh,
3253  // but then be overridden when no displacements variables are
3254  // provided in the Mesh block. If that happened, update the value
3255  // of use_displaced_mesh appropriately for this AuxKernel.
3256  if (parameters.have_parameter<bool>("use_displaced_mesh"))
3257  parameters.set<bool>("use_displaced_mesh") = false;
3258  }
3259 
3260  parameters.set<SubProblem *>("_subproblem") = this;
3261  parameters.set<SystemBase *>("_sys") = _aux.get();
3262  parameters.set<SystemBase *>("_nl_sys") = _solver_systems[0].get();
3263  }
3264 
3265  logAdd("AuxKernel", name, kernel_name, parameters);
3266  _aux->addKernel(kernel_name, name, parameters);
3267 }
bool _reinit_displaced_elem
Whether to call DisplacedProblem::reinitElem when this->reinitElem is called.
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.
T & set(const std::string &name, bool quiet_mode=false)
Returns a writable reference to the named parameters.
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.
std::vector< std::shared_ptr< SolverSystem > > _solver_systems
Combined container to base pointer of every solver system.
Base class for a system (of equations)
Definition: SystemBase.h:84
virtual const std::string & name() const
Get the name of the class.
Definition: MooseBase.h:57
std::shared_ptr< AuxiliarySystem > _aux
The auxiliary system.
bool have_parameter(std::string_view name) const
A wrapper around the Parameters base class method.
bool _reinit_displaced_face
Whether to call DisplacedProblem::reinitElemFace when this->reinitElemFace is called.
Generic class for solving transient nonlinear problems.
Definition: SubProblem.h:78
std::shared_ptr< DisplacedProblem > _displaced_problem
const InputParameters & parameters() const
Get the parameters of the object.

◆ addAuxScalarKernel()

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

Definition at line 3270 of file FEProblemBase.C.

3273 {
3274  parallel_object_only();
3275 
3276  if (_displaced_problem && parameters.get<bool>("use_displaced_mesh"))
3277  {
3278  parameters.set<SubProblem *>("_subproblem") = _displaced_problem.get();
3279  parameters.set<SystemBase *>("_sys") = &_displaced_problem->auxSys();
3280  }
3281  else
3282  {
3283  if (_displaced_problem == nullptr && parameters.get<bool>("use_displaced_mesh"))
3284  {
3285  // We allow AuxScalarKernels to request that they use_displaced_mesh,
3286  // but then be overridden when no displacements variables are
3287  // provided in the Mesh block. If that happened, update the value
3288  // of use_displaced_mesh appropriately for this AuxScalarKernel.
3289  if (parameters.have_parameter<bool>("use_displaced_mesh"))
3290  parameters.set<bool>("use_displaced_mesh") = false;
3291  }
3292 
3293  parameters.set<SubProblem *>("_subproblem") = this;
3294  parameters.set<SystemBase *>("_sys") = _aux.get();
3295  }
3296 
3297  logAdd("AuxScalarKernel", name, kernel_name, parameters);
3298  _aux->addScalarKernel(kernel_name, name, parameters);
3299 }
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.
T & set(const std::string &name, bool quiet_mode=false)
Returns a writable reference to the named parameters.
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.
Base class for a system (of equations)
Definition: SystemBase.h:84
virtual const std::string & name() const
Get the name of the class.
Definition: MooseBase.h:57
std::shared_ptr< AuxiliarySystem > _aux
The auxiliary system.
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:78
std::shared_ptr< DisplacedProblem > _displaced_problem
const InputParameters & parameters() const
Get the parameters of the object.

◆ 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 3198 of file FEProblemBase.C.

3202 {
3203  parallel_object_only();
3204 
3205  mooseDeprecated("Please use the addAuxVariable(var_type, var_name, params) API instead");
3206 
3207  if (order > _max_scalar_order)
3208  _max_scalar_order = order;
3209 
3210  FEType type(order, SCALAR);
3211  if (duplicateVariableCheck(var_name, type, /* is_aux = */ true, active_subdomains))
3212  return;
3213 
3214  InputParameters params = _factory.getValidParams("MooseVariableScalar");
3215  params.set<FEProblemBase *>("_fe_problem_base") = this;
3217 
3218  params.set<MooseEnum>("order") = type.order.get_order();
3219  params.set<MooseEnum>("family") = "SCALAR";
3220  params.set<std::vector<Real>>("scaling") = {1};
3221  if (active_subdomains)
3222  for (const SubdomainID & id : *active_subdomains)
3223  params.set<std::vector<SubdomainName>>("block").push_back(Moose::stringify(id));
3224 
3225  logAdd("ScalarVariable", var_name, "MooseVariableScalar", params);
3226  _aux->addVariable("MooseVariableScalar", var_name, params);
3227  if (_displaced_problem)
3228  _displaced_problem->addAuxVariable("MooseVariableScalar", var_name, params);
3229 }
Factory & _factory
The Factory for building objects.
Definition: SubProblem.h:1047
void mooseDeprecated(Args &&... args) const
T & set(const std::string &name, bool quiet_mode=false)
Returns a writable reference to the named parameters.
The main MOOSE class responsible for handling user-defined parameters in almost every MOOSE system...
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.
Specialization of SubProblem for solving nonlinear equations plus auxiliary equations.
VarKindType
Framework-wide stuff.
Definition: MooseTypes.h:714
std::shared_ptr< AuxiliarySystem > _aux
The auxiliary system.
const std::string & type() const
Get the type of this class.
Definition: MooseBase.h:51
This is a "smart" enum class intended to replace many of the shortcomings in the C++ enum type It sho...
Definition: MooseEnum.h:33
std::string stringify(const T &t)
conversion to string
Definition: Conversion.h:64
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.
std::shared_ptr< DisplacedProblem > _displaced_problem
libMesh::Order _max_scalar_order
Maximum scalar variable order.

◆ addAuxVariable() [1/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.

Definition at line 3095 of file FEProblemBase.C.

Referenced by AddElementalFieldAction::init(), and AddAuxVariableAction::init().

3098 {
3099  parallel_object_only();
3100 
3101  const auto order = Utility::string_to_enum<Order>(params.get<MooseEnum>("order"));
3102  const auto family = Utility::string_to_enum<FEFamily>(params.get<MooseEnum>("family"));
3103  const auto fe_type = FEType(order, family);
3104 
3105  const auto active_subdomains_vector =
3106  _mesh.getSubdomainIDs(params.get<std::vector<SubdomainName>>("block"));
3107  const std::set<SubdomainID> active_subdomains(active_subdomains_vector.begin(),
3108  active_subdomains_vector.end());
3109 
3110  if (duplicateVariableCheck(var_name, fe_type, /* is_aux = */ true, &active_subdomains))
3111  return;
3112 
3113  params.set<FEProblemBase *>("_fe_problem_base") = this;
3115 
3116  logAdd("AuxVariable", var_name, var_type, params);
3117  _aux->addVariable(var_type, var_name, params);
3118  if (_displaced_problem)
3119  // MooseObjects need to be unique so change the name here
3120  _displaced_problem->addAuxVariable(var_type, var_name, params);
3121 
3122  markFamilyPRefinement(params);
3123 }
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.
T & set(const std::string &name, bool quiet_mode=false)
Returns a writable reference to the named parameters.
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.
Specialization of SubProblem for solving nonlinear equations plus auxiliary equations.
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:1734
VarKindType
Framework-wide stuff.
Definition: MooseTypes.h:714
std::shared_ptr< AuxiliarySystem > _aux
The auxiliary system.
MooseMesh & _mesh
void markFamilyPRefinement(const InputParameters &params)
Mark a variable family for either disabling or enabling p-refinement with valid parameters of a varia...
Definition: SubProblem.C:1361
This is a "smart" enum class intended to replace many of the shortcomings in the C++ enum type It sho...
Definition: MooseEnum.h:33
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.
std::shared_ptr< DisplacedProblem > _displaced_problem

◆ addAuxVariable() [2/2]

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

Definition at line 3126 of file FEProblemBase.C.

3129 {
3130  parallel_object_only();
3131 
3132  mooseDeprecated("Please use the addAuxVariable(var_type, var_name, params) API instead");
3133 
3134  if (duplicateVariableCheck(var_name, type, /* is_aux = */ true, active_subdomains))
3135  return;
3136 
3137  std::string var_type;
3138  if (type == FEType(0, MONOMIAL))
3139  var_type = "MooseVariableConstMonomial";
3140  else if (type.family == SCALAR)
3141  var_type = "MooseVariableScalar";
3142  else if (FEInterface::field_type(type) == TYPE_VECTOR)
3143  var_type = "VectorMooseVariable";
3144  else
3145  var_type = "MooseVariable";
3146 
3147  InputParameters params = _factory.getValidParams(var_type);
3148  params.set<FEProblemBase *>("_fe_problem_base") = this;
3150  params.set<MooseEnum>("order") = type.order.get_order();
3151  params.set<MooseEnum>("family") = Moose::stringify(type.family);
3152 
3153  if (active_subdomains)
3154  for (const SubdomainID & id : *active_subdomains)
3155  params.set<std::vector<SubdomainName>>("block").push_back(Moose::stringify(id));
3156 
3157  logAdd("AuxVariable", var_name, var_type, params);
3158  _aux->addVariable(var_type, var_name, params);
3159  if (_displaced_problem)
3160  _displaced_problem->addAuxVariable("MooseVariable", var_name, params);
3161 
3162  markFamilyPRefinement(params);
3163 }
Factory & _factory
The Factory for building objects.
Definition: SubProblem.h:1047
void mooseDeprecated(Args &&... args) const
T & set(const std::string &name, bool quiet_mode=false)
Returns a writable reference to the named parameters.
The main MOOSE class responsible for handling user-defined parameters in almost every MOOSE system...
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.
Specialization of SubProblem for solving nonlinear equations plus auxiliary equations.
VarKindType
Framework-wide stuff.
Definition: MooseTypes.h:714
std::shared_ptr< AuxiliarySystem > _aux
The auxiliary system.
void markFamilyPRefinement(const InputParameters &params)
Mark a variable family for either disabling or enabling p-refinement with valid parameters of a varia...
Definition: SubProblem.C:1361
const std::string & type() const
Get the type of this class.
Definition: MooseBase.h:51
This is a "smart" enum class intended to replace many of the shortcomings in the C++ enum type It sho...
Definition: MooseEnum.h:33
std::string stringify(const T &t)
conversion to string
Definition: Conversion.h:64
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.
std::shared_ptr< DisplacedProblem > _displaced_problem

◆ addBoundaryCondition()

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

Reimplemented in MFEMProblem.

Definition at line 3024 of file FEProblemBase.C.

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

3027 {
3028  parallel_object_only();
3029 
3030  const auto nl_sys_num = determineSolverSystem(parameters.varName("variable", name), true).second;
3031  if (!isSolverSystemNonlinear(nl_sys_num))
3032  mooseError(
3033  "You are trying to add a BoundaryCondition to a linear variable/system, which is not "
3034  "supported at the moment!");
3035 
3037  bc_name, name, parameters, nl_sys_num, "BoundaryCondition", _reinit_displaced_face);
3038  _nl[nl_sys_num]->addBoundaryCondition(bc_name, name, parameters);
3039 }
void setResidualObjectParamsAndLog(const std::string &ro_name, const std::string &name, InputParameters &params, 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.
bool isSolverSystemNonlinear(const unsigned int sys_num)
Check if the solver system is nonlinear.
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.
virtual const std::string & name() const
Get the name of the class.
Definition: MooseBase.h:57
std::vector< std::shared_ptr< NonlinearSystemBase > > _nl
The nonlinear systems.
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 parameter name.
bool _reinit_displaced_face
Whether to call DisplacedProblem::reinitElemFace when this->reinitElemFace is called.
void mooseError(Args &&... args) const
Emits an error prefixed with object name and type.
const InputParameters & parameters() const
Get the parameters of the object.

◆ 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 1877 of file FEProblemBase.C.

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

1878 {
1880  _assembly[tid][_current_nl_sys->number()]->addCachedResidualDirectly(
1882 
1884  _assembly[tid][_current_nl_sys->number()]->addCachedResidualDirectly(
1886 
1887  // We do this because by adding the cached residual directly, we cannot ensure that all of the
1888  // cached residuals are emptied after only the two add calls above
1889  _assembly[tid][_current_nl_sys->number()]->clearCachedResiduals(Assembly::GlobalDataKey{});
1890 
1891  if (_displaced_problem)
1892  _displaced_problem->addCachedResidualDirectly(residual, tid);
1893 }
bool hasVector(const std::string &tag_name) const
Check if the named vector exists in the system.
Definition: SystemBase.C:907
TagID nonTimeVectorTag() const override
NonlinearSystemBase * _current_nl_sys
The current nonlinear system that we are solving.
unsigned int number() const
Gets the number of this system.
Definition: SystemBase.C:1159
std::vector< std::vector< std::unique_ptr< Assembly > > > _assembly
The Assembly objects.
TagID timeVectorTag() const override
Ideally, we should not need this API.
std::shared_ptr< DisplacedProblem > _displaced_problem
virtual const VectorTag & getVectorTag(const TagID tag_id) const
Get a VectorTag from a TagID.
Definition: SubProblem.C:161
Key structure for APIs manipulating global vectors/matrices.
Definition: Assembly.h:815

◆ addConstraint()

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

Definition at line 3042 of file FEProblemBase.C.

3045 {
3046  parallel_object_only();
3047 
3048  _has_constraints = true;
3049 
3050  auto determine_var_param_name = [&parameters, this]()
3051  {
3052  if (parameters.isParamValid("variable"))
3053  return "variable";
3054  else
3055  {
3056  // must be a mortar constraint
3057  const bool has_secondary_var = parameters.isParamValid("secondary_variable");
3058  const bool has_primary_var = parameters.isParamValid("primary_variable");
3059  if (!has_secondary_var && !has_primary_var)
3060  mooseError(
3061  "Either a 'secondary_variable' or 'primary_variable' parameter must be supplied for '",
3062  parameters.get<std::string>("_object_name"),
3063  "'");
3064  return has_secondary_var ? "secondary_variable" : "primary_variable";
3065  }
3066  };
3067 
3068  const auto nl_sys_num =
3069  determineSolverSystem(parameters.varName(determine_var_param_name(), name), true).second;
3070  if (!isSolverSystemNonlinear(nl_sys_num))
3071  mooseError("You are trying to add a Constraint to a linear variable/system, which is not "
3072  "supported at the moment!");
3073 
3074  if (_displaced_problem && parameters.get<bool>("use_displaced_mesh"))
3075  {
3076  parameters.set<SubProblem *>("_subproblem") = _displaced_problem.get();
3077  parameters.set<SystemBase *>("_sys") = &_displaced_problem->solverSys(nl_sys_num);
3078  _reinit_displaced_face = true;
3079  }
3080  else
3081  {
3082  // It might _want_ to use a displaced mesh... but we're not so set it to false
3083  if (parameters.have_parameter<bool>("use_displaced_mesh"))
3084  parameters.set<bool>("use_displaced_mesh") = false;
3085 
3086  parameters.set<SubProblem *>("_subproblem") = this;
3087  parameters.set<SystemBase *>("_sys") = _nl[nl_sys_num].get();
3088  }
3089 
3090  logAdd("Constraint", name, c_name, parameters);
3091  _nl[nl_sys_num]->addConstraint(c_name, name, parameters);
3092 }
bool isSolverSystemNonlinear(const unsigned int sys_num)
Check if the solver system is nonlinear.
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.
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.
T & set(const std::string &name, bool quiet_mode=false)
Returns a writable reference to the named parameters.
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.
Base class for a system (of equations)
Definition: SystemBase.h:84
virtual const std::string & name() const
Get the name of the class.
Definition: MooseBase.h:57
std::vector< std::shared_ptr< NonlinearSystemBase > > _nl
The nonlinear systems.
bool have_parameter(std::string_view name) const
A wrapper around the Parameters base class method.
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 parameter name.
bool _reinit_displaced_face
Whether to call DisplacedProblem::reinitElemFace when this->reinitElemFace is called.
Generic class for solving transient nonlinear problems.
Definition: SubProblem.h:78
void mooseError(Args &&... args) const
Emits an error prefixed with object name and type.
std::shared_ptr< DisplacedProblem > _displaced_problem
const InputParameters & parameters() const
Get the parameters of the object.
bool _has_constraints
Whether or not this system has any Constraints.
bool isParamValid(const std::string &name) const
This method returns parameters that have been initialized in one fashion or another, i.e.

◆ 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 736 of file SubProblem.C.

Referenced by MaterialPropertyInterface::addConsumedPropertyName().

737 {
738  _consumed_material_properties[obj_name].insert(prop_name);
739 }
std::map< MooseObjectName, std::set< std::string > > _consumed_material_properties
Definition: SubProblem.h:1185

◆ addConvergence()

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

Adds a Convergence object.

Definition at line 2509 of file FEProblemBase.C.

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

2512 {
2513  parallel_object_only();
2514 
2515  for (THREAD_ID tid = 0; tid < libMesh::n_threads(); tid++)
2516  {
2517  std::shared_ptr<Convergence> conv = _factory.create<Convergence>(type, name, parameters, tid);
2518  _convergences.addObject(conv, tid);
2519  }
2520 }
Factory & _factory
The Factory for building objects.
Definition: SubProblem.h:1047
unsigned int n_threads()
virtual const std::string & name() const
Get the name of the class.
Definition: MooseBase.h:57
MooseObjectWarehouse< Convergence > _convergences
convergence warehouse
virtual std::unique_ptr< Base > create()=0
Base class for convergence criteria.
Definition: Convergence.h:21
const std::string & type() const
Get the type of this class.
Definition: MooseBase.h:51
const InputParameters & parameters() const
Get the parameters of the object.
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 THREAD_ID
Definition: MooseTypes.h:209

◆ 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 1056 of file SubProblem.C.

1057 {
1058  const auto num_nl_sys = numNonlinearSystems();
1059  if (!num_nl_sys)
1060  return;
1061 
1062  systemBaseNonlinear(0).system().get_dof_map().add_coupling_functor(coupling_gf, to_mesh);
1063  cloneCouplingGhostingFunctor(coupling_gf, to_mesh);
1064 }
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 ...
Definition: SubProblem.C:1035
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.
virtual libMesh::System & system()=0
Get the reference to the libMesh system.
void add_coupling_functor(GhostingFunctor &coupling_functor, bool to_mesh=true)
virtual std::size_t numNonlinearSystems() const =0
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 5116 of file FEProblemBase.C.

5119 {
5120  parallel_object_only();
5121 
5122  const auto nl_sys_num =
5123  parameters.isParamValid("variable")
5124  ? determineSolverSystem(parameters.varName("variable", name), true).second
5125  : (unsigned int)0;
5126 
5127  if (!isSolverSystemNonlinear(nl_sys_num))
5128  mooseError("You are trying to add a DGKernel to a linear variable/system, which is not "
5129  "supported at the moment!");
5130 
5131  parameters.set<SubProblem *>("_subproblem") = this;
5132  parameters.set<SystemBase *>("_sys") = _nl[nl_sys_num].get();
5133 
5134  _has_dampers = true;
5135  logAdd("Damper", name, damper_name, parameters);
5136  _nl[nl_sys_num]->addDamper(damper_name, name, parameters);
5137 }
bool _has_dampers
Whether or not this system has any Dampers associated with it.
bool isSolverSystemNonlinear(const unsigned int sys_num)
Check if the solver system is nonlinear.
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.
T & set(const std::string &name, bool quiet_mode=false)
Returns a writable reference to the named parameters.
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.
Base class for a system (of equations)
Definition: SystemBase.h:84
virtual const std::string & name() const
Get the name of the class.
Definition: MooseBase.h:57
std::vector< std::shared_ptr< NonlinearSystemBase > > _nl
The nonlinear systems.
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 parameter name.
Generic class for solving transient nonlinear problems.
Definition: SubProblem.h:78
void mooseError(Args &&... args) const
Emits an error prefixed with object name and type.
const InputParameters & parameters() const
Get the parameters of the object.
bool isParamValid(const std::string &name) const
This method returns parameters that have been initialized in one fashion or another, i.e.

◆ 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 2535 of file FEProblemBase.C.

2536 {
2537  const std::string class_name = "DefaultMultiAppFixedPointConvergence";
2538  InputParameters params = _factory.getValidParams(class_name);
2539  params.applyParameters(params_to_apply);
2540  params.applyParameters(parameters());
2541  params.set<bool>("added_as_default") = true;
2543 }
Factory & _factory
The Factory for building objects.
Definition: SubProblem.h:1047
T & set(const std::string &name, bool quiet_mode=false)
Returns a writable reference to the named parameters.
The main MOOSE class responsible for handling user-defined parameters in almost every MOOSE system...
void applyParameters(const InputParameters &common, const std::vector< std::string > &exclude={}, const bool allow_private=false)
Method for applying common parameters.
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.
const InputParameters & parameters() const
Get the parameters of the object.

◆ addDefaultNonlinearConvergence()

void ReferenceResidualProblem::addDefaultNonlinearConvergence ( const InputParameters params)
overridevirtual

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 from FEProblemBase.

Definition at line 36 of file ReferenceResidualProblem.C.

37 {
38  const std::string class_name = "ReferenceResidualConvergence";
39  InputParameters params = _factory.getValidParams(class_name);
40  params.applyParameters(params_to_apply);
41  params.applyParameters(parameters());
42  params.set<bool>("added_as_default") = true;
43  for (const auto & conv_name : getNonlinearConvergenceNames())
44  addConvergence(class_name, conv_name, params);
45 }
const std::vector< ConvergenceName > & getNonlinearConvergenceNames() const
Gets the nonlinear system convergence object name(s).
Factory & _factory
The Factory for building objects.
Definition: SubProblem.h:1047
T & set(const std::string &name, bool quiet_mode=false)
Returns a writable reference to the named parameters.
The main MOOSE class responsible for handling user-defined parameters in almost every MOOSE system...
void applyParameters(const InputParameters &common, const std::vector< std::string > &exclude={}, const bool allow_private=false)
Method for applying common parameters.
virtual void addConvergence(const std::string &type, const std::string &name, InputParameters &parameters)
Adds a Convergence object.
const InputParameters & parameters() const
Get the parameters of the object.

◆ addDGKernel()

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

Definition at line 3342 of file FEProblemBase.C.

3345 {
3346  parallel_object_only();
3347 
3348  const auto nl_sys_num = determineSolverSystem(parameters.varName("variable", name), true).second;
3349  if (!isSolverSystemNonlinear(nl_sys_num))
3350  mooseError("You are trying to add a DGKernel to a linear variable/system, which is not "
3351  "supported at the moment!");
3352 
3353  if (_displaced_problem && parameters.get<bool>("use_displaced_mesh"))
3354  {
3355  parameters.set<SubProblem *>("_subproblem") = _displaced_problem.get();
3356  parameters.set<SystemBase *>("_sys") = &_displaced_problem->solverSys(nl_sys_num);
3358  }
3359  else
3360  {
3361  if (_displaced_problem == nullptr && parameters.get<bool>("use_displaced_mesh"))
3362  {
3363  // We allow DGKernels to request that they use_displaced_mesh,
3364  // but then be overridden when no displacements variables are
3365  // provided in the Mesh block. If that happened, update the value
3366  // of use_displaced_mesh appropriately for this DGKernel.
3367  if (parameters.have_parameter<bool>("use_displaced_mesh"))
3368  parameters.set<bool>("use_displaced_mesh") = false;
3369  }
3370 
3371  parameters.set<SubProblem *>("_subproblem") = this;
3372  parameters.set<SystemBase *>("_sys") = _nl[nl_sys_num].get();
3373  }
3374 
3375  logAdd("DGKernel", name, dg_kernel_name, parameters);
3376  _nl[nl_sys_num]->addDGKernel(dg_kernel_name, name, parameters);
3377 
3379 }
bool _reinit_displaced_neighbor
Whether to call DisplacedProblem::reinitNeighbor when this->reinitNeighbor is called.
bool isSolverSystemNonlinear(const unsigned int sys_num)
Check if the solver system is nonlinear.
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.
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.
T & set(const std::string &name, bool quiet_mode=false)
Returns a writable reference to the named parameters.
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.
Base class for a system (of equations)
Definition: SystemBase.h:84
virtual const std::string & name() const
Get the name of the class.
Definition: MooseBase.h:57
std::vector< std::shared_ptr< NonlinearSystemBase > > _nl
The nonlinear systems.
bool have_parameter(std::string_view name) const
A wrapper around the Parameters base class method.
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 parameter name.
Generic class for solving transient nonlinear problems.
Definition: SubProblem.h:78
void mooseError(Args &&... args) const
Emits an error prefixed with object name and type.
std::shared_ptr< DisplacedProblem > _displaced_problem
const InputParameters & parameters() const
Get the parameters of the object.
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 3302 of file FEProblemBase.C.

3305 {
3306  parallel_object_only();
3307 
3308  const auto nl_sys_num = determineSolverSystem(parameters.varName("variable", name), true).second;
3309  if (!isSolverSystemNonlinear(nl_sys_num))
3310  mooseError("You are trying to add a DiracKernel to a linear variable/system, which is not "
3311  "supported at the moment!");
3312 
3313  if (_displaced_problem && parameters.get<bool>("use_displaced_mesh"))
3314  {
3315  parameters.set<SubProblem *>("_subproblem") = _displaced_problem.get();
3316  parameters.set<SystemBase *>("_sys") = &_displaced_problem->solverSys(nl_sys_num);
3317  _reinit_displaced_elem = true;
3318  }
3319  else
3320  {
3321  if (_displaced_problem == nullptr && parameters.get<bool>("use_displaced_mesh"))
3322  {
3323  // We allow DiracKernels to request that they use_displaced_mesh,
3324  // but then be overridden when no displacements variables are
3325  // provided in the Mesh block. If that happened, update the value
3326  // of use_displaced_mesh appropriately for this DiracKernel.
3327  if (parameters.have_parameter<bool>("use_displaced_mesh"))
3328  parameters.set<bool>("use_displaced_mesh") = false;
3329  }
3330 
3331  parameters.set<SubProblem *>("_subproblem") = this;
3332  parameters.set<SystemBase *>("_sys") = _nl[nl_sys_num].get();
3333  }
3334 
3335  logAdd("DiracKernel", name, kernel_name, parameters);
3336  _nl[nl_sys_num]->addDiracKernel(kernel_name, name, parameters);
3337 }
bool _reinit_displaced_elem
Whether to call DisplacedProblem::reinitElem when this->reinitElem is called.
bool isSolverSystemNonlinear(const unsigned int sys_num)
Check if the solver system is nonlinear.
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.
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.
T & set(const std::string &name, bool quiet_mode=false)
Returns a writable reference to the named parameters.
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.
Base class for a system (of equations)
Definition: SystemBase.h:84
virtual const std::string & name() const
Get the name of the class.
Definition: MooseBase.h:57
std::vector< std::shared_ptr< NonlinearSystemBase > > _nl
The nonlinear systems.
bool have_parameter(std::string_view name) const
A wrapper around the Parameters base class method.
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 parameter name.
Generic class for solving transient nonlinear problems.
Definition: SubProblem.h:78
void mooseError(Args &&... args) const
Emits an error prefixed with object name and type.
std::shared_ptr< DisplacedProblem > _displaced_problem
const InputParameters & parameters() const
Get the parameters of the object.

◆ addDisplacedProblem()

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

Definition at line 7734 of file FEProblemBase.C.

7735 {
7736  parallel_object_only();
7737 
7740 }
std::shared_ptr< DisplacedProblem > displaced_problem
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 2664 of file FEProblemBase.C.

2667 {
2668  parameters.set<std::string>("type") = type;
2669  addObject<Distribution>(type, name, parameters, /* threaded = */ false);
2670 }
T & set(const std::string &name, bool quiet_mode=false)
Returns a writable reference to the named parameters.
virtual const std::string & name() const
Get the name of the class.
Definition: MooseBase.h:57
const std::string & type() const
Get the type of this class.
Definition: MooseBase.h:51
const InputParameters & parameters() const
Get the parameters of the object.

◆ addFunction()

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

Reimplemented in MFEMProblem.

Definition at line 2483 of file FEProblemBase.C.

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

2486 {
2487  parallel_object_only();
2488 
2489  parameters.set<SubProblem *>("_subproblem") = this;
2490 
2491  for (THREAD_ID tid = 0; tid < libMesh::n_threads(); tid++)
2492  {
2493  std::shared_ptr<Function> func = _factory.create<Function>(type, name, parameters, tid);
2494  logAdd("Function", name, type, parameters);
2495  _functions.addObject(func, tid);
2496 
2497  if (auto * const functor = dynamic_cast<Moose::FunctorBase<Real> *>(func.get()))
2498  {
2499  this->addFunctor(name, *functor, tid);
2500  if (_displaced_problem)
2501  _displaced_problem->addFunctor(name, *functor, tid);
2502  }
2503  else
2504  mooseError("Unrecognized function functor type");
2505  }
2506 }
Base class for function objects.
Definition: Function.h:36
Factory & _factory
The Factory for building objects.
Definition: SubProblem.h:1047
unsigned int n_threads()
T & set(const std::string &name, bool quiet_mode=false)
Returns a writable reference to the named parameters.
void addFunctor(const std::string &name, const Moose::FunctorBase< T > &functor, const THREAD_ID tid)
add a functor to the problem functor container
Definition: SubProblem.h:1375
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 const std::string & name() const
Get the name of the class.
Definition: MooseBase.h:57
virtual std::unique_ptr< Base > create()=0
const std::string & type() const
Get the type of this class.
Definition: MooseBase.h:51
Generic class for solving transient nonlinear problems.
Definition: SubProblem.h:78
void mooseError(Args &&... args) const
Emits an error prefixed with object name and type.
std::shared_ptr< DisplacedProblem > _displaced_problem
const InputParameters & parameters() const
Get the parameters of the object.
MooseObjectWarehouse< Function > _functions
functions
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 THREAD_ID
Definition: MooseTypes.h:209

◆ 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 1375 of file SubProblem.h.

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

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

◆ addFunctorMaterial()

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

Reimplemented in MFEMProblem.

Definition at line 3792 of file FEProblemBase.C.

3795 {
3796  parallel_object_only();
3797 
3798  auto add_functor_materials = [&](const auto & parameters, const auto & name)
3799  {
3800  for (THREAD_ID tid = 0; tid < libMesh::n_threads(); tid++)
3801  {
3802  // Create the general Block/Boundary MaterialBase object
3803  std::shared_ptr<MaterialBase> material =
3804  _factory.create<MaterialBase>(functor_material_name, name, parameters, tid);
3805  logAdd("FunctorMaterial", name, functor_material_name, parameters);
3806  _all_materials.addObject(material, tid);
3807  _materials.addObject(material, tid);
3808  }
3809  };
3810 
3811  parameters.set<SubProblem *>("_subproblem") = this;
3812  add_functor_materials(parameters, name);
3813  if (_displaced_problem)
3814  {
3815  auto disp_params = parameters;
3816  disp_params.set<SubProblem *>("_subproblem") = _displaced_problem.get();
3817  add_functor_materials(disp_params, name + "_displaced");
3818  }
3819 }
Factory & _factory
The Factory for building objects.
Definition: SubProblem.h:1047
unsigned int n_threads()
T & set(const std::string &name, bool quiet_mode=false)
Returns a writable reference to the named parameters.
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 const std::string & name() const
Get the name of the class.
Definition: MooseBase.h:57
virtual std::unique_ptr< Base > create()=0
Generic class for solving transient nonlinear problems.
Definition: SubProblem.h:78
std::shared_ptr< DisplacedProblem > _displaced_problem
const InputParameters & parameters() const
Get the parameters of the object.
virtual void addObject(std::shared_ptr< T > object, THREAD_ID tid=0, bool recurse=true) override
Adds an object to the storage structure.
MaterialBases compute MaterialProperties.
Definition: MaterialBase.h:62
MaterialWarehouse _all_materials
unsigned int THREAD_ID
Definition: MooseTypes.h:209
MaterialWarehouse _materials

◆ addFVBC()

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

Definition at line 3396 of file FEProblemBase.C.

Referenced by DiffusionFV::addFVBCs().

3399 {
3400  addObject<FVBoundaryCondition>(fv_bc_name, name, parameters);
3401 }
virtual const std::string & name() const
Get the name of the class.
Definition: MooseBase.h:57
const InputParameters & parameters() const
Get the parameters of the object.

◆ 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 3565 of file FEProblemBase.C.

3568 {
3569  parallel_object_only();
3570 
3571  // before we start to mess with the initial condition, we need to check parameters for errors.
3573  const std::string & var_name = parameters.get<VariableName>("variable");
3574 
3575  // Forbid initial conditions on a restarted problem, as they would override the restart
3576  checkICRestartError(ic_name, name, var_name);
3577 
3578  parameters.set<SubProblem *>("_subproblem") = this;
3579 
3580  // field IC
3581  if (hasVariable(var_name))
3582  {
3583  for (THREAD_ID tid = 0; tid < libMesh::n_threads(); ++tid)
3584  {
3585  auto & var = getVariable(
3587  parameters.set<SystemBase *>("_sys") = &var.sys();
3588  std::shared_ptr<FVInitialConditionBase> ic;
3589  if (var.isFV())
3590  ic = _factory.create<FVInitialCondition>(ic_name, name, parameters, tid);
3591  else
3592  mooseError(
3593  "Your variable for an FVInitialCondition needs to be an a finite volume variable!");
3594  _fv_ics.addObject(ic, tid);
3595  }
3596  }
3597  else
3598  mooseError("Variable '",
3599  var_name,
3600  "' requested in finite volume initial condition '",
3601  name,
3602  "' does not exist.");
3603 }
virtual bool hasVariable(const std::string &var_name) const override
Whether or not this problem has the variable.
Factory & _factory
The Factory for building objects.
Definition: SubProblem.h:1047
unsigned int n_threads()
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.
T & set(const std::string &name, bool quiet_mode=false)
Returns a writable reference to the named parameters.
Base class for a system (of equations)
Definition: SystemBase.h:84
virtual const std::string & name() const
Get the name of the class.
Definition: MooseBase.h:57
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 std::unique_ptr< Base > create()=0
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...
Generic class for solving transient nonlinear problems.
Definition: SubProblem.h:78
void mooseError(Args &&... args) const
Emits an error prefixed with object name and type.
const InputParameters & parameters() const
Get the parameters of the object.
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 addObject(std::shared_ptr< FVInitialConditionBase > object, THREAD_ID tid, bool recurse=true)
Add object to the warehouse.
FVInitialConditionWarehouse _fv_ics
This is a template class that implements the workhorse compute and computeNodal methods.
unsigned int THREAD_ID
Definition: MooseTypes.h:209

◆ 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 3404 of file FEProblemBase.C.

3407 {
3410  addObject<FVInterfaceKernel>(
3411  fv_ik_name, name, parameters, /*threaded=*/true, /*variable_param_name=*/"variable1");
3412 }
virtual const std::string & name() const
Get the name of the class.
Definition: MooseBase.h:57
const InputParameters & parameters() const
Get the parameters of the object.

◆ addFVKernel()

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

Definition at line 3382 of file FEProblemBase.C.

Referenced by DiffusionFV::addFVKernels().

3385 {
3386  if (_displaced_problem && parameters.get<bool>("use_displaced_mesh"))
3387  // FVElementalKernels are computed in the historically finite element threaded loops. They rely
3388  // on Assembly data like _current_elem. When we call reinit on the FEProblemBase we will only
3389  // reinit the DisplacedProblem and its associated Assembly objects if we mark this boolean as
3390  // true
3391  _reinit_displaced_elem = true;
3392  addObject<FVKernel>(fv_kernel_name, name, parameters);
3393 }
bool _reinit_displaced_elem
Whether to call DisplacedProblem::reinitElem when this->reinitElem is called.
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.
virtual const std::string & name() const
Get the name of the class.
Definition: MooseBase.h:57
std::shared_ptr< DisplacedProblem > _displaced_problem
const InputParameters & parameters() const
Get the parameters of the object.

◆ 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 2079 of file FEProblemBase.C.

Referenced by DisplacedProblem::addGhostedBoundary().

2080 {
2081  _mesh.addGhostedBoundary(boundary_id);
2082  if (_displaced_problem)
2083  _displaced_mesh->addGhostedBoundary(boundary_id);
2084 }
MooseMesh & _mesh
std::shared_ptr< DisplacedProblem > _displaced_problem
void addGhostedBoundary(BoundaryID boundary_id)
This will add the boundary ids to be ghosted to this processor.
Definition: MooseMesh.C:3224
MooseMesh * _displaced_mesh

◆ 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 2072 of file FEProblemBase.C.

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

2073 {
2074  if (_mesh.elemPtr(elem_id)->processor_id() != processor_id())
2075  _ghosted_elems.insert(elem_id);
2076 }
virtual Elem * elemPtr(const dof_id_type i)
Definition: MooseMesh.C:3108
std::set< dof_id_type > _ghosted_elems
Elements that should have Dofs ghosted to the local processor.
Definition: SubProblem.h:1093
MooseMesh & _mesh
processor_id_type processor_id() const
processor_id_type processor_id() const

◆ addGroupVariables()

template<typename T >
void ReferenceResidualInterface::addGroupVariables ( const std::set< T > &  group_vars)
inherited

Add a set of variables that need to be grouped together.

For use in actions that create variables. This is templated for backwards compatibility to allow passing in std::string or NonlinearVariableName.

Template Parameters
Tstring type used for variable names
Parameters
group_varsA set of solution variables that need to be grouped.

Definition at line 48 of file ReferenceResidualInterface.h.

49 {
50  _group_variables.push_back(
51  std::vector<NonlinearVariableName>(group_vars.begin(), group_vars.end()));
52  _use_group_variables = true;
53 }
std::vector< std::vector< NonlinearVariableName > > _group_variables
Name of variables that are grouped together to check convergence.
bool _use_group_variables
True if any variables are grouped.

◆ addHDGKernel()

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

Definition at line 2938 of file FEProblemBase.C.

2941 {
2942  parallel_object_only();
2943  const auto nl_sys_num = determineSolverSystem(parameters.varName("variable", name), true).second;
2944  if (!isSolverSystemNonlinear(nl_sys_num))
2945  mooseError("You are trying to add a HDGKernel to a linear variable/system, which is not "
2946  "supported at the moment!");
2948  kernel_name, name, parameters, nl_sys_num, "HDGKernel", _reinit_displaced_elem);
2949 
2950  _nl[nl_sys_num]->addHDGKernel(kernel_name, name, parameters);
2951 }
bool _reinit_displaced_elem
Whether to call DisplacedProblem::reinitElem when this->reinitElem is called.
void setResidualObjectParamsAndLog(const std::string &ro_name, const std::string &name, InputParameters &params, 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.
bool isSolverSystemNonlinear(const unsigned int sys_num)
Check if the solver system is nonlinear.
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.
virtual const std::string & name() const
Get the name of the class.
Definition: MooseBase.h:57
std::vector< std::shared_ptr< NonlinearSystemBase > > _nl
The nonlinear systems.
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 parameter name.
void mooseError(Args &&... args) const
Emits an error prefixed with object name and type.
const InputParameters & parameters() const
Get the parameters of the object.

◆ addIndicator()

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

Definition at line 5147 of file FEProblemBase.C.

5150 {
5151  parallel_object_only();
5152 
5153  if (_displaced_problem && parameters.get<bool>("use_displaced_mesh"))
5154  {
5155  parameters.set<SubProblem *>("_subproblem") = _displaced_problem.get();
5156  parameters.set<SystemBase *>("_sys") = &_displaced_problem->auxSys();
5157  _reinit_displaced_elem = true;
5158  }
5159  else
5160  {
5161  if (_displaced_problem == nullptr && parameters.get<bool>("use_displaced_mesh"))
5162  {
5163  // We allow Indicators to request that they use_displaced_mesh,
5164  // but then be overridden when no displacements variables are
5165  // provided in the Mesh block. If that happened, update the value
5166  // of use_displaced_mesh appropriately for this Indicator.
5167  if (parameters.have_parameter<bool>("use_displaced_mesh"))
5168  parameters.set<bool>("use_displaced_mesh") = false;
5169  }
5170 
5171  parameters.set<SubProblem *>("_subproblem") = this;
5172  parameters.set<SystemBase *>("_sys") = _aux.get();
5173  }
5174 
5175  for (THREAD_ID tid = 0; tid < libMesh::n_threads(); tid++)
5176  {
5177  std::shared_ptr<Indicator> indicator =
5178  _factory.create<Indicator>(indicator_name, name, parameters, tid);
5179  logAdd("Indicator", name, indicator_name, parameters);
5180  std::shared_ptr<InternalSideIndicatorBase> isi =
5182  if (isi)
5184  else
5185  _indicators.addObject(indicator, tid);
5186  }
5187 }
bool _reinit_displaced_elem
Whether to call DisplacedProblem::reinitElem when this->reinitElem is called.
Factory & _factory
The Factory for building objects.
Definition: SubProblem.h:1047
unsigned int n_threads()
MooseObjectWarehouse< InternalSideIndicatorBase > _internal_side_indicators
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.
T & set(const std::string &name, bool quiet_mode=false)
Returns a writable reference to the named parameters.
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.
std::unique_ptr< T_DEST, T_DELETER > dynamic_pointer_cast(std::unique_ptr< T_SRC, T_DELETER > &src)
These are reworked from https://stackoverflow.com/a/11003103.
Base class for a system (of equations)
Definition: SystemBase.h:84
virtual const std::string & name() const
Get the name of the class.
Definition: MooseBase.h:57
virtual std::unique_ptr< Base > create()=0
std::shared_ptr< AuxiliarySystem > _aux
The auxiliary system.
MooseObjectWarehouse< Indicator > _indicators
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:78
std::shared_ptr< DisplacedProblem > _displaced_problem
const InputParameters & parameters() const
Get the parameters of the object.
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 THREAD_ID
Definition: MooseTypes.h:209

◆ addInitialCondition()

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

Reimplemented in MFEMProblem.

Definition at line 3505 of file FEProblemBase.C.

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

3508 {
3509  parallel_object_only();
3510 
3511  // before we start to mess with the initial condition, we need to check parameters for errors.
3513  const std::string & var_name = parameters.get<VariableName>("variable");
3514 
3515  // Forbid initial conditions on a restarted problem, as they would override the restart
3516  checkICRestartError(ic_name, name, var_name);
3517 
3518  parameters.set<SubProblem *>("_subproblem") = this;
3519 
3520  // field IC
3521  if (hasVariable(var_name))
3522  {
3523  for (THREAD_ID tid = 0; tid < libMesh::n_threads(); ++tid)
3524  {
3527  parameters.set<SystemBase *>("_sys") = &var.sys();
3528  std::shared_ptr<InitialConditionBase> ic;
3529  if (dynamic_cast<MooseVariable *>(&var))
3530  ic = _factory.create<InitialCondition>(ic_name, name, parameters, tid);
3531  else if (dynamic_cast<VectorMooseVariable *>(&var))
3532  ic = _factory.create<VectorInitialCondition>(ic_name, name, parameters, tid);
3533  else if (dynamic_cast<ArrayMooseVariable *>(&var))
3534  ic = _factory.create<ArrayInitialCondition>(ic_name, name, parameters, tid);
3535  else if (dynamic_cast<MooseVariableFVReal *>(&var))
3536  ic = _factory.create<InitialCondition>(ic_name, name, parameters, tid);
3537  else if (dynamic_cast<MooseLinearVariableFVReal *>(&var))
3538  ic = _factory.create<InitialCondition>(ic_name, name, parameters, tid);
3539  else
3540  mooseError("Your FE variable in initial condition ",
3541  name,
3542  " must be either of scalar or vector type");
3543  logAdd("IC", name, ic_name, parameters);
3544  _ics.addObject(ic, tid);
3545  }
3546  }
3547 
3548  // scalar IC
3549  else if (hasScalarVariable(var_name))
3550  {
3551  MooseVariableScalar & var = getScalarVariable(0, var_name);
3552  parameters.set<SystemBase *>("_sys") = &var.sys();
3553  std::shared_ptr<ScalarInitialCondition> ic =
3555  logAdd("ScalarIC", name, ic_name, parameters);
3556  _scalar_ics.addObject(ic);
3557  }
3558 
3559  else
3560  mooseError(
3561  "Variable '", var_name, "' requested in initial condition '", name, "' does not exist.");
3562 }
virtual bool hasVariable(const std::string &var_name) const override
Whether or not this problem has the variable.
Factory & _factory
The Factory for building objects.
Definition: SubProblem.h:1047
unsigned int n_threads()
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.
This is a template class that implements the workhorse compute and computeNodal methods.
T & set(const std::string &name, bool quiet_mode=false)
Returns a writable reference to the named parameters.
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 bool hasScalarVariable(const std::string &var_name) const override
Returns a Boolean indicating whether any system contains a variable with the name provided...
This class provides an interface for common operations on field variables of both FE and FV types wit...
Base class for a system (of equations)
Definition: SystemBase.h:84
virtual const std::string & name() const
Get the name of the class.
Definition: MooseBase.h:57
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...
ScalarInitialConditionWarehouse _scalar_ics
virtual std::unique_ptr< Base > create()=0
virtual MooseVariableScalar & getScalarVariable(const THREAD_ID tid, const std::string &var_name) override
Returns the scalar variable reference from whichever system contains it.
void addObject(std::shared_ptr< InitialConditionBase > 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...
InitialConditions are objects that set the initial value of variables.
InitialConditionWarehouse _ics
Generic class for solving transient nonlinear problems.
Definition: SubProblem.h:78
Class for scalar variables (they are different).
void mooseError(Args &&... args) const
Emits an error prefixed with object name and type.
const InputParameters & parameters() const
Get the parameters of the object.
virtual void addObject(std::shared_ptr< T > object, THREAD_ID tid=0, bool recurse=true)
Adds an object to the storage structure.
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...
SystemBase & sys()
Get the system this variable is part of.
unsigned int THREAD_ID
Definition: MooseTypes.h:209

◆ addInterfaceKernel()

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

Definition at line 3433 of file FEProblemBase.C.

3436 {
3437  parallel_object_only();
3438 
3439  const auto nl_sys_num = determineSolverSystem(parameters.varName("variable", name), true).second;
3440  if (!isSolverSystemNonlinear(nl_sys_num))
3441  mooseError("You are trying to add a InterfaceKernel to a linear variable/system, which is not "
3442  "supported at the moment!");
3443 
3444  if (_displaced_problem && parameters.get<bool>("use_displaced_mesh"))
3445  {
3446  parameters.set<SubProblem *>("_subproblem") = _displaced_problem.get();
3447  parameters.set<SystemBase *>("_sys") = &_displaced_problem->solverSys(nl_sys_num);
3449  }
3450  else
3451  {
3452  if (_displaced_problem == nullptr && parameters.get<bool>("use_displaced_mesh"))
3453  {
3454  // We allow InterfaceKernels to request that they use_displaced_mesh,
3455  // but then be overridden when no displacements variables are
3456  // provided in the Mesh block. If that happened, update the value
3457  // of use_displaced_mesh appropriately for this InterfaceKernel.
3458  if (parameters.have_parameter<bool>("use_displaced_mesh"))
3459  parameters.set<bool>("use_displaced_mesh") = false;
3460  }
3461 
3462  parameters.set<SubProblem *>("_subproblem") = this;
3463  parameters.set<SystemBase *>("_sys") = _nl[nl_sys_num].get();
3464  }
3465 
3466  logAdd("InterfaceKernel", name, interface_kernel_name, parameters);
3467  _nl[nl_sys_num]->addInterfaceKernel(interface_kernel_name, name, parameters);
3468 
3470 }
bool _reinit_displaced_neighbor
Whether to call DisplacedProblem::reinitNeighbor when this->reinitNeighbor is called.
bool isSolverSystemNonlinear(const unsigned int sys_num)
Check if the solver system is nonlinear.
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.
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.
T & set(const std::string &name, bool quiet_mode=false)
Returns a writable reference to the named parameters.
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.
Base class for a system (of equations)
Definition: SystemBase.h:84
virtual const std::string & name() const
Get the name of the class.
Definition: MooseBase.h:57
std::vector< std::shared_ptr< NonlinearSystemBase > > _nl
The nonlinear systems.
bool have_parameter(std::string_view name) const
A wrapper around the Parameters base class method.
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 parameter name.
Generic class for solving transient nonlinear problems.
Definition: SubProblem.h:78
void mooseError(Args &&... args) const
Emits an error prefixed with object name and type.
std::shared_ptr< DisplacedProblem > _displaced_problem
const InputParameters & parameters() const
Get the parameters of the object.
bool _has_internal_edge_residual_objects
Whether the problem has dgkernels or interface kernels.

◆ addInterfaceMaterial()

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

Definition at line 3830 of file FEProblemBase.C.

3833 {
3835 }
virtual void addMaterialHelper(std::vector< MaterialWarehouse *> warehouse, const std::string &material_name, const std::string &name, InputParameters &parameters)
MaterialWarehouse _interface_materials
virtual const std::string & name() const
Get the name of the class.
Definition: MooseBase.h:57
const InputParameters & parameters() const
Get the parameters of the object.

◆ addJacobian()

void FEProblemBase::addJacobian ( const THREAD_ID  tid)
overridevirtualinherited

Implements SubProblem.

Definition at line 1916 of file FEProblemBase.C.

Referenced by ComputeDiracThread::postElement().

1917 {
1918  _assembly[tid][_current_nl_sys->number()]->addJacobian(Assembly::GlobalDataKey{});
1920  _assembly[tid][_current_nl_sys->number()]->addJacobianNonlocal(Assembly::GlobalDataKey{});
1921  if (_displaced_problem)
1922  {
1923  _displaced_problem->addJacobian(tid);
1925  _displaced_problem->addJacobianNonlocal(tid);
1926  }
1927 }
bool _has_nonlocal_coupling
Indicates if nonlocal coupling is required/exists.
NonlinearSystemBase * _current_nl_sys
The current nonlinear system that we are solving.
unsigned int number() const
Gets the number of this system.
Definition: SystemBase.C:1159
std::vector< std::vector< std::unique_ptr< Assembly > > > _assembly
The Assembly objects.
std::shared_ptr< DisplacedProblem > _displaced_problem
Key structure for APIs manipulating global vectors/matrices.
Definition: Assembly.h:815

◆ 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 1991 of file FEProblemBase.C.

Referenced by ComputeJacobianBlocksThread::postElement().

1998 {
1999  _assembly[tid][_current_nl_sys->number()]->addJacobianBlockTags(
2000  jacobian, ivar, jvar, dof_map, dof_indices, Assembly::GlobalDataKey{}, tags);
2001 
2003  if (_nonlocal_cm[_current_nl_sys->number()](ivar, jvar) != 0)
2004  {
2005  MooseVariableFEBase & jv = _current_nl_sys->getVariable(tid, jvar);
2006  _assembly[tid][_current_nl_sys->number()]->addJacobianBlockNonlocalTags(
2007  jacobian,
2008  ivar,
2009  jvar,
2010  dof_map,
2011  dof_indices,
2012  jv.allDofIndices(),
2014  tags);
2015  }
2016 
2017  if (_displaced_problem)
2018  {
2019  _displaced_problem->addJacobianBlockTags(jacobian, ivar, jvar, dof_map, dof_indices, tags, tid);
2021  if (_nonlocal_cm[_current_nl_sys->number()](ivar, jvar) != 0)
2022  {
2023  MooseVariableFEBase & jv = _current_nl_sys->getVariable(tid, jvar);
2024  _displaced_problem->addJacobianBlockNonlocal(
2025  jacobian, ivar, jvar, dof_map, dof_indices, jv.allDofIndices(), tags, tid);
2026  }
2027  }
2028 }
bool _has_nonlocal_coupling
Indicates if nonlocal coupling is required/exists.
This class provides an interface for common operations on field variables of both FE and FV types wit...
NonlinearSystemBase * _current_nl_sys
The current nonlinear system that we are solving.
unsigned int number() const
Gets the number of this system.
Definition: SystemBase.C:1159
std::vector< std::vector< std::unique_ptr< Assembly > > > _assembly
The Assembly objects.
const std::vector< dof_id_type > & allDofIndices() const
Get all global dofindices for the variable.
std::shared_ptr< DisplacedProblem > _displaced_problem
MooseVariableFieldBase & getVariable(THREAD_ID tid, const std::string &var_name) const
Gets a reference to a variable of with specified name.
Definition: SystemBase.C:89
std::vector< libMesh::CouplingMatrix > _nonlocal_cm
nonlocal coupling matrix
Key structure for APIs manipulating global vectors/matrices.
Definition: Assembly.h:815

◆ addJacobianLowerD()

void FEProblemBase::addJacobianLowerD ( const THREAD_ID  tid)
overridevirtualinherited

Implements SubProblem.

Definition at line 1946 of file FEProblemBase.C.

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

1947 {
1948  _assembly[tid][_current_nl_sys->number()]->addJacobianLowerD(Assembly::GlobalDataKey{});
1949  if (_displaced_problem)
1950  _displaced_problem->addJacobianLowerD(tid);
1951 }
NonlinearSystemBase * _current_nl_sys
The current nonlinear system that we are solving.
unsigned int number() const
Gets the number of this system.
Definition: SystemBase.C:1159
std::vector< std::vector< std::unique_ptr< Assembly > > > _assembly
The Assembly objects.
std::shared_ptr< DisplacedProblem > _displaced_problem
Key structure for APIs manipulating global vectors/matrices.
Definition: Assembly.h:815

◆ addJacobianNeighbor() [1/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

Implemented in DisplacedProblem.

◆ addJacobianNeighbor() [2/3]

void FEProblemBase::addJacobianNeighbor ( const THREAD_ID  tid)
overridevirtualinherited

Implements SubProblem.

Definition at line 1930 of file FEProblemBase.C.

Referenced by ComputeResidualAndJacobianThread::accumulateNeighbor(), ComputeJacobianThread::accumulateNeighbor(), and ComputeJacobianBlocksThread::postInternalSide().

1931 {
1932  _assembly[tid][_current_nl_sys->number()]->addJacobianNeighbor(Assembly::GlobalDataKey{});
1933  if (_displaced_problem)
1934  _displaced_problem->addJacobianNeighbor(tid);
1935 }
NonlinearSystemBase * _current_nl_sys
The current nonlinear system that we are solving.
unsigned int number() const
Gets the number of this system.
Definition: SystemBase.C:1159
std::vector< std::vector< std::unique_ptr< Assembly > > > _assembly
The Assembly objects.
std::shared_ptr< DisplacedProblem > _displaced_problem
Key structure for APIs manipulating global vectors/matrices.
Definition: Assembly.h:815

◆ addJacobianNeighbor() [3/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

◆ addJacobianNeighborLowerD()

void FEProblemBase::addJacobianNeighborLowerD ( const THREAD_ID  tid)
overridevirtualinherited

Implements SubProblem.

Definition at line 1938 of file FEProblemBase.C.

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

1939 {
1940  _assembly[tid][_current_nl_sys->number()]->addJacobianNeighborLowerD(Assembly::GlobalDataKey{});
1941  if (_displaced_problem)
1942  _displaced_problem->addJacobianNeighborLowerD(tid);
1943 }
NonlinearSystemBase * _current_nl_sys
The current nonlinear system that we are solving.
unsigned int number() const
Gets the number of this system.
Definition: SystemBase.C:1159
std::vector< std::vector< std::unique_ptr< Assembly > > > _assembly
The Assembly objects.
std::shared_ptr< DisplacedProblem > _displaced_problem
Key structure for APIs manipulating global vectors/matrices.
Definition: Assembly.h:815

◆ addJacobianOffDiagScalar()

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

Definition at line 1960 of file FEProblemBase.C.

Referenced by NonlinearSystemBase::computeScalarKernelsJacobians().

1961 {
1962  _assembly[tid][_current_nl_sys->number()]->addJacobianOffDiagScalar(ivar,
1964 }
NonlinearSystemBase * _current_nl_sys
The current nonlinear system that we are solving.
unsigned int number() const
Gets the number of this system.
Definition: SystemBase.C:1159
std::vector< std::vector< std::unique_ptr< Assembly > > > _assembly
The Assembly objects.
Key structure for APIs manipulating global vectors/matrices.
Definition: Assembly.h:815

◆ addJacobianScalar()

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

Definition at line 1954 of file FEProblemBase.C.

Referenced by NonlinearSystemBase::computeScalarKernelsJacobians().

1955 {
1956  _assembly[tid][_current_nl_sys->number()]->addJacobianScalar(Assembly::GlobalDataKey{});
1957 }
NonlinearSystemBase * _current_nl_sys
The current nonlinear system that we are solving.
unsigned int number() const
Gets the number of this system.
Definition: SystemBase.C:1159
std::vector< std::vector< std::unique_ptr< Assembly > > > _assembly
The Assembly objects.
Key structure for APIs manipulating global vectors/matrices.
Definition: Assembly.h:815

◆ addKernel()

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

Reimplemented in MFEMProblem.

Definition at line 2922 of file FEProblemBase.C.

Referenced by DiffusionCG::addFEKernels().

2925 {
2926  parallel_object_only();
2927  const auto nl_sys_num = determineSolverSystem(parameters.varName("variable", name), true).second;
2928  if (!isSolverSystemNonlinear(nl_sys_num))
2929  mooseError("You are trying to add a Kernel to a linear variable/system, which is not "
2930  "supported at the moment!");
2932  kernel_name, name, parameters, nl_sys_num, "Kernel", _reinit_displaced_elem);
2933 
2934  _nl[nl_sys_num]->addKernel(kernel_name, name, parameters);
2935 }
bool _reinit_displaced_elem
Whether to call DisplacedProblem::reinitElem when this->reinitElem is called.
void setResidualObjectParamsAndLog(const std::string &ro_name, const std::string &name, InputParameters &params, 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.
bool isSolverSystemNonlinear(const unsigned int sys_num)
Check if the solver system is nonlinear.
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.
virtual const std::string & name() const
Get the name of the class.
Definition: MooseBase.h:57
std::vector< std::shared_ptr< NonlinearSystemBase > > _nl
The nonlinear systems.
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 parameter name.
void mooseError(Args &&... args) const
Emits an error prefixed with object name and type.
const InputParameters & parameters() const
Get the parameters of the object.

◆ addLinearFVBC()

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

Definition at line 3423 of file FEProblemBase.C.

3426 {
3427  addObject<LinearFVBoundaryCondition>(bc_name, name, parameters);
3428 }
virtual const std::string & name() const
Get the name of the class.
Definition: MooseBase.h:57
const InputParameters & parameters() const
Get the parameters of the object.

◆ addLinearFVKernel()

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

Definition at line 3415 of file FEProblemBase.C.

3418 {
3419  addObject<LinearFVKernel>(kernel_name, name, parameters);
3420 }
virtual const std::string & name() const
Get the name of the class.
Definition: MooseBase.h:57
const InputParameters & parameters() const
Get the parameters of the object.

◆ addLineSearch()

void FEProblem::addLineSearch ( const InputParameters )
overridevirtualinherited

add a MOOSE line search

Reimplemented from FEProblemBase.

Definition at line 129 of file FEProblem.C.

130 {
131  MooseEnum line_search = parameters.get<MooseEnum>("line_search");
132  Moose::LineSearchType enum_line_search = Moose::stringToEnum<Moose::LineSearchType>(line_search);
133  if (enum_line_search == Moose::LS_CONTACT || enum_line_search == Moose::LS_PROJECT)
134  {
135  if (enum_line_search == Moose::LS_CONTACT)
136  {
137  InputParameters ls_params = _factory.getValidParams("PetscContactLineSearch");
138 
139  bool affect_ltol = parameters.isParamValid("contact_line_search_ltol");
140  ls_params.set<bool>("affect_ltol") = affect_ltol;
141  ls_params.set<unsigned>("allowed_lambda_cuts") =
142  parameters.get<unsigned>("contact_line_search_allowed_lambda_cuts");
143  ls_params.set<Real>("contact_ltol") = affect_ltol
144  ? parameters.get<Real>("contact_line_search_ltol")
145  : parameters.get<Real>("l_tol");
146  ls_params.set<FEProblem *>("_fe_problem") = this;
147 
148  _line_search =
149  _factory.create<LineSearch>("PetscContactLineSearch", "contact_line_search", ls_params);
150  }
151  else
152  {
153  InputParameters ls_params = _factory.getValidParams("PetscProjectSolutionOntoBounds");
154  ls_params.set<FEProblem *>("_fe_problem") = this;
155 
157  "PetscProjectSolutionOntoBounds", "project_solution_onto_bounds_line_search", ls_params);
158  }
159  }
160  else
161  mooseError("Requested line search ", line_search.operator std::string(), " is not supported");
162 }
Factory & _factory
The Factory for building objects.
Definition: SubProblem.h:1047
Specialization of SubProblem for solving nonlinear equations plus auxiliary equations.
Definition: FEProblem.h:20
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.
T & set(const std::string &name, bool quiet_mode=false)
Returns a writable reference to the named parameters.
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:111
InputParameters getValidParams(const std::string &name) const
Get valid parameters for the object.
Definition: Factory.C:68
The main MOOSE class responsible for handling user-defined parameters in almost every MOOSE system...
LineSearchType
Type of the line search.
Definition: MooseTypes.h:925
This is a "smart" enum class intended to replace many of the shortcomings in the C++ enum type It sho...
Definition: MooseEnum.h:33
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
void mooseError(Args &&... args) const
Emits an error prefixed with object name and type.
const InputParameters & parameters() const
Get the parameters of the object.
std::shared_ptr< LineSearch > _line_search
bool isParamValid(const std::string &name) const
This method returns parameters that have been initialized in one fashion or another, i.e.

◆ addMarker()

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

Definition at line 5190 of file FEProblemBase.C.

5193 {
5194  parallel_object_only();
5195 
5196  if (_displaced_problem && parameters.get<bool>("use_displaced_mesh"))
5197  {
5198  parameters.set<SubProblem *>("_subproblem") = _displaced_problem.get();
5199  parameters.set<SystemBase *>("_sys") = &_displaced_problem->auxSys();
5200  _reinit_displaced_elem = true;
5201  }
5202  else
5203  {
5204  if (_displaced_problem == nullptr && parameters.get<bool>("use_displaced_mesh"))
5205  {
5206  // We allow Markers to request that they use_displaced_mesh,
5207  // but then be overridden when no displacements variables are
5208  // provided in the Mesh block. If that happened, update the value
5209  // of use_displaced_mesh appropriately for this Marker.
5210  if (parameters.have_parameter<bool>("use_displaced_mesh"))
5211  parameters.set<bool>("use_displaced_mesh") = false;
5212  }
5213 
5214  parameters.set<SubProblem *>("_subproblem") = this;
5215  parameters.set<SystemBase *>("_sys") = _aux.get();
5216  }
5217 
5218  for (THREAD_ID tid = 0; tid < libMesh::n_threads(); tid++)
5219  {
5220  std::shared_ptr<Marker> marker = _factory.create<Marker>(marker_name, name, parameters, tid);
5221  logAdd("Marker", name, marker_name, parameters);
5222  _markers.addObject(marker, tid);
5223  }
5224 }
bool _reinit_displaced_elem
Whether to call DisplacedProblem::reinitElem when this->reinitElem is called.
Factory & _factory
The Factory for building objects.
Definition: SubProblem.h:1047
unsigned int n_threads()
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.
T & set(const std::string &name, bool quiet_mode=false)
Returns a writable reference to the named parameters.
Definition: Marker.h:41
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.
Base class for a system (of equations)
Definition: SystemBase.h:84
virtual const std::string & name() const
Get the name of the class.
Definition: MooseBase.h:57
virtual std::unique_ptr< Base > create()=0
std::shared_ptr< AuxiliarySystem > _aux
The auxiliary system.
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:78
std::shared_ptr< DisplacedProblem > _displaced_problem
const InputParameters & parameters() const
Get the parameters of the object.
virtual void addObject(std::shared_ptr< T > object, THREAD_ID tid=0, bool recurse=true) override
Adds an object to the storage structure.
MooseObjectWarehouse< Marker > _markers
unsigned int THREAD_ID
Definition: MooseTypes.h:209

◆ addMaterial()

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

Reimplemented in MFEMProblem.

Definition at line 3822 of file FEProblemBase.C.

Referenced by ComponentMaterialPropertyInterface::addMaterials().

3825 {
3826  addMaterialHelper({&_materials}, mat_name, name, parameters);
3827 }
virtual void addMaterialHelper(std::vector< MaterialWarehouse *> warehouse, const std::string &material_name, const std::string &name, InputParameters &parameters)
virtual const std::string & name() const
Get the name of the class.
Definition: MooseBase.h:57
const InputParameters & parameters() const
Get the parameters of the object.
MaterialWarehouse _materials

◆ addMaterialHelper()

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

Definition at line 3838 of file FEProblemBase.C.

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

3842 {
3843  parallel_object_only();
3844 
3845  if (_displaced_problem && parameters.get<bool>("use_displaced_mesh"))
3846  {
3847  parameters.set<SubProblem *>("_subproblem") = _displaced_problem.get();
3849  }
3850  else
3851  {
3852  if (_displaced_problem == nullptr && parameters.get<bool>("use_displaced_mesh"))
3853  {
3854  // We allow Materials to request that they use_displaced_mesh,
3855  // but then be overridden when no displacements variables are
3856  // provided in the Mesh block. If that happened, update the value
3857  // of use_displaced_mesh appropriately for this Material.
3858  if (parameters.have_parameter<bool>("use_displaced_mesh"))
3859  parameters.set<bool>("use_displaced_mesh") = false;
3860  }
3861 
3862  parameters.set<SubProblem *>("_subproblem") = this;
3863  }
3864 
3865  for (THREAD_ID tid = 0; tid < libMesh::n_threads(); tid++)
3866  {
3867  // Create the general Block/Boundary MaterialBase object
3868  std::shared_ptr<MaterialBase> material =
3869  _factory.create<MaterialBase>(mat_name, name, parameters, tid);
3870  logAdd("Material", name, mat_name, parameters);
3871  bool discrete = !material->getParam<bool>("compute");
3872 
3873  // If the object is boundary restricted or if it is a functor material we do not create the
3874  // neighbor and face objects
3875  if (material->boundaryRestricted() || dynamic_cast<FunctorMaterial *>(material.get()))
3876  {
3877  _all_materials.addObject(material, tid);
3878  if (discrete)
3879  _discrete_materials.addObject(material, tid);
3880  else
3881  for (auto && warehouse : warehouses)
3882  warehouse->addObject(material, tid);
3883  }
3884 
3885  // Non-boundary restricted require face and neighbor objects
3886  else
3887  {
3888  // TODO: we only need to do this if we have needs for face materials (e.g.
3889  // FV, DG, etc.) - but currently we always do it. Figure out how to fix
3890  // this.
3891 
3892  // The name of the object being created, this is changed multiple times as objects are
3893  // created below
3894  std::string object_name;
3895 
3896  // Create a copy of the supplied parameters to the setting for "_material_data_type" isn't
3897  // used from a previous tid loop
3898  InputParameters current_parameters = parameters;
3899 
3900  // face material
3901  current_parameters.set<Moose::MaterialDataType>("_material_data_type") =
3903  object_name = name + "_face";
3904  std::shared_ptr<MaterialBase> face_material =
3905  _factory.create<MaterialBase>(mat_name, object_name, current_parameters, tid);
3906 
3907  // neighbor material
3908  current_parameters.set<Moose::MaterialDataType>("_material_data_type") =
3910  current_parameters.set<bool>("_neighbor") = true;
3911  object_name = name + "_neighbor";
3912  std::shared_ptr<MaterialBase> neighbor_material =
3913  _factory.create<MaterialBase>(mat_name, object_name, current_parameters, tid);
3914 
3915  // Store the material objects
3916  _all_materials.addObjects(material, neighbor_material, face_material, tid);
3917 
3918  if (discrete)
3919  _discrete_materials.addObjects(material, neighbor_material, face_material, tid);
3920  else
3921  for (auto && warehouse : warehouses)
3922  warehouse->addObjects(material, neighbor_material, face_material, tid);
3923 
3924  // Names of all controllable parameters for this Material object
3925  const std::string & base = parameters.get<std::string>("_moose_base");
3926  MooseObjectParameterName name(MooseObjectName(base, material->name()), "*");
3927  const auto param_names =
3929 
3930  // Connect parameters of the primary Material object to those on the face and neighbor
3931  // objects
3932  for (const auto & p_name : param_names)
3933  {
3934  MooseObjectParameterName primary_name(MooseObjectName(base, material->name()),
3935  p_name.parameter());
3936  MooseObjectParameterName face_name(MooseObjectName(base, face_material->name()),
3937  p_name.parameter());
3938  MooseObjectParameterName neighbor_name(MooseObjectName(base, neighbor_material->name()),
3939  p_name.parameter());
3941  primary_name, face_name, false);
3943  primary_name, neighbor_name, false);
3944  }
3945  }
3946  }
3947 }
bool _reinit_displaced_elem
Whether to call DisplacedProblem::reinitElem when this->reinitElem is called.
void addControllableParameterConnection(const MooseObjectParameterName &primary, const MooseObjectParameterName &secondary, bool error_on_empty=true)
Method for linking control parameters of different names.
bool _reinit_displaced_neighbor
Whether to call DisplacedProblem::reinitNeighbor when this->reinitNeighbor is called.
Factory & _factory
The Factory for building objects.
Definition: SubProblem.h:1047
unsigned int n_threads()
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.
InputParameterWarehouse & getInputParameterWarehouse()
Get the InputParameterWarehouse for MooseObjects.
Definition: MooseApp.C:2839
MaterialDataType
MaterialData types.
Definition: MooseTypes.h:691
T & set(const std::string &name, bool quiet_mode=false)
Returns a writable reference to the named parameters.
The main MOOSE class responsible for handling user-defined parameters in almost every MOOSE system...
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 const std::string & name() const
Get the name of the class.
Definition: MooseBase.h:57
std::vector< MooseObjectParameterName > getControllableParameterNames(const MooseObjectParameterName &input) const
Return a vector of parameters names matching the supplied name.
FunctorMaterials compute functor material properties.
virtual std::unique_ptr< Base > create()=0
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...
MooseApp & _app
The MOOSE application this is associated with.
Definition: MooseBase.h:84
bool have_parameter(std::string_view name) const
A wrapper around the Parameters base class method.
MaterialWarehouse _discrete_materials
bool _reinit_displaced_face
Whether to call DisplacedProblem::reinitElemFace when this->reinitElemFace is called.
Generic class for solving transient nonlinear problems.
Definition: SubProblem.h:78
std::shared_ptr< DisplacedProblem > _displaced_problem
const InputParameters & parameters() const
Get the parameters of the object.
A class for storing an input parameter name.
A class for storing the names of MooseObject by tag and object name.
virtual void addObject(std::shared_ptr< T > object, THREAD_ID tid=0, bool recurse=true) override
Adds an object to the storage structure.
MaterialBases compute MaterialProperties.
Definition: MaterialBase.h:62
MaterialWarehouse _all_materials
unsigned int THREAD_ID
Definition: MooseTypes.h:209

◆ 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 311 of file SubProblem.C.

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

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

◆ addMeshDivision()

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

Add a MeshDivision.

Definition at line 2619 of file FEProblemBase.C.

2622 {
2623  parallel_object_only();
2624  parameters.set<FEProblemBase *>("_fe_problem_base") = this;
2625  parameters.set<SubProblem *>("_subproblem") = this;
2626  for (THREAD_ID tid = 0; tid < libMesh::n_threads(); tid++)
2627  {
2628  std::shared_ptr<MeshDivision> func = _factory.create<MeshDivision>(type, name, parameters, tid);
2629  _mesh_divisions.addObject(func, tid);
2630  }
2631 }
Factory & _factory
The Factory for building objects.
Definition: SubProblem.h:1047
unsigned int n_threads()
T & set(const std::string &name, bool quiet_mode=false)
Returns a writable reference to the named parameters.
Base class for MeshDivision objects.
Definition: MeshDivision.h:35
Specialization of SubProblem for solving nonlinear equations plus auxiliary equations.
virtual const std::string & name() const
Get the name of the class.
Definition: MooseBase.h:57
virtual std::unique_ptr< Base > create()=0
const std::string & type() const
Get the type of this class.
Definition: MooseBase.h:51
MooseObjectWarehouse< MeshDivision > _mesh_divisions
Warehouse to store mesh divisions NOTE: this could probably be moved to the MooseMesh instead of the ...
Generic class for solving transient nonlinear problems.
Definition: SubProblem.h:78
const InputParameters & parameters() const
Get the parameters of the object.
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 THREAD_ID
Definition: MooseTypes.h:209

◆ 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 5227 of file FEProblemBase.C.

5230 {
5231  parallel_object_only();
5232 
5233  parameters.set<MPI_Comm>("_mpi_comm") = _communicator.get();
5234  parameters.set<std::shared_ptr<CommandLine>>("_command_line") = _app.commandLine();
5235 
5236  if (_displaced_problem && parameters.get<bool>("use_displaced_mesh"))
5237  {
5238  parameters.set<SubProblem *>("_subproblem") = _displaced_problem.get();
5239  parameters.set<SystemBase *>("_sys") = &_displaced_problem->auxSys();
5240  _reinit_displaced_elem = true;
5241  }
5242  else
5243  {
5244  if (_displaced_problem == nullptr && parameters.get<bool>("use_displaced_mesh"))
5245  {
5246  // We allow MultiApps to request that they use_displaced_mesh,
5247  // but then be overridden when no displacements variables are
5248  // provided in the Mesh block. If that happened, update the value
5249  // of use_displaced_mesh appropriately for this MultiApp.
5250  if (parameters.have_parameter<bool>("use_displaced_mesh"))
5251  parameters.set<bool>("use_displaced_mesh") = false;
5252  }
5253 
5254  parameters.set<SubProblem *>("_subproblem") = this;
5255  parameters.set<SystemBase *>("_sys") = _aux.get();
5256  }
5257 
5258  std::shared_ptr<MultiApp> multi_app = _factory.create<MultiApp>(multi_app_name, name, parameters);
5259  logAdd("MultiApp", name, multi_app_name, parameters);
5260  multi_app->setupPositions();
5261 
5262  _multi_apps.addObject(multi_app);
5263 
5264  // Store TransientMultiApp objects in another container, this is needed for calling computeDT
5265  std::shared_ptr<TransientMultiApp> trans_multi_app =
5267  if (trans_multi_app)
5268  _transient_multi_apps.addObject(trans_multi_app);
5269 }
bool _reinit_displaced_elem
Whether to call DisplacedProblem::reinitElem when this->reinitElem is called.
void addObject(std::shared_ptr< T > object, THREAD_ID tid=0, bool recurse=true) override
Adds an object to the storage structure.
Factory & _factory
The Factory for building objects.
Definition: SubProblem.h:1047
std::shared_ptr< CommandLine > commandLine() const
Get the command line.
Definition: MooseApp.h:451
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.
T & set(const std::string &name, bool quiet_mode=false)
Returns a writable reference to the named parameters.
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.
MultiApp Implementation for Transient Apps.
std::unique_ptr< T_DEST, T_DELETER > dynamic_pointer_cast(std::unique_ptr< T_SRC, T_DELETER > &src)
These are reworked from https://stackoverflow.com/a/11003103.
const Parallel::Communicator & _communicator
ExecuteMooseObjectWarehouse< TransientMultiApp > _transient_multi_apps
Storage for TransientMultiApps (only needed for calling &#39;computeDT&#39;)
Base class for a system (of equations)
Definition: SystemBase.h:84
virtual const std::string & name() const
Get the name of the class.
Definition: MooseBase.h:57
virtual std::unique_ptr< Base > create()=0
std::shared_ptr< AuxiliarySystem > _aux
The auxiliary system.
MooseApp & _app
The MOOSE application this is associated with.
Definition: MooseBase.h:84
ExecuteMooseObjectWarehouse< MultiApp > _multi_apps
MultiApp Warehouse.
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:78
std::shared_ptr< DisplacedProblem > _displaced_problem
const InputParameters & parameters() const
Get the parameters of the object.
A MultiApp represents one or more MOOSE applications that are running simultaneously.
Definition: MultiApp.h:112

◆ addNodalKernel()

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

Definition at line 2954 of file FEProblemBase.C.

2957 {
2958  parallel_object_only();
2959 
2960  const auto nl_sys_num = determineSolverSystem(parameters.varName("variable", name), true).second;
2961  if (_displaced_problem && parameters.get<bool>("use_displaced_mesh"))
2962  {
2963  parameters.set<SubProblem *>("_subproblem") = _displaced_problem.get();
2964  parameters.set<SystemBase *>("_sys") = &_displaced_problem->solverSys(nl_sys_num);
2965  _reinit_displaced_elem = true;
2966  }
2967  else
2968  {
2969  if (_displaced_problem == nullptr && parameters.get<bool>("use_displaced_mesh"))
2970  {
2971  // We allow NodalKernels to request that they use_displaced_mesh,
2972  // but then be overridden when no displacements variables are
2973  // provided in the Mesh block. If that happened, update the value
2974  // of use_displaced_mesh appropriately for this NodalKernel.
2975  if (parameters.have_parameter<bool>("use_displaced_mesh"))
2976  parameters.set<bool>("use_displaced_mesh") = false;
2977  }
2978 
2979  parameters.set<SubProblem *>("_subproblem") = this;
2980  parameters.set<SystemBase *>("_sys") = _nl[nl_sys_num].get();
2981  }
2982  logAdd("NodalKernel", name, kernel_name, parameters);
2983  _nl[nl_sys_num]->addNodalKernel(kernel_name, name, parameters);
2984 }
bool _reinit_displaced_elem
Whether to call DisplacedProblem::reinitElem when this->reinitElem is called.
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.
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.
T & set(const std::string &name, bool quiet_mode=false)
Returns a writable reference to the named parameters.
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.
Base class for a system (of equations)
Definition: SystemBase.h:84
virtual const std::string & name() const
Get the name of the class.
Definition: MooseBase.h:57
std::vector< std::shared_ptr< NonlinearSystemBase > > _nl
The nonlinear systems.
bool have_parameter(std::string_view name) const
A wrapper around the Parameters base class method.
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 parameter name.
Generic class for solving transient nonlinear problems.
Definition: SubProblem.h:78
std::shared_ptr< DisplacedProblem > _displaced_problem
const InputParameters & parameters() const
Get the parameters of the object.

◆ 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 149 of file SubProblem.C.

Referenced by FEProblemBase::createTagVectors().

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

◆ 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 3109 of file FEProblemBase.h.

3114 {
3115  parallel_object_only();
3116 
3117  logAdd(MooseUtils::prettyCppType<T>(), name, type, parameters);
3118  // Add the _subproblem and _sys parameters depending on use_displaced_mesh
3119  addObjectParamsHelper(parameters, name, var_param_name);
3120 
3121  const auto n_threads = threaded ? libMesh::n_threads() : 1;
3122  std::vector<std::shared_ptr<T>> objects(n_threads);
3123  for (THREAD_ID tid = 0; tid < n_threads; ++tid)
3124  {
3125  std::shared_ptr<T> obj = _factory.create<T>(type, name, parameters, tid);
3126  theWarehouse().add(obj);
3127  objects[tid] = std::move(obj);
3128  }
3129 
3130  return objects;
3131 }
Factory & _factory
The Factory for building objects.
Definition: SubProblem.h:1047
unsigned int n_threads()
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...
Definition: TheWarehouse.C:116
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:111
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 const std::string & name() const
Get the name of the class.
Definition: MooseBase.h:57
TheWarehouse & theWarehouse() const
const std::string & type() const
Get the type of this class.
Definition: MooseBase.h:51
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().
const InputParameters & parameters() const
Get the parameters of the object.
unsigned int THREAD_ID
Definition: MooseTypes.h:209

◆ 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 4180 of file FEProblemBase.C.

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

4183 {
4184  // Due to objects like SolutionUserObject which manipulate libmesh objects
4185  // and variables directly at the back end, we need a default option here
4186  // which is going to be the pointer to the first solver system within this
4187  // problem
4188  unsigned int sys_num = 0;
4189  if (parameters.isParamValid(var_param_name))
4190  {
4191  const auto variable_name = parameters.varName(var_param_name, object_name);
4192  if (this->hasVariable(variable_name) || this->hasScalarVariable(variable_name))
4193  sys_num = getSystem(parameters.varName(var_param_name, object_name)).number();
4194  }
4195 
4196  if (_displaced_problem && parameters.have_parameter<bool>("use_displaced_mesh") &&
4197  parameters.get<bool>("use_displaced_mesh"))
4198  {
4199  parameters.set<SubProblem *>("_subproblem") = _displaced_problem.get();
4200  if (sys_num == _aux->number())
4201  parameters.set<SystemBase *>("_sys") = &_displaced_problem->systemBaseAuxiliary();
4202  else
4203  parameters.set<SystemBase *>("_sys") = &_displaced_problem->solverSys(sys_num);
4204  }
4205  else
4206  {
4207  // The object requested use_displaced_mesh, but it was overridden
4208  // due to there being no displacements variables in the [Mesh] block.
4209  // If that happened, update the value of use_displaced_mesh appropriately.
4210  if (!_displaced_problem && parameters.have_parameter<bool>("use_displaced_mesh") &&
4211  parameters.get<bool>("use_displaced_mesh"))
4212  parameters.set<bool>("use_displaced_mesh") = false;
4213 
4214  parameters.set<SubProblem *>("_subproblem") = this;
4215 
4216  if (sys_num == _aux->number())
4217  parameters.set<SystemBase *>("_sys") = _aux.get();
4218  else
4219  parameters.set<SystemBase *>("_sys") = _solver_systems[sys_num].get();
4220  }
4221 }
virtual bool hasVariable(const std::string &var_name) const override
Whether or not this problem has the variable.
virtual libMesh::System & getSystem(const std::string &var_name) override
Returns the equation system containing the variable provided.
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.
T & set(const std::string &name, bool quiet_mode=false)
Returns a writable reference to the named parameters.
virtual bool hasScalarVariable(const std::string &var_name) const override
Returns a Boolean indicating whether any system contains a variable with the name provided...
std::vector< std::shared_ptr< SolverSystem > > _solver_systems
Combined container to base pointer of every solver system.
Base class for a system (of equations)
Definition: SystemBase.h:84
std::shared_ptr< AuxiliarySystem > _aux
The auxiliary system.
bool have_parameter(std::string_view name) const
A wrapper around the Parameters base class method.
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 parameter name.
Generic class for solving transient nonlinear problems.
Definition: SubProblem.h:78
std::shared_ptr< DisplacedProblem > _displaced_problem
const InputParameters & parameters() const
Get the parameters of the object.
bool isParamValid(const std::string &name) const
This method returns parameters that have been initialized in one fashion or another, i.e.

◆ addOutput()

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

Adds an Output object.

Definition at line 8772 of file FEProblemBase.C.

8775 {
8776  parallel_object_only();
8777 
8778  // Get a reference to the OutputWarehouse
8779  OutputWarehouse & output_warehouse = _app.getOutputWarehouse();
8780 
8781  // Reject the reserved names for objects not built by MOOSE
8782  if (!parameters.get<bool>("_built_by_moose") && output_warehouse.isReservedName(object_name))
8783  mooseError("The name '", object_name, "' is a reserved name for output objects");
8784 
8785  // Check that an object by the same name does not already exist; this must be done before the
8786  // object is created to avoid getting misleading errors from the Parser
8787  if (output_warehouse.hasOutput(object_name))
8788  mooseError("An output object named '", object_name, "' already exists");
8789 
8790  // Add a pointer to the FEProblemBase class
8791  parameters.addPrivateParam<FEProblemBase *>("_fe_problem_base", this);
8792 
8793  // Create common parameter exclude list
8794  std::vector<std::string> exclude;
8795  if (object_type == "Console")
8796  {
8797  exclude.push_back("execute_on");
8798 
8799  // --show-input should enable the display of the input file on the screen
8800  if (_app.getParam<bool>("show_input") && parameters.get<bool>("output_screen"))
8801  parameters.set<ExecFlagEnum>("execute_input_on") = EXEC_INITIAL;
8802  }
8803  // Need this because Checkpoint::validParams changes the default value of
8804  // execute_on
8805  else if (object_type == "Checkpoint")
8806  exclude.push_back("execute_on");
8807 
8808  // Apply the common parameters loaded with Outputs input syntax
8809  const InputParameters * common = output_warehouse.getCommonParameters();
8810  if (common)
8811  parameters.applyParameters(*common, exclude);
8812  if (common && std::find(exclude.begin(), exclude.end(), "execute_on") != exclude.end() &&
8813  common->isParamSetByUser("execute_on") && object_type != "Console")
8815  "'execute_on' parameter specified in [Outputs] block is ignored for object '" +
8816  object_name +
8817  "'.\nDefine this object in its own sub-block of [Outputs] to modify its "
8818  "execution schedule.");
8819 
8820  // Set the correct value for the binary flag for XDA/XDR output
8821  if (object_type == "XDR")
8822  parameters.set<bool>("_binary") = true;
8823  else if (object_type == "XDA")
8824  parameters.set<bool>("_binary") = false;
8825 
8826  // Adjust the checkpoint suffix if auto recovery was enabled
8827  if (object_name == "auto_recovery_checkpoint")
8828  parameters.set<std::string>("suffix") = "auto_recovery";
8829 
8830  // Create the object and add it to the warehouse
8831  std::shared_ptr<Output> output = _factory.create<Output>(object_type, object_name, parameters);
8832  logAdd("Output", object_name, object_type, parameters);
8833  output_warehouse.addOutput(output);
8834 }
A MultiMooseEnum object to hold "execute_on" flags.
Definition: ExecFlagEnum.h:21
Factory & _factory
The Factory for building objects.
Definition: SubProblem.h:1047
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...
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.
T & set(const std::string &name, bool quiet_mode=false)
Returns a writable reference to the named 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 mooseInfoRepeated(Args &&... args)
Emit an informational message with the given stringified, concatenated args.
Definition: MooseError.h:377
The main MOOSE class responsible for handling user-defined parameters in almost every MOOSE system...
void applyParameters(const InputParameters &common, const std::vector< std::string > &exclude={}, const bool allow_private=false)
Method for applying common parameters.
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.
Specialization of SubProblem for solving nonlinear equations plus auxiliary equations.
Based class for output objects.
Definition: Output.h:43
virtual std::unique_ptr< Base > create()=0
MooseApp & _app
The MOOSE application this is associated with.
Definition: MooseBase.h:84
Class for storing and utilizing output objects.
bool isParamSetByUser(const std::string &name) const
Method returns true if the parameter was set by the user.
const T & getParam(const std::string &name)
Retrieve a parameter for the object.
Definition: MooseApp.h:1572
const InputParameters * getCommonParameters() const
Get a reference to the common output parameters.
void addOutput(std::shared_ptr< Output > output)
Adds an existing output object to the warehouse.
void mooseError(Args &&... args) const
Emits an error prefixed with object name and type.
const InputParameters & parameters() const
Get the parameters of the object.
OutputWarehouse & getOutputWarehouse()
Get the OutputWarehouse objects.
Definition: MooseApp.C:2381
const ExecFlagType EXEC_INITIAL
Definition: Moose.C:28

◆ 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 1338 of file SubProblem.h.

Referenced by FunctorMaterial::addFunctorPropertyByBlocks().

1344 {
1345  auto & pbblf_functors = _pbblf_functors[tid];
1346 
1347  auto [it, first_time_added] =
1348  pbblf_functors.emplace(name,
1349  std::make_unique<PiecewiseByBlockLambdaFunctor<T>>(
1350  name, my_lammy, clearance_schedule, mesh, block_ids));
1351 
1352  auto * functor = dynamic_cast<PiecewiseByBlockLambdaFunctor<T> *>(it->second.get());
1353  if (!functor)
1354  {
1355  if (first_time_added)
1356  mooseError("This should be impossible. If this was the first time we added the functor, then "
1357  "the dynamic cast absolutely should have succeeded");
1358  else
1359  mooseError("Attempted to add a lambda functor with the name '",
1360  name,
1361  "' but another lambda functor of that name returns a different type");
1362  }
1363 
1364  if (first_time_added)
1365  addFunctor(name, *functor, tid);
1366  else
1367  // The functor already exists
1368  functor->setFunctor(mesh, block_ids, my_lammy);
1369 
1370  return *functor;
1371 }
virtual MooseMesh & mesh()=0
A material property that is evaluated on-the-fly via calls to various overloads of operator() ...
void addFunctor(const std::string &name, const Moose::FunctorBase< T > &functor, const THREAD_ID tid)
add a functor to the problem functor container
Definition: SubProblem.h:1375
virtual const std::string & name() const
Get the name of the class.
Definition: MooseBase.h:57
std::vector< std::map< std::string, std::unique_ptr< Moose::FunctorAbstract > > > _pbblf_functors
Container to hold PiecewiseByBlockLambdaFunctors.
Definition: SubProblem.h:1147
void mooseError(Args &&... args) const
Emits an error prefixed with object name and type.

◆ addPostprocessor()

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

Reimplemented in MFEMProblem.

Definition at line 4224 of file FEProblemBase.C.

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

4227 {
4228  // Check for name collision
4229  if (hasUserObject(name))
4230  mooseError("A UserObject with the name \"",
4231  name,
4232  "\" already exists. You may not add a Postprocessor by the same name.");
4233 
4234  addUserObject(pp_name, name, parameters);
4235 }
bool hasUserObject(const std::string &name) const
Check if there if a user object of given name.
virtual const std::string & name() const
Get the name of the class.
Definition: MooseBase.h:57
virtual std::vector< std::shared_ptr< UserObject > > addUserObject(const std::string &user_object_name, const std::string &name, InputParameters &parameters)
void mooseError(Args &&... args) const
Emits an error prefixed with object name and type.
const InputParameters & parameters() const
Get the parameters of the object.

◆ addPredictor()

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

Definition at line 6757 of file FEProblemBase.C.

Referenced by AB2PredictorCorrector::AB2PredictorCorrector().

6760 {
6761  parallel_object_only();
6762 
6764  mooseError("Vector bounds cannot be used with LinearSystems!");
6765 
6766  parameters.set<SubProblem *>("_subproblem") = this;
6767  std::shared_ptr<Predictor> predictor = _factory.create<Predictor>(type, name, parameters);
6768  logAdd("Predictor", name, type, parameters);
6769 
6770  for (auto & nl : _nl)
6771  nl->setPredictor(predictor);
6772 }
Factory & _factory
The Factory for building objects.
Definition: SubProblem.h:1047
virtual std::size_t numNonlinearSystems() const override
Base class for predictors.
Definition: Predictor.h:28
T & set(const std::string &name, bool quiet_mode=false)
Returns a writable reference to the named parameters.
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 const std::string & name() const
Get the name of the class.
Definition: MooseBase.h:57
std::vector< std::shared_ptr< NonlinearSystemBase > > _nl
The nonlinear systems.
virtual std::unique_ptr< Base > create()=0
const std::string & type() const
Get the type of this class.
Definition: MooseBase.h:51
Generic class for solving transient nonlinear problems.
Definition: SubProblem.h:78
void mooseError(Args &&... args) const
Emits an error prefixed with object name and type.
const InputParameters & parameters() const
Get the parameters of the object.
virtual std::size_t numLinearSystems() const override

◆ 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 4252 of file FEProblemBase.C.

Referenced by MultiAppGeneralFieldTransfer::MultiAppGeneralFieldTransfer().

4255 {
4256  // Check for name collision
4257  if (hasUserObject(name))
4258  mooseError(std::string("A UserObject with the name \"") + name +
4259  "\" already exists. You may not add a Reporter by the same name.");
4260 
4262 }
bool hasUserObject(const std::string &name) const
Check if there if a user object of given name.
virtual const std::string & name() const
Get the name of the class.
Definition: MooseBase.h:57
const std::string & type() const
Get the type of this class.
Definition: MooseBase.h:51
virtual std::vector< std::shared_ptr< UserObject > > addUserObject(const std::string &user_object_name, const std::string &name, InputParameters &parameters)
void mooseError(Args &&... args) const
Emits an error prefixed with object name and type.
const InputParameters & parameters() const
Get the parameters of the object.

◆ addResidual()

void FEProblemBase::addResidual ( const THREAD_ID  tid)
overridevirtualinherited

Implements SubProblem.

Definition at line 1816 of file FEProblemBase.C.

Referenced by ComputeDiracThread::postElement().

1817 {
1818  _assembly[tid][_current_nl_sys->number()]->addResidual(Assembly::GlobalDataKey{},
1820 
1821  if (_displaced_problem)
1822  _displaced_problem->addResidual(tid);
1823 }
virtual const std::vector< VectorTag > & currentResidualVectorTags() const override
Return the residual vector tags we are currently computing.
NonlinearSystemBase * _current_nl_sys
The current nonlinear system that we are solving.
unsigned int number() const
Gets the number of this system.
Definition: SystemBase.C:1159
std::vector< std::vector< std::unique_ptr< Assembly > > > _assembly
The Assembly objects.
std::shared_ptr< DisplacedProblem > _displaced_problem
Key structure for APIs manipulating global vectors/matrices.
Definition: Assembly.h:815

◆ addResidualLower()

void FEProblemBase::addResidualLower ( const THREAD_ID  tid)
overridevirtualinherited

Implements SubProblem.

Definition at line 1836 of file FEProblemBase.C.

Referenced by ComputeResidualThread::accumulateLower(), ComputeResidualAndJacobianThread::accumulateLower(), ComputeResidualThread::accumulateNeighborLower(), and ComputeResidualAndJacobianThread::accumulateNeighborLower().

1837 {
1838  _assembly[tid][_current_nl_sys->number()]->addResidualLower(Assembly::GlobalDataKey{},
1840 
1841  if (_displaced_problem)
1842  _displaced_problem->addResidualLower(tid);
1843 }
virtual const std::vector< VectorTag > & currentResidualVectorTags() const override
Return the residual vector tags we are currently computing.
NonlinearSystemBase * _current_nl_sys
The current nonlinear system that we are solving.
unsigned int number() const
Gets the number of this system.
Definition: SystemBase.C:1159
std::vector< std::vector< std::unique_ptr< Assembly > > > _assembly
The Assembly objects.
std::shared_ptr< DisplacedProblem > _displaced_problem
Key structure for APIs manipulating global vectors/matrices.
Definition: Assembly.h:815

◆ addResidualNeighbor()

void FEProblemBase::addResidualNeighbor ( const THREAD_ID  tid)
overridevirtualinherited

Implements SubProblem.

Definition at line 1826 of file FEProblemBase.C.

Referenced by ComputeResidualThread::accumulateNeighbor(), ComputeResidualAndJacobianThread::accumulateNeighbor(), ComputeResidualThread::accumulateNeighborLower(), and ComputeResidualAndJacobianThread::accumulateNeighborLower().

1827 {
1828  _assembly[tid][_current_nl_sys->number()]->addResidualNeighbor(Assembly::GlobalDataKey{},
1830 
1831  if (_displaced_problem)
1832  _displaced_problem->addResidualNeighbor(tid);
1833 }
virtual const std::vector< VectorTag > & currentResidualVectorTags() const override
Return the residual vector tags we are currently computing.
NonlinearSystemBase * _current_nl_sys
The current nonlinear system that we are solving.
unsigned int number() const
Gets the number of this system.
Definition: SystemBase.C:1159
std::vector< std::vector< std::unique_ptr< Assembly > > > _assembly
The Assembly objects.
std::shared_ptr< DisplacedProblem > _displaced_problem
Key structure for APIs manipulating global vectors/matrices.
Definition: Assembly.h:815

◆ addResidualScalar()

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

Definition at line 1846 of file FEProblemBase.C.

Referenced by NonlinearSystemBase::computeResidualInternal().

1847 {
1848  _assembly[tid][_current_nl_sys->number()]->addResidualScalar(Assembly::GlobalDataKey{},
1850 }
virtual const std::vector< VectorTag > & currentResidualVectorTags() const override
Return the residual vector tags we are currently computing.
NonlinearSystemBase * _current_nl_sys
The current nonlinear system that we are solving.
unsigned int number() const
Gets the number of this system.
Definition: SystemBase.C:1159
std::vector< std::vector< std::unique_ptr< Assembly > > > _assembly
The Assembly objects.
Key structure for APIs manipulating global vectors/matrices.
Definition: Assembly.h:815

◆ 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 2687 of file FEProblemBase.C.

2690 {
2691  const auto samplers = addObject<Sampler>(type, name, parameters);
2692  for (auto & sampler : samplers)
2693  sampler->init();
2694 }
virtual const std::string & name() const
Get the name of the class.
Definition: MooseBase.h:57
const std::string & type() const
Get the type of this class.
Definition: MooseBase.h:51
const InputParameters & parameters() const
Get the parameters of the object.

◆ addScalarKernel()

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

Definition at line 2987 of file FEProblemBase.C.

2990 {
2991  parallel_object_only();
2992 
2993  const auto nl_sys_num = determineSolverSystem(parameters.varName("variable", name), true).second;
2994  if (!isSolverSystemNonlinear(nl_sys_num))
2995  mooseError("You are trying to add a ScalarKernel to a linear variable/system, which is not "
2996  "supported at the moment!");
2997 
2998  if (_displaced_problem && parameters.get<bool>("use_displaced_mesh"))
2999  {
3000  parameters.set<SubProblem *>("_subproblem") = _displaced_problem.get();
3001  parameters.set<SystemBase *>("_sys") = &_displaced_problem->solverSys(nl_sys_num);
3002  }
3003  else
3004  {
3005  if (_displaced_problem == nullptr && parameters.get<bool>("use_displaced_mesh"))
3006  {
3007  // We allow ScalarKernels to request that they use_displaced_mesh,
3008  // but then be overridden when no displacements variables are
3009  // provided in the Mesh block. If that happened, update the value
3010  // of use_displaced_mesh appropriately for this ScalarKernel.
3011  if (parameters.have_parameter<bool>("use_displaced_mesh"))
3012  parameters.set<bool>("use_displaced_mesh") = false;
3013  }
3014 
3015  parameters.set<SubProblem *>("_subproblem") = this;
3016  parameters.set<SystemBase *>("_sys") = _nl[nl_sys_num].get();
3017  }
3018 
3019  logAdd("ScalarKernel", name, kernel_name, parameters);
3020  _nl[nl_sys_num]->addScalarKernel(kernel_name, name, parameters);
3021 }
bool isSolverSystemNonlinear(const unsigned int sys_num)
Check if the solver system is nonlinear.
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.
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.
T & set(const std::string &name, bool quiet_mode=false)
Returns a writable reference to the named parameters.
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.
Base class for a system (of equations)
Definition: SystemBase.h:84
virtual const std::string & name() const
Get the name of the class.
Definition: MooseBase.h:57
std::vector< std::shared_ptr< NonlinearSystemBase > > _nl
The nonlinear systems.
bool have_parameter(std::string_view name) const
A wrapper around the Parameters base class method.
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 parameter name.
Generic class for solving transient nonlinear problems.
Definition: SubProblem.h:78
void mooseError(Args &&... args) const
Emits an error prefixed with object name and type.
std::shared_ptr< DisplacedProblem > _displaced_problem
const InputParameters & parameters() const
Get the parameters of the object.

◆ addTimeIntegrator()

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

Definition at line 6722 of file FEProblemBase.C.

Referenced by TransientBase::setupTimeIntegrator().

6725 {
6726  parallel_object_only();
6727 
6728  parameters.set<SubProblem *>("_subproblem") = this;
6729  logAdd("TimeIntegrator", name, type, parameters);
6730  _aux->addTimeIntegrator(type, name + ":aux", parameters);
6731  for (auto & sys : _solver_systems)
6732  sys->addTimeIntegrator(type, name + ":" + sys->name(), parameters);
6733  _has_time_integrator = true;
6734 
6735  // add vectors to store u_dot, u_dotdot, udot_old, u_dotdot_old and
6736  // solution vectors older than 2 time steps, if requested by the time
6737  // integrator
6738  _aux->addDotVectors();
6739  for (auto & nl : _nl)
6740  {
6741  nl->addDotVectors();
6742 
6743  auto tag_udot = nl->getTimeIntegrators()[0]->uDotFactorTag();
6744  if (!nl->hasVector(tag_udot))
6745  nl->associateVectorToTag(*nl->solutionUDot(), tag_udot);
6746  auto tag_udotdot = nl->getTimeIntegrators()[0]->uDotDotFactorTag();
6747  if (!nl->hasVector(tag_udotdot) && uDotDotRequested())
6748  nl->associateVectorToTag(*nl->solutionUDotDot(), tag_udotdot);
6749  }
6750 
6751  if (_displaced_problem)
6752  // Time integrator does not exist when displaced problem is created.
6753  _displaced_problem->addTimeIntegrator();
6754 }
virtual bool uDotDotRequested()
Get boolean flag to check whether solution second time derivative needs to be stored.
T & set(const std::string &name, bool quiet_mode=false)
Returns a writable reference to the named parameters.
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.
std::vector< std::shared_ptr< SolverSystem > > _solver_systems
Combined container to base pointer of every solver system.
bool _has_time_integrator
Indicates whether or not this executioner has a time integrator (during setup)
virtual const std::string & name() const
Get the name of the class.
Definition: MooseBase.h:57
std::vector< std::shared_ptr< NonlinearSystemBase > > _nl
The nonlinear systems.
std::shared_ptr< AuxiliarySystem > _aux
The auxiliary system.
const std::string & type() const
Get the type of this class.
Definition: MooseBase.h:51
Generic class for solving transient nonlinear problems.
Definition: SubProblem.h:78
std::shared_ptr< DisplacedProblem > _displaced_problem
const InputParameters & parameters() const
Get the parameters of the object.

◆ 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 5574 of file FEProblemBase.C.

Referenced by MFEMProblem::addTransfer().

5577 {
5578  parallel_object_only();
5579 
5580  if (_displaced_problem && parameters.get<bool>("use_displaced_mesh"))
5581  {
5582  parameters.set<SubProblem *>("_subproblem") = _displaced_problem.get();
5583  parameters.set<SystemBase *>("_sys") = &_displaced_problem->auxSys();
5584  _reinit_displaced_elem = true;
5585  }
5586  else
5587  {
5588  if (_displaced_problem == nullptr && parameters.get<bool>("use_displaced_mesh"))
5589  {
5590  // We allow Transfers to request that they use_displaced_mesh,
5591  // but then be overridden when no displacements variables are
5592  // provided in the Mesh block. If that happened, update the value
5593  // of use_displaced_mesh appropriately for this Transfer.
5594  if (parameters.have_parameter<bool>("use_displaced_mesh"))
5595  parameters.set<bool>("use_displaced_mesh") = false;
5596  }
5597 
5598  parameters.set<SubProblem *>("_subproblem") = this;
5599  parameters.set<SystemBase *>("_sys") = _aux.get();
5600  }
5601 
5602  // Handle the "SAME_AS_MULTIAPP" execute option. The get method is used to test for the
5603  // flag so the set by user flag is not reset, calling set with the true flag causes the set
5604  // by user status to be reset, which should only be done if the EXEC_SAME_AS_MULTIAPP is
5605  // being applied to the object.
5607  {
5608  ExecFlagEnum & exec_enum = parameters.set<ExecFlagEnum>("execute_on", true);
5609  std::shared_ptr<MultiApp> multiapp;
5610  if (parameters.isParamValid("multi_app"))
5611  multiapp = getMultiApp(parameters.get<MultiAppName>("multi_app"));
5612  else if (parameters.isParamValid("from_multi_app"))
5613  multiapp = getMultiApp(parameters.get<MultiAppName>("from_multi_app"));
5614  else if (parameters.isParamValid("to_multi_app"))
5615  multiapp = getMultiApp(parameters.get<MultiAppName>("to_multi_app"));
5616  // else do nothing because the user has provided invalid input. They should get a nice error
5617  // about this during transfer construction. This necessitates checking for null in this next
5618  // line, however
5619  if (multiapp)
5620  exec_enum = multiapp->getParam<ExecFlagEnum>("execute_on");
5621  }
5622 
5623  // Create the Transfer objects
5624  std::shared_ptr<Transfer> transfer = _factory.create<Transfer>(transfer_name, name, parameters);
5625  logAdd("Transfer", name, transfer_name, parameters);
5626 
5627  // Add MultiAppTransfer object
5628  std::shared_ptr<MultiAppTransfer> multi_app_transfer =
5630  if (multi_app_transfer)
5631  {
5632  if (multi_app_transfer->directions().isValueSet(MultiAppTransfer::TO_MULTIAPP))
5633  _to_multi_app_transfers.addObject(multi_app_transfer);
5634  if (multi_app_transfer->directions().isValueSet(MultiAppTransfer::FROM_MULTIAPP))
5635  _from_multi_app_transfers.addObject(multi_app_transfer);
5636  if (multi_app_transfer->directions().isValueSet(MultiAppTransfer::BETWEEN_MULTIAPP))
5637  _between_multi_app_transfers.addObject(multi_app_transfer);
5638  }
5639  else
5640  _transfers.addObject(transfer);
5641 }
bool _reinit_displaced_elem
Whether to call DisplacedProblem::reinitElem when this->reinitElem is called.
void addObject(std::shared_ptr< T > object, THREAD_ID tid=0, bool recurse=true) override
Adds an object to the storage structure.
A MultiMooseEnum object to hold "execute_on" flags.
Definition: ExecFlagEnum.h:21
Factory & _factory
The Factory for building objects.
Definition: SubProblem.h:1047
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.
T & set(const std::string &name, bool quiet_mode=false)
Returns a writable reference to the named parameters.
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.
std::unique_ptr< T_DEST, T_DELETER > dynamic_pointer_cast(std::unique_ptr< T_SRC, T_DELETER > &src)
These are reworked from https://stackoverflow.com/a/11003103.
ExecuteMooseObjectWarehouse< Transfer > _from_multi_app_transfers
Transfers executed just after MultiApps to transfer data from them.
Base class for a system (of equations)
Definition: SystemBase.h:84
virtual const std::string & name() const
Get the name of the class.
Definition: MooseBase.h:57
std::shared_ptr< MultiApp > getMultiApp(const std::string &multi_app_name) const
Get a MultiApp object by name.
ExecuteMooseObjectWarehouse< Transfer > _transfers
Normal Transfers.
ExecuteMooseObjectWarehouse< Transfer > _to_multi_app_transfers
Transfers executed just before MultiApps to transfer data to them.
virtual std::unique_ptr< Base > create()=0
std::shared_ptr< AuxiliarySystem > _aux
The auxiliary system.
bool isValueSet(const std::string &value) const
Methods for seeing if a value is set in the MultiMooseEnum.
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:78
Base class for all MultiAppTransfer objects.
const ExecFlagType EXEC_SAME_AS_MULTIAPP
Definition: Moose.C:49
std::shared_ptr< DisplacedProblem > _displaced_problem
const InputParameters & parameters() const
Get the parameters of the object.
ExecuteMooseObjectWarehouse< Transfer > _between_multi_app_transfers
Transfers executed just before MultiApps to transfer data between them.
Base class for all Transfer objects.
Definition: Transfer.h:36
bool isParamValid(const std::string &name) const
This method returns parameters that have been initialized in one fashion or another, i.e.

◆ 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 4265 of file FEProblemBase.C.

Referenced by MFEMProblem::addAuxKernel(), MFEMProblem::addBoundaryCondition(), MFEMProblem::addFESpace(), MFEMProblem::addFunctorMaterial(), MFEMProblem::addGridFunction(), MFEMProblem::addInitialCondition(), MFEMProblem::addKernel(), MFEMProblem::addMFEMPreconditioner(), MFEMProblem::addMFEMSolver(), FEProblemBase::addPostprocessor(), FEProblemBase::addReporter(), MFEMProblem::addSubMesh(), MFEMProblem::addTransfer(), and FEProblemBase::addVectorPostprocessor().

4268 {
4269  parallel_object_only();
4270 
4271  std::vector<std::shared_ptr<UserObject>> uos;
4272 
4273  // Add the _subproblem and _sys parameters depending on use_displaced_mesh
4275 
4276  for (const auto tid : make_range(libMesh::n_threads()))
4277  {
4278  // Create the UserObject
4279  std::shared_ptr<UserObject> user_object =
4280  _factory.create<UserObject>(user_object_name, name, parameters, tid);
4281  logAdd("UserObject", name, user_object_name, parameters);
4282  uos.push_back(user_object);
4283 
4284  if (tid != 0)
4285  user_object->setPrimaryThreadCopy(uos[0].get());
4286 
4287  // TODO: delete this line after apps have been updated to not call getUserObjects
4288  _all_user_objects.addObject(user_object, tid);
4289 
4290  theWarehouse().add(user_object);
4291 
4292  // Attempt to create all the possible UserObject types
4293  auto euo = std::dynamic_pointer_cast<ElementUserObject>(user_object);
4294  auto suo = std::dynamic_pointer_cast<SideUserObject>(user_object);
4295  auto isuo = std::dynamic_pointer_cast<InternalSideUserObject>(user_object);
4296  auto iuob = std::dynamic_pointer_cast<InterfaceUserObjectBase>(user_object);
4297  auto nuo = std::dynamic_pointer_cast<NodalUserObject>(user_object);
4298  auto duo = std::dynamic_pointer_cast<DomainUserObject>(user_object);
4299  auto guo = std::dynamic_pointer_cast<GeneralUserObject>(user_object);
4300  auto tguo = std::dynamic_pointer_cast<ThreadedGeneralUserObject>(user_object);
4301  auto muo = std::dynamic_pointer_cast<MortarUserObject>(user_object);
4302 
4303  // Account for displaced mesh use
4304  if (_displaced_problem && parameters.get<bool>("use_displaced_mesh"))
4305  {
4306  if (euo || nuo || duo)
4307  _reinit_displaced_elem = true;
4308  else if (suo || duo)
4309  // shouldn't we add isuo
4310  _reinit_displaced_face = true;
4311  else if (iuob || duo)
4313  }
4314 
4315  // These objects only require one thread
4316  if ((guo && !tguo) || muo)
4317  break;
4318  }
4319 
4320  // Add as a Functor if it is one. We usually need to add the user object from thread 0 as the
4321  // registered functor for all threads because when user objects are thread joined, generally only
4322  // the primary thread copy ends up with all the data
4323  for (const auto tid : make_range(libMesh::n_threads()))
4324  {
4325  const decltype(uos)::size_type uo_index = uos.front()->needThreadedCopy() ? tid : 0;
4326  if (const auto functor = dynamic_cast<Moose::FunctorBase<Real> *>(uos[uo_index].get()))
4327  {
4328  this->addFunctor(name, *functor, tid);
4329  if (_displaced_problem)
4330  _displaced_problem->addFunctor(name, *functor, tid);
4331  }
4332  }
4333 
4334  return uos;
4335 }
bool _reinit_displaced_elem
Whether to call DisplacedProblem::reinitElem when this->reinitElem is called.
void addObject(std::shared_ptr< T > object, THREAD_ID tid=0, bool recurse=true) override
Adds an object to the storage structure.
bool _reinit_displaced_neighbor
Whether to call DisplacedProblem::reinitNeighbor when this->reinitNeighbor is called.
Factory & _factory
The Factory for building objects.
Definition: SubProblem.h:1047
unsigned int n_threads()
Base class for implementing interface user objects.
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.
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...
Definition: TheWarehouse.C:116
void addFunctor(const std::string &name, const Moose::FunctorBase< T > &functor, const THREAD_ID tid)
add a functor to the problem functor container
Definition: SubProblem.h:1375
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.
std::unique_ptr< T_DEST, T_DELETER > dynamic_pointer_cast(std::unique_ptr< T_SRC, T_DELETER > &src)
These are reworked from https://stackoverflow.com/a/11003103.
Base class for user objects executed one or more sidesets, which may be on the outer boundary of the ...
This user object allows related evaluations on elements, boundaries, internal sides, interfaces in one single place.
Base class for creating new nodally-based mortar user objects.
virtual const std::string & name() const
Get the name of the class.
Definition: MooseBase.h:57
ExecuteMooseObjectWarehouse< UserObject > _all_user_objects
A user object that runs over all the nodes and does an aggregation step to compute a single value...
virtual std::unique_ptr< Base > create()=0
TheWarehouse & theWarehouse() const
Base class for user objects executed on all element sides internal to one or more blocks...
bool _reinit_displaced_face
Whether to call DisplacedProblem::reinitElemFace when this->reinitElemFace is called.
IntRange< T > make_range(T beg, T end)
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().
std::shared_ptr< DisplacedProblem > _displaced_problem
const InputParameters & parameters() const
Get the parameters of the object.
Base class for user-specific data.
Definition: UserObject.h:40
An instance of this object type has one copy per thread that runs on each thread. ...

◆ 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 MFEMProblem.

Definition at line 2827 of file FEProblemBase.C.

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

2830 {
2831  parallel_object_only();
2832 
2833  const auto order = Utility::string_to_enum<Order>(params.get<MooseEnum>("order"));
2834  const auto family = Utility::string_to_enum<FEFamily>(params.get<MooseEnum>("family"));
2835  const auto fe_type = FEType(order, family);
2836 
2837  const auto active_subdomains_vector =
2838  _mesh.getSubdomainIDs(params.get<std::vector<SubdomainName>>("block"));
2839  const std::set<SubdomainID> active_subdomains(active_subdomains_vector.begin(),
2840  active_subdomains_vector.end());
2841 
2842  if (duplicateVariableCheck(var_name, fe_type, /* is_aux = */ false, &active_subdomains))
2843  return;
2844 
2845  params.set<FEProblemBase *>("_fe_problem_base") = this;
2846  params.set<Moose::VarKindType>("_var_kind") = Moose::VarKindType::VAR_SOLVER;
2847  SolverSystemName sys_name = params.get<SolverSystemName>("solver_sys");
2848 
2849  const auto solver_system_number = solverSysNum(sys_name);
2850  logAdd("Variable", var_name, var_type, params);
2851  _solver_systems[solver_system_number]->addVariable(var_type, var_name, params);
2852  if (_displaced_problem)
2853  // MooseObjects need to be unique so change the name here
2854  _displaced_problem->addVariable(var_type, var_name, params, solver_system_number);
2855 
2856  _solver_var_to_sys_num[var_name] = solver_system_number;
2857 
2858  markFamilyPRefinement(params);
2859 }
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.
T & set(const std::string &name, bool quiet_mode=false)
Returns a writable reference to the named parameters.
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.
std::map< SolverVariableName, unsigned int > _solver_var_to_sys_num
Map connecting variable names with their respective solver systems.
std::vector< std::shared_ptr< SolverSystem > > _solver_systems
Combined container to base pointer of every solver system.
Specialization of SubProblem for solving nonlinear equations plus auxiliary equations.
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:1734
VarKindType
Framework-wide stuff.
Definition: MooseTypes.h:714
MooseMesh & _mesh
void markFamilyPRefinement(const InputParameters &params)
Mark a variable family for either disabling or enabling p-refinement with valid parameters of a varia...
Definition: SubProblem.C:1361
This is a "smart" enum class intended to replace many of the shortcomings in the C++ enum type It sho...
Definition: MooseEnum.h:33
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.
unsigned int solverSysNum(const SolverSystemName &solver_sys_name) const override
std::shared_ptr< DisplacedProblem > _displaced_problem

◆ addVectorPostprocessor()

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

Definition at line 4238 of file FEProblemBase.C.

Referenced by ExtraIDIntegralReporter::ExtraIDIntegralReporter().

4241 {
4242  // Check for name collision
4243  if (hasUserObject(name))
4244  mooseError("A UserObject with the name \"",
4245  name,
4246  "\" already exists. You may not add a VectorPostprocessor by the same name.");
4247 
4248  addUserObject(pp_name, name, parameters);
4249 }
bool hasUserObject(const std::string &name) const
Check if there if a user object of given name.
virtual const std::string & name() const
Get the name of the class.
Definition: MooseBase.h:57
virtual std::vector< std::shared_ptr< UserObject > > addUserObject(const std::string &user_object_name, const std::string &name, InputParameters &parameters)
void mooseError(Args &&... args) const
Emits an error prefixed with object name and type.
const InputParameters & parameters() const
Get the parameters of the object.

◆ 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 92 of file SubProblem.C.

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

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

◆ advanceMultiApps()

void FEProblemBase::advanceMultiApps ( ExecFlagType  type)
inlineinherited

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

Definition at line 1304 of file FEProblemBase.h.

1305  {
1306  mooseDeprecated("Deprecated method; use finishMultiAppStep and/or incrementMultiAppTStep "
1307  "depending on your purpose");
1309  }
void mooseDeprecated(Args &&... args) const
void finishMultiAppStep(ExecFlagType type, bool recurse_through_multiapp_levels=false)
Finish the MultiApp time step (endStep, postStep) associated with the ExecFlagType.
const std::string & type() const
Get the type of this class.
Definition: MooseBase.h:51

◆ 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 6576 of file FEProblemBase.C.

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

6577 {
6578  TIME_SECTION("advanceState", 5, "Advancing State");
6579 
6580  for (auto & sys : _solver_systems)
6581  sys->copyOldSolutions();
6582  _aux->copyOldSolutions();
6583 
6584  if (_displaced_problem)
6585  {
6586  for (const auto i : index_range(_solver_systems))
6587  _displaced_problem->solverSys(i).copyOldSolutions();
6588  _displaced_problem->auxSys().copyOldSolutions();
6589  }
6590 
6592 
6594 
6597 
6600 
6603 }
void shift()
Shift the material properties in time.
MaterialPropertyStorage & _bnd_material_props
std::vector< std::shared_ptr< SolverSystem > > _solver_systems
Combined container to base pointer of every solver system.
void copyValuesBack()
Copies current chain control data values into old values.
MooseApp & getMooseApp() const
Get the MooseApp this class is associated with.
Definition: MooseBase.h:45
ReporterData _reporter_data
std::shared_ptr< AuxiliarySystem > _aux
The auxiliary system.
void copyValuesBack()
At the end of a timestep this method is called to copy the values back in time in preparation for the...
Definition: ReporterData.C:17
ChainControlDataSystem & getChainControlDataSystem()
Gets the system that manages the ChainControls.
Definition: MooseApp.h:872
std::shared_ptr< DisplacedProblem > _displaced_problem
MaterialPropertyStorage & _neighbor_material_props
MaterialPropertyStorage & _material_props
auto index_range(const T &sizable)

◆ allowInvalidSolution()

bool FEProblemBase::allowInvalidSolution ( ) const
inlineinherited

Whether to accept / allow an invalid solution.

Definition at line 1963 of file FEProblemBase.h.

Referenced by FEProblemBase::acceptInvalidSolution().

1963 { return _allow_invalid_solution; }
const bool _allow_invalid_solution

◆ 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 6668 of file FEProblemBase.C.

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

6669 {
6671 }
MooseApp & _app
The MOOSE application this is associated with.
Definition: MooseBase.h:84
void allowOutput(bool state)
Ability to enable/disable output calls This is private, users should utilize FEProblemBase::allowOutp...
OutputWarehouse & getOutputWarehouse()
Get the OutputWarehouse objects.
Definition: MooseApp.C:2381

◆ allowOutput() [2/2]

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

Definition at line 3060 of file FEProblemBase.h.

3061 {
3062  _app.getOutputWarehouse().allowOutput<T>(state);
3063 }
MooseApp & _app
The MOOSE application this is associated with.
Definition: MooseBase.h:84
void allowOutput(bool state)
Ability to enable/disable output calls This is private, users should utilize FEProblemBase::allowOutp...
OutputWarehouse & getOutputWarehouse()
Get the OutputWarehouse objects.
Definition: MooseApp.C:2381

◆ areCoupled()

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

Definition at line 6122 of file FEProblemBase.C.

Referenced by NonlinearSystemBase::constraintJacobians().

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

◆ assembly() [1/2]

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

◆ assembly() [2/2]

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

Implements SubProblem.

Definition at line 3217 of file FEProblemBase.h.

3218 {
3219  mooseAssert(tid < _assembly.size(), "Assembly objects not initialized");
3220  mooseAssert(sys_num < _assembly[tid].size(),
3221  "System number larger than the assembly container size");
3222  return *_assembly[tid][sys_num];
3223 }
std::vector< std::vector< std::unique_ptr< Assembly > > > _assembly
The Assembly objects.

◆ automaticScaling() [1/4]

bool SubProblem::automaticScaling ( ) const
inherited

Automatic scaling getter.

Returns
A boolean representing whether we are performing automatic scaling

Definition at line 1156 of file SubProblem.C.

Referenced by FEProblemBase::automaticScaling(), and DisplacedProblem::DisplacedProblem().

1157 {
1158  // Currently going to assume that we are applying or not applying automatic scaling consistently
1159  // across nonlinear systems
1161 }
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.
bool automaticScaling() const
Getter for whether we are performing automatic scaling.
Definition: SystemBase.h:122

◆ automaticScaling() [2/4]

void SubProblem::automaticScaling
inherited

Automatic scaling setter.

Parameters
automatic_scalingA boolean representing whether we are performing automatic scaling

Definition at line 1149 of file SubProblem.C.

1150 {
1151  for (const auto nl_sys_num : make_range(numNonlinearSystems()))
1152  systemBaseNonlinear(nl_sys_num).automaticScaling(automatic_scaling);
1153 }
virtual std::size_t numNonlinearSystems() const override
bool automaticScaling() const
Getter for whether we are performing automatic scaling.
Definition: SystemBase.h:122
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.
IntRange< T > make_range(T beg, T end)

◆ automaticScaling() [3/4]

bool SubProblem::automaticScaling
inherited

Automatic scaling getter.

Returns
A boolean representing whether we are performing automatic scaling

Definition at line 1156 of file SubProblem.C.

1157 {
1158  // Currently going to assume that we are applying or not applying automatic scaling consistently
1159  // across nonlinear systems
1161 }
bool automaticScaling() const
Getter for whether we are performing automatic scaling.
Definition: SystemBase.h:122
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.

◆ automaticScaling() [4/4]

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 8955 of file FEProblemBase.C.

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

8956 {
8957  if (_displaced_problem)
8958  _displaced_problem->automaticScaling(automatic_scaling);
8959 
8960  SubProblem::automaticScaling(automatic_scaling);
8961 }
bool automaticScaling() const
Automatic scaling getter.
Definition: SubProblem.C:1156
std::shared_ptr< DisplacedProblem > _displaced_problem

◆ backupMultiApps()

void FEProblemBase::backupMultiApps ( ExecFlagType  type)
inherited

Backup the MultiApps associated with the ExecFlagType.

Definition at line 5495 of file FEProblemBase.C.

Referenced by FEProblemBase::initialSetup(), and FixedPointSolve::solve().

5496 {
5497  const auto & multi_apps = _multi_apps[type].getActiveObjects();
5498 
5499  if (multi_apps.size())
5500  {
5501  TIME_SECTION("backupMultiApps", 5, "Backing Up MultiApp");
5502 
5503  if (_verbose_multiapps)
5504  _console << COLOR_CYAN << "\nBacking Up MultiApps on " << type.name() << COLOR_DEFAULT
5505  << std::endl;
5506 
5507  for (const auto & multi_app : multi_apps)
5508  multi_app->backup();
5509 
5511 
5512  if (_verbose_multiapps)
5513  _console << COLOR_CYAN << "Finished Backing Up MultiApps on " << type.name() << "\n"
5514  << COLOR_DEFAULT << std::endl;
5515  }
5516 }
bool _parallel_barrier_messaging
Whether or not information about how many transfers have completed is printed.
const Parallel::Communicator & _communicator
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 libMesh::Parallel::Communicator &comm, bool messaging=true)
This function implements a parallel barrier function but writes progress to stdout.
Definition: MooseUtils.C:323
const std::string & type() const
Get the type of this class.
Definition: MooseBase.h:51
ExecuteMooseObjectWarehouse< MultiApp > _multi_apps
MultiApp Warehouse.
const ConsoleStream _console
An instance of helper class to write streams to the Console objects.
bool _verbose_multiapps
Whether or not to be verbose with multiapps.

◆ bumpAllQRuleOrder()

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

Definition at line 5979 of file FEProblemBase.C.

5980 {
5981  for (unsigned int tid = 0; tid < libMesh::n_threads(); ++tid)
5982  for (const auto i : index_range(_nl))
5983  _assembly[tid][i]->bumpAllQRuleOrder(order, block);
5984 
5985  if (_displaced_problem)
5986  _displaced_problem->bumpAllQRuleOrder(order, block);
5987 
5988  updateMaxQps();
5989 }
unsigned int n_threads()
void bumpAllQRuleOrder(libMesh::Order order, SubdomainID block)
std::vector< std::shared_ptr< NonlinearSystemBase > > _nl
The nonlinear systems.
std::vector< std::vector< std::unique_ptr< Assembly > > > _assembly
The Assembly objects.
std::shared_ptr< DisplacedProblem > _displaced_problem
auto index_range(const T &sizable)

◆ 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 5966 of file FEProblemBase.C.

5967 {
5968  for (unsigned int tid = 0; tid < libMesh::n_threads(); ++tid)
5969  for (const auto i : index_range(_nl))
5970  _assembly[tid][i]->bumpVolumeQRuleOrder(order, block);
5971 
5972  if (_displaced_problem)
5973  _displaced_problem->bumpVolumeQRuleOrder(order, block);
5974 
5975  updateMaxQps();
5976 }
unsigned int n_threads()
std::vector< std::shared_ptr< NonlinearSystemBase > > _nl
The nonlinear systems.
std::vector< std::vector< std::unique_ptr< Assembly > > > _assembly
The Assembly objects.
void bumpVolumeQRuleOrder(libMesh::Order order, SubdomainID block)
Increases the element/volume quadrature order for the specified mesh block if and only if the current...
std::shared_ptr< DisplacedProblem > _displaced_problem
auto index_range(const T &sizable)

◆ cacheJacobian()

void FEProblemBase::cacheJacobian ( const THREAD_ID  tid)
overridevirtualinherited

Reimplemented from SubProblem.

Definition at line 1967 of file FEProblemBase.C.

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

1968 {
1970  if (_displaced_problem)
1971  _displaced_problem->cacheJacobian(tid);
1972 }
std::shared_ptr< DisplacedProblem > _displaced_problem
virtual void cacheJacobian(const THREAD_ID tid)
Definition: SubProblem.C:1306

◆ cacheJacobianNeighbor()

void FEProblemBase::cacheJacobianNeighbor ( const THREAD_ID  tid)
overridevirtualinherited

Reimplemented from SubProblem.

Definition at line 1975 of file FEProblemBase.C.

Referenced by NonlinearSystemBase::constraintJacobians().

1976 {
1978  if (_displaced_problem)
1979  _displaced_problem->cacheJacobianNeighbor(tid);
1980 }
virtual void cacheJacobianNeighbor(const THREAD_ID tid)
Definition: SubProblem.C:1314
std::shared_ptr< DisplacedProblem > _displaced_problem

◆ cacheResidual()

void FEProblemBase::cacheResidual ( const THREAD_ID  tid)
overridevirtualinherited

Reimplemented from SubProblem.

Definition at line 1853 of file FEProblemBase.C.

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

1854 {
1856  if (_displaced_problem)
1857  _displaced_problem->cacheResidual(tid);
1858 }
virtual void cacheResidual(const THREAD_ID tid)
Definition: SubProblem.C:1285
std::shared_ptr< DisplacedProblem > _displaced_problem

◆ cacheResidualNeighbor()

void FEProblemBase::cacheResidualNeighbor ( const THREAD_ID  tid)
overridevirtualinherited

Reimplemented from SubProblem.

Definition at line 1861 of file FEProblemBase.C.

Referenced by NonlinearSystemBase::constraintResiduals().

1862 {
1864  if (_displaced_problem)
1865  _displaced_problem->cacheResidualNeighbor(tid);
1866 }
std::shared_ptr< DisplacedProblem > _displaced_problem
virtual void cacheResidualNeighbor(const THREAD_ID tid)
Definition: SubProblem.C:1292

◆ callMooseError()

void MooseBase::callMooseError ( std::string  msg,
const bool  with_prefix 
) const
inherited

Calls moose error with the message msg.

Will prefix the message with the subapp name if one exists.

If with_prefix, then add the prefix from errorPrefix() to the error.

Definition at line 33 of file MooseBase.C.

Referenced by InputParameters::callMooseErrorHelper(), MooseBaseErrorInterface::mooseDocumentedError(), MooseBaseErrorInterface::mooseError(), MooseBaseErrorInterface::mooseErrorNonPrefixed(), and MooseBaseParameterInterface::paramError().

34 {
36  const std::string prefix = _app.isUltimateMaster() ? "" : _app.name();
37  if (with_prefix)
38  msg = errorPrefix("error") + msg;
39  moose::internal::mooseErrorRaw(msg, prefix);
40 }
bool isUltimateMaster() const
Whether or not this app is the ultimate master app.
Definition: MooseApp.h:847
virtual const std::string & name() const
Get the name of the class.
Definition: MooseBase.h:57
std::string errorPrefix(const std::string &error_type) const
Definition: MooseBase.C:43
MooseApp & _app
The MOOSE application this is associated with.
Definition: MooseBase.h:84
void mooseErrorRaw(std::string msg, const std::string prefix="")
Definition: MooseError.C:53
void mooseConsole()
Send current output buffer to Console output objects.
OutputWarehouse & getOutputWarehouse()
Get the OutputWarehouse objects.
Definition: MooseApp.C:2381

◆ checkBlockMatProps()

void SubProblem::checkBlockMatProps ( )
virtualinherited

Checks block material properties integrity.

See also
FEProblemBase::checkProblemIntegrity

Definition at line 623 of file SubProblem.C.

Referenced by FEProblemBase::checkProblemIntegrity().

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

◆ checkBoundaryMatProps()

void SubProblem::checkBoundaryMatProps ( )
virtualinherited

Checks boundary material properties integrity.

See also
FEProblemBase::checkProblemIntegrity

Definition at line 665 of file SubProblem.C.

Referenced by FEProblemBase::checkProblemIntegrity().

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

◆ checkCoordinateSystems()

void FEProblemBase::checkCoordinateSystems ( )
protectedinherited

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

Definition at line 8584 of file FEProblemBase.C.

Referenced by FEProblemBase::checkProblemIntegrity().

8585 {
8587 }
MooseMesh & _mesh
void checkCoordinateSystems()
Performs a sanity check for every element in the mesh.
Definition: MooseMesh.C:4276

◆ 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 8459 of file FEProblemBase.C.

Referenced by FEProblemBase::checkProblemIntegrity().

8461 {
8462  for (const auto & it : materials_map)
8463  {
8465  std::set<std::string> block_depend_props, block_supplied_props;
8466 
8467  for (const auto & mat1 : it.second)
8468  {
8469  const std::set<std::string> & depend_props = mat1->getRequestedItems();
8470  block_depend_props.insert(depend_props.begin(), depend_props.end());
8471 
8472  auto & alldeps = mat1->getMatPropDependencies(); // includes requested stateful props
8473  for (auto & dep : alldeps)
8474  if (const auto name = _material_props.queryStatefulPropName(dep))
8475  block_depend_props.insert(*name);
8476 
8477  // See if any of the active materials supply this property
8478  for (const auto & mat2 : it.second)
8479  {
8480  const std::set<std::string> & supplied_props = mat2->MaterialBase::getSuppliedItems();
8481  block_supplied_props.insert(supplied_props.begin(), supplied_props.end());
8482  }
8483  }
8484 
8485  // Add zero material properties specific to this block and unrestricted
8486  block_supplied_props.insert(_zero_block_material_props[it.first].begin(),
8487  _zero_block_material_props[it.first].end());
8488 
8489  // Error check to make sure all properties consumed by materials are supplied on this block
8490  std::set<std::string> difference;
8491  std::set_difference(block_depend_props.begin(),
8492  block_depend_props.end(),
8493  block_supplied_props.begin(),
8494  block_supplied_props.end(),
8495  std::inserter(difference, difference.end()));
8496 
8497  if (!difference.empty())
8498  {
8499  std::ostringstream oss;
8500  oss << "One or more Material Properties were not supplied on block ";
8501  const std::string & subdomain_name = _mesh.getSubdomainName(it.first);
8502  if (subdomain_name.length() > 0)
8503  oss << subdomain_name << " (" << it.first << ")";
8504  else
8505  oss << it.first;
8506  oss << ":\n";
8507  for (const auto & name : difference)
8508  oss << name << "\n";
8509  mooseError(oss.str());
8510  }
8511  }
8512 
8513  // This loop checks that materials are not supplied by multiple Material objects
8514  for (const auto & it : materials_map)
8515  {
8516  const auto & materials = it.second;
8517  std::set<std::string> inner_supplied, outer_supplied;
8518 
8519  for (const auto & outer_mat : materials)
8520  {
8521  // Storage for properties for this material (outer) and all other materials (inner)
8522  outer_supplied = outer_mat->getSuppliedItems();
8523  inner_supplied.clear();
8524 
8525  // Property to material map for error reporting
8526  std::map<std::string, std::set<std::string>> prop_to_mat;
8527  for (const auto & name : outer_supplied)
8528  prop_to_mat[name].insert(outer_mat->name());
8529 
8530  for (const auto & inner_mat : materials)
8531  {
8532  if (outer_mat == inner_mat)
8533  continue;
8534 
8535  // Check whether these materials are an AD pair
8536  auto outer_mat_type = outer_mat->type();
8537  auto inner_mat_type = inner_mat->type();
8538  removeSubstring(outer_mat_type, "<RESIDUAL>");
8539  removeSubstring(outer_mat_type, "<JACOBIAN>");
8540  removeSubstring(inner_mat_type, "<RESIDUAL>");
8541  removeSubstring(inner_mat_type, "<JACOBIAN>");
8542  if (outer_mat_type == inner_mat_type && outer_mat_type != outer_mat->type() &&
8543  inner_mat_type != inner_mat->type())
8544  continue;
8545 
8546  inner_supplied.insert(inner_mat->getSuppliedItems().begin(),
8547  inner_mat->getSuppliedItems().end());
8548 
8549  for (const auto & inner_supplied_name : inner_supplied)
8550  prop_to_mat[inner_supplied_name].insert(inner_mat->name());
8551  }
8552 
8553  // Test that a property isn't supplied on multiple blocks
8554  std::set<std::string> intersection;
8555  std::set_intersection(outer_supplied.begin(),
8556  outer_supplied.end(),
8557  inner_supplied.begin(),
8558  inner_supplied.end(),
8559  std::inserter(intersection, intersection.end()));
8560 
8561  if (!intersection.empty())
8562  {
8563  std::ostringstream oss;
8564  oss << "The following material properties are declared on block " << it.first
8565  << " by multiple materials:\n";
8566  oss << ConsoleUtils::indent(2) << std::setw(30) << std::left << "Material Property"
8567  << "Material Objects\n";
8568  for (const auto & outer_name : intersection)
8569  {
8570  oss << ConsoleUtils::indent(2) << std::setw(30) << std::left << outer_name;
8571  for (const auto & inner_name : prop_to_mat[outer_name])
8572  oss << inner_name << " ";
8573  oss << '\n';
8574  }
8575 
8576  mooseError(oss.str());
8577  break;
8578  }
8579  }
8580  }
8581 }
std::string indent(unsigned int spaces)
Create empty string for indenting.
Definition: ConsoleUtils.C:41
virtual const std::string & name() const
Get the name of the class.
Definition: MooseBase.h:57
const std::string & getSubdomainName(SubdomainID subdomain_id) const
Return the name of a block given an id.
Definition: MooseMesh.C:1758
std::optional< std::string > queryStatefulPropName(const unsigned int id) const
MooseMesh & _mesh
void removeSubstring(std::string &main, const std::string &sub)
find, erase, length algorithm for removing a substring from a string
Definition: MooseUtils.C:1296
std::map< SubdomainID, std::set< MaterialPropertyName > > _zero_block_material_props
Set of properties returned as zero properties.
Definition: SubProblem.h:1058
void mooseError(Args &&... args) const
Emits an error prefixed with object name and type.
MaterialPropertyStorage & _material_props
for(PetscInt i=0;i< nvars;++i)

◆ checkDisplacementOrders()

void FEProblemBase::checkDisplacementOrders ( )
protectedinherited

Verify that SECOND order mesh uses SECOND order displacements.

Definition at line 8383 of file FEProblemBase.C.

Referenced by FEProblemBase::checkProblemIntegrity().

8384 {
8385  if (_displaced_problem)
8386  {
8387  bool mesh_has_second_order_elements = false;
8388  for (const auto & elem : as_range(_displaced_mesh->activeLocalElementsBegin(),
8390  {
8391  if (elem->default_order() == SECOND)
8392  {
8393  mesh_has_second_order_elements = true;
8394  break;
8395  }
8396  }
8397 
8398  // We checked our local elements, so take the max over all processors.
8399  _displaced_mesh->comm().max(mesh_has_second_order_elements);
8400 
8401  // If the Mesh has second order elements, make sure the
8402  // displacement variables are second-order.
8403  if (mesh_has_second_order_elements)
8404  {
8405  const std::vector<std::string> & displacement_variables =
8406  _displaced_problem->getDisplacementVarNames();
8407 
8408  for (const auto & var_name : displacement_variables)
8409  {
8410  MooseVariableFEBase & mv =
8411  _displaced_problem->getVariable(/*tid=*/0,
8412  var_name,
8415  if (mv.order() != SECOND)
8416  mooseError("Error: mesh has SECOND order elements, so all displacement variables must be "
8417  "SECOND order.");
8418  }
8419  }
8420  }
8421 }
const Parallel::Communicator & comm() const
This class provides an interface for common operations on field variables of both FE and FV types wit...
SECOND
SimpleRange< IndexType > as_range(const std::pair< IndexType, IndexType > &p)
MeshBase::element_iterator activeLocalElementsBegin()
Calls active_local_nodes_begin/end() on the underlying libMesh mesh object.
Definition: MooseMesh.C:3046
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
void mooseError(Args &&... args) const
Emits an error prefixed with object name and type.
std::shared_ptr< DisplacedProblem > _displaced_problem
const MeshBase::element_iterator activeLocalElementsEnd()
Definition: MooseMesh.C:3052
MooseMesh * _displaced_mesh

◆ checkDuplicatePostprocessorVariableNames()

void FEProblemBase::checkDuplicatePostprocessorVariableNames ( )
inherited

Definition at line 1468 of file FEProblemBase.C.

Referenced by FEProblemBase::checkProblemIntegrity().

1469 {
1470  for (const auto & pp : _reporter_data.getPostprocessorNames())
1471  if (hasScalarVariable(pp))
1472  mooseError("Postprocessor \"" + pp +
1473  "\" has the same name as a scalar variable in the system.");
1474 }
virtual bool hasScalarVariable(const std::string &var_name) const override
Returns a Boolean indicating whether any system contains a variable with the name provided...
ReporterData _reporter_data
void mooseError(Args &&... args) const
Emits an error prefixed with object name and type.
std::set< std::string > getPostprocessorNames() const
Return a list of all postprocessor names.
Definition: ReporterData.C:71

◆ 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 6404 of file FEProblemBase.C.

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

6405 {
6407  return;
6408 
6409  TIME_SECTION("checkExceptionAndStopSolve", 5);
6410 
6411  // See if any processor had an exception. If it did, get back the
6412  // processor that the exception occurred on.
6413  unsigned int processor_id;
6414 
6416 
6417  if (_has_exception)
6418  {
6420 
6423  {
6424  // Print the message
6425  if (_communicator.rank() == 0 && print_message)
6426  {
6427  _console << "\n" << _exception_message << "\n";
6428  if (isTransient())
6429  _console
6430  << "To recover, the solution will fail and then be re-attempted with a reduced time "
6431  "step.\n"
6432  << std::endl;
6433  }
6434 
6435  // Stop the solve -- this entails setting
6436  // SNESSetFunctionDomainError() or directly inserting NaNs in the
6437  // residual vector to let PETSc >= 3.6 return DIVERGED_NANORINF.
6438  if (_current_nl_sys)
6440 
6441  if (_current_linear_sys)
6443 
6444  // and close Aux system (we MUST do this here; see #11525)
6445  _aux->solution().close();
6446 
6447  // We've handled this exception, so we no longer have one.
6448  _has_exception = false;
6449 
6450  // Force the next non-linear convergence check to fail (and all further residual evaluation
6451  // to be skipped).
6453 
6454  // Repropagate the exception, so it can be caught at a higher level, typically
6455  // this is NonlinearSystem::computeResidual().
6457  }
6458  else
6459  mooseError("The following parallel-communicated exception was detected during " +
6460  Moose::stringify(_current_execute_on_flag) + " evaluation:\n" +
6462  "\nBecause this did not occur during residual evaluation, there"
6463  " is no way to handle this, so the solution is aborting.\n");
6464  }
6465 }
virtual void stopSolve(const ExecFlagType &exec_flag, const std::set< TagID > &vector_tags_to_close) override
Quit the current solve as soon as possible.
Definition: LinearSystem.C:301
bool _skip_exception_check
If or not skip &#39;exception and stop solve&#39;.
ExecFlagType _current_execute_on_flag
Current execute_on flag.
processor_id_type rank() const
bool _has_exception
Whether or not an exception has occurred.
const Parallel::Communicator & _communicator
NonlinearSystemBase * _current_nl_sys
The current nonlinear system that we are solving.
std::shared_ptr< AuxiliarySystem > _aux
The auxiliary system.
LinearSystem * _current_linear_sys
The current linear system that we are solving.
void maxloc(T &r, unsigned int &max_id) const
const ExecFlagType EXEC_LINEAR
Definition: Moose.C:29
std::string stringify(const T &t)
conversion to string
Definition: Conversion.h:64
std::string _exception_message
The error message to go with an exception.
void broadcast(T &data, const unsigned int root_id=0, const bool identical_sizes=false) const
const ExecFlagType EXEC_POSTCHECK
Definition: Moose.C:33
const ExecFlagType EXEC_NONLINEAR
Definition: Moose.C:31
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.
std::set< TagID > _fe_vector_tags
void mooseError(Args &&... args) const
Emits an error prefixed with object name and type.
const ConsoleStream _console
An instance of helper class to write streams to the Console objects.
virtual bool isTransient() const override
bool _fail_next_system_convergence_check
processor_id_type processor_id() const

◆ 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 197 of file FEProblemBase.h.

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

197 { 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.

◆ checkNonlocalCoupling()

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

Definition at line 1593 of file FEProblemBase.C.

Referenced by FEProblemBase::initialSetup().

1594 {
1595  TIME_SECTION("checkNonlocalCoupling", 5, "Checking Nonlocal Coupling");
1596 
1597  for (THREAD_ID tid = 0; tid < libMesh::n_threads(); tid++)
1598  for (auto & nl : _nl)
1599  {
1600  const auto & all_kernels = nl->getKernelWarehouse();
1601  const auto & kernels = all_kernels.getObjects(tid);
1602  for (const auto & kernel : kernels)
1603  {
1604  std::shared_ptr<NonlocalKernel> nonlocal_kernel =
1606  if (nonlocal_kernel)
1607  {
1610  _nonlocal_kernels.addObject(kernel, tid);
1611  }
1612  }
1613  const MooseObjectWarehouse<IntegratedBCBase> & all_integrated_bcs =
1614  nl->getIntegratedBCWarehouse();
1615  const auto & integrated_bcs = all_integrated_bcs.getObjects(tid);
1616  for (const auto & integrated_bc : integrated_bcs)
1617  {
1618  std::shared_ptr<NonlocalIntegratedBC> nonlocal_integrated_bc =
1620  if (nonlocal_integrated_bc)
1621  {
1624  _nonlocal_integrated_bcs.addObject(integrated_bc, tid);
1625  }
1626  }
1627  }
1628 }
unsigned int n_threads()
NonlocalIntegratedBC is used for solving integral terms in integro-differential equations.
bool _requires_nonlocal_coupling
nonlocal coupling requirement flag
std::unique_ptr< T_DEST, T_DELETER > dynamic_pointer_cast(std::unique_ptr< T_SRC, T_DELETER > &src)
These are reworked from https://stackoverflow.com/a/11003103.
bool _calculate_jacobian_in_uo
std::vector< std::shared_ptr< NonlinearSystemBase > > _nl
The nonlinear systems.
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...
NonlocalKernel is used for solving integral terms in integro-differential equations.
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 THREAD_ID
Definition: MooseTypes.h:209
MooseObjectWarehouse< IntegratedBCBase > _nonlocal_integrated_bcs
nonlocal integrated_bcs
MooseObjectWarehouse< KernelBase > _nonlocal_kernels
nonlocal kernels

◆ 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 or inactive nonlocal kernels or boundary conditions

Implements SubProblem.

Definition at line 9370 of file FEProblemBase.C.

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

9371 {
9373 }
bool _requires_nonlocal_coupling
nonlocal coupling requirement flag

◆ 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 8217 of file FEProblemBase.C.

Referenced by EigenProblem::checkProblemIntegrity().

8218 {
8219  TIME_SECTION("checkProblemIntegrity", 5);
8220 
8221  // Check for unsatisfied actions
8222  const std::set<SubdomainID> & mesh_subdomains = _mesh.meshSubdomains();
8223 
8224  // Check kernel coverage of subdomains (blocks) in the mesh
8227  {
8228  std::set<SubdomainID> blocks;
8231  blocks = mesh_subdomains;
8233  {
8234  blocks = mesh_subdomains;
8235  for (const auto & subdomain_name : _kernel_coverage_blocks)
8236  {
8237  const auto id = _mesh.getSubdomainID(subdomain_name);
8238  if (id == Moose::INVALID_BLOCK_ID)
8239  paramError("kernel_coverage_block_list",
8240  "Subdomain \"" + subdomain_name + "\" not found in mesh.");
8241  blocks.erase(id);
8242  }
8243  }
8245  for (const auto & subdomain_name : _kernel_coverage_blocks)
8246  {
8247  const auto id = _mesh.getSubdomainID(subdomain_name);
8248  if (id == Moose::INVALID_BLOCK_ID)
8249  paramError("kernel_coverage_block_list",
8250  "Subdomain \"" + subdomain_name + "\" not found in mesh.");
8251  blocks.insert(id);
8252  }
8253  if (!blocks.empty())
8254  for (auto & nl : _nl)
8255  nl->checkKernelCoverage(blocks);
8256  }
8257 
8258  // Check materials
8259  {
8260 #ifdef LIBMESH_ENABLE_AMR
8261  if ((_adaptivity.isOn() || _num_grid_steps) &&
8264  {
8265  _console << "Using EXPERIMENTAL Stateful Material Property projection with Adaptivity!\n"
8266  << std::flush;
8267  }
8268 #endif
8269 
8270  std::set<SubdomainID> local_mesh_subs(mesh_subdomains);
8271 
8274  {
8279  bool check_material_coverage = false;
8280  std::set<SubdomainID> ids = _all_materials.getActiveBlocks();
8281  for (const auto & id : ids)
8282  {
8283  local_mesh_subs.erase(id);
8284  check_material_coverage = true;
8285  }
8286 
8287  // did the user limit the subdomains to be checked?
8289  {
8290  for (const auto & subdomain_name : _material_coverage_blocks)
8291  {
8292  const auto id = _mesh.getSubdomainID(subdomain_name);
8293  if (id == Moose::INVALID_BLOCK_ID)
8294  paramError("material_coverage_block_list",
8295  "Subdomain \"" + subdomain_name + "\" not found in mesh.");
8296  local_mesh_subs.erase(id);
8297  }
8298  }
8300  {
8301  std::set<SubdomainID> blocks(local_mesh_subs);
8302  for (const auto & subdomain_name : _material_coverage_blocks)
8303  {
8304  const auto id = _mesh.getSubdomainID(subdomain_name);
8305  if (id == Moose::INVALID_BLOCK_ID)
8306  paramError("material_coverage_block_list",
8307  "Subdomain \"" + subdomain_name + "\" not found in mesh.");
8308  blocks.erase(id);
8309  }
8310  for (const auto id : blocks)
8311  local_mesh_subs.erase(id);
8312  }
8313 
8314  // also exclude mortar spaces from the material check
8315  auto && mortar_subdomain_ids = _mortar_data.getMortarSubdomainIDs();
8316  for (auto subdomain_id : mortar_subdomain_ids)
8317  local_mesh_subs.erase(subdomain_id);
8318 
8319  // Check Material Coverage
8320  if (check_material_coverage && !local_mesh_subs.empty())
8321  {
8322  std::stringstream extra_subdomain_ids;
8324  std::copy(local_mesh_subs.begin(),
8325  local_mesh_subs.end(),
8326  std::ostream_iterator<unsigned int>(extra_subdomain_ids, " "));
8328  std::vector<SubdomainID> local_mesh_subs_vec(local_mesh_subs.begin(),
8329  local_mesh_subs.end());
8330 
8331  mooseError("The following blocks from your input mesh do not contain an active material: " +
8332  extra_subdomain_ids.str() +
8333  "(names: " + Moose::stringify(_mesh.getSubdomainNames(local_mesh_subs_vec)) +
8334  ")\nWhen ANY mesh block contains a Material object, "
8335  "all blocks must contain a Material object.\n");
8336  }
8337  }
8338 
8339  // Check material properties on blocks and boundaries
8342 
8343  // Check that material properties exist when requested by other properties on a given block
8344  const auto & materials = _all_materials.getActiveObjects();
8345  for (const auto & material : materials)
8346  material->checkStatefulSanity();
8347 
8348  // auto mats_to_check = _materials.getActiveBlockObjects();
8349  // const auto & discrete_materials = _discrete_materials.getActiveBlockObjects();
8350  // for (const auto & map_it : discrete_materials)
8351  // for (const auto & container_element : map_it.second)
8352  // mats_to_check[map_it.first].push_back(container_element);
8355  }
8356 
8357  checkUserObjects();
8358 
8359  // Verify that we don't have any Element type/Coordinate Type conflicts
8361 
8362  // Coordinate transforms are only intended for use with MultiApps at this time. If you are not
8363  // using multiapps but still require these, contact a moose developer
8365  !hasMultiApps())
8366  mooseError("Coordinate transformation parameters, listed below, are only to be used in the "
8367  "context of application to application field transfers at this time. The mesh is "
8368  "not modified by these parameters within an application.\n"
8369  "You should likely use a 'TransformGenerator' in the [Mesh] block to achieve the "
8370  "desired mesh modification.\n\n",
8372 
8373  // If using displacements, verify that the order of the displacement
8374  // variables matches the order of the elements in the displaced
8375  // mesh.
8377 
8378  // Check for postprocessor names with same name as a scalar variable
8380 }
bool isUltimateMaster() const
Whether or not this app is the ultimate master app.
Definition: MooseApp.h:847
MaterialPropertyStorage & _bnd_material_props
void checkDependMaterialsHelper(const std::map< SubdomainID, std::vector< std::shared_ptr< MaterialBase >>> &materials_map)
Helper method for checking Material object dependency.
static InputParameters validParams()
Describes the parameters this object can take to setup transformations.
const std::map< SubdomainID, std::vector< std::shared_ptr< T > > > & getActiveBlockObjects(THREAD_ID tid=0) const
char ** blocks
std::vector< SubdomainName > _kernel_coverage_blocks
std::vector< SubdomainName > _material_coverage_blocks
unsigned int _num_grid_steps
Number of steps in a grid sequence.
bool isOn()
Is adaptivity on?
Definition: Adaptivity.h:179
const bool _skip_nl_system_check
const SubdomainID INVALID_BLOCK_ID
Definition: MooseTypes.C:20
virtual void checkBoundaryMatProps()
Checks boundary material properties integrity.
Definition: SubProblem.C:665
std::vector< std::shared_ptr< NonlinearSystemBase > > _nl
The nonlinear systems.
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...
const bool & _solve
Whether or not to actually solve the nonlinear system.
std::set< SubdomainID > getActiveBlocks(THREAD_ID tid=0) const
Return a set of active SubdomainsIDs.
bool hasScalingOrRotationTransformation() const
Returns true if the app has scaling and/or rotation transformation.
void checkUserObjects()
void checkDisplacementOrders()
Verify that SECOND order mesh uses SECOND order displacements.
MortarData _mortar_data
MooseMesh & _mesh
virtual void checkBlockMatProps()
Checks block material properties integrity.
Definition: SubProblem.C:623
Adaptivity _adaptivity
const std::set< SubdomainID > & getMortarSubdomainIDs() const
Returns the mortar covered subdomains.
Definition: MortarData.h:84
MooseApp & _app
The MOOSE application this is associated with.
Definition: MooseBase.h:84
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 ...
std::string stringify(const T &t)
conversion to string
Definition: Conversion.h:64
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:1764
MooseAppCoordTransform & coordTransform()
Definition: MooseMesh.h:1888
void checkDuplicatePostprocessorVariableNames()
const bool _material_dependency_check
Determines whether a check to verify material dependencies on every subdomain.
void mooseError(Args &&... args) const
Emits an error prefixed with object name and type.
CoverageCheckMode _material_coverage_check
Determines whether and which subdomains are to be checked to ensure that they have an active material...
MaterialPropertyStorage & _neighbor_material_props
const ConsoleStream _console
An instance of helper class to write streams to the Console objects.
bool hasMultiApps() const
Returns whether or not the current simulation has any multiapps.
CoverageCheckMode _kernel_coverage_check
Determines whether and which subdomains are to be checked to ensure that they have an active kernel...
MaterialPropertyStorage & _material_props
MaterialWarehouse _all_materials
const std::set< SubdomainID > & meshSubdomains() const
Returns a read-only reference to the set of subdomains currently present in the Mesh.
Definition: MooseMesh.C:3166
SubdomainID getSubdomainID(const SubdomainName &subdomain_name) const
Get the associated subdomain ID for the subdomain name.
Definition: MooseMesh.C:1728
void checkCoordinateSystems()
Verify that there are no element type/coordinate type conflicts.

◆ checkUserObjectJacobianRequirement()

void FEProblemBase::checkUserObjectJacobianRequirement ( THREAD_ID  tid)
inherited

Definition at line 1631 of file FEProblemBase.C.

Referenced by FEProblemBase::initialSetup().

1632 {
1633  std::set<const MooseVariableFEBase *> uo_jacobian_moose_vars;
1634  {
1635  std::vector<ShapeElementUserObject *> objs;
1636  theWarehouse()
1637  .query()
1639  .condition<AttribThread>(tid)
1640  .queryInto(objs);
1641 
1642  for (const auto & uo : objs)
1643  {
1644  _calculate_jacobian_in_uo = uo->computeJacobianFlag();
1645  const auto & mv_deps = uo->jacobianMooseVariables();
1646  uo_jacobian_moose_vars.insert(mv_deps.begin(), mv_deps.end());
1647  }
1648  }
1649  {
1650  std::vector<ShapeSideUserObject *> objs;
1651  theWarehouse()
1652  .query()
1654  .condition<AttribThread>(tid)
1655  .queryInto(objs);
1656  for (const auto & uo : objs)
1657  {
1658  _calculate_jacobian_in_uo = uo->computeJacobianFlag();
1659  const auto & mv_deps = uo->jacobianMooseVariables();
1660  uo_jacobian_moose_vars.insert(mv_deps.begin(), mv_deps.end());
1661  }
1662  }
1663 
1664  _uo_jacobian_moose_vars[tid].assign(uo_jacobian_moose_vars.begin(), uo_jacobian_moose_vars.end());
1665  std::sort(
1666  _uo_jacobian_moose_vars[tid].begin(), _uo_jacobian_moose_vars[tid].end(), sortMooseVariables);
1667 }
bool _calculate_jacobian_in_uo
TheWarehouse & theWarehouse() const
Query query()
query creates and returns an initialized a query object for querying objects from the warehouse...
Definition: TheWarehouse.h:466
std::vector< std::vector< const MooseVariableFEBase * > > _uo_jacobian_moose_vars
QueryCache & condition(Args &&... args)
Adds a new condition to the query.
Definition: TheWarehouse.h:284

◆ checkUserObjects()

void FEProblemBase::checkUserObjects ( )
protectedinherited

Definition at line 8424 of file FEProblemBase.C.

Referenced by FEProblemBase::checkProblemIntegrity().

8425 {
8426  // Check user_objects block coverage
8427  std::set<SubdomainID> mesh_subdomains = _mesh.meshSubdomains();
8428  std::set<SubdomainID> user_objects_blocks;
8429 
8430  // gather names of all user_objects that were defined in the input file
8431  // and the blocks that they are defined on
8432  std::set<std::string> names;
8433 
8434  std::vector<UserObject *> objects;
8436 
8437  for (const auto & obj : objects)
8438  names.insert(obj->name());
8439 
8440  // See if all referenced blocks are covered
8441  std::set<SubdomainID> difference;
8442  std::set_difference(user_objects_blocks.begin(),
8443  user_objects_blocks.end(),
8444  mesh_subdomains.begin(),
8445  mesh_subdomains.end(),
8446  std::inserter(difference, difference.end()));
8447 
8448  if (!difference.empty())
8449  {
8450  std::ostringstream oss;
8451  oss << "One or more UserObjects is referencing a nonexistent block:\n";
8452  for (const auto & id : difference)
8453  oss << id << "\n";
8454  mooseError(oss.str());
8455  }
8456 }
TheWarehouse & theWarehouse() const
MooseMesh & _mesh
Query query()
query creates and returns an initialized a query object for querying objects from the warehouse...
Definition: TheWarehouse.h:466
void mooseError(Args &&... args) const
Emits an error prefixed with object name and type.
QueryCache & condition(Args &&... args)
Adds a new condition to the query.
Definition: TheWarehouse.h:284
const std::set< SubdomainID > & meshSubdomains() const
Returns a read-only reference to the set of subdomains currently present in the Mesh.
Definition: MooseMesh.C:3166

◆ 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 5808 of file FEProblemBase.C.

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

5809 {
5811 
5812  if (_displaced_problem)
5813  _displaced_problem->clearActiveElementalMooseVariables(tid);
5814 }
virtual void clearActiveElementalMooseVariables(const THREAD_ID tid)
Clear the active elemental MooseVariableFieldBase.
Definition: SubProblem.C:466
std::shared_ptr< DisplacedProblem > _displaced_problem

◆ clearActiveFEVariableCoupleableMatrixTags()

void FEProblemBase::clearActiveFEVariableCoupleableMatrixTags ( const THREAD_ID  tid)
overridevirtualinherited

Reimplemented from SubProblem.

Definition at line 5817 of file FEProblemBase.C.

5818 {
5820 
5821  if (_displaced_problem)
5822  _displaced_problem->clearActiveFEVariableCoupleableMatrixTags(tid);
5823 }
virtual void clearActiveFEVariableCoupleableMatrixTags(const THREAD_ID tid)
Definition: SubProblem.C:384
std::shared_ptr< DisplacedProblem > _displaced_problem

◆ clearActiveFEVariableCoupleableVectorTags()

void FEProblemBase::clearActiveFEVariableCoupleableVectorTags ( const THREAD_ID  tid)
overridevirtualinherited

Reimplemented from SubProblem.

Definition at line 5826 of file FEProblemBase.C.

5827 {
5829 
5830  if (_displaced_problem)
5831  _displaced_problem->clearActiveFEVariableCoupleableVectorTags(tid);
5832 }
virtual void clearActiveFEVariableCoupleableVectorTags(const THREAD_ID tid)
Definition: SubProblem.C:378
std::shared_ptr< DisplacedProblem > _displaced_problem

◆ 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 5874 of file FEProblemBase.C.

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

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

◆ clearActiveScalarVariableCoupleableMatrixTags()

void FEProblemBase::clearActiveScalarVariableCoupleableMatrixTags ( const THREAD_ID  tid)
overridevirtualinherited

Reimplemented from SubProblem.

Definition at line 5835 of file FEProblemBase.C.

Referenced by AuxiliarySystem::clearScalarVariableCoupleableTags().

5836 {
5838 
5839  if (_displaced_problem)
5840  _displaced_problem->clearActiveScalarVariableCoupleableMatrixTags(tid);
5841 }
virtual void clearActiveScalarVariableCoupleableMatrixTags(const THREAD_ID tid)
Definition: SubProblem.C:425
std::shared_ptr< DisplacedProblem > _displaced_problem

◆ clearActiveScalarVariableCoupleableVectorTags()

void FEProblemBase::clearActiveScalarVariableCoupleableVectorTags ( const THREAD_ID  tid)
overridevirtualinherited

Reimplemented from SubProblem.

Definition at line 5844 of file FEProblemBase.C.

Referenced by AuxiliarySystem::clearScalarVariableCoupleableTags().

5845 {
5847 
5848  if (_displaced_problem)
5849  _displaced_problem->clearActiveScalarVariableCoupleableVectorTags(tid);
5850 }
virtual void clearActiveScalarVariableCoupleableVectorTags(const THREAD_ID tid)
Definition: SubProblem.C:419
std::shared_ptr< DisplacedProblem > _displaced_problem

◆ clearAllDofIndices()

void SubProblem::clearAllDofIndices ( )
inherited

Clear dof indices from variables in nl and aux systems.

Definition at line 1171 of file SubProblem.C.

Referenced by FEProblemBase::solve().

1172 {
1173  for (const auto nl_sys_num : make_range(numNonlinearSystems()))
1176 }
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.
virtual const SystemBase & systemBaseAuxiliary() const =0
Return the auxiliary system object as a base class reference.
IntRange< T > make_range(T beg, T end)
virtual std::size_t numNonlinearSystems() const =0
void clearAllDofIndices()
Clear all dof indices from moose variables.
Definition: SystemBase.C:1580

◆ clearCurrentJacobianMatrixTags()

void FEProblemBase::clearCurrentJacobianMatrixTags ( )
inlineinherited

Clear the current Jacobian matrix tag data structure ...

if someone creates it

Definition at line 2433 of file FEProblemBase.h.

Referenced by FEProblemBase::resetState().

2433 {}

◆ clearCurrentResidualVectorTags()

void FEProblemBase::clearCurrentResidualVectorTags ( )
inlineinherited

Clear the current residual vector tag data structure.

Definition at line 3254 of file FEProblemBase.h.

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

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

◆ 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 2453 of file FEProblemBase.C.

Referenced by NonlinearSystemBase::computeDiracContributions().

2454 {
2456 
2457  if (_displaced_problem)
2458  _displaced_problem->clearDiracInfo();
2459 }
void clearPoints()
Remove all of the current points and elements.
std::shared_ptr< DisplacedProblem > _displaced_problem
DiracKernelInfo _dirac_kernel_info
Definition: SubProblem.h:1049

◆ computeBounds()

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

Definition at line 7408 of file FEProblemBase.C.

Referenced by Moose::compute_bounds().

7411 {
7412  try
7413  {
7414  try
7415  {
7416  mooseAssert(_current_nl_sys && (sys.number() == _current_nl_sys->number()),
7417  "I expect these system numbers to be the same");
7418 
7419  if (!_current_nl_sys->hasVector("lower_bound") || !_current_nl_sys->hasVector("upper_bound"))
7420  return;
7421 
7422  TIME_SECTION("computeBounds", 1, "Computing Bounds");
7423 
7424  NumericVector<Number> & _lower = _current_nl_sys->getVector("lower_bound");
7425  NumericVector<Number> & _upper = _current_nl_sys->getVector("upper_bound");
7426  _lower.swap(lower);
7427  _upper.swap(upper);
7428  for (THREAD_ID tid = 0; tid < libMesh::n_threads(); tid++)
7430 
7431  _aux->residualSetup();
7433  _lower.swap(lower);
7434  _upper.swap(upper);
7435  }
7436  catch (...)
7437  {
7438  handleException("computeBounds");
7439  }
7440  }
7441  catch (MooseException & e)
7442  {
7443  mooseError("Irrecoverable exception: " + std::string(e.what()));
7444  }
7445  catch (...)
7446  {
7447  mooseError("Unexpected exception type");
7448  }
7449 }
virtual const char * what() const
Get out the error message.
unsigned int n_threads()
bool hasVector(const std::string &tag_name) const
Check if the named vector exists in the system.
Definition: SystemBase.C:907
unsigned int number() const
void handleException(const std::string &calling_method)
Handle exceptions.
NonlinearSystemBase * _current_nl_sys
The current nonlinear system that we are solving.
std::shared_ptr< AuxiliarySystem > _aux
The auxiliary system.
unsigned int number() const
Gets the number of this system.
Definition: SystemBase.C:1159
const ExecFlagType EXEC_LINEAR
Definition: Moose.C:29
Provides a way for users to bail out of the current solve.
virtual void swap(NumericVector< T > &v)
void mooseError(Args &&... args) const
Emits an error prefixed with object name and type.
virtual NumericVector< Number > & getVector(const std::string &name)
Get a raw NumericVector by name.
Definition: SystemBase.C:916
MaterialWarehouse _all_materials
void computeSystems(const ExecFlagType &type)
Do generic system computations.
unsigned int THREAD_ID
Definition: MooseTypes.h:209
virtual void residualSetup(THREAD_ID tid=0) const

◆ computeDamping()

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

Definition at line 7687 of file FEProblemBase.C.

Referenced by FEProblemBase::computePostCheck().

7689 {
7690  // Default to no damping
7691  Real damping = 1.0;
7692 
7693  if (_has_dampers)
7694  {
7695  TIME_SECTION("computeDamping", 1, "Computing Damping");
7696 
7697  // Save pointer to the current solution
7698  const NumericVector<Number> * _saved_current_solution = _current_nl_sys->currentSolution();
7699 
7701  // For now, do not re-compute auxiliary variables. Doing so allows a wild solution increment
7702  // to get to the material models, which may not be able to cope with drastically different
7703  // values. Once more complete dependency checking is in place, auxiliary variables (and
7704  // material properties) will be computed as needed by dampers.
7705  // _aux.compute();
7706  damping = _current_nl_sys->computeDamping(soln, update);
7707 
7708  // restore saved solution
7709  _current_nl_sys->setSolution(*_saved_current_solution);
7710  }
7711 
7712  return damping;
7713 }
Real computeDamping(const NumericVector< Number > &solution, const NumericVector< Number > &update)
Compute damping.
bool _has_dampers
Whether or not this system has any Dampers associated with it.
void setSolution(const NumericVector< Number > &soln)
Set the solution to a given vector.
Definition: SolverSystem.C:67
NonlinearSystemBase * _current_nl_sys
The current nonlinear system that we are solving.
virtual const NumericVector< Number > *const & currentSolution() const override final
The solution vector that is currently being operated on.
Definition: SolverSystem.h:117
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real

◆ computeIndicators()

void FEProblemBase::computeIndicators ( )
virtualinherited

Reimplemented in DumpObjectsProblem.

Definition at line 4457 of file FEProblemBase.C.

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

4458 {
4459  // Initialize indicator aux variable fields
4461  {
4462  TIME_SECTION("computeIndicators", 1, "Computing Indicators");
4463 
4464  // Internal side indicators may lead to creating a much larger sparsity pattern than dictated by
4465  // the actual finite element scheme (e.g. CFEM)
4466  const auto old_do_derivatives = ADReal::do_derivatives;
4467  ADReal::do_derivatives = false;
4468 
4469  std::vector<std::string> fields;
4470 
4471  // Indicator Fields
4472  const auto & indicators = _indicators.getActiveObjects();
4473  for (const auto & indicator : indicators)
4474  fields.push_back(indicator->name());
4475 
4476  // InternalSideIndicator Fields
4477  const auto & internal_indicators = _internal_side_indicators.getActiveObjects();
4478  for (const auto & internal_indicator : internal_indicators)
4479  fields.push_back(internal_indicator->name());
4480 
4481  _aux->zeroVariables(fields);
4482 
4483  // compute Indicators
4484  ComputeIndicatorThread cit(*this);
4486  _aux->solution().close();
4487  _aux->update();
4488 
4489  ComputeIndicatorThread finalize_cit(*this, true);
4491  _aux->solution().close();
4492  _aux->update();
4493 
4494  ADReal::do_derivatives = old_do_derivatives;
4495  }
4496 }
libMesh::ConstElemRange * getActiveLocalElementRange()
Return pointers to range objects for various types of ranges (local nodes, boundary elems...
Definition: MooseMesh.C:1235
MooseObjectWarehouse< InternalSideIndicatorBase > _internal_side_indicators
void parallel_reduce(const Range &range, Body &body, const Partitioner &)
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...
std::shared_ptr< AuxiliarySystem > _aux
The auxiliary system.
MooseMesh & _mesh
MooseObjectWarehouse< Indicator > _indicators
PetscErrorCode PetscInt const PetscInt fields[]
bool hasActiveObjects(THREAD_ID tid=0) const

◆ computeIndicatorsAndMarkers()

void FEProblemBase::computeIndicatorsAndMarkers ( )
virtualinherited

Definition at line 4450 of file FEProblemBase.C.

4451 {
4453  computeMarkers();
4454 }
virtual void computeMarkers()
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).

Definition at line 7243 of file FEProblemBase.C.

Referenced by FEProblemBase::computeJacobianSys().

7246 {
7247  setCurrentNonlinearSystem(nl_sys_num);
7248 
7249  _fe_matrix_tags.clear();
7250 
7251  auto & tags = getMatrixTags();
7252  for (auto & tag : tags)
7253  _fe_matrix_tags.insert(tag.second);
7254 
7255  computeJacobianInternal(soln, jacobian, _fe_matrix_tags);
7256 }
void setCurrentNonlinearSystem(const unsigned int nl_sys_num)
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
std::set< TagID > _fe_matrix_tags

◆ 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 7396 of file FEProblemBase.C.

7400 {
7401  JacobianBlock jac_block(precond_system, jacobian, ivar, jvar);
7402  std::vector<JacobianBlock *> blocks = {&jac_block};
7403  mooseAssert(_current_nl_sys, "This should be non-null");
7405 }
Helper class for holding the preconditioning blocks to fill.
char ** blocks
virtual void computeJacobianBlocks(std::vector< JacobianBlock *> &blocks, const unsigned int nl_sys_num)
Computes several Jacobian blocks simultaneously, summing their contributions into smaller preconditio...
NonlinearSystemBase * _current_nl_sys
The current nonlinear system that we are solving.
unsigned int number() const
Gets the number of this system.
Definition: SystemBase.C:1159

◆ 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 7376 of file FEProblemBase.C.

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

7378 {
7379  TIME_SECTION("computeTransientImplicitJacobian", 2);
7380  setCurrentNonlinearSystem(nl_sys_num);
7381 
7382  if (_displaced_problem)
7383  {
7385  _displaced_problem->updateMesh();
7386  }
7387 
7389 
7393 }
void computeJacobianBlocks(std::vector< JacobianBlock *> &blocks)
Computes several Jacobian blocks simultaneously, summing their contributions into smaller preconditio...
char ** blocks
bool _currently_computing_jacobian
Flag to determine whether the problem is currently computing Jacobian.
Definition: SubProblem.h:1096
NonlinearSystemBase * _current_nl_sys
The current nonlinear system that we are solving.
void setCurrentNonlinearSystem(const unsigned int nl_sys_num)
const ExecFlagType EXEC_PRE_DISPLACE
Definition: Moose.C:48
const ExecFlagType EXEC_NONLINEAR
Definition: Moose.C:31
std::shared_ptr< DisplacedProblem > _displaced_problem
void computeSystems(const ExecFlagType &type)
Do generic system computations.

◆ 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 7259 of file FEProblemBase.C.

Referenced by FEProblemBase::computeJacobian().

7262 {
7263  TIME_SECTION("computeJacobianInternal", 1);
7264 
7266 
7268 
7269  computeJacobianTags(tags);
7270 
7272 }
TagID systemMatrixTag() const override
Return the Matrix Tag ID for System.
void setSolution(const NumericVector< Number > &soln)
Set the solution to a given vector.
Definition: SolverSystem.C:67
virtual void associateMatrixToTag(libMesh::SparseMatrix< Number > &matrix, TagID tag)
Associate a matrix to a tag.
Definition: SystemBase.C:1059
virtual void disassociateMatrixFromTag(libMesh::SparseMatrix< Number > &matrix, TagID tag)
Disassociate a matrix from a tag.
Definition: SystemBase.C:1071
NonlinearSystemBase * _current_nl_sys
The current nonlinear system that we are solving.
virtual void computeJacobianTags(const std::set< TagID > &tags)
Form multiple matrices, and each is associated with a tag.

◆ 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 7221 of file FEProblemBase.C.

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

7224 {
7225  computeJacobian(soln, jacobian, sys.number());
7226 }
unsigned int number() const
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).

◆ 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 7229 of file FEProblemBase.C.

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

7232 {
7234 
7235  _current_nl_sys->associateMatrixToTag(jacobian, tag);
7236 
7237  computeJacobianTags({tag});
7238 
7240 }
void setSolution(const NumericVector< Number > &soln)
Set the solution to a given vector.
Definition: SolverSystem.C:67
virtual void associateMatrixToTag(libMesh::SparseMatrix< Number > &matrix, TagID tag)
Associate a matrix to a tag.
Definition: SystemBase.C:1059
virtual void disassociateMatrixFromTag(libMesh::SparseMatrix< Number > &matrix, TagID tag)
Disassociate a matrix from a tag.
Definition: SystemBase.C:1071
NonlinearSystemBase * _current_nl_sys
The current nonlinear system that we are solving.
virtual void computeJacobianTags(const std::set< TagID > &tags)
Form multiple matrices, and each is associated with a tag.

◆ computeJacobianTags()

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

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

Definition at line 7275 of file FEProblemBase.C.

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

7276 {
7277  try
7278  {
7279  try
7280  {
7281  if (!_has_jacobian || !_const_jacobian)
7282  {
7283  TIME_SECTION("computeJacobianTags", 5, "Computing Jacobian");
7284 
7285  for (auto tag : tags)
7286  if (_current_nl_sys->hasMatrix(tag))
7287  {
7288  auto & matrix = _current_nl_sys->getMatrix(tag);
7291  else
7292  matrix.zero();
7293  if (haveADObjects() && !assembly(0, _current_nl_sys->number()).hasStaticCondensation())
7294  // PETSc algorithms require diagonal allocations regardless of whether there is
7295  // non-zero diagonal dependence. With global AD indexing we only add non-zero
7296  // dependence, so PETSc will scream at us unless we artificially add the diagonals.
7297  for (auto index : make_range(matrix.row_start(), matrix.row_stop()))
7298  matrix.add(index, index, 0);
7299  }
7300 
7301  _aux->zeroVariablesForJacobian();
7302 
7303  unsigned int n_threads = libMesh::n_threads();
7304 
7305  // Random interface objects
7306  for (const auto & it : _random_data_objects)
7307  it.second->updateSeeds(EXEC_NONLINEAR);
7308 
7311  if (_displaced_problem)
7312  _displaced_problem->setCurrentlyComputingJacobian(true);
7313 
7316 
7317  for (unsigned int tid = 0; tid < n_threads; tid++)
7318  reinitScalars(tid);
7319 
7321 
7322  _aux->jacobianSetup();
7323 
7324  if (_displaced_problem)
7325  {
7327  _displaced_problem->updateMesh();
7328  }
7329 
7330  for (unsigned int tid = 0; tid < n_threads; tid++)
7331  {
7334  }
7335 
7337 
7339 
7341 
7343 
7345 
7347 
7348  // For explicit Euler calculations for example we often compute the Jacobian one time and
7349  // then re-use it over and over. If we're performing automatic scaling, we don't want to
7350  // use that kernel, diagonal-block only Jacobian for our actual matrix when performing
7351  // solves!
7353  _has_jacobian = true;
7354  }
7355  }
7356  catch (...)
7357  {
7358  handleException("computeJacobianTags");
7359  }
7360  }
7361  catch (const MooseException &)
7362  {
7363  // The buck stops here, we have already handled the exception by
7364  // calling the system's stopSolve() method, it is now up to PETSc to return a
7365  // "diverged" reason during the next solve.
7366  }
7367  catch (...)
7368  {
7369  mooseError("Unexpected exception type");
7370  }
7371 
7372  resetState();
7373 }
virtual void restore_original_nonzero_pattern()
unsigned int n_threads()
ExecFlagType _current_execute_on_flag
Current execute_on flag.
bool _has_jacobian
Indicates if the Jacobian was computed.
bool _currently_computing_jacobian
Flag to determine whether the problem is currently computing Jacobian.
Definition: SubProblem.h:1096
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
bool computingScalingJacobian() const
Whether we are computing an initial Jacobian for automatic variable scaling.
Definition: SystemBase.C:1519
virtual bool hasMatrix(TagID tag) const
Check if the tagged matrix exists in the system.
Definition: SystemBase.h:351
virtual Assembly & assembly(const THREAD_ID tid, const unsigned int sys_num) override
virtual void resetState()
Reset state of this object in preparation for the next evaluation.
void jacobianSetup()
Calls the jacobianSetup function for each of the output objects.
virtual void jacobianSetup(THREAD_ID tid=0) const
virtual void computeUserObjects(const ExecFlagType &type, const Moose::AuxGroup &group)
Call compute methods on UserObjects.
void handleException(const std::string &calling_method)
Handle exceptions.
NonlinearSystemBase * _current_nl_sys
The current nonlinear system that we are solving.
void computeJacobianTags(const std::set< TagID > &tags)
Computes multiple (tag associated) Jacobian matricese.
std::shared_ptr< AuxiliarySystem > _aux
The auxiliary system.
std::map< std::string, std::unique_ptr< RandomData > > _random_data_objects
A map of objects that consume random numbers.
MooseApp & _app
The MOOSE application this is associated with.
Definition: MooseBase.h:84
unsigned int number() const
Gets the number of this system.
Definition: SystemBase.C:1159
bool haveADObjects() const
Method for reading wehther we have any ad objects.
Definition: SubProblem.h:771
virtual void jacobianSetup(THREAD_ID tid=0) const
const ExecFlagType EXEC_PRE_DISPLACE
Definition: Moose.C:48
const ExecFlagType EXEC_NONLINEAR
Definition: Moose.C:31
Provides a way for users to bail out of the current solve.
const bool _restore_original_nonzero_pattern
Whether we should restore the original nonzero pattern for every Jacobian evaluation.
virtual libMesh::SparseMatrix< Number > & getMatrix(TagID tag)
Get a raw SparseMatrix.
Definition: SystemBase.C:1007
void executeControls(const ExecFlagType &exec_type)
Performs setup and execute calls for Control objects.
IntRange< T > make_range(T beg, T end)
void mooseError(Args &&... args) const
Emits an error prefixed with object name and type.
std::shared_ptr< DisplacedProblem > _displaced_problem
MooseObjectWarehouse< Function > _functions
functions
bool execMultiApps(ExecFlagType type, bool auto_advance=true)
Execute the MultiApps associated with the ExecFlagType.
bool _const_jacobian
true if the Jacobian is constant
bool _safe_access_tagged_matrices
Is it safe to retrieve data from tagged matrices.
Definition: SubProblem.h:1108
MaterialWarehouse _all_materials
OutputWarehouse & getOutputWarehouse()
Get the OutputWarehouse objects.
Definition: MooseApp.C:2381
void computeSystems(const ExecFlagType &type)
Do generic system computations.
void execTransfers(ExecFlagType type)
Execute the Transfers associated with the ExecFlagType.

◆ 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 7452 of file FEProblemBase.C.

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

7456 {
7457  TIME_SECTION("computeLinearSystemSys", 5);
7458 
7460 
7463 
7464  // We are using the residual tag system for right hand sides so we fetch everything
7465  const auto & vector_tags = getVectorTags(Moose::VECTOR_TAG_RESIDUAL);
7466 
7467  // We filter out tags which do not have associated vectors in the current
7468  // system. This is essential to be able to use system-dependent vector tags.
7471 
7475  compute_gradients);
7476 
7481  // We reset the tags to the default containers for further operations
7486 }
TagID rightHandSideVectorTag() const
Definition: LinearSystem.h:114
virtual TagID systemMatrixTag() const override
Return the Matrix Tag ID for System.
Definition: LinearSystem.h:115
virtual void associateVectorToTag(NumericVector< Number > &vec, TagID tag)
Associate a vector for a given tag.
Definition: SystemBase.C:964
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:289
virtual void associateMatrixToTag(libMesh::SparseMatrix< Number > &matrix, TagID tag)
Associate a matrix to a tag.
Definition: SystemBase.C:1059
SparseMatrix< Number > & getSystemMatrix()
Fetching the system matrix from the libmesh system.
Definition: LinearSystem.h:126
std::set< TagID > _linear_matrix_tags
Temporary storage for filtered matrix tags for linear systems.
virtual void disassociateMatrixFromTag(libMesh::SparseMatrix< Number > &matrix, TagID tag)
Disassociate a matrix from a tag.
Definition: SystemBase.C:1071
virtual const NumericVector< Number > *const & currentSolution() const override final
The solution vector that is currently being operated on.
Definition: SolverSystem.h:117
std::vector< VectorTag > getVectorTags(const std::set< TagID > &tag_ids) const
Definition: SubProblem.C:172
virtual void disassociateVectorFromTag(NumericVector< Number > &vec, TagID tag)
Disassociate a given vector from a given tag.
LinearSystem * _current_linear_sys
The current linear system that we are solving.
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
NumericVector< Number > & getRightHandSideVector()
Fetching the right hand side vector from the libmesh system.
Definition: LinearSystem.h:119
void setCurrentLinearSystem(unsigned int sys_num)
Set the current linear system pointer.
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:300
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
const std::string & name() const
std::set< TagID > _linear_vector_tags
Temporary storage for filtered vector tags for linear systems.

◆ 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 7489 of file FEProblemBase.C.

Referenced by FEProblemBase::computeLinearSystemSys().

7493 {
7494  TIME_SECTION("computeLinearSystemTags", 5, "Computing Linear System");
7495 
7497 
7498  for (auto tag : matrix_tags)
7499  {
7500  auto & matrix = _current_linear_sys->getMatrix(tag);
7501  matrix.zero();
7502  }
7503 
7504  unsigned int n_threads = libMesh::n_threads();
7505 
7507 
7508  // Random interface objects
7509  for (const auto & it : _random_data_objects)
7510  it.second->updateSeeds(EXEC_NONLINEAR);
7511 
7514 
7516 
7517  _aux->jacobianSetup();
7518 
7519  for (THREAD_ID tid = 0; tid < n_threads; tid++)
7520  {
7522  }
7523 
7524  try
7525  {
7527  }
7528  catch (MooseException & e)
7529  {
7530  _console << "\nA MooseException was raised during Auxiliary variable computation.\n"
7531  << "The next solve will fail, the timestep will be reduced, and we will try again.\n"
7532  << std::endl;
7533 
7534  // We know the next solve is going to fail, so there's no point in
7535  // computing anything else after this. Plus, using incompletely
7536  // computed AuxVariables in subsequent calculations could lead to
7537  // other errors or unhandled exceptions being thrown.
7538  return;
7539  }
7540 
7543 
7545 
7546  _current_linear_sys->computeLinearSystemTags(vector_tags, matrix_tags, compute_gradients);
7547 
7548  // Reset execution flag as after this point we are no longer on LINEAR
7550 
7551  // These are the relevant parts of resetState()
7554 }
unsigned int n_threads()
ExecFlagType _current_execute_on_flag
Current execute_on flag.
const ExecFlagType EXEC_NONE
Definition: Moose.C:27
void setSolution(const NumericVector< Number > &soln)
Set the solution to a given vector.
Definition: SolverSystem.C:67
void jacobianSetup()
Calls the jacobianSetup function for each of the output objects.
virtual void computeUserObjects(const ExecFlagType &type, const Moose::AuxGroup &group)
Call compute methods on UserObjects.
virtual void zero()=0
bool _safe_access_tagged_vectors
Is it safe to retrieve data from tagged vectors.
Definition: SubProblem.h:1111
std::shared_ptr< AuxiliarySystem > _aux
The auxiliary system.
LinearSystem * _current_linear_sys
The current linear system that we are solving.
std::map< std::string, std::unique_ptr< RandomData > > _random_data_objects
A map of objects that consume random numbers.
MooseApp & _app
The MOOSE application this is associated with.
Definition: MooseBase.h:84
virtual void jacobianSetup(THREAD_ID tid=0) const
const ExecFlagType EXEC_NONLINEAR
Definition: Moose.C:31
Provides a way for users to bail out of the current solve.
virtual libMesh::SparseMatrix< Number > & getMatrix(TagID tag)
Get a raw SparseMatrix.
Definition: SystemBase.C:1007
void executeControls(const ExecFlagType &exec_type)
Performs setup and execute calls for Control objects.
MooseObjectWarehouse< Function > _functions
functions
const ConsoleStream _console
An instance of helper class to write streams to the Console objects.
bool execMultiApps(ExecFlagType type, bool auto_advance=true)
Execute the MultiApps associated with the ExecFlagType.
bool _safe_access_tagged_matrices
Is it safe to retrieve data from tagged matrices.
Definition: SubProblem.h:1108
OutputWarehouse & getOutputWarehouse()
Get the OutputWarehouse objects.
Definition: MooseApp.C:2381
void computeSystems(const ExecFlagType &type)
Do generic system computations.
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.
Definition: LinearSystem.C:116
void execTransfers(ExecFlagType type)
Execute the Transfers associated with the ExecFlagType.
unsigned int THREAD_ID
Definition: MooseTypes.h:209

◆ computeMarkers()

void FEProblemBase::computeMarkers ( )
virtualinherited

Reimplemented in DumpObjectsProblem.

Definition at line 4499 of file FEProblemBase.C.

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

4500 {
4501  if (_markers.hasActiveObjects())
4502  {
4503  TIME_SECTION("computeMarkers", 1, "Computing Markers");
4504 
4505  std::vector<std::string> fields;
4506 
4507  // Marker Fields
4508  const auto & markers = _markers.getActiveObjects();
4509  for (const auto & marker : markers)
4510  fields.push_back(marker->name());
4511 
4512  _aux->zeroVariables(fields);
4513 
4515 
4516  for (THREAD_ID tid = 0; tid < libMesh::n_threads(); ++tid)
4517  {
4518  const auto & markers = _markers.getActiveObjects(tid);
4519  for (const auto & marker : markers)
4520  marker->markerSetup();
4521  }
4522 
4523  ComputeMarkerThread cmt(*this);
4525 
4526  _aux->solution().close();
4527  _aux->update();
4528  }
4529 }
libMesh::ConstElemRange * getActiveLocalElementRange()
Return pointers to range objects for various types of ranges (local nodes, boundary elems...
Definition: MooseMesh.C:1235
unsigned int n_threads()
void parallel_reduce(const Range &range, Body &body, const Partitioner &)
void updateErrorVectors()
Update the ErrorVectors that have been requested through calls to getErrorVector().
Definition: Adaptivity.C:372
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...
std::shared_ptr< AuxiliarySystem > _aux
The auxiliary system.
MooseMesh & _mesh
Adaptivity _adaptivity
PetscErrorCode PetscInt const PetscInt fields[]
bool hasActiveObjects(THREAD_ID tid=0) const
MooseObjectWarehouse< Marker > _markers
unsigned int THREAD_ID
Definition: MooseTypes.h:209

◆ computeMultiAppsDT()

Real FEProblemBase::computeMultiAppsDT ( ExecFlagType  type)
inherited

Find the smallest timestep over all MultiApps.

Definition at line 5547 of file FEProblemBase.C.

Referenced by TransientBase::constrainDTFromMultiApp().

5548 {
5549  const auto & multi_apps = _transient_multi_apps[type].getActiveObjects();
5550 
5551  Real smallest_dt = std::numeric_limits<Real>::max();
5552 
5553  for (const auto & multi_app : multi_apps)
5554  smallest_dt = std::min(smallest_dt, multi_app->computeDT());
5555 
5556  return smallest_dt;
5557 }
ExecuteMooseObjectWarehouse< TransientMultiApp > _transient_multi_apps
Storage for TransientMultiApps (only needed for calling &#39;computeDT&#39;)
auto max(const L &left, const R &right)
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...
const std::string & type() const
Get the type of this class.
Definition: MooseBase.h:51
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
auto min(const L &left, const R &right)

◆ computeNearNullSpace()

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

Definition at line 7557 of file FEProblemBase.C.

Referenced by Moose::compute_nearnullspace().

7559 {
7560  mooseAssert(_current_nl_sys && (sys.number() == _current_nl_sys->number()),
7561  "I expect these system numbers to be the same");
7562 
7563  sp.clear();
7564  for (unsigned int i = 0; i < subspaceDim("NearNullSpace"); ++i)
7565  {
7566  std::stringstream postfix;
7567  postfix << "_" << i;
7568  std::string modename = "NearNullSpace" + postfix.str();
7569  sp.push_back(&_current_nl_sys->getVector(modename));
7570  }
7571 }
unsigned int subspaceDim(const std::string &prefix) const
Dimension of the subspace spanned by vectors with a given prefix.
unsigned int number() const
NonlinearSystemBase * _current_nl_sys
The current nonlinear system that we are solving.
unsigned int number() const
Gets the number of this system.
Definition: SystemBase.C:1159
virtual NumericVector< Number > & getVector(const std::string &name)
Get a raw NumericVector by name.
Definition: SystemBase.C:916

◆ computeNullSpace()

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

Definition at line 7574 of file FEProblemBase.C.

Referenced by Moose::compute_nullspace().

7576 {
7577  mooseAssert(_current_nl_sys && (sys.number() == _current_nl_sys->number()),
7578  "I expect these system numbers to be the same");
7579  sp.clear();
7580  for (unsigned int i = 0; i < subspaceDim("NullSpace"); ++i)
7581  {
7582  std::stringstream postfix;
7583  postfix << "_" << i;
7584  sp.push_back(&_current_nl_sys->getVector("NullSpace" + postfix.str()));
7585  }
7586 }
unsigned int subspaceDim(const std::string &prefix) const
Dimension of the subspace spanned by vectors with a given prefix.
unsigned int number() const
NonlinearSystemBase * _current_nl_sys
The current nonlinear system that we are solving.
unsigned int number() const
Gets the number of this system.
Definition: SystemBase.C:1159
virtual NumericVector< Number > & getVector(const std::string &name)
Get a raw NumericVector by name.
Definition: SystemBase.C:916

◆ 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 7604 of file FEProblemBase.C.

Referenced by Moose::compute_postcheck().

7610 {
7611  mooseAssert(_current_nl_sys && (sys.number() == _current_nl_sys->number()),
7612  "I expect these system numbers to be the same");
7613 
7614  // This function replaces the old PetscSupport::dampedCheck() function.
7615  //
7616  // 1.) Recreate code in PetscSupport::dampedCheck() for constructing
7617  // ghosted "soln" and "update" vectors.
7618  // 2.) Call FEProblemBase::computeDamping() with these ghost vectors.
7619  // 3.) Recreate the code in PetscSupport::dampedCheck() to actually update
7620  // the solution vector based on the damping, and set the "changed" flags
7621  // appropriately.
7622 
7623  TIME_SECTION("computePostCheck", 2, "Computing Post Check");
7624 
7626 
7627  // MOOSE's FEProblemBase doesn't update the solution during the
7628  // postcheck, but FEProblemBase-derived classes might.
7630  {
7631  // We need ghosted versions of new_soln and search_direction (the
7632  // ones we get from libmesh/PETSc are PARALLEL vectors. To make
7633  // our lives simpler, we use the same ghosting pattern as the
7634  // system's current_local_solution to create new ghosted vectors.
7635 
7636  // Construct zeroed-out clones with the same ghosted dofs as the
7637  // System's current_local_solution.
7638  std::unique_ptr<NumericVector<Number>> ghosted_solution =
7639  sys.current_local_solution->zero_clone(),
7640  ghosted_search_direction =
7641  sys.current_local_solution->zero_clone();
7642 
7643  // Copy values from input vectors into clones with ghosted values.
7644  *ghosted_solution = new_soln;
7645  *ghosted_search_direction = search_direction;
7646 
7647  if (_has_dampers)
7648  {
7649  // Compute the damping coefficient using the ghosted vectors
7650  Real damping = computeDamping(*ghosted_solution, *ghosted_search_direction);
7651 
7652  // If some non-trivial damping was computed, update the new_soln
7653  // vector accordingly.
7654  if (damping < 1.0)
7655  {
7656  new_soln = old_soln;
7657  new_soln.add(-damping, search_direction);
7658  changed_new_soln = true;
7659  }
7660  }
7661 
7662  if (shouldUpdateSolution())
7663  {
7664  // Update the ghosted copy of the new solution, if necessary.
7665  if (changed_new_soln)
7666  *ghosted_solution = new_soln;
7667 
7668  bool updated_solution = updateSolution(new_soln, *ghosted_solution);
7669  if (updated_solution)
7670  changed_new_soln = true;
7671  }
7672  }
7673 
7675  {
7677  _aux->copyCurrentIntoPreviousNL();
7678  }
7679 
7680  // MOOSE doesn't change the search_direction
7681  changed_search_direction = false;
7682 
7684 }
ExecFlagType _current_execute_on_flag
Current execute_on flag.
virtual void setPreviousNewtonSolution(const NumericVector< Number > &soln)
bool _has_dampers
Whether or not this system has any Dampers associated with it.
const ExecFlagType EXEC_NONE
Definition: Moose.C:27
unsigned int number() const
NonlinearSystemBase * _current_nl_sys
The current nonlinear system that we are solving.
virtual bool shouldUpdateSolution()
Check to see whether the problem should update the solution.
std::shared_ptr< AuxiliarySystem > _aux
The auxiliary system.
virtual bool vectorTagExists(const TagID tag_id) const
Check to see if a particular Tag exists.
Definition: SubProblem.h:201
unsigned int number() const
Gets the number of this system.
Definition: SystemBase.C:1159
const ExecFlagType EXEC_POSTCHECK
Definition: Moose.C:33
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
std::unique_ptr< NumericVector< Number > > current_local_solution
virtual bool updateSolution(NumericVector< libMesh::Number > &vec_solution, NumericVector< libMesh::Number > &ghosted_solution)
Update the solution.
virtual void add(const numeric_index_type i, const T value)=0
const TagName PREVIOUS_NL_SOLUTION_TAG
Definition: MooseTypes.C:28
virtual Real computeDamping(const NumericVector< libMesh::Number > &soln, const NumericVector< libMesh::Number > &update)

◆ computeResidual() [1/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().

◆ computeResidual() [2/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).

◆ 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 6866 of file FEProblemBase.C.

Referenced by ComputeResidualAndJacobian::residual_and_jacobian().

6869 {
6870  try
6871  {
6872  try
6873  {
6874  // vector tags
6876  const auto & residual_vector_tags = getVectorTags(Moose::VECTOR_TAG_RESIDUAL);
6877 
6878  mooseAssert(_fe_vector_tags.empty(),
6879  "This should be empty indicating a clean starting state");
6880  // We filter out tags which do not have associated vectors in the current nonlinear
6881  // system. This is essential to be able to use system-dependent residual tags.
6883 
6885 
6886  // matrix tags
6887  {
6888  _fe_matrix_tags.clear();
6889 
6890  auto & tags = getMatrixTags();
6891  for (auto & tag : tags)
6892  _fe_matrix_tags.insert(tag.second);
6893  }
6894 
6896 
6899 
6900  for (const auto tag : _fe_matrix_tags)
6901  if (_current_nl_sys->hasMatrix(tag))
6902  {
6903  auto & matrix = _current_nl_sys->getMatrix(tag);
6904  matrix.zero();
6905  if (haveADObjects() && !assembly(0, _current_nl_sys->number()).hasStaticCondensation())
6906  // PETSc algorithms require diagonal allocations regardless of whether there is non-zero
6907  // diagonal dependence. With global AD indexing we only add non-zero
6908  // dependence, so PETSc will scream at us unless we artificially add the diagonals.
6909  for (auto index : make_range(matrix.row_start(), matrix.row_stop()))
6910  matrix.add(index, index, 0);
6911  }
6912 
6913  _aux->zeroVariablesForResidual();
6914 
6915  unsigned int n_threads = libMesh::n_threads();
6916 
6918 
6919  // Random interface objects
6920  for (const auto & it : _random_data_objects)
6921  it.second->updateSeeds(EXEC_LINEAR);
6922 
6926  if (_displaced_problem)
6927  {
6928  _displaced_problem->setCurrentlyComputingResidual(true);
6929  _displaced_problem->setCurrentlyComputingJacobian(true);
6930  _displaced_problem->setCurrentlyComputingResidualAndJacobian(true);
6931  }
6932 
6934 
6936 
6937  for (unsigned int tid = 0; tid < n_threads; tid++)
6938  reinitScalars(tid);
6939 
6941 
6942  _aux->residualSetup();
6943 
6944  if (_displaced_problem)
6945  {
6947  _displaced_problem->updateMesh();
6949  updateMortarMesh();
6950  }
6951 
6952  for (THREAD_ID tid = 0; tid < n_threads; tid++)
6953  {
6956  }
6957 
6959 
6961 
6963 
6965 
6968 
6970 
6973  }
6974  catch (...)
6975  {
6976  handleException("computeResidualAndJacobian");
6977  }
6978  }
6979  catch (const MooseException &)
6980  {
6981  // The buck stops here, we have already handled the exception by
6982  // calling the system's stopSolve() method, it is now up to PETSc to return a
6983  // "diverged" reason during the next solve.
6984  }
6985  catch (...)
6986  {
6987  mooseError("Unexpected exception type");
6988  }
6989 
6990  resetState();
6991  _fe_vector_tags.clear();
6992  _fe_matrix_tags.clear();
6993 }
virtual void residualSetup(THREAD_ID tid=0) const
unsigned int n_threads()
ExecFlagType _current_execute_on_flag
Current execute_on flag.
TagID systemMatrixTag() const override
Return the Matrix Tag ID for System.
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 setCurrentlyComputingResidual(bool currently_computing_residual) final
Set whether or not the problem is in the process of computing the residual.
virtual void associateVectorToTag(NumericVector< Number > &vec, TagID tag)
Associate a vector for a given tag.
Definition: SystemBase.C:964
void setSolution(const NumericVector< Number > &soln)
Set the solution to a given vector.
Definition: SolverSystem.C:67
virtual bool hasMatrix(TagID tag) const
Check if the tagged matrix exists in the system.
Definition: SystemBase.h:351
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:289
virtual void associateMatrixToTag(libMesh::SparseMatrix< Number > &matrix, TagID tag)
Associate a matrix to a tag.
Definition: SystemBase.C:1059
void setCurrentlyComputingResidualAndJacobian(bool currently_computing_residual_and_jacobian)
Set whether or not the problem is in the process of computing the Jacobian.
Definition: SubProblem.h:1493
virtual void disassociateMatrixFromTag(libMesh::SparseMatrix< Number > &matrix, TagID tag)
Disassociate a matrix from a tag.
Definition: SystemBase.C:1071
void setCurrentlyComputingJacobian(const bool currently_computing_jacobian)
Set whether or not the problem is in the process of computing the Jacobian.
Definition: SubProblem.h:689
virtual Assembly & assembly(const THREAD_ID tid, const unsigned int sys_num) override
virtual void resetState()
Reset state of this object in preparation for the next evaluation.
virtual void computeUserObjects(const ExecFlagType &type, const Moose::AuxGroup &group)
Call compute methods on UserObjects.
void computeResidualAndJacobianTags(const std::set< TagID > &vector_tags, const std::set< TagID > &matrix_tags)
Form possibly multiple tag-associated vectors and matrices.
void handleException(const std::string &calling_method)
Handle exceptions.
virtual void zero()=0
NonlinearSystemBase * _current_nl_sys
The current nonlinear system that we are solving.
bool _safe_access_tagged_vectors
Is it safe to retrieve data from tagged vectors.
Definition: SubProblem.h:1111
MortarData _mortar_data
std::shared_ptr< AuxiliarySystem > _aux
The auxiliary system.
std::vector< VectorTag > getVectorTags(const std::set< TagID > &tag_ids) const
Definition: SubProblem.C:172
virtual void disassociateVectorFromTag(NumericVector< Number > &vec, TagID tag)
Disassociate a given vector from a given tag.
std::map< std::string, std::unique_ptr< RandomData > > _random_data_objects
A map of objects that consume random numbers.
MooseApp & _app
The MOOSE application this is associated with.
Definition: MooseBase.h:84
unsigned int number() const
Gets the number of this system.
Definition: SystemBase.C:1159
const ExecFlagType EXEC_LINEAR
Definition: Moose.C:29
bool haveADObjects() const
Method for reading wehther we have any ad objects.
Definition: SubProblem.h:771
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
TagID residualVectorTag() const override
void residualSetup()
Calls the residualSetup function for each of the output objects.
const ExecFlagType EXEC_PRE_DISPLACE
Definition: Moose.C:48
virtual void updateMortarMesh()
std::set< TagID > _fe_matrix_tags
Provides a way for users to bail out of the current solve.
virtual libMesh::SparseMatrix< Number > & getMatrix(TagID tag)
Get a raw SparseMatrix.
Definition: SystemBase.C:1007
void executeControls(const ExecFlagType &exec_type)
Performs setup and execute calls for Control objects.
bool hasDisplacedObjects() const
Returns whether any of the AutomaticMortarGeneration objects are running on a displaced mesh...
Definition: MortarData.h:99
IntRange< T > make_range(T beg, T end)
std::set< TagID > _fe_vector_tags
void mooseError(Args &&... args) const
Emits an error prefixed with object name and type.
std::shared_ptr< DisplacedProblem > _displaced_problem
void setCurrentResidualVectorTags(const std::set< TagID > &vector_tags)
Set the current residual vector tag data structure based on the passed in tag IDs.
MooseObjectWarehouse< Function > _functions
functions
bool execMultiApps(ExecFlagType type, bool auto_advance=true)
Execute the MultiApps associated with the ExecFlagType.
bool _safe_access_tagged_matrices
Is it safe to retrieve data from tagged matrices.
Definition: SubProblem.h:1108
MaterialWarehouse _all_materials
OutputWarehouse & getOutputWarehouse()
Get the OutputWarehouse objects.
Definition: MooseApp.C:2381
void computeSystems(const ExecFlagType &type)
Do generic system computations.
void execTransfers(ExecFlagType type)
Execute the Transfers associated with the ExecFlagType.
unsigned int THREAD_ID
Definition: MooseTypes.h:209
virtual void residualSetup(THREAD_ID tid=0) const

◆ 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 7025 of file FEProblemBase.C.

7028 {
7029  parallel_object_only();
7030 
7031  TIME_SECTION("computeResidualInternal", 1);
7032 
7033  try
7034  {
7036 
7038 
7039  computeResidualTags(tags);
7040 
7042  }
7043  catch (MooseException & e)
7044  {
7045  // If a MooseException propagates all the way to here, it means
7046  // that it was thrown from a MOOSE system where we do not
7047  // (currently) properly support the throwing of exceptions, and
7048  // therefore we have no choice but to error out. It may be
7049  // *possible* to handle exceptions from other systems, but in the
7050  // meantime, we don't want to silently swallow any unhandled
7051  // exceptions here.
7052  mooseError("An unhandled MooseException was raised during residual computation. Please "
7053  "contact the MOOSE team for assistance.");
7054  }
7055 }
virtual void associateVectorToTag(NumericVector< Number > &vec, TagID tag)
Associate a vector for a given tag.
Definition: SystemBase.C:964
void setSolution(const NumericVector< Number > &soln)
Set the solution to a given vector.
Definition: SolverSystem.C:67
virtual void computeResidualTags(const std::set< TagID > &tags)
Form multiple residual vectors and each is associated with one tag.
NonlinearSystemBase * _current_nl_sys
The current nonlinear system that we are solving.
virtual void disassociateVectorFromTag(NumericVector< Number > &vec, TagID tag)
Disassociate a given vector from a given tag.
TagID residualVectorTag() const override
Provides a way for users to bail out of the current solve.
void mooseError(Args &&... args) const
Emits an error prefixed with object name and type.

◆ computeResidualL2Norm() [1/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 6775 of file FEProblemBase.C.

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

6776 {
6777  _current_nl_sys = &sys;
6778  computeResidual(*sys.currentSolution(), sys.RHS(), sys.number());
6779  return sys.RHS().l2_norm();
6780 }
virtual Real l2_norm() const=0
NonlinearSystemBase * _current_nl_sys
The current nonlinear system that we are solving.
virtual const NumericVector< Number > *const & currentSolution() const override final
The solution vector that is currently being operated on.
Definition: SolverSystem.h:117
unsigned int number() const
Gets the number of this system.
Definition: SystemBase.C:1159
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

◆ 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 6783 of file FEProblemBase.C.

6784 {
6785  _current_linear_sys = &sys;
6786 
6787  // We assemble the current system to check the current residual
6790  *sys.linearImplicitSystem().rhs,
6791  /*compute fresh gradients*/ true);
6792 
6793  // Unfortunate, but we have to allocate a new vector for the residual
6794  auto residual = sys.linearImplicitSystem().rhs->clone();
6795  residual->scale(-1.0);
6796  residual->add_vector(*sys.currentSolution(), *sys.linearImplicitSystem().matrix);
6797  return residual->l2_norm();
6798 }
libMesh::LinearImplicitSystem & linearImplicitSystem()
Return a reference to the stored linear implicit system.
Definition: LinearSystem.h:86
NumericVector< Number > * rhs
virtual std::unique_ptr< NumericVector< T > > clone() const=0
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. ...
virtual const NumericVector< Number > *const & currentSolution() const override final
The solution vector that is currently being operated on.
Definition: SolverSystem.h:117
LinearSystem * _current_linear_sys
The current linear system that we are solving.
SparseMatrix< Number > * matrix

◆ computeResidualL2Norm() [3/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 6801 of file FEProblemBase.C.

6802 {
6803  TIME_SECTION("computeResidualL2Norm", 2, "Computing L2 Norm of Residual");
6804 
6805  // We use sum the squared norms of the individual systems and then take the square root of it
6806  Real l2_norm = 0.0;
6807  for (auto sys : _nl)
6808  {
6809  const auto norm = computeResidualL2Norm(*sys);
6810  l2_norm += norm * norm;
6811  }
6812 
6813  for (auto sys : _linear_systems)
6814  {
6815  const auto norm = computeResidualL2Norm(*sys);
6816  l2_norm += norm * norm;
6817  }
6818 
6819  return std::sqrt(l2_norm);
6820 }
std::vector< std::shared_ptr< NonlinearSystemBase > > _nl
The nonlinear systems.
auto norm(const T &a) -> decltype(std::abs(a))
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
CTSub CT_OPERATOR_BINARY CTMul CTCompareLess CTCompareGreater CTCompareEqual _arg template * sqrt(_arg)) *_arg.template D< dtag >()) CT_SIMPLE_UNARY_FUNCTION(tanh
virtual Real computeResidualL2Norm()
Computes the residual using whatever is sitting in the current solution vector then returns the L2 no...
std::vector< std::shared_ptr< LinearSystem > > _linear_systems
The vector of linear systems.

◆ 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 6823 of file FEProblemBase.C.

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

6826 {
6827  parallel_object_only();
6828 
6829  TIME_SECTION("computeResidualSys", 5);
6830 
6831  computeResidual(soln, residual, sys.number());
6832 }
unsigned int number() const
void computeResidual(libMesh::NonlinearImplicitSystem &sys, const NumericVector< libMesh::Number > &soln, NumericVector< libMesh::Number > &residual)
This function is called by Libmesh to form a residual.

◆ 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 6996 of file FEProblemBase.C.

6999 {
7000  try
7001  {
7003 
7004  _current_nl_sys->associateVectorToTag(residual, tag);
7005 
7006  computeResidualTags({tag});
7007 
7009  }
7010  catch (MooseException & e)
7011  {
7012  // If a MooseException propagates all the way to here, it means
7013  // that it was thrown from a MOOSE system where we do not
7014  // (currently) properly support the throwing of exceptions, and
7015  // therefore we have no choice but to error out. It may be
7016  // *possible* to handle exceptions from other systems, but in the
7017  // meantime, we don't want to silently swallow any unhandled
7018  // exceptions here.
7019  mooseError("An unhandled MooseException was raised during residual computation. Please "
7020  "contact the MOOSE team for assistance.");
7021  }
7022 }
virtual void associateVectorToTag(NumericVector< Number > &vec, TagID tag)
Associate a vector for a given tag.
Definition: SystemBase.C:964
void setSolution(const NumericVector< Number > &soln)
Set the solution to a given vector.
Definition: SolverSystem.C:67
virtual void computeResidualTags(const std::set< TagID > &tags)
Form multiple residual vectors and each is associated with one tag.
NonlinearSystemBase * _current_nl_sys
The current nonlinear system that we are solving.
virtual void disassociateVectorFromTag(NumericVector< Number > &vec, TagID tag)
Disassociate a given vector from a given tag.
Provides a way for users to bail out of the current solve.
void mooseError(Args &&... args) const
Emits an error prefixed with object name and type.

◆ computeResidualTags()

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

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

Definition at line 7141 of file FEProblemBase.C.

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

7142 {
7143  parallel_object_only();
7144 
7145  try
7146  {
7147  try
7148  {
7149  TIME_SECTION("computeResidualTags", 5, "Computing Residual");
7150 
7151  ADReal::do_derivatives = false;
7152 
7154 
7155  _aux->zeroVariablesForResidual();
7156 
7157  unsigned int n_threads = libMesh::n_threads();
7158 
7160 
7161  // Random interface objects
7162  for (const auto & it : _random_data_objects)
7163  it.second->updateSeeds(EXEC_LINEAR);
7164 
7166 
7168 
7169  for (unsigned int tid = 0; tid < n_threads; tid++)
7170  reinitScalars(tid);
7171 
7173 
7174  _aux->residualSetup();
7175 
7176  if (_displaced_problem)
7177  {
7179  _displaced_problem->updateMesh();
7181  updateMortarMesh();
7182  }
7183 
7184  for (THREAD_ID tid = 0; tid < n_threads; tid++)
7185  {
7188  }
7189 
7191 
7193 
7195 
7197 
7200  }
7201  catch (...)
7202  {
7203  handleException("computeResidualTags");
7204  }
7205  }
7206  catch (const MooseException &)
7207  {
7208  // The buck stops here, we have already handled the exception by
7209  // calling the system's stopSolve() method, it is now up to PETSc to return a
7210  // "diverged" reason during the next solve.
7211  }
7212  catch (...)
7213  {
7214  mooseError("Unexpected exception type");
7215  }
7216 
7217  resetState();
7218 }
virtual void residualSetup(THREAD_ID tid=0) const
unsigned int n_threads()
ExecFlagType _current_execute_on_flag
Current execute_on flag.
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 computeResidualTags(const std::set< TagID > &tags)
Form multiple tag-associated residual vectors for all the given tags.
virtual void resetState()
Reset state of this object in preparation for the next evaluation.
virtual void computeUserObjects(const ExecFlagType &type, const Moose::AuxGroup &group)
Call compute methods on UserObjects.
void handleException(const std::string &calling_method)
Handle exceptions.
NonlinearSystemBase * _current_nl_sys
The current nonlinear system that we are solving.
bool _safe_access_tagged_vectors
Is it safe to retrieve data from tagged vectors.
Definition: SubProblem.h:1111
MortarData _mortar_data
std::shared_ptr< AuxiliarySystem > _aux
The auxiliary system.
std::map< std::string, std::unique_ptr< RandomData > > _random_data_objects
A map of objects that consume random numbers.
MooseApp & _app
The MOOSE application this is associated with.
Definition: MooseBase.h:84
const ExecFlagType EXEC_LINEAR
Definition: Moose.C:29
void residualSetup()
Calls the residualSetup function for each of the output objects.
const ExecFlagType EXEC_PRE_DISPLACE
Definition: Moose.C:48
virtual void updateMortarMesh()
Provides a way for users to bail out of the current solve.
void executeControls(const ExecFlagType &exec_type)
Performs setup and execute calls for Control objects.
bool hasDisplacedObjects() const
Returns whether any of the AutomaticMortarGeneration objects are running on a displaced mesh...
Definition: MortarData.h:99
void mooseError(Args &&... args) const
Emits an error prefixed with object name and type.
std::shared_ptr< DisplacedProblem > _displaced_problem
void setCurrentResidualVectorTags(const std::set< TagID > &vector_tags)
Set the current residual vector tag data structure based on the passed in tag IDs.
MooseObjectWarehouse< Function > _functions
functions
bool execMultiApps(ExecFlagType type, bool auto_advance=true)
Execute the MultiApps associated with the ExecFlagType.
MaterialWarehouse _all_materials
OutputWarehouse & getOutputWarehouse()
Get the OutputWarehouse objects.
Definition: MooseApp.C:2381
void computeSystems(const ExecFlagType &type)
Do generic system computations.
void execTransfers(ExecFlagType type)
Execute the Transfers associated with the ExecFlagType.
unsigned int THREAD_ID
Definition: MooseTypes.h:209
virtual void residualSetup(THREAD_ID tid=0) const

◆ 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 7058 of file FEProblemBase.C.

7061 {
7062  TIME_SECTION("computeResidualType", 5);
7063 
7064  try
7065  {
7067 
7069 
7071 
7073  }
7074  catch (MooseException & e)
7075  {
7076  // If a MooseException propagates all the way to here, it means
7077  // that it was thrown from a MOOSE system where we do not
7078  // (currently) properly support the throwing of exceptions, and
7079  // therefore we have no choice but to error out. It may be
7080  // *possible* to handle exceptions from other systems, but in the
7081  // meantime, we don't want to silently swallow any unhandled
7082  // exceptions here.
7083  mooseError("An unhandled MooseException was raised during residual computation. Please "
7084  "contact the MOOSE team for assistance.");
7085  }
7086 }
virtual void associateVectorToTag(NumericVector< Number > &vec, TagID tag)
Associate a vector for a given tag.
Definition: SystemBase.C:964
void setSolution(const NumericVector< Number > &soln)
Set the solution to a given vector.
Definition: SolverSystem.C:67
virtual void computeResidualTags(const std::set< TagID > &tags)
Form multiple residual vectors and each is associated with one tag.
NonlinearSystemBase * _current_nl_sys
The current nonlinear system that we are solving.
virtual void disassociateVectorFromTag(NumericVector< Number > &vec, TagID tag)
Disassociate a given vector from a given tag.
TagID residualVectorTag() const override
Provides a way for users to bail out of the current solve.
void mooseError(Args &&... args) const
Emits an error prefixed with object name and type.

◆ computeSystems()

void FEProblemBase::computeSystems ( const ExecFlagType type)
protectedinherited

Do generic system computations.

Definition at line 9271 of file FEProblemBase.C.

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

9272 {
9273  // When performing an adjoint solve in the optimization module, the current solver system is the
9274  // adjoint. However, the adjoint solve requires having accurate time derivative calculations for
9275  // the forward system. The cleanest way to handle such uses is just to compute the time
9276  // derivatives for all solver systems instead of trying to guess which ones we need and don't need
9277  for (auto & solver_sys : _solver_systems)
9278  solver_sys->compute(type);
9279 
9280  _aux->compute(type);
9281 }
std::vector< std::shared_ptr< SolverSystem > > _solver_systems
Combined container to base pointer of every solver system.
std::shared_ptr< AuxiliarySystem > _aux
The auxiliary system.
const std::string & type() const
Get the type of this class.
Definition: MooseBase.h:51

◆ computeTransposeNullSpace()

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

Definition at line 7589 of file FEProblemBase.C.

Referenced by Moose::compute_transpose_nullspace().

7591 {
7592  mooseAssert(_current_nl_sys && (sys.number() == _current_nl_sys->number()),
7593  "I expect these system numbers to be the same");
7594  sp.clear();
7595  for (unsigned int i = 0; i < subspaceDim("TransposeNullSpace"); ++i)
7596  {
7597  std::stringstream postfix;
7598  postfix << "_" << i;
7599  sp.push_back(&_current_nl_sys->getVector("TransposeNullSpace" + postfix.str()));
7600  }
7601 }
unsigned int subspaceDim(const std::string &prefix) const
Dimension of the subspace spanned by vectors with a given prefix.
unsigned int number() const
NonlinearSystemBase * _current_nl_sys
The current nonlinear system that we are solving.
unsigned int number() const
Gets the number of this system.
Definition: SystemBase.C:1159
virtual NumericVector< Number > & getVector(const std::string &name)
Get a raw NumericVector by name.
Definition: SystemBase.C:916

◆ 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 4749 of file FEProblemBase.C.

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

4752 {
4753  const auto old_exec_flag = _current_execute_on_flag;
4756  .query()
4757  .condition<AttribSystem>("UserObject")
4758  .condition<AttribExecOns>(type)
4759  .condition<AttribName>(name);
4760  computeUserObjectsInternal(type, group, query);
4761  _current_execute_on_flag = old_exec_flag;
4762 }
ExecFlagType _current_execute_on_flag
Current execute_on flag.
QueryCache is a convenient way to construct and pass around (possible partially constructed) warehous...
Definition: TheWarehouse.h:208
void computeUserObjectsInternal(const ExecFlagType &type, const Moose::AuxGroup &group, TheWarehouse::Query &query)
virtual const std::string & name() const
Get the name of the class.
Definition: MooseBase.h:57
TheWarehouse & theWarehouse() const
const std::string & type() const
Get the type of this class.
Definition: MooseBase.h:51
query_obj query
Query query()
query creates and returns an initialized a query object for querying objects from the warehouse...
Definition: TheWarehouse.h:466
QueryCache & condition(Args &&... args)
Adds a new condition to the query.
Definition: TheWarehouse.h:284

◆ computeUserObjects()

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

Call compute methods on UserObjects.

Definition at line 4765 of file FEProblemBase.C.

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

4766 {
4768  theWarehouse().query().condition<AttribSystem>("UserObject").condition<AttribExecOns>(type);
4769  computeUserObjectsInternal(type, group, query);
4770 }
QueryCache is a convenient way to construct and pass around (possible partially constructed) warehous...
Definition: TheWarehouse.h:208
void computeUserObjectsInternal(const ExecFlagType &type, const Moose::AuxGroup &group, TheWarehouse::Query &query)
TheWarehouse & theWarehouse() const
const std::string & type() const
Get the type of this class.
Definition: MooseBase.h:51
query_obj query
Query query()
query creates and returns an initialized a query object for querying objects from the warehouse...
Definition: TheWarehouse.h:466
QueryCache & condition(Args &&... args)
Adds a new condition to the query.
Definition: TheWarehouse.h:284

◆ computeUserObjectsInternal()

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

Definition at line 4773 of file FEProblemBase.C.

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

4776 {
4777  try
4778  {
4779  TIME_SECTION("computeUserObjects", 1, "Computing User Objects");
4780 
4781  // Add group to query
4782  if (group == Moose::PRE_IC)
4783  primary_query.condition<AttribPreIC>(true);
4784  else if (group == Moose::PRE_AUX)
4785  primary_query.condition<AttribPreAux>(type);
4786  else if (group == Moose::POST_AUX)
4787  primary_query.condition<AttribPostAux>(type);
4788 
4789  // query everything first to obtain a list of execution groups
4790  std::vector<UserObject *> uos;
4791  primary_query.clone().queryIntoUnsorted(uos);
4792  std::set<int> execution_groups;
4793  for (const auto & uo : uos)
4794  execution_groups.insert(uo->getParam<int>("execution_order_group"));
4795 
4796  // iterate over execution order groups
4797  for (const auto execution_group : execution_groups)
4798  {
4799  auto query = primary_query.clone().condition<AttribExecutionOrderGroup>(execution_group);
4800 
4801  std::vector<GeneralUserObject *> genobjs;
4802  query.clone().condition<AttribInterfaces>(Interfaces::GeneralUserObject).queryInto(genobjs);
4803 
4804  std::vector<UserObject *> userobjs;
4805  query.clone()
4810  .queryInto(userobjs);
4811 
4812  std::vector<UserObject *> tgobjs;
4813  query.clone()
4815  .queryInto(tgobjs);
4816 
4817  std::vector<UserObject *> nodal;
4818  query.clone().condition<AttribInterfaces>(Interfaces::NodalUserObject).queryInto(nodal);
4819 
4820  std::vector<MortarUserObject *> mortar;
4821  query.clone().condition<AttribInterfaces>(Interfaces::MortarUserObject).queryInto(mortar);
4822 
4823  if (userobjs.empty() && genobjs.empty() && tgobjs.empty() && nodal.empty() && mortar.empty())
4824  continue;
4825 
4826  // Start the timer here since we have at least one active user object
4827  std::string compute_uo_tag = "computeUserObjects(" + Moose::stringify(type) + ")";
4828 
4829  // Perform Residual/Jacobian setups
4830  if (type == EXEC_LINEAR)
4831  {
4832  for (auto obj : userobjs)
4833  obj->residualSetup();
4834  for (auto obj : nodal)
4835  obj->residualSetup();
4836  for (auto obj : mortar)
4837  obj->residualSetup();
4838  for (auto obj : tgobjs)
4839  obj->residualSetup();
4840  for (auto obj : genobjs)
4841  obj->residualSetup();
4842  }
4843  else if (type == EXEC_NONLINEAR)
4844  {
4845  for (auto obj : userobjs)
4846  obj->jacobianSetup();
4847  for (auto obj : nodal)
4848  obj->jacobianSetup();
4849  for (auto obj : mortar)
4850  obj->jacobianSetup();
4851  for (auto obj : tgobjs)
4852  obj->jacobianSetup();
4853  for (auto obj : genobjs)
4854  obj->jacobianSetup();
4855  }
4856 
4857  for (auto obj : userobjs)
4858  obj->initialize();
4859 
4860  // Execute Side/InternalSide/Interface/Elemental/DomainUserObjects
4861  if (!userobjs.empty())
4862  {
4863  // non-nodal user objects have to be run separately before the nodal user objects run
4864  // because some nodal user objects (NodalNormal related) depend on elemental user objects
4865  // :-(
4866  ComputeUserObjectsThread cppt(*this, query);
4868 
4869  // There is one instance in rattlesnake where an elemental user object's finalize depends
4870  // on a side user object having been finalized first :-(
4877  }
4878 
4879  // if any userobject may have written to variables we need to close the aux solution
4880  for (const auto & uo : userobjs)
4881  if (auto euo = dynamic_cast<const ElementUserObject *>(uo);
4882  euo && euo->hasWritableCoupledVariables())
4883  {
4884  _aux->solution().close();
4885  _aux->system().update();
4886  break;
4887  }
4888 
4889  // Execute NodalUserObjects
4890  // BISON has an axial reloc elemental user object that has a finalize func that depends on a
4891  // nodal user object's prev value. So we can't initialize this until after elemental objects
4892  // have been finalized :-(
4893  for (auto obj : nodal)
4894  obj->initialize();
4895  if (query.clone().condition<AttribInterfaces>(Interfaces::NodalUserObject).count() > 0)
4896  {
4897  ComputeNodalUserObjectsThread cnppt(*this, query);
4900  }
4901 
4902  // if any userobject may have written to variables we need to close the aux solution
4903  for (const auto & uo : nodal)
4904  if (auto nuo = dynamic_cast<const NodalUserObject *>(uo);
4905  nuo && nuo->hasWritableCoupledVariables())
4906  {
4907  _aux->solution().close();
4908  _aux->system().update();
4909  break;
4910  }
4911 
4912  // Execute MortarUserObjects
4913  {
4914  for (auto obj : mortar)
4915  obj->initialize();
4916  if (!mortar.empty())
4917  {
4918  auto create_and_run_mortar_functors = [this, type, &mortar](const bool displaced)
4919  {
4920  // go over mortar interfaces and construct functors
4921  const auto & mortar_interfaces = getMortarInterfaces(displaced);
4922  for (const auto & mortar_interface : mortar_interfaces)
4923  {
4924  const auto primary_secondary_boundary_pair = mortar_interface.first;
4925  auto mortar_uos_to_execute =
4926  getMortarUserObjects(primary_secondary_boundary_pair.first,
4927  primary_secondary_boundary_pair.second,
4928  displaced,
4929  mortar);
4930  const auto & mortar_generation_object = mortar_interface.second;
4931 
4932  auto * const subproblem = displaced
4933  ? static_cast<SubProblem *>(_displaced_problem.get())
4934  : static_cast<SubProblem *>(this);
4935  MortarUserObjectThread muot(mortar_uos_to_execute,
4936  mortar_generation_object,
4937  *subproblem,
4938  *this,
4939  displaced,
4940  subproblem->assembly(0, 0));
4941 
4942  muot();
4943  }
4944  };
4945 
4946  create_and_run_mortar_functors(false);
4947  if (_displaced_problem)
4948  create_and_run_mortar_functors(true);
4949  }
4950  for (auto obj : mortar)
4951  obj->finalize();
4952  }
4953 
4954  // Execute threaded general user objects
4955  for (auto obj : tgobjs)
4956  obj->initialize();
4957  std::vector<GeneralUserObject *> tguos_zero;
4958  query.clone()
4959  .condition<AttribThread>(0)
4960  .condition<AttribInterfaces>(Interfaces::ThreadedGeneralUserObject)
4961  .queryInto(tguos_zero);
4962  for (auto obj : tguos_zero)
4963  {
4964  std::vector<GeneralUserObject *> tguos;
4965  auto q = query.clone()
4966  .condition<AttribName>(obj->name())
4967  .condition<AttribInterfaces>(Interfaces::ThreadedGeneralUserObject);
4968  q.queryInto(tguos);
4969 
4971  Threads::parallel_reduce(GeneralUserObjectRange(tguos.begin(), tguos.end()), ctguot);
4972  joinAndFinalize(q);
4973  }
4974 
4975  // Execute general user objects
4977  true);
4978  }
4979  }
4980  catch (...)
4981  {
4982  handleException("computeUserObjectsInternal");
4983  }
4984 }
libMesh::ConstElemRange * getActiveLocalElementRange()
Return pointers to range objects for various types of ranges (local nodes, boundary elems...
Definition: MooseMesh.C:1235
void joinAndFinalize(TheWarehouse::Query query, bool isgen=false)
void parallel_reduce(const Range &range, Body &body, const Partitioner &)
TODO: delete this later - it is a temporary hack for dealing with inter-system dependencies.
Definition: Attributes.h:313
Thread to compute threaded general user objects.
libMesh::ConstNodeRange * getLocalNodeRange()
Definition: MooseMesh.C:1272
TODO: delete this later - it is a temporary hack for dealing with inter-system dependencies.
Definition: Attributes.h:294
void handleException(const std::string &calling_method)
Handle exceptions.
std::shared_ptr< AuxiliarySystem > _aux
The auxiliary system.
MooseMesh & _mesh
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 std::string & type() const
Get the type of this class.
Definition: MooseBase.h:51
StoredRange< std::vector< GeneralUserObject * >::iterator, GeneralUserObject * > GeneralUserObjectRange
const ExecFlagType EXEC_LINEAR
Definition: Moose.C:29
TODO: delete this later - it is a temporary hack for dealing with inter-system dependencies.
Definition: Attributes.h:344
std::string stringify(const T &t)
conversion to string
Definition: Conversion.h:64
query_obj query
const ExecFlagType EXEC_NONLINEAR
Definition: Moose.C:31
Generic class for solving transient nonlinear problems.
Definition: SubProblem.h:78
Class for threaded computation of UserObjects.
std::shared_ptr< DisplacedProblem > _displaced_problem
const std::unordered_map< std::pair< BoundaryID, BoundaryID >, AutomaticMortarGeneration > & getMortarInterfaces(bool on_displaced) const
virtual std::unique_ptr< Attribute > clone() const =0
clone creates and returns and identical (deep) copy of this attribute - i.e.

◆ computingNonlinearResid() [1/4]

bool SubProblem::computingNonlinearResid ( ) const
inlineinherited

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

Definition at line 707 of file SubProblem.h.

bool _computing_nonlinear_residual
Whether the non-linear residual is being evaluated.
Definition: SubProblem.h:1102

◆ computingNonlinearResid() [2/4]

virtual void SubProblem::computingNonlinearResid
inlineinherited

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

Definition at line 712 of file SubProblem.h.

713  {
714  _computing_nonlinear_residual = computing_nonlinear_residual;
715  }
bool _computing_nonlinear_residual
Whether the non-linear residual is being evaluated.
Definition: SubProblem.h:1102

◆ computingNonlinearResid() [3/4]

bool SubProblem::computingNonlinearResid
inlineinherited

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

Definition at line 707 of file SubProblem.h.

bool _computing_nonlinear_residual
Whether the non-linear residual is being evaluated.
Definition: SubProblem.h:1102

◆ computingNonlinearResid() [4/4]

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 8921 of file FEProblemBase.C.

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

8922 {
8923  parallel_object_only();
8924 
8925  if (_displaced_problem)
8926  _displaced_problem->computingNonlinearResid(computing_nonlinear_residual);
8927  _computing_nonlinear_residual = computing_nonlinear_residual;
8928 }
bool _computing_nonlinear_residual
Whether the non-linear residual is being evaluated.
Definition: SubProblem.h:1102
std::shared_ptr< DisplacedProblem > _displaced_problem

◆ 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 6560 of file FEProblemBase.C.

Referenced by DisplacedProblem::computingPreSMOResidual().

6561 {
6562  return _nl[nl_sys_num]->computingPreSMOResidual();
6563 }
std::vector< std::shared_ptr< NonlinearSystemBase > > _nl
The nonlinear systems.

◆ computingScalingJacobian() [1/2]

void FEProblemBase::computingScalingJacobian ( bool  computing_scaling_jacobian)
inlineinherited

Setter for whether we're computing the scaling jacobian.

Definition at line 2313 of file FEProblemBase.h.

Referenced by ComputeJacobianThread::compute(), SolverSystem::compute(), NonlinearSystemBase::computeJacobianInternal(), NonlinearSystemBase::computeScaling(), and DisplacedProblem::computingScalingJacobian().

2314  {
2315  _computing_scaling_jacobian = computing_scaling_jacobian;
2316  }
bool _computing_scaling_jacobian
Flag used to indicate whether we are computing the scaling Jacobian.

◆ computingScalingJacobian() [2/2]

bool FEProblemBase::computingScalingJacobian ( ) const
inlinefinaloverridevirtualinherited

Getter for whether we're computing the scaling jacobian.

Implements SubProblem.

Definition at line 2318 of file FEProblemBase.h.

2318 { return _computing_scaling_jacobian; }
bool _computing_scaling_jacobian
Flag used to indicate whether we are computing the scaling Jacobian.

◆ computingScalingResidual() [1/2]

void FEProblemBase::computingScalingResidual ( bool  computing_scaling_residual)
inlineinherited

Setter for whether we're computing the scaling residual.

Definition at line 2323 of file FEProblemBase.h.

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

2324  {
2325  _computing_scaling_residual = computing_scaling_residual;
2326  }
bool _computing_scaling_residual
Flag used to indicate whether we are computing the scaling Residual.

◆ computingScalingResidual() [2/2]

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

Implements SubProblem.

Definition at line 2331 of file FEProblemBase.h.

2331 { return _computing_scaling_residual; }
bool _computing_scaling_residual
Flag used to indicate whether we are computing the scaling Residual.

◆ connectControllableParams()

void MooseBaseParameterInterface::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 33 of file MooseBaseParameterInterface.C.

37 {
38  MooseObjectParameterName primary_name(uniqueName(), parameter);
39  const auto base_type = _factory.getValidParams(object_type).get<std::string>("_moose_base");
40  MooseObjectParameterName secondary_name(base_type, object_name, object_parameter);
42  primary_name, secondary_name);
43 
44  const auto & tags = _pars.get<std::vector<std::string>>("control_tags");
45  for (const auto & tag : tags)
46  {
47  if (!tag.empty())
48  {
49  // Only adds the parameter with the different control tags if the derived class
50  // properly registers the parameter to its own syntax
51  MooseObjectParameterName tagged_name(tag, _moose_base.name(), parameter);
53  tagged_name, secondary_name, /*error_on_empty=*/false);
54  }
55  }
56 }
void addControllableParameterConnection(const MooseObjectParameterName &primary, const MooseObjectParameterName &secondary, bool error_on_empty=true)
Method for linking control parameters of different names.
const MooseBase & _moose_base
The MooseBase object that inherits this class.
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.
InputParameterWarehouse & getInputParameterWarehouse()
Get the InputParameterWarehouse for MooseObjects.
Definition: MooseApp.C:2839
InputParameters getValidParams(const std::string &name) const
Get valid parameters for the object.
Definition: Factory.C:68
virtual const std::string & name() const
Get the name of the class.
Definition: MooseBase.h:57
MooseApp & getMooseApp() const
Get the MooseApp this class is associated with.
Definition: MooseBase.h:45
Factory & _factory
The Factory associated with the MooseApp.
MooseObjectName uniqueName() const
The unique name for accessing input parameters of this object in the InputParameterWarehouse.
const InputParameters & _pars
Parameters of this object, references the InputParameters stored in the InputParametersWarehouse.
A class for storing an input parameter name.

◆ console()

const ConsoleStream& Problem::console ( ) const
inlineinherited

Return console handle.

Definition at line 48 of file Problem.h.

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

48 { return _console; }
const ConsoleStream _console
An instance of helper class to write streams to the Console objects.

◆ 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 8766 of file FEProblemBase.C.

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

8767 {
8768  return _const_jacobian;
8769 }
bool _const_jacobian
true if the Jacobian is constant

◆ 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.

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

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

◆ 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 9142 of file FEProblemBase.C.

9143 {
9144  return mesh().coordTransform();
9145 }
MooseAppCoordTransform & coordTransform()
Definition: MooseMesh.h:1888
virtual MooseMesh & mesh() override

◆ copySolutionsBackwards()

void FEProblemBase::copySolutionsBackwards ( )
virtualinherited

Definition at line 6566 of file FEProblemBase.C.

Referenced by FEProblemBase::initialSetup().

6567 {
6568  TIME_SECTION("copySolutionsBackwards", 3, "Copying Solutions Backward");
6569 
6570  for (auto & sys : _solver_systems)
6571  sys->copySolutionsBackwards();
6572  _aux->copySolutionsBackwards();
6573 }
std::vector< std::shared_ptr< SolverSystem > > _solver_systems
Combined container to base pointer of every solver system.
std::shared_ptr< AuxiliarySystem > _aux
The auxiliary system.

◆ coupling()

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

Definition at line 165 of file FEProblemBase.h.

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

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

◆ couplingEntries()

std::vector< std::pair< MooseVariableFEBase *, MooseVariableFEBase * > > & 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 3226 of file FEProblemBase.h.

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

3227 {
3228  return _cm[i].get();
3229 }
std::vector< std::unique_ptr< libMesh::CouplingMatrix > > _cm
Coupling matrix for variables.

◆ 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 
)
inherited

Definition at line 7764 of file FEProblemBase.C.

7772 {
7773  _has_mortar = true;
7774 
7775  if (on_displaced)
7776  return _mortar_data.createMortarInterface(primary_secondary_boundary_pair,
7777  primary_secondary_subdomain_pair,
7779  on_displaced,
7780  periodic,
7781  debug,
7782  correct_edge_dropping,
7783  minimum_projection_angle);
7784  else
7785  return _mortar_data.createMortarInterface(primary_secondary_boundary_pair,
7786  primary_secondary_subdomain_pair,
7787  *this,
7788  on_displaced,
7789  periodic,
7790  debug,
7791  correct_edge_dropping,
7792  minimum_projection_angle);
7793 }
void createMortarInterface(const std::pair< BoundaryID, BoundaryID > &boundary_key, const std::pair< SubdomainID, SubdomainID > &subdomain_key, SubProblem &subproblem, bool on_displaced, bool periodic, const bool debug, const bool correct_edge_dropping, const Real minimum_projection_angle)
Create mortar generation object.
Definition: MortarData.C:22
MortarData _mortar_data
std::shared_ptr< DisplacedProblem > _displaced_problem
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 5992 of file FEProblemBase.C.

5998 {
5999  if (order == INVALID_ORDER)
6000  {
6001  // automatically determine the integration order
6002  order = _solver_systems[0]->getMinQuadratureOrder();
6003  for (const auto i : make_range(std::size_t(1), _solver_systems.size()))
6004  if (order < _solver_systems[i]->getMinQuadratureOrder())
6005  order = _solver_systems[i]->getMinQuadratureOrder();
6006  if (order < _aux->getMinQuadratureOrder())
6007  order = _aux->getMinQuadratureOrder();
6008  }
6009 
6010  if (volume_order == INVALID_ORDER)
6011  volume_order = order;
6012 
6013  if (face_order == INVALID_ORDER)
6014  face_order = order;
6015 
6016  for (unsigned int tid = 0; tid < libMesh::n_threads(); ++tid)
6017  for (const auto i : index_range(_solver_systems))
6018  _assembly[tid][i]->createQRules(
6019  type, order, volume_order, face_order, block, allow_negative_qweights);
6020 
6021  if (_displaced_problem)
6022  _displaced_problem->createQRules(
6023  type, order, volume_order, face_order, block, allow_negative_qweights);
6024 
6025  updateMaxQps();
6026 }
unsigned int n_threads()
std::vector< std::shared_ptr< SolverSystem > > _solver_systems
Combined container to base pointer of every solver system.
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)
std::shared_ptr< AuxiliarySystem > _aux
The auxiliary system.
const std::string & type() const
Get the type of this class.
Definition: MooseBase.h:51
std::vector< std::vector< std::unique_ptr< Assembly > > > _assembly
The Assembly objects.
IntRange< T > make_range(T beg, T end)
std::shared_ptr< DisplacedProblem > _displaced_problem
auto index_range(const T &sizable)

◆ createTagSolutions()

void FEProblemBase::createTagSolutions ( )
protectedinherited

Create extra tagged solution vectors.

Definition at line 678 of file FEProblemBase.C.

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

679 {
680  for (auto & vector : getParam<std::vector<TagName>>("extra_tag_solutions"))
681  {
682  auto tag = addVectorTag(vector, Moose::VECTOR_TAG_SOLUTION);
683  for (auto & sys : _solver_systems)
684  sys->addVector(tag, false, libMesh::GHOSTED);
685  _aux->addVector(tag, false, libMesh::GHOSTED);
686  }
687 
689  {
690  // We'll populate the zeroth state of the nonlinear iterations with the current solution for
691  // ease of use in doing things like copying solutions backwards. We're just storing pointers in
692  // the solution states containers so populating the zeroth state does not cost us the memory of
693  // a new vector
695  }
696 
698  for (auto & sys : _solver_systems)
699  sys->associateVectorToTag(*sys->system().current_local_solution.get(), tag);
700  _aux->associateVectorToTag(*_aux->system().current_local_solution.get(), tag);
701 }
virtual TagID addVectorTag(const TagName &tag_name, const Moose::VectorTagType type=Moose::VECTOR_TAG_RESIDUAL)
Create a Tag.
Definition: SubProblem.C:92
std::vector< std::shared_ptr< SolverSystem > > _solver_systems
Combined container to base pointer of every solver system.
bool _previous_nl_solution_required
Indicates we need to save the previous NL iteration variable values.
std::shared_ptr< AuxiliarySystem > _aux
The auxiliary system.
const T & getParam(const std::string &name) const
Retrieve a parameter for the object.
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...
const TagName SOLUTION_TAG
Definition: MooseTypes.C:25

◆ createTagVectors()

void FEProblemBase::createTagVectors ( )
protectedinherited

Create extra tagged vectors and matrices.

Definition at line 647 of file FEProblemBase.C.

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

648 {
649  // add vectors and their tags to system
650  auto & vectors = getParam<std::vector<std::vector<TagName>>>("extra_tag_vectors");
651  for (const auto sys_num : index_range(vectors))
652  for (auto & vector : vectors[sys_num])
653  {
654  auto tag = addVectorTag(vector);
655  _solver_systems[sys_num]->addVector(tag, false, libMesh::GHOSTED);
656  }
657 
658  auto & not_zeroed_vectors = getParam<std::vector<std::vector<TagName>>>("not_zeroed_tag_vectors");
659  for (const auto sys_num : index_range(not_zeroed_vectors))
660  for (auto & vector : not_zeroed_vectors[sys_num])
661  {
662  auto tag = addVectorTag(vector);
663  _solver_systems[sys_num]->addVector(tag, false, GHOSTED);
665  }
666 
667  // add matrices and their tags
668  auto & matrices = getParam<std::vector<std::vector<TagName>>>("extra_tag_matrices");
669  for (const auto sys_num : index_range(matrices))
670  for (auto & matrix : matrices[sys_num])
671  {
672  auto tag = addMatrixTag(matrix);
673  _solver_systems[sys_num]->addMatrix(tag);
674  }
675 }
virtual TagID addVectorTag(const TagName &tag_name, const Moose::VectorTagType type=Moose::VECTOR_TAG_RESIDUAL)
Create a Tag.
Definition: SubProblem.C:92
std::vector< std::shared_ptr< SolverSystem > > _solver_systems
Combined container to base pointer of every solver system.
virtual TagID addMatrixTag(TagName tag_name)
Create a Tag.
Definition: SubProblem.C:311
auto index_range(const T &sizable)
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:149

◆ currentLinearSysNum()

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

Implements SubProblem.

Definition at line 9159 of file FEProblemBase.C.

Referenced by DisplacedProblem::currentLinearSysNum().

9160 {
9161  // If we don't have linear systems this should be an invalid number
9162  unsigned int current_linear_sys_num = libMesh::invalid_uint;
9163  if (_linear_systems.size())
9164  current_linear_sys_num = currentLinearSystem().number();
9165 
9166  return current_linear_sys_num;
9167 }
const unsigned int invalid_uint
unsigned int number() const
Gets the number of this system.
Definition: SystemBase.C:1159
LinearSystem & currentLinearSystem()
Get a non-constant reference to the current linear system.
std::vector< std::shared_ptr< LinearSystem > > _linear_systems
The vector of linear systems.

◆ currentLinearSystem() [1/2]

LinearSystem & FEProblemBase::currentLinearSystem ( )
inlineinherited

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

Definition at line 3194 of file FEProblemBase.h.

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

3195 {
3196  mooseAssert(_current_linear_sys, "The linear system is not currently set");
3197  return *_current_linear_sys;
3198 }
LinearSystem * _current_linear_sys
The current linear system that we are solving.

◆ currentLinearSystem() [2/2]

const LinearSystem & FEProblemBase::currentLinearSystem ( ) const
inlineinherited

Get a constant reference to the current linear system.

Definition at line 3201 of file FEProblemBase.h.

3202 {
3203  mooseAssert(_current_linear_sys, "The linear system is not currently set");
3204  return *_current_linear_sys;
3205 }
LinearSystem * _current_linear_sys
The current linear system that we are solving.

◆ currentlyComputingJacobian()

const bool& SubProblem::currentlyComputingJacobian ( ) const
inlineinherited

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

Definition at line 684 of file SubProblem.h.

Referenced by PenetrationLocator::detectPenetration(), ComputeUserObjectsThread::onBoundary(), ComputeUserObjectsThread::onElement(), ComputeUserObjectsThread::printBlockExecutionInformation(), SubProblem::reinitElemFaceRef(), and NEML2Utils::shouldCompute().

bool _currently_computing_jacobian
Flag to determine whether the problem is currently computing Jacobian.
Definition: SubProblem.h:1096

◆ currentlyComputingResidual() [1/2]

const bool& SubProblem::currentlyComputingResidual ( ) const
inlineinherited

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

Definition at line 720 of file SubProblem.h.

bool _currently_computing_residual
Whether the residual is being evaluated.
Definition: SubProblem.h:1105

◆ currentlyComputingResidual() [2/2]

const bool& SubProblem::currentlyComputingResidual
inlineinherited

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

Definition at line 720 of file SubProblem.h.

bool _currently_computing_residual
Whether the residual is being evaluated.
Definition: SubProblem.h:1105

◆ 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 1487 of file SubProblem.h.

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

1488 {
1490 }
bool _currently_computing_residual_and_jacobian
Flag to determine whether the problem is currently computing the residual and Jacobian.
Definition: SubProblem.h:1099

◆ currentNlSysNum()

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

Implements SubProblem.

Definition at line 9148 of file FEProblemBase.C.

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

9149 {
9150  // If we don't have nonlinear systems this should be an invalid number
9151  unsigned int current_nl_sys_num = libMesh::invalid_uint;
9152  if (_nl.size())
9153  current_nl_sys_num = currentNonlinearSystem().number();
9154 
9155  return current_nl_sys_num;
9156 }
const unsigned int invalid_uint
std::vector< std::shared_ptr< NonlinearSystemBase > > _nl
The nonlinear systems.
NonlinearSystemBase & currentNonlinearSystem()
unsigned int number() const
Gets the number of this system.
Definition: SystemBase.C:1159

◆ currentNonlinearSystem() [1/2]

NonlinearSystemBase & FEProblemBase::currentNonlinearSystem ( )
inlineinherited

◆ currentNonlinearSystem() [2/2]

const NonlinearSystemBase & FEProblemBase::currentNonlinearSystem ( ) const
inlineinherited

Definition at line 3171 of file FEProblemBase.h.

3172 {
3173  mooseAssert(_current_nl_sys, "The nonlinear system is not currently set");
3174  return *_current_nl_sys;
3175 }
NonlinearSystemBase * _current_nl_sys
The current nonlinear system that we are solving.

◆ currentResidualVectorTags()

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

Return the residual vector tags we are currently computing.

Implements SubProblem.

Definition at line 3242 of file FEProblemBase.h.

Referenced by FEProblemBase::addResidual(), FEProblemBase::addResidualLower(), FEProblemBase::addResidualNeighbor(), FEProblemBase::addResidualScalar(), and DisplacedProblem::currentResidualVectorTags().

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

◆ customSetup()

void FEProblemBase::customSetup ( const ExecFlagType exec_type)
overridevirtualinherited

Reimplemented from SubProblem.

Definition at line 4549 of file FEProblemBase.C.

Referenced by FEProblemBase::execute().

4550 {
4551  SubProblem::customSetup(exec_type);
4552 
4553  if (_line_search)
4554  _line_search->customSetup(exec_type);
4555 
4556  unsigned int n_threads = libMesh::n_threads();
4557  for (THREAD_ID tid = 0; tid < n_threads; tid++)
4558  {
4559  _all_materials.customSetup(exec_type, tid);
4560  _functions.customSetup(exec_type, tid);
4561  }
4562 
4563  _aux->customSetup(exec_type);
4564  for (auto & nl : _nl)
4565  nl->customSetup(exec_type);
4566 
4567  if (_displaced_problem)
4568  _displaced_problem->customSetup(exec_type);
4569 
4570  for (THREAD_ID tid = 0; tid < n_threads; tid++)
4571  {
4572  _internal_side_indicators.customSetup(exec_type, tid);
4573  _indicators.customSetup(exec_type, tid);
4574  _markers.customSetup(exec_type, tid);
4575  }
4576 
4577  std::vector<UserObject *> userobjs;
4578  theWarehouse().query().condition<AttribSystem>("UserObject").queryIntoUnsorted(userobjs);
4579  for (auto obj : userobjs)
4580  obj->customSetup(exec_type);
4581 
4582  _app.getOutputWarehouse().customSetup(exec_type);
4583 }
unsigned int n_threads()
MooseObjectWarehouse< InternalSideIndicatorBase > _internal_side_indicators
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)
Definition: SubProblem.C:1187
std::vector< std::shared_ptr< NonlinearSystemBase > > _nl
The nonlinear systems.
TheWarehouse & theWarehouse() const
std::shared_ptr< AuxiliarySystem > _aux
The auxiliary system.
MooseApp & _app
The MOOSE application this is associated with.
Definition: MooseBase.h:84
MooseObjectWarehouse< Indicator > _indicators
Query query()
query creates and returns an initialized a query object for querying objects from the warehouse...
Definition: TheWarehouse.h:466
std::shared_ptr< DisplacedProblem > _displaced_problem
MooseObjectWarehouse< Function > _functions
functions
QueryCache & condition(Args &&... args)
Adds a new condition to the query.
Definition: TheWarehouse.h:284
MooseObjectWarehouse< Marker > _markers
MaterialWarehouse _all_materials
OutputWarehouse & getOutputWarehouse()
Get the OutputWarehouse objects.
Definition: MooseApp.C:2381
unsigned int THREAD_ID
Definition: MooseTypes.h:209
std::shared_ptr< LineSearch > _line_search

◆ 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 276 of file Restartable.h.

279 {
280  auto & data_ptr =
281  declareRestartableDataHelper<T>(data_name, context, std::forward<Args>(args)...);
282  return Restartable::ManagedValue<T>(data_ptr);
283 }
Wrapper class for restartable data that is "managed.
Definition: Restartable.h:42

◆ 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 351 of file Restartable.h.

352 {
353  const auto full_name = restartableName(data_name);
354 
356 
357  return declareRestartableDataWithContext<T>(data_name, nullptr, std::forward<Args>(args)...);
358 }
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:66
void registerRestartableNameWithFilterOnApp(const std::string &name, Moose::RESTARTABLE_FILTER filter)
Helper function for actually registering the restartable data.
Definition: Restartable.C:59

◆ 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 269 of file Restartable.h.

270 {
271  return declareRestartableDataWithContext<T>(data_name, nullptr, std::forward<Args>(args)...);
272 }

◆ 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 294 of file Restartable.h.

297 {
298  return declareRestartableDataHelper<T>(data_name, context, std::forward<Args>(args)...).set();
299 }

◆ 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 323 of file Restartable.h.

326 {
327  return declareRestartableDataWithObjectNameWithContext<T>(
328  data_name, object_name, nullptr, std::forward<Args>(args)...);
329 }

◆ 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 333 of file Restartable.h.

337 {
338  std::string old_name = _restartable_name;
339 
340  _restartable_name = object_name;
341 
342  T & value = declareRestartableDataWithContext<T>(data_name, context, std::forward<Args>(args)...);
343 
344  _restartable_name = old_name;
345 
346  return value;
347 }
std::string _restartable_name
The name of the object.
Definition: Restartable.h:243
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.

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

144 { return _default_ghosting; }
bool _default_ghosting
Whether or not to use default libMesh coupling.
Definition: SubProblem.h:1090

◆ diracKernelInfo()

DiracKernelInfo & SubProblem::diracKernelInfo ( )
virtualinherited

Definition at line 748 of file SubProblem.C.

749 {
750  return _dirac_kernel_info;
751 }
DiracKernelInfo _dirac_kernel_info
Definition: SubProblem.h:1049

◆ doingPRefinement()

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

Definition at line 1355 of file SubProblem.C.

Referenced by FEProblemBase::meshChanged().

1356 {
1357  return mesh().doingPRefinement();
1358 }
virtual MooseMesh & mesh()=0
void doingPRefinement(bool doing_p_refinement)
Indicate whether the kind of adaptivity we&#39;re doing is p-refinement.
Definition: MooseMesh.h:1347

◆ dt()

virtual Real& FEProblemBase::dt ( ) const
inlinevirtualinherited

◆ dtOld()

virtual Real& FEProblemBase::dtOld ( ) const
inlinevirtualinherited

Definition at line 518 of file FEProblemBase.h.

Referenced by IterationAdaptiveDT::acceptStep().

518 { return _dt_old; }

◆ 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 2715 of file FEProblemBase.C.

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

2719 {
2720 
2721  std::set<SubdomainID> subdomainIDs;
2722  if (active_subdomains->size() == 0)
2723  {
2724  const auto subdomains = _mesh.meshSubdomains();
2725  subdomainIDs.insert(subdomains.begin(), subdomains.end());
2726  }
2727  else
2728  subdomainIDs.insert(active_subdomains->begin(), active_subdomains->end());
2729 
2730  for (auto & sys : _solver_systems)
2731  {
2732  SystemBase * curr_sys_ptr = sys.get();
2733  SystemBase * other_sys_ptr = _aux.get();
2734  std::string error_prefix = "";
2735  if (is_aux)
2736  {
2737  curr_sys_ptr = _aux.get();
2738  other_sys_ptr = sys.get();
2739  error_prefix = "aux";
2740  }
2741 
2742  if (other_sys_ptr->hasVariable(var_name))
2743  mooseError("Cannot have an auxiliary variable and a solver variable with the same name: ",
2744  var_name);
2745 
2746  if (curr_sys_ptr->hasVariable(var_name))
2747  {
2748  const Variable & var =
2749  curr_sys_ptr->system().variable(curr_sys_ptr->system().variable_number(var_name));
2750 
2751  // variable type
2752  if (var.type() != type)
2753  {
2754  const auto stringifyType = [](FEType t)
2755  { return Moose::stringify(t.family) + " of order " + Moose::stringify(t.order); };
2756 
2757  mooseError("Mismatching types are specified for ",
2758  error_prefix,
2759  "variable with name '",
2760  var_name,
2761  "': '",
2762  stringifyType(var.type()),
2763  "' and '",
2764  stringifyType(type),
2765  "'");
2766  }
2767 
2768  // block-restriction
2769  if (!(active_subdomains->size() == 0 && var.active_subdomains().size() == 0))
2770  {
2771  const auto varActiveSubdomains = var.active_subdomains();
2772  std::set<SubdomainID> varSubdomainIDs;
2773  if (varActiveSubdomains.size() == 0)
2774  {
2775  const auto subdomains = _mesh.meshSubdomains();
2776  varSubdomainIDs.insert(subdomains.begin(), subdomains.end());
2777  }
2778  else
2779  varSubdomainIDs.insert(varActiveSubdomains.begin(), varActiveSubdomains.end());
2780 
2781  // Is subdomainIDs a subset of varSubdomainIDs? With this we allow the case that the newly
2782  // requested block restriction is only a subset of the existing one.
2783  const auto isSubset = std::includes(varSubdomainIDs.begin(),
2784  varSubdomainIDs.end(),
2785  subdomainIDs.begin(),
2786  subdomainIDs.end());
2787 
2788  if (!isSubset)
2789  {
2790  // helper function: make a string from a set of subdomain ids
2791  const auto stringifySubdomains = [this](std::set<SubdomainID> subdomainIDs)
2792  {
2793  std::stringstream s;
2794  for (auto const i : subdomainIDs)
2795  {
2796  // do we need to insert a comma?
2797  if (s.tellp() != 0)
2798  s << ", ";
2799 
2800  // insert subdomain name and id -or- only the id (if no name is given)
2801  const auto subdomainName = _mesh.getSubdomainName(i);
2802  if (subdomainName.empty())
2803  s << i;
2804  else
2805  s << subdomainName << " (" << i << ")";
2806  }
2807  return s.str();
2808  };
2809 
2810  const std::string msg = "Mismatching block-restrictions are specified for " +
2811  error_prefix + "variable with name '" + var_name + "': {" +
2812  stringifySubdomains(varSubdomainIDs) + "} and {" +
2813  stringifySubdomains(subdomainIDs) + "}";
2814 
2815  mooseError(msg);
2816  }
2817  }
2818 
2819  return true;
2820  }
2821  }
2822 
2823  return false;
2824 }
const Variable & variable(unsigned int var) const
virtual libMesh::System & system()=0
Get the reference to the libMesh system.
std::vector< std::shared_ptr< SolverSystem > > _solver_systems
Combined container to base pointer of every solver system.
Base class for a system (of equations)
Definition: SystemBase.h:84
const std::string & getSubdomainName(SubdomainID subdomain_id) const
Return the name of a block given an id.
Definition: MooseMesh.C:1758
unsigned int variable_number(std::string_view var) const
const std::set< subdomain_id_type > & active_subdomains() const
std::shared_ptr< AuxiliarySystem > _aux
The auxiliary system.
MooseMesh & _mesh
const std::string & type() const
Get the type of this class.
Definition: MooseBase.h:51
std::string stringify(const T &t)
conversion to string
Definition: Conversion.h:64
virtual bool hasVariable(const std::string &var_name) const
Query a system for a variable.
Definition: SystemBase.C:834
void mooseError(Args &&... args) const
Emits an error prefixed with object name and type.
const std::set< SubdomainID > & meshSubdomains() const
Returns a read-only reference to the set of subdomains currently present in the Mesh.
Definition: MooseMesh.C:3166
const FEType & type() const

◆ enabled()

virtual bool MooseObject::enabled ( ) const
inlinevirtualinherited

Return the enabled status of the object.

Reimplemented in EigenKernel.

Definition at line 40 of file MooseObject.h.

Referenced by EigenKernel::enabled().

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

◆ 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 1923 of file FEProblemBase.h.

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

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

◆ errorPrefix()

std::string MooseBase::errorPrefix ( const std::string &  error_type) const
inherited
Returns
A prefix to be used in errors that contains the input file location associated with this object (if any) and the name and type of the object.

Definition at line 43 of file MooseBase.C.

Referenced by MooseBase::callMooseError(), MooseBaseErrorInterface::mooseDeprecated(), MooseBaseErrorInterface::mooseInfo(), MooseBaseErrorInterface::mooseWarning(), and MooseBaseParameterInterface::paramErrorMsg().

44 {
45  std::stringstream oss;
46  if (const auto node = _params.getHitNode())
47  if (!node->isRoot())
48  oss << node->fileLocation() << ":\n";
49  oss << "The following " << error_type << " occurred in the ";
50  if (const auto base_ptr = _params.getBase())
51  oss << *base_ptr;
52  else
53  oss << "object";
54  oss << " '" << name() << "' of type " << type() << ".\n\n";
55  return oss.str();
56 }
const hit::Node * getHitNode(const std::string &param) const
std::optional< std::string > getBase() const
virtual const std::string & name() const
Get the name of the class.
Definition: MooseBase.h:57
const InputParameters & _params
The object&#39;s parameteres.
Definition: MooseBase.h:94
const std::string & type() const
Get the type of this class.
Definition: MooseBase.h:51

◆ es()

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

◆ execMultiApps()

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

Execute the MultiApps associated with the ExecFlagType.

Definition at line 5390 of file FEProblemBase.C.

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

5391 {
5392  // Active MultiApps
5393  const std::vector<MooseSharedPointer<MultiApp>> & multi_apps =
5395 
5396  // Do anything that needs to be done to Apps before transfers
5397  for (const auto & multi_app : multi_apps)
5398  multi_app->preTransfer(_dt, _time);
5399 
5400  // Execute Transfers _to_ MultiApps
5402 
5403  // Execute Transfers _between_ Multiapps
5405 
5406  // Execute MultiApps
5407  if (multi_apps.size())
5408  {
5409  TIME_SECTION("execMultiApps", 1, "Executing MultiApps", false);
5410 
5411  if (_verbose_multiapps)
5412  _console << COLOR_CYAN << "\nExecuting MultiApps on " << Moose::stringify(type)
5413  << COLOR_DEFAULT << std::endl;
5414 
5415  bool success = true;
5416 
5417  for (const auto & multi_app : multi_apps)
5418  {
5419  success = multi_app->solveStep(_dt, _time, auto_advance);
5420  // no need to finish executing the subapps if one fails
5421  if (!success)
5422  break;
5423  }
5424 
5426 
5427  _communicator.min(success);
5428 
5429  if (!success)
5430  return false;
5431 
5432  if (_verbose_multiapps)
5433  _console << COLOR_CYAN << "Finished Executing MultiApps on " << Moose::stringify(type) << "\n"
5434  << COLOR_DEFAULT << std::endl;
5435  }
5436 
5437  // Execute Transfers _from_ MultiApps
5439 
5440  // If we made it here then everything passed
5441  return true;
5442 }
bool _parallel_barrier_messaging
Whether or not information about how many transfers have completed is printed.
const Parallel::Communicator & _communicator
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 min(const T &r, T &o, Request &req) const
void parallelBarrierNotify(const libMesh::Parallel::Communicator &comm, bool messaging=true)
This function implements a parallel barrier function but writes progress to stdout.
Definition: MooseUtils.C:323
const std::string & type() const
Get the type of this class.
Definition: MooseBase.h:51
std::string stringify(const T &t)
conversion to string
Definition: Conversion.h:64
ExecuteMooseObjectWarehouse< MultiApp > _multi_apps
MultiApp Warehouse.
void execMultiAppTransfers(ExecFlagType type, Transfer::DIRECTION direction)
Execute MultiAppTransfers associated with execution flag and direction.
const ConsoleStream _console
An instance of helper class to write streams to the Console objects.
bool _verbose_multiapps
Whether or not to be verbose with multiapps.

◆ 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 5290 of file FEProblemBase.C.

Referenced by FEProblemBase::execMultiApps().

5291 {
5292  bool to_multiapp = direction == MultiAppTransfer::TO_MULTIAPP;
5293  bool from_multiapp = direction == MultiAppTransfer::FROM_MULTIAPP;
5294  std::string string_direction;
5295  if (to_multiapp)
5296  string_direction = " To ";
5297  else if (from_multiapp)
5298  string_direction = " From ";
5299  else
5300  string_direction = " Between ";
5301 
5302  const MooseObjectWarehouse<Transfer> & wh = to_multiapp ? _to_multi_app_transfers[type]
5303  : from_multiapp ? _from_multi_app_transfers[type]
5305 
5306  if (wh.hasActiveObjects())
5307  {
5308  TIME_SECTION("execMultiAppTransfers", 1, "Executing Transfers");
5309 
5310  const auto & transfers = wh.getActiveObjects();
5311 
5312  if (_verbose_multiapps)
5313  {
5314  _console << COLOR_CYAN << "\nTransfers on " << Moose::stringify(type) << string_direction
5315  << "MultiApps" << COLOR_DEFAULT << ":" << std::endl;
5316 
5318  {"Name", "Type", "From", "To"});
5319 
5320  // Build Table of Transfer Info
5321  for (const auto & transfer : transfers)
5322  {
5323  auto multiapp_transfer = dynamic_cast<MultiAppTransfer *>(transfer.get());
5324 
5325  table.addRow(multiapp_transfer->name(),
5326  multiapp_transfer->type(),
5327  multiapp_transfer->getFromName(),
5328  multiapp_transfer->getToName());
5329  }
5330 
5331  // Print it
5332  table.print(_console);
5333  }
5334 
5335  for (const auto & transfer : transfers)
5336  {
5337  transfer->setCurrentDirection(direction);
5338  transfer->execute();
5339  }
5340 
5342 
5343  if (_verbose_multiapps)
5344  _console << COLOR_CYAN << "Transfers on " << Moose::stringify(type) << " Are Finished\n"
5345  << COLOR_DEFAULT << std::endl;
5346  }
5347  else if (_multi_apps[type].getActiveObjects().size())
5348  {
5349  if (_verbose_multiapps)
5350  _console << COLOR_CYAN << "\nNo Transfers on " << Moose::stringify(type) << string_direction
5351  << "MultiApps\n"
5352  << COLOR_DEFAULT << std::endl;
5353  }
5354 }
bool _parallel_barrier_messaging
Whether or not information about how many transfers have completed is printed.
A class for "pretty printing" a table of data.
Definition: PerfGraph.h:34
void setCurrentDirection(const int direction)
Set this Transfer to be executed in a given direction.
Definition: Transfer.h:89
const Parallel::Communicator & _communicator
ExecuteMooseObjectWarehouse< Transfer > _from_multi_app_transfers
Transfers executed just after MultiApps to transfer data from them.
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...
ExecuteMooseObjectWarehouse< Transfer > _to_multi_app_transfers
Transfers executed just before MultiApps to transfer data to them.
void parallelBarrierNotify(const libMesh::Parallel::Communicator &comm, bool messaging=true)
This function implements a parallel barrier function but writes progress to stdout.
Definition: MooseUtils.C:323
const std::string & type() const
Get the type of this class.
Definition: MooseBase.h:51
std::string stringify(const T &t)
conversion to string
Definition: Conversion.h:64
ExecuteMooseObjectWarehouse< MultiApp > _multi_apps
MultiApp Warehouse.
bool hasActiveObjects(THREAD_ID tid=0) const
Base class for all MultiAppTransfer objects.
const ConsoleStream _console
An instance of helper class to write streams to the Console objects.
ExecuteMooseObjectWarehouse< Transfer > _between_multi_app_transfers
Transfers executed just before MultiApps to transfer data between them.
bool _verbose_multiapps
Whether or not to be verbose with multiapps.

◆ 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 5560 of file FEProblemBase.C.

Referenced by FEProblemBase::computeJacobianTags(), FEProblemBase::computeLinearSystemTags(), FEProblemBase::computeResidualAndJacobian(), FEProblemBase::computeResidualTags(), FEProblemBase::initialSetup(), FixedPointSolve::solve(), and FixedPointSolve::solveStep().

5561 {
5562  if (_transfers[type].hasActiveObjects())
5563  {
5564  TIME_SECTION("execTransfers", 3, "Executing Transfers");
5565 
5566  const auto & transfers = _transfers[type].getActiveObjects();
5567 
5568  for (const auto & transfer : transfers)
5569  transfer->execute();
5570  }
5571 }
ExecuteMooseObjectWarehouse< Transfer > _transfers
Normal Transfers.
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...
const std::string & type() const
Get the type of this class.
Definition: MooseBase.h:51

◆ execute()

void FEProblemBase::execute ( const ExecFlagType exec_type)
virtualinherited

Convenience function for performing execution of MOOSE systems.

Reimplemented in EigenProblem, and DumpObjectsProblem.

Definition at line 4586 of file FEProblemBase.C.

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

4587 {
4588  // Set the current flag
4589  setCurrentExecuteOnFlag(exec_type);
4590 
4591  if (exec_type != EXEC_INITIAL)
4592  executeControls(exec_type);
4593 
4594  // intentially call this after executing controls because the setups may rely on the controls
4595  // FIXME: we skip the following flags because they have dedicated setup functions in
4596  // SetupInterface and it may not be appropriate to call them here.
4597  if (!(exec_type == EXEC_INITIAL || exec_type == EXEC_TIMESTEP_BEGIN ||
4598  exec_type == EXEC_SUBDOMAIN || exec_type == EXEC_NONLINEAR || exec_type == EXEC_LINEAR))
4599  customSetup(exec_type);
4600 
4601  // Samplers; EXEC_INITIAL is not called because the Sampler::init() method that is called after
4602  // construction makes the first Sampler::execute() call. This ensures that the random number
4603  // generator object is the correct state prior to any other object (e.g., Transfers) attempts to
4604  // extract data from the Sampler. That is, if the Sampler::execute() call is delayed to here
4605  // then it is not in the correct state for other objects.
4606  if (exec_type != EXEC_INITIAL)
4607  executeSamplers(exec_type);
4608 
4609  // Pre-aux UserObjects
4610  computeUserObjects(exec_type, Moose::PRE_AUX);
4611 
4612  // Systems (includes system time derivative and aux kernel calculations)
4613  computeSystems(exec_type);
4614  // With the auxiliary system solution computed, sync the displaced problem auxiliary solution
4615  // before computation of post-aux user objects. The undisplaced auxiliary system current local
4616  // solution is updated (via System::update) within the AuxiliarySystem class's variable
4617  // computation methods (e.g. computeElementalVarsHelper, computeNodalVarsHelper), so it is safe to
4618  // use it here
4619  if (_displaced_problem)
4620  _displaced_problem->syncAuxSolution(*getAuxiliarySystem().currentSolution());
4621 
4622  // Post-aux UserObjects
4623  computeUserObjects(exec_type, Moose::POST_AUX);
4624 
4625  // Return the current flag to None
4627 
4629  {
4630  // we will only check aux variables and postprocessors
4631  // checking more reporter data can be added in the future if needed
4632  std::unique_ptr<NumericVector<Number>> x = _aux->currentSolution()->clone();
4634 
4635  // call THIS execute one more time for checking the possible states
4636  _checking_uo_aux_state = true;
4637  FEProblemBase::execute(exec_type);
4638  _checking_uo_aux_state = false;
4639 
4640  const Real check_tol = 1e-8;
4641 
4642  const Real xnorm = x->l2_norm();
4643  *x -= *_aux->currentSolution();
4644  if (x->l2_norm() > check_tol * xnorm)
4645  {
4646  const auto & sys = _aux->system();
4647  const unsigned int n_vars = sys.n_vars();
4648  std::multimap<Real, std::string, std::greater<Real>> ordered_map;
4649  for (const auto i : make_range(n_vars))
4650  {
4651  const Real vnorm = sys.calculate_norm(*x, i, DISCRETE_L2);
4652  ordered_map.emplace(vnorm, sys.variable_name(i));
4653  }
4654 
4655  std::ostringstream oss;
4656  for (const auto & [error_norm, var_name] : ordered_map)
4657  oss << " {" << var_name << ", " << error_norm << "},\n";
4658 
4659  mooseError("Aux kernels, user objects appear to have states for aux variables on ",
4660  exec_type,
4661  ".\nVariable error norms in descending order:\n",
4662  oss.str());
4663  }
4664 
4666  if (pp_values.size() != new_pp_values.size())
4667  mooseError("Second execution for uo/aux state check should not change the number of "
4668  "real reporter values");
4669 
4670  const Real ppnorm = pp_values.l2_norm();
4671  pp_values -= new_pp_values;
4672  if (pp_values.l2_norm() > check_tol * ppnorm)
4673  {
4674  const auto pp_names = getReporterData().getAllRealReporterFullNames();
4675  std::multimap<Real, std::string, std::greater<Real>> ordered_map;
4676  for (const auto i : index_range(pp_names))
4677  ordered_map.emplace(std::abs(pp_values(i)), pp_names[i]);
4678 
4679  std::ostringstream oss;
4680  for (const auto & [error_norm, pp_name] : ordered_map)
4681  oss << " {" << pp_name << ", " << error_norm << "},\n";
4682 
4683  mooseError("Aux kernels, user objects appear to have states for real reporter values on ",
4684  exec_type,
4685  ".\nErrors of real reporter values in descending order:\n",
4686  oss.str());
4687  }
4688  }
4689 }
MetaPhysicL::DualNumber< V, D, asd > abs(const MetaPhysicL::DualNumber< V, D, asd > &a)
Definition: EigenADReal.h:42
const bool _uo_aux_state_check
Whether or not checking the state of uo/aux evaluation.
const ExecFlagType EXEC_NONE
Definition: Moose.C:27
void setCurrentExecuteOnFlag(const ExecFlagType &)
virtual void computeUserObjects(const ExecFlagType &type, const Moose::AuxGroup &group)
Call compute methods on UserObjects.
virtual void execute(const ExecFlagType &exec_type)
Convenience function for performing execution of MOOSE systems.
const ReporterData & getReporterData() const
Provides const access the ReporterData object.
DenseVector< Real > getAllRealReporterValues() const
Get all real reporter values including postprocessor and vector postprocessor values into a dense vec...
Definition: ReporterData.C:81
unsigned int n_vars
Real l2_norm() const
std::vector< std::string > getAllRealReporterFullNames() const
Get full names of all real reporter values Note: For a postprocessor, the full name is the postproces...
Definition: ReporterData.C:106
const ExecFlagType EXEC_TIMESTEP_BEGIN
Definition: Moose.C:35
void executeSamplers(const ExecFlagType &exec_type)
Performs setup and execute calls for Sampler objects.
std::shared_ptr< AuxiliarySystem > _aux
The auxiliary system.
const ExecFlagType EXEC_LINEAR
Definition: Moose.C:29
AuxiliarySystem & getAuxiliarySystem()
bool _checking_uo_aux_state
Flag used to indicate whether we are doing the uo/aux state check in execute.
const ExecFlagType EXEC_NONLINEAR
Definition: Moose.C:31
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
void customSetup(const ExecFlagType &exec_type) override
void executeControls(const ExecFlagType &exec_type)
Performs setup and execute calls for Control objects.
IntRange< T > make_range(T beg, T end)
void mooseError(Args &&... args) const
Emits an error prefixed with object name and type.
virtual unsigned int size() const override final
std::shared_ptr< DisplacedProblem > _displaced_problem
const ExecFlagType EXEC_SUBDOMAIN
Definition: Moose.C:46
auto index_range(const T &sizable)
void computeSystems(const ExecFlagType &type)
Do generic system computations.
const ExecFlagType EXEC_INITIAL
Definition: Moose.C:28

◆ executeAllObjects()

void FEProblemBase::executeAllObjects ( const ExecFlagType exec_type)
virtualinherited

Definition at line 4544 of file FEProblemBase.C.

Referenced by Executor::exec().

4545 {
4546 }

◆ executeControls()

void FEProblemBase::executeControls ( const ExecFlagType exec_type)
inherited

Performs setup and execute calls for Control objects.

Definition at line 4987 of file FEProblemBase.C.

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

4988 {
4989  if (_control_warehouse[exec_type].hasActiveObjects())
4990  {
4991  TIME_SECTION("executeControls", 1, "Executing Controls");
4992 
4994 
4995  auto controls_wh = _control_warehouse[exec_type];
4996  // Add all of the dependencies into the resolver and sort them
4997  for (const auto & it : controls_wh.getActiveObjects())
4998  {
4999  // Make sure an item with no dependencies comes out too!
5000  resolver.addItem(it);
5001 
5002  std::vector<std::string> & dependent_controls = it->getDependencies();
5003  for (const auto & depend_name : dependent_controls)
5004  {
5005  if (controls_wh.hasActiveObject(depend_name))
5006  {
5007  auto dep_control = controls_wh.getActiveObject(depend_name);
5008  resolver.addEdge(dep_control, it);
5009  }
5010  else
5011  mooseError("The Control \"",
5012  depend_name,
5013  "\" was not created, did you make a "
5014  "spelling mistake or forget to include it "
5015  "in your input file?");
5016  }
5017  }
5018 
5019  const auto & ordered_controls = resolver.getSortedValues();
5020 
5021  if (!ordered_controls.empty())
5022  {
5023  _control_warehouse.setup(exec_type);
5024  // Run the controls in the proper order
5025  for (const auto & control : ordered_controls)
5026  control->execute();
5027  }
5028  }
5029 }
ExecuteMooseObjectWarehouse< Control > _control_warehouse
The control logic warehouse.
const std::vector< T > & getSortedValues()
This function also returns dependency resolved values but with a simpler single vector interface...
void setup(const ExecFlagType &exec_flag, THREAD_ID tid=0) const
void addEdge(const T &a, const T &b)
Add an edge between nodes &#39;a&#39; and &#39;b&#39;.
void addItem(const T &value)
Add an independent item to the set.
void mooseError(Args &&... args) const
Emits an error prefixed with object name and type.
Class that represents the dependecy as a graph.

◆ executeSamplers()

void FEProblemBase::executeSamplers ( const ExecFlagType exec_type)
inherited

Performs setup and execute calls for Sampler objects.

Definition at line 5032 of file FEProblemBase.C.

Referenced by FEProblemBase::execute().

5033 {
5034  // TODO: This should be done in a threaded loop, but this should be super quick so for now
5035  // do a serial loop.
5036  for (THREAD_ID tid = 0; tid < libMesh::n_threads(); ++tid)
5037  {
5038  std::vector<Sampler *> objects;
5039  theWarehouse()
5040  .query()
5041  .condition<AttribSystem>("Sampler")
5042  .condition<AttribThread>(tid)
5043  .condition<AttribExecOns>(exec_type)
5044  .queryInto(objects);
5045 
5046  if (!objects.empty())
5047  {
5048  TIME_SECTION("executeSamplers", 1, "Executing Samplers");
5049  FEProblemBase::objectSetupHelper<Sampler>(objects, exec_type);
5050  FEProblemBase::objectExecuteHelper<Sampler>(objects);
5051  }
5052  }
5053 }
unsigned int n_threads()
TheWarehouse & theWarehouse() const
Query query()
query creates and returns an initialized a query object for querying objects from the warehouse...
Definition: TheWarehouse.h:466
QueryCache & condition(Args &&... args)
Adds a new condition to the query.
Definition: TheWarehouse.h:284
unsigned int THREAD_ID
Definition: MooseTypes.h:209

◆ feBackend()

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

◆ finalizeMultiApps()

void FEProblemBase::finalizeMultiApps ( )
inherited

Definition at line 5445 of file FEProblemBase.C.

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

5446 {
5447  const auto & multi_apps = _multi_apps.getActiveObjects();
5448 
5449  for (const auto & multi_app : multi_apps)
5450  multi_app->finalize();
5451 }
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...
ExecuteMooseObjectWarehouse< MultiApp > _multi_apps
MultiApp Warehouse.

◆ finalNonlinearResidual()

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

Reimplemented from SubProblem.

Definition at line 6554 of file FEProblemBase.C.

6555 {
6556  return _nl[nl_sys_num]->finalNonlinearResidual();
6557 }
std::vector< std::shared_ptr< NonlinearSystemBase > > _nl
The nonlinear systems.

◆ 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 5473 of file FEProblemBase.C.

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

5474 {
5475  const auto & multi_apps = _multi_apps[type].getActiveObjects();
5476 
5477  if (multi_apps.size())
5478  {
5479  if (_verbose_multiapps)
5480  _console << COLOR_CYAN << "\nAdvancing MultiApps on " << type.name() << COLOR_DEFAULT
5481  << std::endl;
5482 
5483  for (const auto & multi_app : multi_apps)
5484  multi_app->finishStep(recurse_through_multiapp_levels);
5485 
5487 
5488  if (_verbose_multiapps)
5489  _console << COLOR_CYAN << "Finished Advancing MultiApps on " << type.name() << "\n"
5490  << COLOR_DEFAULT << std::endl;
5491  }
5492 }
bool _parallel_barrier_messaging
Whether or not information about how many transfers have completed is printed.
const Parallel::Communicator & _communicator
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 libMesh::Parallel::Communicator &comm, bool messaging=true)
This function implements a parallel barrier function but writes progress to stdout.
Definition: MooseUtils.C:323
const std::string & type() const
Get the type of this class.
Definition: MooseBase.h:51
ExecuteMooseObjectWarehouse< MultiApp > _multi_apps
MultiApp Warehouse.
const ConsoleStream _console
An instance of helper class to write streams to the Console objects.
bool _verbose_multiapps
Whether or not to be verbose with multiapps.

◆ 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 6674 of file FEProblemBase.C.

Referenced by TransientMultiApp::solveStep().

6675 {
6677 }
void forceOutput()
Indicates that the next call to outputStep should be forced This is private, users should utilize FEP...
MooseApp & _app
The MOOSE application this is associated with.
Definition: MooseBase.h:84
OutputWarehouse & getOutputWarehouse()
Get the OutputWarehouse objects.
Definition: MooseApp.C:2381

◆ fvBCsIntegrityCheck() [1/2]

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

Definition at line 2251 of file FEProblemBase.h.

2251 { 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 3232 of file FEProblemBase.h.

3233 {
3235  // the user has requested that we don't check integrity so we will honor that
3236  return;
3237 
3238  _fv_bcs_integrity_check = fv_bcs_integrity_check;
3239 }
bool _fv_bcs_integrity_check
Whether to check overlapping Dirichlet and Flux BCs and/or multiple DirichletBCs per sideset...

◆ 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 454 of file SubProblem.C.

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

455 {
457 }
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) ...
Definition: SubProblem.h:1075

◆ getActiveFEVariableCoupleableMatrixTags()

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

Definition at line 390 of file SubProblem.C.

391 {
393 }
std::vector< std::set< TagID > > _active_fe_var_coupleable_matrix_tags
Definition: SubProblem.h:1081

◆ getActiveFEVariableCoupleableVectorTags()

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

Definition at line 396 of file SubProblem.C.

Referenced by MultiAppVariableValueSamplePostprocessorTransfer::execute().

397 {
399 }
std::vector< std::set< TagID > > _active_fe_var_coupleable_vector_tags
Definition: SubProblem.h:1083

◆ getActiveScalarVariableCoupleableMatrixTags()

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

Definition at line 431 of file SubProblem.C.

Referenced by MooseVariableScalar::reinit().

432 {
434 }
std::vector< std::set< TagID > > _active_sc_var_coupleable_matrix_tags
Definition: SubProblem.h:1085

◆ getActiveScalarVariableCoupleableVectorTags()

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

Definition at line 437 of file SubProblem.C.

438 {
440 }
std::vector< std::set< TagID > > _active_sc_var_coupleable_vector_tags
Definition: SubProblem.h:1087

◆ 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 5688 of file FEProblemBase.C.

Referenced by MultiAppVariableValueSampleTransfer::execute().

5689 {
5690  for (auto & sys : _solver_systems)
5691  if (sys->hasVariable(var_name))
5692  return sys->getActualFieldVariable<Real>(tid, var_name);
5693  if (_aux->hasVariable(var_name))
5694  return _aux->getActualFieldVariable<Real>(tid, var_name);
5695 
5696  mooseError("Unknown variable " + var_name);
5697 }
std::vector< std::shared_ptr< SolverSystem > > _solver_systems
Combined container to base pointer of every solver system.
std::shared_ptr< AuxiliarySystem > _aux
The auxiliary system.
void mooseError(Args &&... args) const
Emits an error prefixed with object name and type.

◆ 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 5712 of file FEProblemBase.C.

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

5713 {
5714  for (auto & sys : _solver_systems)
5715  if (sys->hasVariable(var_name))
5716  return sys->getFieldVariable<RealEigenVector>(tid, var_name);
5717  if (_aux->hasVariable(var_name))
5718  return _aux->getFieldVariable<RealEigenVector>(tid, var_name);
5719 
5720  mooseError("Unknown variable " + var_name);
5721 }
std::vector< std::shared_ptr< SolverSystem > > _solver_systems
Combined container to base pointer of every solver system.
std::shared_ptr< AuxiliarySystem > _aux
The auxiliary system.
void mooseError(Args &&... args) const
Emits an error prefixed with object name and type.
Eigen::Matrix< Real, Eigen::Dynamic, 1 > RealEigenVector
Definition: MooseTypes.h:146

◆ 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 796 of file SubProblem.C.

797 {
798  return mesh().getAxisymmetricRadialCoord();
799 }
virtual MooseMesh & mesh()=0
unsigned int getAxisymmetricRadialCoord() const
Returns the desired radial direction for RZ coordinate transformation.
Definition: MooseMesh.C:4263

◆ getBndMaterialPropertyStorage()

const MaterialPropertyStorage& FEProblemBase::getBndMaterialPropertyStorage ( )
inlineinherited

Definition at line 1671 of file FEProblemBase.h.

1671 { return _bnd_material_props; }
MaterialPropertyStorage & _bnd_material_props

◆ getCheckedPointerParam()

template<typename T >
T MooseBaseParameterInterface::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 286 of file MooseBaseParameterInterface.h.

288 {
289  return parameters().getCheckedPointerParam<T>(name, error_string);
290 }
std::string name(const ElemQuality q)
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...
const InputParameters & parameters() const
Get the parameters of the object.

◆ 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 742 of file SubProblem.C.

Referenced by MaterialPropertyDebugOutput::output().

743 {
745 }
std::map< MooseObjectName, std::set< std::string > > _consumed_material_properties
Definition: SubProblem.h:1185

◆ getControlWarehouse()

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

Reference to the control logic warehouse.

Definition at line 2043 of file FEProblemBase.h.

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

2043 { return _control_warehouse; }
ExecuteMooseObjectWarehouse< Control > _control_warehouse
The control logic warehouse.

◆ getConvergence()

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

Gets a Convergence object.

Definition at line 2603 of file FEProblemBase.C.

Referenced by FixedPointSolve::examineFixedPointConvergence(), FixedPointIterationAdaptiveDT::init(), ParsedConvergence::initializeConvergenceSymbol(), SteffensenSolve::initialSetup(), Moose::PetscSupport::petscLinearConverged(), Moose::PetscSupport::petscNonlinearConverged(), FEProblemSolve::solve(), FixedPointSolve::solve(), and FixedPointSolve::solveStep().

2604 {
2605  auto * const ret = dynamic_cast<Convergence *>(_convergences.getActiveObject(name, tid).get());
2606  if (!ret)
2607  mooseError("The Convergence object '", name, "' does not exist.");
2608 
2609  return *ret;
2610 }
virtual const std::string & name() const
Get the name of the class.
Definition: MooseBase.h:57
MooseObjectWarehouse< Convergence > _convergences
convergence warehouse
std::shared_ptr< T > getActiveObject(const std::string &name, THREAD_ID tid=0) const
Base class for convergence criteria.
Definition: Convergence.h:21
void mooseError(Args &&... args) const
Emits an error prefixed with object name and type.

◆ getConvergenceObjects()

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

Gets the Convergence objects.

Definition at line 2613 of file FEProblemBase.C.

2614 {
2615  return _convergences.getActiveObjects(tid);
2616 }
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...
MooseObjectWarehouse< Convergence > _convergences
convergence warehouse

◆ getCoordSystem()

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

Definition at line 1272 of file SubProblem.C.

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

1273 {
1274  return mesh().getCoordSystem(sid);
1275 }
virtual MooseMesh & mesh()=0
Moose::CoordinateSystemType getCoordSystem(SubdomainID sid) const
Get the coordinate system type, e.g.
Definition: MooseMesh.C:4144

◆ getCurrentAlgebraicBndNodeRange()

const ConstBndNodeRange & FEProblemBase::getCurrentAlgebraicBndNodeRange ( )
inherited

Definition at line 9300 of file FEProblemBase.C.

Referenced by NonlinearSystemBase::computeJacobianBlocks(), NonlinearSystemBase::computeJacobianInternal(), NonlinearSystemBase::computeNodalBCs(), NonlinearSystemBase::computeNodalBCsResidualAndJacobian(), NonlinearSystemBase::computeResidualInternal(), and NonlinearSystemBase::setInitialSolution().

9301 {
9303  return *_mesh.getBoundaryNodeRange();
9304 
9306 }
MooseMesh & _mesh
std::unique_ptr< ConstBndNodeRange > _current_algebraic_bnd_node_range
libMesh::StoredRange< MooseMesh::const_bnd_node_iterator, const BndNode * > * getBoundaryNodeRange()
Definition: MooseMesh.C:1286

◆ 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 9284 of file FEProblemBase.C.

Referenced by NonlinearSystemBase::computeDamping(), NonlinearSystemBase::computeJacobianBlocks(), NonlinearSystemBase::computeJacobianInternal(), NonlinearSystemBase::computeResidualAndJacobianInternal(), NonlinearSystemBase::computeResidualInternal(), and NonlinearSystemBase::computeScaling().

9285 {
9288 
9290 }
libMesh::ConstElemRange * getActiveLocalElementRange()
Return pointers to range objects for various types of ranges (local nodes, boundary elems...
Definition: MooseMesh.C:1235
std::unique_ptr< libMesh::ConstElemRange > _current_algebraic_elem_range
MooseMesh & _mesh

◆ getCurrentAlgebraicNodeRange()

const ConstNodeRange & FEProblemBase::getCurrentAlgebraicNodeRange ( )
inherited

Definition at line 9292 of file FEProblemBase.C.

Referenced by NonlinearSystemBase::computeDamping(), NonlinearSystemBase::computeJacobianInternal(), and NonlinearSystemBase::computeResidualInternal().

9293 {
9295  return *_mesh.getLocalNodeRange();
9296 
9298 }
std::unique_ptr< libMesh::ConstNodeRange > _current_algebraic_node_range
libMesh::ConstNodeRange * getLocalNodeRange()
Definition: MooseMesh.C:1272
MooseMesh & _mesh

◆ 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 4532 of file FEProblemBase.C.

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

4533 {
4534  return _current_execute_on_flag;
4535 }
ExecFlagType _current_execute_on_flag
Current execute_on flag.

◆ getCurrentICState()

unsigned short FEProblemBase::getCurrentICState ( )
inherited

Retrieves the current initial condition state.

Returns
current initial condition state

Definition at line 9343 of file FEProblemBase.C.

Referenced by ComputeInitialConditionThread::operator()().

9344 {
9345  return _current_ic_state;
9346 }
unsigned short _current_ic_state

◆ 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 }
void mooseDeprecated(Args &&... args) const
const T & getParam(const std::string &name) const
Retrieve a parameter for the object.
const ParallelParamObject & _parent

◆ 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.
void mooseDeprecated(Args &&... args) const
const ParallelParamObject & _parent

◆ 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.

Referenced by DataFileInterface::getDataFileNameByName().

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  // Throw on error so that if getPath() fails, we can throw an error
50  // with the context of _parent.mooseError()
51  const auto throw_on_error_before = Moose::_throw_on_error;
53  std::optional<std::string> error;
54 
55  // This will search the data paths for this relative path
56  Moose::DataFileUtils::Path found_path;
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  Moose::_throw_on_error = throw_on_error_before;
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 }
Context context
Context for the file (where it came from)
Definition: DataFileUtils.h:48
void mooseInfo(Args &&... args) const
void mooseWarning(Args &&... args) const
Emits a warning prefixed with object name and type.
Representation of a data file path.
Definition: DataFileUtils.h:36
Path getPath(std::string path, const std::optional< std::string > &base=std::optional< std::string >())
Get the data path for a given path, searching the registered data.
Definition: DataFileUtils.C:22
std::optional< std::string > data_name
The name of the data registry the file came from (with context == DATA)
Definition: DataFileUtils.h:50
void mooseError(Args &&... args) const
Emits an error prefixed with object name and type.
bool _throw_on_error
Variable to turn on exceptions during mooseError(), should only be used within MOOSE unit tests or wh...
Definition: Moose.C:758
const ParallelParamObject & _parent

◆ 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 2434 of file FEProblemBase.C.

Referenced by NonlinearSystemBase::computeDiracContributions().

2435 {
2436  // First add in the undisplaced elements
2437  elems = _dirac_kernel_info.getElements();
2438 
2439  if (_displaced_problem)
2440  {
2441  std::set<const Elem *> displaced_elements;
2442  _displaced_problem->getDiracElements(displaced_elements);
2443 
2444  { // Use the ids from the displaced elements to get the undisplaced elements
2445  // and add them to the list
2446  for (const auto & elem : displaced_elements)
2447  elems.insert(_mesh.elemPtr(elem->id()));
2448  }
2449  }
2450 }
virtual Elem * elemPtr(const dof_id_type i)
Definition: MooseMesh.C:3108
MooseMesh & _mesh
std::shared_ptr< DisplacedProblem > _displaced_problem
std::set< const Elem * > & getElements()
Returns a writeable reference to the _elements container.
DiracKernelInfo _dirac_kernel_info
Definition: SubProblem.h:1049

◆ getDiscreteMaterialWarehouse()

const MaterialWarehouse& FEProblemBase::getDiscreteMaterialWarehouse ( ) const
inlineinherited

Definition at line 1894 of file FEProblemBase.h.

1894 { return _discrete_materials; }
MaterialWarehouse _discrete_materials

◆ getDisplacedProblem() [1/2]

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

◆ getDisplacedProblem() [2/2]

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

Definition at line 1613 of file FEProblemBase.h.

1613 { return _displaced_problem; }
std::shared_ptr< DisplacedProblem > _displaced_problem

◆ getDistribution()

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

Definition at line 2673 of file FEProblemBase.C.

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

2674 {
2675  std::vector<Distribution *> objs;
2676  theWarehouse()
2677  .query()
2678  .condition<AttribSystem>("Distribution")
2679  .condition<AttribName>(name)
2680  .queryInto(objs);
2681  if (objs.empty())
2682  mooseError("Unable to find Distribution with name '" + name + "'");
2683  return *(objs[0]);
2684 }
virtual const std::string & name() const
Get the name of the class.
Definition: MooseBase.h:57
TheWarehouse & theWarehouse() const
Query query()
query creates and returns an initialized a query object for querying objects from the warehouse...
Definition: TheWarehouse.h:466
void mooseError(Args &&... args) const
Emits an error prefixed with object name and type.
QueryCache & condition(Args &&... args)
Adds a new condition to the query.
Definition: TheWarehouse.h:284

◆ 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 821 of file FEProblemBase.C.

Referenced by NodalPatchRecoveryBase::finalize().

822 {
824  {
825  std::vector<const DofMap *> dof_maps(es().n_systems());
826  for (const auto i : make_range(es().n_systems()))
827  {
828  const auto & sys = es().get_system(i);
829  dof_maps[i] = &sys.get_dof_map();
830  }
832  std::make_unique<ConstElemRange>(_mesh.getMesh().multi_evaluable_elements_begin(dof_maps),
833  _mesh.getMesh().multi_evaluable_elements_end(dof_maps));
834  }
836 }
const T_sys & get_system(std::string_view name) const
MeshBase & getMesh()
Accessor for the underlying libMesh Mesh object.
Definition: MooseMesh.C:3443
virtual libMesh::EquationSystems & es() override
MooseMesh & _mesh
IntRange< T > make_range(T beg, T end)
std::unique_ptr< libMesh::ConstElemRange > _evaluable_local_elem_range

◆ getExecutor()

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

Definition at line 1995 of file FEProblemBase.h.

1995 { return _app.getExecutor(name); }
virtual const std::string & name() const
Get the name of the class.
Definition: MooseBase.h:57
MooseApp & _app
The MOOSE application this is associated with.
Definition: MooseBase.h:84
Executor * getExecutor() const
Definition: MooseApp.h:350

◆ getFailNextNonlinearConvergenceCheck()

bool FEProblemBase::getFailNextNonlinearConvergenceCheck ( ) const
inlineinherited

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

Definition at line 2374 of file FEProblemBase.h.

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

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

◆ getFailNextSystemConvergenceCheck()

bool FEProblemBase::getFailNextSystemConvergenceCheck ( ) const
inlineinherited

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

Definition at line 2376 of file FEProblemBase.h.

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

bool _fail_next_system_convergence_check

◆ getFunction()

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

Definition at line 2552 of file FEProblemBase.C.

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

2553 {
2554  // This thread lock is necessary since this method will create functions
2555  // for all threads if one is missing.
2556  Threads::spin_mutex::scoped_lock lock(get_function_mutex);
2557 
2558  if (!hasFunction(name, tid))
2559  {
2560  // If we didn't find a function, it might be a default function, attempt to construct one now
2561  std::istringstream ss(name);
2562  Real real_value;
2563 
2564  // First see if it's just a constant. If it is, build a ConstantFunction
2565  if (ss >> real_value && ss.eof())
2566  {
2567  InputParameters params = _factory.getValidParams("ConstantFunction");
2568  params.set<Real>("value") = real_value;
2569  addFunction("ConstantFunction", ss.str(), params);
2570  }
2571  else
2572  {
2574  std::string vars = "x,y,z,t,NaN,pi,e";
2575  if (fp.Parse(name, vars) == -1) // -1 for success
2576  {
2577  // It parsed ok, so build a MooseParsedFunction
2578  InputParameters params = _factory.getValidParams("ParsedFunction");
2579  params.set<std::string>("expression") = name;
2580  addFunction("ParsedFunction", name, params);
2581  }
2582  }
2583 
2584  // Try once more
2585  if (!hasFunction(name, tid))
2586  mooseError("Unable to find function " + name);
2587  }
2588 
2589  auto * const ret = dynamic_cast<Function *>(_functions.getActiveObject(name, tid).get());
2590  if (!ret)
2591  mooseError("No function named ", name, " of appropriate type");
2592 
2593  return *ret;
2594 }
Base class for function objects.
Definition: Function.h:36
Factory & _factory
The Factory for building objects.
Definition: SubProblem.h:1047
Threads::spin_mutex get_function_mutex
char ** vars
T & set(const std::string &name, bool quiet_mode=false)
Returns a writable reference to the named parameters.
The main MOOSE class responsible for handling user-defined parameters in almost every MOOSE system...
virtual const std::string & name() const
Get the name of the class.
Definition: MooseBase.h:57
std::shared_ptr< T > getActiveObject(const std::string &name, THREAD_ID tid=0) const
virtual void addFunction(const std::string &type, const std::string &name, InputParameters &parameters)
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
void mooseError(Args &&... args) const
Emits an error prefixed with object name and type.
MooseObjectWarehouse< Function > _functions
functions
virtual bool hasFunction(const std::string &name, const THREAD_ID tid=0)

◆ 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 1214 of file SubProblem.h.

Referenced by FunctorInterface::getFunctorByName().

1218 {
1219  mooseAssert(tid < _functors.size(), "Too large a thread ID");
1220 
1221  // Log the requestor
1222  _functor_to_requestors["wraps_" + name].insert(requestor_name);
1223 
1224  constexpr bool requested_functor_is_ad =
1225  !std::is_same<T, typename MetaPhysicL::RawType<T>::value_type>::value;
1226 
1227  auto & functor_to_request_info = _functor_to_request_info[tid];
1228 
1229  // Get the requested functor if we already have it
1230  auto & functors = _functors[tid];
1231  if (auto find_ret = functors.find("wraps_" + name); find_ret != functors.end())
1232  {
1233  if (functors.count("wraps_" + name) > 1)
1234  mooseError("Attempted to get a functor with the name '",
1235  name,
1236  "' but multiple (" + std::to_string(functors.count("wraps_" + name)) +
1237  ") functors match. Make sure that you do not have functor material "
1238  "properties, functions, postprocessors or variables with the same names.");
1239 
1240  auto & [true_functor_is, non_ad_functor, ad_functor] = find_ret->second;
1241  auto & functor_wrapper = requested_functor_is_ad ? *ad_functor : *non_ad_functor;
1242 
1243  auto * const functor = dynamic_cast<Moose::Functor<T> *>(&functor_wrapper);
1244  if (!functor)
1245  mooseError("A call to SubProblem::getFunctor requested a functor named '",
1246  name,
1247  "' that returns the type: '",
1248  libMesh::demangle(typeid(T).name()),
1249  "'. However, that functor already exists and returns a different type: '",
1250  functor_wrapper.returnType(),
1251  "'");
1252 
1253  if (functor->template wrapsType<Moose::NullFunctor<T>>())
1254  // Store for future checking when the actual functor gets added
1255  functor_to_request_info.emplace(name,
1256  std::make_pair(requested_functor_is_ad, requestor_is_ad));
1257  else
1258  {
1259  // We already have the actual functor
1260  if (true_functor_is == SubProblem::TrueFunctorIs::UNSET)
1261  mooseError("We already have the functor; it should not be unset");
1262 
1263  // Check for whether this is a valid request
1264  // We allow auxiliary variables and linear variables to be retrieved as non AD
1265  if (!requested_functor_is_ad && requestor_is_ad &&
1266  true_functor_is == SubProblem::TrueFunctorIs::AD &&
1268  mooseError("The AD object '",
1269  requestor_name,
1270  "' is requesting the functor '",
1271  name,
1272  "' as a non-AD functor even though it is truly an AD functor, which is not "
1273  "allowed, since this may unintentionally drop derivatives.");
1274  }
1275 
1276  return *functor;
1277  }
1278 
1279  // We don't have the functor yet but we could have it in the future. We'll create null functors
1280  // for now
1281  functor_to_request_info.emplace(name, std::make_pair(requested_functor_is_ad, requestor_is_ad));
1282  if constexpr (requested_functor_is_ad)
1283  {
1284  typedef typename MetaPhysicL::RawType<T>::value_type NonADType;
1285  typedef T ADType;
1286 
1287  auto emplace_ret =
1288  functors.emplace("wraps_" + name,
1289  std::make_tuple(SubProblem::TrueFunctorIs::UNSET,
1290  std::make_unique<Moose::Functor<NonADType>>(
1291  std::make_unique<Moose::NullFunctor<NonADType>>()),
1292  std::make_unique<Moose::Functor<ADType>>(
1293  std::make_unique<Moose::NullFunctor<ADType>>())));
1294 
1295  return static_cast<Moose::Functor<T> &>(*(requested_functor_is_ad
1296  ? std::get<2>(emplace_ret->second)
1297  : std::get<1>(emplace_ret->second)));
1298  }
1299  else
1300  {
1301  typedef T NonADType;
1302  typedef typename Moose::ADType<T>::type ADType;
1303 
1304  auto emplace_ret =
1305  functors.emplace("wraps_" + name,
1306  std::make_tuple(SubProblem::TrueFunctorIs::UNSET,
1307  std::make_unique<Moose::Functor<NonADType>>(
1308  std::make_unique<Moose::NullFunctor<NonADType>>()),
1309  std::make_unique<Moose::Functor<ADType>>(
1310  std::make_unique<Moose::NullFunctor<ADType>>())));
1311 
1312  return static_cast<Moose::Functor<T> &>(*(requested_functor_is_ad
1313  ? std::get<2>(emplace_ret->second)
1314  : std::get<1>(emplace_ret->second)));
1315  }
1316 }
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...
Definition: SubProblem.h:1157
This is a wrapper that forwards calls to the implementation, which can be switched out at any time wi...
virtual const std::string & name() const
Get the name of the class.
Definition: MooseBase.h:57
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...
Definition: SubProblem.h:1161
std::string demangle(const char *name)
void mooseError(Args &&... args) const
Emits an error prefixed with object name and type.
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.
Definition: SubProblem.h:1144
virtual bool hasLinearVariable(const std::string &var_name) const
Whether or not this problem has this linear variable.
Definition: SubProblem.C:802
A functor that serves as a placeholder during the simulation setup phase if a functor consumer reques...
virtual bool hasAuxiliaryVariable(const std::string &var_name) const
Whether or not this problem has this auxiliary variable.
Definition: SubProblem.C:811

◆ getFVInitialConditionWarehouse()

const FVInitialConditionWarehouse& FEProblemBase::getFVInitialConditionWarehouse ( ) const
inlineinherited

Return FVInitialCondition storage.

Definition at line 1698 of file FEProblemBase.h.

Referenced by ComputeFVInitialConditionThread::operator()(), and ComputeFVInitialConditionThread::printGeneralExecutionInformation().

1698 { return _fv_ics; }
FVInitialConditionWarehouse _fv_ics

◆ 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 8994 of file FEProblemBase.C.

9000 {
9001  if (_materials[Moose::FACE_MATERIAL_DATA].hasActiveBlockObjects(blk_id, tid))
9002  {
9003  auto & this_face_mats =
9005  for (std::shared_ptr<MaterialBase> face_mat : this_face_mats)
9006  if (face_mat->ghostable())
9007  {
9008  face_materials.push_back(face_mat);
9009  auto & var_deps = face_mat->getMooseVariableDependencies();
9010  for (auto * var : var_deps)
9011  {
9012  if (!var->isFV())
9013  mooseError(
9014  "Ghostable materials should only have finite volume variables coupled into them.");
9015  else if (face_mat->hasStatefulProperties())
9016  mooseError("Finite volume materials do not currently support stateful properties.");
9017  variables.insert(var);
9018  }
9019  }
9020  }
9021 
9022  if (_materials[Moose::NEIGHBOR_MATERIAL_DATA].hasActiveBlockObjects(blk_id, tid))
9023  {
9024  auto & this_neighbor_mats =
9026  for (std::shared_ptr<MaterialBase> neighbor_mat : this_neighbor_mats)
9027  if (neighbor_mat->ghostable())
9028  {
9029  neighbor_materials.push_back(neighbor_mat);
9030 #ifndef NDEBUG
9031  auto & var_deps = neighbor_mat->getMooseVariableDependencies();
9032  for (auto * var : var_deps)
9033  {
9034  if (!var->isFV())
9035  mooseError(
9036  "Ghostable materials should only have finite volume variables coupled into them.");
9037  else if (neighbor_mat->hasStatefulProperties())
9038  mooseError("Finite volume materials do not currently support stateful properties.");
9039  auto pr = variables.insert(var);
9040  mooseAssert(!pr.second,
9041  "We should not have inserted any new variables dependencies from our "
9042  "neighbor materials that didn't exist for our face materials");
9043  }
9044 #endif
9045  }
9046  }
9047 }
const std::map< SubdomainID, std::vector< std::shared_ptr< T > > > & getActiveBlockObjects(THREAD_ID tid=0) const
void mooseError(Args &&... args) const
Emits an error prefixed with object name and type.
MaterialWarehouse _materials

◆ getIndicatorWarehouse()

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

Return indicator/marker storage.

Definition at line 1682 of file FEProblemBase.h.

1682 { return _indicators; }
MooseObjectWarehouse< Indicator > _indicators

◆ getInitialConditionWarehouse()

const InitialConditionWarehouse& FEProblemBase::getInitialConditionWarehouse ( ) const
inlineinherited

Return InitialCondition storage.

Definition at line 1693 of file FEProblemBase.h.

Referenced by ComputeBoundaryInitialConditionThread::onNode(), ComputeInitialConditionThread::operator()(), and ComputeInitialConditionThread::printGeneralExecutionInformation().

1693 { return _ics; }
InitialConditionWarehouse _ics

◆ getInterfaceMaterialsWarehouse()

const MaterialWarehouse& FEProblemBase::getInterfaceMaterialsWarehouse ( ) const
inlineinherited

Definition at line 1895 of file FEProblemBase.h.

1895 { return _interface_materials; }
MaterialWarehouse _interface_materials

◆ getInternalSideIndicatorWarehouse()

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

Definition at line 1683 of file FEProblemBase.h.

1684  {
1686  }
MooseObjectWarehouse< InternalSideIndicatorBase > _internal_side_indicators

◆ getLinearConvergenceNames()

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

Gets the linear convergence object name(s).

Definition at line 9097 of file FEProblemBase.C.

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

9098 {
9100  return *_linear_convergence_names;
9101  mooseError("The linear convergence name(s) have not been set.");
9102 }
void mooseError(Args &&... args) const
Emits an error prefixed with object name and type.
std::optional< std::vector< ConvergenceName > > _linear_convergence_names
Linear system(s) convergence name(s) (if any)

◆ 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 3178 of file FEProblemBase.h.

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

3179 {
3180  mooseAssert(sys_num < _linear_systems.size(),
3181  "System number greater than the number of linear systems");
3182  return *_linear_systems[sys_num];
3183 }
std::vector< std::shared_ptr< LinearSystem > > _linear_systems
The vector of linear systems.

◆ 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 3186 of file FEProblemBase.h.

3187 {
3188  mooseAssert(sys_num < _linear_systems.size(),
3189  "System number greater than the number of linear systems");
3190  return *_linear_systems[sys_num];
3191 }
std::vector< std::shared_ptr< LinearSystem > > _linear_systems
The vector of linear systems.

◆ getLinearSystemNames()

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

Definition at line 2455 of file FEProblemBase.h.

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

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

◆ getLineSearch()

LineSearch* FEProblemBase::getLineSearch ( )
inlineoverridevirtualinherited

getter for the MOOSE line search

Implements SubProblem.

Definition at line 702 of file FEProblemBase.h.

Referenced by DisplacedProblem::getLineSearch().

702 { return _line_search.get(); }
std::shared_ptr< LineSearch > _line_search

◆ getMarkerWarehouse()

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

Definition at line 1687 of file FEProblemBase.h.

1687 { return _markers; }
MooseObjectWarehouse< Marker > _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 3727 of file FEProblemBase.C.

Referenced by MaterialPropertyInterface::getMaterialByName().

3731 {
3732  switch (type)
3733  {
3735  name += "_neighbor";
3736  break;
3738  name += "_face";
3739  break;
3740  default:
3741  break;
3742  }
3743 
3744  std::shared_ptr<MaterialBase> material = _all_materials[type].getActiveObject(name, tid);
3745  if (!no_warn && material->getParam<bool>("compute") && type == Moose::BLOCK_MATERIAL_DATA)
3746  mooseWarning("You are retrieving a Material object (",
3747  material->name(),
3748  "), but its compute flag is set to true. This indicates that MOOSE is "
3749  "computing this property which may not be desired and produce un-expected "
3750  "results.");
3751 
3752  return material;
3753 }
virtual const std::string & name() const
Get the name of the class.
Definition: MooseBase.h:57
void mooseWarning(Args &&... args) const
Emits a warning prefixed with object name and type.
std::shared_ptr< T > getActiveObject(const std::string &name, THREAD_ID tid=0) const
const std::string & type() const
Get the type of this class.
Definition: MooseBase.h:51
MaterialWarehouse _all_materials

◆ getMaterialData()

MaterialData & FEProblemBase::getMaterialData ( Moose::MaterialDataType  type,
const THREAD_ID  tid = 0 
) const
inherited

Definition at line 3756 of file FEProblemBase.C.

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

3757 {
3758  switch (type)
3759  {
3761  return _material_props.getMaterialData(tid);
3768  }
3769 
3770  mooseError("FEProblemBase::getMaterialData(): Invalid MaterialDataType ", type);
3771 }
MaterialPropertyStorage & _bnd_material_props
const std::string & type() const
Get the type of this class.
Definition: MooseBase.h:51
void mooseError(Args &&... args) const
Emits an error prefixed with object name and type.
MaterialPropertyStorage & _neighbor_material_props
const MaterialData & getMaterialData(const THREAD_ID tid) const
MaterialPropertyStorage & _material_props

◆ 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 489 of file SubProblem.C.

Referenced by MaterialPropertyInterface::getMaterialPropertyBlockNames().

490 {
491  std::set<SubdomainID> blocks = getMaterialPropertyBlocks(prop_name);
492  std::vector<SubdomainName> block_names;
493  block_names.reserve(blocks.size());
494  for (const auto & block_id : blocks)
495  {
496  SubdomainName name;
497  name = mesh().getMesh().subdomain_name(block_id);
498  if (name.empty())
499  {
500  std::ostringstream oss;
501  oss << block_id;
502  name = oss.str();
503  }
504  block_names.push_back(name);
505  }
506 
507  return block_names;
508 }
virtual MooseMesh & mesh()=0
char ** blocks
virtual const std::string & name() const
Get the name of the class.
Definition: MooseBase.h:57
MeshBase & getMesh()
Accessor for the underlying libMesh Mesh object.
Definition: MooseMesh.C:3443
std::string & subdomain_name(subdomain_id_type id)
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:473

◆ 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 473 of file SubProblem.C.

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

474 {
475  std::set<SubdomainID> blocks;
476 
477  for (const auto & it : _map_block_material_props)
478  {
479  const std::set<std::string> & prop_names = it.second;
480  std::set<std::string>::iterator name_it = prop_names.find(prop_name);
481  if (name_it != prop_names.end())
482  blocks.insert(it.first);
483  }
484 
485  return blocks;
486 }
char ** blocks
std::map< SubdomainID, std::set< std::string > > _map_block_material_props
Map of material properties (block_id -> list of properties)
Definition: SubProblem.h:1052

◆ 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 525 of file SubProblem.C.

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

526 {
527  std::set<BoundaryID> boundaries;
528 
529  for (const auto & it : _map_boundary_material_props)
530  {
531  const std::set<std::string> & prop_names = it.second;
532  std::set<std::string>::iterator name_it = prop_names.find(prop_name);
533  if (name_it != prop_names.end())
534  boundaries.insert(it.first);
535  }
536 
537  return boundaries;
538 }
std::map< BoundaryID, std::set< std::string > > _map_boundary_material_props
Map for boundary material properties (boundary_id -> list of properties)
Definition: SubProblem.h:1055

◆ 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 541 of file SubProblem.C.

Referenced by MaterialPropertyInterface::getMaterialPropertyBoundaryNames().

542 {
543  std::set<BoundaryID> boundaries = getMaterialPropertyBoundaryIDs(prop_name);
544  std::vector<BoundaryName> boundary_names;
545  boundary_names.reserve(boundaries.size());
546  const BoundaryInfo & boundary_info = mesh().getMesh().get_boundary_info();
547 
548  for (const auto & bnd_id : boundaries)
549  {
550  BoundaryName name;
551  if (bnd_id == Moose::ANY_BOUNDARY_ID)
552  name = "ANY_BOUNDARY_ID";
553  else
554  {
555  name = boundary_info.get_sideset_name(bnd_id);
556  if (name.empty())
557  {
558  std::ostringstream oss;
559  oss << bnd_id;
560  name = oss.str();
561  }
562  }
563  boundary_names.push_back(name);
564  }
565 
566  return boundary_names;
567 }
virtual MooseMesh & mesh()=0
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:525
const BoundaryInfo & get_boundary_info() const
virtual const std::string & name() const
Get the name of the class.
Definition: MooseBase.h:57
MeshBase & getMesh()
Accessor for the underlying libMesh Mesh object.
Definition: MooseMesh.C:3443
const std::string & get_sideset_name(boundary_id_type id) const
const BoundaryID ANY_BOUNDARY_ID
Definition: MooseTypes.C:21

◆ getMaterialPropertyRegistry()

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

Definition at line 1660 of file FEProblemBase.h.

Referenced by MaterialBase::checkStatefulSanity().

1661  {
1662  return _material_prop_registry;
1663  }
MaterialPropertyRegistry _material_prop_registry

◆ 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 1670 of file FEProblemBase.h.

1670 { return _material_props; }
MaterialPropertyStorage & _material_props

◆ 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 342 of file SubProblem.C.

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

343 {
344  auto tag_name_upper = MooseUtils::toUpper(tag_name);
345 
346  if (!matrixTagExists(tag_name))
347  mooseError("Matrix tag: ",
348  tag_name,
349  " does not exist. ",
350  "If this is a TimeKernel then this may have happened because you didn't "
351  "specify a Transient Executioner.");
352 
353  return _matrix_tag_name_to_tag_id.at(tag_name_upper);
354 }
std::map< TagName, TagID > _matrix_tag_name_to_tag_id
The currently declared tags.
Definition: SubProblem.h:1041
std::string toUpper(const std::string &name)
Convert supplied string to upper case.
void mooseError(Args &&... args) const
Emits an error prefixed with object name and type.
virtual bool matrixTagExists(const TagName &tag_name) const
Check to see if a particular Tag exists.
Definition: SubProblem.C:328

◆ getMatrixTags()

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

Return all matrix tags in the system, where a tag is represented by a map from name to ID.

Definition at line 253 of file SubProblem.h.

Referenced by NonlinearSystemBase::computeJacobian(), FEProblemBase::computeJacobian(), EigenProblem::computeJacobianAB(), NonlinearSystemBase::computeJacobianBlocks(), EigenProblem::computeJacobianTag(), FEProblemBase::computeLinearSystemSys(), and FEProblemBase::computeResidualAndJacobian().

253 { return _matrix_tag_name_to_tag_id; }
std::map< TagName, TagID > _matrix_tag_name_to_tag_id
The currently declared tags.
Definition: SubProblem.h:1041

◆ 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 1579 of file FEProblemBase.C.

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

1580 {
1582  mooseError("Max QPS uninitialized");
1583  return _max_qps;
1584 }
auto max(const L &left, const R &right)
void mooseError(Args &&... args) const
Emits an error prefixed with object name and type.
unsigned int _max_qps
Maximum number of quadrature points used in the problem.

◆ getMaxScalarOrder()

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

Definition at line 1587 of file FEProblemBase.C.

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

1588 {
1589  return _max_scalar_order;
1590 }
libMesh::Order _max_scalar_order
Maximum scalar variable order.

◆ getMeshDivision()

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

Get a MeshDivision.

Definition at line 2634 of file FEProblemBase.C.

Referenced by NestedDivision::NestedDivision().

2635 {
2636  auto * const ret = dynamic_cast<MeshDivision *>(_mesh_divisions.getActiveObject(name, tid).get());
2637  if (!ret)
2638  mooseError("No MeshDivision object named ", name, " of appropriate type");
2639  return *ret;
2640 }
Base class for MeshDivision objects.
Definition: MeshDivision.h:35
virtual const std::string & name() const
Get the name of the class.
Definition: MooseBase.h:57
std::shared_ptr< T > getActiveObject(const std::string &name, THREAD_ID tid=0) const
MooseObjectWarehouse< MeshDivision > _mesh_divisions
Warehouse to store mesh divisions NOTE: this could probably be moved to the MooseMesh instead of the ...
void mooseError(Args &&... args) const
Emits an error prefixed with object name and type.

◆ getMooseApp()

MooseApp& MooseBase::getMooseApp ( ) const
inlineinherited

Get the MooseApp this class is associated with.

Definition at line 45 of file MooseBase.h.

Referenced by ChainControlSetupAction::act(), AddDefaultConvergenceAction::addDefaultMultiAppFixedPointConvergence(), AddDefaultConvergenceAction::addDefaultNonlinearConvergence(), FEProblemBase::advanceState(), ParsedChainControl::buildFunction(), ReporterTransferInterface::checkHasReporterValue(), AddDefaultConvergenceAction::checkUnusedMultiAppFixedPointConvergenceParameters(), AddDefaultConvergenceAction::checkUnusedNonlinearConvergenceParameters(), Coupleable::checkWritableVar(), ComponentPhysicsInterface::ComponentPhysicsInterface(), MooseBaseParameterInterface::connectControllableParams(), Coupleable::Coupleable(), MortarData::createMortarInterface(), EigenProblem::doFreeNonlinearPowerIterations(), Terminator::execute(), FEProblemSolve::FEProblemSolve(), SolutionInvalidInterface::flagInvalidSolutionInternal(), ChainControl::getChainControlDataSystem(), DefaultConvergenceBase::getSharedExecutionerParam(), ChainControlDataPostprocessor::initialSetup(), MaterialPropertyInterface::MaterialPropertyInterface(), MooseVariableDataFV< OutputType >::MooseVariableDataFV(), ProgressOutput::output(), PetscOutputInterface::petscLinearOutput(), PetscOutputInterface::petscNonlinearOutput(), PetscOutputInterface::PetscOutputInterface(), PostprocessorInterface::postprocessorsAdded(), MultiApp::preTransfer(), Reporter::Reporter(), ReporterInterface::reportersAdded(), and VectorPostprocessorInterface::vectorPostprocessorsAdded().

45 { return _app; }
MooseApp & _app
The MOOSE application this is associated with.
Definition: MooseBase.h:84

◆ getMortarInterface() [1/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 7796 of file FEProblemBase.C.

7800 {
7802  primary_secondary_boundary_pair, primary_secondary_subdomain_pair, on_displaced);
7803 }
const AutomaticMortarGeneration & getMortarInterface(const std::pair< BoundaryID, BoundaryID > &boundary_key, const std::pair< SubdomainID, SubdomainID > &, bool on_displaced) const
Getter to retrieve the AutomaticMortarGeneration object corresponding to the boundary and subdomain k...
Definition: MortarData.C:116
MortarData _mortar_data

◆ getMortarInterface() [2/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 7806 of file FEProblemBase.C.

7810 {
7812  primary_secondary_boundary_pair, primary_secondary_subdomain_pair, on_displaced);
7813 }
const AutomaticMortarGeneration & getMortarInterface(const std::pair< BoundaryID, BoundaryID > &boundary_key, const std::pair< SubdomainID, SubdomainID > &, bool on_displaced) const
Getter to retrieve the AutomaticMortarGeneration object corresponding to the boundary and subdomain k...
Definition: MortarData.C:116
MortarData _mortar_data

◆ getMortarInterfaces()

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

Definition at line 7816 of file FEProblemBase.C.

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

7817 {
7818  return _mortar_data.getMortarInterfaces(on_displaced);
7819 }
const std::unordered_map< std::pair< BoundaryID, BoundaryID >, AutomaticMortarGeneration > & getMortarInterfaces(bool on_displaced) const
Return all automatic mortar generation objects on either the displaced or undisplaced mesh...
Definition: MortarData.h:73
MortarData _mortar_data

◆ getMultiApp()

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

Get a MultiApp object by name.

Definition at line 5284 of file FEProblemBase.C.

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

5285 {
5286  return _multi_apps.getObject(multi_app_name);
5287 }
std::shared_ptr< T > getObject(const std::string &name, THREAD_ID tid=0) const
ExecuteMooseObjectWarehouse< MultiApp > _multi_apps
MultiApp Warehouse.

◆ getMultiAppFixedPointConvergenceName()

const ConvergenceName & FEProblemBase::getMultiAppFixedPointConvergenceName ( ) const
inherited

Gets the MultiApp fixed point convergence object name.

Definition at line 9105 of file FEProblemBase.C.

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

9106 {
9109  else
9110  mooseError("The fixed point convergence name has not been set.");
9111 }
std::optional< ConvergenceName > _multiapp_fixed_point_convergence_name
MultiApp fixed point convergence name.
void mooseError(Args &&... args) const
Emits an error prefixed with object name and type.

◆ 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 5379 of file FEProblemBase.C.

5380 {
5381  if (direction == MultiAppTransfer::TO_MULTIAPP)
5382  return _to_multi_app_transfers;
5383  else if (direction == MultiAppTransfer::FROM_MULTIAPP)
5385  else
5387 }
ExecuteMooseObjectWarehouse< Transfer > _from_multi_app_transfers
Transfers executed just after MultiApps to transfer data from them.
ExecuteMooseObjectWarehouse< Transfer > _to_multi_app_transfers
Transfers executed just before MultiApps to transfer data to them.
ExecuteMooseObjectWarehouse< Transfer > _between_multi_app_transfers
Transfers executed just before MultiApps to transfer data between them.

◆ getMultiAppWarehouse()

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

Definition at line 2067 of file FEProblemBase.h.

Referenced by MooseApp::errorCheck().

2067 { return _multi_apps; }
ExecuteMooseObjectWarehouse< MultiApp > _multi_apps
MultiApp Warehouse.

◆ getNeighborMaterialPropertyStorage()

const MaterialPropertyStorage& FEProblemBase::getNeighborMaterialPropertyStorage ( )
inlineinherited

Definition at line 1672 of file FEProblemBase.h.

1673  {
1674  return _neighbor_material_props;
1675  }
MaterialPropertyStorage & _neighbor_material_props

◆ getNonlinearConvergenceNames()

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

Gets the nonlinear system convergence object name(s).

Definition at line 9073 of file FEProblemBase.C.

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

9074 {
9077  mooseError("The nonlinear system convergence name(s) have not been set.");
9078 }
std::optional< std::vector< ConvergenceName > > _nonlinear_convergence_names
Nonlinear system(s) convergence name(s)
void mooseError(Args &&... args) const
Emits an error prefixed with object name and type.

◆ getNonlinearEvaluableElementRange()

const ConstElemRange & FEProblemBase::getNonlinearEvaluableElementRange ( )
inherited

Definition at line 839 of file FEProblemBase.C.

Referenced by ElemSideNeighborLayersTester::execute().

840 {
842  {
843  std::vector<const DofMap *> dof_maps(_nl.size());
844  for (const auto i : index_range(dof_maps))
845  dof_maps[i] = &_nl[i]->dofMap();
847  std::make_unique<ConstElemRange>(_mesh.getMesh().multi_evaluable_elements_begin(dof_maps),
848  _mesh.getMesh().multi_evaluable_elements_end(dof_maps));
849  }
850 
852 }
std::unique_ptr< libMesh::ConstElemRange > _nl_evaluable_local_elem_range
std::vector< std::shared_ptr< NonlinearSystemBase > > _nl
The nonlinear systems.
MeshBase & getMesh()
Accessor for the underlying libMesh Mesh object.
Definition: MooseMesh.C:3443
MooseMesh & _mesh
auto index_range(const T &sizable)

◆ getNonlinearSystem()

NonlinearSystem & FEProblem::getNonlinearSystem ( const unsigned int  nl_sys_num)
inlineoverridevirtualinherited

Reimplemented from FEProblemBase.

Definition at line 48 of file FEProblem.h.

49 {
50  return *_nl_sys[nl_sys_num];
51 }
std::vector< std::shared_ptr< NonlinearSystem > > _nl_sys
Definition: FEProblem.h:39

◆ getNonlinearSystemBase() [1/2]

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

Definition at line 3134 of file FEProblemBase.h.

Referenced by IterationAdaptiveDT::acceptStep(), Adaptivity::adaptMesh(), DisplacedProblem::addTimeIntegrator(), ADKernelTempl< T >::ADKernelTempl(), ElementSubdomainModifierBase::applyIC(), ArrayKernel::ArrayKernel(), Eigenvalue::checkIntegrity(), PseudoTimestep::currentResidualNorm(), DisplacedProblem::DisplacedProblem(), AB2PredictorCorrector::estimateTimeError(), VariableResidual::execute(), MatrixSymmetryCheck::execute(), GreaterThanLessThanPostprocessor::execute(), Executioner::Executioner(), FiniteDifferencePreconditioner::FiniteDifferencePreconditioner(), NumResidualEvaluations::getValue(), Residual::getValue(), Adaptivity::init(), ReferenceResidualConvergence::initialSetup(), ActivateElementsUserObjectBase::initSolutions(), Kernel::Kernel(), BoundaryElemIntegrityCheckThread::operator()(), DOFMapOutput::output(), SolutionHistory::output(), ConsoleUtils::outputExecutionInformation(), Console::outputSystemInformation(), Moose::PetscSupport::petscSetDefaults(), ReferenceResidualConvergence::ReferenceResidualConvergence(), Moose::PetscSupport::setLineSearchFromParams(), SingleMatrixPreconditioner::SingleMatrixPreconditioner(), AB2PredictorCorrector::step(), DisplacedProblem::syncSolutions(), and Console::writeVariableNorms().

3135 {
3136  mooseAssert(sys_num < _nl.size(), "System number greater than the number of nonlinear systems");
3137  return *_nl[sys_num];
3138 }
std::vector< std::shared_ptr< NonlinearSystemBase > > _nl
The nonlinear systems.

◆ getNonlinearSystemBase() [2/2]

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

Definition at line 3141 of file FEProblemBase.h.

3142 {
3143  mooseAssert(sys_num < _nl.size(), "System number greater than the number of nonlinear systems");
3144  return *_nl[sys_num];
3145 }
std::vector< std::shared_ptr< NonlinearSystemBase > > _nl
The nonlinear systems.

◆ getNonlinearSystemNames()

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

Definition at line 2451 of file FEProblemBase.h.

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

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

◆ getNumCyclesCompleted()

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

Definition at line 1723 of file FEProblemBase.h.

1723 { return _cycles_completed; }
unsigned int _cycles_completed

◆ getParam() [1/2]

template<typename T >
const T & MooseBaseParameterInterface::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 215 of file MooseBaseParameterInterface.h.

Referenced by CreateDisplacedProblemAction::act(), AddPeriodicBCAction::act(), DiffusionPhysicsBase::addPostprocessors(), ADNodalKernel::ADNodalKernel(), ArrayParsedAux::ArrayParsedAux(), AddPeriodicBCAction::autoTranslationBoundaries(), BicubicSplineFunction::BicubicSplineFunction(), ComponentPhysicsInterface::ComponentPhysicsInterface(), FunctorAux::computeValue(), FEProblemBase::createTagSolutions(), CutMeshByLevelSetGenerator::CutMeshByLevelSetGenerator(), DebugResidualAux::DebugResidualAux(), AccumulateReporter::declareLateValues(), DerivativeParsedMaterialTempl< is_ad >::DerivativeParsedMaterialTempl(), DynamicObjectRegistrationAction::DynamicObjectRegistrationAction(), EigenKernel::EigenKernel(), ElementGroupCentroidPositions::ElementGroupCentroidPositions(), FEProblemBase::FEProblemBase(), FEProblemSolve::FEProblemSolve(), FiniteDifferencePreconditioner::FiniteDifferencePreconditioner(), ParsedSubdomainGeneratorBase::functionInitialize(), FVInterfaceKernel::FVInterfaceKernel(), BoundaryLayerSubdomainGenerator::generate(), ExtraNodesetGenerator::generate(), FileMeshGenerator::generate(), BlockDeletionGenerator::generate(), BreakMeshByBlockGenerator::generate(), CoarsenBlockGenerator::generate(), GeneratedMeshGenerator::generate(), RefineBlockGenerator::generate(), RefineSidesetGenerator::generate(), MeshExtruderGenerator::generate(), GenericConstantRankTwoTensorTempl< is_ad >::GenericConstantRankTwoTensorTempl(), GenericConstantSymmetricRankTwoTensorTempl< is_ad >::GenericConstantSymmetricRankTwoTensorTempl(), MooseApp::getCheckpointDirectories(), DataFileInterface::getDataFileName(), ExecutorInterface::getExecutor(), GhostingUserObject::GhostingUserObject(), FixedPointIterationAdaptiveDT::init(), TimeSequenceStepper::init(), IterationAdaptiveDT::init(), AdvancedOutput::init(), AttribThread::initFrom(), AttribSysNum::initFrom(), AttribResidualObject::initFrom(), AttribDisplaced::initFrom(), BlockRestrictable::initializeBlockRestrictable(), BoundaryRestrictable::initializeBoundaryRestrictable(), Console::initialSetup(), IterationAdaptiveDT::limitDTToPostprocessorValue(), MooseMesh::MooseMesh(), MooseStaticCondensationPreconditioner::MooseStaticCondensationPreconditioner(), MooseVariableBase::MooseVariableBase(), MultiSystemSolveObject::MultiSystemSolveObject(), NEML2ModelExecutor::NEML2ModelExecutor(), NestedDivision::NestedDivision(), ConsoleUtils::outputExecutionInformation(), ParsedCurveGenerator::ParsedCurveGenerator(), ParsedElementDeletionGenerator::ParsedElementDeletionGenerator(), ParsedGenerateNodeset::ParsedGenerateNodeset(), ParsedGenerateSideset::ParsedGenerateSideset(), ParsedMaterialTempl< is_ad >::ParsedMaterialTempl(), ParsedNodeTransformGenerator::ParsedNodeTransformGenerator(), ParsedODEKernel::ParsedODEKernel(), ParsedPostprocessor::ParsedPostprocessor(), PiecewiseByBlockFunctorMaterialTempl< T >::PiecewiseByBlockFunctorMaterialTempl(), PiecewiseConstantByBlockMaterialTempl< is_ad >::PiecewiseConstantByBlockMaterialTempl(), ReferenceResidualInterface::ReferenceResidualInterface(), RenameBlockGenerator::RenameBlockGenerator(), Moose::FV::setInterpolationMethod(), SetupMeshAction::setupMesh(), SingleMatrixPreconditioner::SingleMatrixPreconditioner(), TimePeriod::TimePeriod(), UniqueExtraIDMeshGenerator::UniqueExtraIDMeshGenerator(), FunctorIC::value(), VariableCondensationPreconditioner::VariableCondensationPreconditioner(), and VectorOfPostprocessors::VectorOfPostprocessors().

216 {
217  return InputParameters::getParamHelper(name, _pars, static_cast<T *>(0), &_moose_base);
218 }
const MooseBase & _moose_base
The MooseBase object that inherits this class.
const InputParameters & _pars
Parameters of this object, references the InputParameters stored in the InputParametersWarehouse.
static const T & getParamHelper(const std::string &name, const InputParameters &pars, const T *the_type, const MooseBase *moose_base=nullptr)

◆ getParam() [2/2]

template<typename T1 , typename T2 >
std::vector< std::pair< T1, T2 > > MooseBaseParameterInterface::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 279 of file MooseBaseParameterInterface.h.

280 {
281  return _pars.get<T1, T2>(param1, param2);
282 }
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.
const InputParameters & _pars
Parameters of this object, references the InputParameters stored in the InputParametersWarehouse.

◆ 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 4354 of file FEProblemBase.C.

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

4355 {
4356  std::vector<Positions *> objs;
4357  theWarehouse()
4358  .query()
4359  .condition<AttribSystem>("UserObject")
4360  .condition<AttribName>(name)
4361  .queryInto(objs);
4362  if (objs.empty())
4363  mooseError("Unable to find Positions object with name '" + name + "'");
4364  mooseAssert(objs.size() == 1, "Should only find one Positions");
4365  return *(objs[0]);
4366 }
virtual const std::string & name() const
Get the name of the class.
Definition: MooseBase.h:57
TheWarehouse & theWarehouse() const
Query query()
query creates and returns an initialized a query object for querying objects from the warehouse...
Definition: TheWarehouse.h:466
void mooseError(Args &&... args) const
Emits an error prefixed with object name and type.
QueryCache & condition(Args &&... args)
Adds a new condition to the query.
Definition: TheWarehouse.h:284

◆ 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 4388 of file FEProblemBase.C.

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

4390 {
4392  t_index);
4393 }
virtual const std::string & name() const
Get the name of the class.
Definition: MooseBase.h:57
ReporterData _reporter_data
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.
Definition: ReporterData.h:388
Real PostprocessorValue
various MOOSE typedefs
Definition: MooseTypes.h:202
A ReporterName that represents a Postprocessor.
Definition: ReporterName.h:134

◆ getRegularMaterialsWarehouse()

const MaterialWarehouse& FEProblemBase::getRegularMaterialsWarehouse ( ) const
inlineinherited

Definition at line 1893 of file FEProblemBase.h.

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

1893 { return _materials; }
MaterialWarehouse _materials

◆ getRenamedParam()

template<typename T >
const T & MooseBaseParameterInterface::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 229 of file MooseBaseParameterInterface.h.

231 {
232  // this enables having a default on the new parameter but bypassing it with the old one
233  // Most important: accept new parameter
234  if (isParamSetByUser(new_name) && !isParamValid(old_name))
235  return InputParameters::getParamHelper(new_name, _pars, static_cast<T *>(0), &_moose_base);
236  // Second most: accept old parameter
237  else if (isParamValid(old_name) && !isParamSetByUser(new_name))
238  return InputParameters::getParamHelper(old_name, _pars, static_cast<T *>(0), &_moose_base);
239  // Third most: accept default for new parameter
240  else if (isParamValid(new_name) && !isParamValid(old_name))
241  return InputParameters::getParamHelper(new_name, _pars, static_cast<T *>(0), &_moose_base);
242  // Refuse: no default, no value passed
243  else if (!isParamValid(old_name) && !isParamValid(new_name))
244  mooseError(_pars.blockFullpath() + ": parameter '" + new_name +
245  "' is being retrieved without being set.\n"
246  "Did you misspell it?");
247  // Refuse: both old and new parameters set by user
248  else
249  mooseError(_pars.blockFullpath() + ": parameter '" + new_name +
250  "' may not be provided alongside former parameter '" + old_name + "'");
251 }
const MooseBase & _moose_base
The MooseBase object that inherits this class.
void mooseError(Args &&... args)
Emit an error message with the given stringified, concatenated args and terminate the application...
Definition: MooseError.h:302
bool isParamValid(const std::string &name) const
Test if the supplied parameter is valid.
bool isParamSetByUser(const std::string &nm) const
Test if the supplied parameter is set by a user, as opposed to not set or set to default.
std::string blockFullpath() const
const InputParameters & _pars
Parameters of this object, references the InputParameters stored in the InputParametersWarehouse.
static const T & getParamHelper(const std::string &name, const InputParameters &pars, const T *the_type, const MooseBase *moose_base=nullptr)

◆ 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 1080 of file FEProblemBase.h.

Referenced by ReporterTransferInterface::addReporterTransferMode(), ReporterTransferInterface::checkHasReporterValue(), ReporterTransferInterface::clearVectorReporter(), ConstantPostprocessor::ConstantPostprocessor(), AccumulateReporter::declareAccumulateHelper(), ReporterTransferInterface::declareClone(), AccumulateReporter::declareLateValues(), VectorPostprocessor::declareVector(), ReporterTransferInterface::declareVectorClone(), FEProblemBase::execute(), PostprocessorInterface::getPostprocessorValueByNameInternal(), VectorPostprocessorInterface::getVectorPostprocessorByNameHelper(), VectorPostprocessorInterface::getVectorPostprocessorContextByNameHelper(), PostprocessorInterface::hasPostprocessorByName(), VectorPostprocessorInterface::hasVectorPostprocessorByName(), ReporterPositions::initialize(), ReporterTimes::initialize(), MooseParsedFunctionWrapper::initialize(), ParsedConvergence::initializeSymbols(), JSONOutput::initialSetup(), PostprocessorInterface::isDefaultPostprocessorValueByName(), ReporterDebugOutput::output(), Receiver::Receiver(), ReporterTransferInterface::resizeReporter(), ReporterTransferInterface::sumVectorReporter(), ReporterTransferInterface::transferFromVectorReporter(), ReporterTransferInterface::transferReporter(), and ReporterTransferInterface::transferToVectorReporter().

1080 { return _reporter_data; }
ReporterData _reporter_data

◆ 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 1087 of file FEProblemBase.h.

1087 { return _reporter_data; }
ReporterData _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 287 of file Restartable.h.

288 {
289  return declareRestartableDataHelper<T>(data_name, nullptr).get();
290 }

◆ getSampler()

Sampler & FEProblemBase::getSampler ( const std::string &  name,
const THREAD_ID  tid = 0 
)
virtualinherited

Definition at line 2697 of file FEProblemBase.C.

Referenced by SamplerInterface::getSampler(), and SamplerInterface::getSamplerByName().

2698 {
2699  std::vector<Sampler *> objs;
2700  theWarehouse()
2701  .query()
2702  .condition<AttribSystem>("Sampler")
2703  .condition<AttribThread>(tid)
2704  .condition<AttribName>(name)
2705  .queryInto(objs);
2706  if (objs.empty())
2707  mooseError(
2708  "Unable to find Sampler with name '" + name +
2709  "', if you are attempting to access this object in the constructor of another object then "
2710  "the object being retrieved must occur prior to the caller within the input file.");
2711  return *(objs[0]);
2712 }
virtual const std::string & name() const
Get the name of the class.
Definition: MooseBase.h:57
TheWarehouse & theWarehouse() const
Query query()
query creates and returns an initialized a query object for querying objects from the warehouse...
Definition: TheWarehouse.h:466
void mooseError(Args &&... args) const
Emits an error prefixed with object name and type.
QueryCache & condition(Args &&... args)
Adds a new condition to the query.
Definition: TheWarehouse.h:284

◆ 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 5736 of file FEProblemBase.C.

Referenced by FEProblemBase::addInitialCondition(), EigenProblem::adjustEigenVector(), MultiAppScalarToAuxScalarTransfer::execute(), MooseParsedFunctionWrapper::initialize(), ChainControlParsedFunctionWrapper::initializeFunctionInputs(), TableOutput::outputScalarVariables(), and Exodus::outputScalarVariables().

5737 {
5738  for (auto & sys : _solver_systems)
5739  if (sys->hasScalarVariable(var_name))
5740  return sys->getScalarVariable(tid, var_name);
5741  if (_aux->hasScalarVariable(var_name))
5742  return _aux->getScalarVariable(tid, var_name);
5743 
5744  mooseError("Unknown variable " + var_name);
5745 }
std::vector< std::shared_ptr< SolverSystem > > _solver_systems
Combined container to base pointer of every solver system.
std::shared_ptr< AuxiliarySystem > _aux
The auxiliary system.
void mooseError(Args &&... args) const
Emits an error prefixed with object name and type.

◆ 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 68 of file MooseObject.C.

Referenced by MFEMProblem::addBoundaryCondition(), MFEMProblem::addKernel(), and MFEMProblem::addMFEMSolver().

69 {
70  try
71  {
72  return shared_from_this();
73  }
74  catch (std::bad_weak_ptr &)
75  {
76  mooseError(not_shared_error);
77  }
78 }
void mooseError(Args &&... args) const
Emits an error prefixed with object name and type.

◆ getSharedPtr() [2/2]

std::shared_ptr< const MooseObject > MooseObject::getSharedPtr ( ) const
inherited

Definition at line 81 of file MooseObject.C.

82 {
83  try
84  {
85  return shared_from_this();
86  }
87  catch (std::bad_weak_ptr &)
88  {
89  mooseError(not_shared_error);
90  }
91 }
void mooseError(Args &&... args) const
Emits an error prefixed with object name and type.

◆ getSolverSystem() [1/2]

SolverSystem & FEProblemBase::getSolverSystem ( unsigned int  sys_num)
inlineinherited

Get non-constant reference to a solver system.

Parameters
sys_numThe number of the solver system

Definition at line 3148 of file FEProblemBase.h.

Referenced by MooseApp::attachRelationshipManagers(), MooseMesh::cacheFaceInfoVariableOwnership(), MooseMesh::cacheFVElementalDoFs(), MultiSystemSolveObject::MultiSystemSolveObject(), ConsoleUtils::outputSolverSystemInformation(), Moose::PetscSupport::petscSetDefaultKSPNormType(), and Moose::PetscSupport::petscSetDefaultPCSide().

3149 {
3150  mooseAssert(sys_num < _solver_systems.size(),
3151  "System number greater than the number of solver systems");
3152  return *_solver_systems[sys_num];
3153 }
std::vector< std::shared_ptr< SolverSystem > > _solver_systems
Combined container to base pointer of every solver system.

◆ 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 3156 of file FEProblemBase.h.

3157 {
3158  mooseAssert(sys_num < _solver_systems.size(),
3159  "System number greater than the number of solver systems");
3160  return *_solver_systems[sys_num];
3161 }
std::vector< std::shared_ptr< SolverSystem > > _solver_systems
Combined container to base pointer of every solver system.

◆ getSolverSystemNames()

const std::vector<SolverSystemName>& FEProblemBase::getSolverSystemNames ( ) const
inlineinherited
Returns
the solver system names in the problem

Definition at line 2459 of file FEProblemBase.h.

Referenced by ConsoleUtils::outputExecutionInformation().

2459 { return _solver_sys_names; }
std::vector< SolverSystemName > _solver_sys_names
The union of nonlinear and linear system names.

◆ 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 5676 of file FEProblemBase.C.

Referenced by CoupleableMooseVariableDependencyIntermediateInterface::coupledValueByName().

5677 {
5678  for (auto & sys : _solver_systems)
5679  if (sys->hasVariable(var_name))
5680  return sys->getFieldVariable<Real>(tid, var_name);
5681  if (_aux->hasVariable(var_name))
5682  return _aux->getFieldVariable<Real>(tid, var_name);
5683 
5684  mooseError("Unknown variable " + var_name);
5685 }
std::vector< std::shared_ptr< SolverSystem > > _solver_systems
Combined container to base pointer of every solver system.
std::shared_ptr< AuxiliarySystem > _aux
The auxiliary system.
void mooseError(Args &&... args) const
Emits an error prefixed with object name and type.

◆ getSystem()

System & FEProblemBase::getSystem ( const std::string &  var_name)
overridevirtualinherited

Returns the equation system containing the variable provided.

Implements SubProblem.

Definition at line 5748 of file FEProblemBase.C.

Referenced by FEProblemBase::addObjectParamsHelper(), and MultiApp::appTransferVector().

5749 {
5750  const auto [var_in_sys, sys_num] = determineSolverSystem(var_name);
5751  if (var_in_sys)
5752  return _solver_systems[sys_num]->system();
5753  else if (_aux->hasVariable(var_name) || _aux->hasScalarVariable(var_name))
5754  return _aux->system();
5755  else
5756  mooseError("Unable to find a system containing the variable " + var_name);
5757 }
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::vector< std::shared_ptr< SolverSystem > > _solver_systems
Combined container to base pointer of every solver system.
std::shared_ptr< AuxiliarySystem > _aux
The auxiliary system.
void mooseError(Args &&... args) const
Emits an error prefixed with object name and type.

◆ getSystemBase() [1/2]

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 8845 of file FEProblemBase.C.

Referenced by PhysicsBase::copyVariablesFromMesh().

8846 {
8847  if (sys_num < _solver_systems.size())
8848  return *_solver_systems[sys_num];
8849 
8850  return *_aux;
8851 }
std::vector< std::shared_ptr< SolverSystem > > _solver_systems
Combined container to base pointer of every solver system.
std::shared_ptr< AuxiliarySystem > _aux
The auxiliary system.

◆ getSystemBase() [2/2]

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 8854 of file FEProblemBase.C.

8855 {
8856  if (sys_num < _solver_systems.size())
8857  return *_solver_systems[sys_num];
8858 
8859  return *_aux;
8860 }
std::vector< std::shared_ptr< SolverSystem > > _solver_systems
Combined container to base pointer of every solver system.
std::shared_ptr< AuxiliarySystem > _aux
The auxiliary system.

◆ getTimeFromStateArg()

Real FEProblemBase::getTimeFromStateArg ( const Moose::StateArg state) const
inherited

Returns the time associated with the requested state.

Definition at line 6701 of file FEProblemBase.C.

Referenced by Function::evaluate(), Function::evaluateDotHelper(), Function::evaluateGradientHelper(), Function::evaluateHelper(), and ParsedFunctorMaterialTempl< is_ad >::ParsedFunctorMaterialTempl().

6702 {
6704  // If we are any iteration type other than time (e.g. nonlinear), then temporally we are still
6705  // in the present time
6706  return time();
6707 
6708  switch (state.state)
6709  {
6710  case 0:
6711  return time();
6712 
6713  case 1:
6714  return timeOld();
6715 
6716  default:
6717  mooseError("Unhandled state ", state.state, " in FEProblemBase::getTimeFromStateArg");
6718  }
6719 }
virtual Real & time() const
SolutionIterationType iteration_type
The solution iteration type, e.g. time or nonlinear.
void mooseError(Args &&... args) const
Emits an error prefixed with object name and type.
virtual Real & timeOld() const
unsigned int state
The state.

◆ 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 5357 of file FEProblemBase.C.

5358 {
5359  if (direction == MultiAppTransfer::TO_MULTIAPP)
5361  else if (direction == MultiAppTransfer::FROM_MULTIAPP)
5363  else
5365 }
ExecuteMooseObjectWarehouse< Transfer > _from_multi_app_transfers
Transfers executed just after MultiApps to transfer data from them.
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...
ExecuteMooseObjectWarehouse< Transfer > _to_multi_app_transfers
Transfers executed just before MultiApps to transfer data to them.
const std::string & type() const
Get the type of this class.
Definition: MooseBase.h:51
ExecuteMooseObjectWarehouse< Transfer > _between_multi_app_transfers
Transfers executed just before MultiApps to transfer data between them.

◆ getTransfers() [2/2]

std::vector< std::shared_ptr< Transfer > > FEProblemBase::getTransfers ( Transfer::DIRECTION  direction) const
inherited

Definition at line 5368 of file FEProblemBase.C.

5369 {
5370  if (direction == MultiAppTransfer::TO_MULTIAPP)
5372  else if (direction == MultiAppTransfer::FROM_MULTIAPP)
5374  else
5376 }
ExecuteMooseObjectWarehouse< Transfer > _from_multi_app_transfers
Transfers executed just after MultiApps to transfer data from them.
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...
ExecuteMooseObjectWarehouse< Transfer > _to_multi_app_transfers
Transfers executed just before MultiApps to transfer data to them.
ExecuteMooseObjectWarehouse< Transfer > _between_multi_app_transfers
Transfers executed just before MultiApps to transfer data between them.

◆ getUseNonlinear()

virtual bool FEProblem::getUseNonlinear ( ) const
inlinevirtualinherited

Definition at line 27 of file FEProblem.h.

27 { return _use_nonlinear; }
bool _use_nonlinear
Definition: FEProblem.h:38

◆ 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
Const reference to the user object

Definition at line 1107 of file FEProblemBase.h.

Referenced by ChangeOverFixedPointPostprocessor::ChangeOverFixedPointPostprocessor(), ChangeOverTimePostprocessor::ChangeOverTimePostprocessor(), ExtraIDIntegralReporter::ExtraIDIntegralReporter(), ReporterTransferInterface::hideVariableHelper(), EigenExecutionerBase::init(), Eigenvalue::init(), IntegralPreservingFunctionIC::initialSetup(), and EigenExecutionerBase::inversePowerIteration().

1108  {
1109  std::vector<T *> objs;
1110  theWarehouse()
1111  .query()
1112  .condition<AttribSystem>("UserObject")
1113  .condition<AttribThread>(tid)
1114  .condition<AttribName>(name)
1115  .queryInto(objs);
1116  if (objs.empty())
1117  mooseError("Unable to find user object with name '" + name + "'");
1118  return *(objs[0]);
1119  }
virtual const std::string & name() const
Get the name of the class.
Definition: MooseBase.h:57
TheWarehouse & theWarehouse() const
Query query()
query creates and returns an initialized a query object for querying objects from the warehouse...
Definition: TheWarehouse.h:466
void mooseError(Args &&... args) const
Emits an error prefixed with object name and type.
QueryCache & condition(Args &&... args)
Adds a new condition to the query.
Definition: TheWarehouse.h:284

◆ 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 4338 of file FEProblemBase.C.

Referenced by MFEMProblem::addBoundaryCondition(), MFEMProblem::addKernel(), MultiAppConservativeTransfer::adjustTransferredSolution(), MultiAppConservativeTransfer::adjustTransferredSolutionNearestPoint(), MultiApp::appUserObjectBase(), EigenProblem::checkProblemIntegrity(), FunctorAux::computeValue(), UserObjectInterface::getUserObjectBaseByName(), UserObjectInterface::getUserObjectFromFEProblem(), VectorPostprocessorInterface::hasVectorPostprocessorByName(), MultiAppCloneReporterTransfer::initialSetup(), MultiAppConservativeTransfer::initialSetup(), Terminator::initialSetup(), and FunctorIC::value().

4339 {
4340  std::vector<UserObject *> objs;
4341  theWarehouse()
4342  .query()
4343  .condition<AttribSystem>("UserObject")
4344  .condition<AttribThread>(tid)
4345  .condition<AttribName>(name)
4346  .queryInto(objs);
4347  if (objs.empty())
4348  mooseError("Unable to find user object with name '" + name + "'");
4349  mooseAssert(objs.size() == 1, "Should only find one UO");
4350  return *(objs[0]);
4351 }
virtual const std::string & name() const
Get the name of the class.
Definition: MooseBase.h:57
TheWarehouse & theWarehouse() const
Query query()
query creates and returns an initialized a query object for querying objects from the warehouse...
Definition: TheWarehouse.h:466
void mooseError(Args &&... args) const
Emits an error prefixed with object name and type.
QueryCache & condition(Args &&... args)
Adds a new condition to the query.
Definition: TheWarehouse.h:284

◆ getUserObjectJacobianVariables()

const std::vector<const MooseVariableFEBase *>& FEProblemBase::getUserObjectJacobianVariables ( const THREAD_ID  tid) const
inlineinherited

Definition at line 309 of file FEProblemBase.h.

Referenced by ComputeUserObjectsThread::onBoundary(), and ComputeUserObjectsThread::onElement().

310  {
311  return _uo_jacobian_moose_vars[tid];
312  }
std::vector< std::vector< const MooseVariableFEBase * > > _uo_jacobian_moose_vars

◆ getUserObjects()

const ExecuteMooseObjectWarehouse<UserObject>& FEProblemBase::getUserObjects ( ) const
inlineinherited

Definition at line 1094 of file FEProblemBase.h.

1095  {
1097  "This function is deprecated, use theWarehouse().query() to construct a query instead");
1098  return _all_user_objects;
1099  }
void mooseDeprecated(Args &&... args) const
ExecuteMooseObjectWarehouse< UserObject > _all_user_objects

◆ getVariable() [1/4]

virtual MooseVariableFieldBase& SubProblem::getVariable
inlineinherited

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  }
This class provides an interface for common operations on field variables of both FE and FV types wit...
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...
Generic class for solving transient nonlinear problems.
Definition: SubProblem.h:78

◆ getVariable() [2/4]

virtual const MooseVariableFieldBase& SubProblem::getVariable
inherited

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.

◆ getVariable() [3/4]

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 5666 of file FEProblemBase.C.

Referenced by FEProblemBase::addFVInitialCondition(), FEProblemBase::addInitialCondition(), EigenProblem::adjustEigenVector(), MultiAppConservativeTransfer::adjustTransferredSolution(), MultiAppConservativeTransfer::adjustTransferredSolutionNearestPoint(), MultiAppGeneralFieldNearestLocationTransfer::buildKDTrees(), MultiAppGeneralFieldShapeEvaluationTransfer::buildMeshFunctions(), CoupleableMooseVariableDependencyIntermediateInterface::coupledArrayValueByName(), CoupleableMooseVariableDependencyIntermediateInterface::coupledValueByName(), NodalNormalsCorner::execute(), NodalNormalsEvaluator::execute(), MultiAppProjectionTransfer::execute(), MultiAppUserObjectTransfer::execute(), NodalNormalsPreprocessor::execute(), MultiAppGeometricInterpolationTransfer::execute(), LazyCoupleable::init(), AdvancedOutput::initAvailableLists(), MultiAppGeneralFieldNearestLocationTransfer::initialSetup(), MultiAppProjectionTransfer::initialSetup(), AdvancedOutput::initShowHideLists(), SolutionUserObjectBase::pointValueWrapper(), PointwiseRenormalizeVector::PointwiseRenormalizeVector(), BlockRestrictionDebugOutput::printBlockRestrictionMap(), MultiAppProjectionTransfer::projectSolution(), MultiAppDofCopyTransfer::transfer(), and MultiAppShapeEvaluationTransfer::transferVariable().

5670 {
5671  return getVariableHelper(
5672  tid, var_name, expected_var_type, expected_var_field_type, _solver_systems, *_aux);
5673 }
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...
std::vector< std::shared_ptr< SolverSystem > > _solver_systems
Combined container to base pointer of every solver system.
std::shared_ptr< AuxiliarySystem > _aux
The auxiliary system.

◆ getVariable() [4/4]

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

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  }
This class provides an interface for common operations on field variables of both FE and FV types wit...
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 =0
Returns the variable reference for requested variable which must be of the expected_var_type (Nonline...
Generic class for solving transient nonlinear problems.
Definition: SubProblem.h:78

◆ getVariableHelper() [1/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 818 of file SubProblem.C.

824 {
825  // Eventual return value
826  MooseVariableFEBase * var = nullptr;
827 
828  const auto [var_in_sys, sys_num] = determineSolverSystem(var_name);
829 
830  // First check that the variable is found on the expected system.
831  if (expected_var_type == Moose::VarKindType::VAR_ANY)
832  {
833  if (var_in_sys)
834  var = &(systems[sys_num]->getVariable(tid, var_name));
835  else if (aux.hasVariable(var_name))
836  var = &(aux.getVariable(tid, var_name));
837  else
838  mooseError("Unknown variable " + var_name);
839  }
840  else if (expected_var_type == Moose::VarKindType::VAR_SOLVER && var_in_sys &&
841  systems[sys_num]->hasVariable(var_name))
842  var = &(systems[sys_num]->getVariable(tid, var_name));
843  else if (expected_var_type == Moose::VarKindType::VAR_AUXILIARY && aux.hasVariable(var_name))
844  var = &(aux.getVariable(tid, var_name));
845  else
846  {
847  std::string expected_var_type_string =
848  (expected_var_type == Moose::VarKindType::VAR_SOLVER ? "nonlinear" : "auxiliary");
849  mooseError("No ",
850  expected_var_type_string,
851  " variable named ",
852  var_name,
853  " found. "
854  "Did you specify an auxiliary variable when you meant to specify a nonlinear "
855  "variable (or vice-versa)?");
856  }
857 
858  // Now make sure the var found has the expected field type.
859  if ((expected_var_field_type == Moose::VarFieldType::VAR_FIELD_ANY) ||
860  (expected_var_field_type == var->fieldType()))
861  return *var;
862  else
863  {
864  std::string expected_var_field_type_string =
865  MooseUtils::toLower(Moose::stringify(expected_var_field_type));
866  std::string var_field_type_string = MooseUtils::toLower(Moose::stringify(var->fieldType()));
867 
868  mooseError("No ",
869  expected_var_field_type_string,
870  " variable named ",
871  var_name,
872  " found. "
873  "Did you specify a ",
874  var_field_type_string,
875  " variable when you meant to specify a ",
876  expected_var_field_type_string,
877  " variable?");
878  }
879 }
std::string toLower(const std::string &name)
Convert supplied string to lower case.
This class provides an interface for common operations on field variables of both FE and FV types wit...
std::string stringify(const T &t)
conversion to string
Definition: Conversion.h:64
virtual bool hasVariable(const std::string &var_name) const =0
Whether or not this problem has the variable.
virtual bool hasVariable(const std::string &var_name) const
Query a system for a variable.
Definition: SystemBase.C:834
virtual std::pair< bool, unsigned int > determineSolverSystem(const std::string &var_name, bool error_if_not_found=false) const =0
virtual Moose::VarFieldType fieldType() const =0
Field type of this variable.
void mooseError(Args &&... args) const
Emits an error prefixed with object name and type.
MooseVariableFieldBase & getVariable(THREAD_ID tid, const std::string &var_name) const
Gets a reference to a variable of with specified name.
Definition: SystemBase.C:89

◆ getVariableHelper() [2/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().

◆ 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 8605 of file FEProblemBase.C.

Referenced by EigenProblem::adjustEigenVector(), and AdvancedOutput::initAvailableLists().

8606 {
8607  std::vector<VariableName> names;
8608 
8609  for (auto & sys : _solver_systems)
8610  {
8611  const std::vector<VariableName> & var_names = sys->getVariableNames();
8612  names.insert(names.end(), var_names.begin(), var_names.end());
8613  }
8614 
8615  const std::vector<VariableName> & aux_var_names = _aux->getVariableNames();
8616  names.insert(names.end(), aux_var_names.begin(), aux_var_names.end());
8617 
8618  return names;
8619 }
std::vector< std::shared_ptr< SolverSystem > > _solver_systems
Combined container to base pointer of every solver system.
std::shared_ptr< AuxiliarySystem > _aux
The auxiliary system.

◆ 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 4432 of file FEProblemBase.C.

Referenced by VectorPostprocessorInterface::isVectorPostprocessorDistributedByName(), CSV::output(), and XMLOutput::outputVectorPostprocessors().

4434 {
4435  return getUserObject<VectorPostprocessor>(object_name, tid);
4436 }

◆ 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 4413 of file FEProblemBase.C.

Referenced by HistogramVectorPostprocessor::execute().

4416 {
4418  VectorPostprocessorReporterName(object_name, vector_name), t_index);
4419 }
A ReporterName that represents a VectorPostprocessor.
Definition: ReporterName.h:143
ReporterData _reporter_data
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.
Definition: ReporterData.h:388
std::vector< Real > VectorPostprocessorValue
Definition: MooseTypes.h:203

◆ getVectorTag()

const VectorTag & SubProblem::getVectorTag ( const TagID  tag_id) const
virtualinherited

Get a VectorTag from a TagID.

Reimplemented in DisplacedProblem.

Definition at line 161 of file SubProblem.C.

Referenced by FEProblemBase::addCachedResidualDirectly(), Assembly::cacheResidual(), Assembly::cacheResidualNodes(), DisplacedProblem::getVectorTag(), SubProblem::getVectorTags(), TaggingInterface::prepareVectorTagInternal(), TaggingInterface::prepareVectorTagLower(), TaggingInterface::prepareVectorTagNeighbor(), FEProblemBase::setResidual(), and FEProblemBase::setResidualNeighbor().

162 {
163  mooseAssert(verifyVectorTags(), "Vector tag storage invalid");
164 
165  if (!vectorTagExists(tag_id))
166  mooseError("Vector tag with ID ", tag_id, " does not exist");
167 
168  return _vector_tags[tag_id];
169 }
std::vector< VectorTag > _vector_tags
The declared vector tags.
Definition: SubProblem.h:1167
bool verifyVectorTags() const
Verify the integrity of _vector_tags and _typed_vector_tags.
Definition: SubProblem.C:241
virtual bool vectorTagExists(const TagID tag_id) const
Check to see if a particular Tag exists.
Definition: SubProblem.h:201
void mooseError(Args &&... args) const
Emits an error prefixed with object name and type.

◆ getVectorTagID()

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

Get a TagID from a TagName.

Reimplemented in DisplacedProblem.

Definition at line 203 of file SubProblem.C.

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(), MultiAppDofCopyTransfer::transfer(), TaggingInterface::useVectorTag(), Coupleable::vectorTagDofValueHelper(), and Coupleable::vectorTagValueHelper().

204 {
205  mooseAssert(verifyVectorTags(), "Vector tag storage invalid");
206 
207  const auto tag_name_upper = MooseUtils::toUpper(tag_name);
208  const auto search = _vector_tags_name_map.find(tag_name_upper);
209  if (search != _vector_tags_name_map.end())
210  return search->second;
211 
212  std::string message =
213  tag_name_upper == "TIME"
214  ? ".\n\nThis may occur if "
215  "you have a TimeKernel in your problem but did not specify a transient executioner."
216  : "";
217  mooseError("Vector tag '", tag_name_upper, "' does not exist", message);
218 }
std::string toUpper(const std::string &name)
Convert supplied string to upper case.
bool verifyVectorTags() const
Verify the integrity of _vector_tags and _typed_vector_tags.
Definition: SubProblem.C:241
std::map< TagName, TagID > _vector_tags_name_map
Map of vector tag TagName to TagID.
Definition: SubProblem.h:1177
void mooseError(Args &&... args) const
Emits an error prefixed with object name and type.

◆ getVectorTags() [1/2]

std::vector< VectorTag > SubProblem::getVectorTags ( const std::set< TagID > &  tag_ids) const
inherited

Definition at line 172 of file SubProblem.C.

Referenced by FEProblemBase::computeLinearSystemSys(), EigenProblem::computeResidualAB(), FEProblemBase::computeResidualAndJacobian(), NonlinearSystemBase::computeResidualInternal(), EigenProblem::computeResidualTag(), ComputeResidualAndJacobianThread::determineObjectWarehouses(), DisplacedProblem::getVectorTags(), SubProblem::numVectorTags(), ComputeMortarFunctor::operator()(), and FEProblemBase::setCurrentResidualVectorTags().

173 {
174  mooseAssert(verifyVectorTags(), "Vector tag storage invalid");
175 
176  std::vector<VectorTag> tags;
177  tags.reserve(tag_ids.size());
178  for (const auto & tag_id : tag_ids)
179  tags.push_back(getVectorTag(tag_id));
180  return tags;
181 }
bool verifyVectorTags() const
Verify the integrity of _vector_tags and _typed_vector_tags.
Definition: SubProblem.C:241
virtual const VectorTag & getVectorTag(const TagID tag_id) const
Get a VectorTag from a TagID.
Definition: SubProblem.C:161

◆ getVectorTags() [2/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 184 of file SubProblem.C.

185 {
186  mooseAssert(verifyVectorTags(), "Vector tag storage invalid");
187 
189  return _vector_tags;
190  else
191  return _typed_vector_tags[type];
192 }
std::vector< VectorTag > _vector_tags
The declared vector tags.
Definition: SubProblem.h:1167
bool verifyVectorTags() const
Verify the integrity of _vector_tags and _typed_vector_tags.
Definition: SubProblem.C:241
const std::string & type() const
Get the type of this class.
Definition: MooseBase.h:51
std::vector< std::vector< VectorTag > > _typed_vector_tags
The vector tags associated with each VectorTagType This is kept separate from _vector_tags for quick ...
Definition: SubProblem.h:1174

◆ 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 5700 of file FEProblemBase.C.

5701 {
5702  for (auto & sys : _solver_systems)
5703  if (sys->hasVariable(var_name))
5704  return sys->getFieldVariable<RealVectorValue>(tid, var_name);
5705  if (_aux->hasVariable(var_name))
5706  return _aux->getFieldVariable<RealVectorValue>(tid, var_name);
5707 
5708  mooseError("Unknown variable " + var_name);
5709 }
std::vector< std::shared_ptr< SolverSystem > > _solver_systems
Combined container to base pointer of every solver system.
std::shared_ptr< AuxiliarySystem > _aux
The auxiliary system.
void mooseError(Args &&... args) const
Emits an error prefixed with object name and type.

◆ getXFEM()

std::shared_ptr<XFEMInterface> FEProblemBase::getXFEM ( )
inlineinherited

Get a pointer to the XFEM controller object.

Definition at line 1740 of file FEProblemBase.h.

1740 { 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 672 of file SubProblem.h.

Referenced by SystemBase::augmentSendList(), NearestNodeLocator::findNodes(), DisplacedProblem::ghostedElems(), and NearestNodeLocator::updatePatch().

672 { return _ghosted_elems; }
std::set< dof_id_type > _ghosted_elems
Elements that should have Dofs ghosted to the local processor.
Definition: SubProblem.h:1093

◆ ghostGhostedBoundaries()

void FEProblemBase::ghostGhostedBoundaries ( )
overridevirtualinherited

Causes the boundaries added using addGhostedBoundary to actually be ghosted.

Implements SubProblem.

Definition at line 2087 of file FEProblemBase.C.

Referenced by DisplacedProblem::ghostGhostedBoundaries(), FEProblemBase::init(), and FEProblemBase::meshChanged().

2088 {
2089  TIME_SECTION("ghostGhostedBoundaries", 3, "Ghosting Ghosted Boundaries");
2090 
2092 
2093  if (_displaced_problem)
2095 }
MooseMesh & _mesh
std::shared_ptr< DisplacedProblem > _displaced_problem
void ghostGhostedBoundaries()
Actually do the ghosting of boundaries that need to be ghosted to this processor. ...
Definition: MooseMesh.C:3309
MooseMesh * _displaced_mesh

◆ 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 460 of file SubProblem.C.

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

461 {
463 }
std::vector< unsigned int > _has_active_elemental_moose_variables
Whether or not there is currently a list of active elemental moose variables.
Definition: SubProblem.h:1079

◆ 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 5868 of file FEProblemBase.C.

Referenced by ComputeMarkerThread::onElement(), FEProblemBase::reinitMaterials(), FEProblemBase::reinitMaterialsBoundary(), FEProblemBase::reinitMaterialsFace(), FEProblemBase::reinitMaterialsInterface(), and FEProblemBase::reinitMaterialsNeighbor().

5869 {
5870  return _has_active_material_properties[tid];
5871 }
std::vector< unsigned char > _has_active_material_properties
Whether there are active material properties on each thread.

◆ hasAuxiliaryVariable()

bool SubProblem::hasAuxiliaryVariable ( const std::string &  var_name) const
virtualinherited

Whether or not this problem has this auxiliary variable.

Definition at line 811 of file SubProblem.C.

Referenced by SubProblem::getFunctor(), and NearestNodeValueAux::NearestNodeValueAux().

812 {
813  return systemBaseAuxiliary().hasVariable(var_name);
814 }
virtual const SystemBase & systemBaseAuxiliary() const =0
Return the auxiliary system object as a base class reference.
virtual bool hasVariable(const std::string &var_name) const
Query a system for a variable.
Definition: SystemBase.C:834

◆ 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 511 of file SubProblem.C.

512 {
513  auto it = _map_block_material_props.find(bid);
514  if (it == _map_block_material_props.end())
515  return false;
516 
517  if (it->second.count(prop_name) > 0)
518  return true;
519  else
520  return false;
521 }
std::map< SubdomainID, std::set< std::string > > _map_block_material_props
Map of material properties (block_id -> list of properties)
Definition: SubProblem.h:1052

◆ 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 570 of file SubProblem.C.

571 {
572  auto it = _map_boundary_material_props.find(bid);
573  if (it == _map_boundary_material_props.end())
574  return false;
575 
576  if (it->second.count(prop_name) > 0)
577  return true;
578  else
579  return false;
580 }
std::map< BoundaryID, std::set< std::string > > _map_boundary_material_props
Map for boundary material properties (boundary_id -> list of properties)
Definition: SubProblem.h:1055

◆ 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 2597 of file FEProblemBase.C.

Referenced by ParsedConvergence::initializeSymbols().

2598 {
2599  return _convergences.hasActiveObject(name, tid);
2600 }
virtual const std::string & name() const
Get the name of the class.
Definition: MooseBase.h:57
MooseObjectWarehouse< Convergence > _convergences
convergence warehouse
bool hasActiveObject(const std::string &name, THREAD_ID tid=0) const
Convenience functions for checking/getting specific objects.

◆ hasDampers()

bool FEProblemBase::hasDampers ( )
inlineinherited

Whether or not this system has dampers.

Definition at line 1244 of file FEProblemBase.h.

Referenced by NonlinearSystemBase::preInit(), and NonlinearSystem::solve().

1244 { return _has_dampers; }
bool _has_dampers
Whether or not this system has any Dampers associated with it.

◆ hasException()

virtual bool FEProblemBase::hasException ( )
inlinevirtualinherited

Whether or not an exception has occurred.

Definition at line 475 of file FEProblemBase.h.

Referenced by NonlinearSystem::converged(), ThreadedElementLoop< ConstElemPointerRange >::keepGoing(), and ThreadedNodeLoop< ConstBndNodeRange, ConstBndNodeRange::const_iterator >::keepGoing().

475 { return _has_exception; }
bool _has_exception
Whether or not an exception has occurred.

◆ hasFunction()

bool FEProblemBase::hasFunction ( const std::string &  name,
const THREAD_ID  tid = 0 
)
virtualinherited

Definition at line 2546 of file FEProblemBase.C.

Referenced by DiffusionCG::addFEBCs(), DiffusionCG::addFEKernels(), DiffusionFV::addFVBCs(), DiffusionFV::addFVKernels(), FunctorIC::FunctorIC(), FEProblemBase::getFunction(), FunctionInterface::hasFunctionByName(), MooseParsedFunctionWrapper::initialize(), ChainControlParsedFunctionWrapper::initializeFunctionInputs(), ParsedConvergence::initializeSymbols(), and MooseParsedFunction::initialSetup().

2547 {
2548  return _functions.hasActiveObject(name, tid);
2549 }
virtual const std::string & name() const
Get the name of the class.
Definition: MooseBase.h:57
bool hasActiveObject(const std::string &name, THREAD_ID tid=0) const
Convenience functions for checking/getting specific objects.
MooseObjectWarehouse< Function > _functions
functions

◆ 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 1264 of file SubProblem.C.

Referenced by FunctorInterface::isFunctor().

1265 {
1266  mooseAssert(tid < _functors.size(), "Too large a thread ID");
1267  auto & functors = _functors[tid];
1268  return (functors.find("wraps_" + name) != functors.end());
1269 }
virtual const std::string & name() const
Get the name of the class.
Definition: MooseBase.h:57
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.
Definition: SubProblem.h:1144

◆ 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 1320 of file SubProblem.h.

1321 {
1322  mooseAssert(tid < _functors.size(), "Too large a thread ID");
1323  auto & functors = _functors[tid];
1324 
1325  const auto & it = functors.find("wraps_" + name);
1326  constexpr bool requested_functor_is_ad =
1327  !std::is_same<T, typename MetaPhysicL::RawType<T>::value_type>::value;
1328 
1329  if (it == functors.end())
1330  return false;
1331  else
1332  return dynamic_cast<Moose::Functor<T> *>(
1333  requested_functor_is_ad ? std::get<2>(it->second).get() : std::get<1>(it->second).get());
1334 }
T * get(const std::unique_ptr< T > &u)
The MooseUtils::get() specializations are used to support making forwards-compatible code changes fro...
Definition: MooseUtils.h:1155
This is a wrapper that forwards calls to the implementation, which can be switched out at any time wi...
virtual const std::string & name() const
Get the name of the class.
Definition: MooseBase.h:57
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.
Definition: SubProblem.h:1144

◆ hasInitialAdaptivity() [1/2]

bool FEProblemBase::hasInitialAdaptivity ( ) const
inlineinherited

Return a Boolean indicating whether initial AMR is turned on.

Definition at line 1728 of file FEProblemBase.h.

1728 { return _adaptivity.getInitialSteps() > 0; }
Adaptivity _adaptivity
unsigned int getInitialSteps() const
Pull out the number of initial steps previously set by calling init()
Definition: Adaptivity.h:98

◆ hasInitialAdaptivity() [2/2]

bool FEProblemBase::hasInitialAdaptivity ( ) const
inlineinherited

Return a Boolean indicating whether initial AMR is turned on.

Definition at line 1733 of file FEProblemBase.h.

1733 { return false; }

◆ hasJacobian()

bool FEProblemBase::hasJacobian ( ) const
inherited

Returns _has_jacobian.

Definition at line 8760 of file FEProblemBase.C.

8761 {
8762  return _has_jacobian;
8763 }
bool _has_jacobian
Indicates if the Jacobian was computed.

◆ hasLinearConvergenceObjects()

bool FEProblemBase::hasLinearConvergenceObjects ( ) const
inherited

Whether we have linear convergence objects.

Definition at line 9081 of file FEProblemBase.C.

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

9082 {
9083  // If false,this means we have not set one, not that we are querying this too early
9084  // TODO: once there is a default linear CV object, error on the 'not set' case
9085  return _linear_convergence_names.has_value();
9086 }
std::optional< std::vector< ConvergenceName > > _linear_convergence_names
Linear system(s) convergence name(s) (if any)

◆ hasLinearVariable()

bool SubProblem::hasLinearVariable ( const std::string &  var_name) const
virtualinherited

Whether or not this problem has this linear variable.

Definition at line 802 of file SubProblem.C.

Referenced by SubProblem::getFunctor().

803 {
804  for (const auto i : make_range(numLinearSystems()))
805  if (systemBaseLinear(i).hasVariable(var_name))
806  return true;
807  return false;
808 }
virtual bool hasVariable(const std::string &var_name) const =0
Whether or not this problem has the variable.
IntRange< T > make_range(T beg, T end)
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.
virtual std::size_t numLinearSystems() const =0

◆ hasMortarCoupling()

virtual bool FEProblemBase::hasMortarCoupling ( ) const
inlinevirtualinherited

Whether the simulation has mortar coupling.

Definition at line 2190 of file FEProblemBase.h.

2190 { return _has_mortar; }
bool _has_mortar
Whether the simulation requires mortar coupling.

◆ hasMultiApp()

bool FEProblemBase::hasMultiApp ( const std::string &  name) const
inherited

Definition at line 5278 of file FEProblemBase.C.

5279 {
5280  return _multi_apps.hasActiveObject(multi_app_name);
5281 }
ExecuteMooseObjectWarehouse< MultiApp > _multi_apps
MultiApp Warehouse.
bool hasActiveObject(const std::string &name, THREAD_ID tid=0) const
Convenience functions for checking/getting specific objects.

◆ hasMultiApps() [1/2]

bool FEProblemBase::hasMultiApps ( ) const
inlineinherited

Returns whether or not the current simulation has any multiapps.

Definition at line 1230 of file FEProblemBase.h.

Referenced by DefaultMultiAppFixedPointConvergence::checkConvergence(), FEProblemBase::checkProblemIntegrity(), DefaultMultiAppFixedPointConvergence::DefaultMultiAppFixedPointConvergence(), FixedPointIterationAdaptiveDT::init(), and DefaultMultiAppFixedPointConvergence::preExecute().

1230 { return _multi_apps.hasActiveObjects(); }
ExecuteMooseObjectWarehouse< MultiApp > _multi_apps
MultiApp Warehouse.
bool hasActiveObjects(THREAD_ID tid=0) const

◆ hasMultiApps() [2/2]

bool FEProblemBase::hasMultiApps ( ExecFlagType  type) const
inherited

Definition at line 5272 of file FEProblemBase.C.

5273 {
5274  return _multi_apps[type].hasActiveObjects();
5275 }
const std::string & type() const
Get the type of this class.
Definition: MooseBase.h:51
ExecuteMooseObjectWarehouse< MultiApp > _multi_apps
MultiApp Warehouse.
bool hasActiveObjects(THREAD_ID tid=0) const

◆ hasNeighborCoupling()

virtual bool FEProblemBase::hasNeighborCoupling ( ) const
inlinevirtualinherited

Whether the simulation has neighbor coupling.

Definition at line 2185 of file FEProblemBase.h.

bool _has_internal_edge_residual_objects
Whether the problem has dgkernels or interface kernels.

◆ 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 2438 of file FEProblemBase.h.

Referenced by DisplacedProblem::hasNonlocalCoupling().

2438 { return _has_nonlocal_coupling; }
bool _has_nonlocal_coupling
Indicates if nonlocal coupling is required/exists.

◆ hasPostprocessor()

bool FEProblemBase::hasPostprocessor ( const std::string &  name) const
inherited

Deprecated.

Use hasPostprocessorValueByName

Definition at line 4405 of file FEProblemBase.C.

Referenced by GenericFunctorTimeDerivativeMaterialTempl< is_ad >::GenericFunctorTimeDerivativeMaterialTempl().

4406 {
4407  mooseDeprecated("FEProblemBase::hasPostprocssor is being removed; use "
4408  "hasPostprocessorValueByName instead.");
4410 }
void mooseDeprecated(Args &&... args) const
virtual const std::string & name() const
Get the name of the class.
Definition: MooseBase.h:57
bool hasPostprocessorValueByName(const PostprocessorName &name) const
Whether or not a Postprocessor value exists by a given name.

◆ 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 4382 of file FEProblemBase.C.

Referenced by DiffusionCG::addFEBCs(), DiffusionCG::addFEKernels(), DiffusionFV::addFVKernels(), FunctorAux::computeValue(), FunctorExtremaPositions::FunctorExtremaPositions(), FEProblemBase::hasPostprocessor(), MooseParsedFunction::initialSetup(), and FunctorIC::value().

4383 {
4385 }
virtual const std::string & name() const
Get the name of the class.
Definition: MooseBase.h:57
ReporterData _reporter_data
Real PostprocessorValue
various MOOSE typedefs
Definition: MooseTypes.h:202
A ReporterName that represents a Postprocessor.
Definition: ReporterName.h:134
bool hasReporterValue(const ReporterName &reporter_name) const
Return True if a Reporter value with the given type and name have been created.
Definition: ReporterData.h:445

◆ 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 5724 of file FEProblemBase.C.

Referenced by FEProblemBase::addInitialCondition(), FEProblemBase::addObjectParamsHelper(), EigenProblem::adjustEigenVector(), FEProblemBase::checkDuplicatePostprocessorVariableNames(), AdvancedOutput::initAvailableLists(), MooseParsedFunctionWrapper::initialize(), ChainControlParsedFunctionWrapper::initializeFunctionInputs(), AdvancedOutput::initShowHideLists(), and Split::setup().

5725 {
5726  for (auto & sys : _solver_systems)
5727  if (sys->hasScalarVariable(var_name))
5728  return true;
5729  if (_aux->hasScalarVariable(var_name))
5730  return true;
5731 
5732  return false;
5733 }
std::vector< std::shared_ptr< SolverSystem > > _solver_systems
Combined container to base pointer of every solver system.
std::shared_ptr< AuxiliarySystem > _aux
The auxiliary system.

◆ 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 1164 of file SubProblem.C.

Referenced by SystemBase::addScalingVector().

1165 {
1166  for (const THREAD_ID tid : make_range(libMesh::n_threads()))
1167  assembly(tid, nl_sys_num).hasScalingVector();
1168 }
unsigned int n_threads()
void hasScalingVector()
signals this object that a vector containing variable scaling factors should be used when doing resid...
Definition: Assembly.C:4579
virtual Assembly & assembly(const THREAD_ID tid, const unsigned int sys_num)=0
IntRange< T > make_range(T beg, T end)
unsigned int THREAD_ID
Definition: MooseTypes.h:209

◆ hasSetMultiAppFixedPointConvergenceName()

bool FEProblemBase::hasSetMultiAppFixedPointConvergenceName ( ) const
inlineinherited

Returns true if the problem has set the fixed point convergence name.

Definition at line 657 of file FEProblemBase.h.

658  {
659  return _multiapp_fixed_point_convergence_name.has_value();
660  }
std::optional< ConvergenceName > _multiapp_fixed_point_convergence_name
MultiApp fixed point convergence name.

◆ hasSolverVariable()

bool FEProblemBase::hasSolverVariable ( const std::string &  var_name) const
inherited

Definition at line 5656 of file FEProblemBase.C.

5657 {
5658  for (auto & sys : _solver_systems)
5659  if (sys->hasVariable(var_name))
5660  return true;
5661 
5662  return false;
5663 }
std::vector< std::shared_ptr< SolverSystem > > _solver_systems
Combined container to base pointer of every solver system.

◆ hasTimeIntegrator()

bool FEProblemBase::hasTimeIntegrator ( ) const
inlineinherited

Returns whether or not this Problem has a TimeIntegrator.

Definition at line 1976 of file FEProblemBase.h.

Referenced by TransientBase::setupTimeIntegrator().

1976 { return _has_time_integrator; }
bool _has_time_integrator
Indicates whether or not this executioner has a time integrator (during setup)

◆ hasUOAuxStateCheck()

bool FEProblemBase::hasUOAuxStateCheck ( ) const
inlineinherited

Whether or not MOOSE will perform a user object/auxiliary kernel state check.

Definition at line 189 of file FEProblemBase.h.

189 { return _uo_aux_state_check; }
const bool _uo_aux_state_check
Whether or not checking the state of uo/aux evaluation.

◆ 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 4369 of file FEProblemBase.C.

Referenced by MFEMProblem::addMFEMFESpaceFromMOOSEVariable(), FEProblemBase::addPostprocessor(), FEProblemBase::addReporter(), FEProblemBase::addVectorPostprocessor(), FunctorAux::computeValue(), DistributedPositions::DistributedPositions(), UserObjectInterface::hasUserObjectByName(), VectorPostprocessorInterface::hasVectorPostprocessorByName(), ReporterTransferInterface::hideVariableHelper(), ParsedDownSelectionPositions::initialize(), and TransformedPositions::TransformedPositions().

4370 {
4371  std::vector<UserObject *> objs;
4372  theWarehouse()
4373  .query()
4374  .condition<AttribSystem>("UserObject")
4375  .condition<AttribThread>(0)
4376  .condition<AttribName>(name)
4377  .queryInto(objs);
4378  return !objs.empty();
4379 }
virtual const std::string & name() const
Get the name of the class.
Definition: MooseBase.h:57
TheWarehouse & theWarehouse() const
Query query()
query creates and returns an initialized a query object for querying objects from the warehouse...
Definition: TheWarehouse.h:466
QueryCache & condition(Args &&... args)
Adds a new condition to the query.
Definition: TheWarehouse.h:284

◆ hasVariable()

bool FEProblemBase::hasVariable ( const std::string &  var_name) const
overridevirtualinherited

Whether or not this problem has the variable.

Implements SubProblem.

Definition at line 5644 of file FEProblemBase.C.

Referenced by DiffusionCG::addFEBCs(), DiffusionCG::addFEKernels(), FEProblemBase::addFVInitialCondition(), DiffusionFV::addFVKernels(), FEProblemBase::addInitialCondition(), FEProblemBase::addObjectParamsHelper(), MultiAppTransfer::checkVariable(), FunctorIC::FunctorIC(), LazyCoupleable::init(), AdvancedOutput::initAvailableLists(), MooseParsedFunction::initialSetup(), AdvancedOutput::initShowHideLists(), BlockRestrictionDebugOutput::printBlockRestrictionMap(), and Split::setup().

5645 {
5646  for (auto & sys : _solver_systems)
5647  if (sys->hasVariable(var_name))
5648  return true;
5649  if (_aux->hasVariable(var_name))
5650  return true;
5651 
5652  return false;
5653 }
std::vector< std::shared_ptr< SolverSystem > > _solver_systems
Combined container to base pointer of every solver system.
std::shared_ptr< AuxiliarySystem > _aux
The auxiliary system.

◆ haveADObjects() [1/4]

bool SubProblem::haveADObjects ( ) const
inlineinherited

Method for reading wehther we have any ad objects.

Definition at line 771 of file SubProblem.h.

Referenced by FEProblemBase::computeJacobianTags(), FEProblemBase::computeResidualAndJacobian(), and FEProblemBase::init().

771 { return _have_ad_objects; }
bool _have_ad_objects
AD flag indicating whether any AD objects have been added.
Definition: SubProblem.h:1114

◆ haveADObjects() [2/4]

virtual void SubProblem::haveADObjects
inlineinherited

Method for setting whether we have any ad objects.

Definition at line 767 of file SubProblem.h.

767 { _have_ad_objects = have_ad_objects; }
bool _have_ad_objects
AD flag indicating whether any AD objects have been added.
Definition: SubProblem.h:1114

◆ haveADObjects() [3/4]

bool SubProblem::haveADObjects
inlineinherited

Method for reading wehther we have any ad objects.

Definition at line 771 of file SubProblem.h.

771 { return _have_ad_objects; }
bool _have_ad_objects
AD flag indicating whether any AD objects have been added.
Definition: SubProblem.h:1114

◆ haveADObjects() [4/4]

void FEProblemBase::haveADObjects ( bool  have_ad_objects)
overridevirtualinherited

Method for setting whether we have any ad objects.

Reimplemented from SubProblem.

Definition at line 8837 of file FEProblemBase.C.

8838 {
8839  _have_ad_objects = have_ad_objects;
8840  if (_displaced_problem)
8841  _displaced_problem->SubProblem::haveADObjects(have_ad_objects);
8842 }
bool _have_ad_objects
AD flag indicating whether any AD objects have been added.
Definition: SubProblem.h:1114
std::shared_ptr< DisplacedProblem > _displaced_problem

◆ haveDisplaced()

bool FEProblemBase::haveDisplaced ( ) const
inlinefinaloverridevirtualinherited

Whether we have a displaced problem in our simulation.

Implements SubProblem.

Definition at line 2281 of file FEProblemBase.h.

2281 { return _displaced_problem.get(); }
std::shared_ptr< DisplacedProblem > _displaced_problem

◆ 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 1009 of file SubProblem.h.

Referenced by AdvancedOutput::initAvailableLists(), and FEProblemBase::meshChanged().

1009 { return _have_p_refinement; }
bool _have_p_refinement
Whether p-refinement has been requested at any point during the simulation.
Definition: SubProblem.h:1202

◆ haveXFEM()

bool FEProblemBase::haveXFEM ( )
inlineinherited

Find out whether the current analysis is using XFEM.

Definition at line 1743 of file FEProblemBase.h.

Referenced by FEProblemBase::initialSetup(), FixedPointSolve::solveStep(), TransientBase::takeStep(), and FEProblemBase::updateMeshXFEM().

1743 { return _xfem != nullptr; }
std::shared_ptr< XFEMInterface > _xfem
Pointer to XFEM controller.

◆ identifyVariableGroupsInNL()

bool FEProblemBase::identifyVariableGroupsInNL ( ) const
inlineinherited

Whether to identify variable groups in nonlinear systems.

This affects dof ordering

Definition at line 2443 of file FEProblemBase.h.

Referenced by NonlinearSystemBase::NonlinearSystemBase().

const bool _identify_variable_groups_in_nl
Whether to identify variable groups in nonlinear systems. This affects dof ordering.

◆ 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 1948 of file FEProblemBase.h.

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

1948 { return _ignore_zeros_in_jacobian; }
bool _ignore_zeros_in_jacobian
Whether to ignore zeros in the Jacobian, thereby leading to a reduced sparsity pattern.

◆ immediatelyPrintInvalidSolution()

bool FEProblemBase::immediatelyPrintInvalidSolution ( ) const
inlineinherited

Whether or not the solution invalid warnings are printed out immediately.

Definition at line 1973 of file FEProblemBase.h.

Referenced by SolutionInvalidInterface::flagInvalidSolutionInternal().

const bool & _immediately_print_invalid_solution

◆ incrementMultiAppTStep()

void FEProblemBase::incrementMultiAppTStep ( ExecFlagType  type)
inherited

Advance the MultiApps t_step (incrementStepOrReject) associated with the ExecFlagType.

Definition at line 5463 of file FEProblemBase.C.

Referenced by TransientBase::incrementStepOrReject().

5464 {
5465  const auto & multi_apps = _multi_apps[type].getActiveObjects();
5466 
5467  if (multi_apps.size())
5468  for (const auto & multi_app : multi_apps)
5469  multi_app->incrementTStep(_time);
5470 }
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...
const std::string & type() const
Get the type of this class.
Definition: MooseBase.h:51
ExecuteMooseObjectWarehouse< MultiApp > _multi_apps
MultiApp Warehouse.

◆ init()

void FEProblem::init ( )
overridevirtualinherited

Reimplemented from FEProblemBase.

Definition at line 86 of file FEProblem.C.

87 {
88  auto check_threads = [this]()
89  {
90  if (libMesh::n_threads() != 1)
91  mooseError("Static condensation may not be used with multiple threads");
92  };
93 
94  for (const auto nl_sys_index : make_range(_num_nl_sys))
95  {
96  auto & libmesh_sys = _nl_sys[nl_sys_index]->sys();
97  if (libmesh_sys.has_static_condensation())
98  {
99  check_threads();
100  for (const auto tid : make_range(libMesh::n_threads()))
101  _assembly[tid][nl_sys_index]->addStaticCondensation(libmesh_sys.get_static_condensation());
102  }
103  }
104  for (const auto l_sys_index : make_range(_num_linear_sys))
105  {
106  auto & libmesh_sys = _linear_systems[l_sys_index]->linearImplicitSystem();
107  if (libmesh_sys.has_static_condensation())
108  {
109  check_threads();
110  for (const auto tid : make_range(libMesh::n_threads()))
111  _assembly[tid][_num_nl_sys + l_sys_index]->addStaticCondensation(
112  libmesh_sys.get_static_condensation());
113  }
114  }
115 
117 }
std::vector< std::shared_ptr< NonlinearSystem > > _nl_sys
Definition: FEProblem.h:39
const std::size_t _num_nl_sys
The number of nonlinear systems.
unsigned int n_threads()
virtual void init() override
std::vector< std::vector< std::unique_ptr< Assembly > > > _assembly
The Assembly objects.
IntRange< T > make_range(T beg, T end)
void mooseError(Args &&... args) const
Emits an error prefixed with object name and type.
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.

◆ 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 8206 of file FEProblemBase.C.

Referenced by ActivateElementsUserObjectBase::finalize(), ElementSubdomainModifierBase::initElementStatefulProps(), and FEProblemBase::initialSetup().

8207 {
8210  if (threaded)
8211  Threads::parallel_reduce(elem_range, cmt);
8212  else
8213  cmt(elem_range, true);
8214 }
MaterialPropertyStorage & _bnd_material_props
void parallel_reduce(const Range &range, Body &body, const Partitioner &)
std::vector< std::vector< std::unique_ptr< Assembly > > > _assembly
The Assembly objects.
MaterialPropertyStorage & _neighbor_material_props
MaterialPropertyStorage & _material_props

◆ initialAdaptMesh()

void FEProblemBase::initialAdaptMesh ( )
virtualinherited

Definition at line 7884 of file FEProblemBase.C.

Referenced by FEProblemBase::initialSetup().

7885 {
7886  unsigned int n = adaptivity().getInitialSteps();
7887  _cycles_completed = 0;
7888  if (n)
7889  {
7890  if (!_mesh.interiorLowerDBlocks().empty() || !_mesh.boundaryLowerDBlocks().empty())
7891  mooseError("HFEM does not support mesh adaptivity currently.");
7892 
7893  TIME_SECTION("initialAdaptMesh", 2, "Performing Initial Adaptivity");
7894 
7895  for (unsigned int i = 0; i < n; i++)
7896  {
7898  computeMarkers();
7899 
7901  {
7902  meshChanged(
7903  /*intermediate_change=*/false, /*contract_mesh=*/true, /*clean_refinement_flags=*/true);
7904 
7905  // reproject the initial condition
7906  projectSolution();
7907 
7909  }
7910  else
7911  {
7912  _console << "Mesh unchanged, skipping remaining steps..." << std::endl;
7913  return;
7914  }
7915  }
7916  }
7917 }
bool initialAdaptMesh()
Used during initial adaptivity.
Definition: Adaptivity.C:268
virtual void meshChanged()
Deprecated.
const std::set< SubdomainID > & interiorLowerDBlocks() const
Definition: MooseMesh.h:1403
unsigned int _cycles_completed
virtual void computeMarkers()
void projectSolution()
virtual void computeIndicators()
MooseMesh & _mesh
Adaptivity _adaptivity
const std::set< SubdomainID > & boundaryLowerDBlocks() const
Definition: MooseMesh.h:1407
unsigned int getInitialSteps() const
Pull out the number of initial steps previously set by calling init()
Definition: Adaptivity.h:98
void mooseError(Args &&... args) const
Emits an error prefixed with object name and type.
const ConsoleStream _console
An instance of helper class to write streams to the Console objects.
Adaptivity & adaptivity()

◆ 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.

Definition at line 855 of file FEProblemBase.C.

Referenced by Steady::init(), TransientBase::init(), EigenExecutionerBase::init(), Eigenvalue::init(), and MFEMProblem::initialSetup().

856 {
857  TIME_SECTION("initialSetup", 2, "Performing Initial Setup");
858 
860 
862  mooseError("Checkpoint recovery and restart and exodus restart are all mutually exclusive.");
863 
865  mooseWarning("MOOSE may fail to catch an exception when the \"skip_exception_check\" parameter "
866  "is used. If you receive a terse MPI error during execution, remove this "
867  "parameter and rerun your simulation");
868 
869  // set state flag indicating that we are in or beyond initialSetup.
870  // This can be used to throw errors in methods that _must_ be called at construction time.
871  _started_initial_setup = true;
873 
874  // Setup the solution states (current, old, etc) in each system based on
875  // its default and the states requested of each of its variables
876  for (const auto i : index_range(_solver_systems))
877  {
878  _solver_systems[i]->initSolutionState();
879  if (getDisplacedProblem())
880  getDisplacedProblem()->solverSys(i).initSolutionState();
881  }
882  _aux->initSolutionState();
883  if (getDisplacedProblem())
884  getDisplacedProblem()->auxSys().initSolutionState();
885 
886  // always execute to get the max number of DoF per element and node needed to initialize phi_zero
887  // variables
888  dof_id_type global_max_var_n_dofs_per_elem = 0;
889  for (const auto i : index_range(_solver_systems))
890  {
891  auto & sys = *_solver_systems[i];
892  dof_id_type max_var_n_dofs_per_elem;
893  dof_id_type max_var_n_dofs_per_node;
894  {
895  TIME_SECTION("computingMaxDofs", 3, "Computing Max Dofs Per Element");
896 
897  MaxVarNDofsPerElem mvndpe(*this, sys);
899  max_var_n_dofs_per_elem = mvndpe.max();
900  _communicator.max(max_var_n_dofs_per_elem);
901 
902  MaxVarNDofsPerNode mvndpn(*this, sys);
904  max_var_n_dofs_per_node = mvndpn.max();
905  _communicator.max(max_var_n_dofs_per_node);
906  global_max_var_n_dofs_per_elem =
907  std::max(global_max_var_n_dofs_per_elem, max_var_n_dofs_per_elem);
908  }
909 
910  {
911  TIME_SECTION("assignMaxDofs", 5, "Assigning Maximum Dofs Per Elem");
912 
913  sys.assignMaxVarNDofsPerElem(max_var_n_dofs_per_elem);
915  if (displaced_problem)
916  displaced_problem->solverSys(i).assignMaxVarNDofsPerElem(max_var_n_dofs_per_elem);
917 
918  sys.assignMaxVarNDofsPerNode(max_var_n_dofs_per_node);
919  if (displaced_problem)
920  displaced_problem->solverSys(i).assignMaxVarNDofsPerNode(max_var_n_dofs_per_node);
921  }
922  }
923 
924  {
925  TIME_SECTION("resizingVarValues", 5, "Resizing Variable Values");
926 
927  for (unsigned int tid = 0; tid < libMesh::n_threads(); ++tid)
928  {
929  _phi_zero[tid].resize(global_max_var_n_dofs_per_elem, std::vector<Real>(getMaxQps(), 0.));
930  _grad_phi_zero[tid].resize(global_max_var_n_dofs_per_elem,
931  std::vector<RealGradient>(getMaxQps(), RealGradient(0.)));
932  _second_phi_zero[tid].resize(global_max_var_n_dofs_per_elem,
933  std::vector<RealTensor>(getMaxQps(), RealTensor(0.)));
934  }
935  }
936 
937  // Set up stateful material property redistribution, if we suspect
938  // it may be necessary later.
940 
942  {
943  // Only load all of the vectors if we're recovering
945 
946  // This forces stateful material property loading to be an exact one-to-one match
947  if (_app.isRecovering())
949  props->setRecovering();
950 
951  TIME_SECTION("restore", 3, "Restoring from backup");
952 
953  // We could have a cached backup when this app is a sub-app and has been given a Backup
954  if (!_app.hasInitialBackup())
956  else
958 
964  if (_app.isRestarting())
965  {
966  if (_app.hasStartTime())
968  else
969  _time_old = _time;
970  }
971  }
972  else
973  {
975 
976  if (reader)
977  {
978  TIME_SECTION("copyingFromExodus", 3, "Copying Variables From Exodus");
979 
980  for (auto & sys : _solver_systems)
981  sys->copyVars(*reader);
982  _aux->copyVars(*reader);
983  }
984  else
985  {
986  if (_solver_systems[0]->hasVarCopy() || _aux->hasVarCopy())
987  mooseError("Need Exodus reader to restart variables but the reader is not available\n"
988  "Use either FileMesh with an Exodus mesh file or FileMeshGenerator with an "
989  "Exodus mesh file and with use_for_exodus_restart equal to true");
990  }
991  }
992 
993  // Perform output related setups
995 
996  // Flush all output to _console that occur during construction and initialization of objects
998 
999  // Build Refinement and Coarsening maps for stateful material projections if necessary
1000  if ((_adaptivity.isOn() || _num_grid_steps) &&
1003  {
1005  mooseError("Stateful neighbor material properties do not work with mesh adaptivity");
1006 
1008  }
1009 
1010  if (!_app.isRecovering())
1011  {
1018  {
1019  if (!_app.isUltimateMaster())
1020  mooseError(
1021  "Doing extra refinements when restarting is NOT supported for sub-apps of a MultiApp");
1022 
1024  }
1025  }
1026 
1027  unsigned int n_threads = libMesh::n_threads();
1028 
1029  // Convergence initial setup
1030  {
1031  TIME_SECTION("convergenceInitialSetup", 5, "Initializing Convergence objects");
1032 
1033  for (THREAD_ID tid = 0; tid < n_threads; tid++)
1035  }
1036 
1037  // UserObject initialSetup
1038  std::set<std::string> depend_objects_ic = _ics.getDependObjects();
1039  std::set<std::string> depend_objects_aux = _aux->getDependObjects();
1040 
1041  // This replaces all prior updateDependObjects calls on the old user object warehouses.
1042  TheWarehouse::Query uo_query = theWarehouse().query().condition<AttribSystem>("UserObject");
1043  std::vector<UserObject *> userobjs;
1044  uo_query.queryInto(userobjs);
1046  theWarehouse(), getAuxiliarySystem(), _app.getExecuteOnEnum(), userobjs, depend_objects_ic);
1047 
1048  std::map<int, std::vector<UserObject *>> group_userobjs;
1049  for (auto obj : userobjs)
1050  group_userobjs[obj->getParam<int>("execution_order_group")].push_back(obj);
1051 
1052  for (auto & [group, objs] : group_userobjs)
1053  for (auto obj : objs)
1054  obj->initialSetup();
1055 
1056  // check if jacobian calculation is done in userobject
1057  for (THREAD_ID tid = 0; tid < n_threads; ++tid)
1059 
1060  // Check whether nonlocal couling is required or not
1064 
1065  {
1066  TIME_SECTION("initializingFunctions", 5, "Initializing Functions");
1067 
1068  // Call the initialSetup methods for functions
1069  for (THREAD_ID tid = 0; tid < n_threads; tid++)
1070  {
1071  reinitScalars(tid); // initialize scalars so they are properly sized for use as input into
1072  // ParsedFunctions
1073  _functions.initialSetup(tid);
1074  }
1075  }
1076 
1077  {
1078  TIME_SECTION("initializingRandomObjects", 5, "Initializing Random Objects");
1079 
1080  // Random interface objects
1081  for (const auto & it : _random_data_objects)
1082  it.second->updateSeeds(EXEC_INITIAL);
1083  }
1084 
1085  if (!_app.isRecovering())
1086  {
1088 
1089  {
1090  TIME_SECTION("ICinitialSetup", 5, "Setting Up Initial Conditions");
1091 
1092  for (THREAD_ID tid = 0; tid < n_threads; tid++)
1093  _ics.initialSetup(tid);
1094 
1096  }
1097 
1098  projectSolution();
1099  }
1100 
1101  // Materials
1103  {
1104  TIME_SECTION("materialInitialSetup", 3, "Setting Up Materials");
1105 
1106  for (THREAD_ID tid = 0; tid < n_threads; tid++)
1107  {
1108  // Sort the Material objects, these will be actually computed by MOOSE in reinit methods.
1109  _materials.sort(tid);
1111 
1112  // Call initialSetup on all material objects
1114 
1115  // Discrete materials may insert additional dependencies on materials during the initial
1116  // setup. Therefore we resolve the dependencies once more, now with the additional
1117  // dependencies due to discrete materials.
1119  {
1120  _materials.sort(tid);
1122  }
1123  }
1124 
1125  {
1126  TIME_SECTION("computingInitialStatefulProps", 3, "Computing Initial Material Values");
1127 
1129 
1133  }
1134  }
1135 
1136  // setRestartInPlace() is set because the property maps have now been setup and we can
1137  // dataLoad() them directly in place
1138  // setRecovering() is set because from now on we require a one-to-one mapping of
1139  // stateful properties because we shouldn't be declaring any more
1141  {
1142  props->setRestartInPlace();
1143  props->setRecovering();
1144  }
1145 
1146  for (THREAD_ID tid = 0; tid < n_threads; tid++)
1147  {
1150  _markers.sort(tid);
1151  _markers.initialSetup(tid);
1152  }
1153 
1154 #ifdef LIBMESH_ENABLE_AMR
1155 
1156  if (!_app.isRecovering())
1157  {
1158  unsigned int n = adaptivity().getInitialSteps();
1159  if (n && !_app.isUltimateMaster() && _app.isRestarting())
1160  mooseError("Cannot perform initial adaptivity during restart on sub-apps of a MultiApp!");
1161 
1162  initialAdaptMesh();
1163  }
1164 
1165 #endif // LIBMESH_ENABLE_AMR
1166 
1167  if (!_app.isRecovering() && !_app.isRestarting())
1168  {
1169  // During initial setup the solution is copied to the older solution states (old, older, etc)
1171 
1172  // Check if there are old state initial conditions
1173  auto ics = _ics.getActiveObjects();
1174  auto fv_ics = _fv_ics.getActiveObjects();
1175  auto scalar_ics = _scalar_ics.getActiveObjects();
1176  unsigned short ic_state_max = 0;
1177 
1178  auto findMax = [&ic_state_max](const auto & obj_list)
1179  {
1180  for (auto ic : obj_list.getActiveObjects())
1181  ic_state_max = std::max(ic_state_max, ic->getState());
1182  };
1183  findMax(_ics);
1184  findMax(_fv_ics);
1185  findMax(_scalar_ics);
1186 
1187  // if there are old state ICs, compute them and write to old states accordingly
1188  if (ic_state_max > 0)
1189  {
1190  // state 0 copy (we'll overwrite current state when evaluating ICs and need to restore it once
1191  // we're done with the old/older state ICs)
1192  std::vector<std::unique_ptr<NumericVector<Real>>> state0_sys_buffers(_solver_systems.size());
1193  std::unique_ptr<NumericVector<Real>> state0_aux_buffer;
1194 
1195  // save state 0
1196  for (const auto i : index_range(_solver_systems))
1197  state0_sys_buffers[i] = _solver_systems[i]->solutionState(0).clone();
1198 
1199  state0_aux_buffer = _aux->solutionState(0).clone();
1200 
1201  // compute old state ICs
1202  for (_current_ic_state = 1; _current_ic_state <= ic_state_max; _current_ic_state++)
1203  {
1204  projectSolution();
1205 
1206  for (auto & sys : _solver_systems)
1207  sys->solutionState(_current_ic_state) = sys->solutionState(0);
1208 
1209  _aux->solutionState(_current_ic_state) = _aux->solutionState(0);
1210  }
1211  _current_ic_state = 0;
1212 
1213  // recover state 0
1214  for (const auto i : index_range(_solver_systems))
1215  {
1216  _solver_systems[i]->solutionState(0) = *state0_sys_buffers[i];
1217  _solver_systems[i]->solutionState(0).close();
1218  _solver_systems[i]->update();
1219  }
1220  _aux->solutionState(0) = *state0_aux_buffer;
1221  _aux->solutionState(0).close();
1222  _aux->update();
1223  }
1224  }
1225 
1226  if (!_app.isRecovering())
1227  {
1228  if (haveXFEM())
1229  updateMeshXFEM();
1230  }
1231 
1232  // Call initialSetup on the solver systems
1233  for (auto & sys : _solver_systems)
1234  sys->initialSetup();
1235 
1236  // Auxilary variable initialSetup calls
1237  _aux->initialSetup();
1238 
1239  if (_displaced_problem)
1240  // initialSetup for displaced systems
1241  _displaced_problem->initialSetup();
1242 
1243  for (auto & sys : _solver_systems)
1244  sys->setSolution(*(sys->system().current_local_solution.get()));
1245 
1246  // Update the nearest node searches (has to be called after the problem is all set up)
1247  // We do this here because this sets up the Element's DoFs to ghost
1249 
1251  if (_displaced_mesh)
1253 
1254  // We need to move the mesh in order to build a map between mortar secondary and primary
1255  // interfaces. This map will then be used by the AgumentSparsityOnInterface ghosting functor to
1256  // know which dofs we need ghosted when we call EquationSystems::reinit
1258  {
1259  _displaced_problem->updateMesh();
1260  // if displacements were applied to the mesh, the mortar mesh should be updated too
1261  updateMortarMesh();
1262  }
1263 
1264  // Possibly reinit one more time to get ghosting correct
1266 
1267  if (_displaced_mesh)
1268  _displaced_problem->updateMesh();
1269 
1270  updateGeomSearch(); // Call all of the rest of the geometric searches
1271 
1272  for (auto & sys : _solver_systems)
1273  {
1274  const auto & tis = sys->getTimeIntegrators();
1275 
1276  {
1277  TIME_SECTION("timeIntegratorInitialSetup", 5, "Initializing Time Integrator");
1278  for (auto & ti : tis)
1279  ti->initialSetup();
1280  }
1281  }
1282 
1283  // HUGE NOTE: MultiApp initialSetup() MUST... I repeat MUST be _after_ main-app restartable data
1284  // has been restored
1285 
1286  // Call initialSetup on the MultiApps
1287  if (_multi_apps.hasObjects())
1288  {
1289  TIME_SECTION("initialSetupMultiApps", 2, "Initializing MultiApps", false);
1291  }
1292 
1293  // Call initialSetup on the transfers
1294  {
1295  TIME_SECTION("initialSetupTransfers", 2, "Initializing Transfers");
1296 
1298 
1299  // Call initialSetup on the MultiAppTransfers to be executed on TO_MULTIAPP
1300  const auto & to_multi_app_objects = _to_multi_app_transfers.getActiveObjects();
1301  for (const auto & transfer : to_multi_app_objects)
1302  {
1303  transfer->setCurrentDirection(Transfer::DIRECTION::TO_MULTIAPP);
1304  transfer->initialSetup();
1305  }
1306 
1307  // Call initialSetup on the MultiAppTransfers to be executed on FROM_MULTIAPP
1308  const auto & from_multi_app_objects = _from_multi_app_transfers.getActiveObjects();
1309  for (const auto & transfer : from_multi_app_objects)
1310  {
1311  transfer->setCurrentDirection(Transfer::DIRECTION::FROM_MULTIAPP);
1312  transfer->initialSetup();
1313  }
1314 
1315  // Call initialSetup on the MultiAppTransfers to be executed on BETWEEN_MULTIAPP
1316  const auto & between_multi_app_objects = _between_multi_app_transfers.getActiveObjects();
1317  for (const auto & transfer : between_multi_app_objects)
1318  {
1319  transfer->setCurrentDirection(Transfer::DIRECTION::BETWEEN_MULTIAPP);
1320  transfer->initialSetup();
1321  }
1322  }
1323 
1325  {
1326  TIME_SECTION("BoundaryRestrictedNodeIntegrityCheck", 5);
1327 
1328  // check that variables are defined along boundaries of boundary restricted nodal objects
1329  ConstBndNodeRange & bnd_nodes = *mesh().getBoundaryNodeRange();
1330  BoundaryNodeIntegrityCheckThread bnict(*this, uo_query);
1331  Threads::parallel_reduce(bnd_nodes, bnict);
1332 
1333  // Nodal bcs aren't threaded
1334  const auto & node_to_elem_map = _mesh.nodeToActiveSemilocalElemMap();
1335  for (const auto & bnode : bnd_nodes)
1336  {
1337  const auto boundary_id = bnode->_bnd_id;
1338  const Node * const node = bnode->_node;
1339 
1340  if (node->processor_id() != this->processor_id())
1341  continue;
1342 
1343  // Only check vertices. Variables may not be defined on non-vertex nodes (think first order
1344  // Lagrange on a second order mesh) and user-code can often handle that
1345  const Elem * const an_elem =
1346  _mesh.getMesh().elem_ptr(libmesh_map_find(node_to_elem_map, node->id()).front());
1347  if (!an_elem->is_vertex(an_elem->get_node_index(node)))
1348  continue;
1349 
1350  const auto & bnd_name = _mesh.getBoundaryName(boundary_id);
1351 
1352  for (auto & nl : _nl)
1353  {
1354  const auto & nodal_bcs = nl->getNodalBCWarehouse();
1355  if (!nodal_bcs.hasBoundaryObjects(boundary_id, 0))
1356  continue;
1357 
1358  const auto & bnd_objects = nodal_bcs.getBoundaryObjects(boundary_id, 0);
1359  for (const auto & bnd_object : bnd_objects)
1360  // Skip if this object uses geometric search because coupled variables may be defined on
1361  // paired boundaries instead of the boundary this node is on
1362  if (!bnd_object->requiresGeometricSearch() &&
1363  bnd_object->checkVariableBoundaryIntegrity())
1364  {
1365  std::set<MooseVariableFieldBase *> vars_to_omit = {
1366  &static_cast<MooseVariableFieldBase &>(
1367  const_cast<MooseVariableBase &>(bnd_object->variable()))};
1368 
1370  *bnd_object, bnd_object->checkAllVariables(*node, vars_to_omit), bnd_name);
1371  }
1372  }
1373  }
1374  }
1375 
1377  {
1378  TIME_SECTION("BoundaryRestrictedElemIntegrityCheck", 5);
1379 
1380  // check that variables are defined along boundaries of boundary restricted elemental objects
1381  ConstBndElemRange & bnd_elems = *mesh().getBoundaryElementRange();
1382  BoundaryElemIntegrityCheckThread beict(*this, uo_query);
1383  Threads::parallel_reduce(bnd_elems, beict);
1384  }
1385 
1386  if (!_app.isRecovering())
1387  {
1389 
1391  if (!converged)
1392  mooseError("failed to converge initial MultiApp");
1393 
1394  // We'll backup the Multiapp here
1396 
1397  for (THREAD_ID tid = 0; tid < n_threads; tid++)
1398  reinitScalars(tid);
1399 
1401 
1402  // The FEProblemBase::execute method doesn't call all the systems on EXEC_INITIAL, but it does
1403  // set/unset the current flag. Therefore, this resets the current flag to EXEC_INITIAL so that
1404  // subsequent calls (e.g., executeControls) have the proper flag.
1406  }
1407 
1408  // Here we will initialize the stateful properties once more since they may have been updated
1409  // during initialSetup by calls to computeProperties.
1410  //
1411  // It's really bad that we don't allow this during restart. It means that we can't add new
1412  // stateful materials
1413  // during restart. This is only happening because this _has_ to be below initial userobject
1414  // execution.
1415  // Otherwise this could be done up above... _before_ restoring restartable data... which would
1416  // allow you to have
1417  // this happen during restart. I honestly have no idea why this has to happen after initial user
1418  // object computation.
1419  // THAT is something we should fix... so I've opened this ticket: #5804
1420  if (!_app.isRecovering() && !_app.isRestarting() &&
1423  {
1424  TIME_SECTION("computeMaterials", 2, "Computing Initial Material Properties");
1425 
1427  }
1428 
1429  // Control Logic
1431 
1432  // Scalar variables need to reinited for the initial conditions to be available for output
1433  for (unsigned int tid = 0; tid < n_threads; tid++)
1434  reinitScalars(tid);
1435 
1436  if (_displaced_mesh)
1437  _displaced_problem->syncSolutions();
1438 
1439  // Writes all calls to _console from initialSetup() methods
1441 
1443  {
1445  for (THREAD_ID tid = 0; tid < n_threads; ++tid)
1446  for (auto & assembly : _assembly[tid])
1448  }
1449 
1450  {
1451  TIME_SECTION("lineSearchInitialSetup", 5, "Initializing Line Search");
1452 
1453  if (_line_search)
1454  _line_search->initialSetup();
1455  }
1456 
1457  // Perform Reporter get/declare check
1459 
1460  // We do this late to allow objects to get late restartable data
1463 
1465 }
void sort(THREAD_ID tid=0)
Sort the objects using the DependencyResolver.
void setVariableAllDoFMap(const std::vector< const MooseVariableFEBase *> &moose_vars)
bool _skip_exception_check
If or not skip &#39;exception and stop solve&#39;.
libMesh::ConstElemRange * getActiveLocalElementRange()
Return pointers to range objects for various types of ranges (local nodes, boundary elems...
Definition: MooseMesh.C:1235
void reinitBecauseOfGhostingOrNewGeomObjects(bool mortar_changed=false)
Call when it is possible that the needs for ghosted elements has changed.
bool isUltimateMaster() const
Whether or not this app is the ultimate master app.
Definition: MooseApp.h:847
MaterialPropertyStorage & _bnd_material_props
void setNonlocalCouplingMatrix()
Set custom coupling matrix for variables requiring nonlocal contribution.
void initialSetup()
Calls the initialSetup function for each of the output objects.
unsigned int n_threads()
QueryCache is a convenient way to construct and pass around (possible partially constructed) warehous...
Definition: TheWarehouse.h:208
std::shared_ptr< DisplacedProblem > displaced_problem
unsigned int get_node_index(const Node *node_ptr) const
bool hasObjects(THREAD_ID tid=0) const
Convenience functions for determining if objects exist.
MooseObjectWarehouse< InternalSideIndicatorBase > _internal_side_indicators
const std::map< dof_id_type, std::vector< dof_id_type > > & nodeToActiveSemilocalElemMap()
If not already created, creates a map from every node to all active semilocal elements to which they ...
Definition: MooseMesh.C:1203
bool hasInitialBackup() const
Definition: MooseApp.h:1052
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
const ExecFlagEnum & getExecuteOnEnum() const
Return the app level ExecFlagEnum, this contains all the available flags for the app.
Definition: MooseApp.h:1045
void parallel_reduce(const Range &range, Body &body, const Partitioner &)
unsigned short _current_ic_state
std::vector< T * > & queryInto(std::vector< T *> &results, Args &&... args)
queryInto executes the query and stores the results in the given vector.
Definition: TheWarehouse.h:311
const ExecFlagType EXEC_NONE
Definition: Moose.C:27
const std::string & getBoundaryName(BoundaryID boundary_id)
Return the name of the boundary given the id.
Definition: MooseMesh.C:1787
std::filesystem::path restartFolderBase(const std::filesystem::path &folder_base) const
The file suffix for restartable data.
Definition: MooseApp.C:3026
bool _requires_nonlocal_coupling
nonlocal coupling requirement flag
std::vector< std::shared_ptr< SolverSystem > > _solver_systems
Combined container to base pointer of every solver system.
unsigned int _num_grid_steps
Number of steps in a grid sequence.
bool haveXFEM()
Find out whether the current analysis is using XFEM.
This class provides an interface for common operations on field variables of both FE and FV types wit...
const Parallel::Communicator & _communicator
MaterialWarehouse _interface_materials
Real getStartTime() const
Definition: MooseApp.h:315
void setCurrentExecuteOnFlag(const ExecFlagType &)
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...
ExecuteMooseObjectWarehouse< Transfer > _from_multi_app_transfers
Transfers executed just after MultiApps to transfer data from them.
bool isRestarting() const
Whether or not this is a "restart" calculation.
Definition: MooseApp.C:1775
libMesh::ConstNodeRange * getLocalNodeRange()
Definition: MooseMesh.C:1272
bool isOn()
Is adaptivity on?
Definition: Adaptivity.h:179
std::set< dof_id_type > _ghosted_elems
Elements that should have Dofs ghosted to the local processor.
Definition: SubProblem.h:1093
void mooseWarning(Args &&... args) const
Emits a warning prefixed with object name and type.
void projectSolution()
auto max(const L &left, const R &right)
virtual Assembly & assembly(const THREAD_ID tid, const unsigned int sys_num) override
ScalarInitialConditionWarehouse _scalar_ics
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:463
ExecuteMooseObjectWarehouse< Transfer > _transfers
Normal Transfers.
virtual void copySolutionsBackwards()
std::vector< std::shared_ptr< NonlinearSystemBase > > _nl
The nonlinear systems.
virtual void computeUserObjects(const ExecFlagType &type, const Moose::AuxGroup &group)
Call compute methods on UserObjects.
std::vector< VariablePhiGradient > _grad_phi_zero
void initialSetup(THREAD_ID tid)
Initial setup.
virtual void execute(const ExecFlagType &exec_type)
Convenience function for performing execution of MOOSE systems.
ReporterData _reporter_data
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...
ExecuteMooseObjectWarehouse< Transfer > _to_multi_app_transfers
Transfers executed just before MultiApps to transfer data to them.
MooseObjectWarehouse< Convergence > _convergences
convergence warehouse
dof_id_type id() const
MeshBase & getMesh()
Accessor for the underlying libMesh Mesh object.
Definition: MooseMesh.C:3443
TheWarehouse & theWarehouse() const
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 checkNonlocalCoupling()
void groupUserObjects(TheWarehouse &w, AuxiliarySystem &aux, const ExecFlagEnum &execute_flags, const std::vector< T *> &objs, const std::set< std::string > &ic_deps)
MortarData _mortar_data
std::shared_ptr< AuxiliarySystem > _aux
The auxiliary system.
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
const bool _boundary_restricted_node_integrity_check
whether to perform checking of boundary restricted nodal object variable dependencies, e.g.
MooseMesh & _mesh
virtual bool updateMeshXFEM()
Update the mesh due to changing XFEM cuts.
void addAnyRedistributers()
void restoreFromInitialBackup(const bool for_restart)
Restores from a "initial" backup, that is, one set in _initial_backup.
Definition: MooseApp.C:1877
Adaptivity _adaptivity
void checkUserObjectJacobianRequirement(THREAD_ID tid)
const bool _force_restart
std::vector< VariablePhiSecond > _second_phi_zero
bool _started_initial_setup
At or beyond initialSteup stage.
std::map< std::string, std::unique_ptr< RandomData > > _random_data_objects
A map of objects that consume random numbers.
libMesh::ExodusII_IO * getExReaderForRestart() const
Get the Exodus reader to restart variables from an Exodus mesh file.
Definition: MooseApp.h:476
MooseApp & _app
The MOOSE application this is associated with.
Definition: MooseBase.h:84
unsigned int uniformRefineLevel() const
Returns the level of uniform refinement requested (zero if AMR is disabled).
Definition: MooseMesh.C:3211
AuxiliarySystem & getAuxiliarySystem()
virtual void initialSetup(THREAD_ID tid=0) const
Convenience methods for calling object setup methods.
virtual void updateGeomSearch(GeometricSearchData::GeometricSearchType type=GeometricSearchData::ALL) override
void buildRefinementAndCoarseningMaps(Assembly *assembly)
Create the refinement and coarsening maps necessary for projection of stateful material properties wh...
Definition: MooseMesh.C:2457
MooseObjectWarehouse< Indicator > _indicators
void backupMultiApps(ExecFlagType type)
Backup the MultiApps associated with the ExecFlagType.
ExecuteMooseObjectWarehouse< MultiApp > _multi_apps
MultiApp Warehouse.
void uniformRefineWithProjection()
Performs uniform refinement on the meshes in the current object.
Definition: Adaptivity.C:301
std::vector< std::vector< std::unique_ptr< Assembly > > > _assembly
The Assembly objects.
virtual void initialSetup(THREAD_ID tid=0) const
Convenience methods for calling object setup methods that handle the extra neighbor and face objects...
void sort(THREAD_ID tid=0)
virtual const Elem * elem_ptr(const dof_id_type i) const=0
virtual void updateMortarMesh()
void restore(const std::filesystem::path &folder_base, const bool for_restart)
Restore an application from file.
Definition: MooseApp.C:1842
std::vector< VariablePhiValue > _phi_zero
InitialConditionWarehouse _ics
MaterialWarehouse _discrete_materials
virtual void initialSetup()
Definition: SubProblem.C:1211
virtual std::shared_ptr< const DisplacedProblem > getDisplacedProblem() const
void updateActiveSemiLocalNodeRange(std::set< dof_id_type > &ghosted_elems)
Clears the "semi-local" node list and rebuilds it.
Definition: MooseMesh.C:948
bool hasActiveObjects(THREAD_ID tid=0) const
unsigned int getInitialSteps() const
Pull out the number of initial steps previously set by calling init()
Definition: Adaptivity.h:98
void max(const T &r, T &o, Request &req) const
void setLoadAllVectors(const bool load_all_vectors)
Sets whether or not all vectors are to be loaded.
virtual bool is_vertex(const unsigned int i) const=0
void initNonlocalCoupling()
Create pair of variables requiring nonlocal jacobian contributions.
Definition: Assembly.C:2652
void executeControls(const ExecFlagType &exec_type)
Performs setup and execute calls for Control objects.
Query query()
query creates and returns an initialized a query object for querying objects from the warehouse...
Definition: TheWarehouse.h:466
bool hasStartTime() const
Definition: MooseApp.h:310
bool hasDisplacedObjects() const
Returns whether any of the AutomaticMortarGeneration objects are running on a displaced mesh...
Definition: MortarData.h:99
std::vector< std::vector< const MooseVariableFEBase * > > _uo_jacobian_moose_vars
virtual MooseMesh & mesh() override
void mooseError(Args &&... args) const
Emits an error prefixed with object name and type.
void mooseConsole()
Send current output buffer to Console output objects.
std::set< std::string > getDependObjects() const
Get a list of dependent UserObjects for this exec type.
std::shared_ptr< DisplacedProblem > _displaced_problem
MooseObjectWarehouse< Function > _functions
functions
bool _has_initialized_stateful
Whether nor not stateful materials have been initialized.
QueryCache & condition(Args &&... args)
Adds a new condition to the query.
Definition: TheWarehouse.h:284
MaterialPropertyStorage & _neighbor_material_props
std::unique_ptr< Backup > finalizeRestore()
Finalizes (closes) the restoration process done in restore().
Definition: MooseApp.C:1884
libMesh::StoredRange< MooseMesh::const_bnd_elem_iterator, const BndElement * > * getBoundaryElementRange()
Definition: MooseMesh.C:1300
bool _has_internal_edge_residual_objects
Whether the problem has dgkernels or interface kernels.
bool execMultiApps(ExecFlagType type, bool auto_advance=true)
Execute the MultiApps associated with the ExecFlagType.
void check() const
Perform integrity check for get/declare calls.
Definition: ReporterData.C:162
const bool _boundary_restricted_elem_integrity_check
whether to perform checking of boundary restricted elemental object variable dependencies, e.g.
processor_id_type processor_id() const
MaterialPropertyStorage & _material_props
Adaptivity & adaptivity()
ExecuteMooseObjectWarehouse< Transfer > _between_multi_app_transfers
Transfers executed just before MultiApps to transfer data between them.
bool isRecovering() const
Whether or not this is a "recover" calculation.
Definition: MooseApp.C:1769
Restartable::ManagedValue< RestartableEquationSystems > _req
The EquationSystems object, wrapped for restart.
processor_id_type processor_id() const
std::string getRestartRecoverFileBase() const
The file_base for the recovery file.
Definition: MooseApp.h:527
MooseObjectWarehouse< Marker > _markers
FVInitialConditionWarehouse _fv_ics
virtual void initialAdaptMesh()
MaterialWarehouse _all_materials
libMesh::StoredRange< MooseMesh::const_bnd_node_iterator, const BndNode * > * getBoundaryNodeRange()
Definition: MooseMesh.C:1286
auto index_range(const T &sizable)
OutputWarehouse & getOutputWarehouse()
Get the OutputWarehouse objects.
Definition: MooseApp.C:2381
MooseMesh * _displaced_mesh
void execTransfers(ExecFlagType type)
Execute the Transfers associated with the ExecFlagType.
unsigned int THREAD_ID
Definition: MooseTypes.h:209
MaterialWarehouse _materials
uint8_t dof_id_type
std::shared_ptr< LineSearch > _line_search
unsigned int getMaxQps() const
const ExecFlagType EXEC_INITIAL
Definition: Moose.C:28

◆ initNullSpaceVectors()

void FEProblemBase::initNullSpaceVectors ( const InputParameters parameters,
std::vector< std::shared_ptr< NonlinearSystemBase >> &  nl 
)
virtualinherited

Definition at line 730 of file FEProblemBase.C.

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

732 {
733  TIME_SECTION("initNullSpaceVectors", 5, "Initializing Null Space Vectors");
734 
735  unsigned int dimNullSpace = parameters.get<unsigned int>("null_space_dimension");
736  unsigned int dimTransposeNullSpace =
737  parameters.get<unsigned int>("transpose_null_space_dimension");
738  unsigned int dimNearNullSpace = parameters.get<unsigned int>("near_null_space_dimension");
739  for (unsigned int i = 0; i < dimNullSpace; ++i)
740  {
741  std::ostringstream oss;
742  oss << "_" << i;
743  // do not project, since this will be recomputed, but make it ghosted, since the near nullspace
744  // builder might march over all nodes
745  for (auto & nl : nls)
746  nl->addVector("NullSpace" + oss.str(), false, libMesh::GHOSTED);
747  }
748  _subspace_dim["NullSpace"] = dimNullSpace;
749  for (unsigned int i = 0; i < dimTransposeNullSpace; ++i)
750  {
751  std::ostringstream oss;
752  oss << "_" << i;
753  // do not project, since this will be recomputed, but make it ghosted, since the near nullspace
754  // builder might march over all nodes
755  for (auto & nl : nls)
756  nl->addVector("TransposeNullSpace" + oss.str(), false, libMesh::GHOSTED);
757  }
758  _subspace_dim["TransposeNullSpace"] = dimTransposeNullSpace;
759  for (unsigned int i = 0; i < dimNearNullSpace; ++i)
760  {
761  std::ostringstream oss;
762  oss << "_" << i;
763  // do not project, since this will be recomputed, but make it ghosted, since the near-nullspace
764  // builder might march over all semilocal nodes
765  for (auto & nl : nls)
766  nl->addVector("NearNullSpace" + oss.str(), false, libMesh::GHOSTED);
767  }
768  _subspace_dim["NearNullSpace"] = dimNearNullSpace;
769 }
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.
const InputParameters & parameters() const
Get the parameters of the object.
std::map< std::string, unsigned int > _subspace_dim
Dimension of the subspace spanned by the vectors with a given prefix.

◆ 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 6680 of file FEProblemBase.C.

Referenced by FEProblemBase::possiblyRebuildGeomSearchPatches(), LStableDirk2::solve(), LStableDirk3::solve(), ImplicitMidpoint::solve(), ExplicitTVDRK2::solve(), LStableDirk4::solve(), AStableDirk4::solve(), ExplicitRK2::solve(), and FEProblemBase::solve().

6681 {
6684 }
void petscSetDefaults(FEProblemBase &problem)
Sets the default options for PETSc.
Definition: PetscSupport.C:488
MooseApp & _app
The MOOSE application this is associated with.
Definition: MooseBase.h:84
void solveSetup()
Calls the timestepSetup function for each of the output objects.
OutputWarehouse & getOutputWarehouse()
Get the OutputWarehouse objects.
Definition: MooseApp.C:2381

◆ initXFEM()

void FEProblemBase::initXFEM ( std::shared_ptr< XFEMInterface xfem)
inherited

Create XFEM controller object.

Definition at line 7982 of file FEProblemBase.C.

7983 {
7984  _xfem = xfem;
7985  _xfem->setMesh(&_mesh);
7986  if (_displaced_mesh)
7987  _xfem->setDisplacedMesh(_displaced_mesh);
7988 
7989  auto fill_data = [](auto & storage)
7990  {
7991  std::vector<MaterialData *> data(libMesh::n_threads());
7992  for (const auto tid : make_range(libMesh::n_threads()))
7993  data[tid] = &storage.getMaterialData(tid);
7994  return data;
7995  };
7996  _xfem->setMaterialData(fill_data(_material_props));
7997  _xfem->setBoundaryMaterialData(fill_data(_bnd_material_props));
7998 
7999  unsigned int n_threads = libMesh::n_threads();
8000  for (unsigned int i = 0; i < n_threads; ++i)
8001  for (const auto nl_sys_num : index_range(_nl))
8002  {
8003  _assembly[i][nl_sys_num]->setXFEM(_xfem);
8004  if (_displaced_problem)
8005  _displaced_problem->assembly(i, nl_sys_num).setXFEM(_xfem);
8006  }
8007 }
void fill_data(std::map< processor_id_type, std::vector< std::set< unsigned int >>> &data, int M)
MaterialPropertyStorage & _bnd_material_props
unsigned int n_threads()
std::vector< std::shared_ptr< NonlinearSystemBase > > _nl
The nonlinear systems.
MooseMesh & _mesh
std::vector< std::vector< std::unique_ptr< Assembly > > > _assembly
The Assembly objects.
IntRange< T > make_range(T beg, T end)
std::shared_ptr< DisplacedProblem > _displaced_problem
std::shared_ptr< XFEMInterface > _xfem
Pointer to XFEM controller.
MaterialPropertyStorage & _material_props
auto index_range(const T &sizable)
MooseMesh * _displaced_mesh

◆ 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 730 of file SubProblem.C.

731 {
732  return _material_property_requested.find(prop_name) != _material_property_requested.end();
733 }
std::set< std::string > _material_property_requested
set containing all material property names that have been requested by getMaterialProperty* ...
Definition: SubProblem.h:1062

◆ isParamSetByUser()

bool MooseBaseParameterInterface::isParamSetByUser ( const std::string &  nm) const
inlineinherited

Test if the supplied parameter is set by a user, as opposed to not set or set to default.

Parameters
nmThe name of the parameter to test

Definition at line 128 of file MooseBaseParameterInterface.h.

Referenced by SetupDebugAction::act(), ADConservativeAdvectionBC::ADConservativeAdvectionBC(), DiffusionCG::addFEBCs(), DiffusionPhysicsBase::addInitialConditions(), MFEMMesh::buildMesh(), LibtorchNeuralNetControl::conditionalParameterError(), DiffusionPhysicsBase::DiffusionPhysicsBase(), ElementSubdomainModifierBase::ElementSubdomainModifierBase(), MooseBaseParameterInterface::getRenamedParam(), DefaultConvergenceBase::getSharedExecutionerParam(), AddVariableAction::init(), PhysicsBase::initializePhysics(), ElementSubdomainModifierBase::initialSetup(), MatrixSymmetryCheck::MatrixSymmetryCheck(), MeshDiagnosticsGenerator::MeshDiagnosticsGenerator(), MultiAppGeneralFieldTransfer::MultiAppGeneralFieldTransfer(), SolutionInvalidityOutput::output(), Output::Output(), MultiAppGeneralFieldTransfer::outputValueConflicts(), PetscExternalPartitioner::partition(), PiecewiseTabularBase::PiecewiseTabularBase(), MooseMesh::prepare(), SolutionUserObjectBase::readXda(), PhysicsBase::reportPotentiallyMissedParameters(), MFEMSolverBase::setPreconditioner(), SideSetsFromBoundingBoxGenerator::SideSetsFromBoundingBoxGenerator(), TimedSubdomainModifier::TimedSubdomainModifier(), and XYDelaunayGenerator::XYDelaunayGenerator().

128 { return _pars.isParamSetByUser(nm); }
bool isParamSetByUser(const std::string &name) const
Method returns true if the parameter was set by the user.
const InputParameters & _pars
Parameters of this object, references the InputParameters stored in the InputParametersWarehouse.

◆ isParamValid()

bool MooseBaseParameterInterface::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 122 of file MooseBaseParameterInterface.h.

Referenced by HierarchicalGridPartitioner::_do_partition(), GridPartitioner::_do_partition(), CopyNodalVarsAction::act(), SetupMeshAction::act(), SetupDebugAction::act(), ComposeTimeStepperAction::act(), CreateDisplacedProblemAction::act(), SetAdaptivityOptionsAction::act(), AddVariableAction::act(), CommonOutputAction::act(), ADConservativeAdvectionBC::ADConservativeAdvectionBC(), DiffusionCG::addFEKernels(), DiffusionFV::addFVBCs(), DiffusionFV::addFVKernels(), DiffusionPhysicsBase::addInitialConditions(), CylinderComponent::addMeshGenerators(), AddPeriodicBCAction::AddPeriodicBCAction(), DiffusionPhysicsBase::addPostprocessors(), AdvectiveFluxAux::AdvectiveFluxAux(), ArrayHFEMDirichletBC::ArrayHFEMDirichletBC(), ArrayVarReductionAux::ArrayVarReductionAux(), AddPeriodicBCAction::autoTranslationBoundaries(), BicubicSplineFunction::BicubicSplineFunction(), BlockDeletionGenerator::BlockDeletionGenerator(), TimedSubdomainModifier::buildFromFile(), PiecewiseTabularBase::buildFromFile(), PiecewiseTabularBase::buildFromJSON(), ParsedChainControl::buildFunction(), GeneratedMesh::buildMesh(), MooseMesh::buildTypedMesh(), CartesianGridDivision::CartesianGridDivision(), CartesianMeshGenerator::CartesianMeshGenerator(), LibmeshPartitioner::clone(), SampledOutput::cloneMesh(), CombinerGenerator::CombinerGenerator(), FunctorAux::computeValue(), ConservativeAdvectionTempl< is_ad >::ConservativeAdvectionTempl(), CopyMeshPartitioner::CopyMeshPartitioner(), CSVReaderVectorPostprocessor::CSVReaderVectorPostprocessor(), CutMeshByLevelSetGeneratorBase::CutMeshByLevelSetGeneratorBase(), ConstantReporter::declareConstantReporterValues(), DGKernelBase::DGKernelBase(), DiffusionFluxAux::DiffusionFluxAux(), DomainUserObject::DomainUserObject(), DynamicObjectRegistrationAction::DynamicObjectRegistrationAction(), Eigenvalue::Eigenvalue(), ElementGroupCentroidPositions::ElementGroupCentroidPositions(), PIDTransientControl::execute(), MultiAppNearestNodeTransfer::execute(), MultiAppUserObjectTransfer::execute(), Exodus::Exodus(), ExtraIDIntegralReporter::ExtraIDIntegralReporter(), ExtraIDIntegralVectorPostprocessor::ExtraIDIntegralVectorPostprocessor(), FEProblemBase::FEProblemBase(), FEProblemSolve::FEProblemSolve(), FieldSplitPreconditioner::FieldSplitPreconditioner(), FileOutput::FileOutput(), SpatialUserObjectVectorPostprocessor::fillPoints(), CombinerGenerator::fillPositions(), MultiApp::fillPositions(), FiniteDifferencePreconditioner::FiniteDifferencePreconditioner(), FixedPointSolve::FixedPointSolve(), FunctionDT::FunctionDT(), FunctionValuePostprocessor::FunctionValuePostprocessor(), FVInterfaceKernel::FVInterfaceKernel(), FVMassMatrix::FVMassMatrix(), AddMetaDataGenerator::generate(), BreakBoundaryOnSubdomainGenerator::generate(), ElementGenerator::generate(), ExtraNodesetGenerator::generate(), FileMeshGenerator::generate(), LowerDBlockFromSidesetGenerator::generate(), SubdomainPerElementGenerator::generate(), BlockDeletionGenerator::generate(), GeneratedMeshGenerator::generate(), ParsedSubdomainGeneratorBase::generate(), MeshExtruderGenerator::generate(), ParsedExtraElementIDGenerator::generate(), XYZDelaunayGenerator::generate(), XYDelaunayGenerator::generate(), XYMeshLineCutter::generate(), SubdomainBoundingBoxGenerator::generate(), DistributedRectilinearMeshGenerator::generate(), PropertyReadFile::getFileNames(), MultiAppNearestNodeTransfer::getLocalEntitiesAndComponents(), MeshGenerator::getMeshGeneratorNameFromParam(), MeshGenerator::getMeshGeneratorNamesFromParam(), MooseBaseParameterInterface::getRenamedParam(), MultiAppNearestNodeTransfer::getTargetLocalNodes(), Terminator::handleMessage(), HFEMDirichletBC::HFEMDirichletBC(), EigenExecutionerBase::init(), IterationAdaptiveDT::init(), Eigenvalue::init(), AdvancedOutput::initExecutionTypes(), BlockRestrictable::initializeBlockRestrictable(), BoundaryRestrictable::initializeBoundaryRestrictable(), MultiAppCloneReporterTransfer::initialSetup(), SolutionIC::initialSetup(), MultiAppVariableValueSampleTransfer::initialSetup(), PiecewiseTabularBase::initialSetup(), ParsedConvergence::initialSetup(), SolutionScalarAux::initialSetup(), SolutionAux::initialSetup(), Console::initialSetup(), MooseParsedVectorFunction::initialSetup(), MultiAppGeneralFieldTransfer::initialSetup(), MooseParsedGradFunction::initialSetup(), MooseParsedFunction::initialSetup(), SampledOutput::initSample(), IterationAdaptiveDT::IterationAdaptiveDT(), LeastSquaresFit::LeastSquaresFit(), LibmeshPartitioner::LibmeshPartitioner(), LibtorchNeuralNetControl::LibtorchNeuralNetControl(), MassMatrix::MassMatrix(), MatCoupledForce::MatCoupledForce(), MatDiffusionBase< Real >::MatDiffusionBase(), MeshGeneratorComponent::MeshGeneratorComponent(), MooseMesh::MooseMesh(), MoosePreconditioner::MoosePreconditioner(), MooseStaticCondensationPreconditioner::MooseStaticCondensationPreconditioner(), MooseVariableBase::MooseVariableBase(), MooseVariableFV< Real >::MooseVariableFV(), MortarConstraintBase::MortarConstraintBase(), MoveNodeGenerator::MoveNodeGenerator(), MultiApp::MultiApp(), MultiAppCloneReporterTransfer::MultiAppCloneReporterTransfer(), MultiAppGeneralFieldNearestLocationTransfer::MultiAppGeneralFieldNearestLocationTransfer(), MultiAppGeneralFieldShapeEvaluationTransfer::MultiAppGeneralFieldShapeEvaluationTransfer(), MultiAppGeneralFieldTransfer::MultiAppGeneralFieldTransfer(), MultiAppGeneralFieldUserObjectTransfer::MultiAppGeneralFieldUserObjectTransfer(), MultiAppPostprocessorInterpolationTransfer::MultiAppPostprocessorInterpolationTransfer(), MultiAppPostprocessorTransfer::MultiAppPostprocessorTransfer(), MultiAppReporterTransfer::MultiAppReporterTransfer(), MultiAppTransfer::MultiAppTransfer(), MultiAppUserObjectTransfer::MultiAppUserObjectTransfer(), MultiAppVariableValueSampleTransfer::MultiAppVariableValueSampleTransfer(), MultiSystemSolveObject::MultiSystemSolveObject(), NodeSetsGeneratorBase::NodeSetsGeneratorBase(), EigenExecutionerBase::normalizeSolution(), Output::Output(), MultiAppGeneralFieldTransfer::outputValueConflicts(), ParsedCurveGenerator::ParsedCurveGenerator(), PetscOutput::PetscOutput(), PhysicsBasedPreconditioner::PhysicsBasedPreconditioner(), PIDTransientControl::PIDTransientControl(), PiecewiseTabularBase::PiecewiseTabularBase(), PlaneIDMeshGenerator::PlaneIDMeshGenerator(), MooseMesh::prepare(), MooseBaseParameterInterface::queryParam(), MultiApp::readCommandLineArguments(), SolutionUserObjectBase::readExodusII(), ReferenceResidualInterface::ReferenceResidualInterface(), RenameBlockGenerator::RenameBlockGenerator(), ReporterPointSource::ReporterPointSource(), PhysicsBase::reportPotentiallyMissedParameters(), ParsedSubdomainMeshGenerator::setBlockName(), MooseMesh::setCoordSystem(), FileOutput::setFileBase(), FileOutput::setFileBaseInternal(), Split::setup(), SideSetsGeneratorBase::setup(), SetupMeshAction::setupMesh(), SideDiffusiveFluxIntegralTempl< is_ad, Real >::SideDiffusiveFluxIntegralTempl(), SideSetsGeneratorBase::SideSetsGeneratorBase(), SolutionUserObjectBase::SolutionUserObjectBase(), FEProblemSolve::solve(), WebServerControl::startServer(), Terminator::Terminator(), TimeIntervalTimes::TimeIntervalTimes(), TimePeriod::TimePeriod(), MultiAppDofCopyTransfer::transfer(), TransformGenerator::TransformGenerator(), FunctorIC::value(), VariableCondensationPreconditioner::VariableCondensationPreconditioner(), VectorMagnitudeFunctorMaterialTempl< is_ad >::VectorMagnitudeFunctorMaterialTempl(), WebServerControl::WebServerControl(), XYDelaunayGenerator::XYDelaunayGenerator(), and XYZDelaunayGenerator::XYZDelaunayGenerator().

122 { return _pars.isParamValid(name); }
const InputParameters & _pars
Parameters of this object, references the InputParameters stored in the InputParametersWarehouse.
bool isParamValid(const std::string &name) const
This method returns parameters that have been initialized in one fashion or another, i.e.

◆ isSNESMFReuseBaseSetbyUser()

bool FEProblemBase::isSNESMFReuseBaseSetbyUser ( )
inlineinherited

Return a flag to indicate if _snesmf_reuse_base is set by users.

Definition at line 2111 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.

Referenced by TransientBase::keepGoing().

43 { return _termination_requested; };
bool _termination_requested
True if termination of the solve has been requested.
Definition: Problem.h:58

◆ isTransient()

virtual bool FEProblemBase::isTransient ( ) const
inlineoverridevirtualinherited

◆ jacobianSetup()

void FEProblemBase::jacobianSetup ( )
overridevirtualinherited

Reimplemented from SubProblem.

Definition at line 9128 of file FEProblemBase.C.

Referenced by NonlinearSystemBase::jacobianSetup().

9129 {
9131  // We need to setup all the nonlinear systems other than our current one which actually called
9132  // this method (so we have to make sure we don't go in a circle)
9133  for (const auto i : make_range(numNonlinearSystems()))
9134  if (i != currentNlSysNum())
9135  _nl[i]->jacobianSetup();
9136  // We don't setup the aux sys because that's been done elsewhere
9137  if (_displaced_problem)
9138  _displaced_problem->jacobianSetup();
9139 }
virtual std::size_t numNonlinearSystems() const override
virtual void jacobianSetup()
Definition: SubProblem.C:1203
std::vector< std::shared_ptr< NonlinearSystemBase > > _nl
The nonlinear systems.
virtual unsigned int currentNlSysNum() const override
IntRange< T > make_range(T beg, T end)
std::shared_ptr< DisplacedProblem > _displaced_problem

◆ 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 6290 of file FEProblemBase.C.

Referenced by Moose::compute_linear_system(), LinearSystem::computeGradients(), FEProblemBase::computeLinearSystemSys(), LinearSystem::computeLinearSystemTags(), and DisplacedProblem::linearSysNum().

6291 {
6292  std::istringstream ss(linear_sys_name);
6293  unsigned int linear_sys_num;
6294  if (!(ss >> linear_sys_num) || !ss.eof())
6295  linear_sys_num = libmesh_map_find(_linear_sys_name_to_num, linear_sys_name);
6296 
6297  return linear_sys_num;
6298 }
std::map< LinearSystemName, unsigned int > _linear_sys_name_to_num
Map from linear system name to number.

◆ lineSearch()

void FEProblemBase::lineSearch ( )
virtualinherited

execute MOOSE line search

Definition at line 2643 of file FEProblemBase.C.

Referenced by ComputeLineSearchObjectWrapper::linesearch().

2644 {
2645  _line_search->lineSearch();
2646 }
std::shared_ptr< LineSearch > _line_search

◆ logAdd()

void FEProblemBase::logAdd ( const std::string &  system,
const std::string &  name,
const std::string &  type,
const InputParameters params 
) const
inherited

Output information about the object just added to the problem.

Definition at line 4168 of file FEProblemBase.C.

Referenced by FEProblemBase::addAuxArrayVariable(), FEProblemBase::addAuxKernel(), FEProblemBase::addAuxScalarKernel(), FEProblemBase::addAuxScalarVariable(), FEProblemBase::addAuxVariable(), FEProblemBase::addConstraint(), FEProblemBase::addDamper(), FEProblemBase::addDGKernel(), FEProblemBase::addDiracKernel(), FEProblemBase::addFunction(), FEProblemBase::addFunctorMaterial(), FEProblemBase::addIndicator(), FEProblemBase::addInitialCondition(), FEProblemBase::addInterfaceKernel(), FEProblemBase::addMarker(), FEProblemBase::addMaterialHelper(), FEProblemBase::addMultiApp(), FEProblemBase::addNodalKernel(), FEProblemBase::addObject(), FEProblemBase::addOutput(), FEProblemBase::addPredictor(), FEProblemBase::addScalarKernel(), FEProblemBase::addTimeIntegrator(), FEProblemBase::addTransfer(), FEProblemBase::addUserObject(), FEProblemBase::addVariable(), and FEProblemBase::setResidualObjectParamsAndLog().

4172 {
4173  if (_verbose_setup != "false")
4174  _console << "[DBG] Adding " << system << " '" << name << "' of type " << type << std::endl;
4175  if (_verbose_setup == "extra")
4176  _console << params << std::endl;
4177 }
virtual const std::string & name() const
Get the name of the class.
Definition: MooseBase.h:57
const std::string & type() const
Get the type of this class.
Definition: MooseBase.h:51
const ConsoleStream _console
An instance of helper class to write streams to the Console objects.
MooseEnum _verbose_setup
Whether or not to be verbose during setup.

◆ markFamilyPRefinement()

void SubProblem::markFamilyPRefinement ( const InputParameters params)
protectedinherited

Mark a variable family for either disabling or enabling p-refinement with valid parameters of a variable.

Definition at line 1361 of file SubProblem.C.

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

1362 {
1363  auto family = Utility::string_to_enum<FEFamily>(params.get<MooseEnum>("family"));
1364  bool flag = _default_families_without_p_refinement.count(family);
1365  if (params.isParamValid("disable_p_refinement"))
1366  flag = params.get<bool>("disable_p_refinement");
1367 
1368  auto [it, inserted] = _family_for_p_refinement.emplace(family, flag);
1369  if (!inserted && flag != it->second)
1370  mooseError("'disable_p_refinement' not set consistently for variables in ", family);
1371 }
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.
std::unordered_map< FEFamily, bool > _family_for_p_refinement
Indicate whether a family is disabled for p-refinement.
Definition: SubProblem.h:1205
static const std::unordered_set< FEFamily > _default_families_without_p_refinement
The set of variable families by default disable p-refinement.
Definition: SubProblem.h:1207
This is a "smart" enum class intended to replace many of the shortcomings in the C++ enum type It sho...
Definition: MooseEnum.h:33
void mooseError(Args &&... args) const
Emits an error prefixed with object name and type.
bool isParamValid(const std::string &name) const
This method returns parameters that have been initialized in one fashion or another, i.e.

◆ 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 724 of file SubProblem.C.

Referenced by MaterialBase::markMatPropRequested(), and MaterialPropertyInterface::markMatPropRequested().

725 {
726  _material_property_requested.insert(prop_name);
727 }
std::set< std::string > _material_property_requested
set containing all material property names that have been requested by getMaterialProperty* ...
Definition: SubProblem.h:1062

◆ matrixTagExists() [1/2]

bool SubProblem::matrixTagExists ( const TagName &  tag_name) const
virtualinherited

Check to see if a particular Tag exists.

Reimplemented in DisplacedProblem.

Definition at line 328 of file SubProblem.C.

Referenced by SystemBase::activeMatrixTag(), SystemBase::addMatrix(), SystemBase::associateMatrixToTag(), Coupleable::coupledMatrixTagValue(), Coupleable::coupledMatrixTagValues(), SystemBase::deactiveMatrixTag(), SystemBase::disassociateDefaultMatrixTags(), SystemBase::disassociateMatrixFromTag(), SystemBase::getMatrix(), SubProblem::getMatrixTagID(), SystemBase::matrixTagActive(), DisplacedProblem::matrixTagExists(), SystemBase::removeMatrix(), and TaggingInterface::useMatrixTag().

329 {
330  auto tag_name_upper = MooseUtils::toUpper(tag_name);
331 
332  return _matrix_tag_name_to_tag_id.find(tag_name_upper) != _matrix_tag_name_to_tag_id.end();
333 }
std::map< TagName, TagID > _matrix_tag_name_to_tag_id
The currently declared tags.
Definition: SubProblem.h:1041
std::string toUpper(const std::string &name)
Convert supplied string to upper case.

◆ 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 336 of file SubProblem.C.

337 {
338  return _matrix_tag_id_to_tag_name.find(tag_id) != _matrix_tag_id_to_tag_name.end();
339 }
std::map< TagID, TagName > _matrix_tag_id_to_tag_name
Reverse map.
Definition: SubProblem.h:1044

◆ matrixTagName()

TagName SubProblem::matrixTagName ( TagID  tag)
virtualinherited

Retrieve the name associated with a TagID.

Reimplemented in DisplacedProblem.

Definition at line 357 of file SubProblem.C.

Referenced by SystemBase::addMatrix(), DisplacedProblem::matrixTagName(), and SystemBase::removeMatrix().

358 {
359  return _matrix_tag_id_to_tag_name[tag];
360 }
std::map< TagID, TagName > _matrix_tag_id_to_tag_name
Reverse map.
Definition: SubProblem.h:1044

◆ mesh() [1/3]

virtual MooseMesh& FEProblemBase::mesh ( )
inlineoverridevirtualinherited

Implements SubProblem.

Reimplemented in MFEMProblem.

Definition at line 151 of file FEProblemBase.h.

Referenced by Adaptivity::adaptMesh(), FEProblemBase::addAnyRedistributers(), MultiAppConservativeTransfer::adjustTransferredSolution(), MultiAppConservativeTransfer::adjustTransferredSolutionNearestPoint(), PhysicsBasedPreconditioner::apply(), MultiAppGeneralFieldNearestLocationTransfer::buildKDTrees(), MultiAppVariableValueSamplePostprocessorTransfer::cacheElemToPostprocessorData(), SampledOutput::cloneMesh(), LinearSystem::computeGradients(), NonlinearSystemBase::computeJacobianInternal(), LinearSystem::computeLinearSystemInternal(), ComputeFullJacobianThread::computeOnInternalFace(), NonlinearSystemBase::computeResidualAndJacobianInternal(), NonlinearSystemBase::computeResidualInternal(), FEProblemBase::coordTransform(), MultiApp::createApp(), DMMooseGetEmbedding_Private(), ElementsAlongLine::ElementsAlongLine(), ElementsAlongPlane::ElementsAlongPlane(), MultiAppVariableValueSampleTransfer::execute(), MultiAppVariableValueSamplePostprocessorTransfer::execute(), ElementsAlongLine::execute(), ElementsAlongPlane::execute(), IntersectionPointsAlongLine::execute(), WorkBalance::execute(), MultiAppUserObjectTransfer::execute(), QuadraturePointMultiApp::fillPositions(), CentroidMultiApp::fillPositions(), MultiAppGeometricInterpolationTransfer::fillSourceInterpolationPoints(), FunctionPeriodicBoundary::FunctionPeriodicBoundary(), MultiApp::getBoundingBox(), Exodus::handleExodusIOMeshRenumbering(), NodePositions::initialize(), FunctorPositions::initialize(), FunctorTimes::initialize(), FunctorExtremaPositions::initialize(), ParsedDownSelectionPositions::initialize(), BlockRestrictable::initializeBlockRestrictable(), BoundaryRestrictable::initializeBoundaryRestrictable(), MultiAppGeneralFieldNearestLocationTransfer::initialSetup(), MultiAppDofCopyTransfer::initialSetup(), PiecewiseConstantFromCSV::initialSetup(), ImageFunction::initialSetup(), FEProblemBase::initialSetup(), MultiAppGeometricInterpolationTransfer::interpolateTargetPoints(), IntersectionPointsAlongLine::IntersectionPointsAlongLine(), Moose::Mortar::loopOverMortarSegments(), ReporterPointMarker::markerSetup(), MFEMProblem::mesh(), FEProblemBase::mesh(), MultiAppGeometricInterpolationTransfer::MultiAppGeometricInterpolationTransfer(), MultiAppUserObjectTransfer::MultiAppUserObjectTransfer(), ComputeNodalUserObjectsThread::onNode(), BoundaryNodeIntegrityCheckThread::onNode(), ComputeInitialConditionThread::operator()(), BoundaryElemIntegrityCheckThread::operator()(), ComputeLinearFVGreenGaussGradientVolumeThread::operator()(), Output::Output(), Exodus::outputEmptyTimestep(), ConsoleUtils::outputMeshInformation(), Exodus::outputNodalVariables(), Exodus::outputSetup(), PiecewiseConstantFromCSV::PiecewiseConstantFromCSV(), SolutionUserObjectBase::pointValueGradientWrapper(), SolutionUserObjectBase::pointValueWrapper(), MeshInfo::possiblyAddSidesetInfo(), MeshInfo::possiblyAddSubdomainInfo(), ComputeLinearFVElementalThread::printBlockExecutionInformation(), ComputeLinearFVFaceThread::printBlockExecutionInformation(), BlockRestrictionDebugOutput::printBlockRestrictionMap(), MaterialPropertyDebugOutput::printMaterialMap(), TopResidualDebugOutput::printTopResiduals(), SolutionUserObjectBase::SolutionUserObjectBase(), FixedPointSolve::solve(), TransientMultiApp::solveStep(), Moose::PetscSupport::storePetscOptions(), MultiAppDofCopyTransfer::transfer(), Checkpoint::updateCheckpointFiles(), and SampledOutput::updateSample().

151 { return _mesh; }
MooseMesh & _mesh

◆ mesh() [2/3]

virtual const MooseMesh& FEProblemBase::mesh ( ) const
inlineoverridevirtualinherited

Implements SubProblem.

Reimplemented in MFEMProblem.

Definition at line 152 of file FEProblemBase.h.

152 { return _mesh; }
MooseMesh & _mesh

◆ mesh() [3/3]

const MooseMesh & FEProblemBase::mesh ( bool  use_displaced) const
overridevirtualinherited

Implements SubProblem.

Definition at line 638 of file FEProblemBase.C.

639 {
640  if (use_displaced && !_displaced_problem)
641  mooseWarning("Displaced mesh was requested but the displaced problem does not exist. "
642  "Regular mesh will be returned");
643  return ((use_displaced && _displaced_problem) ? _displaced_problem->mesh() : mesh());
644 }
void mooseWarning(Args &&... args) const
Emits a warning prefixed with object name and type.
virtual MooseMesh & mesh() override
std::shared_ptr< DisplacedProblem > _displaced_problem

◆ meshChanged() [1/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 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 8037 of file FEProblemBase.C.

Referenced by SidesetAroundSubdomainUpdater::finalize(), ActivateElementsUserObjectBase::finalize(), Exodus::handleExodusIOMeshRenumbering(), ElementSubdomainModifierBase::modify(), and Adaptivity::uniformRefineWithProjection().

8040 {
8041  TIME_SECTION("meshChanged", 3, "Handling Mesh Changes");
8042 
8045  _mesh.cacheChangedLists(); // Currently only used with adaptivity and stateful material
8046  // properties
8047 
8048  // Clear these out because they corresponded to the old mesh
8049  _ghosted_elems.clear();
8051 
8052  // The mesh changed. We notify the MooseMesh first, because
8053  // callbacks (e.g. for sparsity calculations) triggered by the
8054  // EquationSystems reinit may require up-to-date MooseMesh caches.
8055  _mesh.meshChanged();
8056 
8057  // If we're just going to alter the mesh again, all we need to
8058  // handle here is AMR and projections, not full system reinit
8059  if (intermediate_change)
8060  es().reinit_solutions();
8061  else
8062  es().reinit();
8063 
8064  if (contract_mesh)
8065  // Once vectors are restricted, we can delete children of coarsened elements
8066  _mesh.getMesh().contract();
8067  if (clean_refinement_flags)
8068  {
8069  // Finally clear refinement flags so that if someone tries to project vectors again without
8070  // an intervening mesh refinement to clear flags they won't run into trouble
8071  MeshRefinement refinement(_mesh.getMesh());
8072  refinement.clean_refinement_flags();
8073  }
8074 
8075  if (!intermediate_change)
8076  {
8077  // Since the mesh has changed, we need to make sure that we update any of our
8078  // MOOSE-system specific data.
8079  for (auto & sys : _solver_systems)
8080  sys->reinit();
8081  _aux->reinit();
8082  }
8083 
8084  // Updating MooseMesh first breaks other adaptivity code, unless we
8085  // then *again* update the MooseMesh caches. E.g. the definition of
8086  // "active" and "local" may have been *changed* by refinement and
8087  // repartitioning done in EquationSystems::reinit().
8088  _mesh.meshChanged();
8089 
8090  // If we have finite volume variables, we will need to recompute additional elemental/face
8091  // quantities
8094 
8095  // Let the meshChangedInterface notify the mesh changed event before we update the active
8096  // semilocal nodes, because the set of ghosted elements may potentially be updated during a mesh
8097  // changed event.
8098  for (const auto & mci : _notify_when_mesh_changes)
8099  mci->meshChanged();
8100 
8101  // Since the Mesh changed, update the PointLocator object used by DiracKernels.
8103 
8104  // Need to redo ghosting
8106 
8107  if (_displaced_problem)
8108  {
8109  _displaced_problem->meshChanged(contract_mesh, clean_refinement_flags);
8111  }
8112 
8114 
8117 
8118  // Just like we reinitialized our geometric search objects, we also need to reinitialize our
8119  // mortar meshes. Note that this needs to happen after DisplacedProblem::meshChanged because the
8120  // mortar mesh discretization will depend necessarily on the displaced mesh being re-displaced
8121  updateMortarMesh();
8122 
8123  reinitBecauseOfGhostingOrNewGeomObjects(/*mortar_changed=*/true);
8124 
8125  // We need to create new storage for newly active elements, and copy
8126  // stateful properties from the old elements.
8129  {
8130  if (havePRefinement())
8132 
8133  // Prolong properties onto newly refined elements' children
8134  {
8136  /* refine = */ true, *this, _material_props, _bnd_material_props, _assembly);
8137  const auto & range = *_mesh.refinedElementRange();
8138  Threads::parallel_reduce(range, pmp);
8139 
8140  // Concurrent erasure from the shared hash map is not safe while we are reading from it in
8141  // ProjectMaterialProperties, so we handle erasure here. Moreover, erasure based on key is
8142  // not thread safe in and of itself because it is a read-write operation. Note that we do not
8143  // do the erasure for p-refinement because the coarse level element is the same as our active
8144  // refined level element
8145  if (!doingPRefinement())
8146  for (const auto & elem : range)
8147  {
8151  }
8152  }
8153 
8154  // Restrict properties onto newly coarsened elements
8155  {
8157  /* refine = */ false, *this, _material_props, _bnd_material_props, _assembly);
8158  const auto & range = *_mesh.coarsenedElementRange();
8159  Threads::parallel_reduce(range, pmp);
8160  // Note that we do not do the erasure for p-refinement because the coarse level element is the
8161  // same as our active refined level element
8162  if (!doingPRefinement())
8163  for (const auto & elem : range)
8164  {
8165  auto && coarsened_children = _mesh.coarsenedElementChildren(elem);
8166  for (auto && child : coarsened_children)
8167  {
8171  }
8172  }
8173  }
8174  }
8175 
8178 
8179  _has_jacobian = false; // we have to recompute jacobian when mesh changed
8180 
8181  // Now for backwards compatibility with user code that overrode the old no-arg meshChanged we must
8182  // call it here
8183  meshChanged();
8184 }
void setVariableAllDoFMap(const std::vector< const MooseVariableFEBase *> &moose_vars)
bool isFiniteVolumeInfoDirty() const
Definition: MooseMesh.h:1304
virtual void meshChanged()
Deprecated.
void reinitBecauseOfGhostingOrNewGeomObjects(bool mortar_changed=false)
Call when it is possible that the needs for ghosted elements has changed.
MaterialPropertyStorage & _bnd_material_props
bool _has_jacobian
Indicates if the Jacobian was computed.
virtual bool haveFV() const override
returns true if this problem includes/needs finite volume functionality.
void eraseProperty(const Elem *elem)
Remove the property storage and element pointer from internal data structures Use this when elements ...
void parallel_reduce(const Range &range, Body &body, const Partitioner &)
void cacheChangedLists()
Cache information about what elements were refined and coarsened in the previous step.
Definition: MooseMesh.C:910
std::vector< std::shared_ptr< SolverSystem > > _solver_systems
Combined container to base pointer of every solver system.
ConstElemPointerRange * refinedElementRange() const
Return a range that is suitable for threaded execution over elements that were just refined...
Definition: MooseMesh.C:928
std::set< dof_id_type > _ghosted_elems
Elements that should have Dofs ghosted to the local processor.
Definition: SubProblem.h:1093
std::unique_ptr< libMesh::ConstElemRange > _nl_evaluable_local_elem_range
bool _calculate_jacobian_in_uo
bool havePRefinement() const
Query whether p-refinement has been requested at any point during the simulation. ...
Definition: SubProblem.h:1009
MeshBase & getMesh()
Accessor for the underlying libMesh Mesh object.
Definition: MooseMesh.C:3443
std::vector< MeshChangedInterface * > _notify_when_mesh_changes
Objects to be notified when the mesh changes.
virtual libMesh::EquationSystems & es() override
std::shared_ptr< AuxiliarySystem > _aux
The auxiliary system.
MooseMesh & _mesh
void reinit()
Completely redo all geometric search objects.
bool doingPRefinement() const
Definition: SubProblem.C:1355
std::vector< std::vector< std::unique_ptr< Assembly > > > _assembly
The Assembly objects.
virtual void updateMortarMesh()
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:940
virtual bool contract()=0
void updateActiveSemiLocalNodeRange(std::set< dof_id_type > &ghosted_elems)
Clears the "semi-local" node list and rebuilds it.
Definition: MooseMesh.C:948
std::vector< std::vector< const MooseVariableFEBase * > > _uo_jacobian_moose_vars
std::shared_ptr< DisplacedProblem > _displaced_problem
GeometricSearchData _geometric_search_data
bool _has_initialized_stateful
Whether nor not stateful materials have been initialized.
MaterialPropertyStorage & _neighbor_material_props
ConstElemPointerRange * coarsenedElementRange() const
Return a range that is suitable for threaded execution over elements that were just coarsened...
Definition: MooseMesh.C:934
std::unique_ptr< libMesh::ConstElemRange > _evaluable_local_elem_range
DiracKernelInfo _dirac_kernel_info
Definition: SubProblem.h:1049
MaterialPropertyStorage & _material_props
void updatePointLocator(const MooseMesh &mesh)
Called during FEProblemBase::meshChanged() to update the PointLocator object used by the DiracKernels...
MooseMesh * _displaced_mesh
void meshChanged()
Declares that the MooseMesh has changed, invalidates cached data and rebuilds caches.
Definition: MooseMesh.C:879
void buildPRefinementAndCoarseningMaps(Assembly *assembly)
Definition: MooseMesh.C:2363
virtual void ghostGhostedBoundaries() override
Causes the boundaries added using addGhostedBoundary to actually be ghosted.
void setupFiniteVolumeMeshData() const
Sets up the additional data needed for finite volume computations.
Definition: MooseMesh.C:4067

◆ meshChanged() [2/2]

virtual void FEProblemBase::meshChanged ( )
inlineprotectedvirtualinherited

Deprecated.

Users should switch to overriding the meshChanged which takes arguments

Definition at line 2471 of file FEProblemBase.h.

Referenced by FEProblemBase::adaptMesh(), FEProblemBase::initialAdaptMesh(), FEProblemBase::meshChanged(), FEProblemBase::timestepSetup(), FEProblemBase::uniformRefine(), and FEProblemBase::updateMeshXFEM().

2471 {}

◆ meshDisplaced()

void FEProblemBase::meshDisplaced ( )
protectedvirtualinherited

Update data after a mesh displaced.

Definition at line 8199 of file FEProblemBase.C.

Referenced by DisplacedProblem::updateMesh().

8200 {
8201  for (const auto & mdi : _notify_when_mesh_displaces)
8202  mdi->meshDisplaced();
8203 }
std::vector< MeshDisplacedInterface * > _notify_when_mesh_displaces
Objects to be notified when the mesh displaces.

◆ mooseDeprecated()

template<typename... Args>
void MooseBaseErrorInterface::mooseDeprecated ( Args &&...  args) const
inlineinherited

Definition at line 91 of file MooseBaseErrorInterface.h.

Referenced by FEProblemBase::addAuxArrayVariable(), FEProblemBase::addAuxScalarVariable(), FEProblemBase::addAuxVariable(), FEProblemBase::advanceMultiApps(), MultiApp::appProblem(), MooseMesh::buildSideList(), ChangeOverTimestepPostprocessor::ChangeOverTimestepPostprocessor(), AddVariableAction::determineType(), EigenProblem::EigenProblem(), Eigenvalue::Eigenvalue(), MooseMesh::elem(), UserForcingFunction::f(), FaceFaceConstraint::FaceFaceConstraint(), FunctionDT::FunctionDT(), RandomICBase::generateRandom(), MooseMesh::getBoundariesToElems(), DataFileInterface::getDataFileName(), DataFileInterface::getDataFileNameByName(), Control::getExecuteOptions(), FEProblemBase::getNonlinearSystem(), FEProblemBase::getUserObjects(), FEProblemBase::hasPostprocessor(), MatDiffusionBase< Real >::MatDiffusionBase(), MultiAppNearestNodeTransfer::MultiAppNearestNodeTransfer(), MultiAppShapeEvaluationTransfer::MultiAppShapeEvaluationTransfer(), MultiAppUserObjectTransfer::MultiAppUserObjectTransfer(), NodalScalarKernel::NodalScalarKernel(), MooseMesh::node(), FixedPointSolve::numPicardIts(), RelationshipManager::operator>=(), PercentChangePostprocessor::PercentChangePostprocessor(), ReferenceResidualConvergence::ReferenceResidualConvergence(), Residual::Residual(), MooseMesh::setBoundaryToNormalMap(), Exodus::setOutputDimension(), and UserForcingFunction::UserForcingFunction().

92  {
94  _console, false, true, _moose_base.errorPrefix("deprecation"), std::forward<Args>(args)...);
95  }
std::string errorPrefix(const std::string &error_type) const
Definition: MooseBase.C:43
const MooseBase & _moose_base
The MooseBase class deriving from this interface.
void mooseDeprecatedStream(S &oss, const bool expired, const bool print_title, Args &&... args)
Definition: MooseError.h:239
const ConsoleStream _console
An instance of helper class to write streams to the Console objects.

◆ mooseDocumentedError()

template<typename... Args>
void MooseBaseErrorInterface::mooseDocumentedError ( const std::string &  repo_name,
const unsigned int  issue_num,
Args &&...  args 
) const
inlineinherited

Emits a documented error with object name and type.

Documented errors are errors that have an issue associated with them.

The repository name repo_name links a named repository to a URL and should be registered at the application level with registerRepository(). See Moose.C for an example of the "moose" repository registration.

Parameters
repo_nameThe repository name where the issue resides
issue_numThe number of the issue
argsThe error message to be combined

Definition at line 61 of file MooseBaseErrorInterface.h.

Referenced by ArrayDGLowerDKernel::ArrayDGLowerDKernel(), ArrayHFEMDirichletBC::ArrayHFEMDirichletBC(), ArrayLowerDIntegratedBC::ArrayLowerDIntegratedBC(), DGLowerDKernel::DGLowerDKernel(), HFEMDirichletBC::HFEMDirichletBC(), and LowerDIntegratedBC::LowerDIntegratedBC().

64  {
65  std::ostringstream oss;
66  moose::internal::mooseStreamAll(oss, std::forward<Args>(args)...);
67  const auto msg = moose::internal::formatMooseDocumentedError(repo_name, issue_num, oss.str());
68  _moose_base.callMooseError(msg, /* with_prefix = */ true);
69  }
void mooseStreamAll(std::ostringstream &ss)
All of the following are not meant to be called directly - they are called by the normal macros (moos...
Definition: MooseError.C:94
const MooseBase & _moose_base
The MooseBase class deriving from this interface.
void callMooseError(std::string msg, const bool with_prefix) const
Calls moose error with the message msg.
Definition: MooseBase.C:33
std::string formatMooseDocumentedError(const std::string &repo_name, const unsigned int issue_num, const std::string &msg)
Formats a documented error.
Definition: MooseError.C:99

◆ mooseError()

template<typename... Args>
void MooseBaseErrorInterface::mooseError ( Args &&...  args) const
inlineinherited

Emits an error prefixed with object name and type.

Definition at line 29 of file MooseBaseErrorInterface.h.

Referenced by CopyMeshPartitioner::_do_partition(), HierarchicalGridPartitioner::_do_partition(), GridPartitioner::_do_partition(), PetscExternalPartitioner::_do_partition(), MultiAppGeneralFieldTransfer::acceptPointInOriginMesh(), CreateExecutionerAction::act(), AddICAction::act(), AddBoundsVectorsAction::act(), AddVectorPostprocessorAction::act(), AutoCheckpointAction::act(), CheckFVBCAction::act(), InitProblemAction::act(), SetupMeshCompleteAction::act(), AddMeshGeneratorAction::act(), CheckIntegrityAction::act(), AddFVICAction::act(), CreateProblemAction::act(), CreateProblemDefaultAction::act(), CombineComponentsMeshes::act(), SetupMeshAction::act(), SplitMeshAction::act(), AdaptivityAction::act(), ChainControlSetupAction::act(), DeprecatedBlockAction::act(), SetupPredictorAction::act(), SetupTimeStepperAction::act(), AddTimeStepperAction::act(), CreateDisplacedProblemAction::act(), MaterialDerivativeTestAction::act(), SetAdaptivityOptionsAction::act(), MaterialOutputAction::act(), AddMFEMSubMeshAction::act(), CommonOutputAction::act(), AddPeriodicBCAction::act(), Action::Action(), FEProblemBase::adaptMesh(), ADConservativeAdvectionBC::ADConservativeAdvectionBC(), MooseVariableFV< Real >::adCurlSln(), MooseVariableFV< Real >::adCurlSlnNeighbor(), AddActionComponentAction::AddActionComponentAction(), MFEMProblem::addBoundaryCondition(), FEProblemBase::addBoundaryCondition(), DiffusionCG::addBoundaryConditionsFromComponents(), PhysicsComponentInterface::addBoundaryConditionsFromComponents(), FEProblemBase::addConstraint(), FEProblemBase::addDamper(), FEProblemBase::addDGKernel(), FEProblemBase::addDiracKernel(), DistributedRectilinearMeshGenerator::addElement(), FEProblemBase::addFunction(), SubProblem::addFunctor(), FEProblemBase::addFVInitialCondition(), ADDGKernel::ADDGKernel(), FEProblemBase::addHDGKernel(), FEProblemBase::addInitialCondition(), PhysicsComponentInterface::addInitialConditionsFromComponents(), FEProblemBase::addInterfaceKernel(), MFEMProblem::addKernel(), FEProblemBase::addKernel(), FEProblem::addLineSearch(), FEProblemBase::addLineSearch(), MFEMProblem::addMaterial(), MeshGenerator::addMeshSubgenerator(), MFEMProblem::addMFEMFESpaceFromMOOSEVariable(), FEProblemBase::addOutput(), SubProblem::addPiecewiseByBlockLambdaFunctor(), DiracKernelBase::addPoint(), DistributedRectilinearMeshGenerator::addPoint(), DiracKernelBase::addPointWithValidId(), FEProblemBase::addPostprocessor(), FEProblemBase::addPredictor(), CreateDisplacedProblemAction::addProxyRelationshipManagers(), MooseMesh::addQuadratureNode(), Action::addRelationshipManager(), FEProblemBase::addReporter(), FEProblemBase::addScalarKernel(), AddVariableAction::addVariable(), FEProblemBase::addVectorPostprocessor(), SubProblem::addVectorTag(), MooseLinearVariableFV< Real >::adError(), ADInterfaceKernelTempl< T >::ADInterfaceKernelTempl(), ADPiecewiseLinearInterpolationMaterial::ADPiecewiseLinearInterpolationMaterial(), MooseVariableScalar::adUDot(), Output::advancedExecuteOn(), AdvectiveFluxAux::AdvectiveFluxAux(), MooseVariableBase::allDofIndices(), NEML2ModelExecutor::applyPredictor(), MultiApp::appPostprocessorValue(), MultiApp::appProblem(), MultiApp::appProblemBase(), MultiApp::appUserObjectBase(), ArrayConstantIC::ArrayConstantIC(), ArrayDGKernel::ArrayDGKernel(), ArrayDiffusion::ArrayDiffusion(), ArrayFunctionIC::ArrayFunctionIC(), ArrayReaction::ArrayReaction(), ArrayTimeDerivative::ArrayTimeDerivative(), AddPeriodicBCAction::autoTranslationBoundaries(), AuxKernelTempl< Real >::AuxKernelTempl(), Function::average(), Axisymmetric2D3DSolutionFunction::Axisymmetric2D3DSolutionFunction(), BatchMeshGeneratorAction::BatchMeshGeneratorAction(), BicubicSplineFunction::BicubicSplineFunction(), BlockDeletionGenerator::BlockDeletionGenerator(), BoundingValueElementDamper::BoundingValueElementDamper(), BoundingValueNodalDamper::BoundingValueNodalDamper(), BreakMeshByBlockGeneratorBase::BreakMeshByBlockGeneratorBase(), MooseMesh::buildCoarseningMap(), MultiApp::buildComm(), DistributedRectilinearMeshGenerator::buildCube(), TimedSubdomainModifier::buildFromFile(), PiecewiseTabularBase::buildFromFile(), PiecewiseTabularBase::buildFromJSON(), TimedSubdomainModifier::buildFromParameters(), PiecewiseTabularBase::buildFromXY(), PiecewiseLinearBase::buildInterpolation(), MooseMesh::buildLowerDMesh(), TiledMesh::buildMesh(), GeneratedMesh::buildMesh(), SpiralAnnularMesh::buildMesh(), MeshGeneratorMesh::buildMesh(), ImageMeshGenerator::buildMesh3D(), ImageMesh::buildMesh3D(), MooseMesh::buildRefinementMap(), MaterialBase::buildRequiredMaterials(), MooseMesh::buildSideList(), MooseMesh::buildTypedMesh(), MooseMesh::cacheFaceInfoVariableOwnership(), CartesianGridDivision::CartesianGridDivision(), CartesianMeshGenerator::CartesianMeshGenerator(), ChangeOverFixedPointPostprocessor::ChangeOverFixedPointPostprocessor(), ChangeOverTimePostprocessor::ChangeOverTimePostprocessor(), EigenExecutionerBase::chebyshev(), SubProblem::checkBlockMatProps(), PhysicsBase::checkBlockRestrictionIdentical(), ComponentBoundaryConditionInterface::checkBoundaryConditionsAllRequested(), SubProblem::checkBoundaryMatProps(), PhysicsBase::checkComponentType(), IterationCountConvergence::checkConvergence(), MooseMesh::checkCoordinateSystems(), DiffusionLHDGAssemblyHelper::checkCoupling(), FEProblemBase::checkDependMaterialsHelper(), FEProblemBase::checkDisplacementOrders(), FEProblemBase::checkDuplicatePostprocessorVariableNames(), DefaultConvergenceBase::checkDuplicateSetSharedExecutionerParams(), MooseMesh::checkDuplicateSubdomainNames(), FEProblemBase::checkExceptionAndStopSolve(), NEML2ModelExecutor::checkExecutionStage(), MaterialBase::checkExecutionStage(), MeshGenerator::checkGetMesh(), ReporterTransferInterface::checkHasReporterValue(), FEProblemBase::checkICRestartError(), Steady::checkIntegrity(), EigenExecutionerBase::checkIntegrity(), Eigenvalue::checkIntegrity(), ExplicitTimeIntegrator::checkLinearConvergence(), MeshDiagnosticsGenerator::checkNonConformalMeshFromAdaptivity(), MeshDiagnosticsGenerator::checkNonMatchingEdges(), PostprocessorInterface::checkParam(), FEProblemBase::checkProblemIntegrity(), Sampler::checkReinitStatus(), MultiAppGeneralFieldNearestLocationTransfer::checkRestrictionsForSource(), MultiAppPostprocessorToAuxScalarTransfer::checkSiblingsTransferSupported(), MultiAppScalarToAuxScalarTransfer::checkSiblingsTransferSupported(), MultiAppPostprocessorTransfer::checkSiblingsTransferSupported(), MultiAppReporterTransfer::checkSiblingsTransferSupported(), MultiAppMFEMCopyTransfer::checkSiblingsTransferSupported(), MultiAppCopyTransfer::checkSiblingsTransferSupported(), MultiAppTransfer::checkSiblingsTransferSupported(), MaterialBase::checkStatefulSanity(), AddDefaultConvergenceAction::checkUnusedMultiAppFixedPointConvergenceParameters(), AddDefaultConvergenceAction::checkUnusedNonlinearConvergenceParameters(), FEProblemBase::checkUserObjects(), Moose::PetscSupport::checkUserProvidedPetscOption(), DomainUserObject::checkVariable(), MultiAppTransfer::checkVariable(), MeshDiagnosticsGenerator::checkWatertightNodesets(), MeshDiagnosticsGenerator::checkWatertightSidesets(), LibmeshPartitioner::clone(), MooseMesh::clone(), CombinerGenerator::CombinerGenerator(), ComparisonPostprocessor::comparisonIsTrue(), MooseVariableFieldBase::componentName(), CompositeFunction::CompositeFunction(), ElementH1ErrorFunctionAux::compute(), NodalPatchRecovery::compute(), FEProblemBase::computeBounds(), VariableCondensationPreconditioner::computeDInverseDiag(), CompositionDT::computeDT(), ArrayDGKernel::computeElemNeighJacobian(), ArrayDGKernel::computeElemNeighResidual(), InternalSideIntegralPostprocessor::computeFaceInfoIntegral(), SideIntegralPostprocessor::computeFaceInfoIntegral(), MooseVariableFieldBase::computeFaceValues(), TimeSequenceStepperBase::computeFailedDT(), IterationAdaptiveDT::computeFailedDT(), TimeStepper::computeFailedDT(), MooseMesh::computeFiniteVolumeCoords(), HistogramVectorPostprocessor::computeHistogram(), ArrayKernel::computeJacobian(), ArrayIntegratedBC::computeJacobian(), FVFluxKernel::computeJacobian(), NodalConstraint::computeJacobian(), FEProblemBase::computeJacobianTags(), LowerDIntegratedBC::computeLowerDOffDiagJacobian(), ArrayLowerDIntegratedBC::computeLowerDOffDiagJacobian(), EigenProblem::computeMatricesTags(), ArrayDGKernel::computeOffDiagElemNeighJacobian(), ArrayKernel::computeOffDiagJacobian(), ArrayIntegratedBC::computeOffDiagJacobian(), FVElementalKernel::computeOffDiagJacobian(), MortarScalarBase::computeOffDiagJacobianScalar(), DGLowerDKernel::computeOffDiagLowerDJacobian(), ArrayDGLowerDKernel::computeOffDiagLowerDJacobian(), MaterialBase::computeProperties(), SideFVFluxBCIntegral::computeQpIntegral(), ScalarKernel::computeQpJacobian(), CoupledTiedValueConstraint::computeQpJacobian(), TiedValueConstraint::computeQpJacobian(), NodalEqualValueConstraint::computeQpJacobian(), LinearNodalConstraint::computeQpJacobian(), EqualValueBoundaryConstraint::computeQpJacobian(), NodeElemConstraint::computeQpJacobian(), CoupledTiedValueConstraint::computeQpOffDiagJacobian(), ScalarKernel::computeQpResidual(), MassMatrix::computeQpResidual(), HDGKernel::computeQpResidual(), DiffusionLHDGDirichletBC::computeQpResidual(), NodalEqualValueConstraint::computeQpResidual(), DiffusionLHDGPrescribedGradientBC::computeQpResidual(), IPHDGBC::computeQpResidual(), KernelValue::computeQpResidual(), TorchScriptMaterial::computeQpValues(), InterfaceQpValueUserObject::computeRealValue(), ArrayKernel::computeResidual(), ArrayIntegratedBC::computeResidual(), FVFluxBC::computeResidual(), FVFluxKernel::computeResidual(), NodalConstraint::computeResidual(), FVFluxKernel::computeResidualAndJacobian(), ResidualObject::computeResidualAndJacobian(), FEProblemBase::computeResidualAndJacobian(), HDGKernel::computeResidualAndJacobianOnSide(), FEProblemBase::computeResidualInternal(), FEProblemBase::computeResidualTag(), FEProblemBase::computeResidualTags(), FEProblemBase::computeResidualType(), KernelScalarBase::computeScalarOffDiagJacobian(), ADKernelScalarBase::computeScalarQpResidual(), ADMortarScalarBase::computeScalarQpResidual(), MortarScalarBase::computeScalarQpResidual(), KernelScalarBase::computeScalarQpResidual(), TimeStepper::computeStep(), ExplicitEuler::computeTimeDerivatives(), ImplicitEuler::computeTimeDerivatives(), ActuallyExplicitEuler::computeTimeDerivatives(), BDF2::computeTimeDerivatives(), NewmarkBeta::computeTimeDerivatives(), CentralDifference::computeTimeDerivatives(), CrankNicolson::computeTimeDerivatives(), LStableDirk2::computeTimeDerivatives(), LStableDirk3::computeTimeDerivatives(), ImplicitMidpoint::computeTimeDerivatives(), ExplicitTVDRK2::computeTimeDerivatives(), AStableDirk4::computeTimeDerivatives(), LStableDirk4::computeTimeDerivatives(), ExplicitRK2::computeTimeDerivatives(), MultiAppGeometricInterpolationTransfer::computeTransformation(), BuildArrayVariableAux::computeValue(), TagVectorArrayVariableAux::computeValue(), NearestNodeValueAux::computeValue(), ProjectionAux::computeValue(), PenetrationAux::computeValue(), ConcentricCircleMesh::ConcentricCircleMesh(), ConditionalEnableControl::ConditionalEnableControl(), TimeStepper::constrainStep(), LibtorchNeuralNetControl::controlNeuralNet(), ParsedConvergence::convertRealToBool(), CopyMeshPartitioner::CopyMeshPartitioner(), CoupledForceNodalKernel::CoupledForceNodalKernel(), MultiApp::createApp(), AddVariableAction::createInitialConditionAction(), Function::curl(), MooseVariableFV< Real >::curlPhi(), CutMeshByPlaneGenerator::CutMeshByPlaneGenerator(), SidesetInfoVectorPostprocessor::dataHelper(), DebugResidualAux::DebugResidualAux(), ReporterTransferInterface::declareClone(), MeshGenerator::declareMeshProperty(), ReporterTransferInterface::declareVectorClone(), FunctorRelationshipManager::delete_remote_elements(), MooseMesh::deleteRemoteElements(), BicubicSplineFunction::derivative(), DerivativeSumMaterialTempl< is_ad >::DerivativeSumMaterialTempl(), MooseMesh::detectPairedSidesets(), FEProblemBase::determineSolverSystem(), DGKernel::DGKernel(), MeshDiagnosticsGenerator::diagnosticsLog(), DistributedPositions::DistributedPositions(), Function::div(), FunctorBinnedValuesDivision::divisionIndex(), MooseVariableFV< Real >::divPhi(), FunctorRelationshipManager::dofmap_reinit(), EigenProblem::doFreeNonlinearPowerIterations(), FEProblemBase::duplicateVariableCheck(), EigenProblem::EigenProblem(), Eigenvalue::Eigenvalue(), Eigenvalues::Eigenvalues(), ElementalVariableValue::ElementalVariableValue(), ElementGroupCentroidPositions::ElementGroupCentroidPositions(), ElementIntegerAux::ElementIntegerAux(), ElementMaterialSampler::ElementMaterialSampler(), ElementQualityAux::ElementQualityAux(), ElementSubdomainModifierBase::ElementSubdomainModifierBase(), ElementUOAux::ElementUOAux(), ExtraIDIntegralVectorPostprocessor::elementValue(), DistributedRectilinearMeshGenerator::elemId(), ProjectionAux::elemOnNodeVariableIsDefinedOn(), EigenKernel::enabled(), MooseMesh::errorIfDistributedMesh(), MultiAppTransfer::errorIfObjectExecutesOnTransferInSourceApp(), SideIntegralPostprocessor::errorNoFaceInfo(), SideIntegralFunctorPostprocessorTempl< false >::errorNoFaceInfo(), SolutionUserObjectBase::evalMeshFunction(), SolutionUserObjectBase::evalMeshFunctionGradient(), SolutionUserObjectBase::evalMultiValuedMeshFunction(), SolutionUserObjectBase::evalMultiValuedMeshFunctionGradient(), FixedPointSolve::examineFixedPointConvergence(), MultiAppGeneralFieldTransfer::examineReceivedValueConflicts(), RealToBoolChainControl::execute(), RestartableDataReporter::execute(), DiscreteElementUserObject::execute(), MultiAppPostprocessorToAuxScalarTransfer::execute(), NodalValueSampler::execute(), MultiAppScalarToAuxScalarTransfer::execute(), MultiAppPostprocessorInterpolationTransfer::execute(), MultiAppPostprocessorTransfer::execute(), ElementQualityChecker::execute(), PositionsFunctorValueSampler::execute(), GreaterThanLessThanPostprocessor::execute(), PointValue::execute(), MultiAppVariableValueSampleTransfer::execute(), MultiAppVariableValueSamplePostprocessorTransfer::execute(), FindValueOnLine::execute(), MultiAppNearestNodeTransfer::execute(), MultiAppMFEMCopyTransfer::execute(), MultiAppCopyTransfer::execute(), WebServerControl::execute(), InterfaceQpUserObjectBase::execute(), MultiAppGeometricInterpolationTransfer::execute(), MultiAppUserObjectTransfer::execute(), LeastSquaresFit::execute(), VectorPostprocessorComparison::execute(), LeastSquaresFitHistory::execute(), TimeExtremeValue::execute(), Eigenvalue::execute(), DomainUserObject::execute(), FEProblemBase::execute(), FEProblemBase::executeControls(), MultiAppVectorPostprocessorTransfer::executeFromMultiapp(), MultiAppVectorPostprocessorTransfer::executeToMultiapp(), Exodus::Exodus(), ExplicitSSPRungeKutta::ExplicitSSPRungeKutta(), MultiAppGeneralFieldTransfer::extractOutgoingPoints(), NEML2ModelExecutor::extractOutputs(), ExtraIDIntegralVectorPostprocessor::ExtraIDIntegralVectorPostprocessor(), FEProblemSolve::FEProblemSolve(), FileOutput::FileOutput(), NEML2ModelExecutor::fillInputs(), QuadraturePointMultiApp::fillPositions(), CentroidMultiApp::fillPositions(), MultiApp::fillPositions(), MultiAppGeometricInterpolationTransfer::fillSourceInterpolationPoints(), VerifyElementUniqueID::finalize(), VerifyNodalUniqueID::finalize(), DiscreteElementUserObject::finalize(), ElementQualityChecker::finalize(), MemoryUsage::finalize(), PointSamplerBase::finalize(), NearestPointAverage::finalize(), NearestPointIntegralVariablePostprocessor::finalize(), Transfer::find_sys(), BreakMeshByBlockGeneratorBase::findFreeBoundaryId(), FunctionDT::FunctionDT(), FunctionMaterialBase< is_ad >::FunctionMaterialBase(), FunctionScalarAux::FunctionScalarAux(), FunctionScalarIC::FunctionScalarIC(), FunctorSmootherTempl< T >::FunctorSmootherTempl(), FVInitialConditionTempl< T >::FVInitialConditionTempl(), FVMassMatrix::FVMassMatrix(), FVMatAdvection::FVMatAdvection(), FVScalarLagrangeMultiplierInterface::FVScalarLagrangeMultiplierInterface(), GapValueAux::GapValueAux(), WorkBalance::gather(), ElementOrderConversionGenerator::generate(), BlockToMeshConverterGenerator::generate(), ExtraNodesetGenerator::generate(), FileMeshGenerator::generate(), LowerDBlockFromSidesetGenerator::generate(), MoveNodeGenerator::generate(), PlaneIDMeshGenerator::generate(), RenameBlockGenerator::generate(), RenameBoundaryGenerator::generate(), SideSetsFromNormalsGenerator::generate(), SmoothMeshGenerator::generate(), SubdomainPerElementGenerator::generate(), TiledMeshGenerator::generate(), MeshDiagnosticsGenerator::generate(), BreakMeshByBlockGenerator::generate(), CoarsenBlockGenerator::generate(), FlipSidesetGenerator::generate(), GeneratedMeshGenerator::generate(), MeshRepairGenerator::generate(), SideSetsFromPointsGenerator::generate(), CombinerGenerator::generate(), AllSideSetsByNormalsGenerator::generate(), MeshExtruderGenerator::generate(), AdvancedExtruderGenerator::generate(), MeshCollectionGenerator::generate(), ParsedGenerateNodeset::generate(), SideSetsFromBoundingBoxGenerator::generate(), StackGenerator::generate(), StitchedMeshGenerator::generate(), XYZDelaunayGenerator::generate(), CutMeshByLevelSetGeneratorBase::generate(), SpiralAnnularMeshGenerator::generate(), XYDelaunayGenerator::generate(), XYMeshLineCutter::generate(), PatternedMeshGenerator::generate(), SubdomainBoundingBoxGenerator::generate(), DistributedRectilinearMeshGenerator::generate(), BoundingBoxNodeSetGenerator::generate(), MeshGenerator::generateData(), GeneratedMesh::GeneratedMesh(), GeneratedMeshGenerator::GeneratedMeshGenerator(), MeshGenerator::generateInternal(), CircularBoundaryCorrectionGenerator::generateRadialCorrectionFactor(), RandomICBase::generateRandom(), GenericConstantMaterialTempl< is_ad >::GenericConstantMaterialTempl(), GenericConstantVectorMaterialTempl< is_ad >::GenericConstantVectorMaterialTempl(), GenericFunctionMaterialTempl< is_ad >::GenericFunctionMaterialTempl(), GenericFunctionVectorMaterialTempl< is_ad >::GenericFunctionVectorMaterialTempl(), GenericFunctorGradientMaterialTempl< is_ad >::GenericFunctorGradientMaterialTempl(), GenericFunctorMaterialTempl< is_ad >::GenericFunctorMaterialTempl(), GenericFunctorTimeDerivativeMaterialTempl< is_ad >::GenericFunctorTimeDerivativeMaterialTempl(), GenericVectorFunctorMaterialTempl< is_ad >::GenericVectorFunctorMaterialTempl(), DisplacedProblem::getActualFieldVariable(), FEProblemBase::getActualFieldVariable(), DisplacedProblem::getArrayVariable(), FEProblemBase::getArrayVariable(), MooseMesh::getAxisymmetricRadialCoord(), MFEMFESpace::getBasis(), NEML2BatchIndexGenerator::getBatchIndex(), MooseMesh::getBlockConnectedBlocks(), VariableOldValueBounds::getBound(), MooseMesh::getBoundaryID(), MultiApp::getBoundingBox(), ChainControl::getChainControlDataByName(), MooseMesh::getCoarseningMap(), MultiApp::getCommandLineArgs(), MooseVariableBase::getContinuity(), Control::getControllableParameterByName(), FEProblemBase::getConvergence(), MooseMesh::getCoordSystem(), PhysicsBase::getCoupledPhysics(), PropertyReadFile::getData(), DataFileInterface::getDataFilePath(), TransfiniteMeshGenerator::getDiscreteEdge(), FEProblemBase::getDistribution(), MooseVariableBase::getDofIndices(), VariableCondensationPreconditioner::getDofToCondense(), TransfiniteMeshGenerator::getEdge(), GhostingUserObject::getElementalValue(), ElementUOProvider::getElementalValueLong(), ElementUOProvider::getElementalValueReal(), PropertyReadFile::getElementData(), MooseMesh::getElementIDIndex(), Material::getElementIDNeighbor(), Material::getElementIDNeighborByName(), MooseMesh::getElemIDMapping(), MooseMesh::getElemIDsOnBlocks(), MultiAppFieldTransfer::getEquationSystem(), MultiApp::getExecutioner(), MFEMVectorFESpace::getFECName(), MultiAppTransfer::getFromMultiApp(), MultiAppTransfer::getFromMultiAppInfo(), FEProblemBase::getFunction(), SubProblem::getFunctor(), FEProblemBase::getFVMatsAndDependencies(), MooseMesh::getGeneralAxisymmetricCoordAxis(), DistributedRectilinearMeshGenerator::getGhostNeighbors(), DistributedRectilinearMeshGenerator::getIndices(), FEProblemBase::getLinearConvergenceNames(), SolutionUserObjectBase::getLocalVarIndex(), Material::getMaterialByName(), FEProblemBase::getMaterialData(), SubProblem::getMatrixTagID(), AnnularMesh::getMaxInDimension(), GeneratedMesh::getMaxInDimension(), FEProblemBase::getMaxQps(), FEProblemBase::getMeshDivision(), MeshGenerator::getMeshGeneratorNameFromParam(), MeshGenerator::getMeshGeneratorNamesFromParam(), AnnularMesh::getMinInDimension(), GeneratedMesh::getMinInDimension(), MultiAppTransfer::getMultiApp(), FEProblemBase::getMultiAppFixedPointConvergenceName(), DistributedRectilinearMeshGenerator::getNeighbors(), Times::getNextTime(), MooseMesh::getNodeBlockIds(), PropertyReadFile::getNodeData(), MooseMesh::getNodeList(), FEProblemBase::getNonlinearConvergenceNames(), EigenProblem::getNonlinearEigenSystem(), FEProblemBase::getNonlinearSystem(), NEML2ModelExecutor::getOutput(), NEML2ModelExecutor::getOutputDerivative(), NEML2ModelExecutor::getOutputParameterDerivative(), MooseMesh::getPairedBoundaryMapping(), MaterialOutputAction::getParams(), ImageMeshGenerator::GetPixelInfo(), ImageMesh::GetPixelInfo(), PlaneIDMeshGenerator::getPlaneID(), Positions::getPosition(), Positions::getPositions(), FEProblemBase::getPositionsObject(), Positions::getPositionsVector2D(), Positions::getPositionsVector3D(), Positions::getPositionsVector4D(), PostprocessorInterface::getPostprocessorValueByNameInternal(), Times::getPreviousTime(), ComponentMaterialPropertyInterface::getPropertyValue(), InterfaceQpUserObjectBase::getQpValue(), MooseMesh::getRefinementMap(), ReporterInterface::getReporterName(), Reporter::getReporterValueName(), FEProblemBase::getSampler(), WebServerControl::getScalarJSONValue(), DisplacedProblem::getScalarVariable(), FEProblemBase::getScalarVariable(), MooseObject::getSharedPtr(), InterfaceQpUserObjectBase::getSideAverageValue(), PhysicsBase::getSolverSystem(), DisplacedProblem::getStandardVariable(), FEProblemBase::getStandardVariable(), MooseMesh::getSubdomainBoundaryIds(), TimedSubdomainModifier::getSubdomainIDAndCheck(), DisplacedProblem::getSystem(), FEProblemBase::getSystem(), Times::getTimeAtIndex(), FEProblemBase::getTimeFromStateArg(), TransientBase::getTimeIntegratorNames(), Times::getTimes(), MultiAppTransfer::getToMultiApp(), MultiAppTransfer::getToMultiAppInfo(), MooseMesh::getUniqueCoordSystem(), FEProblemBase::getUserObject(), FEProblemBase::getUserObjectBase(), UserObjectInterface::getUserObjectBaseByName(), UserObjectInterface::getUserObjectName(), NumRelationshipManagers::getValue(), VectorPostprocessorComponent::getValue(), Residual::getValue(), SideAverageValue::getValue(), JSONFileReader::getValue(), LineValueSampler::getValue(), FindValueOnLine::getValueAtPoint(), SubProblem::getVariableHelper(), JSONFileReader::getVector(), VectorPostprocessorInterface::getVectorPostprocessorName(), SubProblem::getVectorTag(), SubProblem::getVectorTagID(), DisplacedProblem::getVectorVariable(), FEProblemBase::getVectorVariable(), GhostingFromUOAux::GhostingFromUOAux(), MultiApp::globalAppToLocal(), MooseParsedVectorFunction::gradient(), Function::gradient(), FEProblemBase::handleException(), Terminator::handleMessage(), MooseVariableBase::hasDoFsOnNodes(), PostprocessorInterface::hasPostprocessor(), PostprocessorInterface::hasPostprocessorByName(), ReporterInterface::hasReporterValue(), ReporterInterface::hasReporterValueByName(), VectorPostprocessorInterface::hasVectorPostprocessor(), VectorPostprocessorInterface::hasVectorPostprocessorByName(), HDGKernel::HDGKernel(), TransientBase::incrementStepOrReject(), FixedPointIterationAdaptiveDT::init(), CrankNicolson::init(), CSVTimeSequenceStepper::init(), ExplicitTimeIntegrator::init(), EigenExecutionerBase::init(), TransientBase::init(), FEProblem::init(), AddAuxVariableAction::init(), IterationAdaptiveDT::init(), Eigenvalue::init(), AddVariableAction::init(), MooseMesh::init(), Sampler::init(), FEProblemBase::init(), MultiApp::init(), FEProblemBase::initialAdaptMesh(), NestedDivision::initialize(), ReporterPositions::initialize(), DistributedPositions::initialize(), TransformedPositions::initialize(), ElementGroupCentroidPositions::initialize(), FunctorPositions::initialize(), ReporterTimes::initialize(), FunctorTimes::initialize(), ParsedDownSelectionPositions::initialize(), ParsedConvergence::initializeConstantSymbol(), PhysicsBase::initializePhysics(), SteffensenSolve::initialSetup(), MultiAppCloneReporterTransfer::initialSetup(), SolutionIC::initialSetup(), PiecewiseLinearBase::initialSetup(), ChainControlDataPostprocessor::initialSetup(), IntegralPreservingFunctionIC::initialSetup(), MultiAppConservativeTransfer::initialSetup(), FullSolveMultiApp::initialSetup(), PiecewiseLinear::initialSetup(), CoarsenedPiecewiseLinear::initialSetup(), LinearFVDiffusion::initialSetup(), LinearFVAnisotropicDiffusion::initialSetup(), MultiAppDofCopyTransfer::initialSetup(), SolutionScalarAux::initialSetup(), LinearFVAdvection::initialSetup(), MultiAppGeneralFieldNearestLocationTransfer::initialSetup(), SolutionAux::initialSetup(), ExplicitTimeIntegrator::initialSetup(), ReferenceResidualConvergence::initialSetup(), NodalVariableValue::initialSetup(), Axisymmetric2D3DSolutionFunction::initialSetup(), Exodus::initialSetup(), CSV::initialSetup(), MooseParsedFunction::initialSetup(), SolutionUserObjectBase::initialSetup(), FEProblemBase::initialSetup(), SubProblem::initialSetup(), AdvancedOutput::initOutputList(), MFEMProblem::initProblemOperator(), AdvancedOutput::initShowHideLists(), Function::integral(), InterfaceDiffusiveFluxIntegralTempl< is_ad >::InterfaceDiffusiveFluxIntegralTempl(), InterfaceIntegralVariableValuePostprocessor::InterfaceIntegralVariableValuePostprocessor(), InterfaceKernelTempl< T >::InterfaceKernelTempl(), InterfaceTimeKernel::InterfaceTimeKernel(), InternalSideIndicatorBase::InternalSideIndicatorBase(), MultiAppGeometricInterpolationTransfer::interpolateTargetPoints(), EigenExecutionerBase::inversePowerIteration(), InversePowerMethod::InversePowerMethod(), Sampler::isAdaptiveSamplingCompleted(), MooseMesh::isBoundaryFullyExternalToSubdomains(), MooseVariableBase::isNodal(), IterationAdaptiveDT::IterationAdaptiveDT(), IterationCountConvergence::IterationCountConvergence(), LeastSquaresFit::LeastSquaresFit(), LibmeshPartitioner::LibmeshPartitioner(), LibtorchNeuralNetControl::LibtorchNeuralNetControl(), LinearCombinationPostprocessor::LinearCombinationPostprocessor(), LinearNodalConstraint::LinearNodalConstraint(), LineMaterialSamplerBase< Real >::LineMaterialSamplerBase(), LineSearch::lineSearch(), LineValueSampler::LineValueSampler(), MultiAppGeneralFieldTransfer::locatePointReceivers(), LowerBoundNodalKernel::LowerBoundNodalKernel(), MooseLinearVariableFV< Real >::lowerDError(), PNGOutput::makePNG(), ReporterPointMarker::markerSetup(), SubProblem::markFamilyPRefinement(), MassMatrix::MassMatrix(), Material::Material(), MaterialRealTensorValueAuxTempl< is_ad >::MaterialRealTensorValueAuxTempl(), MaterialRealVectorValueAuxTempl< T, is_ad, is_functor >::MaterialRealVectorValueAuxTempl(), MaterialStdVectorRealGradientAux::MaterialStdVectorRealGradientAux(), Distribution::median(), FunctorRelationshipManager::mesh_reinit(), MeshDiagnosticsGenerator::MeshDiagnosticsGenerator(), MeshExtruderGenerator::MeshExtruderGenerator(), MeshRepairGenerator::MeshRepairGenerator(), SetupMeshAction::modifyParamsForUseSplit(), MeshMetaDataInterface::mooseErrorInternal(), MooseLinearVariableFV< Real >::MooseLinearVariableFV(), MooseMesh::MooseMesh(), MooseObject::MooseObject(), UserObjectInterface::mooseObjectError(), MooseStaticCondensationPreconditioner::MooseStaticCondensationPreconditioner(), MooseVariableBase::MooseVariableBase(), MooseVariableConstMonomial::MooseVariableConstMonomial(), MoveNodeGenerator::MoveNodeGenerator(), MultiApp::MultiApp(), MultiAppMFEMCopyTransfer::MultiAppMFEMCopyTransfer(), MultiAppPostprocessorTransfer::MultiAppPostprocessorTransfer(), MultiAppTransfer::MultiAppTransfer(), MultiAppUserObjectTransfer::MultiAppUserObjectTransfer(), MultiAppVariableValueSamplePostprocessorTransfer::MultiAppVariableValueSamplePostprocessorTransfer(), NearestNodeDistanceAux::NearestNodeDistanceAux(), NearestNodeValueAux::NearestNodeValueAux(), FEProblemBase::needsPreviousNewtonIteration(), NewmarkBeta::NewmarkBeta(), NodalConstraint::NodalConstraint(), MooseVariableFV< Real >::nodalDofIndex(), MooseVariableFV< Real >::nodalDofIndexNeighbor(), MooseLinearVariableFV< Real >::nodalError(), MooseVariableFV< Real >::nodalMatrixTagValue(), NodalPatchRecoveryBase::nodalPatchRecovery(), NodalPatchRecoveryAuxBase::NodalPatchRecoveryAuxBase(), NodalScalarKernel::NodalScalarKernel(), MooseVariableFV< Real >::nodalValueArray(), MooseVariableFV< Real >::nodalValueOldArray(), MooseVariableFV< Real >::nodalValueOlderArray(), NodalVariableValue::NodalVariableValue(), MooseVariableFV< Real >::nodalVectorTagValue(), DistributedRectilinearMeshGenerator::nodeId(), MooseVariableFV< Real >::numberOfDofsNeighbor(), NumDOFs::NumDOFs(), NumFailedTimeSteps::NumFailedTimeSteps(), DistributedRectilinearMeshGenerator::numNeighbors(), NumNonlinearIterations::NumNonlinearIterations(), NumVars::NumVars(), Output::onInterval(), FunctorRelationshipManager::operator()(), RelationshipManager::operator==(), ActionComponent::outerSurfaceArea(), ActionComponent::outerSurfaceBoundaries(), XDA::output(), SolutionHistory::output(), Exodus::output(), Output::Output(), AdvancedOutput::outputElementalVariables(), AdvancedOutput::outputInput(), AdvancedOutput::outputNodalVariables(), AdvancedOutput::outputPostprocessors(), AdvancedOutput::outputReporters(), AdvancedOutput::outputScalarVariables(), Exodus::outputSetup(), AdvancedOutput::outputSystemInformation(), Console::outputVectorPostprocessors(), AdvancedOutput::outputVectorPostprocessors(), DistributedRectilinearMeshGenerator::paritionSquarely(), PiecewiseBilinear::parse(), ParsedConvergence::ParsedConvergence(), ParsedCurveGenerator::ParsedCurveGenerator(), ParsedODEKernel::ParsedODEKernel(), MultiAppConservativeTransfer::performAdjustment(), ExplicitTimeIntegrator::performExplicitSolve(), PetscExternalPartitioner::PetscExternalPartitioner(), MooseVariableFV< Real >::phiLowerSize(), PhysicsBasedPreconditioner::PhysicsBasedPreconditioner(), PIDTransientControl::PIDTransientControl(), PiecewiseBilinear::PiecewiseBilinear(), PiecewiseLinearInterpolationMaterial::PiecewiseLinearInterpolationMaterial(), PiecewiseMulticonstant::PiecewiseMulticonstant(), PiecewiseMultiInterpolation::PiecewiseMultiInterpolation(), PiecewiseTabularBase::PiecewiseTabularBase(), CutMeshByLevelSetGeneratorBase::pointPairLevelSetInterception(), SolutionUserObjectBase::pointValueGradientWrapper(), SolutionUserObjectBase::pointValueWrapper(), ReporterInterface::possiblyCheckHasReporter(), VectorPostprocessorInterface::possiblyCheckHasVectorPostprocessorByName(), LStableDirk2::postResidual(), LStableDirk3::postResidual(), ImplicitMidpoint::postResidual(), ExplicitTVDRK2::postResidual(), AStableDirk4::postResidual(), LStableDirk4::postResidual(), ExplicitRK2::postResidual(), EigenProblem::postScaleEigenVector(), VariableCondensationPreconditioner::preallocateCondensedJacobian(), ADKernelValueTempl< T >::precomputeQpJacobian(), Predictor::Predictor(), TransientBase::preExecute(), MooseMesh::prepare(), MooseMesh::prepared(), FixedPointSolve::printFixedPointConvergenceReason(), PseudoTimestep::PseudoTimestep(), MultiApp::readCommandLineArguments(), PropertyReadFile::readData(), SolutionUserObjectBase::readExodusII(), SolutionUserObjectBase::readXda(), CoarsenBlockGenerator::recursiveCoarsen(), FunctorRelationshipManager::redistribute(), ReferenceResidualConvergence::ReferenceResidualConvergence(), Sampler::reinit(), RelativeSolutionDifferenceNorm::RelativeSolutionDifferenceNorm(), PhysicsBase::reportPotentiallyMissedParameters(), RinglebMesh::RinglebMesh(), RinglebMeshGenerator::RinglebMeshGenerator(), PiecewiseMultiInterpolation::sample(), ScalarComponentIC::ScalarComponentIC(), MortarScalarBase::scalarVariable(), DistributedRectilinearMeshGenerator::scaleNodalPositions(), BicubicSplineFunction::secondDerivative(), MooseVariableFV< Real >::secondPhi(), MooseVariableFV< Real >::secondPhiFace(), MooseVariableFV< Real >::secondPhiFaceNeighbor(), MooseVariableFV< Real >::secondPhiNeighbor(), FunctorRelationshipManager::set_mesh(), MooseVariableBase::setActiveTags(), DistributedRectilinearMeshGenerator::setBoundaryNames(), MooseMesh::setCoordSystem(), FEProblemBase::setCoupling(), PiecewiseBase::setData(), FileOutput::setFileBaseInternal(), MooseMesh::setGeneralAxisymmetricCoordAxes(), FEProblemSolve::setInnerSolve(), MeshGenerator::setMeshProperty(), FVPointValueConstraint::setMyElem(), FEProblemBase::setNonlocalCouplingMatrix(), Sampler::setNumberOfCols(), Sampler::setNumberOfRandomSeeds(), Sampler::setNumberOfRows(), Exodus::setOutputDimensionInExodusWriter(), AddPeriodicBCAction::setPeriodicVars(), MFEMSolverBase::setPreconditioner(), MultiAppGeneralFieldTransfer::setSolutionVectorValues(), Split::setup(), TransientMultiApp::setupApp(), SetupMeshAction::setupMesh(), TimeSequenceStepperBase::setupSequence(), TransientBase::setupTimeIntegrator(), TimePeriodBase::setupTimes(), IntegratedBCBase::shouldApply(), PhysicsBase::shouldCreateIC(), PhysicsBase::shouldCreateTimeDerivative(), PhysicsBase::shouldCreateVariable(), SideAdvectiveFluxIntegralTempl< is_ad >::SideAdvectiveFluxIntegralTempl(), SideDiffusiveFluxIntegralTempl< is_ad, Real >::SideDiffusiveFluxIntegralTempl(), SideSetsFromNormalsGenerator::SideSetsFromNormalsGenerator(), SideSetsFromPointsGenerator::SideSetsFromPointsGenerator(), SingleMatrixPreconditioner::SingleMatrixPreconditioner(), SolutionTimeAdaptiveDT::SolutionTimeAdaptiveDT(), SolutionUserObjectBase::SolutionUserObjectBase(), TimeIntegrator::solve(), FEProblemBase::solverSysNum(), FullSolveMultiApp::solveStep(), SpatialAverageBase::SpatialAverageBase(), UserObject::spatialPoints(), NearestPointAverage::spatialValue(), NearestPointIntegralVariablePostprocessor::spatialValue(), MeshDivisionFunctorReductionVectorPostprocessor::spatialValue(), UserObject::spatialValue(), SpiralAnnularMesh::SpiralAnnularMesh(), SpiralAnnularMeshGenerator::SpiralAnnularMeshGenerator(), WebServerControl::startServer(), StitchedMesh::StitchedMesh(), WebServerControl::stringifyJSONType(), MultiAppGeometricInterpolationTransfer::subdomainIDsNode(), Constraint::subdomainSetup(), NodalUserObject::subdomainSetup(), GeneralUserObject::subdomainSetup(), MaterialBase::subdomainSetup(), FEProblemBase::swapBackMaterialsNeighbor(), DisplacedProblem::systemBaseLinear(), Console::systemInfoFlags(), FEProblemBase::systemNumForVariable(), TerminateChainControl::terminate(), Terminator::Terminator(), CutMeshByLevelSetGeneratorBase::tet4ElemCutter(), ThreadedGeneralUserObject::threadJoin(), DiscreteElementUserObject::threadJoin(), GeneralUserObject::threadJoin(), Function::timeDerivative(), TimedSubdomainModifier::TimedSubdomainModifier(), TimeExtremeValue::TimeExtremeValue(), Function::timeIntegral(), MooseLinearVariableFV< Real >::timeIntegratorError(), TimeIntervalTimes::TimeIntervalTimes(), TimePeriodBase::TimePeriodBase(), VectorPostprocessorVisualizationAux::timestepSetup(), MultiAppDofCopyTransfer::transfer(), MultiAppMFEMCopyTransfer::transfer(), MultiAppShapeEvaluationTransfer::transferVariable(), TransformedPositions::TransformedPositions(), FEProblemBase::trustUserCouplingMatrix(), MooseVariableScalar::uDot(), MooseVariableScalar::uDotDot(), MooseVariableScalar::uDotDotOld(), FEProblemBase::uDotDotOldRequested(), MooseVariableScalar::uDotOld(), FEProblemBase::uDotOldRequested(), Positions::unrollMultiDPositions(), ScalarKernelBase::uOld(), AuxScalarKernel::uOld(), Checkpoint::updateCheckpointFiles(), EqualValueBoundaryConstraint::updateConstrainedNodes(), SolutionUserObjectBase::updateExodusBracketingTimeIndices(), FEProblemBase::updateMaxQps(), MFEMHypreAMS::updateSolver(), MFEMHypreADS::updateSolver(), MFEMCGSolver::updateSolver(), MFEMOperatorJacobiSmoother::updateSolver(), MFEMHypreBoomerAMG::updateSolver(), MFEMHypreFGMRES::updateSolver(), MFEMGMRESSolver::updateSolver(), MFEMHyprePCG::updateSolver(), MFEMHypreGMRES::updateSolver(), MFEMSuperLU::updateSolver(), UpperBoundNodalKernel::UpperBoundNodalKernel(), NearestPointAverage::userObjectValue(), NearestPointIntegralVariablePostprocessor::userObjectValue(), BoundingBoxIC::value(), PiecewiseConstantFromCSV::value(), IntegralPreservingFunctionIC::value(), Axisymmetric2D3DSolutionFunction::value(), Function::value(), ValueRangeMarker::ValueRangeMarker(), ValueThresholdMarker::ValueThresholdMarker(), VariableCondensationPreconditioner::VariableCondensationPreconditioner(), PhysicsBase::variableExists(), MultiAppTransfer::variableIntegrityCheck(), VariableTimeIntegrationAux::VariableTimeIntegrationAux(), AddVariableAction::variableType(), VariableValueVolumeHistogram::VariableValueVolumeHistogram(), VectorMagnitudeFunctorMaterialTempl< is_ad >::VectorMagnitudeFunctorMaterialTempl(), VectorNodalBC::VectorNodalBC(), SubProblem::vectorTagName(), SubProblem::vectorTagType(), MooseParsedGradFunction::vectorValue(), MooseParsedFunction::vectorValue(), Function::vectorValue(), SubProblem::verifyVectorTags(), ActionComponent::volume(), VTKOutput::VTKOutput(), WebServerControl::WebServerControl(), DOFMapOutput::writeStreamToFile(), and Console::writeStreamToFile().

30  {
31  std::ostringstream oss;
32  moose::internal::mooseStreamAll(oss, std::forward<Args>(args)...);
33  _moose_base.callMooseError(oss.str(), /* with_prefix = */ true);
34  }
void mooseStreamAll(std::ostringstream &ss)
All of the following are not meant to be called directly - they are called by the normal macros (moos...
Definition: MooseError.C:94
const MooseBase & _moose_base
The MooseBase class deriving from this interface.
void callMooseError(std::string msg, const bool with_prefix) const
Calls moose error with the message msg.
Definition: MooseBase.C:33

◆ mooseErrorNonPrefixed()

template<typename... Args>
void MooseBaseErrorInterface::mooseErrorNonPrefixed ( Args &&...  args) const
inlineinherited

Emits an error without the prefixing included in mooseError().

Definition at line 40 of file MooseBaseErrorInterface.h.

41  {
42  std::ostringstream oss;
43  moose::internal::mooseStreamAll(oss, std::forward<Args>(args)...);
44  _moose_base.callMooseError(oss.str(), /* with_prefix = */ false);
45  }
void mooseStreamAll(std::ostringstream &ss)
All of the following are not meant to be called directly - they are called by the normal macros (moos...
Definition: MooseError.C:94
const MooseBase & _moose_base
The MooseBase class deriving from this interface.
void callMooseError(std::string msg, const bool with_prefix) const
Calls moose error with the message msg.
Definition: MooseBase.C:33

◆ mooseInfo()

template<typename... Args>
void MooseBaseErrorInterface::mooseInfo ( Args &&...  args) const
inlineinherited

Definition at line 98 of file MooseBaseErrorInterface.h.

Referenced by SetupRecoverFileBaseAction::act(), AStableDirk4::AStableDirk4(), MeshDiagnosticsGenerator::checkNonConformalMeshFromAdaptivity(), MultiAppGeneralFieldNearestLocationTransfer::evaluateInterpValuesNearestNode(), PIDTransientControl::execute(), ExplicitRK2::ExplicitRK2(), ExplicitTVDRK2::ExplicitTVDRK2(), DataFileInterface::getDataFilePath(), MFEMScalarFESpace::getFECName(), MultiAppTransfer::getPointInTargetAppFrame(), ImplicitMidpoint::ImplicitMidpoint(), ParsedDownSelectionPositions::initialize(), PropertyReadFile::initialize(), MultiAppGeneralFieldTransfer::initialSetup(), InversePowerMethod::InversePowerMethod(), LStableDirk2::LStableDirk2(), LStableDirk3::LStableDirk3(), LStableDirk4::LStableDirk4(), PNGOutput::makeMeshFunc(), NonlinearEigen::NonlinearEigen(), SolutionInvalidityOutput::output(), MultiAppGeneralFieldTransfer::outputValueConflicts(), ProjectionAux::ProjectionAux(), ReferenceResidualConvergence::ReferenceResidualConvergence(), MFEMDataCollection::registerFields(), FEProblemBase::setRestartFile(), SolutionUserObjectBase::SolutionUserObjectBase(), and SymmetryTransformGenerator::SymmetryTransformGenerator().

99  {
101  _console, _moose_base.errorPrefix("information"), std::forward<Args>(args)...);
102  }
void mooseInfoStream(S &oss, Args &&... args)
Definition: MooseError.h:232
std::string errorPrefix(const std::string &error_type) const
Definition: MooseBase.C:43
const MooseBase & _moose_base
The MooseBase class deriving from this interface.
const ConsoleStream _console
An instance of helper class to write streams to the Console objects.

◆ mooseWarning()

template<typename... Args>
void MooseBaseErrorInterface::mooseWarning ( Args &&...  args) const
inlineinherited

Emits a warning prefixed with object name and type.

Definition at line 75 of file MooseBaseErrorInterface.h.

Referenced by CopyMeshPartitioner::_do_partition(), AddKernelAction::act(), MeshOnlyAction::act(), AddFunctionAction::act(), MaterialOutputAction::act(), CommonOutputAction::act(), MFEMProblem::addFunction(), MooseMesh::addPeriodicVariable(), DiracKernelBase::addPoint(), BoundaryMarker::BoundaryMarker(), DistributedRectilinearMeshGenerator::buildCube(), MultiAppVariableValueSamplePostprocessorTransfer::cacheElemToPostprocessorData(), CartesianMeshGenerator::CartesianMeshGenerator(), CheckOutputAction::checkConsoleOutput(), MultiAppTransfer::checkMultiAppExecuteOn(), MeshDiagnosticsGenerator::checkNonMatchingEdges(), ActionComponent::checkRequiredTasks(), PhysicsBase::checkRequiredTasks(), SampledOutput::cloneMesh(), MultiAppGeneralFieldTransfer::closestToPosition(), VariableValueElementSubdomainModifier::computeSubdomainID(), GapValueAux::computeValue(), MultiApp::createApp(), DebugResidualAux::DebugResidualAux(), MeshDiagnosticsGenerator::diagnosticsLog(), CylindricalGridDivision::divisionIndex(), SphericalGridDivision::divisionIndex(), CartesianGridDivision::divisionIndex(), ElementMaterialSampler::ElementMaterialSampler(), Postprocessor::evaluateDotWarning(), MeshDivisionFunctorReductionVectorPostprocessor::execute(), ElementQualityChecker::finalize(), FiniteDifferencePreconditioner::FiniteDifferencePreconditioner(), FixedPointSolve::FixedPointSolve(), SubdomainPerElementGenerator::generate(), StitchedMeshGenerator::generate(), ParsedGenerateSideset::generate(), MultiAppTransfer::getAppInfo(), FunctorBinnedValuesDivision::getBinIndex(), DataFileInterface::getDataFilePath(), PointSamplerBase::getLocalElemContainingPoint(), FEProblemBase::getMaterial(), LineValueSampler::getValue(), Terminator::handleMessage(), IndicatorMarker::IndicatorMarker(), CylindricalGridDivision::initialize(), SphericalGridDivision::initialize(), ElementGroupCentroidPositions::initialize(), CartesianGridDivision::initialize(), MultiAppGeneralFieldNearestLocationTransfer::initialSetup(), BoundsBase::initialSetup(), ReferenceResidualConvergence::initialSetup(), MultiAppGeneralFieldTransfer::initialSetup(), FEProblemBase::initialSetup(), AdvancedOutput::initPostprocessorOrVectorPostprocessorLists(), MaterialBase::initStatefulProperties(), LeastSquaresFit::LeastSquaresFit(), IterationAdaptiveDT::limitDTToPostprocessorValue(), FEProblemBase::mesh(), MultiAppGeneralFieldTransfer::MultiAppGeneralFieldTransfer(), NewmarkBeta::NewmarkBeta(), NodalPatchRecovery::NodalPatchRecovery(), NonlocalIntegratedBC::NonlocalIntegratedBC(), NonlocalKernel::NonlocalKernel(), Output::Output(), MultiAppGeneralFieldTransfer::outputValueConflicts(), PiecewiseConstantFromCSV::PiecewiseConstantFromCSV(), Executioner::problem(), PropertyReadFile::readData(), TestSourceStepper::rejectStep(), PhysicsBase::reportPotentiallyMissedParameters(), MaterialBase::resetQpProperties(), SecondTimeDerivativeAux::SecondTimeDerivativeAux(), MooseMesh::setCoordSystem(), SidesetAroundSubdomainUpdater::SidesetAroundSubdomainUpdater(), FEProblemBase::sizeZeroes(), TransientMultiApp::solveStep(), Tecplot::Tecplot(), TimeDerivativeAux::TimeDerivativeAux(), Checkpoint::updateCheckpointFiles(), SampledOutput::updateSample(), PiecewiseConstantFromCSV::value(), and VariableCondensationPreconditioner::VariableCondensationPreconditioner().

76  {
78  _console, _moose_base.errorPrefix("warning"), std::forward<Args>(args)...);
79  }
std::string errorPrefix(const std::string &error_type) const
Definition: MooseBase.C:43
void mooseWarningStream(S &oss, Args &&... args)
Definition: MooseError.h:184
const MooseBase & _moose_base
The MooseBase class deriving from this interface.
const ConsoleStream _console
An instance of helper class to write streams to the Console objects.

◆ mooseWarningNonPrefixed()

template<typename... Args>
void MooseBaseErrorInterface::mooseWarningNonPrefixed ( Args &&...  args) const
inlineinherited

Emits a warning without the prefixing included in mooseWarning().

Definition at line 85 of file MooseBaseErrorInterface.h.

86  {
87  moose::internal::mooseWarningStream(_console, std::forward<Args>(args)...);
88  }
void mooseWarningStream(S &oss, Args &&... args)
Definition: MooseError.h:184
const ConsoleStream _console
An instance of helper class to write streams to the Console objects.

◆ mortarData() [1/2]

const MortarData& FEProblemBase::mortarData ( ) const
inlineinherited

Returns the mortar data object.

Definition at line 2179 of file FEProblemBase.h.

2179 { return _mortar_data; }
MortarData _mortar_data

◆ mortarData() [2/2]

MortarData& FEProblemBase::mortarData ( )
inlineinherited

Definition at line 2180 of file FEProblemBase.h.

2180 { return _mortar_data; }
MortarData _mortar_data

◆ name()

virtual const std::string& MooseBase::name ( ) const
inlinevirtualinherited

Get the name of the class.

Returns
The name of the class

Reimplemented in MooseVariableBase.

Definition at line 57 of file MooseBase.h.

Referenced by AddElementalFieldAction::act(), CopyNodalVarsAction::act(), AdaptivityAction::act(), AddTimeStepperAction::act(), DeprecatedBlockAction::act(), SetupTimeIntegratorAction::act(), AddActionComponentAction::act(), DisplayGhostingAction::act(), MaterialOutputAction::act(), AddPeriodicBCAction::act(), FEProblemBase::addAnyRedistributers(), Executioner::addAttributeReporter(), MFEMProblem::addAuxKernel(), FEProblemBase::addAuxKernel(), FEProblemBase::addAuxScalarKernel(), DisplacedProblem::addAuxVariable(), MFEMProblem::addBoundaryCondition(), FEProblemBase::addBoundaryCondition(), PhysicsComponentInterface::addComponent(), FEProblemBase::addConstraint(), FEProblemBase::addConvergence(), FEProblemBase::addDamper(), Registry::addDataFilePath(), FEProblemBase::addDGKernel(), FEProblemBase::addDiracKernel(), FEProblemBase::addDistribution(), MooseApp::addExecutor(), MooseApp::addExecutorParams(), MFEMProblem::addFESpace(), MFEMProblem::addFunction(), FEProblemBase::addFunction(), SubProblem::addFunctor(), MFEMProblem::addFunctorMaterial(), FEProblemBase::addFunctorMaterial(), FunctorMaterial::addFunctorProperty(), FunctorMaterial::addFunctorPropertyByBlocks(), FEProblemBase::addFVBC(), FEProblemBase::addFVInitialCondition(), FEProblemBase::addFVInterfaceKernel(), FEProblemBase::addFVKernel(), ADDGKernel::ADDGKernel(), FEProblemBase::addHDGKernel(), FEProblemBase::addIndicator(), MFEMProblem::addInitialCondition(), FEProblemBase::addInitialCondition(), FEProblemBase::addInterfaceKernel(), FEProblemBase::addInterfaceMaterial(), MFEMProblem::addKernel(), FEProblemBase::addKernel(), FEProblemBase::addLinearFVBC(), FEProblemBase::addLinearFVKernel(), FEProblemBase::addMarker(), FEProblemBase::addMaterial(), FEProblemBase::addMaterialHelper(), ComponentMaterialPropertyInterface::addMaterials(), FEProblemBase::addMeshDivision(), MooseApp::addMeshGenerator(), ComponentMeshTransformHelper::addMeshGenerators(), CylinderComponent::addMeshGenerators(), MeshGenerator::addMeshSubgenerator(), MFEMProblem::addMFEMPreconditioner(), MFEMProblem::addMFEMSolver(), FEProblemBase::addMultiApp(), FEProblemBase::addNodalKernel(), FEProblemBase::addObject(), ComponentPhysicsInterface::addPhysics(), SubProblem::addPiecewiseByBlockLambdaFunctor(), MFEMProblem::addPostprocessor(), FEProblemBase::addPostprocessor(), InitialConditionBase::addPostprocessorDependencyHelper(), UserObject::addPostprocessorDependencyHelper(), FEProblemBase::addPredictor(), CreateDisplacedProblemAction::addProxyRelationshipManagers(), Action::addRelationshipManager(), FEProblemBase::addReporter(), FEProblemBase::addSampler(), FEProblemBase::addScalarKernel(), FEProblemBase::addTimeIntegrator(), MFEMProblem::addTransfer(), FEProblemBase::addTransfer(), FEProblemBase::addUserObject(), InitialConditionBase::addUserObjectDependencyHelper(), UserObject::addUserObjectDependencyHelper(), AuxKernelTempl< Real >::addUserObjectDependencyHelper(), DisplacedProblem::addVariable(), FEProblemBase::addVectorPostprocessor(), UserObject::addVectorPostprocessorDependencyHelper(), Output::advancedExecuteOn(), AdvancedExtruderGenerator::AdvancedExtruderGenerator(), MooseApp::appBinaryName(), MooseApp::appendMeshGenerator(), Registry::appNameFromAppPath(), MultiApp::appPostprocessorValue(), MultiApp::appProblem(), MultiApp::appProblemBase(), MultiApp::appUserObjectBase(), ArrayDGKernel::ArrayDGKernel(), PhysicsBase::assignBlocks(), AStableDirk4::AStableDirk4(), AuxKernelTempl< Real >::AuxKernelTempl(), Function::average(), MultiApp::backup(), CoarsenedPiecewiseLinear::buildCoarsenedGrid(), MFEMFESpace::buildFEC(), PiecewiseTabularBase::buildFromFile(), MultiAppVariableValueSamplePostprocessorTransfer::cacheElemToPostprocessorData(), MooseBase::callMooseError(), ChangeOverFixedPointPostprocessor::ChangeOverFixedPointPostprocessor(), ChangeOverTimePostprocessor::ChangeOverTimePostprocessor(), PhysicsBase::checkBlockRestrictionIdentical(), PhysicsBase::checkComponentType(), DefaultNonlinearConvergence::checkConvergence(), ParsedConvergence::checkConvergence(), FEProblemBase::checkDependMaterialsHelper(), ReporterTransferInterface::checkHasReporterValue(), FEProblemBase::checkICRestartError(), Material::checkMaterialProperty(), MooseApp::checkMetaDataIntegrity(), Damper::checkMinDamping(), Checkpoint::checkpointInfo(), Coupleable::checkWritableVar(), CompositeFunction::CompositeFunction(), MaterialBase::computeProperties(), FEProblemBase::computeUserObjectByName(), VectorPostprocessorVisualizationAux::computeValue(), MooseBaseParameterInterface::connectControllableParams(), ConstantPostprocessor::ConstantPostprocessor(), CommonOutputAction::create(), MultiApp::createApp(), MooseApp::createExecutors(), MeshGeneratorSystem::createMeshGeneratorOrder(), MooseApp::createRecoverablePerfGraph(), CutMeshByPlaneGenerator::CutMeshByPlaneGenerator(), MaterialBase::declareADProperty(), MeshGenerator::declareMeshesForSubByName(), MeshGenerator::declareNullMeshName(), MaterialBase::declareProperty(), DOFMapOutput::demangle(), DerivativeSumMaterialTempl< is_ad >::DerivativeSumMaterialTempl(), Registry::determineDataFilePath(), DGKernel::DGKernel(), DGKernelBase::DGKernelBase(), DomainUserObject::DomainUserObject(), DumpObjectsProblem::dumpObjectHelper(), ElementGroupCentroidPositions::ElementGroupCentroidPositions(), ElementMaterialSampler::ElementMaterialSampler(), ElementValueSampler::ElementValueSampler(), EigenKernel::enabled(), MooseMesh::errorIfDistributedMesh(), MooseBase::errorPrefix(), SolutionUserObjectBase::evalMeshFunction(), SolutionUserObjectBase::evalMeshFunctionGradient(), SolutionUserObjectBase::evalMultiValuedMeshFunction(), SolutionUserObjectBase::evalMultiValuedMeshFunctionGradient(), RestartableDataReporter::execute(), PointValue::execute(), MultiAppNearestNodeTransfer::execute(), WebServerControl::execute(), MultiAppGeneralFieldTransfer::execute(), ActionWarehouse::executeActionsWithAction(), Exodus::Exodus(), ExtraIDIntegralVectorPostprocessor::ExtraIDIntegralVectorPostprocessor(), FEProblemBase::FEProblemBase(), MultiApp::fillPositions(), PointSamplerBase::finalize(), ChainControl::fullControlDataName(), FunctionDT::FunctionDT(), FunctionIC::functionName(), FVFunctionIC::functionName(), FunctorPositions::FunctorPositions(), FunctorSmootherTempl< T >::FunctorSmootherTempl(), FVOneVarDiffusionInterface::FVOneVarDiffusionInterface(), MooseServer::gatherDocumentSymbols(), BoundaryDeletionGenerator::generate(), UniqueExtraIDMeshGenerator::generate(), RenameBlockGenerator::generate(), RenameBoundaryGenerator::generate(), BreakMeshByBlockGenerator::generate(), GeneratedMeshGenerator::generate(), ParsedSubdomainGeneratorBase::generate(), ParsedExtraElementIDGenerator::generate(), StitchedMeshGenerator::generate(), XYDelaunayGenerator::generate(), SubdomainBoundingBoxGenerator::generate(), MeshGenerator::generateInternal(), InterfaceMaterial::getADMaterialProperty(), Material::getADMaterialProperty(), MultiAppTransfer::getAppInfo(), MultiApp::getBoundingBox(), MooseApp::getCheckpointDirectories(), Control::getControllableParameterByName(), Control::getControllableValue(), Control::getControllableValueByName(), FEProblemBase::getConvergence(), Registry::getDataFilePath(), UserObject::getDependObjects(), DistributionInterface::getDistribution(), FEProblemBase::getDistribution(), DistributionInterface::getDistributionByName(), ElementUOProvider::getElementalValueLong(), ElementUOProvider::getElementalValueReal(), MultiApp::getExecutioner(), MooseApp::getExecutor(), FEProblemBase::getExecutor(), OutputWarehouse::getFileNumbers(), FEProblemBase::getFunction(), SubProblem::getFunctor(), NodalPatchRecovery::getGenericMaterialProperty(), InterfaceMaterial::getGenericMaterialProperty(), Material::getGenericMaterialProperty(), AuxKernelTempl< Real >::getGenericMaterialProperty(), InterfaceMaterial::getGenericNeighborMaterialProperty(), InterfaceMaterial::getGenericNeighborMaterialPropertyByName(), Material::getGenericOptionalMaterialProperty(), MaterialBase::getGenericZeroMaterialProperty(), MFEMProblem::getGridFunction(), SolutionUserObjectBase::getLocalVarIndex(), Marker::getMarkerValue(), Material::getMaterial(), FEProblemBase::getMaterial(), Material::getMaterialByName(), NodalPatchRecovery::getMaterialProperty(), InterfaceMaterial::getMaterialProperty(), Material::getMaterialProperty(), AuxKernelTempl< Real >::getMaterialProperty(), SubProblem::getMaterialPropertyBlockNames(), SubProblem::getMaterialPropertyBoundaryNames(), NodalPatchRecovery::getMaterialPropertyOld(), InterfaceMaterial::getMaterialPropertyOld(), Material::getMaterialPropertyOld(), AuxKernelTempl< Real >::getMaterialPropertyOld(), NodalPatchRecovery::getMaterialPropertyOlder(), InterfaceMaterial::getMaterialPropertyOlder(), Material::getMaterialPropertyOlder(), AuxKernelTempl< Real >::getMaterialPropertyOlder(), MFEMGeneralUserObject::getMatrixCoefficient(), MeshGenerator::getMesh(), FEProblemBase::getMeshDivision(), MeshGenerator::getMeshesByName(), MooseApp::getMeshGenerator(), MeshGenerator::getMeshGeneratorNameFromParam(), MeshGenerator::getMeshGeneratorNamesFromParam(), ActionWarehouse::getMooseAppName(), MultiAppTransfer::getMultiApp(), InterfaceMaterial::getNeighborADMaterialProperty(), InterfaceMaterial::getNeighborMaterialProperty(), InterfaceMaterial::getNeighborMaterialPropertyOld(), InterfaceMaterial::getNeighborMaterialPropertyOlder(), MooseServer::getObjectParameters(), Material::getOptionalADMaterialProperty(), Material::getOptionalMaterialProperty(), Material::getOptionalMaterialPropertyOld(), Material::getOptionalMaterialPropertyOlder(), OutputWarehouse::getOutput(), MooseApp::getParam(), FEProblemBase::getPositionsObject(), FEProblemBase::getPostprocessorValueByName(), ComponentMaterialPropertyInterface::getPropertyValue(), ReporterData::getReporterInfo(), MooseApp::getRestartableDataMap(), MooseApp::getRestartableDataMapName(), MooseApp::getRestartableMetaData(), FEProblemBase::getSampler(), MFEMGeneralUserObject::getScalarCoefficient(), TransientBase::getTimeStepperName(), ProjectedStatefulMaterialStorageAction::getTypeEnum(), FEProblemBase::getUserObject(), FEProblemBase::getUserObjectBase(), MFEMGeneralUserObject::getVectorCoefficient(), Terminator::handleMessage(), Control::hasControllableParameterByName(), FEProblemBase::hasConvergence(), FEProblemBase::hasFunction(), SubProblem::hasFunctor(), SubProblem::hasFunctorWithType(), MooseApp::hasMeshGenerator(), AdvancedOutput::hasOutputHelper(), FEProblemBase::hasPostprocessor(), FEProblemBase::hasPostprocessorValueByName(), MooseApp::hasRelationshipManager(), MooseApp::hasRestartableDataMap(), MooseApp::hasRestartableMetaData(), FEProblemBase::hasUserObject(), IterationAdaptiveDT::init(), AddVariableAction::init(), AdvancedOutput::init(), AdvancedOutput::initExecutionTypes(), AttribName::initFrom(), NestedDivision::initialize(), TransformedPositions::initialize(), JSONOutput::initialSetup(), SideFVFluxBCIntegral::initialSetup(), SolutionScalarAux::initialSetup(), MultiAppProjectionTransfer::initialSetup(), NodalVariableValue::initialSetup(), Console::initialSetup(), SolutionUserObjectBase::initialSetup(), AdvancedOutput::initOutputList(), AdvancedOutput::initPostprocessorOrVectorPostprocessorLists(), MaterialBase::initStatefulProperties(), Function::integral(), InterfaceKernelTempl< T >::InterfaceKernelTempl(), MeshGenerator::isChildMeshGenerator(), MeshGenerator::isNullMeshName(), MooseApp::isParamValid(), MeshGenerator::isParentMeshGenerator(), LinearCombinationFunction::LinearCombinationFunction(), FEProblemBase::logAdd(), Marker::Marker(), MaterialBase::markMatPropRequested(), MatDiffusionBase< Real >::MatDiffusionBase(), Material::Material(), MaterialDerivativeTestKernelBase< Real >::MaterialDerivativeTestKernelBase(), Distribution::median(), MemoryUsageReporter::MemoryUsageReporter(), MeshGenerator::meshPropertyPrefix(), MooseApp::MooseApp(), OutputWarehouse::mooseConsole(), MooseVariableInterface< Real >::MooseVariableInterface(), MultiAppGeneralFieldTransfer::MultiAppGeneralFieldTransfer(), MultiAppUserObjectTransfer::MultiAppUserObjectTransfer(), NodalPatchRecoveryAuxBase::NodalPatchRecoveryAuxBase(), NodalValueSampler::NodalValueSampler(), Registry::objData(), MeshGenerator::Comparator::operator()(), ProgressOutput::output(), DOFMapOutput::output(), Output::Output(), AdvancedOutput::outputElementalVariables(), ConsoleUtils::outputExecutionInformation(), MaterialOutputAction::outputHelper(), AdvancedOutput::outputInput(), AdvancedOutput::outputNodalVariables(), Exodus::outputPostprocessors(), AdvancedOutput::outputPostprocessors(), TableOutput::outputReporter(), AdvancedOutput::outputReporters(), AdvancedOutput::outputScalarVariables(), AdvancedOutput::outputSystemInformation(), AdvancedOutput::outputVectorPostprocessors(), ParsedCurveGenerator::ParsedCurveGenerator(), MooseServer::parseDocumentForDiagnostics(), ParsedODEKernel::ParsedODEKernel(), ComponentPhysicsInterface::physicsExists(), PiecewiseBilinear::PiecewiseBilinear(), PiecewiseByBlockFunctorMaterialTempl< T >::PiecewiseByBlockFunctorMaterialTempl(), MooseApp::possiblyLoadRestartableMetaData(), PhysicsBase::prefix(), MooseMesh::prepare(), BlockRestrictionDebugOutput::printBlockRestrictionMap(), PerfGraphLivePrint::printStats(), MultiApp::readCommandLineArguments(), Receiver::Receiver(), Executor::Result::record(), AppFactory::reg(), Registry::registerObjectsTo(), FEProblemBase::registerRandomInterface(), MooseApp::registerRestartableDataMapName(), MooseApp::registerRestartableNameWithFilter(), GlobalParamsAction::remove(), MaterialBase::resetQpProperties(), MultiApp::restore(), ScalarComponentIC::ScalarComponentIC(), MultiApp::setAppOutputFileBase(), MooseMesh::setBoundaryName(), Control::setControllableValue(), Control::setControllableValueByName(), GlobalParamsAction::setDoubleIndexParam(), OutputWarehouse::setFileNumbers(), GlobalParamsAction::setParam(), FEProblemBase::setPostprocessorValueByName(), FEProblemBase::setResidualObjectParamsAndLog(), GlobalParamsAction::setScalarParam(), MooseMesh::setSubdomainName(), GlobalParamsAction::setTripleIndexParam(), NodeSetsGeneratorBase::setup(), Split::setup(), SideSetsGeneratorBase::setup(), TransientMultiApp::setupApp(), GlobalParamsAction::setVectorParam(), FullSolveMultiApp::showStatusMessage(), SideSetExtruderGenerator::SideSetExtruderGenerator(), TransientMultiApp::solveStep(), UserObject::spatialValue(), WebServerControl::startServer(), StitchedMesh::StitchedMesh(), SubProblem::storeBoundaryDelayedCheckMatProp(), SubProblem::storeBoundaryMatPropName(), MaterialBase::storeBoundaryZeroMatProp(), SubProblem::storeBoundaryZeroMatProp(), SubProblem::storeSubdomainDelayedCheckMatProp(), SubProblem::storeSubdomainMatPropName(), MaterialBase::storeSubdomainZeroMatProp(), SubProblem::storeSubdomainZeroMatProp(), MaterialBase::subdomainSetup(), TaggingInterface::TaggingInterface(), VectorPostprocessorVisualizationAux::timestepSetup(), to_json(), MultiAppDofCopyTransfer::transfer(), TransientMultiApp::TransientMultiApp(), MooseServer::traverseParseTreeAndFillSymbols(), MooseBase::typeAndName(), MooseBaseParameterInterface::uniqueParameterName(), FVFluxBC::uOnGhost(), FVFluxBC::uOnUSub(), UserObject::UserObject(), UserObjectInterface::userObjectName(), ParsedAux::validateGenericVectorNames(), PhysicsBase::variableExists(), MultiAppTransfer::variableIntegrityCheck(), VectorMagnitudeFunctorMaterialTempl< is_ad >::VectorMagnitudeFunctorMaterialTempl(), Convergence::verboseOutput(), AdvancedOutput::wantOutput(), Coupleable::writableCoupledValue(), Coupleable::writableVariable(), Console::write(), and MooseApp::writeRestartableMetaData().

57 { return _name; }
const std::string _name
The name of this class.
Definition: MooseBase.h:90

◆ 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 8647 of file FEProblemBase.C.

Referenced by ComputeMaterialsObjectThread::onBoundary(), and ProjectMaterialProperties::onBoundary().

8648 {
8649  if (_bnd_mat_side_cache[tid].find(bnd_id) == _bnd_mat_side_cache[tid].end())
8650  {
8651  auto & bnd_mat_side_cache = _bnd_mat_side_cache[tid][bnd_id];
8652  bnd_mat_side_cache = false;
8653 
8654  if (_aux->needMaterialOnSide(bnd_id))
8655  {
8656  bnd_mat_side_cache = true;
8657  return true;
8658  }
8659  else
8660  for (auto & nl : _nl)
8661  if (nl->needBoundaryMaterialOnSide(bnd_id, tid))
8662  {
8663  bnd_mat_side_cache = true;
8664  return true;
8665  }
8666 
8667  if (theWarehouse()
8668  .query()
8669  .condition<AttribThread>(tid)
8670  .condition<AttribInterfaces>(Interfaces::SideUserObject)
8671  .condition<AttribBoundaries>(bnd_id)
8672  .count() > 0)
8673  {
8674  bnd_mat_side_cache = true;
8675  return true;
8676  }
8677  }
8678 
8679  return _bnd_mat_side_cache[tid][bnd_id];
8680 }
std::vector< std::unordered_map< BoundaryID, bool > > _bnd_mat_side_cache
Cache for calculating materials on side.
std::vector< std::shared_ptr< NonlinearSystemBase > > _nl
The nonlinear systems.
TheWarehouse & theWarehouse() const
std::shared_ptr< AuxiliarySystem > _aux
The auxiliary system.
AttribBoundaries tracks all boundary IDs associated with an object.
Definition: Attributes.h:188
Query query()
query creates and returns an initialized a query object for querying objects from the warehouse...
Definition: TheWarehouse.h:466
QueryCache & condition(Args &&... args)
Adds a new condition to the query.
Definition: TheWarehouse.h:284

◆ needFV()

virtual void FEProblemBase::needFV ( )
inlineoverridevirtualinherited

marks this problem as including/needing finite volume functionality.

Implements SubProblem.

Definition at line 2435 of file FEProblemBase.h.

Referenced by DiffusionFV::initializePhysicsAdditional(), and DisplacedProblem::needFV().

2435 { _have_fv = true; }
bool _have_fv
Whether we are performing some calculations with finite volume discretizations.

◆ needInterfaceMaterialOnSide()

bool FEProblemBase::needInterfaceMaterialOnSide ( BoundaryID  bnd_id,
const THREAD_ID  tid 
)
inherited

Definition at line 8683 of file FEProblemBase.C.

Referenced by ComputeMaterialsObjectThread::onInterface().

8684 {
8685  if (_interface_mat_side_cache[tid].find(bnd_id) == _interface_mat_side_cache[tid].end())
8686  {
8687  auto & interface_mat_side_cache = _interface_mat_side_cache[tid][bnd_id];
8688  interface_mat_side_cache = false;
8689 
8690  for (auto & nl : _nl)
8691  if (nl->needInterfaceMaterialOnSide(bnd_id, tid))
8692  {
8693  interface_mat_side_cache = true;
8694  return true;
8695  }
8696 
8697  if (theWarehouse()
8698  .query()
8699  .condition<AttribThread>(tid)
8700  .condition<AttribInterfaces>(Interfaces::InterfaceUserObject)
8701  .condition<AttribBoundaries>(bnd_id)
8702  .count() > 0)
8703  {
8704  interface_mat_side_cache = true;
8705  return true;
8706  }
8707  else if (_interface_materials.hasActiveBoundaryObjects(bnd_id, tid))
8708  {
8709  interface_mat_side_cache = true;
8710  return true;
8711  }
8712  }
8713  return _interface_mat_side_cache[tid][bnd_id];
8714 }
MaterialWarehouse _interface_materials
bool hasActiveBoundaryObjects(THREAD_ID tid=0) const
std::vector< std::shared_ptr< NonlinearSystemBase > > _nl
The nonlinear systems.
TheWarehouse & theWarehouse() const
AttribBoundaries tracks all boundary IDs associated with an object.
Definition: Attributes.h:188
Query query()
query creates and returns an initialized a query object for querying objects from the warehouse...
Definition: TheWarehouse.h:466
QueryCache & condition(Args &&... args)
Adds a new condition to the query.
Definition: TheWarehouse.h:284
std::vector< std::unordered_map< BoundaryID, bool > > _interface_mat_side_cache
Cache for calculating materials on interface.

◆ 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 704 of file FEProblemBase.C.

Referenced by FEProblemBase::createTagSolutions().

706 {
707  for (const auto i : make_range((unsigned)0, oldest_needed))
708  {
709  for (auto & sys : _solver_systems)
710  sys->needSolutionState(i, iteration_type);
711  _aux->needSolutionState(i, iteration_type);
712  }
713 }
std::vector< std::shared_ptr< SolverSystem > > _solver_systems
Combined container to base pointer of every solver system.
std::shared_ptr< AuxiliarySystem > _aux
The auxiliary system.
IntRange< T > make_range(T beg, T end)

◆ needsPreviousNewtonIteration() [1/2]

void FEProblemBase::needsPreviousNewtonIteration ( bool  state)
inherited

Set a flag that indicated that user required values for the previous Newton iterate.

Definition at line 8752 of file FEProblemBase.C.

Referenced by Coupleable::coupledGradientPreviousNL(), Coupleable::coupledNodalValuePreviousNL(), Coupleable::coupledSecondPreviousNL(), Coupleable::coupledValuePreviousNL(), and NonlinearSystem::solve().

8753 {
8755  mooseError("Previous nonlinear solution is required but not added through "
8756  "Problem/previous_nl_solution_required=true");
8757 }
virtual bool vectorTagExists(const TagID tag_id) const
Check to see if a particular Tag exists.
Definition: SubProblem.h:201
void mooseError(Args &&... args) const
Emits an error prefixed with object name and type.
const TagName PREVIOUS_NL_SOLUTION_TAG
Definition: MooseTypes.C:28

◆ needsPreviousNewtonIteration() [2/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 8746 of file FEProblemBase.C.

8747 {
8749 }
virtual bool vectorTagExists(const TagID tag_id) const
Check to see if a particular Tag exists.
Definition: SubProblem.h:201
const TagName PREVIOUS_NL_SOLUTION_TAG
Definition: MooseTypes.C:28

◆ needSubdomainMaterialOnSide()

bool FEProblemBase::needSubdomainMaterialOnSide ( SubdomainID  subdomain_id,
const THREAD_ID  tid 
)
inherited

Definition at line 8717 of file FEProblemBase.C.

Referenced by ComputeMaterialsObjectThread::subdomainChanged(), and ProjectMaterialProperties::subdomainChanged().

8718 {
8719  if (_block_mat_side_cache[tid].find(subdomain_id) == _block_mat_side_cache[tid].end())
8720  {
8721  _block_mat_side_cache[tid][subdomain_id] = false;
8722 
8723  for (auto & nl : _nl)
8724  if (nl->needSubdomainMaterialOnSide(subdomain_id, tid))
8725  {
8726  _block_mat_side_cache[tid][subdomain_id] = true;
8727  return true;
8728  }
8729 
8730  if (theWarehouse()
8731  .query()
8732  .condition<AttribThread>(tid)
8733  .condition<AttribInterfaces>(Interfaces::InternalSideUserObject)
8734  .condition<AttribSubdomains>(subdomain_id)
8735  .count() > 0)
8736  {
8737  _block_mat_side_cache[tid][subdomain_id] = true;
8738  return true;
8739  }
8740  }
8741 
8742  return _block_mat_side_cache[tid][subdomain_id];
8743 }
std::vector< std::shared_ptr< NonlinearSystemBase > > _nl
The nonlinear systems.
TheWarehouse & theWarehouse() const
std::vector< std::unordered_map< SubdomainID, bool > > _block_mat_side_cache
Cache for calculating materials on side.
Query query()
query creates and returns an initialized a query object for querying objects from the warehouse...
Definition: TheWarehouse.h:466
QueryCache & condition(Args &&... args)
Adds a new condition to the query.
Definition: TheWarehouse.h:284

◆ needToAddDefaultMultiAppFixedPointConvergence()

bool FEProblemBase::needToAddDefaultMultiAppFixedPointConvergence ( ) const
inlineinherited

Returns true if the problem needs to add the default fixed point convergence.

Definition at line 642 of file FEProblemBase.h.

643  {
645  }
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 637 of file FEProblemBase.h.

638  {
640  }
bool _need_to_add_default_nonlinear_convergence
Flag that the problem needs to add the default nonlinear convergence.

◆ neighborSubdomainSetup()

void FEProblemBase::neighborSubdomainSetup ( SubdomainID  subdomain,
const THREAD_ID  tid 
)
virtualinherited

Definition at line 2477 of file FEProblemBase.C.

Referenced by ThreadedFaceLoop< RangeType >::neighborSubdomainChanged().

2478 {
2479  _all_materials.neighborSubdomainSetup(subdomain, tid);
2480 }
virtual void neighborSubdomainSetup(THREAD_ID tid=0) const
MaterialWarehouse _all_materials

◆ newAssemblyArray()

void FEProblemBase::newAssemblyArray ( std::vector< std::shared_ptr< SolverSystem >> &  solver_systems)
virtualinherited

Definition at line 716 of file FEProblemBase.C.

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

717 {
718  unsigned int n_threads = libMesh::n_threads();
719 
720  _assembly.resize(n_threads);
721  for (const auto i : make_range(n_threads))
722  {
723  _assembly[i].resize(solver_systems.size());
724  for (const auto j : index_range(solver_systems))
725  _assembly[i][j] = std::make_unique<Assembly>(*solver_systems[j], i);
726  }
727 }
unsigned int n_threads()
std::vector< std::vector< std::unique_ptr< Assembly > > > _assembly
The Assembly objects.
IntRange< T > make_range(T beg, T end)
auto index_range(const T &sizable)

◆ nlConverged()

bool SubProblem::nlConverged ( const unsigned int  nl_sys_num)
virtualinherited
Returns
whether the given nonlinear system nl_sys_num is converged.

Reimplemented in MFEMProblem.

Definition at line 716 of file SubProblem.C.

717 {
718  mooseAssert(nl_sys_num < numNonlinearSystems(),
719  "The nonlinear system number is higher than the number of systems we have!");
720  return solverSystemConverged(nl_sys_num);
721 }
virtual std::size_t numNonlinearSystems() const =0
virtual bool solverSystemConverged(const unsigned int sys_num)
Definition: SubProblem.h:100

◆ nLinearIterations()

unsigned int FEProblemBase::nLinearIterations ( const unsigned int  nl_sys_num) const
overridevirtualinherited

Reimplemented from SubProblem.

Definition at line 6548 of file FEProblemBase.C.

Referenced by PiecewiseLinearFromVectorPostprocessor::valueInternal().

6549 {
6550  return _nl[nl_sys_num]->nLinearIterations();
6551 }
std::vector< std::shared_ptr< NonlinearSystemBase > > _nl
The nonlinear systems.

◆ 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 6279 of file FEProblemBase.C.

Referenced by DisplacedProblem::nlSysNum().

6280 {
6281  std::istringstream ss(nl_sys_name);
6282  unsigned int nl_sys_num;
6283  if (!(ss >> nl_sys_num) || !ss.eof())
6284  nl_sys_num = libmesh_map_find(_nl_sys_name_to_num, nl_sys_name);
6285 
6286  return nl_sys_num;
6287 }
std::map< NonlinearSystemName, unsigned int > _nl_sys_name_to_num
Map from nonlinear system name to number.

◆ nNonlinearIterations()

unsigned int FEProblemBase::nNonlinearIterations ( const unsigned int  nl_sys_num) const
overridevirtualinherited

Reimplemented from SubProblem.

Definition at line 6542 of file FEProblemBase.C.

Referenced by PiecewiseLinearFromVectorPostprocessor::valueInternal().

6543 {
6544  return _nl[nl_sys_num]->nNonlinearIterations();
6545 }
std::vector< std::shared_ptr< NonlinearSystemBase > > _nl
The nonlinear systems.

◆ nonlocalCouplingEntries()

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

Definition at line 6136 of file FEProblemBase.C.

Referenced by ComputeFullJacobianThread::computeOnBoundary(), and ComputeFullJacobianThread::computeOnElement().

6137 {
6138  return _assembly[tid][nl_sys]->nonlocalCouplingEntries();
6139 }
std::vector< std::vector< std::unique_ptr< Assembly > > > _assembly
The Assembly objects.

◆ 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 9364 of file FEProblemBase.C.

Referenced by DisplacedProblem::nonlocalCouplingMatrix().

9365 {
9366  return _nonlocal_cm[i];
9367 }
std::vector< libMesh::CouplingMatrix > _nonlocal_cm
nonlocal coupling matrix

◆ notifyWhenMeshChanges()

void FEProblemBase::notifyWhenMeshChanges ( MeshChangedInterface mci)
inherited

Register an object that derives from MeshChangedInterface to be notified when the mesh changes.

Definition at line 8187 of file FEProblemBase.C.

Referenced by MeshChangedInterface::MeshChangedInterface().

8188 {
8189  _notify_when_mesh_changes.push_back(mci);
8190 }
std::vector< MeshChangedInterface * > _notify_when_mesh_changes
Objects to be notified when the mesh changes.

◆ 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 8193 of file FEProblemBase.C.

Referenced by MeshDisplacedInterface::MeshDisplacedInterface().

8194 {
8195  _notify_when_mesh_displaces.push_back(mdi);
8196 }
std::vector< MeshDisplacedInterface * > _notify_when_mesh_displaces
Objects to be notified when the mesh displaces.

◆ numGridSteps()

void FEProblemBase::numGridSteps ( unsigned int  num_grid_steps)
inlineinherited

Set the number of steps in a grid sequences.

Definition at line 2201 of file FEProblemBase.h.

Referenced by FEProblemSolve::FEProblemSolve().

2201 { _num_grid_steps = num_grid_steps; }
unsigned int _num_grid_steps
Number of steps in a grid sequence.

◆ 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

The total number of tags, which can be limited to the tag type.

Reimplemented in DisplacedProblem.

Definition at line 195 of file SubProblem.C.

Referenced by NonlinearSystemBase::computeNodalBCs(), NonlinearSystemBase::computeResidualInternal(), ComputeResidualThread::determineObjectWarehouses(), MooseVariableDataBase< OutputType >::MooseVariableDataBase(), MooseVariableScalar::MooseVariableScalar(), DisplacedProblem::numVectorTags(), ComputeNodalKernelBcsThread::pre(), and ComputeNodalKernelsThread::pre().

196 {
197  mooseAssert(verifyVectorTags(), "Vector tag storage invalid");
198 
199  return getVectorTags(type).size();
200 }
bool verifyVectorTags() const
Verify the integrity of _vector_tags and _typed_vector_tags.
Definition: SubProblem.C:241
const std::string & type() const
Get the type of this class.
Definition: MooseBase.h:51
std::vector< VectorTag > getVectorTags(const std::set< TagID > &tag_ids) const
Definition: SubProblem.C:172

◆ objectExecuteHelper()

template<typename T >
void FEProblemBase::objectExecuteHelper ( const std::vector< T *> &  objects)
staticinherited

Definition at line 3101 of file FEProblemBase.h.

3102 {
3103  for (T * obj_ptr : objects)
3104  obj_ptr->execute();
3105 }

◆ 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 3067 of file FEProblemBase.h.

3068 {
3069  if (exec_flag == EXEC_INITIAL)
3070  {
3071  for (T * obj_ptr : objects)
3072  obj_ptr->initialSetup();
3073  }
3074 
3075  else if (exec_flag == EXEC_TIMESTEP_BEGIN)
3076  {
3077  for (const auto obj_ptr : objects)
3078  obj_ptr->timestepSetup();
3079  }
3080  else if (exec_flag == EXEC_SUBDOMAIN)
3081  {
3082  for (const auto obj_ptr : objects)
3083  obj_ptr->subdomainSetup();
3084  }
3085 
3086  else if (exec_flag == EXEC_NONLINEAR)
3087  {
3088  for (const auto obj_ptr : objects)
3089  obj_ptr->jacobianSetup();
3090  }
3091 
3092  else if (exec_flag == EXEC_LINEAR)
3093  {
3094  for (const auto obj_ptr : objects)
3095  obj_ptr->residualSetup();
3096  }
3097 }
const ExecFlagType EXEC_TIMESTEP_BEGIN
Definition: Moose.C:35
const ExecFlagType EXEC_LINEAR
Definition: Moose.C:29
const ExecFlagType EXEC_NONLINEAR
Definition: Moose.C:31
const ExecFlagType EXEC_SUBDOMAIN
Definition: Moose.C:46
const ExecFlagType EXEC_INITIAL
Definition: Moose.C:28

◆ onlyAllowDefaultNonlinearConvergence()

virtual bool ReferenceResidualProblem::onlyAllowDefaultNonlinearConvergence ( ) const
inlineoverridevirtual

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 from FEProblemBase.

Definition at line 27 of file ReferenceResidualProblem.h.

27 { return true; }

◆ onTimestepBegin()

void FEProblemBase::onTimestepBegin ( )
overridevirtualinherited

Implements SubProblem.

Definition at line 6687 of file FEProblemBase.C.

Referenced by TransientBase::takeStep().

6688 {
6689  TIME_SECTION("onTimestepBegin", 2);
6690 
6691  for (auto & nl : _nl)
6692  nl->onTimestepBegin();
6693 }
std::vector< std::shared_ptr< NonlinearSystemBase > > _nl
The nonlinear systems.

◆ 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 6650 of file FEProblemBase.C.

Referenced by TransientBase::endStep(), MFEMSteady::execute(), MFEMTransient::execute(), TransientBase::execute(), SteadyBase::execute(), Eigenvalue::execute(), NonlinearEigen::init(), InversePowerMethod::init(), EigenExecutionerBase::postExecute(), TransientBase::preExecute(), FixedPointSolve::solve(), TransientMultiApp::solveStep(), FixedPointSolve::solveStep(), and MFEMTransient::step().

6651 {
6652  TIME_SECTION("outputStep", 1, "Outputting");
6653 
6655 
6656  for (auto & sys : _solver_systems)
6657  sys->update();
6658  _aux->update();
6659 
6660  if (_displaced_problem)
6661  _displaced_problem->syncSolutions();
6663 
6665 }
void outputStep(ExecFlagType type)
Calls the outputStep method for each output object.
const ExecFlagType EXEC_NONE
Definition: Moose.C:27
std::vector< std::shared_ptr< SolverSystem > > _solver_systems
Combined container to base pointer of every solver system.
void setCurrentExecuteOnFlag(const ExecFlagType &)
std::shared_ptr< AuxiliarySystem > _aux
The auxiliary system.
const std::string & type() const
Get the type of this class.
Definition: MooseBase.h:51
MooseApp & _app
The MOOSE application this is associated with.
Definition: MooseBase.h:84
std::shared_ptr< DisplacedProblem > _displaced_problem
OutputWarehouse & getOutputWarehouse()
Get the OutputWarehouse objects.
Definition: MooseApp.C:2381

◆ paramError()

template<typename... Args>
void MooseBaseParameterInterface::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 255 of file MooseBaseParameterInterface.h.

Referenced by HierarchicalGridPartitioner::_do_partition(), AutoCheckpointAction::act(), SetupDebugAction::act(), CommonOutputAction::act(), AddPeriodicBCAction::act(), ADConservativeAdvectionBC::ADConservativeAdvectionBC(), DiffusionCG::addFEKernels(), DiffusionFV::addFVKernels(), NEML2ModelExecutor::addGatheredParameter(), NEML2ModelExecutor::addGatheredVariable(), ADDGKernel::ADDGKernel(), CylinderComponent::addMeshGenerators(), AddPeriodicBCAction::AddPeriodicBCAction(), ReporterPointSource::addPoints(), ADIntegratedBCTempl< T >::ADIntegratedBCTempl(), ADKernelTempl< T >::ADKernelTempl(), ADNodalKernel::ADNodalKernel(), ADPenaltyPeriodicSegmentalConstraint::ADPenaltyPeriodicSegmentalConstraint(), ADPeriodicSegmentalConstraint::ADPeriodicSegmentalConstraint(), AdvancedExtruderGenerator::AdvancedExtruderGenerator(), AdvectiveFluxAux::AdvectiveFluxAux(), ADVectorFunctionDirichletBC::ADVectorFunctionDirichletBC(), AnnularMesh::AnnularMesh(), AnnularMeshGenerator::AnnularMeshGenerator(), ArrayBodyForce::ArrayBodyForce(), ArrayDGKernel::ArrayDGKernel(), ArrayDGLowerDKernel::ArrayDGLowerDKernel(), ArrayDirichletBC::ArrayDirichletBC(), ArrayHFEMDirichletBC::ArrayHFEMDirichletBC(), ArrayIntegratedBC::ArrayIntegratedBC(), ArrayKernel::ArrayKernel(), ArrayLowerDIntegratedBC::ArrayLowerDIntegratedBC(), ArrayParsedAux::ArrayParsedAux(), ArrayPenaltyDirichletBC::ArrayPenaltyDirichletBC(), ArrayVacuumBC::ArrayVacuumBC(), ArrayVarReductionAux::ArrayVarReductionAux(), ParsedSubdomainIDsGenerator::assignElemSubdomainID(), AuxKernelTempl< Real >::AuxKernelTempl(), BatchMeshGeneratorAction::BatchMeshGeneratorAction(), BlockDeletionGenerator::BlockDeletionGenerator(), BlockWeightedPartitioner::BlockWeightedPartitioner(), BoundsBase::BoundsBase(), BreakMeshByBlockGenerator::BreakMeshByBlockGenerator(), BuildArrayVariableAux::BuildArrayVariableAux(), PiecewiseTabularBase::buildFromFile(), MFEMMesh::buildMesh(), CartesianGridDivision::CartesianGridDivision(), checkComponent(), MeshGenerator::checkGetMesh(), ComponentInitialConditionInterface::checkInitialConditionsAllRequested(), BatchMeshGeneratorAction::checkInputParameterType(), PhysicsBase::checkIntegrityEarly(), PostprocessorInterface::checkParam(), FEProblemBase::checkProblemIntegrity(), MultiAppReporterTransfer::checkSiblingsTransferSupported(), Coupleable::checkVar(), MultiAppTransfer::checkVariable(), CircularBoundaryCorrectionGenerator::CircularBoundaryCorrectionGenerator(), CircularBoundaryCorrectionGenerator::circularCenterCalculator(), MultiAppGeneralFieldTransfer::closestToPosition(), CoarsenBlockGenerator::CoarsenBlockGenerator(), CombinerGenerator::CombinerGenerator(), ComponentInitialConditionInterface::ComponentInitialConditionInterface(), ComponentMaterialPropertyInterface::ComponentMaterialPropertyInterface(), CompositionDT::CompositionDT(), FunctorAux::computeValue(), ConcentricCircleMeshGenerator::ConcentricCircleMeshGenerator(), LibtorchNeuralNetControl::conditionalParameterError(), ConservativeAdvectionTempl< is_ad >::ConservativeAdvectionTempl(), ConstantVectorPostprocessor::ConstantVectorPostprocessor(), ContainsPointAux::ContainsPointAux(), CopyValueAux::CopyValueAux(), Coupleable::Coupleable(), CoupledForceTempl< is_ad >::CoupledForceTempl(), CoupledValueFunctionMaterialTempl< is_ad >::CoupledValueFunctionMaterialTempl(), MultiApp::createApp(), MeshGeneratorSystem::createMeshGenerator(), CylindricalGridDivision::CylindricalGridDivision(), ConstantReporter::declareConstantReporterValues(), AccumulateReporter::declareLateValues(), DefaultMultiAppFixedPointConvergence::DefaultMultiAppFixedPointConvergence(), DGKernel::DGKernel(), DGKernelBase::DGKernelBase(), DGLowerDKernel::DGLowerDKernel(), DiffusionFluxAux::DiffusionFluxAux(), DomainUserObject::DomainUserObject(), EigenProblem::EigenProblem(), Eigenvalue::Eigenvalue(), ElementGroupCentroidPositions::ElementGroupCentroidPositions(), ElementLengthAux::ElementLengthAux(), ElementLpNormAux::ElementLpNormAux(), ExtraIDIntegralVectorPostprocessor::elementValue(), ElementValueSampler::ElementValueSampler(), ElementVectorL2Error::ElementVectorL2Error(), EqualValueEmbeddedConstraintTempl< is_ad >::EqualValueEmbeddedConstraintTempl(), ReporterPointSource::errorCheck(), ExamplePatchMeshGenerator::ExamplePatchMeshGenerator(), MultiAppNearestNodeTransfer::execute(), MultiAppUserObjectTransfer::execute(), ExtraElementIDAux::ExtraElementIDAux(), ExtraElementIntegerDivision::ExtraElementIntegerDivision(), ExtraIDIntegralVectorPostprocessor::ExtraIDIntegralVectorPostprocessor(), FEProblemSolve::FEProblemSolve(), FileMeshGenerator::FileMeshGenerator(), FillBetweenCurvesGenerator::FillBetweenCurvesGenerator(), FillBetweenSidesetsGenerator::FillBetweenSidesetsGenerator(), ReporterPointSource::fillPoint(), SpatialUserObjectVectorPostprocessor::fillPoints(), CombinerGenerator::fillPositions(), MultiApp::fillPositions(), InternalSideIndicatorBase::finalize(), 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(), BoundaryDeletionGenerator::generate(), UniqueExtraIDMeshGenerator::generate(), ExtraNodesetGenerator::generate(), ElementsToTetrahedronsConverter::generate(), AddMetaDataGenerator::generate(), BlockToMeshConverterGenerator::generate(), FillBetweenCurvesGenerator::generate(), FillBetweenSidesetsGenerator::generate(), LowerDBlockFromSidesetGenerator::generate(), PlaneIDMeshGenerator::generate(), BreakBoundaryOnSubdomainGenerator::generate(), RenameBlockGenerator::generate(), RenameBoundaryGenerator::generate(), BlockDeletionGenerator::generate(), BreakMeshByBlockGenerator::generate(), CoarsenBlockGenerator::generate(), FlipSidesetGenerator::generate(), GeneratedMeshGenerator::generate(), ParsedSubdomainGeneratorBase::generate(), RefineBlockGenerator::generate(), RefineSidesetGenerator::generate(), AdvancedExtruderGenerator::generate(), BreakMeshByElementGenerator::generate(), CircularBoundaryCorrectionGenerator::generate(), CombinerGenerator::generate(), MeshCollectionGenerator::generate(), MeshExtruderGenerator::generate(), ParsedCurveGenerator::generate(), ParsedExtraElementIDGenerator::generate(), StackGenerator::generate(), StitchedMeshGenerator::generate(), XYZDelaunayGenerator::generate(), CutMeshByLevelSetGeneratorBase::generate(), XYDelaunayGenerator::generate(), XYMeshLineCutter::generate(), PatternedMeshGenerator::generate(), SubdomainBoundingBoxGenerator::generate(), GeneratedMeshGenerator::GeneratedMeshGenerator(), 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(), HFEMDirichletBC::HFEMDirichletBC(), AddVariableAction::init(), MultiApp::init(), DistributedPositions::initialize(), BlockWeightedPartitioner::initialize(), BlockRestrictable::initializeBlockRestrictable(), BoundaryRestrictable::initializeBoundaryRestrictable(), PhysicsBase::initializePhysics(), JSONOutput::initialSetup(), MultiAppCloneReporterTransfer::initialSetup(), SolutionIC::initialSetup(), SideFVFluxBCIntegral::initialSetup(), ElementSubdomainModifierBase::initialSetup(), MultiAppVariableValueSamplePostprocessorTransfer::initialSetup(), MultiAppGeneralFieldNearestLocationTransfer::initialSetup(), MultiAppDofCopyTransfer::initialSetup(), HistogramVectorPostprocessor::initialSetup(), ReferenceResidualConvergence::initialSetup(), PiecewiseConstantFromCSV::initialSetup(), LibtorchControlValuePostprocessor::initialSetup(), MultiAppGeneralFieldTransfer::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(), LowerDIntegratedBC::LowerDIntegratedBC(), PNGOutput::makeMeshFunc(), MatCoupledForce::MatCoupledForce(), MaterialADConverterTempl< T >::MaterialADConverterTempl(), MaterialFunctorConverterTempl< T >::MaterialFunctorConverterTempl(), MatrixSymmetryCheck::MatrixSymmetryCheck(), PatternedMeshGenerator::mergeSubdomainNameMaps(), MeshCollectionGenerator::MeshCollectionGenerator(), MeshDiagnosticsGenerator::MeshDiagnosticsGenerator(), MeshDivisionAux::MeshDivisionAux(), MeshGenerator::MeshGenerator(), MeshGeneratorComponent::MeshGeneratorComponent(), MFEMGenericFunctorMaterial::MFEMGenericFunctorMaterial(), MFEMGenericFunctorVectorMaterial::MFEMGenericFunctorVectorMaterial(), MooseLinearVariableFV< Real >::MooseLinearVariableFV(), UserObjectInterface::mooseObjectError(), MoosePreconditioner::MoosePreconditioner(), MooseStaticCondensationPreconditioner::MooseStaticCondensationPreconditioner(), MooseVariableBase::MooseVariableBase(), MortarConstraintBase::MortarConstraintBase(), MortarNodalAuxKernelTempl< ComputeValueType >::MortarNodalAuxKernelTempl(), MultiApp::moveApp(), MoveNodeGenerator::MoveNodeGenerator(), MultiApp::MultiApp(), MultiAppCloneReporterTransfer::MultiAppCloneReporterTransfer(), MultiAppGeneralFieldNearestLocationTransfer::MultiAppGeneralFieldNearestLocationTransfer(), 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(), NestedDivision::NestedDivision(), NodalBC::NodalBC(), NodalEqualValueConstraint::NodalEqualValueConstraint(), NodalKernel::NodalKernel(), NodalPatchRecoveryAux::NodalPatchRecoveryAux(), NodalValueSampler::NodalValueSampler(), Output::Output(), ParsedCurveGenerator::ParsedCurveGenerator(), ParsedFunctorMaterialTempl< is_ad >::ParsedFunctorMaterialTempl(), ParsedPostprocessor::ParsedPostprocessor(), PatternedMeshGenerator::PatternedMeshGenerator(), PenaltyPeriodicSegmentalConstraint::PenaltyPeriodicSegmentalConstraint(), PeriodicSegmentalConstraint::PeriodicSegmentalConstraint(), PIDTransientControl::PIDTransientControl(), PlaneDeletionGenerator::PlaneDeletionGenerator(), PlaneIDMeshGenerator::PlaneIDMeshGenerator(), PointwiseRenormalizeVector::PointwiseRenormalizeVector(), PolyLineMeshGenerator::PolyLineMeshGenerator(), ReporterInterface::possiblyCheckHasReporter(), VectorPostprocessorInterface::possiblyCheckHasVectorPostprocessor(), LibmeshPartitioner::prepareBlocksForSubdomainPartitioner(), ProjectedMaterialPropertyNodalPatchRecoveryAux::ProjectedMaterialPropertyNodalPatchRecoveryAux(), ProjectionAux::ProjectionAux(), PropertyReadFile::PropertyReadFile(), RandomIC::RandomIC(), MultiApp::readCommandLineArguments(), PropertyReadFile::readData(), SolutionUserObjectBase::readXda(), ReferenceResidualConvergence::ReferenceResidualConvergence(), RefineBlockGenerator::RefineBlockGenerator(), RefineSidesetGenerator::RefineSidesetGenerator(), RenameBlockGenerator::RenameBlockGenerator(), RenameBoundaryGenerator::RenameBoundaryGenerator(), ReporterPointSource::ReporterPointSource(), SecondTimeDerivativeAux::SecondTimeDerivativeAux(), FEProblemBase::setLinearConvergenceNames(), FEProblemBase::setNonlinearConvergenceNames(), MooseMesh::setPartitioner(), NodeSetsGeneratorBase::setup(), SideSetsGeneratorBase::setup(), NEML2Action::setupDerivativeMappings(), NEML2Action::setupParameterDerivativeMappings(), TimeSequenceStepperBase::setupSequence(), SidesetAroundSubdomainUpdater::SidesetAroundSubdomainUpdater(), SideSetsFromBoundingBoxGenerator::SideSetsFromBoundingBoxGenerator(), SingleRankPartitioner::SingleRankPartitioner(), SphericalGridDivision::SphericalGridDivision(), SymmetryTransformGenerator::SymmetryTransformGenerator(), Terminator::Terminator(), TimeDerivativeAux::TimeDerivativeAux(), Transfer::Transfer(), TransformGenerator::TransformGenerator(), TransientMultiApp::TransientMultiApp(), ParsedCurveGenerator::tSectionSpaceDefiner(), UniqueExtraIDMeshGenerator::UniqueExtraIDMeshGenerator(), UserObject::UserObject(), Checkpoint::validateExecuteOn(), ParsedAux::validateGenericVectorNames(), ParsedMaterialBase::validateVectorNames(), FunctorIC::value(), VariableCondensationPreconditioner::VariableCondensationPreconditioner(), VectorBodyForce::VectorBodyForce(), VectorFunctionDirichletBC::VectorFunctionDirichletBC(), VectorFunctionIC::VectorFunctionIC(), VolumeAux::VolumeAux(), WebServerControl::WebServerControl(), XYDelaunayGenerator::XYDelaunayGenerator(), XYMeshLineCutter::XYMeshLineCutter(), and XYZDelaunayGenerator::XYZDelaunayGenerator().

256 {
257  Moose::show_trace = false;
258  _moose_base.callMooseError(paramErrorMsg(param, std::forward<Args>(args)...),
259  /* with_prefix = */ false);
260  Moose::show_trace = true;
261 }
bool show_trace
Set to true (the default) to print the stack trace with error and warning messages - false to omit it...
Definition: Moose.C:761
const MooseBase & _moose_base
The MooseBase object that inherits this class.
std::string paramErrorMsg(const std::string &param, Args... args) const
void callMooseError(std::string msg, const bool with_prefix) const
Calls moose error with the message msg.
Definition: MooseBase.C:33

◆ parameters()

const InputParameters& MooseBaseParameterInterface::parameters ( ) const
inlineinherited

Get the parameters of the object.

Returns
The parameters of the object

Definition at line 62 of file MooseBaseParameterInterface.h.

Referenced by SetupDebugAction::act(), AddActionComponentAction::act(), CommonOutputAction::act(), Action::Action(), FEProblemBase::addAnyRedistributers(), MFEMProblem::addAuxKernel(), FEProblemBase::addAuxKernel(), FEProblemBase::addAuxScalarKernel(), MFEMProblem::addAuxVariable(), DisplacedProblem::addAuxVariable(), MFEMProblem::addBoundaryCondition(), FEProblemBase::addBoundaryCondition(), FEProblemBase::addConstraint(), FEProblemBase::addConvergence(), FEProblemBase::addDamper(), AddDefaultConvergenceAction::addDefaultMultiAppFixedPointConvergence(), FEProblemBase::addDefaultMultiAppFixedPointConvergence(), addDefaultNonlinearConvergence(), AddDefaultConvergenceAction::addDefaultNonlinearConvergence(), FEProblemBase::addDefaultNonlinearConvergence(), FEProblemBase::addDGKernel(), FEProblemBase::addDiracKernel(), FEProblemBase::addDistribution(), MFEMProblem::addFESpace(), MFEMProblem::addFunction(), FEProblemBase::addFunction(), MFEMProblem::addFunctorMaterial(), FEProblemBase::addFunctorMaterial(), FEProblemBase::addFVBC(), FEProblemBase::addFVInitialCondition(), FEProblemBase::addFVInterfaceKernel(), FEProblemBase::addFVKernel(), MFEMProblem::addGridFunction(), FEProblemBase::addHDGKernel(), FEProblemBase::addIndicator(), MFEMProblem::addInitialCondition(), FEProblemBase::addInitialCondition(), DiffusionPhysicsBase::addInitialConditions(), FEProblemBase::addInterfaceKernel(), FEProblemBase::addInterfaceMaterial(), MFEMProblem::addKernel(), FEProblemBase::addKernel(), FEProblemBase::addLinearFVBC(), FEProblemBase::addLinearFVKernel(), FEProblem::addLineSearch(), FEProblemBase::addMarker(), FEProblemBase::addMaterial(), FEProblemBase::addMaterialHelper(), FEProblemBase::addMeshDivision(), MFEMProblem::addMFEMFESpaceFromMOOSEVariable(), MFEMProblem::addMFEMPreconditioner(), MFEMProblem::addMFEMSolver(), FEProblemBase::addMultiApp(), FEProblemBase::addNodalKernel(), FEProblemBase::addObject(), FEProblemBase::addObjectParamsHelper(), FEProblemBase::addOutput(), MFEMProblem::addPostprocessor(), FEProblemBase::addPostprocessor(), FEProblemBase::addPredictor(), FEProblemBase::addReporter(), FEProblemBase::addSampler(), FEProblemBase::addScalarKernel(), MFEMProblem::addSubMesh(), FEProblemBase::addTimeIntegrator(), MFEMProblem::addTransfer(), FEProblemBase::addTransfer(), FEProblemBase::addUserObject(), MFEMProblem::addVariable(), DisplacedProblem::addVariable(), FEProblemBase::addVectorPostprocessor(), ADPiecewiseLinearInterpolationMaterial::ADPiecewiseLinearInterpolationMaterial(), AdvancedOutput::AdvancedOutput(), ADVectorFunctionDirichletBC::ADVectorFunctionDirichletBC(), AnnularMesh::AnnularMesh(), AnnularMeshGenerator::AnnularMeshGenerator(), Action::associateWithParameter(), AuxKernelTempl< Real >::AuxKernelTempl(), AuxScalarKernel::AuxScalarKernel(), BoundsBase::BoundsBase(), MooseMesh::buildTypedMesh(), PostprocessorInterface::checkParam(), AddDefaultConvergenceAction::checkUnusedMultiAppFixedPointConvergenceParameters(), AddDefaultConvergenceAction::checkUnusedNonlinearConvergenceParameters(), SampledOutput::cloneMesh(), LibtorchNeuralNetControl::conditionalParameterError(), Console::Console(), CommonOutputAction::create(), MultiApp::createApp(), Postprocessor::declareValue(), DumpObjectsProblem::deduceNecessaryParameters(), DefaultMultiAppFixedPointConvergence::DefaultMultiAppFixedPointConvergence(), DumpObjectsProblem::dumpObjectHelper(), DumpObjectsProblem::DumpObjectsProblem(), EigenProblem::EigenProblem(), Eigenvalue::Eigenvalue(), ElementMaterialSampler::ElementMaterialSampler(), ExamplePatchMeshGenerator::ExamplePatchMeshGenerator(), Executor::Executor(), Exodus::Exodus(), FEProblem::FEProblem(), FEProblemBase::FEProblemBase(), FixedPointSolve::FixedPointSolve(), FunctorSmootherTempl< T >::FunctorSmootherTempl(), GapValueAux::GapValueAux(), ParsedSubdomainGeneratorBase::generate(), MooseBaseParameterInterface::getCheckedPointerParam(), ActionWarehouse::getCurrentActionName(), ExecutorInterface::getExecutor(), Material::getMaterial(), ReporterInterface::getReporterName(), Reporter::getReporterValueName(), UserObjectInterface::getUserObjectName(), VectorPostprocessorInterface::getVectorPostprocessorName(), GhostingUserObject::GhostingUserObject(), AttribSystem::initFrom(), AttribDisplaced::initFrom(), BlockRestrictable::initializeBlockRestrictable(), FullSolveMultiApp::initialSetup(), FEProblemBase::initNullSpaceVectors(), InterfaceDiffusiveFluxIntegralTempl< is_ad >::InterfaceDiffusiveFluxIntegralTempl(), InterfaceIntegralVariableValuePostprocessor::InterfaceIntegralVariableValuePostprocessor(), InterfaceKernelTempl< T >::InterfaceKernelTempl(), isValid(), IterationAdaptiveDT::IterationAdaptiveDT(), LibtorchNeuralNetControl::LibtorchNeuralNetControl(), MFEMCGSolver::MFEMCGSolver(), MFEMGMRESSolver::MFEMGMRESSolver(), MFEMHypreADS::MFEMHypreADS(), MFEMHypreAMS::MFEMHypreAMS(), MFEMHypreBoomerAMG::MFEMHypreBoomerAMG(), MFEMHypreFGMRES::MFEMHypreFGMRES(), MFEMHypreGMRES::MFEMHypreGMRES(), MFEMHyprePCG::MFEMHyprePCG(), MFEMOperatorJacobiSmoother::MFEMOperatorJacobiSmoother(), MFEMSuperLU::MFEMSuperLU(), MooseObject::MooseObject(), UserObjectInterface::mooseObjectError(), MooseVariableInterface< Real >::MooseVariableInterface(), MultiApp::MultiApp(), MultiAppGeneralFieldTransfer::MultiAppGeneralFieldTransfer(), MultiAppGeneralFieldUserObjectTransfer::MultiAppGeneralFieldUserObjectTransfer(), MultiAppTransfer::MultiAppTransfer(), MultiAppVariableValueSamplePostprocessorTransfer::MultiAppVariableValueSamplePostprocessorTransfer(), NodeFaceConstraint::NodeFaceConstraint(), OverlayMeshGenerator::OverlayMeshGenerator(), PenetrationAux::PenetrationAux(), PiecewiseBilinear::PiecewiseBilinear(), PiecewiseLinearInterpolationMaterial::PiecewiseLinearInterpolationMaterial(), NEML2Action::printSummary(), ProjectedStatefulMaterialStorageAction::processProperty(), PropertyReadFile::PropertyReadFile(), PseudoTimestep::PseudoTimestep(), RandomIC::RandomIC(), ReferenceResidualConvergence::ReferenceResidualConvergence(), InputParameterWarehouse::removeInputParameters(), FEProblem::setInputParametersFEProblem(), FEProblemBase::setInputParametersFEProblem(), FEProblemBase::setResidualObjectParamsAndLog(), SideSetsGeneratorBase::setup(), SideSetsFromBoundingBoxGenerator::SideSetsFromBoundingBoxGenerator(), Moose::PetscSupport::storePetscOptions(), DumpObjectsProblem::stringifyParameters(), TaggingInterface::TaggingInterface(), Transfer::Transfer(), TransientBase::TransientBase(), VectorBodyForce::VectorBodyForce(), VectorFunctionDirichletBC::VectorFunctionDirichletBC(), VectorFunctionIC::VectorFunctionIC(), and VectorMagnitudeFunctorMaterialTempl< is_ad >::VectorMagnitudeFunctorMaterialTempl().

62 { return _pars; }
const InputParameters & _pars
Parameters of this object, references the InputParameters stored in the InputParametersWarehouse.

◆ paramInfo()

template<typename... Args>
void MooseBaseParameterInterface::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 272 of file MooseBaseParameterInterface.h.

Referenced by GridPartitioner::_do_partition(), ComboMarker::ComboMarker(), FunctorIC::FunctorIC(), and TransientMultiApp::TransientMultiApp().

273 {
274  mooseInfo(paramErrorMsg(param, std::forward<Args>(args)...));
275 }
void mooseInfo(Args &&... args)
Emit an informational message with the given stringified, concatenated args.
Definition: MooseError.h:369
std::string paramErrorMsg(const std::string &param, Args... args) const

◆ paramWarning()

template<typename... Args>
void MooseBaseParameterInterface::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 265 of file MooseBaseParameterInterface.h.

Referenced by GridPartitioner::_do_partition(), EigenProblem::checkProblemIntegrity(), CombinerGenerator::copyIntoMesh(), DefaultMultiAppFixedPointConvergence::DefaultMultiAppFixedPointConvergence(), MultiAppNearestNodeTransfer::execute(), FEProblemSolve::FEProblemSolve(), UniqueExtraIDMeshGenerator::generate(), PlaneIDMeshGenerator::generate(), Terminator::initialSetup(), SampledOutput::initSample(), MooseMesh::MooseMesh(), FEProblemBase::setPreserveMatrixSparsityPattern(), and Terminator::Terminator().

266 {
267  mooseWarning(paramErrorMsg(param, std::forward<Args>(args)...));
268 }
void mooseWarning(Args &&... args)
Emit a warning message with the given stringified, concatenated args.
Definition: MooseError.h:336
std::string paramErrorMsg(const std::string &param, Args... args) const

◆ parentOutputPositionChanged()

void FEProblemBase::parentOutputPositionChanged ( )
inherited

Calls parentOutputPositionChanged() on all sub apps.

Definition at line 4439 of file FEProblemBase.C.

Referenced by TransientBase::parentOutputPositionChanged().

4440 {
4441  for (const auto & it : _multi_apps)
4442  {
4443  const auto & objects = it.second.getActiveObjects();
4444  for (const auto & obj : objects)
4445  obj->parentOutputPositionChanged();
4446  }
4447 }
ExecuteMooseObjectWarehouse< MultiApp > _multi_apps
MultiApp Warehouse.

◆ perfGraph()

PerfGraph & PerfGraphInterface::perfGraph ( )
inherited

Get the PerfGraph.

Definition at line 78 of file PerfGraphInterface.C.

Referenced by CommonOutputAction::act(), PerfGraphData::finalize(), and PerfGraphOutput::output().

79 {
80  return _pg_moose_app.perfGraph();
81 }
MooseApp & _pg_moose_app
The MooseApp that owns the PerfGraph.
PerfGraph & perfGraph()
Get the PerfGraph for this app.
Definition: MooseApp.h:161

◆ petscOptionsDatabase()

PetscOptions& FEProblemBase::petscOptionsDatabase ( )
inlineinherited

Definition at line 2119 of file FEProblemBase.h.

Referenced by Eigenvalue::prepareSolverOptions().

2119 { return _petsc_option_data_base; }
PetscOptions _petsc_option_data_base

◆ petscOptionsInserted()

bool& FEProblemBase::petscOptionsInserted ( )
inlineinherited

If PETSc options are already inserted.

Definition at line 2116 of file FEProblemBase.h.

Referenced by Eigenvalue::prepareSolverOptions().

2116 { return _is_petsc_options_inserted; }
bool _is_petsc_options_inserted
If or not PETSc options have been added to database.

◆ possiblyRebuildGeomSearchPatches()

void FEProblemBase::possiblyRebuildGeomSearchPatches ( )
virtualinherited

Definition at line 7822 of file FEProblemBase.C.

Referenced by FEProblemBase::solve().

7823 {
7824  if (_displaced_problem) // Only need to do this if things are moving...
7825  {
7826  TIME_SECTION("possiblyRebuildGeomSearchPatches", 5, "Rebuilding Geometric Search Patches");
7827 
7828  switch (_mesh.getPatchUpdateStrategy())
7829  {
7830  case Moose::Never:
7831  break;
7832  case Moose::Iteration:
7833  // Update the list of ghosted elements at the start of the time step
7836 
7837  _displaced_problem->geomSearchData().updateGhostedElems();
7839 
7840  // The commands below ensure that the sparsity of the Jacobian matrix is
7841  // augmented at the start of the time step using neighbor nodes from the end
7842  // of the previous time step.
7843 
7845 
7846  // This is needed to reinitialize PETSc output
7848 
7849  break;
7850 
7851  case Moose::Auto:
7852  {
7853  Real max = _displaced_problem->geomSearchData().maxPatchPercentage();
7855 
7856  // If we haven't moved very far through the patch
7857  if (max < 0.4)
7858  break;
7859  }
7860  libmesh_fallthrough();
7861 
7862  // Let this fall through if things do need to be updated...
7863  case Moose::Always:
7864  // Flush output here to see the message before the reinitialization, which could take a
7865  // while
7866  _console << "\n\nUpdating geometric search patches\n" << std::endl;
7867 
7870 
7871  _displaced_problem->geomSearchData().clearNearestNodeLocators();
7873 
7875 
7876  // This is needed to reinitialize PETSc output
7878  }
7879  }
7880 }
virtual void initPetscOutputAndSomeSolverSettings()
Reinitialize PETSc output for proper linear/nonlinear iteration display.
void reinitBecauseOfGhostingOrNewGeomObjects(bool mortar_changed=false)
Call when it is possible that the needs for ghosted elements has changed.
const Parallel::Communicator & _communicator
std::set< dof_id_type > _ghosted_elems
Elements that should have Dofs ghosted to the local processor.
Definition: SubProblem.h:1093
auto max(const L &left, const R &right)
void updateGhostedElems()
Updates the list of ghosted elements at the start of each time step for the nonlinear iteration patch...
MooseMesh & _mesh
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
void updateActiveSemiLocalNodeRange(std::set< dof_id_type > &ghosted_elems)
Clears the "semi-local" node list and rebuilds it.
Definition: MooseMesh.C:948
void max(const T &r, T &o, Request &req) const
std::shared_ptr< DisplacedProblem > _displaced_problem
GeometricSearchData _geometric_search_data
const ConsoleStream _console
An instance of helper class to write streams to the Console objects.
const Moose::PatchUpdateType & getPatchUpdateStrategy() const
Get the current patch update strategy.
Definition: MooseMesh.C:3408
void clearNearestNodeLocators()
Clear out the Penetration Locators so they will redo the search.
MooseMesh * _displaced_mesh

◆ postExecute()

void FEProblemBase::postExecute ( )
virtualinherited

Method called at the end of the simulation.

Definition at line 5454 of file FEProblemBase.C.

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

5455 {
5456  const auto & multi_apps = _multi_apps.getActiveObjects();
5457 
5458  for (const auto & multi_app : multi_apps)
5459  multi_app->postExecute();
5460 }
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...
ExecuteMooseObjectWarehouse< MultiApp > _multi_apps
MultiApp Warehouse.

◆ 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 7729 of file FEProblemBase.C.

Referenced by NonlinearSystemBase::setInitialSolution().

7730 {
7731 }

◆ prepare() [1/2]

virtual void FEProblemBase::prepare ( const Elem *  elem,
const THREAD_ID  tid 
)
overridevirtualinherited

◆ prepare() [2/2]

virtual 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.

◆ prepareAssembly()

void FEProblemBase::prepareAssembly ( const THREAD_ID  tid)
overridevirtualinherited

Implements SubProblem.

Definition at line 1801 of file FEProblemBase.C.

Referenced by NonlinearSystemBase::constraintJacobians(), NonlinearSystemBase::constraintResiduals(), NonlinearSystemBase::reinitNodeFace(), and NonlinearSystemBase::setConstraintSecondaryValues().

1802 {
1803  _assembly[tid][_current_nl_sys->number()]->prepare();
1805  _assembly[tid][_current_nl_sys->number()]->prepareNonlocal();
1806 
1808  {
1809  _displaced_problem->prepareAssembly(tid);
1811  _displaced_problem->prepareNonlocal(tid);
1812  }
1813 }
bool _reinit_displaced_elem
Whether to call DisplacedProblem::reinitElem when this->reinitElem is called.
bool _has_nonlocal_coupling
Indicates if nonlocal coupling is required/exists.
NonlinearSystemBase * _current_nl_sys
The current nonlinear system that we are solving.
unsigned int number() const
Gets the number of this system.
Definition: SystemBase.C:1159
std::vector< std::vector< std::unique_ptr< Assembly > > > _assembly
The Assembly objects.
bool _reinit_displaced_face
Whether to call DisplacedProblem::reinitElemFace when this->reinitElemFace is called.
std::shared_ptr< DisplacedProblem > _displaced_problem

◆ prepareFace()

void FEProblemBase::prepareFace ( const Elem elem,
const THREAD_ID  tid 
)
overridevirtualinherited

Implements SubProblem.

Definition at line 1715 of file FEProblemBase.C.

Referenced by ComputeUserObjectsThread::onInterface(), and ComputeUserObjectsThread::onInternalSide().

1716 {
1717  for (auto & nl : _nl)
1718  nl->prepareFace(tid, true);
1719  _aux->prepareFace(tid, false);
1720 
1722  _displaced_problem->prepareFace(_displaced_mesh->elemPtr(elem->id()), tid);
1723 }
bool _reinit_displaced_elem
Whether to call DisplacedProblem::reinitElem when this->reinitElem is called.
virtual Elem * elemPtr(const dof_id_type i)
Definition: MooseMesh.C:3108
std::vector< std::shared_ptr< NonlinearSystemBase > > _nl
The nonlinear systems.
dof_id_type id() const
std::shared_ptr< AuxiliarySystem > _aux
The auxiliary system.
bool _reinit_displaced_face
Whether to call DisplacedProblem::reinitElemFace when this->reinitElemFace is called.
std::shared_ptr< DisplacedProblem > _displaced_problem
MooseMesh * _displaced_mesh

◆ prepareFaceShapes()

void FEProblemBase::prepareFaceShapes ( unsigned int  var,
const THREAD_ID  tid 
)
overridevirtualinherited

Implements SubProblem.

Definition at line 2060 of file FEProblemBase.C.

Referenced by ComputeUserObjectsThread::onBoundary().

2061 {
2062  _assembly[tid][_current_nl_sys->number()]->copyFaceShapes(var);
2063 }
NonlinearSystemBase * _current_nl_sys
The current nonlinear system that we are solving.
unsigned int number() const
Gets the number of this system.
Definition: SystemBase.C:1159
std::vector< std::vector< std::unique_ptr< Assembly > > > _assembly
The Assembly objects.

◆ 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 3950 of file FEProblemBase.C.

Referenced by ComputeMarkerThread::subdomainChanged(), ComputeIndicatorThread::subdomainChanged(), NonlinearThread::subdomainChanged(), and ComputeUserObjectsThread::subdomainChanged().

3953 {
3954  std::set<MooseVariableFEBase *> needed_moose_vars;
3955  std::unordered_set<unsigned int> needed_mat_props;
3956 
3957  if (_all_materials.hasActiveBlockObjects(blk_id, tid))
3958  {
3959  _all_materials.updateVariableDependency(needed_moose_vars, tid);
3960  _all_materials.updateBlockMatPropDependency(blk_id, needed_mat_props, tid);
3961  }
3962 
3963  const auto & ids = _mesh.getSubdomainBoundaryIds(blk_id);
3964  for (const auto id : ids)
3965  {
3966  _materials.updateBoundaryVariableDependency(id, needed_moose_vars, tid);
3967  _materials.updateBoundaryMatPropDependency(id, needed_mat_props, tid);
3968  }
3969 
3970  const auto & current_active_elemental_moose_variables = getActiveElementalMooseVariables(tid);
3971  needed_moose_vars.insert(current_active_elemental_moose_variables.begin(),
3972  current_active_elemental_moose_variables.end());
3973 
3974  needed_mat_props.insert(consumer_needed_mat_props.begin(), consumer_needed_mat_props.end());
3975 
3976  setActiveElementalMooseVariables(needed_moose_vars, tid);
3977  setActiveMaterialProperties(needed_mat_props, tid);
3978 }
void updateVariableDependency(std::set< MooseVariableFieldBase *> &needed_moose_vars, THREAD_ID tid=0) const
Update variable dependency vector.
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 hasActiveBlockObjects(THREAD_ID tid=0) const
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:3492
virtual const std::set< MooseVariableFieldBase * > & getActiveElementalMooseVariables(const THREAD_ID tid) const
Get the MOOSE variables to be reinited on each element.
Definition: SubProblem.C:454
virtual void setActiveElementalMooseVariables(const std::set< MooseVariableFEBase *> &moose_vars, const THREAD_ID tid) override
Set the MOOSE variables to be reinited on each element.
MooseMesh & _mesh
void updateBoundaryMatPropDependency(std::unordered_set< unsigned int > &needed_mat_props, THREAD_ID tid=0) const
void updateBlockMatPropDependency(SubdomainID id, std::unordered_set< unsigned int > &needed_mat_props, THREAD_ID tid=0) const
void updateBoundaryVariableDependency(std::set< MooseVariableFieldBase *> &needed_moose_vars, THREAD_ID tid=0) const
MaterialWarehouse _all_materials
MaterialWarehouse _materials

◆ prepareNeighborShapes()

void FEProblemBase::prepareNeighborShapes ( unsigned int  var,
const THREAD_ID  tid 
)
overridevirtualinherited

Implements SubProblem.

Definition at line 2066 of file FEProblemBase.C.

2067 {
2068  _assembly[tid][_current_nl_sys->number()]->copyNeighborShapes(var);
2069 }
NonlinearSystemBase * _current_nl_sys
The current nonlinear system that we are solving.
unsigned int number() const
Gets the number of this system.
Definition: SystemBase.C:1159
std::vector< std::vector< std::unique_ptr< Assembly > > > _assembly
The Assembly objects.

◆ preparePRefinement()

void SubProblem::preparePRefinement ( )
inherited

Prepare DofMap and Assembly classes with our p-refinement information.

Definition at line 1326 of file SubProblem.C.

Referenced by FEProblemBase::init().

1327 {
1328  std::unordered_set<FEFamily> disable_families;
1329  for (const auto & [family, flag] : _family_for_p_refinement)
1330  if (flag)
1331  disable_families.insert(family);
1332 
1333  for (const auto tid : make_range(libMesh::n_threads()))
1334  for (const auto s : make_range(numNonlinearSystems()))
1335  assembly(tid, s).havePRefinement(disable_families);
1336 
1337  auto & eq = es();
1338  for (const auto family : disable_families)
1339  for (const auto i : make_range(eq.n_systems()))
1340  {
1341  auto & system = eq.get_system(i);
1342  auto & dof_map = system.get_dof_map();
1343  for (const auto vg : make_range(system.n_variable_groups()))
1344  {
1345  const auto & var_group = system.variable_group(vg);
1346  if (var_group.type().family == family)
1347  dof_map.should_p_refine(vg, false);
1348  }
1349  }
1350 
1351  _have_p_refinement = true;
1352 }
unsigned int n_threads()
virtual libMesh::EquationSystems & es()=0
std::unordered_map< FEFamily, bool > _family_for_p_refinement
Indicate whether a family is disabled for p-refinement.
Definition: SubProblem.h:1205
void havePRefinement(const std::unordered_set< FEFamily > &disable_p_refinement_for_families)
Indicate that we have p-refinement.
Definition: Assembly.C:4864
bool _have_p_refinement
Whether p-refinement has been requested at any point during the simulation.
Definition: SubProblem.h:1202
virtual Assembly & assembly(const THREAD_ID tid, const unsigned int sys_num)=0
IntRange< T > make_range(T beg, T end)
virtual std::size_t numNonlinearSystems() const =0

◆ prepareShapes()

void FEProblemBase::prepareShapes ( unsigned int  var,
const THREAD_ID  tid 
)
overridevirtualinherited

Implements SubProblem.

Definition at line 2054 of file FEProblemBase.C.

Referenced by ComputeUserObjectsThread::onElement().

2055 {
2056  _assembly[tid][_current_nl_sys->number()]->copyShapes(var);
2057 }
NonlinearSystemBase * _current_nl_sys
The current nonlinear system that we are solving.
unsigned int number() const
Gets the number of this system.
Definition: SystemBase.C:1159
std::vector< std::vector< std::unique_ptr< Assembly > > > _assembly
The Assembly objects.

◆ 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 1937 of file FEProblemBase.h.

bool _preserve_matrix_sparsity_pattern
Whether to preserve the system matrix / Jacobian sparsity pattern, using 0-valued entries usually...

◆ projectInitialConditionOnCustomRange()

void FEProblemBase::projectInitialConditionOnCustomRange ( libMesh::ConstElemRange elem_range,
ConstBndNodeRange bnd_node_range 
)
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.

Definition at line 3674 of file FEProblemBase.C.

Referenced by ElementSubdomainModifierBase::applyIC(), and ActivateElementsUserObjectBase::initSolutions().

3676 {
3677  ComputeInitialConditionThread cic(*this);
3678  Threads::parallel_reduce(elem_range, cic);
3679 
3680  // Need to close the solution vector here so that boundary ICs take precendence
3681  for (auto & nl : _nl)
3682  nl->solution().close();
3683  _aux->solution().close();
3684 
3686  Threads::parallel_reduce(bnd_nodes, cbic);
3687 
3688  for (auto & nl : _nl)
3689  nl->solution().close();
3690  _aux->solution().close();
3691 
3692  // Also, load values into the SCALAR dofs
3693  // Note: We assume that all SCALAR dofs are on the
3694  // processor with highest ID
3695  if (processor_id() == (n_processors() - 1) && _scalar_ics.hasActiveObjects())
3696  {
3697  const auto & ics = _scalar_ics.getActiveObjects();
3698  for (const auto & ic : ics)
3699  {
3700  MooseVariableScalar & var = ic->variable();
3701  var.reinit();
3702 
3703  DenseVector<Number> vals(var.order());
3704  ic->compute(vals);
3705 
3706  const unsigned int n_SCALAR_dofs = var.dofIndices().size();
3707  for (unsigned int i = 0; i < n_SCALAR_dofs; i++)
3708  {
3709  const dof_id_type global_index = var.dofIndices()[i];
3710  var.sys().solution().set(global_index, vals(i));
3711  var.setValue(i, vals(i));
3712  }
3713  }
3714  }
3715 
3716  for (auto & nl : _nl)
3717  {
3718  nl->solution().close();
3719  nl->solution().localize(*nl->system().current_local_solution, nl->dofMap().get_send_list());
3720  }
3721 
3722  _aux->solution().close();
3723  _aux->solution().localize(*_aux->sys().current_local_solution, _aux->dofMap().get_send_list());
3724 }
NumericVector< Number > & solution()
Definition: SystemBase.h:195
void reinit(bool reinit_for_derivative_reordering=false)
Fill out the VariableValue arrays from the system solution vector.
void parallel_reduce(const Range &range, Body &body, const Partitioner &)
ScalarInitialConditionWarehouse _scalar_ics
std::vector< std::shared_ptr< NonlinearSystemBase > > _nl
The nonlinear systems.
processor_id_type n_processors() const
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...
std::shared_ptr< AuxiliarySystem > _aux
The auxiliary system.
void setValue(unsigned int i, Number value)
Set the nodal value for this variable (to keep everything up to date.
virtual const std::vector< dof_id_type > & dofIndices() const
Get local DoF indices.
libMesh::Order order() const
Get the order of this variable Note: Order enum can be implicitly converted to unsigned int...
bool hasActiveObjects(THREAD_ID tid=0) const
Class for scalar variables (they are different).
virtual void set(const numeric_index_type i, const T value)=0
processor_id_type processor_id() const
SystemBase & sys()
Get the system this variable is part of.
uint8_t dof_id_type

◆ projectSolution()

void FEProblemBase::projectSolution ( )
inherited

Definition at line 3606 of file FEProblemBase.C.

Referenced by FEProblemBase::initialAdaptMesh(), and FEProblemBase::initialSetup().

3607 {
3608  TIME_SECTION("projectSolution", 2, "Projecting Initial Solutions")
3609 
3610  FloatingPointExceptionGuard fpe_guard(_app);
3611 
3612  ConstElemRange & elem_range = *_mesh.getActiveLocalElementRange();
3613  ComputeInitialConditionThread cic(*this);
3614  Threads::parallel_reduce(elem_range, cic);
3615 
3616  if (haveFV())
3617  {
3619  ElemInfoRange elem_info_range(_mesh.ownedElemInfoBegin(), _mesh.ownedElemInfoEnd());
3620 
3621  ComputeFVInitialConditionThread cfvic(*this);
3622  Threads::parallel_reduce(elem_info_range, cfvic);
3623  }
3624 
3625  // Need to close the solution vector here so that boundary ICs take precendence
3626  for (auto & nl : _nl)
3627  nl->solution().close();
3628  _aux->solution().close();
3629 
3630  // now run boundary-restricted initial conditions
3631  ConstBndNodeRange & bnd_nodes = *_mesh.getBoundaryNodeRange();
3633  Threads::parallel_reduce(bnd_nodes, cbic);
3634 
3635  for (auto & nl : _nl)
3636  nl->solution().close();
3637  _aux->solution().close();
3638 
3639  // Also, load values into the SCALAR dofs
3640  // Note: We assume that all SCALAR dofs are on the
3641  // processor with highest ID
3642  if (processor_id() == (n_processors() - 1) && _scalar_ics.hasActiveObjects())
3643  {
3644  const auto & ics = _scalar_ics.getActiveObjects();
3645  for (const auto & ic : ics)
3646  {
3647  MooseVariableScalar & var = ic->variable();
3648  var.reinit();
3649 
3650  DenseVector<Number> vals(var.order());
3651  ic->compute(vals);
3652 
3653  const unsigned int n_SCALAR_dofs = var.dofIndices().size();
3654  for (unsigned int i = 0; i < n_SCALAR_dofs; i++)
3655  {
3656  const dof_id_type global_index = var.dofIndices()[i];
3657  var.sys().solution().set(global_index, vals(i));
3658  var.setValue(i, vals(i));
3659  }
3660  }
3661  }
3662 
3663  for (auto & sys : _solver_systems)
3664  {
3665  sys->solution().close();
3666  sys->solution().localize(*sys->system().current_local_solution, sys->dofMap().get_send_list());
3667  }
3668 
3669  _aux->solution().close();
3670  _aux->solution().localize(*_aux->sys().current_local_solution, _aux->dofMap().get_send_list());
3671 }
NumericVector< Number > & solution()
Definition: SystemBase.h:195
virtual bool haveFV() const override
returns true if this problem includes/needs finite volume functionality.
void reinit(bool reinit_for_derivative_reordering=false)
Fill out the VariableValue arrays from the system solution vector.
void parallel_reduce(const Range &range, Body &body, const Partitioner &)
std::vector< std::shared_ptr< SolverSystem > > _solver_systems
Combined container to base pointer of every solver system.
Scope guard for starting and stopping Floating Point Exception Trapping.
elem_info_iterator ownedElemInfoBegin()
Iterators to owned faceInfo objects.
Definition: MooseMesh.C:1525
ScalarInitialConditionWarehouse _scalar_ics
std::vector< std::shared_ptr< NonlinearSystemBase > > _nl
The nonlinear systems.
processor_id_type n_processors() const
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...
std::shared_ptr< AuxiliarySystem > _aux
The auxiliary system.
void setValue(unsigned int i, Number value)
Set the nodal value for this variable (to keep everything up to date.
MooseMesh & _mesh
virtual const std::vector< dof_id_type > & dofIndices() const
Get local DoF indices.
MooseApp & _app
The MOOSE application this is associated with.
Definition: MooseBase.h:84
libMesh::Order order() const
Get the order of this variable Note: Order enum can be implicitly converted to unsigned int...
bool hasActiveObjects(THREAD_ID tid=0) const
if(!dmm->_nl) SETERRQ(PETSC_COMM_WORLD
Class for scalar variables (they are different).
elem_info_iterator ownedElemInfoEnd()
Definition: MooseMesh.C:1533
virtual void set(const numeric_index_type i, const T value)=0
processor_id_type processor_id() const
SystemBase & sys()
Get the system this variable is part of.
libMesh::StoredRange< MooseMesh::const_bnd_node_iterator, const BndNode * > * getBoundaryNodeRange()
Definition: MooseMesh.C:1286
uint8_t dof_id_type

◆ queryParam()

template<typename T >
const T * MooseBaseParameterInterface::queryParam ( const std::string &  name) const
inherited

Query a parameter for the object.

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 222 of file MooseBaseParameterInterface.h.

223 {
224  return isParamValid(name) ? &getParam<T>(name) : nullptr;
225 }
std::string name(const ElemQuality q)
bool isParamValid(const std::string &name) const
Test if the supplied parameter is valid.

◆ registerRandomInterface()

void FEProblemBase::registerRandomInterface ( RandomInterface random_interface,
const std::string &  name 
)
inherited

Definition at line 8637 of file FEProblemBase.C.

Referenced by RandomInterface::setRandomResetFrequency().

8638 {
8639  auto insert_pair = moose_try_emplace(
8640  _random_data_objects, name, std::make_unique<RandomData>(*this, random_interface));
8641 
8642  auto random_data_ptr = insert_pair.first->second.get();
8643  random_interface.setRandomDataPointer(random_data_ptr);
8644 }
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:93
virtual const std::string & name() const
Get the name of the class.
Definition: MooseBase.h:57
std::map< std::string, std::unique_ptr< RandomData > > _random_data_objects
A map of objects that consume random numbers.
void setRandomDataPointer(RandomData *random_data)

◆ 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 53 of file PerfGraphInterface.C.

55 {
56  const auto timed_section_name = timedSectionName(section_name);
57  if (!moose::internal::getPerfGraphRegistry().sectionExists(timed_section_name))
58  return moose::internal::getPerfGraphRegistry().registerSection(timed_section_name, level);
59  else
60  return moose::internal::getPerfGraphRegistry().sectionID(timed_section_name);
61 }
PerfID registerSection(const std::string &section_name, const unsigned int level)
Call to register a named section for timing.
std::string timedSectionName(const std::string &section_name) const
PerfID sectionID(const std::string &section_name) const
Given a name return the PerfID The name of the section.
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 64 of file PerfGraphInterface.C.

68 {
69  const auto timed_section_name = timedSectionName(section_name);
70  if (!moose::internal::getPerfGraphRegistry().sectionExists(timed_section_name))
72  timedSectionName(section_name), level, live_message, print_dots);
73  else
74  return moose::internal::getPerfGraphRegistry().sectionID(timed_section_name);
75 }
PerfID registerSection(const std::string &section_name, const unsigned int level)
Call to register a named section for timing.
std::string timedSectionName(const std::string &section_name) const
PerfID sectionID(const std::string &section_name) const
Given a name return the PerfID The name of the section.
PerfGraphRegistry & getPerfGraphRegistry()
Get the global PerfGraphRegistry singleton.

◆ 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 5089 of file FEProblemBase.C.

Referenced by FEProblemBase::initialSetup(), FEProblemBase::meshChanged(), and FEProblemBase::possiblyRebuildGeomSearchPatches().

5090 {
5091  TIME_SECTION("reinitBecauseOfGhostingOrNewGeomObjects",
5092  3,
5093  "Reinitializing Because of Geometric Search Objects");
5094 
5095  // Need to see if _any_ processor has ghosted elems or geometry objects.
5096  bool needs_reinit = !_ghosted_elems.empty();
5097  needs_reinit = needs_reinit || !_geometric_search_data._nearest_node_locators.empty() ||
5098  (_mortar_data.hasObjects() && mortar_changed);
5099  needs_reinit =
5100  needs_reinit || (_displaced_problem &&
5101  (!_displaced_problem->geomSearchData()._nearest_node_locators.empty() ||
5102  (_mortar_data.hasDisplacedObjects() && mortar_changed)));
5103  _communicator.max(needs_reinit);
5104 
5105  if (needs_reinit)
5106  {
5107  // Call reinit to get the ghosted vectors correct now that some geometric search has been done
5108  es().reinit();
5109 
5110  if (_displaced_mesh)
5111  _displaced_problem->es().reinit();
5112  }
5113 }
const Parallel::Communicator & _communicator
std::set< dof_id_type > _ghosted_elems
Elements that should have Dofs ghosted to the local processor.
Definition: SubProblem.h:1093
bool hasObjects() const
Returns whether we have any active AutomaticMortarGeneration objects.
Definition: MortarData.h:104
std::map< std::pair< BoundaryID, BoundaryID >, NearestNodeLocator * > _nearest_node_locators
virtual libMesh::EquationSystems & es() override
MortarData _mortar_data
void max(const T &r, T &o, Request &req) const
bool hasDisplacedObjects() const
Returns whether any of the AutomaticMortarGeneration objects are running on a displaced mesh...
Definition: MortarData.h:99
std::shared_ptr< DisplacedProblem > _displaced_problem
GeometricSearchData _geometric_search_data
MooseMesh * _displaced_mesh

◆ 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 2105 of file FEProblemBase.C.

Referenced by ComputeDiracThread::onElement().

2106 {
2107  std::vector<Point> & points = _dirac_kernel_info.getPoints()[elem].first;
2108 
2109  unsigned int n_points = points.size();
2110 
2111  if (n_points)
2112  {
2113  if (n_points > _max_qps)
2114  {
2115  _max_qps = n_points;
2116 
2121  unsigned int max_qpts = getMaxQps();
2122  for (unsigned int tid = 0; tid < libMesh::n_threads(); ++tid)
2123  {
2124  // the highest available order in libMesh is 43
2125  _scalar_zero[tid].resize(FORTYTHIRD, 0);
2126  _zero[tid].resize(max_qpts, 0);
2127  _grad_zero[tid].resize(max_qpts, RealGradient(0.));
2128  _second_zero[tid].resize(max_qpts, RealTensor(0.));
2129  _vector_zero[tid].resize(max_qpts, RealGradient(0.));
2130  _vector_curl_zero[tid].resize(max_qpts, RealGradient(0.));
2131  }
2132  }
2133 
2134  for (const auto i : index_range(_nl))
2135  {
2136  _assembly[tid][i]->reinitAtPhysical(elem, points);
2137  _nl[i]->prepare(tid);
2138  }
2139  _aux->prepare(tid);
2140 
2141  reinitElem(elem, tid);
2142  }
2143 
2144  _assembly[tid][_current_nl_sys->number()]->prepare();
2146  _assembly[tid][_current_nl_sys->number()]->prepareNonlocal();
2147 
2148  bool have_points = n_points > 0;
2150  {
2151  have_points |= _displaced_problem->reinitDirac(_displaced_mesh->elemPtr(elem->id()), tid);
2153  _displaced_problem->prepareNonlocal(tid);
2154  }
2155 
2156  return have_points;
2157 }
bool _reinit_displaced_elem
Whether to call DisplacedProblem::reinitElem when this->reinitElem is called.
unsigned int n_threads()
virtual Elem * elemPtr(const dof_id_type i)
Definition: MooseMesh.C:3108
bool _has_nonlocal_coupling
Indicates if nonlocal coupling is required/exists.
std::vector< VariableSecond > _second_zero
std::vector< VectorVariableCurl > _vector_curl_zero
std::vector< std::shared_ptr< NonlinearSystemBase > > _nl
The nonlinear systems.
MultiPointMap & getPoints()
Returns a writeable reference to the _points container.
NonlinearSystemBase * _current_nl_sys
The current nonlinear system that we are solving.
dof_id_type id() const
virtual void reinitElem(const Elem *elem, const THREAD_ID tid) override
std::shared_ptr< AuxiliarySystem > _aux
The auxiliary system.
unsigned int number() const
Gets the number of this system.
Definition: SystemBase.C:1159
std::vector< std::vector< std::unique_ptr< Assembly > > > _assembly
The Assembly objects.
std::vector< VariableGradient > _grad_zero
std::vector< VariableValue > _scalar_zero
std::vector< VariableValue > _zero
std::shared_ptr< DisplacedProblem > _displaced_problem
std::vector< VectorVariableValue > _vector_zero
unsigned int _max_qps
Maximum number of quadrature points used in the problem.
DiracKernelInfo _dirac_kernel_info
Definition: SubProblem.h:1049
auto index_range(const T &sizable)
MooseMesh * _displaced_mesh
unsigned int getMaxQps() const

◆ reinitElem()

void FEProblemBase::reinitElem ( const Elem elem,
const THREAD_ID  tid 
)
overridevirtualinherited

Implements SubProblem.

Definition at line 2160 of file FEProblemBase.C.

Referenced by NodalPatchRecovery::compute(), ComputeMarkerThread::onElement(), ComputeElemDampingThread::onElement(), ComputeIndicatorThread::onElement(), ComputeMaterialsObjectThread::onElement(), ComputeUserObjectsThread::onElement(), ComputeInitialConditionThread::operator()(), FEProblemBase::reinitDirac(), and FEProblemBase::reinitElemPhys().

2161 {
2162  for (auto & sys : _solver_systems)
2163  sys->reinitElem(elem, tid);
2164  _aux->reinitElem(elem, tid);
2165 
2167  _displaced_problem->reinitElem(_displaced_mesh->elemPtr(elem->id()), tid);
2168 }
bool _reinit_displaced_elem
Whether to call DisplacedProblem::reinitElem when this->reinitElem is called.
virtual Elem * elemPtr(const dof_id_type i)
Definition: MooseMesh.C:3108
std::vector< std::shared_ptr< SolverSystem > > _solver_systems
Combined container to base pointer of every solver system.
dof_id_type id() const
std::shared_ptr< AuxiliarySystem > _aux
The auxiliary system.
std::shared_ptr< DisplacedProblem > _displaced_problem
MooseMesh * _displaced_mesh

◆ 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 8964 of file FEProblemBase.C.

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

8970 {
8971  SubProblem::reinitElemFaceRef(elem, side, tolerance, pts, weights, tid);
8972 
8973  if (_displaced_problem)
8974  _displaced_problem->reinitElemFaceRef(
8975  _displaced_mesh->elemPtr(elem->id()), side, tolerance, pts, weights, tid);
8976 }
virtual Elem * elemPtr(const dof_id_type i)
Definition: MooseMesh.C:3108
dof_id_type id() const
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:882
std::shared_ptr< DisplacedProblem > _displaced_problem
MooseMesh * _displaced_mesh

◆ reinitElemNeighborAndLowerD()

void FEProblemBase::reinitElemNeighborAndLowerD ( const Elem elem,
unsigned int  side,
const THREAD_ID  tid 
)
overridevirtualinherited

Implements SubProblem.

Definition at line 2346 of file FEProblemBase.C.

Referenced by ComputeMaterialsObjectThread::onInternalSide(), and NonlinearThread::onInternalSide().

2349 {
2350  reinitNeighbor(elem, side, tid);
2351 
2352  const Elem * lower_d_elem = _mesh.getLowerDElem(elem, side);
2353  if (lower_d_elem && _mesh.interiorLowerDBlocks().count(lower_d_elem->subdomain_id()) > 0)
2354  reinitLowerDElem(lower_d_elem, tid);
2355  else
2356  {
2357  // with mesh refinement, lower-dimensional element might be defined on neighbor side
2358  auto & neighbor = _assembly[tid][0]->neighbor();
2359  auto & neighbor_side = _assembly[tid][0]->neighborSide();
2360  const Elem * lower_d_elem_neighbor = _mesh.getLowerDElem(neighbor, neighbor_side);
2361  if (lower_d_elem_neighbor &&
2362  _mesh.interiorLowerDBlocks().count(lower_d_elem_neighbor->subdomain_id()) > 0)
2363  {
2364  auto qps = _assembly[tid][0]->qPointsFaceNeighbor().stdVector();
2365  std::vector<Point> reference_points;
2366  FEMap::inverse_map(
2367  lower_d_elem_neighbor->dim(), lower_d_elem_neighbor, qps, reference_points);
2368  reinitLowerDElem(lower_d_elem_neighbor, tid, &reference_points);
2369  }
2370  }
2371 
2372  if (_displaced_problem &&
2374  _displaced_problem->reinitElemNeighborAndLowerD(
2375  _displaced_mesh->elemPtr(elem->id()), side, tid);
2376 }
bool _reinit_displaced_elem
Whether to call DisplacedProblem::reinitElem when this->reinitElem is called.
bool _reinit_displaced_neighbor
Whether to call DisplacedProblem::reinitNeighbor when this->reinitNeighbor is called.
const std::set< SubdomainID > & interiorLowerDBlocks() const
Definition: MooseMesh.h:1403
virtual Elem * elemPtr(const dof_id_type i)
Definition: MooseMesh.C:3108
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:1698
dof_id_type id() const
MooseMesh & _mesh
std::vector< std::vector< std::unique_ptr< Assembly > > > _assembly
The Assembly objects.
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
bool _reinit_displaced_face
Whether to call DisplacedProblem::reinitElemFace when this->reinitElemFace is called.
subdomain_id_type subdomain_id() const
virtual unsigned short dim() const=0
std::shared_ptr< DisplacedProblem > _displaced_problem
virtual void reinitNeighbor(const Elem *elem, unsigned int side, const THREAD_ID tid) override
MooseMesh * _displaced_mesh

◆ 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 2171 of file FEProblemBase.C.

Referenced by MultiAppVariableValueSamplePostprocessorTransfer::execute().

2174 {
2175  mooseAssert(_mesh.queryElemPtr(elem->id()) == elem,
2176  "Are you calling this method with a displaced mesh element?");
2177 
2178  for (const auto i : index_range(_solver_systems))
2179  {
2180  _assembly[tid][i]->reinitAtPhysical(elem, phys_points_in_elem);
2181  _solver_systems[i]->prepare(tid);
2182  _assembly[tid][i]->prepare();
2184  _assembly[tid][i]->prepareNonlocal();
2185  }
2186  _aux->prepare(tid);
2187 
2188  reinitElem(elem, tid);
2189 }
bool _has_nonlocal_coupling
Indicates if nonlocal coupling is required/exists.
std::vector< std::shared_ptr< SolverSystem > > _solver_systems
Combined container to base pointer of every solver system.
virtual Elem * queryElemPtr(const dof_id_type i)
Definition: MooseMesh.C:3120
dof_id_type id() const
virtual void reinitElem(const Elem *elem, const THREAD_ID tid) override
std::shared_ptr< AuxiliarySystem > _aux
The auxiliary system.
MooseMesh & _mesh
std::vector< std::vector< std::unique_ptr< Assembly > > > _assembly
The Assembly objects.
auto index_range(const T &sizable)

◆ 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 1278 of file SubProblem.C.

1279 {
1280  for (const auto nl : make_range(numNonlinearSystems()))
1281  assembly(tid, nl).reinitFVFace(fi);
1282 }
void reinitFVFace(const FaceInfo &fi)
Definition: Assembly.C:1860
virtual Assembly & assembly(const THREAD_ID tid, const unsigned int sys_num)=0
IntRange< T > make_range(T beg, T end)
virtual std::size_t numNonlinearSystems() const =0

◆ 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 2219 of file FEProblemBase.C.

Referenced by ComputeUserObjectsThread::onBoundary(), NonlinearThread::prepareFace(), and FEProblemBase::reinitElemNeighborAndLowerD().

2223 {
2224  SubProblem::reinitLowerDElem(lower_d_elem, tid, pts, weights);
2225 
2227  _displaced_problem->reinitLowerDElem(
2228  _displaced_mesh->elemPtr(lower_d_elem->id()), tid, pts, weights);
2229 }
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:957
virtual Elem * elemPtr(const dof_id_type i)
Definition: MooseMesh.C:3108
dof_id_type id() const
std::shared_ptr< DisplacedProblem > _displaced_problem
MooseMesh * _displaced_mesh

◆ reinitMaterials()

void FEProblemBase::reinitMaterials ( SubdomainID  blk_id,
const THREAD_ID  tid,
bool  swap_stateful = true 
)
inherited

Definition at line 3981 of file FEProblemBase.C.

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

3982 {
3983  if (hasActiveMaterialProperties(tid))
3984  {
3985  auto && elem = _assembly[tid][0]->elem();
3986  unsigned int n_points = _assembly[tid][0]->qRule()->n_points();
3987 
3988  auto & material_data = _material_props.getMaterialData(tid);
3989  material_data.resize(n_points);
3990 
3991  // Only swap if requested
3992  if (swap_stateful)
3993  material_data.swap(*elem);
3994 
3995  if (_discrete_materials.hasActiveBlockObjects(blk_id, tid))
3996  material_data.reset(_discrete_materials.getActiveBlockObjects(blk_id, tid));
3997 
3998  if (_materials.hasActiveBlockObjects(blk_id, tid))
3999  material_data.reinit(_materials.getActiveBlockObjects(blk_id, tid));
4000  }
4001 }
bool hasActiveBlockObjects(THREAD_ID tid=0) const
const std::map< SubdomainID, std::vector< std::shared_ptr< T > > > & getActiveBlockObjects(THREAD_ID tid=0) const
std::vector< std::vector< std::unique_ptr< Assembly > > > _assembly
The Assembly objects.
MaterialWarehouse _discrete_materials
const MaterialData & getMaterialData(const THREAD_ID tid) const
MaterialPropertyStorage & _material_props
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.
Definition: MaterialData.C:21
MaterialWarehouse _materials

◆ 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

Definition at line 4074 of file FEProblemBase.C.

Referenced by Moose::Mortar::loopOverMortarSegments(), ComputeUserObjectsThread::onBoundary(), NonlinearThread::onInterface(), ComputeUserObjectsThread::onInterface(), and NonlinearThread::prepareFace().

4078 {
4079  if (hasActiveMaterialProperties(tid))
4080  {
4081  auto && elem = _assembly[tid][0]->elem();
4082  unsigned int side = _assembly[tid][0]->side();
4083  unsigned int n_points = _assembly[tid][0]->qRuleFace()->n_points();
4084 
4085  auto & bnd_material_data = _bnd_material_props.getMaterialData(tid);
4086  bnd_material_data.resize(n_points);
4087 
4088  if (swap_stateful && !bnd_material_data.isSwapped())
4089  bnd_material_data.swap(*elem, side);
4090 
4091  if (_discrete_materials.hasActiveBoundaryObjects(boundary_id, tid))
4092  bnd_material_data.reset(_discrete_materials.getActiveBoundaryObjects(boundary_id, tid));
4093 
4094  if (reinit_mats)
4095  bnd_material_data.reinit(*reinit_mats);
4096  else if (_materials.hasActiveBoundaryObjects(boundary_id, tid))
4097  bnd_material_data.reinit(_materials.getActiveBoundaryObjects(boundary_id, tid));
4098  }
4099 }
MaterialPropertyStorage & _bnd_material_props
bool hasActiveBoundaryObjects(THREAD_ID tid=0) const
std::vector< std::vector< std::unique_ptr< Assembly > > > _assembly
The Assembly objects.
const std::map< BoundaryID, std::vector< std::shared_ptr< T > > > & getActiveBoundaryObjects(THREAD_ID tid=0) const
MaterialWarehouse _discrete_materials
const MaterialData & getMaterialData(const THREAD_ID tid) const
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.
Definition: MaterialData.C:21
MaterialWarehouse _materials

◆ 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
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

Definition at line 4004 of file FEProblemBase.C.

Referenced by Moose::Mortar::loopOverMortarSegments(), ComputeUserObjectsThread::onBoundary(), NonlinearThread::onInterface(), ComputeUserObjectsThread::onInterface(), ComputeIndicatorThread::onInternalSide(), NonlinearThread::onInternalSide(), ComputeUserObjectsThread::onInternalSide(), and NonlinearThread::prepareFace().

4008 {
4009  if (hasActiveMaterialProperties(tid))
4010  {
4011  auto && elem = _assembly[tid][0]->elem();
4012  unsigned int side = _assembly[tid][0]->side();
4013  unsigned int n_points = _assembly[tid][0]->qRuleFace()->n_points();
4014 
4015  auto & bnd_material_data = _bnd_material_props.getMaterialData(tid);
4016  bnd_material_data.resize(n_points);
4017 
4018  if (swap_stateful && !bnd_material_data.isSwapped())
4019  bnd_material_data.swap(*elem, side);
4020 
4021  if (_discrete_materials[Moose::FACE_MATERIAL_DATA].hasActiveBlockObjects(blk_id, tid))
4022  bnd_material_data.reset(
4023  _discrete_materials[Moose::FACE_MATERIAL_DATA].getActiveBlockObjects(blk_id, tid));
4024 
4025  if (reinit_mats)
4026  bnd_material_data.reinit(*reinit_mats);
4027  else if (_materials[Moose::FACE_MATERIAL_DATA].hasActiveBlockObjects(blk_id, tid))
4028  bnd_material_data.reinit(
4029  _materials[Moose::FACE_MATERIAL_DATA].getActiveBlockObjects(blk_id, tid));
4030  }
4031 }
MaterialPropertyStorage & _bnd_material_props
std::vector< std::vector< std::unique_ptr< Assembly > > > _assembly
The Assembly objects.
MaterialWarehouse _discrete_materials
const MaterialData & getMaterialData(const THREAD_ID tid) const
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.
Definition: MaterialData.C:21
MaterialWarehouse _materials

◆ reinitMaterialsInterface()

void FEProblemBase::reinitMaterialsInterface ( BoundaryID  boundary_id,
const THREAD_ID  tid,
bool  swap_stateful = true 
)
inherited

Definition at line 4102 of file FEProblemBase.C.

Referenced by NonlinearThread::onInterface(), and ComputeUserObjectsThread::onInterface().

4105 {
4106  if (hasActiveMaterialProperties(tid))
4107  {
4108  const Elem * const & elem = _assembly[tid][0]->elem();
4109  unsigned int side = _assembly[tid][0]->side();
4110  unsigned int n_points = _assembly[tid][0]->qRuleFace()->n_points();
4111 
4112  auto & bnd_material_data = _bnd_material_props.getMaterialData(tid);
4113  bnd_material_data.resize(n_points);
4114 
4115  if (swap_stateful && !bnd_material_data.isSwapped())
4116  bnd_material_data.swap(*elem, side);
4117 
4118  if (_interface_materials.hasActiveBoundaryObjects(boundary_id, tid))
4119  bnd_material_data.reinit(_interface_materials.getActiveBoundaryObjects(boundary_id, tid));
4120  }
4121 }
MaterialPropertyStorage & _bnd_material_props
MaterialWarehouse _interface_materials
bool hasActiveBoundaryObjects(THREAD_ID tid=0) const
std::vector< std::vector< std::unique_ptr< Assembly > > > _assembly
The Assembly objects.
const std::map< BoundaryID, std::vector< std::shared_ptr< T > > > & getActiveBoundaryObjects(THREAD_ID tid=0) const
const MaterialData & getMaterialData(const THREAD_ID tid) const
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.
Definition: MaterialData.C:21

◆ 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
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

Definition at line 4034 of file FEProblemBase.C.

Referenced by Moose::Mortar::loopOverMortarSegments(), NonlinearThread::onInterface(), ComputeUserObjectsThread::onInterface(), ComputeIndicatorThread::onInternalSide(), NonlinearThread::onInternalSide(), ComputeUserObjectsThread::onInternalSide(), and NonlinearSystemBase::reinitNodeFace().

4038 {
4039  if (hasActiveMaterialProperties(tid))
4040  {
4041  // NOTE: this will not work with h-adaptivity
4042  // lindsayad: why not?
4043 
4044  const Elem * neighbor = _assembly[tid][0]->neighbor();
4045  unsigned int neighbor_side = neighbor->which_neighbor_am_i(_assembly[tid][0]->elem());
4046 
4047  mooseAssert(neighbor, "neighbor should be non-null");
4048  mooseAssert(blk_id == neighbor->subdomain_id(),
4049  "The provided blk_id " << blk_id << " and neighbor subdomain ID "
4050  << neighbor->subdomain_id() << " do not match.");
4051 
4052  unsigned int n_points = _assembly[tid][0]->qRuleNeighbor()->n_points();
4053 
4054  auto & neighbor_material_data = _neighbor_material_props.getMaterialData(tid);
4055  neighbor_material_data.resize(n_points);
4056 
4057  // Only swap if requested
4058  if (swap_stateful)
4059  neighbor_material_data.swap(*neighbor, neighbor_side);
4060 
4061  if (_discrete_materials[Moose::NEIGHBOR_MATERIAL_DATA].hasActiveBlockObjects(blk_id, tid))
4062  neighbor_material_data.reset(
4063  _discrete_materials[Moose::NEIGHBOR_MATERIAL_DATA].getActiveBlockObjects(blk_id, tid));
4064 
4065  if (reinit_mats)
4066  neighbor_material_data.reinit(*reinit_mats);
4067  else if (_materials[Moose::NEIGHBOR_MATERIAL_DATA].hasActiveBlockObjects(blk_id, tid))
4068  neighbor_material_data.reinit(
4069  _materials[Moose::NEIGHBOR_MATERIAL_DATA].getActiveBlockObjects(blk_id, tid));
4070  }
4071 }
unsigned int which_neighbor_am_i(const Elem *e) const
std::vector< std::vector< std::unique_ptr< Assembly > > > _assembly
The Assembly objects.
MaterialWarehouse _discrete_materials
subdomain_id_type subdomain_id() const
MaterialPropertyStorage & _neighbor_material_props
const MaterialData & getMaterialData(const THREAD_ID tid) const
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.
Definition: MaterialData.C:21
MaterialWarehouse _materials

◆ 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 994 of file SubProblem.C.

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

995 {
996  for (const auto nl_sys_num : make_range(numNonlinearSystems()))
997  assembly(tid, nl_sys_num).reinitMortarElem(elem);
998 }
void reinitMortarElem(const Elem *elem)
reinitialize a mortar segment mesh element in order to get a proper JxW
Definition: Assembly.C:2407
virtual Assembly & assembly(const THREAD_ID tid, const unsigned int sys_num)=0
IntRange< T > make_range(T beg, T end)
virtual std::size_t numNonlinearSystems() const =0

◆ 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 9214 of file FEProblemBase.C.

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

9217 {
9218  const auto mortar_uos =
9219  getMortarUserObjects(primary_boundary_id, secondary_boundary_id, displaced);
9220  for (auto * const mortar_uo : mortar_uos)
9221  {
9222  mortar_uo->setNormals();
9223  mortar_uo->reinit();
9224  }
9225 }
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...

◆ reinitNeighbor()

void FEProblemBase::reinitNeighbor ( const Elem elem,
unsigned int  side,
const THREAD_ID  tid 
)
overridevirtualinherited

Implements SubProblem.

Definition at line 2307 of file FEProblemBase.C.

Referenced by ComputeMaterialsObjectThread::onInterface(), NonlinearThread::onInterface(), ComputeUserObjectsThread::onInterface(), ComputeIndicatorThread::onInternalSide(), ComputeUserObjectsThread::onInternalSide(), and FEProblemBase::reinitElemNeighborAndLowerD().

2308 {
2309  setNeighborSubdomainID(elem, side, tid);
2310 
2311  const Elem * neighbor = elem->neighbor_ptr(side);
2312  unsigned int neighbor_side = neighbor->which_neighbor_am_i(elem);
2313 
2314  for (const auto i : index_range(_nl))
2315  {
2316  _assembly[tid][i]->reinitElemAndNeighbor(elem, side, neighbor, neighbor_side);
2317  _nl[i]->prepareNeighbor(tid);
2318  // Called during stateful material property evaluation outside of solve
2319  _assembly[tid][i]->prepareNeighbor();
2320  }
2321  _aux->prepareNeighbor(tid);
2322 
2323  for (auto & nl : _nl)
2324  {
2325  nl->reinitElemFace(elem, side, tid);
2326  nl->reinitNeighborFace(neighbor, neighbor_side, tid);
2327  }
2328  _aux->reinitElemFace(elem, side, tid);
2329  _aux->reinitNeighborFace(neighbor, neighbor_side, tid);
2330 
2332  {
2333  // There are cases like for cohesive zone modeling without significant sliding where we cannot
2334  // use FEInterface::inverse_map in Assembly::reinitElemAndNeighbor in the displaced problem
2335  // because the physical points coming from the element don't actually lie on the neighbor.
2336  // Moreover, what's the point of doing another physical point inversion in other cases? We only
2337  // care about the reference points which we can just take from the undisplaced computation
2338  const auto & displaced_ref_pts = _assembly[tid][0]->qRuleNeighbor()->get_points();
2339 
2340  _displaced_problem->reinitNeighbor(
2341  _displaced_mesh->elemPtr(elem->id()), side, tid, &displaced_ref_pts);
2342  }
2343 }
bool _reinit_displaced_neighbor
Whether to call DisplacedProblem::reinitNeighbor when this->reinitNeighbor is called.
virtual Elem * elemPtr(const dof_id_type i)
Definition: MooseMesh.C:3108
std::vector< std::shared_ptr< NonlinearSystemBase > > _nl
The nonlinear systems.
dof_id_type id() const
unsigned int which_neighbor_am_i(const Elem *e) const
std::shared_ptr< AuxiliarySystem > _aux
The auxiliary system.
std::vector< std::vector< std::unique_ptr< Assembly > > > _assembly
The Assembly objects.
const Elem * neighbor_ptr(unsigned int i) const
std::shared_ptr< DisplacedProblem > _displaced_problem
virtual void setNeighborSubdomainID(const Elem *elem, unsigned int side, const THREAD_ID tid) override
auto index_range(const T &sizable)
MooseMesh * _displaced_mesh

◆ 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 8979 of file FEProblemBase.C.

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

8985 {
8986  SubProblem::reinitNeighborFaceRef(neighbor_elem, neighbor_side, tolerance, pts, weights, tid);
8987 
8988  if (_displaced_problem)
8989  _displaced_problem->reinitNeighborFaceRef(
8990  _displaced_mesh->elemPtr(neighbor_elem->id()), neighbor_side, tolerance, pts, weights, tid);
8991 }
virtual Elem * elemPtr(const dof_id_type i)
Definition: MooseMesh.C:3108
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:921
dof_id_type id() const
std::shared_ptr< DisplacedProblem > _displaced_problem
MooseMesh * _displaced_mesh

◆ reinitNeighborLowerDElem()

void SubProblem::reinitNeighborLowerDElem ( const Elem elem,
const THREAD_ID  tid = 0 
)
inherited

reinitialize a neighboring lower dimensional element

Definition at line 987 of file SubProblem.C.

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

988 {
989  for (const auto nl_sys_num : make_range(numNonlinearSystems()))
990  assembly(tid, nl_sys_num).reinitNeighborLowerDElem(elem);
991 }
void reinitNeighborLowerDElem(const Elem *elem)
reinitialize a neighboring lower dimensional element
Definition: Assembly.C:2386
virtual Assembly & assembly(const THREAD_ID tid, const unsigned int sys_num)=0
IntRange< T > make_range(T beg, T end)
virtual std::size_t numNonlinearSystems() const =0

◆ reinitNeighborPhys() [1/2]

virtual void FEProblemBase::reinitNeighborPhys ( const Elem *  neighbor,
unsigned int  neighbor_side,
const std::vector< Point > &  physical_points,
const THREAD_ID  tid 
)
overridevirtualinherited

◆ reinitNeighborPhys() [2/2]

virtual void FEProblemBase::reinitNeighborPhys ( const Elem *  neighbor,
const std::vector< Point > &  physical_points,
const THREAD_ID  tid 
)
overridevirtualinherited

Implements SubProblem.

◆ reinitNode()

void FEProblemBase::reinitNode ( const Node node,
const THREAD_ID  tid 
)
overridevirtualinherited

Implements SubProblem.

Definition at line 2232 of file FEProblemBase.C.

Referenced by NodalPatchRecovery::compute(), NonlinearSystemBase::computeResidualInternal(), ComputeNodalUserObjectsThread::onNode(), ComputeNodalDampingThread::onNode(), ComputeNodalKernelsThread::onNode(), and ComputeNodalKernelJacobiansThread::onNode().

2233 {
2235  _displaced_problem->reinitNode(&_displaced_mesh->nodeRef(node->id()), tid);
2236 
2237  for (const auto i : index_range(_nl))
2238  {
2239  _assembly[tid][i]->reinit(node);
2240  _nl[i]->reinitNode(node, tid);
2241  }
2242  _aux->reinitNode(node, tid);
2243 }
bool _reinit_displaced_elem
Whether to call DisplacedProblem::reinitElem when this->reinitElem is called.
virtual const Node & nodeRef(const dof_id_type i) const
Definition: MooseMesh.C:831
std::vector< std::shared_ptr< NonlinearSystemBase > > _nl
The nonlinear systems.
dof_id_type id() const
std::shared_ptr< AuxiliarySystem > _aux
The auxiliary system.
std::vector< std::vector< std::unique_ptr< Assembly > > > _assembly
The Assembly objects.
std::shared_ptr< DisplacedProblem > _displaced_problem
auto index_range(const T &sizable)
MooseMesh * _displaced_mesh

◆ reinitNodeFace()

void FEProblemBase::reinitNodeFace ( const Node node,
BoundaryID  bnd_id,
const THREAD_ID  tid 
)
overridevirtualinherited

Implements SubProblem.

Definition at line 2246 of file FEProblemBase.C.

Referenced by NonlinearSystemBase::computeJacobianBlocks(), NonlinearSystemBase::computeJacobianInternal(), NonlinearSystemBase::computeNodalBCs(), NonlinearSystemBase::computeNodalBCsResidualAndJacobian(), NonlinearSystemBase::constraintJacobians(), NonlinearSystemBase::constraintResiduals(), ComputeNodalKernelBcsThread::onNode(), ComputeNodalKernelBCJacobiansThread::onNode(), NonlinearSystemBase::reinitNodeFace(), NonlinearSystemBase::setConstraintSecondaryValues(), and NonlinearSystemBase::setInitialSolution().

2247 {
2249  _displaced_problem->reinitNodeFace(&_displaced_mesh->nodeRef(node->id()), bnd_id, tid);
2250 
2251  for (const auto i : index_range(_nl))
2252  {
2253  _assembly[tid][i]->reinit(node);
2254  _nl[i]->reinitNodeFace(node, bnd_id, tid);
2255  }
2256  _aux->reinitNodeFace(node, bnd_id, tid);
2257 }
virtual const Node & nodeRef(const dof_id_type i) const
Definition: MooseMesh.C:831
std::vector< std::shared_ptr< NonlinearSystemBase > > _nl
The nonlinear systems.
dof_id_type id() const
std::shared_ptr< AuxiliarySystem > _aux
The auxiliary system.
std::vector< std::vector< std::unique_ptr< Assembly > > > _assembly
The Assembly objects.
bool _reinit_displaced_face
Whether to call DisplacedProblem::reinitElemFace when this->reinitElemFace is called.
std::shared_ptr< DisplacedProblem > _displaced_problem
auto index_range(const T &sizable)
MooseMesh * _displaced_mesh

◆ reinitNodes()

void FEProblemBase::reinitNodes ( const std::vector< dof_id_type > &  nodes,
const THREAD_ID  tid 
)
overridevirtualinherited

Implements SubProblem.

Definition at line 2260 of file FEProblemBase.C.

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

2261 {
2263  _displaced_problem->reinitNodes(nodes, tid);
2264 
2265  for (auto & nl : _nl)
2266  nl->reinitNodes(nodes, tid);
2267  _aux->reinitNodes(nodes, tid);
2268 }
bool _reinit_displaced_elem
Whether to call DisplacedProblem::reinitElem when this->reinitElem is called.
std::vector< std::shared_ptr< NonlinearSystemBase > > _nl
The nonlinear systems.
std::shared_ptr< AuxiliarySystem > _aux
The auxiliary system.
std::shared_ptr< DisplacedProblem > _displaced_problem

◆ reinitNodesNeighbor()

void FEProblemBase::reinitNodesNeighbor ( const std::vector< dof_id_type > &  nodes,
const THREAD_ID  tid 
)
overridevirtualinherited

Implements SubProblem.

Definition at line 2271 of file FEProblemBase.C.

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

2272 {
2274  _displaced_problem->reinitNodesNeighbor(nodes, tid);
2275 
2276  for (auto & nl : _nl)
2277  nl->reinitNodesNeighbor(nodes, tid);
2278  _aux->reinitNodesNeighbor(nodes, tid);
2279 }
bool _reinit_displaced_elem
Whether to call DisplacedProblem::reinitElem when this->reinitElem is called.
std::vector< std::shared_ptr< NonlinearSystemBase > > _nl
The nonlinear systems.
std::shared_ptr< AuxiliarySystem > _aux
The auxiliary system.
std::shared_ptr< DisplacedProblem > _displaced_problem

◆ reinitOffDiagScalars()

void FEProblemBase::reinitOffDiagScalars ( const THREAD_ID  tid)
overridevirtualinherited

Implements SubProblem.

Definition at line 2299 of file FEProblemBase.C.

Referenced by NonlinearSystemBase::computeScalarKernelsJacobians(), NonlinearSystemBase::constraintJacobians(), and NonlinearThread::onElement().

2300 {
2301  _assembly[tid][_current_nl_sys->number()]->prepareOffDiagScalar();
2302  if (_displaced_problem)
2303  _displaced_problem->reinitOffDiagScalars(tid);
2304 }
NonlinearSystemBase * _current_nl_sys
The current nonlinear system that we are solving.
unsigned int number() const
Gets the number of this system.
Definition: SystemBase.C:1159
std::vector< std::vector< std::unique_ptr< Assembly > > > _assembly
The Assembly objects.
std::shared_ptr< DisplacedProblem > _displaced_problem

◆ 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 2282 of file FEProblemBase.C.

Referenced by NonlinearSystemBase::computeJacobianBlocks(), NonlinearSystemBase::computeJacobianInternal(), FEProblemBase::computeJacobianTags(), FEProblemBase::computeResidualAndJacobian(), NonlinearSystemBase::computeResidualAndJacobianInternal(), NonlinearSystemBase::computeResidualInternal(), FEProblemBase::computeResidualTags(), NonlinearSystemBase::computeScalarKernelsJacobians(), AuxiliarySystem::computeScalarVars(), and FEProblemBase::initialSetup().

2283 {
2284  TIME_SECTION("reinitScalars", 3, "Reinitializing Scalar Variables");
2285 
2287  _displaced_problem->reinitScalars(tid, reinit_for_derivative_reordering);
2288 
2289  for (auto & nl : _nl)
2290  nl->reinitScalars(tid, reinit_for_derivative_reordering);
2291  _aux->reinitScalars(tid, reinit_for_derivative_reordering);
2292 
2293  // This is called outside of residual/Jacobian call-backs
2294  for (auto & assembly : _assembly[tid])
2296 }
bool _reinit_displaced_elem
Whether to call DisplacedProblem::reinitElem when this->reinitElem is called.
void prepareScalar()
Definition: Assembly.C:2950
virtual Assembly & assembly(const THREAD_ID tid, const unsigned int sys_num) override
std::vector< std::shared_ptr< NonlinearSystemBase > > _nl
The nonlinear systems.
std::shared_ptr< AuxiliarySystem > _aux
The auxiliary system.
std::vector< std::vector< std::unique_ptr< Assembly > > > _assembly
The Assembly objects.
std::shared_ptr< DisplacedProblem > _displaced_problem

◆ removeAlgebraicGhostingFunctor()

void SubProblem::removeAlgebraicGhostingFunctor ( libMesh::GhostingFunctor algebraic_gf)
inherited

Remove an algebraic ghosting functor from this problem's DofMaps.

Definition at line 1067 of file SubProblem.C.

1068 {
1069  EquationSystems & eq = es();
1070  const auto n_sys = eq.n_systems();
1071 
1072 #ifndef NDEBUG
1073  const DofMap & nl_dof_map = eq.get_system(0).get_dof_map();
1074  const bool found_in_root_sys =
1075  std::find(nl_dof_map.algebraic_ghosting_functors_begin(),
1076  nl_dof_map.algebraic_ghosting_functors_end(),
1077  &algebraic_gf) != nl_dof_map.algebraic_ghosting_functors_end();
1078  const bool found_in_our_map =
1079  _root_alg_gf_to_sys_clones.find(&algebraic_gf) != _root_alg_gf_to_sys_clones.end();
1080  mooseAssert(found_in_root_sys == found_in_our_map,
1081  "If the ghosting functor exists in the root DofMap, then we need to have a key for "
1082  "it in our gf to clones map");
1083 #endif
1084 
1085  eq.get_system(0).get_dof_map().remove_algebraic_ghosting_functor(algebraic_gf);
1086 
1087  auto it = _root_alg_gf_to_sys_clones.find(&algebraic_gf);
1088  if (it == _root_alg_gf_to_sys_clones.end())
1089  return;
1090 
1091  auto & clones_vec = it->second;
1092  mooseAssert((n_sys - 1) == clones_vec.size(),
1093  "The size of the gf clones vector doesn't match the number of systems minus one");
1094  if (clones_vec.empty())
1095  {
1096  mooseAssert(n_sys == 1, "The clones vector should only be empty if there is only one system");
1097  return;
1098  }
1099 
1100  for (const auto i : make_range(n_sys))
1101  eq.get_system(i + 1).get_dof_map().remove_algebraic_ghosting_functor(*clones_vec[i]);
1102 
1103  _root_alg_gf_to_sys_clones.erase(it->first);
1104 }
unsigned int n_systems() const
const T_sys & get_system(std::string_view name) const
virtual libMesh::EquationSystems & es()=0
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.
Definition: SubProblem.h:1192
std::set< GhostingFunctor *>::const_iterator algebraic_ghosting_functors_end() const
IntRange< T > make_range(T beg, T end)
std::set< GhostingFunctor *>::const_iterator 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 1107 of file SubProblem.C.

1108 {
1109  EquationSystems & eq = es();
1110  const auto num_nl_sys = numNonlinearSystems();
1111  if (!num_nl_sys)
1112  return;
1113 
1114 #ifndef NDEBUG
1115  const DofMap & nl_dof_map = eq.get_system(0).get_dof_map();
1116  const bool found_in_root_sys = std::find(nl_dof_map.coupling_functors_begin(),
1117  nl_dof_map.coupling_functors_end(),
1118  &coupling_gf) != nl_dof_map.coupling_functors_end();
1119  const bool found_in_our_map =
1121  mooseAssert(found_in_root_sys == found_in_our_map,
1122  "If the ghosting functor exists in the root DofMap, then we need to have a key for "
1123  "it in our gf to clones map");
1124 #endif
1125 
1126  eq.get_system(0).get_dof_map().remove_coupling_functor(coupling_gf);
1127 
1128  auto it = _root_coupling_gf_to_sys_clones.find(&coupling_gf);
1129  if (it == _root_coupling_gf_to_sys_clones.end())
1130  return;
1131 
1132  auto & clones_vec = it->second;
1133  mooseAssert((num_nl_sys - 1) == clones_vec.size(),
1134  "The size of the gf clones vector doesn't match the number of systems minus one");
1135  if (clones_vec.empty())
1136  {
1137  mooseAssert(num_nl_sys == 1,
1138  "The clones vector should only be empty if there is only one nonlinear system");
1139  return;
1140  }
1141 
1142  for (const auto i : make_range(num_nl_sys))
1143  eq.get_system(i + 1).get_dof_map().remove_coupling_functor(*clones_vec[i]);
1144 
1145  _root_coupling_gf_to_sys_clones.erase(it->first);
1146 }
std::set< GhostingFunctor *>::const_iterator coupling_functors_begin() const
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.
Definition: SubProblem.h:1199
const T_sys & get_system(std::string_view name) const
virtual libMesh::EquationSystems & es()=0
IntRange< T > make_range(T beg, T end)
std::set< GhostingFunctor *>::const_iterator coupling_functors_end() const
virtual std::size_t numNonlinearSystems() const =0

◆ 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 5083 of file FEProblemBase.C.

5084 {
5085  //<< "Object " << a->name() << " -> " << b->name() << std::endl;
5086 }

◆ resetFailNextNonlinearConvergenceCheck()

void FEProblemBase::resetFailNextNonlinearConvergenceCheck ( )
inlineinherited

Tell the problem that the nonlinear convergence check(s) may proceed as normal.

Definition at line 2384 of file FEProblemBase.h.

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

void resetFailNextSystemConvergenceCheck()
Tell the problem that the system convergence check(s) may proceed as normal.

◆ resetFailNextSystemConvergenceCheck()

void FEProblemBase::resetFailNextSystemConvergenceCheck ( )
inlineinherited

Tell the problem that the system convergence check(s) may proceed as normal.

Definition at line 2386 of file FEProblemBase.h.

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

bool _fail_next_system_convergence_check

◆ residualSetup()

void FEProblemBase::residualSetup ( )
overridevirtualinherited

Reimplemented from SubProblem.

Definition at line 9114 of file FEProblemBase.C.

Referenced by NonlinearSystemBase::residualSetup().

9115 {
9117  // We need to setup all the nonlinear systems other than our current one which actually called
9118  // this method (so we have to make sure we don't go in a circle)
9119  for (const auto i : make_range(numNonlinearSystems()))
9120  if (i != currentNlSysNum())
9121  _nl[i]->residualSetup();
9122  // We don't setup the aux sys because that's been done elsewhere
9123  if (_displaced_problem)
9124  _displaced_problem->residualSetup();
9125 }
virtual std::size_t numNonlinearSystems() const override
virtual void residualSetup()
Definition: SubProblem.C:1195
std::vector< std::shared_ptr< NonlinearSystemBase > > _nl
The nonlinear systems.
virtual unsigned int currentNlSysNum() const override
IntRange< T > make_range(T beg, T end)
std::shared_ptr< DisplacedProblem > _displaced_problem

◆ 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 9050 of file FEProblemBase.C.

9053 {
9054  getMaterialData(data_type, tid).resize(nqp);
9055 }
MPI_Datatype data_type
MaterialData & getMaterialData(Moose::MaterialDataType type, const THREAD_ID tid=0) const
void resize(unsigned int n_qpoints)
Resize the data to hold properties for n_qpoints quadrature points.
Definition: MaterialData.C:21

◆ 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 66 of file Restartable.C.

Referenced by Restartable::declareRecoverableData(), and Restartable::declareRestartableDataHelper().

67 {
68  return _restartable_system_name + "/" + _restartable_name + "/" + data_name;
69 }
std::string _restartable_name
The name of the object.
Definition: Restartable.h:243
const std::string _restartable_system_name
The system name this object is in.
Definition: Restartable.h:230

◆ 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 5519 of file FEProblemBase.C.

Referenced by TransientBase::incrementStepOrReject(), and FixedPointSolve::solve().

5520 {
5521  const auto & multi_apps = _multi_apps[type].getActiveObjects();
5522 
5523  if (multi_apps.size())
5524  {
5525  if (_verbose_multiapps)
5526  {
5527  if (force)
5528  _console << COLOR_CYAN << "\nRestoring Multiapps on " << type.name()
5529  << " because of solve failure!" << COLOR_DEFAULT << std::endl;
5530  else
5531  _console << COLOR_CYAN << "\nRestoring MultiApps on " << type.name() << COLOR_DEFAULT
5532  << std::endl;
5533  }
5534 
5535  for (const auto & multi_app : multi_apps)
5536  multi_app->restore(force);
5537 
5539 
5540  if (_verbose_multiapps)
5541  _console << COLOR_CYAN << "Finished Restoring MultiApps on " << type.name() << "\n"
5542  << COLOR_DEFAULT << std::endl;
5543  }
5544 }
bool _parallel_barrier_messaging
Whether or not information about how many transfers have completed is printed.
const Parallel::Communicator & _communicator
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 libMesh::Parallel::Communicator &comm, bool messaging=true)
This function implements a parallel barrier function but writes progress to stdout.
Definition: MooseUtils.C:323
const std::string & type() const
Get the type of this class.
Definition: MooseBase.h:51
ExecuteMooseObjectWarehouse< MultiApp > _multi_apps
MultiApp Warehouse.
const ConsoleStream _console
An instance of helper class to write streams to the Console objects.
bool _verbose_multiapps
Whether or not to be verbose with multiapps.

◆ restoreOldSolutions()

void FEProblemBase::restoreOldSolutions ( )
virtualinherited

Restore old solutions from the backup vectors and deallocate them.

Definition at line 6640 of file FEProblemBase.C.

Referenced by EigenExecutionerBase::inversePowerIteration().

6641 {
6642  TIME_SECTION("restoreOldSolutions", 5, "Restoring Old Solutions");
6643 
6644  for (auto & sys : _solver_systems)
6645  sys->restoreOldSolutions();
6646  _aux->restoreOldSolutions();
6647 }
std::vector< std::shared_ptr< SolverSystem > > _solver_systems
Combined container to base pointer of every solver system.
std::shared_ptr< AuxiliarySystem > _aux
The auxiliary system.

◆ restoreOriginalNonzeroPattern()

bool FEProblemBase::restoreOriginalNonzeroPattern ( ) const
inlineinherited
Returns
Whether the original matrix nonzero pattern is restored before each Jacobian assembly

Definition at line 1917 of file FEProblemBase.h.

Referenced by NonlinearSystemBase::computeJacobianInternal().

const bool _restore_original_nonzero_pattern
Whether we should restore the original nonzero pattern for every Jacobian evaluation.

◆ restoreSolutions()

void FEProblemBase::restoreSolutions ( )
virtualinherited

Definition at line 6606 of file FEProblemBase.C.

Referenced by ActivateElementsUserObjectBase::initSolutions(), TimeStepper::rejectStep(), and FEProblemBase::updateMeshXFEM().

6607 {
6608  TIME_SECTION("restoreSolutions", 5, "Restoring Solutions");
6609 
6610  for (auto & sys : _solver_systems)
6611  {
6612  if (_verbose_restore)
6613  _console << "Restoring solutions on system " << sys->name() << "..." << std::endl;
6614  sys->restoreSolutions();
6615  }
6616 
6617  if (_verbose_restore)
6618  _console << "Restoring solutions on Auxiliary system..." << std::endl;
6619  _aux->restoreSolutions();
6620 
6621  if (_verbose_restore)
6622  _console << "Restoring postprocessor, vector-postprocessor, and reporter data..." << std::endl;
6624 
6625  if (_displaced_problem)
6626  _displaced_problem->updateMesh();
6627 }
std::vector< std::shared_ptr< SolverSystem > > _solver_systems
Combined container to base pointer of every solver system.
bool _verbose_restore
Whether or not to be verbose on solution restoration post a failed time step.
ReporterData _reporter_data
std::shared_ptr< AuxiliarySystem > _aux
The auxiliary system.
std::shared_ptr< DisplacedProblem > _displaced_problem
const ConsoleStream _console
An instance of helper class to write streams to the Console objects.
void restoreState(bool verbose=false)
When a time step fails, this method is called to revert the current reporter values to their old stat...
Definition: ReporterData.C:24

◆ safeAccessTaggedMatrices()

virtual bool SubProblem::safeAccessTaggedMatrices ( ) const
inlinevirtualinherited

Is it safe to access the tagged matrices.

Reimplemented in DisplacedProblem.

Definition at line 731 of file SubProblem.h.

Referenced by MooseVariableScalar::reinit(), and DisplacedProblem::safeAccessTaggedMatrices().

bool _safe_access_tagged_matrices
Is it safe to retrieve data from tagged matrices.
Definition: SubProblem.h:1108

◆ safeAccessTaggedVectors()

virtual bool SubProblem::safeAccessTaggedVectors ( ) const
inlinevirtualinherited

Is it safe to access the tagged vectors.

Reimplemented in DisplacedProblem.

Definition at line 734 of file SubProblem.h.

Referenced by MooseVariableScalar::reinit(), and DisplacedProblem::safeAccessTaggedVectors().

734 { return _safe_access_tagged_vectors; }
bool _safe_access_tagged_vectors
Is it safe to retrieve data from tagged vectors.
Definition: SubProblem.h:1111

◆ saveOldSolutions()

void FEProblemBase::saveOldSolutions ( )
virtualinherited

Allocate vectors and save old solutions into them.

Definition at line 6630 of file FEProblemBase.C.

Referenced by EigenExecutionerBase::inversePowerIteration().

6631 {
6632  TIME_SECTION("saveOldSolutions", 5, "Saving Old Solutions");
6633 
6634  for (auto & sys : _solver_systems)
6635  sys->saveOldSolutions();
6636  _aux->saveOldSolutions();
6637 }
std::vector< std::shared_ptr< SolverSystem > > _solver_systems
Combined container to base pointer of every solver system.
std::shared_ptr< AuxiliarySystem > _aux
The auxiliary system.

◆ 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 300 of file SubProblem.C.

Referenced by FEProblemBase::computeLinearSystemSys().

303 {
304  selected_tags.clear();
305  for (const auto & matrix_tag_pair : input_matrix_tags)
306  if (system.hasMatrix(matrix_tag_pair.second))
307  selected_tags.insert(matrix_tag_pair.second);
308 }
virtual bool hasMatrix(TagID tag) const
Check if the tagged matrix exists in the system.
Definition: SystemBase.h:351

◆ 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 289 of file SubProblem.C.

Referenced by FEProblemBase::computeLinearSystemSys(), FEProblemBase::computeResidualAndJacobian(), and ComputeResidualAndJacobianThread::determineObjectWarehouses().

292 {
293  selected_tags.clear();
294  for (const auto & vector_tag : input_vector_tags)
295  if (system.hasVector(vector_tag._id))
296  selected_tags.insert(vector_tag._id);
297 }
bool hasVector(const std::string &tag_name) const
Check if the named vector exists in the system.
Definition: SystemBase.C:907

◆ 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 5798 of file FEProblemBase.C.

Referenced by FEProblemBase::prepareMaterials(), ComputeMarkerThread::subdomainChanged(), ComputeMaterialsObjectThread::subdomainChanged(), ComputeIndicatorThread::subdomainChanged(), ComputeDiracThread::subdomainChanged(), NonlinearThread::subdomainChanged(), and ComputeUserObjectsThread::subdomainChanged().

5800 {
5802 
5803  if (_displaced_problem)
5804  _displaced_problem->setActiveElementalMooseVariables(moose_vars, tid);
5805 }
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:443
std::shared_ptr< DisplacedProblem > _displaced_problem

◆ setActiveFEVariableCoupleableMatrixTags()

void FEProblemBase::setActiveFEVariableCoupleableMatrixTags ( std::set< TagID > &  mtags,
const THREAD_ID  tid 
)
overridevirtualinherited

Reimplemented from SubProblem.

Definition at line 5760 of file FEProblemBase.C.

5761 {
5763 
5764  if (_displaced_problem)
5765  _displaced_problem->setActiveFEVariableCoupleableMatrixTags(mtags, tid);
5766 }
virtual void setActiveFEVariableCoupleableMatrixTags(std::set< TagID > &mtags, const THREAD_ID tid)
Definition: SubProblem.C:363
std::shared_ptr< DisplacedProblem > _displaced_problem

◆ 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 5853 of file FEProblemBase.C.

Referenced by Moose::Mortar::loopOverMortarSegments(), FEProblemBase::prepareMaterials(), NodalPatchRecovery::reinitPatch(), NonlinearSystemBase::setConstraintSecondaryValues(), and ComputeDiracThread::subdomainChanged().

5855 {
5856  // mark active properties in every material
5857  for (auto & mat : _all_materials.getObjects(tid))
5858  mat->setActiveProperties(mat_prop_ids);
5859  for (auto & mat : _all_materials[Moose::FACE_MATERIAL_DATA].getObjects(tid))
5860  mat->setActiveProperties(mat_prop_ids);
5861  for (auto & mat : _all_materials[Moose::NEIGHBOR_MATERIAL_DATA].getObjects(tid))
5862  mat->setActiveProperties(mat_prop_ids);
5863 
5864  _has_active_material_properties[tid] = !mat_prop_ids.empty();
5865 }
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...
std::vector< unsigned char > _has_active_material_properties
Whether there are active material properties on each thread.
MaterialWarehouse _all_materials

◆ setActiveScalarVariableCoupleableMatrixTags()

void FEProblemBase::setActiveScalarVariableCoupleableMatrixTags ( std::set< TagID > &  mtags,
const THREAD_ID  tid 
)
overridevirtualinherited

Reimplemented from SubProblem.

Definition at line 5778 of file FEProblemBase.C.

Referenced by AuxiliarySystem::setScalarVariableCoupleableTags().

5780 {
5782 
5783  if (_displaced_problem)
5784  _displaced_problem->setActiveScalarVariableCoupleableMatrixTags(mtags, tid);
5785 }
virtual void setActiveScalarVariableCoupleableMatrixTags(std::set< TagID > &mtags, const THREAD_ID tid)
Definition: SubProblem.C:402
std::shared_ptr< DisplacedProblem > _displaced_problem

◆ setActiveScalarVariableCoupleableVectorTags()

void FEProblemBase::setActiveScalarVariableCoupleableVectorTags ( std::set< TagID > &  vtags,
const THREAD_ID  tid 
)
overridevirtualinherited

Reimplemented from SubProblem.

Definition at line 5788 of file FEProblemBase.C.

Referenced by AuxiliarySystem::setScalarVariableCoupleableTags().

5790 {
5792 
5793  if (_displaced_problem)
5794  _displaced_problem->setActiveScalarVariableCoupleableVectorTags(vtags, tid);
5795 }
virtual void setActiveScalarVariableCoupleableVectorTags(std::set< TagID > &vtags, const THREAD_ID tid)
Definition: SubProblem.C:409
std::shared_ptr< DisplacedProblem > _displaced_problem

◆ setAxisymmetricCoordAxis()

void FEProblemBase::setAxisymmetricCoordAxis ( const MooseEnum rz_coord_axis)
inherited

Definition at line 815 of file FEProblemBase.C.

Referenced by FEProblemBase::FEProblemBase().

816 {
817  _mesh.setAxisymmetricCoordAxis(rz_coord_axis);
818 }
MooseMesh & _mesh
void setAxisymmetricCoordAxis(const MooseEnum &rz_coord_axis)
For axisymmetric simulations, set the symmetry coordinate axis.
Definition: MooseMesh.C:4182

◆ 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 1796 of file FEProblemBase.h.

Referenced by ExplicitEuler::preSolve(), ExplicitTVDRK2::preSolve(), and ExplicitRK2::preSolve().

1796 { _const_jacobian = state; }
bool _const_jacobian
true if the Jacobian is constant

◆ setCoordSystem()

void FEProblemBase::setCoordSystem ( const std::vector< SubdomainName > &  blocks,
const MultiMooseEnum coord_sys 
)
inherited

Definition at line 807 of file FEProblemBase.C.

Referenced by FEProblemBase::FEProblemBase().

809 {
810  TIME_SECTION("setCoordSystem", 5, "Setting Coordinate System");
811  _mesh.setCoordSystem(blocks, coord_sys);
812 }
char ** blocks
MooseMesh & _mesh
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:4076

◆ 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 6029 of file FEProblemBase.C.

Referenced by FEProblemBase::init(), FEProblemBase::setCouplingMatrix(), and Moose::SlepcSupport::setEigenProblemSolverParams().

6030 {
6032  {
6034  mooseError("Someone told us (the FEProblemBase) to trust the user coupling matrix, but we "
6035  "haven't been provided a coupling matrix!");
6036 
6037  // We've been told to trust the user coupling matrix, so we're going to leave things alone
6038  return;
6039  }
6040 
6041  _coupling = type;
6042 }
bool _trust_user_coupling_matrix
Whether to trust the user coupling matrix no matter what.
Moose::CouplingType _coupling
Type of variable coupling.
const std::string & type() const
Get the type of this class.
Definition: MooseBase.h:51
void mooseError(Args &&... args) const
Emits an error prefixed with object name and type.

◆ setCouplingMatrix() [1/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 6053 of file FEProblemBase.C.

Referenced by MoosePreconditioner::setCouplingMatrix().

6054 {
6056  _cm[i] = std::move(cm);
6057 }
void setCoupling(Moose::CouplingType type)
Set the coupling between variables TODO: allow user-defined coupling.
std::vector< std::unique_ptr< libMesh::CouplingMatrix > > _cm
Coupling matrix for variables.

◆ setCouplingMatrix() [2/2]

void FEProblemBase::setCouplingMatrix ( libMesh::CouplingMatrix cm,
const unsigned int  nl_sys_num 
)
inherited

Definition at line 6045 of file FEProblemBase.C.

6046 {
6047  // TODO: Deprecate method
6049  _cm[i].reset(cm);
6050 }
void setCoupling(Moose::CouplingType type)
Set the coupling between variables TODO: allow user-defined coupling.
std::vector< std::unique_ptr< libMesh::CouplingMatrix > > _cm
Coupling matrix for variables.

◆ setCurrentAlgebraicBndNodeRange()

void FEProblemBase::setCurrentAlgebraicBndNodeRange ( ConstBndNodeRange range)
inherited

Definition at line 9331 of file FEProblemBase.C.

9332 {
9333  if (!range)
9334  {
9336  return;
9337  }
9338 
9339  _current_algebraic_bnd_node_range = std::make_unique<ConstBndNodeRange>(*range);
9340 }
std::unique_ptr< ConstBndNodeRange > _current_algebraic_bnd_node_range

◆ 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 9309 of file FEProblemBase.C.

9310 {
9311  if (!range)
9312  {
9314  return;
9315  }
9316 
9317  _current_algebraic_elem_range = std::make_unique<ConstElemRange>(*range);
9318 }
std::unique_ptr< libMesh::ConstElemRange > _current_algebraic_elem_range

◆ setCurrentAlgebraicNodeRange()

void FEProblemBase::setCurrentAlgebraicNodeRange ( libMesh::ConstNodeRange range)
inherited

Definition at line 9320 of file FEProblemBase.C.

9321 {
9322  if (!range)
9323  {
9325  return;
9326  }
9327 
9328  _current_algebraic_node_range = std::make_unique<ConstNodeRange>(*range);
9329 }
std::unique_ptr< libMesh::ConstNodeRange > _current_algebraic_node_range

◆ setCurrentBoundaryID()

void FEProblemBase::setCurrentBoundaryID ( BoundaryID  bid,
const THREAD_ID  tid 
)
overridevirtualinherited

sets the current boundary ID in assembly

Reimplemented from SubProblem.

Definition at line 9245 of file FEProblemBase.C.

9246 {
9248  if (_displaced_problem)
9249  _displaced_problem->setCurrentBoundaryID(bid, tid);
9250 }
virtual void setCurrentBoundaryID(BoundaryID bid, const THREAD_ID tid)
sets the current boundary ID in assembly
Definition: SubProblem.C:789
std::shared_ptr< DisplacedProblem > _displaced_problem

◆ setCurrentExecuteOnFlag()

void FEProblemBase::setCurrentExecuteOnFlag ( const ExecFlagType flag)
inherited

Definition at line 4538 of file FEProblemBase.C.

Referenced by FEProblemBase::execute(), FEProblemBase::initialSetup(), and FEProblemBase::outputStep().

4539 {
4540  _current_execute_on_flag = flag;
4541 }
ExecFlagType _current_execute_on_flag
Current execute_on flag.

◆ 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 9262 of file FEProblemBase.C.

Referenced by FEProblemBase::computeLinearSystemSys(), LinearSystem::computeLinearSystemTags(), and FEProblemBase::solveLinearSystem().

9263 {
9264  mooseAssert(sys_num < _linear_systems.size(),
9265  "System number greater than the number of linear systems");
9266  _current_linear_sys = _linear_systems[sys_num].get();
9268 }
LinearSystem * _current_linear_sys
The current linear system that we are solving.
SolverSystem * _current_solver_sys
The current solver system.
std::vector< std::shared_ptr< LinearSystem > > _linear_systems
The vector of linear systems.

◆ 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 9236 of file FEProblemBase.C.

9237 {
9238  SubProblem::setCurrentLowerDElem(lower_d_elem, tid);
9239  if (_displaced_problem)
9240  _displaced_problem->setCurrentLowerDElem(
9241  lower_d_elem ? _displaced_mesh->elemPtr(lower_d_elem->id()) : nullptr, tid);
9242 }
virtual Elem * elemPtr(const dof_id_type i)
Definition: MooseMesh.C:3108
virtual void setCurrentLowerDElem(const Elem *const lower_d_elem, const THREAD_ID tid)
Set the current lower dimensional element.
Definition: SubProblem.C:1374
dof_id_type id() const
std::shared_ptr< DisplacedProblem > _displaced_problem
MooseMesh * _displaced_mesh

◆ 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 689 of file SubProblem.h.

Referenced by FEProblemBase::computeResidualAndJacobian(), and FEProblemBase::resetState().

690  {
691  _currently_computing_jacobian = currently_computing_jacobian;
692  }
bool _currently_computing_jacobian
Flag to determine whether the problem is currently computing Jacobian.
Definition: SubProblem.h:1096

◆ 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 8931 of file FEProblemBase.C.

Referenced by FEProblemBase::computeResidualAndJacobian(), NonlinearSystemBase::computeResidualTags(), and FEProblemBase::resetState().

8932 {
8933  if (_displaced_problem)
8934  _displaced_problem->setCurrentlyComputingResidual(currently_computing_residual);
8935  _currently_computing_residual = currently_computing_residual;
8936 }
std::shared_ptr< DisplacedProblem > _displaced_problem
bool _currently_computing_residual
Whether the residual is being evaluated.
Definition: SubProblem.h:1105

◆ 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 1493 of file SubProblem.h.

Referenced by FEProblemBase::computeResidualAndJacobian(), and FEProblemBase::resetState().

1495 {
1496  _currently_computing_residual_and_jacobian = currently_computing_residual_and_jacobian;
1497 }
bool _currently_computing_residual_and_jacobian
Flag to determine whether the problem is currently computing the residual and Jacobian.
Definition: SubProblem.h:1099

◆ setCurrentNonlinearSystem()

void FEProblemBase::setCurrentNonlinearSystem ( const unsigned int  nl_sys_num)
inherited

Definition at line 9253 of file FEProblemBase.C.

Referenced by FEProblemBase::computeJacobian(), EigenProblem::computeJacobianAB(), EigenProblem::computeJacobianBlocks(), FEProblemBase::computeJacobianBlocks(), NonlinearSystemBase::computeJacobianInternal(), EigenProblem::computeJacobianTag(), EigenProblem::computeMatricesTags(), EigenProblem::computeResidualTag(), NonlinearSystemBase::computeResidualTags(), FEProblem::FEProblem(), EigenProblem::solve(), and FEProblemBase::solve().

9254 {
9255  mooseAssert(nl_sys_num < _nl.size(),
9256  "System number greater than the number of nonlinear systems");
9257  _current_nl_sys = _nl[nl_sys_num].get();
9259 }
std::vector< std::shared_ptr< NonlinearSystemBase > > _nl
The nonlinear systems.
NonlinearSystemBase * _current_nl_sys
The current nonlinear system that we are solving.
SolverSystem * _current_solver_sys
The current solver system.

◆ 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 3248 of file FEProblemBase.h.

Referenced by FEProblemBase::computeResidualAndJacobian(), FEProblemBase::computeResidualTags(), and CrankNicolson::init().

3249 {
3251 }
std::vector< VectorTag > _current_residual_vector_tags
A data member to store the residual vector tag(s) passed into computeResidualTag(s).
std::vector< VectorTag > getVectorTags(const std::set< TagID > &tag_ids) const
Definition: SubProblem.C:172

◆ setCurrentSubdomainID()

void FEProblemBase::setCurrentSubdomainID ( const Elem elem,
const THREAD_ID  tid 
)
overridevirtualinherited

Implements SubProblem.

Definition at line 1762 of file FEProblemBase.C.

Referenced by NonlinearSystemBase::constraintJacobians(), NonlinearSystemBase::constraintResiduals(), MultiAppVariableValueSamplePostprocessorTransfer::execute(), ElementalVariableValue::execute(), and ComputeInitialConditionThread::operator()().

1763 {
1764  SubdomainID did = elem->subdomain_id();
1765  for (const auto i : index_range(_solver_systems))
1766  {
1767  _assembly[tid][i]->setCurrentSubdomainID(did);
1768  if (_displaced_problem &&
1770  _displaced_problem->assembly(tid, i).setCurrentSubdomainID(did);
1771  }
1772 }
bool _reinit_displaced_elem
Whether to call DisplacedProblem::reinitElem when this->reinitElem is called.
bool _reinit_displaced_neighbor
Whether to call DisplacedProblem::reinitNeighbor when this->reinitNeighbor is called.
std::vector< std::shared_ptr< SolverSystem > > _solver_systems
Combined container to base pointer of every solver system.
std::vector< std::vector< std::unique_ptr< Assembly > > > _assembly
The Assembly objects.
bool _reinit_displaced_face
Whether to call DisplacedProblem::reinitElemFace when this->reinitElemFace is called.
subdomain_id_type subdomain_id() const
std::shared_ptr< DisplacedProblem > _displaced_problem
auto index_range(const T &sizable)

◆ setErrorOnJacobianNonzeroReallocation()

void FEProblemBase::setErrorOnJacobianNonzeroReallocation ( bool  state)
inlineinherited

Definition at line 1928 of file FEProblemBase.h.

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

◆ 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 6397 of file FEProblemBase.C.

Referenced by ComputeThreadedGeneralUserObjectsThread::caughtMooseException(), ThreadedNodeLoop< ConstBndNodeRange, ConstBndNodeRange::const_iterator >::caughtMooseException(), ThreadedFaceLoop< RangeType >::caughtMooseException(), NonlinearSystemBase::computeDamping(), AuxiliarySystem::computeElementalVarsHelper(), AuxiliarySystem::computeMortarNodalVars(), FEProblemBase::handleException(), ComputeMortarFunctor::operator()(), and DisplacedProblem::updateMesh().

6398 {
6399  _has_exception = true;
6400  _exception_message = message;
6401 }
bool _has_exception
Whether or not an exception has occurred.
std::string _exception_message
The error message to go with an exception.

◆ setExecutionPrinting()

void FEProblemBase::setExecutionPrinting ( const ExecFlagEnum print_exec)
inlineinherited

Definition at line 2392 of file FEProblemBase.h.

2392 { _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 2379 of file FEProblemBase.h.

Referenced by Terminator::execute().

void setFailNextSystemConvergenceCheck()
Tell the problem that the system(s) cannot be considered converged next time convergence is checked...

◆ setFailNextSystemConvergenceCheck()

void FEProblemBase::setFailNextSystemConvergenceCheck ( )
inlineinherited

Tell the problem that the system(s) cannot be considered converged next time convergence is checked.

Definition at line 2381 of file FEProblemBase.h.

Referenced by FEProblemBase::setFailNextNonlinearConvergenceCheck().

bool _fail_next_system_convergence_check

◆ setFunctorOutput()

void SubProblem::setFunctorOutput ( bool  set_output)
inlineinherited

Setter for debug functor output.

Definition at line 924 of file SubProblem.h.

924 { _output_functors = set_output; }
bool _output_functors
Whether to output a list of the functors used and requested (currently only at initialSetup) ...
Definition: SubProblem.h:1164

◆ setIgnoreZerosInJacobian()

void FEProblemBase::setIgnoreZerosInJacobian ( bool  state)
inlineinherited

Set whether the zeros in the Jacobian should be dropped from the sparsity pattern.

Definition at line 1951 of file FEProblemBase.h.

1951 { _ignore_zeros_in_jacobian = state; }
bool _ignore_zeros_in_jacobian
Whether to ignore zeros in the Jacobian, thereby leading to a reduced sparsity pattern.

◆ setInputParametersFEProblem()

void FEProblem::setInputParametersFEProblem ( InputParameters parameters)
overridevirtualinherited

Reimplemented from FEProblemBase.

Definition at line 120 of file FEProblem.C.

121 {
122  // set _fe_problem
124  // set _fe_problem
125  parameters.set<FEProblem *>("_fe_problem") = this;
126 }
virtual void setInputParametersFEProblem(InputParameters &parameters)
Specialization of SubProblem for solving nonlinear equations plus auxiliary equations.
Definition: FEProblem.h:20
T & set(const std::string &name, bool quiet_mode=false)
Returns a writable reference to the named parameters.
const InputParameters & parameters() const
Get the parameters of the object.

◆ setKernelCoverageCheck() [1/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 1802 of file FEProblemBase.h.

1802 { _kernel_coverage_check = mode; }
CoverageCheckMode _kernel_coverage_check
Determines whether and which subdomains are to be checked to ensure that they have an active kernel...

◆ setKernelCoverageCheck() [2/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 1808 of file FEProblemBase.h.

1809  {
1811  }
CoverageCheckMode _kernel_coverage_check
Determines whether and which subdomains are to be checked to ensure that they have an active kernel...

◆ 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 9089 of file FEProblemBase.C.

Referenced by FEProblemSolve::FEProblemSolve().

9090 {
9091  if (convergence_names.size() != numLinearSystems())
9092  paramError("linear_convergence", "There must be one convergence object per linear system");
9093  _linear_convergence_names = convergence_names;
9094 }
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 ...
std::optional< std::vector< ConvergenceName > > _linear_convergence_names
Linear system(s) convergence name(s) (if any)
virtual std::size_t numLinearSystems() const override

◆ setMaterialCoverageCheck() [1/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 1819 of file FEProblemBase.h.

1819 { _material_coverage_check = mode; }
CoverageCheckMode _material_coverage_check
Determines whether and which subdomains are to be checked to ensure that they have an active material...

◆ setMaterialCoverageCheck() [2/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 1827 of file FEProblemBase.h.

1828  {
1830  }
CoverageCheckMode _material_coverage_check
Determines whether and which subdomains are to be checked to ensure that they have an active material...

◆ setMultiAppFixedPointConvergenceName()

void FEProblemBase::setMultiAppFixedPointConvergenceName ( const ConvergenceName &  convergence_name)
inherited

Sets the MultiApp fixed point convergence object name if there is one.

Definition at line 9067 of file FEProblemBase.C.

Referenced by FixedPointSolve::FixedPointSolve().

9068 {
9069  _multiapp_fixed_point_convergence_name = convergence_name;
9070 }
std::optional< ConvergenceName > _multiapp_fixed_point_convergence_name
MultiApp fixed point convergence name.

◆ setNeedToAddDefaultMultiAppFixedPointConvergence()

void FEProblemBase::setNeedToAddDefaultMultiAppFixedPointConvergence ( )
inlineinherited

Sets _need_to_add_default_multiapp_fixed_point_convergence to true.

Definition at line 652 of file FEProblemBase.h.

Referenced by FixedPointSolve::FixedPointSolve().

653  {
655  }
bool _need_to_add_default_multiapp_fixed_point_convergence
Flag that the problem needs to add the default fixed point convergence.

◆ setNeedToAddDefaultNonlinearConvergence()

void FEProblemBase::setNeedToAddDefaultNonlinearConvergence ( )
inlineinherited

Sets _need_to_add_default_nonlinear_convergence to true.

Definition at line 647 of file FEProblemBase.h.

Referenced by FEProblemSolve::FEProblemSolve().

648  {
650  }
bool _need_to_add_default_nonlinear_convergence
Flag that the problem needs to add the default nonlinear convergence.

◆ setNeighborSubdomainID() [1/2]

virtual void FEProblemBase::setNeighborSubdomainID ( const Elem *  elem,
unsigned int  side,
const THREAD_ID  tid 
)
overridevirtualinherited

◆ setNeighborSubdomainID() [2/2]

virtual void FEProblemBase::setNeighborSubdomainID ( const Elem *  elem,
const THREAD_ID  tid 
)
virtualinherited

◆ 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 9058 of file FEProblemBase.C.

Referenced by FEProblemSolve::FEProblemSolve().

9059 {
9060  if (convergence_names.size() != numNonlinearSystems())
9061  paramError("nonlinear_convergence",
9062  "There must be one convergence object per nonlinear system");
9063  _nonlinear_convergence_names = convergence_names;
9064 }
virtual std::size_t numNonlinearSystems() const override
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 ...
std::optional< std::vector< ConvergenceName > > _nonlinear_convergence_names
Nonlinear system(s) convergence name(s)

◆ setNonlocalCouplingMatrix()

void FEProblemBase::setNonlocalCouplingMatrix ( )
inherited

Set custom coupling matrix for variables requiring nonlocal contribution.

Definition at line 6070 of file FEProblemBase.C.

Referenced by FEProblemBase::initialSetup().

6071 {
6072  TIME_SECTION("setNonlocalCouplingMatrix", 5, "Setting Nonlocal Coupling Matrix");
6073 
6074  if (_nl.size() > 1)
6075  mooseError("Nonlocal kernels are weirdly stored on the FEProblem so we don't currently support "
6076  "multiple nonlinear systems with nonlocal kernels.");
6077 
6078  for (const auto nl_sys_num : index_range(_nl))
6079  {
6080  auto & nl = _nl[nl_sys_num];
6081  auto & nonlocal_cm = _nonlocal_cm[nl_sys_num];
6082  unsigned int n_vars = nl->nVariables();
6083  nonlocal_cm.resize(n_vars);
6084  const auto & vars = nl->getVariables(0);
6085  const auto & nonlocal_kernel = _nonlocal_kernels.getObjects();
6086  const auto & nonlocal_integrated_bc = _nonlocal_integrated_bcs.getObjects();
6087  for (const auto & ivar : vars)
6088  {
6089  for (const auto & kernel : nonlocal_kernel)
6090  {
6091  for (unsigned int i = ivar->number(); i < ivar->number() + ivar->count(); ++i)
6092  if (i == kernel->variable().number())
6093  for (const auto & jvar : vars)
6094  {
6095  const auto it = _var_dof_map.find(jvar->name());
6096  if (it != _var_dof_map.end())
6097  {
6098  unsigned int j = jvar->number();
6099  nonlocal_cm(i, j) = 1;
6100  }
6101  }
6102  }
6103  for (const auto & integrated_bc : nonlocal_integrated_bc)
6104  {
6105  for (unsigned int i = ivar->number(); i < ivar->number() + ivar->count(); ++i)
6106  if (i == integrated_bc->variable().number())
6107  for (const auto & jvar : vars)
6108  {
6109  const auto it = _var_dof_map.find(jvar->name());
6110  if (it != _var_dof_map.end())
6111  {
6112  unsigned int j = jvar->number();
6113  nonlocal_cm(i, j) = 1;
6114  }
6115  }
6116  }
6117  }
6118  }
6119 }
char ** vars
std::map< std::string, std::vector< dof_id_type > > _var_dof_map
Definition: SubProblem.h:674
std::vector< std::shared_ptr< NonlinearSystemBase > > _nl
The nonlinear systems.
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...
unsigned int n_vars
void mooseError(Args &&... args) const
Emits an error prefixed with object name and type.
std::vector< libMesh::CouplingMatrix > _nonlocal_cm
nonlocal coupling matrix
auto index_range(const T &sizable)
MooseObjectWarehouse< IntegratedBCBase > _nonlocal_integrated_bcs
nonlocal integrated_bcs
MooseObjectWarehouse< KernelBase > _nonlocal_kernels
nonlocal kernels

◆ setParallelBarrierMessaging()

void FEProblemBase::setParallelBarrierMessaging ( bool  flag)
inlineinherited

Toggle parallel barrier messaging (defaults to on).

Definition at line 1835 of file FEProblemBase.h.

1835 { _parallel_barrier_messaging = flag; }
bool _parallel_barrier_messaging
Whether or not information about how many transfers have completed is printed.

◆ 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 4396 of file FEProblemBase.C.

Referenced by MultiAppPostprocessorTransfer::execute(), PIDTransientControl::execute(), FEProblemBase::joinAndFinalize(), SecantSolve::transformPostprocessors(), SteffensenSolve::transformPostprocessors(), and PicardSolve::transformPostprocessors().

4399 {
4401  PostprocessorReporterName(name), value, t_index);
4402 }
virtual const std::string & name() const
Get the name of the class.
Definition: MooseBase.h:57
ReporterData _reporter_data
Real value(unsigned n, unsigned alpha, unsigned beta, Real x)
Real PostprocessorValue
various MOOSE typedefs
Definition: MooseTypes.h:202
void setReporterValue(const ReporterName &reporter_name, const T &value, const std::size_t time_index=0)
Method for setting Reporter values that already exist.
Definition: ReporterData.h:481
A ReporterName that represents a Postprocessor.
Definition: ReporterName.h:134

◆ 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 3774 of file FEProblemBase.C.

3775 {
3776  if (_ignore_zeros_in_jacobian && preserve)
3777  paramWarning(
3778  "ignore_zeros_in_jacobian",
3779  "We likely cannot preserve the sparsity pattern if ignoring zeros in the Jacobian, which "
3780  "leads to removing those entries from the Jacobian sparsity pattern");
3782 }
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...
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...

◆ 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 1896 of file FEProblemBase.C.

Referenced by NonlinearSystemBase::constraintResiduals().

1897 {
1898  _assembly[tid][_current_nl_sys->number()]->setResidual(
1899  residual,
1901  getVectorTag(_nl[_current_nl_sys->number()]->residualVectorTag()));
1902  if (_displaced_problem)
1903  _displaced_problem->setResidual(residual, tid);
1904 }
std::vector< std::shared_ptr< NonlinearSystemBase > > _nl
The nonlinear systems.
NonlinearSystemBase * _current_nl_sys
The current nonlinear system that we are solving.
unsigned int number() const
Gets the number of this system.
Definition: SystemBase.C:1159
std::vector< std::vector< std::unique_ptr< Assembly > > > _assembly
The Assembly objects.
std::shared_ptr< DisplacedProblem > _displaced_problem
virtual const VectorTag & getVectorTag(const TagID tag_id) const
Get a VectorTag from a TagID.
Definition: SubProblem.C:161
Key structure for APIs manipulating global vectors/matrices.
Definition: Assembly.h:815

◆ 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 1907 of file FEProblemBase.C.

1908 {
1909  _assembly[tid][_current_nl_sys->number()]->setResidualNeighbor(
1911  if (_displaced_problem)
1912  _displaced_problem->setResidualNeighbor(residual, tid);
1913 }
NonlinearSystemBase * _current_nl_sys
The current nonlinear system that we are solving.
unsigned int number() const
Gets the number of this system.
Definition: SystemBase.C:1159
TagID residualVectorTag() const override
std::vector< std::vector< std::unique_ptr< Assembly > > > _assembly
The Assembly objects.
std::shared_ptr< DisplacedProblem > _displaced_problem
virtual const VectorTag & getVectorTag(const TagID tag_id) const
Get a VectorTag from a TagID.
Definition: SubProblem.C:161
Key structure for APIs manipulating global vectors/matrices.
Definition: Assembly.h:815

◆ 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 8590 of file FEProblemBase.C.

Referenced by Executioner::Executioner(), and FEProblemBase::FEProblemBase().

8591 {
8592  if (_app.isRecovering())
8593  {
8594  mooseInfo("Restart file ", file_name, " is NOT being used since we are performing recovery.");
8595  }
8596  else
8597  {
8598  _app.setRestart(true);
8599  _app.setRestartRecoverFileBase(file_name);
8600  mooseInfo("Using ", file_name, " for restart.");
8601  }
8602 }
void mooseInfo(Args &&... args) const
void setRestartRecoverFileBase(const std::string &file_base)
mutator for recover_base (set by RecoverBaseAction)
Definition: MooseApp.h:539
void setRestart(bool value)
Sets the restart/recover flags.
Definition: MooseApp.C:2851
MooseApp & _app
The MOOSE application this is associated with.
Definition: MooseBase.h:84
bool isRecovering() const
Whether or not this is a "recover" calculation.
Definition: MooseApp.C:1769

◆ 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 2090 of file FEProblemBase.h.

Referenced by FEProblemSolve::FEProblemSolve().

2091  {
2092  _snesmf_reuse_base = reuse, _snesmf_reuse_base_set_by_user = set_by_user;
2093  }
bool _snesmf_reuse_base_set_by_user
If or not _snesmf_reuse_base is set by user.
bool _snesmf_reuse_base
If or not to resuse the base vector for matrix-free calculation.

◆ 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 2138 of file FEProblemBase.h.

Referenced by CentralDifference::CentralDifference(), and NewmarkBeta::NewmarkBeta().

2139  {
2140  _u_dotdot_old_requested = u_dotdot_old_requested;
2141  }
bool _u_dotdot_old_requested
Whether old solution second time derivative needs to be stored.

◆ 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 2126 of file FEProblemBase.h.

Referenced by CentralDifference::CentralDifference(), and NewmarkBeta::NewmarkBeta().

2127  {
2128  _u_dotdot_requested = u_dotdot_requested;
2129  }
bool _u_dotdot_requested
Whether solution second time derivative needs to be stored.

◆ 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 2132 of file FEProblemBase.h.

Referenced by CentralDifference::CentralDifference(), and NewmarkBeta::NewmarkBeta().

2133  {
2134  _u_dot_old_requested = u_dot_old_requested;
2135  }
bool _u_dot_old_requested
Whether old solution time derivative needs to be stored.

◆ setUDotRequested()

virtual void FEProblemBase::setUDotRequested ( const bool  u_dot_requested)
inlinevirtualinherited

Set boolean flag to true to store solution time derivative.

Definition at line 2123 of file FEProblemBase.h.

Referenced by TimeIntegrator::TimeIntegrator().

2123 { _u_dot_requested = u_dot_requested; }
bool _u_dot_requested
Whether solution time derivative needs to be stored.

◆ setupDampers()

void FEProblemBase::setupDampers ( )
inherited

Definition at line 5140 of file FEProblemBase.C.

5141 {
5142  for (auto & nl : _nl)
5143  nl->setupDampers();
5144 }
std::vector< std::shared_ptr< NonlinearSystemBase > > _nl
The nonlinear systems.

◆ setUseNonlinear()

virtual void FEProblem::setUseNonlinear ( bool  use_nonlinear)
inlinevirtualinherited

Definition at line 28 of file FEProblem.h.

28 { _use_nonlinear = use_nonlinear; }
bool _use_nonlinear
Definition: FEProblem.h:38

◆ setVariableAllDoFMap()

void FEProblemBase::setVariableAllDoFMap ( const std::vector< const MooseVariableFEBase *> &  moose_vars)
inherited

Definition at line 1670 of file FEProblemBase.C.

Referenced by FEProblemBase::initialSetup(), and FEProblemBase::meshChanged().

1671 {
1672  for (unsigned int i = 0; i < moose_vars.size(); ++i)
1673  {
1674  VariableName var_name = moose_vars[i]->name();
1675  auto & sys = _solver_systems[moose_vars[i]->sys().number()];
1676  sys->setVariableGlobalDoFs(var_name);
1677  _var_dof_map[var_name] = sys->getVariableGlobalDoFs();
1678  }
1679 }
std::vector< std::shared_ptr< SolverSystem > > _solver_systems
Combined container to base pointer of every solver system.
std::map< std::string, std::vector< dof_id_type > > _var_dof_map
Definition: SubProblem.h:674

◆ 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 4422 of file FEProblemBase.C.

4426 {
4428  VectorPostprocessorReporterName(object_name, vector_name), value, t_index);
4429 }
A ReporterName that represents a VectorPostprocessor.
Definition: ReporterName.h:143
ReporterData _reporter_data
Real value(unsigned n, unsigned alpha, unsigned beta, Real x)
void setReporterValue(const ReporterName &reporter_name, const T &value, const std::size_t time_index=0)
Method for setting Reporter values that already exist.
Definition: ReporterData.h:481
std::vector< Real > VectorPostprocessorValue
Definition: MooseTypes.h:203

◆ setVerboseProblem()

void FEProblemBase::setVerboseProblem ( bool  verbose)
inherited

Make the problem be verbose.

Definition at line 9228 of file FEProblemBase.C.

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

9229 {
9230  _verbose_setup = verbose ? "true" : "false";
9231  _verbose_multiapps = verbose;
9232  _verbose_restore = verbose;
9233 }
bool _verbose_restore
Whether or not to be verbose on solution restoration post a failed time step.
MooseEnum _verbose_setup
Whether or not to be verbose during setup.
bool _verbose_multiapps
Whether or not to be verbose with multiapps.

◆ shouldPrintExecution()

bool FEProblemBase::shouldPrintExecution ( const THREAD_ID  tid) const
inherited

Check whether the problem should output execution orders at this time.

Definition at line 9170 of file FEProblemBase.C.

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

9171 {
9172  // For now, only support printing from thread 0
9173  if (tid != 0)
9174  return false;
9175 
9178  return true;
9179  else
9180  return false;
9181 }
ExecFlagType _current_execute_on_flag
Current execute_on flag.
const ExecFlagType EXEC_ALWAYS
Definition: Moose.C:47
ExecFlagEnum _print_execution_on
When to print the execution of loops.
bool isValueSet(const std::string &value) const
Methods for seeing if a value is set in the MultiMooseEnum.

◆ shouldSolve()

bool FEProblemBase::shouldSolve ( ) const
inlineinherited

Definition at line 2174 of file FEProblemBase.h.

Referenced by MFEMSteady::execute(), and FEProblemSolve::solve().

2174 { return _solve; }
const bool & _solve
Whether or not to actually solve the nonlinear system.

◆ 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 7716 of file FEProblemBase.C.

Referenced by FEProblemBase::computePostCheck(), and NonlinearSystem::solve().

7717 {
7718  return false;
7719 }

◆ showInvalidSolutionConsole()

bool FEProblemBase::showInvalidSolutionConsole ( ) const
inlineinherited

Whether or not to print out the invalid solutions summary table in console.

Definition at line 1968 of file FEProblemBase.h.

Referenced by SolverSystem::checkInvalidSolution().

const bool _show_invalid_solution_console

◆ sizeZeroes()

void FEProblemBase::sizeZeroes ( unsigned int  size,
const THREAD_ID  tid 
)
virtualinherited

Definition at line 2098 of file FEProblemBase.C.

2099 {
2100  mooseDoOnce(mooseWarning(
2101  "This function is deprecated and no longer performs any function. Please do not call it."));
2102 }
void mooseWarning(Args &&... args) const
Emits a warning prefixed with object name and type.

◆ 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 2103 of file FEProblemBase.h.

Referenced by FEProblemSolve::FEProblemSolve().

2104  {
2105  _skip_exception_check = skip_exception_check;
2106  }
bool _skip_exception_check
If or not skip &#39;exception and stop solve&#39;.

◆ solve()

void FEProblemBase::solve ( const unsigned int  nl_sys_num)
virtualinherited

Reimplemented in DumpObjectsProblem, EigenProblem, and ExternalProblem.

Definition at line 6335 of file FEProblemBase.C.

Referenced by EigenExecutionerBase::inversePowerIteration(), EigenExecutionerBase::nonlinearSolve(), FEProblemSolve::solve(), and AB2PredictorCorrector::step().

6336 {
6337  TIME_SECTION("solve", 1, "Solving", false);
6338 
6339  setCurrentNonlinearSystem(nl_sys_num);
6340 
6341  // This prevents stale dof indices from lingering around and possibly leading to invalid reads
6342  // and writes. Dof indices may be made stale through operations like mesh adaptivity
6344  if (_displaced_problem)
6345  _displaced_problem->clearAllDofIndices();
6346 
6347  // Setup the output system for printing linear/nonlinear iteration information and some solver
6348  // settings, including setting matrix prefixes. This must occur before petscSetOptions
6350 
6351 #if PETSC_RELEASE_LESS_THAN(3, 12, 0)
6353  _petsc_options, _solver_params); // Make sure the PETSc options are setup for this app
6354 #else
6355  // Now this database will be the default
6356  // Each app should have only one database
6357  if (!_app.isUltimateMaster())
6358  LibmeshPetscCall(PetscOptionsPush(_petsc_option_data_base));
6359  // We did not add PETSc options to database yet
6361  {
6362  // Insert options for all systems all at once
6365  }
6366 #endif
6367 
6368  // set up DM which is required if use a field split preconditioner
6369  // We need to setup DM every "solve()" because libMesh destroy SNES after solve()
6370  // Do not worry, DM setup is very cheap
6372 
6374 
6375  // reset flag so that residual evaluation does not get skipped
6376  // and the next non-linear iteration does not automatically fail with
6377  // "DIVERGED_NANORINF", when we throw an exception and stop solve
6379 
6380  if (_solve)
6381  {
6384  }
6385 
6386  // sync solutions in displaced problem
6387  if (_displaced_problem)
6388  _displaced_problem->syncSolutions();
6389 
6390 #if !PETSC_RELEASE_LESS_THAN(3, 12, 0)
6391  if (!_app.isUltimateMaster())
6392  LibmeshPetscCall(PetscOptionsPop());
6393 #endif
6394 }
virtual void initPetscOutputAndSomeSolverSettings()
Reinitialize PETSc output for proper linear/nonlinear iteration display.
bool isUltimateMaster() const
Whether or not this app is the ultimate master app.
Definition: MooseApp.h:847
std::vector< SolverParams > _solver_params
void setupDM()
Setup the PETSc DM object (when appropriate)
bool _is_petsc_options_inserted
If or not PETSc options have been added to database.
PetscOptions _petsc_option_data_base
void clearAllDofIndices()
Clear dof indices from variables in nl and aux systems.
Definition: SubProblem.C:1171
void update()
Update the system (doing libMesh magic)
Definition: SystemBase.C:1245
const bool & _solve
Whether or not to actually solve the nonlinear system.
NonlinearSystemBase * _current_nl_sys
The current nonlinear system that we are solving.
void setCurrentNonlinearSystem(const unsigned int nl_sys_num)
MooseApp & _app
The MOOSE application this is associated with.
Definition: MooseBase.h:84
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.
Definition: PetscSupport.C:272
virtual void solve() override=0
Solve the system (using libMesh magic)
std::shared_ptr< DisplacedProblem > _displaced_problem
bool _fail_next_system_convergence_check
virtual void possiblyRebuildGeomSearchPatches()
Moose::PetscSupport::PetscOptions _petsc_options
PETSc option storage.

◆ 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 6493 of file FEProblemBase.C.

Referenced by FEProblemSolve::solve().

6495 {
6496  TIME_SECTION("solve", 1, "Solving", false);
6497 
6498  setCurrentLinearSystem(linear_sys_num);
6499 
6500  const Moose::PetscSupport::PetscOptions & options = po ? *po : _petsc_options;
6501  auto & solver_params = _solver_params[numNonlinearSystems() + linear_sys_num];
6502 
6503  // Set custom convergence criteria
6505 
6506 #if PETSC_RELEASE_LESS_THAN(3, 12, 0)
6507  LibmeshPetscCall(Moose::PetscSupport::petscSetOptions(
6508  options, solver_params)); // Make sure the PETSc options are setup for this app
6509 #else
6510  // Now this database will be the default
6511  // Each app should have only one database
6512  if (!_app.isUltimateMaster())
6513  LibmeshPetscCall(PetscOptionsPush(_petsc_option_data_base));
6514 
6515  // We did not add PETSc options to database yet
6517  {
6518  Moose::PetscSupport::petscSetOptions(options, solver_params, this);
6520  }
6521 #endif
6522 
6523  if (_solve)
6525 
6526 #if !PETSC_RELEASE_LESS_THAN(3, 12, 0)
6527  if (!_app.isUltimateMaster())
6528  LibmeshPetscCall(PetscOptionsPop());
6529 #endif
6530 }
bool isUltimateMaster() const
Whether or not this app is the ultimate master app.
Definition: MooseApp.h:847
virtual std::size_t numNonlinearSystems() const override
void petscSetDefaults(FEProblemBase &problem)
Sets the default options for PETSc.
Definition: PetscSupport.C:488
std::vector< SolverParams > _solver_params
bool _is_petsc_options_inserted
If or not PETSc options have been added to database.
A struct for storing the various types of petsc options and values.
Definition: PetscSupport.h:39
PetscOptions _petsc_option_data_base
const bool & _solve
Whether or not to actually solve the nonlinear system.
LinearSystem * _current_linear_sys
The current linear system that we are solving.
MooseApp & _app
The MOOSE application this is associated with.
Definition: MooseBase.h:84
virtual void solve() override
Solve the system (using libMesh magic)
Definition: LinearSystem.C:274
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.
Definition: PetscSupport.C:272
void setCurrentLinearSystem(unsigned int sys_num)
Set the current linear system pointer.
Moose::PetscSupport::PetscOptions _petsc_options
PETSc option storage.

◆ solverParams() [1/2]

SolverParams & FEProblemBase::solverParams ( unsigned int  solver_sys_num = 0)
inherited

Get the solver parameters.

Definition at line 8622 of file FEProblemBase.C.

Referenced by NonlinearEigenSystem::attachPreconditioner(), SolverSystem::compute(), SlepcEigenSolverConfiguration::configure_solver(), Eigenvalue::Eigenvalue(), ExplicitTimeIntegrator::ExplicitTimeIntegrator(), FEProblemSolve::FEProblemSolve(), EigenProblem::init(), ExplicitTimeIntegrator::init(), FEProblemBase::init(), EigenProblem::isNonlinearEigenvalueSolver(), Moose::SlepcSupport::mooseSlepcEigenFormFunctionA(), Moose::SlepcSupport::mooseSlepcEigenFormFunctionAB(), Moose::SlepcSupport::mooseSlepcEigenFormFunctionB(), Moose::SlepcSupport::mooseSlepcEigenFormJacobianA(), MooseStaticCondensationPreconditioner::MooseStaticCondensationPreconditioner(), ConsoleUtils::outputExecutionInformation(), Moose::PetscSupport::petscSetDefaults(), PhysicsBasedPreconditioner::PhysicsBasedPreconditioner(), Eigenvalue::prepareSolverOptions(), NonlinearSystem::residualAndJacobianTogether(), Moose::SlepcSupport::setEigenProblemSolverParams(), Moose::PetscSupport::setLineSearchFromParams(), Moose::PetscSupport::setMFFDTypeFromParams(), Moose::PetscSupport::setSinglePetscOption(), Moose::PetscSupport::setSolveTypeFromParams(), NonlinearSystemBase::shouldEvaluatePreSMOResidual(), EigenProblem::solve(), FEProblemBase::solverParams(), EigenProblem::solverTypeString(), FEProblemBase::solverTypeString(), and Moose::SlepcSupport::storeSolveType().

8623 {
8624  mooseAssert(solver_sys_num < numSolverSystems(),
8625  "Solver system number '" << solver_sys_num << "' is out of bounds. We have '"
8626  << numSolverSystems() << "' solver systems");
8627  return _solver_params[solver_sys_num];
8628 }
std::vector< SolverParams > _solver_params
virtual std::size_t numSolverSystems() const override

◆ solverParams() [2/2]

const SolverParams & FEProblemBase::solverParams ( unsigned int  solver_sys_num = 0) const
inherited

const version

Definition at line 8631 of file FEProblemBase.C.

8632 {
8633  return const_cast<FEProblemBase *>(this)->solverParams(solver_sys_num);
8634 }
Specialization of SubProblem for solving nonlinear equations plus auxiliary equations.
SolverParams & solverParams(unsigned int solver_sys_num=0)
Get the solver parameters.

◆ 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 6301 of file FEProblemBase.C.

Referenced by FEProblemBase::addVariable(), MultiSystemSolveObject::MultiSystemSolveObject(), and DisplacedProblem::solverSysNum().

6302 {
6303  std::istringstream ss(solver_sys_name);
6304  unsigned int solver_sys_num;
6305  if (!(ss >> solver_sys_num) || !ss.eof())
6306  {
6307  const auto & search = _solver_sys_name_to_num.find(solver_sys_name);
6308  if (search == _solver_sys_name_to_num.end())
6309  mooseError("The solver system number was requested for system '" + solver_sys_name,
6310  "' but this system does not exist in the Problem. Systems can be added to the "
6311  "problem using the 'nl_sys_names' parameter.\nSystems in the Problem: " +
6313  solver_sys_num = search->second;
6314  }
6315 
6316  return solver_sys_num;
6317 }
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::string stringify(const T &t)
conversion to string
Definition: Conversion.h:64
void mooseError(Args &&... args) const
Emits an error prefixed with object name and type.

◆ 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 6533 of file FEProblemBase.C.

6534 {
6535  if (_solve)
6536  return _solver_systems[sys_num]->converged();
6537  else
6538  return true;
6539 }
std::vector< std::shared_ptr< SolverSystem > > _solver_systems
Combined container to base pointer of every solver system.
const bool & _solve
Whether or not to actually solve the nonlinear system.

◆ 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 9349 of file FEProblemBase.C.

Referenced by ConsoleUtils::outputExecutionInformation().

9350 {
9351  return Moose::stringify(solverParams(solver_sys_num)._type);
9352 }
const std::string _type
The type of this class.
Definition: MooseBase.h:87
std::string stringify(const T &t)
conversion to string
Definition: Conversion.h:64
SolverParams & solverParams(unsigned int solver_sys_num=0)
Get the solver parameters.

◆ startedInitialSetup()

virtual bool FEProblemBase::startedInitialSetup ( )
inlinevirtualinherited

Returns true if we are in or beyond the initialSetup stage.

Definition at line 509 of file FEProblemBase.h.

Referenced by NEML2ModelExecutor::checkExecutionStage(), MaterialBase::checkExecutionStage(), and MaterialPropertyInterface::checkExecutionStage().

509 { return _started_initial_setup; }
bool _started_initial_setup
At or beyond initialSteup stage.

◆ 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 615 of file SubProblem.C.

Referenced by MaterialPropertyInterface::checkMaterialProperty().

618 {
619  _map_boundary_material_props_check[boundary_id].insert(std::make_pair(requestor, name));
620 }
std::map< BoundaryID, std::multimap< std::string, std::string > > _map_boundary_material_props_check
Definition: SubProblem.h:1071
virtual const std::string & name() const
Get the name of the class.
Definition: MooseBase.h:57

◆ 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 589 of file SubProblem.C.

Referenced by MaterialBase::registerPropName().

590 {
591  _map_boundary_material_props[boundary_id].insert(name);
592 }
virtual const std::string & name() const
Get the name of the class.
Definition: MooseBase.h:57
std::map< BoundaryID, std::set< std::string > > _map_boundary_material_props
Map for boundary material properties (boundary_id -> list of properties)
Definition: SubProblem.h:1055

◆ 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 601 of file SubProblem.C.

Referenced by MaterialBase::storeBoundaryZeroMatProp().

602 {
603  _zero_boundary_material_props[boundary_id].insert(name);
604 }
virtual const std::string & name() const
Get the name of the class.
Definition: MooseBase.h:57
std::map< BoundaryID, std::set< MaterialPropertyName > > _zero_boundary_material_props
Definition: SubProblem.h:1059

◆ 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 607 of file SubProblem.C.

Referenced by MaterialPropertyInterface::checkMaterialProperty().

610 {
611  _map_block_material_props_check[block_id].insert(std::make_pair(requestor, name));
612 }
virtual const std::string & name() const
Get the name of the class.
Definition: MooseBase.h:57
std::map< SubdomainID, std::multimap< std::string, std::string > > _map_block_material_props_check
Data structures of the requested material properties.
Definition: SubProblem.h:1070

◆ 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 583 of file SubProblem.C.

Referenced by MaterialBase::registerPropName().

584 {
585  _map_block_material_props[block_id].insert(name);
586 }
virtual const std::string & name() const
Get the name of the class.
Definition: MooseBase.h:57
std::map< SubdomainID, std::set< std::string > > _map_block_material_props
Map of material properties (block_id -> list of properties)
Definition: SubProblem.h:1052

◆ 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 595 of file SubProblem.C.

Referenced by MaterialBase::storeSubdomainZeroMatProp().

596 {
597  _zero_block_material_props[block_id].insert(name);
598 }
virtual const std::string & name() const
Get the name of the class.
Definition: MooseBase.h:57
std::map< SubdomainID, std::set< MaterialPropertyName > > _zero_block_material_props
Set of properties returned as zero properties.
Definition: SubProblem.h:1058

◆ subdomainSetup()

void FEProblemBase::subdomainSetup ( SubdomainID  subdomain,
const THREAD_ID  tid 
)
virtualinherited

Definition at line 2462 of file FEProblemBase.C.

Referenced by ComputeMarkerThread::subdomainChanged(), ComputeIndicatorThread::subdomainChanged(), ComputeMaterialsObjectThread::subdomainChanged(), ComputeDiracThread::subdomainChanged(), NonlinearThread::subdomainChanged(), ComputeUserObjectsThread::subdomainChanged(), and ThreadedFaceLoop< RangeType >::subdomainChanged().

2463 {
2464  _all_materials.subdomainSetup(subdomain, tid);
2465  // Call the subdomain methods of the output system, these are not threaded so only call it once
2466  if (tid == 0)
2468 
2469  for (auto & nl : _nl)
2470  nl->subdomainSetup(subdomain, tid);
2471 
2472  // FIXME: call displaced_problem->subdomainSetup() ?
2473  // When adding possibility with materials being evaluated on displaced mesh
2474 }
std::vector< std::shared_ptr< NonlinearSystemBase > > _nl
The nonlinear systems.
MooseApp & _app
The MOOSE application this is associated with.
Definition: MooseBase.h:84
void subdomainSetup()
Calls the subdomainSetup function for each of the output objects.
virtual void subdomainSetup(THREAD_ID tid=0) const
MaterialWarehouse _all_materials
OutputWarehouse & getOutputWarehouse()
Get the OutputWarehouse objects.
Definition: MooseApp.C:2381

◆ 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 1877 of file FEProblemBase.h.

Referenced by FEProblemBase::computeNearNullSpace(), FEProblemBase::computeNullSpace(), and FEProblemBase::computeTransposeNullSpace().

1878  {
1879  if (_subspace_dim.count(prefix))
1880  return _subspace_dim.find(prefix)->second;
1881  else
1882  return 0;
1883  }
std::map< std::string, unsigned int > _subspace_dim
Dimension of the subspace spanned by the vectors with a given prefix.

◆ swapBackMaterials()

void FEProblemBase::swapBackMaterials ( const THREAD_ID  tid)
virtualinherited

Definition at line 4124 of file FEProblemBase.C.

Referenced by NodalPatchRecovery::compute(), LineMaterialSamplerBase< Real >::execute(), ComputeMarkerThread::onElement(), ComputeElemAuxVarsThread< AuxKernelType >::onElement(), ComputeIndicatorThread::onElement(), NonlinearThread::onElement(), and ComputeUserObjectsThread::onElement().

4125 {
4126  auto && elem = _assembly[tid][0]->elem();
4128 }
void swapBack(const Elem &elem, unsigned int side=0)
material properties for given element (and possible side)
Definition: MaterialData.C:58
std::vector< std::vector< std::unique_ptr< Assembly > > > _assembly
The Assembly objects.
const MaterialData & getMaterialData(const THREAD_ID tid) const
MaterialPropertyStorage & _material_props

◆ swapBackMaterialsFace()

void FEProblemBase::swapBackMaterialsFace ( const THREAD_ID  tid)
virtualinherited

Definition at line 4131 of file FEProblemBase.C.

Referenced by NonlinearThread::onBoundary(), ComputeUserObjectsThread::onBoundary(), NonlinearThread::onInterface(), ComputeUserObjectsThread::onInterface(), ComputeIndicatorThread::onInternalSide(), NonlinearThread::onInternalSide(), ComputeUserObjectsThread::onInternalSide(), and ComputeElemAuxBcsThread< AuxKernelType >::operator()().

4132 {
4133  auto && elem = _assembly[tid][0]->elem();
4134  unsigned int side = _assembly[tid][0]->side();
4135  _bnd_material_props.getMaterialData(tid).swapBack(*elem, side);
4136 }
MaterialPropertyStorage & _bnd_material_props
void swapBack(const Elem &elem, unsigned int side=0)
material properties for given element (and possible side)
Definition: MaterialData.C:58
std::vector< std::vector< std::unique_ptr< Assembly > > > _assembly
The Assembly objects.
const MaterialData & getMaterialData(const THREAD_ID tid) const

◆ swapBackMaterialsNeighbor()

void FEProblemBase::swapBackMaterialsNeighbor ( const THREAD_ID  tid)
virtualinherited

Definition at line 4139 of file FEProblemBase.C.

Referenced by NonlinearThread::onInterface(), ComputeUserObjectsThread::onInterface(), ComputeIndicatorThread::onInternalSide(), NonlinearThread::onInternalSide(), ComputeUserObjectsThread::onInternalSide(), and ComputeElemAuxBcsThread< AuxKernelType >::operator()().

4140 {
4141  // NOTE: this will not work with h-adaptivity
4142  const Elem * neighbor = _assembly[tid][0]->neighbor();
4143  unsigned int neighbor_side =
4144  neighbor ? neighbor->which_neighbor_am_i(_assembly[tid][0]->elem()) : libMesh::invalid_uint;
4145 
4146  if (!neighbor)
4147  {
4148  if (haveFV())
4149  {
4150  // If neighbor is null, then we're on the neighbor side of a mesh boundary, e.g. we're off
4151  // the mesh in ghost-land. If we're using the finite volume method, then variable values and
4152  // consequently material properties have well-defined values in this ghost region outside of
4153  // the mesh and we really do want to reinit our neighbor materials in this case. Since we're
4154  // off in ghost land it's safe to do swaps with `MaterialPropertyStorage` using the elem and
4155  // elem_side keys
4156  neighbor = _assembly[tid][0]->elem();
4157  neighbor_side = _assembly[tid][0]->side();
4158  mooseAssert(neighbor, "We should have an appropriate value for elem coming from Assembly");
4159  }
4160  else
4161  mooseError("neighbor is null in Assembly!");
4162  }
4163 
4164  _neighbor_material_props.getMaterialData(tid).swapBack(*neighbor, neighbor_side);
4165 }
const unsigned int invalid_uint
virtual bool haveFV() const override
returns true if this problem includes/needs finite volume functionality.
void swapBack(const Elem &elem, unsigned int side=0)
material properties for given element (and possible side)
Definition: MaterialData.C:58
unsigned int which_neighbor_am_i(const Elem *e) const
std::vector< std::vector< std::unique_ptr< Assembly > > > _assembly
The Assembly objects.
void mooseError(Args &&... args) const
Emits an error prefixed with object name and type.
MaterialPropertyStorage & _neighbor_material_props
const MaterialData & getMaterialData(const THREAD_ID tid) const

◆ systemBaseAuxiliary() [1/2]

const SystemBase & FEProblemBase::systemBaseAuxiliary ( ) const
overridevirtualinherited

Return the auxiliary system object as a base class reference.

Implements SubProblem.

Definition at line 8909 of file FEProblemBase.C.

Referenced by PhysicsBase::copyVariablesFromMesh(), and MFEMProblem::getAuxVariableNames().

8910 {
8911  return *_aux;
8912 }
std::shared_ptr< AuxiliarySystem > _aux
The auxiliary system.

◆ systemBaseAuxiliary() [2/2]

SystemBase & FEProblemBase::systemBaseAuxiliary ( )
overridevirtualinherited

Implements SubProblem.

Definition at line 8915 of file FEProblemBase.C.

8916 {
8917  return *_aux;
8918 }
std::shared_ptr< AuxiliarySystem > _aux
The auxiliary system.

◆ 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 8877 of file FEProblemBase.C.

8878 {
8879  mooseAssert(sys_num < _linear_systems.size(),
8880  "System number greater than the number of linear systems");
8881  return *_linear_systems[sys_num];
8882 }
std::vector< std::shared_ptr< LinearSystem > > _linear_systems
The vector of linear systems.

◆ 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 8885 of file FEProblemBase.C.

8886 {
8887  mooseAssert(sys_num < _linear_systems.size(),
8888  "System number greater than the number of linear systems");
8889  return *_linear_systems[sys_num];
8890 }
std::vector< std::shared_ptr< LinearSystem > > _linear_systems
The vector of linear systems.

◆ 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 8863 of file FEProblemBase.C.

8864 {
8865  mooseAssert(sys_num < _nl.size(), "System number greater than the number of nonlinear systems");
8866  return *_nl[sys_num];
8867 }
std::vector< std::shared_ptr< NonlinearSystemBase > > _nl
The nonlinear systems.

◆ systemBaseNonlinear() [2/2]

SystemBase & FEProblemBase::systemBaseNonlinear ( const unsigned int  sys_num)
overridevirtualinherited

Implements SubProblem.

Definition at line 8870 of file FEProblemBase.C.

8871 {
8872  mooseAssert(sys_num < _nl.size(), "System number greater than the number of nonlinear systems");
8873  return *_nl[sys_num];
8874 }
std::vector< std::shared_ptr< NonlinearSystemBase > > _nl
The nonlinear systems.

◆ 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 8893 of file FEProblemBase.C.

8894 {
8895  mooseAssert(sys_num < _solver_systems.size(),
8896  "System number greater than the number of solver systems");
8897  return *_solver_systems[sys_num];
8898 }
std::vector< std::shared_ptr< SolverSystem > > _solver_systems
Combined container to base pointer of every solver system.

◆ systemBaseSolver() [2/2]

SystemBase & FEProblemBase::systemBaseSolver ( const unsigned int  sys_num)
overridevirtualinherited

Implements SubProblem.

Definition at line 8901 of file FEProblemBase.C.

8902 {
8903  mooseAssert(sys_num < _solver_systems.size(),
8904  "System number greater than the number of solver systems");
8905  return *_solver_systems[sys_num];
8906 }
std::vector< std::shared_ptr< SolverSystem > > _solver_systems
Combined container to base pointer of every solver system.

◆ 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 6320 of file FEProblemBase.C.

6321 {
6322  for (const auto & solver_sys : _solver_systems)
6323  if (solver_sys->hasVariable(variable_name))
6324  return solver_sys->number();
6325  mooseAssert(_aux, "Should have an auxiliary system");
6326  if (_aux->hasVariable(variable_name))
6327  return _aux->number();
6328 
6329  mooseError("Variable '",
6330  variable_name,
6331  "' was not found in any solver (nonlinear/linear) or auxiliary system");
6332 }
std::vector< std::shared_ptr< SolverSystem > > _solver_systems
Combined container to base pointer of every solver system.
std::shared_ptr< AuxiliarySystem > _aux
The auxiliary system.
void mooseError(Args &&... args) const
Emits an error prefixed with object name and type.

◆ terminateSolve()

virtual void Problem::terminateSolve ( )
inlinevirtualinherited

Allow objects to request clean termination of the solve.

Definition at line 37 of file Problem.h.

Referenced by Terminator::execute(), and TerminateChainControl::terminate().

37 { _termination_requested = true; };
bool _termination_requested
True if termination of the solve has been requested.
Definition: Problem.h:58

◆ theWarehouse()

TheWarehouse& FEProblemBase::theWarehouse ( ) const
inlineinherited

Definition at line 2085 of file FEProblemBase.h.

Referenced by NonlinearSystemBase::addBoundaryCondition(), NonlinearSystemBase::addDGKernel(), NonlinearSystemBase::addDiracKernel(), NonlinearSystemBase::addHDGKernel(), NonlinearSystemBase::addInterfaceKernel(), NonlinearSystemBase::addKernel(), NonlinearSystemBase::addNodalKernel(), FEProblemBase::addObject(), NonlinearSystemBase::addScalarKernel(), NonlinearSystemBase::addSplit(), FEProblemBase::addUserObject(), NonlinearSystemBase::checkKernelCoverage(), FEProblemBase::checkUserObjectJacobianRequirement(), FEProblemBase::checkUserObjects(), NonlinearSystemBase::computeJacobianInternal(), NonlinearSystemBase::computeResidualAndJacobianInternal(), NonlinearSystemBase::computeResidualInternal(), FEProblemBase::computeUserObjectByName(), FEProblemBase::computeUserObjects(), LinearSystem::containsTimeKernel(), NonlinearSystemBase::customSetup(), FEProblemBase::customSetup(), ComputeResidualThread::determineObjectWarehouses(), ComputeResidualAndJacobianThread::determineObjectWarehouses(), FEProblemBase::executeSamplers(), ComputeLinearFVElementalThread::fetchBlockSystemContributionObjects(), ComputeLinearFVFaceThread::fetchBlockSystemContributionObjects(), FEProblemBase::getDistribution(), FEProblemBase::getMortarUserObjects(), FEProblemBase::getPositionsObject(), FEProblemBase::getSampler(), CompositionDT::getTimeSteppers(), FEProblemBase::getUserObject(), FEProblemBase::getUserObjectBase(), FEProblemBase::hasUserObject(), SideFVFluxBCIntegral::initialSetup(), ExplicitTimeIntegrator::initialSetup(), NonlinearSystemBase::initialSetup(), FEProblemBase::initialSetup(), AdvancedOutput::initPostprocessorOrVectorPostprocessorLists(), FEProblemBase::needBoundaryMaterialOnSide(), FEProblemBase::needInterfaceMaterialOnSide(), FEProblemBase::needSubdomainMaterialOnSide(), JSONOutput::outputReporters(), BlockRestrictionDebugOutput::printBlockRestrictionMap(), ComputeLinearFVElementalThread::setupSystemContributionObjects(), ComputeLinearFVFaceThread::setupSystemContributionObjects(), NonlinearThread::subdomainChanged(), NonlinearSystemBase::timestepSetup(), and FEProblemBase::timestepSetup().

2085 { return _app.theWarehouse(); }
MooseApp & _app
The MOOSE application this is associated with.
Definition: MooseBase.h:84
TheWarehouse & theWarehouse()
Definition: MooseApp.h:119

◆ 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 47 of file PerfGraphInterface.C.

Referenced by PerfGraphInterface::registerTimedSection().

48 {
49  return _prefix.empty() ? "" : (_prefix + "::") + section_name;
50 }
const std::string _prefix
A prefix to use for all sections.

◆ 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 1477 of file FEProblemBase.C.

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

1478 {
1480 
1481  if (_t_step > 1 && _num_grid_steps)
1482  {
1483  libMesh::MeshRefinement mesh_refinement(_mesh);
1484  std::unique_ptr<libMesh::MeshRefinement> displaced_mesh_refinement(nullptr);
1485  if (_displaced_mesh)
1486  displaced_mesh_refinement = std::make_unique<libMesh::MeshRefinement>(*_displaced_mesh);
1487 
1488  for (MooseIndex(_num_grid_steps) i = 0; i < _num_grid_steps; ++i)
1489  {
1490  if (_displaced_problem)
1491  // If the DisplacedProblem is active, undisplace the DisplacedMesh in preparation for
1492  // refinement. We can't safely refine the DisplacedMesh directly, since the Hilbert keys
1493  // computed on the inconsistenly-displaced Mesh are different on different processors,
1494  // leading to inconsistent Hilbert keys. We must do this before the undisplaced Mesh is
1495  // coarsensed, so that the element and node numbering is still consistent. We also have to
1496  // make sure this is done during every step of coarsening otherwise different partitions
1497  // will be generated for the reference and displaced meshes (even for replicated)
1498  _displaced_problem->undisplaceMesh();
1499 
1500  mesh_refinement.uniformly_coarsen();
1501  if (_displaced_mesh)
1502  displaced_mesh_refinement->uniformly_coarsen();
1503 
1504  // Mark this as an intermediate change because we do not yet want to reinit_systems. E.g. we
1505  // need things to happen in the following order for the undisplaced problem:
1506  // u1) EquationSystems::reinit_solutions. This will restrict the solution vectors and then
1507  // contract the mesh
1508  // u2) MooseMesh::meshChanged. This will update the node/side lists and other
1509  // things which needs to happen after the contraction
1510  // u3) GeometricSearchData::reinit. Once the node/side lists are updated we can perform our
1511  // geometric searches which will aid in determining sparsity patterns
1512  //
1513  // We do these things for the displaced problem (if it exists)
1514  // d1) EquationSystems::reinit. Restrict the displaced problem vector copies and then contract
1515  // the mesh. It's safe to do a full reinit with the displaced because there are no
1516  // matrices that sparsity pattern calculations will be conducted for
1517  // d2) MooseMesh::meshChanged. This will update the node/side lists and other
1518  // things which needs to happen after the contraction
1519  // d3) UpdateDisplacedMeshThread::operator(). Re-displace the mesh using the *displaced*
1520  // solution vector copy because we don't know the state of the reference solution vector.
1521  // It's safe to use the displaced copy because we are outside of a non-linear solve,
1522  // and there is no concern about differences between solution and current_local_solution
1523  // d4) GeometricSearchData::reinit. With the node/side lists updated and the mesh
1524  // re-displaced, we can perform our geometric searches, which will aid in determining the
1525  // sparsity pattern of the matrix held by the libMesh::ImplicitSystem held by the
1526  // NonlinearSystem held by this
1527  meshChanged(
1528  /*intermediate_change=*/true, /*contract_mesh=*/true, /*clean_refinement_flags=*/true);
1529  }
1530 
1531  // u4) Now that all the geometric searches have been done (both undisplaced and displaced),
1532  // we're ready to update the sparsity pattern
1533  es().reinit_systems();
1534  }
1535 
1536  if (_line_search)
1537  _line_search->timestepSetup();
1538 
1539  // Random interface objects
1540  for (const auto & it : _random_data_objects)
1541  it.second->updateSeeds(EXEC_TIMESTEP_BEGIN);
1542 
1543  unsigned int n_threads = libMesh::n_threads();
1544  for (THREAD_ID tid = 0; tid < n_threads; tid++)
1545  {
1548  }
1549 
1550  _aux->timestepSetup();
1551  for (auto & sys : _solver_systems)
1552  sys->timestepSetup();
1553 
1554  if (_displaced_problem)
1555  // timestepSetup for displaced systems
1556  _displaced_problem->timestepSetup();
1557 
1558  for (THREAD_ID tid = 0; tid < n_threads; tid++)
1559  {
1562  _markers.timestepSetup(tid);
1563  }
1564 
1565  std::vector<UserObject *> userobjs;
1566  theWarehouse().query().condition<AttribSystem>("UserObject").queryIntoUnsorted(userobjs);
1567  for (auto obj : userobjs)
1568  obj->timestepSetup();
1569 
1570  // Timestep setup of output objects
1572 
1575  _has_nonlocal_coupling = true;
1576 }
virtual void meshChanged()
Deprecated.
unsigned int n_threads()
MooseObjectWarehouse< InternalSideIndicatorBase > _internal_side_indicators
bool _has_nonlocal_coupling
Indicates if nonlocal coupling is required/exists.
virtual void timestepSetup(THREAD_ID tid=0) const
bool _requires_nonlocal_coupling
nonlocal coupling requirement flag
std::vector< std::shared_ptr< SolverSystem > > _solver_systems
Combined container to base pointer of every solver system.
unsigned int _num_grid_steps
Number of steps in a grid sequence.
virtual void reinit_systems()
TheWarehouse & theWarehouse() const
const ExecFlagType EXEC_TIMESTEP_BEGIN
Definition: Moose.C:35
virtual void timestepSetup(THREAD_ID tid=0) const
virtual libMesh::EquationSystems & es() override
std::shared_ptr< AuxiliarySystem > _aux
The auxiliary system.
MooseMesh & _mesh
std::map< std::string, std::unique_ptr< RandomData > > _random_data_objects
A map of objects that consume random numbers.
MooseApp & _app
The MOOSE application this is associated with.
Definition: MooseBase.h:84
MooseObjectWarehouse< Indicator > _indicators
virtual void timestepSetup()
Definition: SubProblem.C:1179
bool hasActiveObjects(THREAD_ID tid=0) const
Query query()
query creates and returns an initialized a query object for querying objects from the warehouse...
Definition: TheWarehouse.h:466
std::shared_ptr< DisplacedProblem > _displaced_problem
MooseObjectWarehouse< Function > _functions
functions
QueryCache & condition(Args &&... args)
Adds a new condition to the query.
Definition: TheWarehouse.h:284
MooseObjectWarehouse< Marker > _markers
MaterialWarehouse _all_materials
void timestepSetup()
Calls the timestepSetup function for each of the output objects.
OutputWarehouse & getOutputWarehouse()
Get the OutputWarehouse objects.
Definition: MooseApp.C:2381
MooseMesh * _displaced_mesh
unsigned int THREAD_ID
Definition: MooseTypes.h:209
MooseObjectWarehouse< IntegratedBCBase > _nonlocal_integrated_bcs
nonlocal integrated_bcs
std::shared_ptr< LineSearch > _line_search
MooseObjectWarehouse< KernelBase > _nonlocal_kernels
nonlocal kernels

◆ transient()

virtual void FEProblemBase::transient ( bool  trans)
inlinevirtualinherited

◆ 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 6060 of file FEProblemBase.C.

Referenced by SingleMatrixPreconditioner::SingleMatrixPreconditioner().

6061 {
6063  mooseError("Someone told us (the FEProblemBase) to trust the user coupling matrix, but we "
6064  "haven't been provided a coupling matrix!");
6065 
6067 }
bool _trust_user_coupling_matrix
Whether to trust the user coupling matrix no matter what.
Moose::CouplingType _coupling
Type of variable coupling.
void mooseError(Args &&... args) const
Emits an error prefixed with object name and type.

◆ 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 51 of file MooseBase.h.

Referenced by CreateProblemDefaultAction::act(), SetupDebugAction::act(), MaterialDerivativeTestAction::act(), MaterialOutputAction::act(), FEProblemBase::addAuxArrayVariable(), FEProblemBase::addAuxScalarVariable(), FEProblemBase::addAuxVariable(), FEProblemBase::addConvergence(), FEProblemBase::addDistribution(), MooseApp::addExecutor(), MooseApp::addExecutorParams(), MFEMProblem::addFunction(), FEProblemBase::addFunction(), FEProblemBase::addMeshDivision(), MooseApp::addMeshGenerator(), MeshGenerator::addMeshSubgenerator(), FEProblemBase::addObject(), MFEMProblem::addPostprocessor(), FEProblemBase::addPredictor(), CreateDisplacedProblemAction::addProxyRelationshipManagers(), FEProblemBase::addReporter(), FEProblemBase::addSampler(), FEProblemBase::addTimeIntegrator(), MooseServer::addValuesToList(), DisplacedProblem::addVectorTag(), SubProblem::addVectorTag(), FEProblemBase::advanceMultiApps(), MooseApp::appendMeshGenerator(), AuxKernelTempl< Real >::AuxKernelTempl(), FEProblemBase::backupMultiApps(), BatchMeshGeneratorAction::BatchMeshGeneratorAction(), BoundaryPreservedMarker::BoundaryPreservedMarker(), DistributedRectilinearMeshGenerator::buildCube(), MooseMesh::buildHRefinementAndCoarseningMaps(), MooseMesh::buildLowerDMesh(), MooseMesh::buildPRefinementAndCoarseningMaps(), PhysicsBase::checkComponentType(), MeshDiagnosticsGenerator::checkNonConformalMeshFromAdaptivity(), ActionComponent::checkRequiredTasks(), PhysicsBase::checkRequiredTasks(), ADDGKernel::computeElemNeighJacobian(), DGKernel::computeElemNeighJacobian(), ElemElemConstraint::computeElemNeighJacobian(), ArrayDGKernel::computeElemNeighJacobian(), ADDGKernel::computeElemNeighResidual(), DGKernel::computeElemNeighResidual(), ElemElemConstraint::computeElemNeighResidual(), ArrayDGKernel::computeElemNeighResidual(), LowerDIntegratedBC::computeLowerDJacobian(), ArrayLowerDIntegratedBC::computeLowerDJacobian(), DGLowerDKernel::computeLowerDJacobian(), ArrayDGLowerDKernel::computeLowerDJacobian(), LowerDIntegratedBC::computeLowerDOffDiagJacobian(), ArrayLowerDIntegratedBC::computeLowerDOffDiagJacobian(), ArrayHFEMDirichletBC::computeLowerDQpJacobian(), ArrayHFEMDiffusion::computeLowerDQpJacobian(), HFEMDirichletBC::computeLowerDQpJacobian(), HFEMDiffusion::computeLowerDQpJacobian(), ArrayHFEMDirichletBC::computeLowerDQpOffDiagJacobian(), HFEMDirichletBC::computeLowerDQpOffDiagJacobian(), ArrayLowerDIntegratedBC::computeLowerDQpOffDiagJacobian(), ArrayDGLowerDKernel::computeLowerDQpOffDiagJacobian(), FEProblemBase::computeMultiAppsDT(), ADDGKernel::computeOffDiagElemNeighJacobian(), DGKernel::computeOffDiagElemNeighJacobian(), ArrayDGKernel::computeOffDiagElemNeighJacobian(), DGLowerDKernel::computeOffDiagLowerDJacobian(), ArrayDGLowerDKernel::computeOffDiagLowerDJacobian(), DGConvection::computeQpJacobian(), ScalarKernel::computeQpJacobian(), InterfaceDiffusion::computeQpJacobian(), ArrayDGDiffusion::computeQpJacobian(), InterfaceReaction::computeQpJacobian(), CoupledTiedValueConstraint::computeQpJacobian(), TiedValueConstraint::computeQpJacobian(), DGDiffusion::computeQpJacobian(), LinearNodalConstraint::computeQpJacobian(), EqualValueBoundaryConstraint::computeQpJacobian(), CoupledTiedValueConstraint::computeQpOffDiagJacobian(), HFEMTestJump::computeQpOffDiagJacobian(), HFEMTrialJump::computeQpOffDiagJacobian(), ArrayDGKernel::computeQpOffDiagJacobian(), HFEMDiffusion::computeQpResidual(), ArrayHFEMDiffusion::computeQpResidual(), DGConvection::computeQpResidual(), ScalarKernel::computeQpResidual(), InterfaceDiffusion::computeQpResidual(), ArrayDGDiffusion::computeQpResidual(), ADMatInterfaceReaction::computeQpResidual(), InterfaceReaction::computeQpResidual(), ADDGAdvection::computeQpResidual(), CoupledTiedValueConstraint::computeQpResidual(), TiedValueConstraint::computeQpResidual(), LinearNodalConstraint::computeQpResidual(), DGDiffusion::computeQpResidual(), ADDGDiffusion::computeQpResidual(), HFEMTestJump::computeQpResidual(), HFEMTrialJump::computeQpResidual(), EqualValueBoundaryConstraint::computeQpResidual(), FEProblemBase::computeSystems(), FEProblemBase::computeUserObjectByName(), FEProblemBase::computeUserObjects(), FEProblemBase::computeUserObjectsInternal(), DisplacedProblem::createQRules(), FEProblemBase::createQRules(), MooseApp::createRecoverablePerfGraph(), DumpObjectsProblem::deduceNecessaryParameters(), DumpObjectsProblem::dumpObjectHelper(), FEProblemBase::duplicateVariableCheck(), MooseBase::errorPrefix(), FEProblemBase::execMultiApps(), FEProblemBase::execMultiAppTransfers(), FEProblemBase::execTransfers(), WebServerControl::execute(), SteadyBase::execute(), ActionWarehouse::executeActionsWithAction(), FEProblemBase::finishMultiAppStep(), FVScalarLagrangeMultiplierInterface::FVScalarLagrangeMultiplierInterface(), MooseServer::gatherDocumentReferencesLocations(), LowerDBlockFromSidesetGenerator::generate(), SubdomainPerElementGenerator::generate(), PatternedMeshGenerator::generate(), MeshGenerator::generateInternal(), MultiAppTransfer::getAppInfo(), TransfiniteMeshGenerator::getEdge(), ElementGenerator::getElemType(), MooseServer::getInputLookupDefinitionNodes(), FEProblemBase::getMaterial(), FEProblemBase::getMaterialData(), MaterialOutputAction::getParams(), ReporterData::getReporterInfo(), FEProblemBase::getTransfers(), DisplacedProblem::getVectorTags(), SubProblem::getVectorTags(), CommonOutputAction::hasConsole(), FEProblemBase::hasMultiApps(), AdvancedOutput::hasOutput(), FEProblemBase::incrementMultiAppTStep(), AdvancedOutput::initAvailableLists(), FunctorPositions::initialize(), FunctorTimes::initialize(), MultiAppConservativeTransfer::initialSetup(), LinearFVAnisotropicDiffusion::initialSetup(), LinearFVAdvection::initialSetup(), LinearFVDiffusion::initialSetup(), ArrayDGDiffusion::initQpResidual(), AdvancedOutput::initShowHideLists(), RelationshipManager::isType(), FEProblemBase::logAdd(), MaterialFunctorConverterTempl< T >::MaterialFunctorConverterTempl(), MFEMProblem::mesh(), MooseApp::MooseApp(), MooseObject::MooseObject(), MultiAppMFEMCopyTransfer::MultiAppMFEMCopyTransfer(), DisplacedProblem::numVectorTags(), SubProblem::numVectorTags(), Console::output(), AdvancedOutput::output(), ConsoleUtils::outputExecutionInformation(), SampledOutput::outputStep(), Output::outputStep(), FEProblemBase::outputStep(), MooseServer::parseDocumentForDiagnostics(), MooseMesh::prepare(), ProjectedStatefulMaterialStorageAction::processProperty(), MooseApp::recursivelyCreateExecutors(), SolutionInvalidInterface::registerInvalidSolutionInternal(), FEProblemBase::restoreMultiApps(), MeshRepairGenerator::separateSubdomainsByElementType(), FEProblemBase::setCoupling(), MooseApp::setupOptions(), WebServerControl::startServer(), MooseBase::typeAndName(), ScalarKernelBase::uOld(), AuxScalarKernel::uOld(), DisplacedProblem::updateGeomSearch(), FEProblemBase::updateGeomSearch(), UserObjectInterface::userObjectType(), and AdvancedOutput::wantOutput().

51 { return _type; }
const std::string _type
The type of this class.
Definition: MooseBase.h:87

◆ 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 27 of file MooseBase.C.

Referenced by MaterialPropertyStorage::addProperty(), MeshGeneratorSystem::dataDrivenError(), ReporterContext< std::vector< T > >::finalize(), and ReporterData::getReporterInfo().

28 {
29  return type() + std::string(" \"") + name() + std::string("\"");
30 }
virtual const std::string & name() const
Get the name of the class.
Definition: MooseBase.h:57
const std::string & type() const
Get the type of this class.
Definition: MooseBase.h:51

◆ uDotDotOldRequested()

virtual bool FEProblemBase::uDotDotOldRequested ( )
inlinevirtualinherited

Get boolean flag to check whether old solution second time derivative needs to be stored.

Definition at line 2161 of file FEProblemBase.h.

Referenced by SystemBase::addDotVectors().

2162  {
2164  mooseError("FEProblemBase: When requesting old second time derivative of solution, current "
2165  "second time derivation of solution should also be stored. Please set "
2166  "`u_dotdot_requested` to true using setUDotDotRequested.");
2167  return _u_dotdot_old_requested;
2168  }
bool _u_dotdot_old_requested
Whether old solution second time derivative needs to be stored.
void mooseError(Args &&... args) const
Emits an error prefixed with object name and type.
bool _u_dotdot_requested
Whether solution second time derivative needs to be stored.

◆ uDotDotRequested()

virtual bool FEProblemBase::uDotDotRequested ( )
inlinevirtualinherited

Get boolean flag to check whether solution second time derivative needs to be stored.

Definition at line 2147 of file FEProblemBase.h.

Referenced by SystemBase::addDotVectors(), and FEProblemBase::addTimeIntegrator().

2147 { return _u_dotdot_requested; }
bool _u_dotdot_requested
Whether solution second time derivative needs to be stored.

◆ uDotOldRequested()

virtual bool FEProblemBase::uDotOldRequested ( )
inlinevirtualinherited

Get boolean flag to check whether old solution time derivative needs to be stored.

Definition at line 2150 of file FEProblemBase.h.

Referenced by SystemBase::addDotVectors().

2151  {
2153  mooseError("FEProblemBase: When requesting old time derivative of solution, current time "
2154  "derivative of solution should also be stored. Please set `u_dot_requested` to "
2155  "true using setUDotRequested.");
2156 
2157  return _u_dot_old_requested;
2158  }
bool _u_dot_requested
Whether solution time derivative needs to be stored.
void mooseError(Args &&... args) const
Emits an error prefixed with object name and type.
bool _u_dot_old_requested
Whether old solution time derivative needs to be stored.

◆ uDotRequested()

virtual bool FEProblemBase::uDotRequested ( )
inlinevirtualinherited

Get boolean flag to check whether solution time derivative needs to be stored.

Definition at line 2144 of file FEProblemBase.h.

Referenced by SystemBase::addDotVectors().

2144 { return _u_dot_requested; }
bool _u_dot_requested
Whether solution time derivative needs to be stored.

◆ 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 8939 of file FEProblemBase.C.

Referenced by FEProblemSolve::solve().

8940 {
8941  // ResetDisplacedMeshThread::onNode looks up the reference mesh by ID, so we need to make sure
8942  // we undisplace before adapting the reference mesh
8943  if (_displaced_problem)
8944  _displaced_problem->undisplaceMesh();
8945 
8947  if (_displaced_problem)
8949 
8950  meshChanged(
8951  /*intermediate_change=*/false, /*contract_mesh=*/true, /*clean_refinement_flags=*/true);
8952 }
virtual void meshChanged()
Deprecated.
static void uniformRefine(MooseMesh *mesh, unsigned int level=libMesh::invalid_uint)
Performs uniform refinement of the passed Mesh object.
Definition: Adaptivity.C:274
MooseMesh & _mesh
std::shared_ptr< DisplacedProblem > _displaced_problem

◆ uniqueName()

MooseObjectName MooseBaseParameterInterface::uniqueName ( ) const
inlineinherited

The unique name for accessing input parameters of this object in the InputParameterWarehouse.

Definition at line 67 of file MooseBaseParameterInterface.h.

Referenced by MooseBaseParameterInterface::connectControllableParams(), and Action::uniqueActionName().

68  {
69  return MooseObjectName(_pars.get<std::string>("_unique_name"));
70  }
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.
const InputParameters & _pars
Parameters of this object, references the InputParameters stored in the InputParametersWarehouse.
A class for storing the names of MooseObject by tag and object name.

◆ uniqueParameterName()

MooseObjectParameterName MooseBaseParameterInterface::uniqueParameterName ( const std::string &  parameter_name) const
inlineinherited

The unique parameter name of a valid parameter of this object for accessing parameter controls.

Definition at line 52 of file MooseBaseParameterInterface.h.

53  {
55  _pars.get<std::string>("_moose_base"), _moose_base.name(), parameter_name);
56  }
const MooseBase & _moose_base
The MooseBase object that inherits this class.
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.
virtual const std::string & name() const
Get the name of the class.
Definition: MooseBase.h:57
const InputParameters & _pars
Parameters of this object, references the InputParameters stored in the InputParametersWarehouse.
A class for storing an input parameter name.

◆ updateActiveObjects()

void FEProblemBase::updateActiveObjects ( )
virtualinherited

Update the active objects in the warehouses.

Reimplemented in DumpObjectsProblem.

Definition at line 5056 of file FEProblemBase.C.

Referenced by MooseEigenSystem::eigenKernelOnCurrent(), MooseEigenSystem::eigenKernelOnOld(), and FixedPointSolve::solveStep().

5057 {
5058  TIME_SECTION("updateActiveObjects", 5, "Updating Active Objects");
5059 
5060  for (THREAD_ID tid = 0; tid < libMesh::n_threads(); ++tid)
5061  {
5062  for (auto & nl : _nl)
5063  nl->updateActive(tid);
5064  _aux->updateActive(tid);
5067  _markers.updateActive(tid);
5069  _materials.updateActive(tid);
5071  }
5072 
5080 }
unsigned int n_threads()
MooseObjectWarehouse< InternalSideIndicatorBase > _internal_side_indicators
ExecuteMooseObjectWarehouse< Control > _control_warehouse
The control logic warehouse.
void updateActive(THREAD_ID tid=0) override
Updates the active objects storage.
ExecuteMooseObjectWarehouse< TransientMultiApp > _transient_multi_apps
Storage for TransientMultiApps (only needed for calling &#39;computeDT&#39;)
ExecuteMooseObjectWarehouse< Transfer > _from_multi_app_transfers
Transfers executed just after MultiApps to transfer data from them.
ExecuteMooseObjectWarehouse< Transfer > _transfers
Normal Transfers.
std::vector< std::shared_ptr< NonlinearSystemBase > > _nl
The nonlinear systems.
ExecuteMooseObjectWarehouse< Transfer > _to_multi_app_transfers
Transfers executed just before MultiApps to transfer data to them.
std::shared_ptr< AuxiliarySystem > _aux
The auxiliary system.
virtual void updateActive(THREAD_ID tid=0)
Update the active status of Kernels.
MooseObjectWarehouse< Indicator > _indicators
ExecuteMooseObjectWarehouse< MultiApp > _multi_apps
MultiApp Warehouse.
MaterialWarehouse _discrete_materials
virtual void updateActive(THREAD_ID tid=0) override
Update the active status of Kernels.
ExecuteMooseObjectWarehouse< Transfer > _between_multi_app_transfers
Transfers executed just before MultiApps to transfer data between them.
MooseObjectWarehouse< Marker > _markers
MaterialWarehouse _all_materials
unsigned int THREAD_ID
Definition: MooseTypes.h:209
MaterialWarehouse _materials

◆ updateGeomSearch()

void FEProblemBase::updateGeomSearch ( GeometricSearchData::GeometricSearchType  type = GeometricSearchData::ALL)
overridevirtualinherited

Implements SubProblem.

Definition at line 7743 of file FEProblemBase.C.

Referenced by NonlinearSystemBase::augmentSparsity(), and FEProblemBase::initialSetup().

7744 {
7745  TIME_SECTION("updateGeometricSearch", 3, "Updating Geometric Search");
7746 
7748 
7749  if (_displaced_problem)
7750  _displaced_problem->updateGeomSearch(type);
7751 }
const std::string & type() const
Get the type of this class.
Definition: MooseBase.h:51
void update(GeometricSearchType type=ALL)
Update all of the search objects.
std::shared_ptr< DisplacedProblem > _displaced_problem
GeometricSearchData _geometric_search_data

◆ updateMeshXFEM()

bool FEProblemBase::updateMeshXFEM ( )
virtualinherited

Update the mesh due to changing XFEM cuts.

Definition at line 8010 of file FEProblemBase.C.

Referenced by FEProblemBase::initialSetup(), and FixedPointSolve::solveStep().

8011 {
8012  TIME_SECTION("updateMeshXFEM", 5, "Updating XFEM");
8013 
8014  bool updated = false;
8015  if (haveXFEM())
8016  {
8017  if (_xfem->updateHeal())
8018  // XFEM exodiff tests rely on a given numbering because they cannot use map = true due to
8019  // having coincident elements. While conceptually speaking we do not need to contract the
8020  // mesh, we need its call to renumber_nodes_and_elements in order to preserve these tests
8021  meshChanged(
8022  /*intermediate_change=*/false, /*contract_mesh=*/true, /*clean_refinement_flags=*/false);
8023 
8024  updated = _xfem->update(_time, _nl, *_aux);
8025  if (updated)
8026  {
8027  meshChanged(
8028  /*intermediate_change=*/false, /*contract_mesh=*/true, /*clean_refinement_flags=*/false);
8029  _xfem->initSolution(_nl, *_aux);
8030  restoreSolutions();
8031  }
8032  }
8033  return updated;
8034 }
virtual void meshChanged()
Deprecated.
bool haveXFEM()
Find out whether the current analysis is using XFEM.
std::vector< std::shared_ptr< NonlinearSystemBase > > _nl
The nonlinear systems.
std::shared_ptr< AuxiliarySystem > _aux
The auxiliary system.
virtual void restoreSolutions()
std::shared_ptr< XFEMInterface > _xfem
Pointer to XFEM controller.

◆ updateMortarMesh()

void FEProblemBase::updateMortarMesh ( )
virtualinherited

Definition at line 7754 of file FEProblemBase.C.

Referenced by FEProblemBase::computeResidualAndJacobian(), FEProblemBase::computeResidualTags(), FEProblemBase::init(), FEProblemBase::initialSetup(), and FEProblemBase::meshChanged().

7755 {
7756  TIME_SECTION("updateMortarMesh", 5, "Updating Mortar Mesh");
7757 
7758  FloatingPointExceptionGuard fpe_guard(_app);
7759 
7760  _mortar_data.update();
7761 }
Scope guard for starting and stopping Floating Point Exception Trapping.
MortarData _mortar_data
MooseApp & _app
The MOOSE application this is associated with.
Definition: MooseBase.h:84
void update()
Builds mortar segment meshes for each mortar interface.
Definition: MortarData.C:149

◆ 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 7722 of file FEProblemBase.C.

Referenced by FEProblemBase::computePostCheck().

7724 {
7725  return false;
7726 }

◆ useSNESMFReuseBase()

bool FEProblemBase::useSNESMFReuseBase ( )
inlineinherited

Return a flag that indicates if we are reusing the vector base.

Definition at line 2098 of file FEProblemBase.h.

Referenced by NonlinearSystem::potentiallySetupFiniteDifferencing().

2098 { return _snesmf_reuse_base; }
bool _snesmf_reuse_base
If or not to resuse the base vector for matrix-free calculation.

◆ validParams()

InputParameters ReferenceResidualProblem::validParams ( )
static

Definition at line 18 of file ReferenceResidualProblem.C.

19 {
22 
23  params.addClassDescription("Problem that checks for convergence relative to "
24  "a user-supplied reference quantity rather than "
25  "the initial residual");
26 
27  return params;
28 }
The main MOOSE class responsible for handling user-defined parameters in almost every MOOSE system...
static InputParameters validParams()
static InputParameters validParams()
Definition: FEProblem.C:26
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...

◆ 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 136 of file SubProblem.C.

137 {
138  mooseAssert(verifyVectorTags(), "Vector tag storage invalid");
139 
140  const auto tag_name_upper = MooseUtils::toUpper(tag_name);
141  for (const auto & vector_tag : _vector_tags)
142  if (vector_tag._name == tag_name_upper)
143  return true;
144 
145  return false;
146 }
std::string toUpper(const std::string &name)
Convert supplied string to upper case.
std::vector< VectorTag > _vector_tags
The declared vector tags.
Definition: SubProblem.h:1167
bool verifyVectorTags() const
Verify the integrity of _vector_tags and _typed_vector_tags.
Definition: SubProblem.C:241

◆ vectorTagName()

TagName SubProblem::vectorTagName ( const TagID  tag) const
virtualinherited

Retrieve the name associated with a TagID.

Reimplemented in DisplacedProblem.

Definition at line 221 of file SubProblem.C.

Referenced by SystemBase::closeTaggedVector(), NonlinearSystemBase::getResidualNonTimeVector(), NonlinearSystemBase::getResidualTimeVector(), SystemBase::removeVector(), NonlinearSystemBase::residualGhosted(), DisplacedProblem::vectorTagName(), and SystemBase::zeroTaggedVector().

222 {
223  mooseAssert(verifyVectorTags(), "Vector tag storage invalid");
224  if (!vectorTagExists(tag_id))
225  mooseError("Vector tag with ID ", tag_id, " does not exist");
226 
227  return _vector_tags[tag_id]._name;
228 }
std::vector< VectorTag > _vector_tags
The declared vector tags.
Definition: SubProblem.h:1167
bool verifyVectorTags() const
Verify the integrity of _vector_tags and _typed_vector_tags.
Definition: SubProblem.C:241
virtual bool vectorTagExists(const TagID tag_id) const
Check to see if a particular Tag exists.
Definition: SubProblem.h:201
void mooseError(Args &&... args) const
Emits an error prefixed with object name and type.

◆ 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 155 of file SubProblem.C.

Referenced by SystemBase::zeroTaggedVector().

156 {
157  return _not_zeroed_tagged_vectors.count(tag);
158 }
std::unordered_set< TagID > _not_zeroed_tagged_vectors
the list of vector tags that will not be zeroed when all other tags are
Definition: SubProblem.h:1117

◆ vectorTagType()

Moose::VectorTagType SubProblem::vectorTagType ( const TagID  tag_id) const
virtualinherited

Reimplemented in DisplacedProblem.

Definition at line 231 of file SubProblem.C.

Referenced by MooseVariableScalar::reinit(), TaggingInterface::TaggingInterface(), and DisplacedProblem::vectorTagType().

232 {
233  mooseAssert(verifyVectorTags(), "Vector tag storage invalid");
234  if (!vectorTagExists(tag_id))
235  mooseError("Vector tag with ID ", tag_id, " does not exist");
236 
237  return _vector_tags[tag_id]._type;
238 }
std::vector< VectorTag > _vector_tags
The declared vector tags.
Definition: SubProblem.h:1167
bool verifyVectorTags() const
Verify the integrity of _vector_tags and _typed_vector_tags.
Definition: SubProblem.C:241
virtual bool vectorTagExists(const TagID tag_id) const
Check to see if a particular Tag exists.
Definition: SubProblem.h:201
void mooseError(Args &&... args) const
Emits an error prefixed with object name and type.

◆ verboseMultiApps()

bool FEProblemBase::verboseMultiApps ( ) const
inlineinherited

Whether or not to use verbose printing for MultiApps.

Definition at line 1843 of file FEProblemBase.h.

Referenced by MultiApp::backup(), MultiApp::createApp(), MultiApp::restore(), FullSolveMultiApp::showStatusMessage(), and TransientMultiApp::solveStep().

1843 { return _verbose_multiapps; }
bool _verbose_multiapps
Whether or not to be verbose with multiapps.

◆ verifyVectorTags()

bool SubProblem::verifyVectorTags ( ) const
protectedinherited

Verify the integrity of _vector_tags and _typed_vector_tags.

Definition at line 241 of file SubProblem.C.

Referenced by SubProblem::addVectorTag(), SubProblem::getVectorTag(), SubProblem::getVectorTagID(), SubProblem::getVectorTags(), SubProblem::numVectorTags(), SubProblem::vectorTagExists(), SubProblem::vectorTagName(), and SubProblem::vectorTagType().

242 {
243  for (TagID tag_id = 0; tag_id < _vector_tags.size(); ++tag_id)
244  {
245  const auto & vector_tag = _vector_tags[tag_id];
246 
247  if (vector_tag._id != tag_id)
248  mooseError("Vector tag ", vector_tag._id, " id mismatch in _vector_tags");
249  if (vector_tag._type == Moose::VECTOR_TAG_ANY)
250  mooseError("Vector tag '", vector_tag._name, "' has type VECTOR_TAG_ANY");
251 
252  const auto search = _vector_tags_name_map.find(vector_tag._name);
253  if (search == _vector_tags_name_map.end())
254  mooseError("Vector tag ", vector_tag._id, " is not in _vector_tags_name_map");
255  else if (search->second != tag_id)
256  mooseError("Vector tag ", vector_tag._id, " has incorrect id in _vector_tags_name_map");
257 
258  unsigned int found_in_type = 0;
259  for (TagTypeID tag_type_id = 0; tag_type_id < _typed_vector_tags[vector_tag._type].size();
260  ++tag_type_id)
261  {
262  const auto & vector_tag_type = _typed_vector_tags[vector_tag._type][tag_type_id];
263  if (vector_tag_type == vector_tag)
264  {
265  ++found_in_type;
266  if (vector_tag_type._type_id != tag_type_id)
267  mooseError("Type ID for Vector tag ", tag_id, " is incorrect");
268  }
269  }
270 
271  if (found_in_type == 0)
272  mooseError("Vector tag ", tag_id, " not found in _typed_vector_tags");
273  if (found_in_type > 1)
274  mooseError("Vector tag ", tag_id, " found multiple times in _typed_vector_tags");
275  }
276 
277  unsigned int num_typed_vector_tags = 0;
278  for (const auto & typed_vector_tags : _typed_vector_tags)
279  num_typed_vector_tags += typed_vector_tags.size();
280  if (num_typed_vector_tags != _vector_tags.size())
281  mooseError("Size mismatch between _vector_tags and _typed_vector_tags");
282  if (_vector_tags_name_map.size() != _vector_tags.size())
283  mooseError("Size mismatch between _vector_tags and _vector_tags_name_map");
284 
285  return true;
286 }
unsigned int TagTypeID
Definition: MooseTypes.h:211
unsigned int TagID
Definition: MooseTypes.h:210
std::vector< VectorTag > _vector_tags
The declared vector tags.
Definition: SubProblem.h:1167
std::map< TagName, TagID > _vector_tags_name_map
Map of vector tag TagName to TagID.
Definition: SubProblem.h:1177
std::vector< std::vector< VectorTag > > _typed_vector_tags
The vector tags associated with each VectorTagType This is kept separate from _vector_tags for quick ...
Definition: SubProblem.h:1174
void mooseError(Args &&... args) const
Emits an error prefixed with object name and type.

Member Data Documentation

◆ _action_factory

ActionFactory& MooseBaseParameterInterface::_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 1075 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

◆ _all_user_objects

ExecuteMooseObjectWarehouse<UserObject> FEProblemBase::_all_user_objects
protectedinherited

◆ _app

MooseApp& MooseBase::_app
protectedinherited

The MOOSE application this is associated with.

Definition at line 84 of file MooseBase.h.

◆ _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 2612 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::bumpAllQRuleOrder(), FEProblemBase::bumpVolumeQRuleOrder(), FEProblemBase::couplingEntries(), FEProblemBase::createQRules(), FEProblem::init(), FEProblemBase::init(), FEProblemBase::initElementStatefulProps(), FEProblemBase::initialSetup(), FEProblemBase::initXFEM(), FEProblemBase::meshChanged(), FEProblemBase::newAssemblyArray(), FEProblemBase::nonlocalCouplingEntries(), FEProblemBase::prepareAssembly(), FEProblemBase::prepareFaceShapes(), FEProblemBase::prepareNeighborShapes(), FEProblemBase::prepareShapes(), FEProblemBase::reinitDirac(), FEProblemBase::reinitElemNeighborAndLowerD(), FEProblemBase::reinitElemPhys(), FEProblemBase::reinitMaterials(), FEProblemBase::reinitMaterialsBoundary(), FEProblemBase::reinitMaterialsFace(), FEProblemBase::reinitMaterialsInterface(), FEProblemBase::reinitMaterialsNeighbor(), FEProblemBase::reinitNeighbor(), FEProblemBase::reinitNode(), FEProblemBase::reinitNodeFace(), FEProblemBase::reinitOffDiagScalars(), FEProblemBase::reinitScalars(), FEProblemBase::setCurrentSubdomainID(), 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 2602 of file FEProblemBase.h.

Referenced by FEProblemBase::addAuxArrayVariable(), FEProblemBase::addAuxKernel(), FEProblemBase::addAuxScalarKernel(), FEProblemBase::addAuxScalarVariable(), 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::createTagSolutions(), FEProblemBase::customSetup(), FEProblemBase::determineSolverSystem(), DumpObjectsProblem::DumpObjectsProblem(), FEProblemBase::duplicateVariableCheck(), EigenProblem::EigenProblem(), FEProblemBase::execute(), ExternalProblem::ExternalProblem(), FEProblem::FEProblem(), FEProblemBase::getActualFieldVariable(), FEProblemBase::getArrayVariable(), FEProblemBase::getAuxiliarySystem(), FEProblemBase::getScalarVariable(), FEProblemBase::getStandardVariable(), FEProblemBase::getSystem(), FEProblemBase::getSystemBase(), FEProblemBase::getVariable(), FEProblemBase::getVariableNames(), FEProblemBase::getVectorVariable(), FEProblemBase::hasScalarVariable(), FEProblemBase::hasVariable(), FEProblemBase::init(), FEProblemBase::initialSetup(), FEProblemBase::meshChanged(), FEProblemBase::needBoundaryMaterialOnSide(), FEProblemBase::needSolutionState(), FEProblemBase::outputStep(), FEProblemBase::prepareFace(), FEProblemBase::projectInitialConditionOnCustomRange(), FEProblemBase::projectSolution(), FEProblemBase::reinitDirac(), FEProblemBase::reinitElem(), FEProblemBase::reinitElemPhys(), FEProblemBase::reinitNeighbor(), FEProblemBase::reinitNode(), FEProblemBase::reinitNodeFace(), FEProblemBase::reinitNodes(), FEProblemBase::reinitNodesNeighbor(), FEProblemBase::reinitScalars(), FEProblemBase::restoreOldSolutions(), FEProblemBase::restoreSolutions(), FEProblemBase::saveOldSolutions(), 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 2882 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 2689 of file FEProblemBase.h.

Referenced by FEProblemBase::FEProblemBase(), and FEProblemBase::needSubdomainMaterialOnSide().

◆ _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 2692 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 2821 of file FEProblemBase.h.

Referenced by FEProblemBase::initialSetup().

◆ _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 2817 of file FEProblemBase.h.

Referenced by FEProblemBase::initialSetup().

◆ _calculate_jacobian_in_uo

bool FEProblemBase::_calculate_jacobian_in_uo
protectedinherited

◆ _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 1102 of file SubProblem.h.

Referenced by SubProblem::computingNonlinearResid(), and FEProblemBase::computingNonlinearResid().

◆ _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(), MeshOnlyAction::act(), SetupDebugAction::act(), MaterialOutputAction::act(), Adaptivity::adaptMesh(), FEProblemBase::adaptMesh(), PerfGraph::addToExecutionList(), SimplePredictor::apply(), SystemBase::applyScalingFactors(), MultiApp::backup(), FEProblemBase::backupMultiApps(), CoarsenedPiecewiseLinear::buildCoarsenedGrid(), MeshDiagnosticsGenerator::checkElementOverlap(), MeshDiagnosticsGenerator::checkElementTypes(), MeshDiagnosticsGenerator::checkElementVolumes(), FEProblemBase::checkExceptionAndStopSolve(), SolverSystem::checkInvalidSolution(), MeshDiagnosticsGenerator::checkLocalJacobians(), MeshDiagnosticsGenerator::checkNonConformalMesh(), MeshDiagnosticsGenerator::checkNonConformalMeshFromAdaptivity(), MeshDiagnosticsGenerator::checkNonMatchingEdges(), MeshDiagnosticsGenerator::checkNonPlanarSides(), FEProblemBase::checkProblemIntegrity(), ReferenceResidualConvergence::checkRelativeConvergence(), MeshDiagnosticsGenerator::checkSidesetsOrientation(), MeshDiagnosticsGenerator::checkWatertightNodesets(), MeshDiagnosticsGenerator::checkWatertightSidesets(), IterationAdaptiveDT::computeAdaptiveDT(), TransientBase::computeConstrainedDT(), DefaultMultiAppFixedPointConvergence::computeCustomConvergencePostprocessor(), NonlinearSystemBase::computeDamping(), FixedPointIterationAdaptiveDT::computeDT(), IterationAdaptiveDT::computeDT(), IterationAdaptiveDT::computeFailedDT(), IterationAdaptiveDT::computeInitialDT(), IterationAdaptiveDT::computeInterpolationDT(), LinearSystem::computeLinearSystemTags(), FEProblemBase::computeLinearSystemTags(), NonlinearSystemBase::computeScaling(), Problem::console(), IterationAdaptiveDT::constrainStep(), TimeStepper::constrainStep(), MultiApp::createApp(), FEProblemBase::execMultiApps(), FEProblemBase::execMultiAppTransfers(), MFEMSteady::execute(), MessageFromInput::execute(), SteadyBase::execute(), Eigenvalue::execute(), ActionWarehouse::executeActionsWithAction(), ActionWarehouse::executeAllActions(), MeshGeneratorSystem::executeMeshGenerators(), ElementQualityChecker::finalize(), FEProblemBase::finishMultiAppStep(), MeshRepairGenerator::fixOverlappingNodes(), CoarsenBlockGenerator::generate(), MeshGenerator::generateInternal(), VariableCondensationPreconditioner::getDofToCondense(), InversePowerMethod::init(), NonlinearEigen::init(), FEProblemBase::initialAdaptMesh(), DefaultMultiAppFixedPointConvergence::initialize(), EigenExecutionerBase::inversePowerIteration(), FEProblemBase::joinAndFinalize(), TransientBase::keepGoing(), IterationAdaptiveDT::limitDTByFunction(), IterationAdaptiveDT::limitDTToPostprocessorValue(), FEProblemBase::logAdd(), EigenExecutionerBase::makeBXConsistent(), Console::meshChanged(), MooseBaseErrorInterface::mooseDeprecated(), MooseBaseErrorInterface::mooseInfo(), MooseBaseErrorInterface::mooseWarning(), MooseBaseErrorInterface::mooseWarningNonPrefixed(), ReferenceResidualConvergence::nonlinearConvergenceSetup(), ReporterDebugOutput::output(), PerfGraphOutput::output(), SolutionInvalidityOutput::output(), MaterialPropertyDebugOutput::output(), DOFMapOutput::output(), VariableResidualNormsDebugOutput::output(), Console::output(), ControlOutput::outputActiveObjects(), ControlOutput::outputChangedControls(), ControlOutput::outputControls(), Console::outputInput(), Console::outputPostprocessors(), PseudoTimestep::outputPseudoTimestep(), Console::outputReporters(), DefaultMultiAppFixedPointConvergence::outputResidualNorm(), Console::outputScalarVariables(), Console::outputSystemInformation(), FEProblemBase::possiblyRebuildGeomSearchPatches(), EigenExecutionerBase::postExecute(), AB2PredictorCorrector::postSolve(), ActionWarehouse::printActionDependencySets(), BlockRestrictionDebugOutput::printBlockRestrictionMap(), SolutionInvalidity::printDebug(), EigenExecutionerBase::printEigenvalue(), SecantSolve::printFixedPointConvergenceHistory(), SteffensenSolve::printFixedPointConvergenceHistory(), PicardSolve::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(), EigenProblem::solve(), NonlinearSystem::solve(), LinearSystem::solve(), LStableDirk2::solve(), LStableDirk3::solve(), ImplicitMidpoint::solve(), ExplicitTVDRK2::solve(), LStableDirk4::solve(), AStableDirk4::solve(), ExplicitRK2::solve(), TransientMultiApp::solveStep(), FixedPointSolve::solveStep(), PerfGraphLivePrint::start(), AB2PredictorCorrector::step(), NonlinearEigen::takeStep(), TransientBase::takeStep(), TerminateChainControl::terminate(), Convergence::verboseOutput(), Console::writeTimestepInformation(), Console::writeVariableNorms(), and FEProblemBase::~FEProblemBase().

◆ _const_jacobian

bool FEProblemBase::_const_jacobian
protectedinherited

true if the Jacobian is constant

Definition at line 2789 of file FEProblemBase.h.

Referenced by FEProblemBase::computeJacobianTags(), FEProblemBase::constJacobian(), and FEProblemBase::setConstJacobian().

◆ _control_warehouse

ExecuteMooseObjectWarehouse<Control> FEProblemBase::_control_warehouse
protectedinherited

The control logic warehouse.

Definition at line 2867 of file FEProblemBase.h.

Referenced by FEProblemBase::executeControls(), FEProblemBase::getControlWarehouse(), and FEProblemBase::updateActiveObjects().

◆ _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

◆ _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 2584 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(), EigenProblem::computeJacobianBlocks(), FEProblemBase::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(), EigenProblem::doFreeNonlinearPowerIterations(), EigenProblem::EigenProblem(), FEProblemBase::prepareAssembly(), FEProblemBase::prepareFaceShapes(), FEProblemBase::prepareNeighborShapes(), FEProblemBase::prepareShapes(), FEProblemBase::reinitDirac(), FEProblemBase::reinitOffDiagScalars(), FEProblemBase::setCurrentNonlinearSystem(), FEProblemBase::setResidual(), FEProblemBase::setResidualNeighbor(), EigenProblem::solve(), and FEProblemBase::solve().

◆ _current_solver_sys

SolverSystem* FEProblemBase::_current_solver_sys
protectedinherited

The current solver system.

Definition at line 2587 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 1099 of file SubProblem.h.

Referenced by SubProblem::currentlyComputingResidualAndJacobian(), and SubProblem::setCurrentlyComputingResidualAndJacobian().

◆ _cycles_completed

unsigned int FEProblemBase::_cycles_completed
protectedinherited

◆ _default_ghosting

bool SubProblem::_default_ghosting
protectedinherited

Whether or not to use default libMesh coupling.

Definition at line 1090 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 2756 of file FEProblemBase.h.

Referenced by FEProblemBase::adaptMesh(), FEProblemBase::addAnyRedistributers(), FEProblemBase::addAuxArrayVariable(), FEProblemBase::addAuxKernel(), FEProblemBase::addAuxScalarKernel(), FEProblemBase::addAuxScalarVariable(), 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(), EigenProblem::computeJacobianBlocks(), FEProblemBase::computeJacobianBlocks(), FEProblemBase::computeJacobianTags(), FEProblemBase::computeResidualAndJacobian(), FEProblemBase::computeResidualTags(), FEProblemBase::computeUserObjectsInternal(), FEProblemBase::computingNonlinearResid(), FEProblemBase::createMortarInterface(), FEProblemBase::createQRules(), FEProblemBase::customSetup(), FEProblemBase::execute(), FEProblemBase::getDiracElements(), FEProblemBase::getDisplacedProblem(), FEProblemBase::getMortarUserObjects(), FEProblemBase::ghostGhostedBoundaries(), FEProblemBase::haveADObjects(), FEProblemBase::haveDisplaced(), FEProblemBase::init(), FEProblemBase::initialSetup(), FEProblemBase::initXFEM(), FEProblemBase::jacobianSetup(), FEProblemBase::mesh(), FEProblemBase::meshChanged(), FEProblemBase::outputStep(), FEProblemBase::possiblyRebuildGeomSearchPatches(), FEProblemBase::prepareAssembly(), 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::setCurrentBoundaryID(), FEProblemBase::setCurrentLowerDElem(), FEProblemBase::setCurrentlyComputingResidual(), FEProblemBase::setCurrentSubdomainID(), FEProblemBase::setResidual(), FEProblemBase::setResidualNeighbor(), FEProblemBase::setResidualObjectParamsAndLog(), EigenProblem::solve(), FEProblemBase::solve(), FEProblemBase::timestepSetup(), FEProblemBase::uniformRefine(), and FEProblemBase::updateGeomSearch().

◆ _dt

Real& FEProblemBase::_dt
protectedinherited

◆ _dt_old

Real& FEProblemBase::_dt_old
protectedinherited

Definition at line 2546 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 51 of file MooseObject.h.

Referenced by MooseObject::enabled().

◆ _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 2861 of file FEProblemBase.h.

Referenced by FEProblemBase::checkExceptionAndStopSolve(), and FEProblemBase::setException().

◆ _factory

Factory& SubProblem::_factory
protectedinherited

◆ _fe_matrix_tags

std::set<TagID> FEProblemBase::_fe_matrix_tags
protectedinherited

◆ _fe_vector_tags

std::set<TagID> FEProblemBase::_fe_vector_tags
protectedinherited

◆ _from_multi_app_transfers

ExecuteMooseObjectWarehouse<Transfer> FEProblemBase::_from_multi_app_transfers
protectedinherited

◆ _functions

MooseObjectWarehouse<Function> FEProblemBase::_functions
protectedinherited

◆ _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 2828 of file FEProblemBase.h.

Referenced by 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

◆ _group_variables

std::vector<std::vector<NonlinearVariableName> > ReferenceResidualInterface::_group_variables
protectedinherited

Name of variables that are grouped together to check convergence.

Definition at line 40 of file ReferenceResidualInterface.h.

Referenced by ReferenceResidualInterface::addGroupVariables(), ReferenceResidualConvergence::initialSetup(), and ReferenceResidualInterface::ReferenceResidualInterface().

◆ _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 1079 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 2774 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 2771 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 2846 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 2786 of file FEProblemBase.h.

Referenced by FEProblemBase::initialSetup(), and FEProblemBase::meshChanged().

◆ _has_jacobian

bool FEProblemBase::_has_jacobian
protectedinherited

Indicates if the Jacobian was computed.

Definition at line 2792 of file FEProblemBase.h.

Referenced by FEProblemBase::computeJacobianTags(), FEProblemBase::hasJacobian(), and FEProblemBase::meshChanged().

◆ _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 2843 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 1114 of file SubProblem.h.

Referenced by DisplacedProblem::haveADObjects(), SubProblem::haveADObjects(), and FEProblemBase::haveADObjects().

◆ _ics

InitialConditionWarehouse FEProblemBase::_ics
protectedinherited

◆ _indicators

MooseObjectWarehouse<Indicator> FEProblemBase::_indicators
protectedinherited

◆ _initialized

bool FEProblemBase::_initialized
protectedinherited

Definition at line 2519 of file FEProblemBase.h.

Referenced by FEProblemBase::init().

◆ _input_file_saved

bool FEProblemBase::_input_file_saved
protectedinherited

whether input file has been written

Definition at line 2768 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 2695 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 2876 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

Definition at line 2813 of file FEProblemBase.h.

Referenced by FEProblemBase::checkProblemIntegrity().

◆ _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 2812 of file FEProblemBase.h.

Referenced by FEProblemBase::checkProblemIntegrity(), and FEProblemBase::setKernelCoverageCheck().

◆ _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 2524 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 2536 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 2563 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 2533 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 1052 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 1070 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 1055 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

Definition at line 2825 of file FEProblemBase.h.

Referenced by FEProblemBase::checkProblemIntegrity().

◆ _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 2824 of file FEProblemBase.h.

Referenced by FEProblemBase::checkProblemIntegrity(), 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 2831 of file FEProblemBase.h.

Referenced by FEProblemBase::checkProblemIntegrity().

◆ _material_prop_registry

MaterialPropertyRegistry FEProblemBase::_material_prop_registry
protectedinherited

Definition at line 2639 of file FEProblemBase.h.

Referenced by FEProblemBase::getMaterialPropertyRegistry().

◆ _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 1062 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 1044 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 2837 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 2840 of file FEProblemBase.h.

Referenced by FEProblemBase::addAuxScalarVariable(), and FEProblemBase::getMaxScalarOrder().

◆ _mesh

MooseMesh& FEProblemBase::_mesh
protectedinherited

Definition at line 2489 of file FEProblemBase.h.

Referenced by FEProblemBase::adaptMesh(), FEProblemBase::addAnyRedistributers(), FEProblemBase::addAuxVariable(), FEProblemBase::addGhostedBoundary(), FEProblemBase::addGhostedElem(), FEProblemBase::addVariable(), FEProblemBase::checkCoordinateSystems(), FEProblemBase::checkDependMaterialsHelper(), FEProblemBase::checkProblemIntegrity(), FEProblemBase::checkUserObjects(), FEProblemBase::computeIndicators(), FEProblemBase::computeMarkers(), FEProblemBase::computeUserObjectsInternal(), DumpObjectsProblem::dumpVariableHelper(), FEProblemBase::duplicateVariableCheck(), FEProblemBase::getCurrentAlgebraicBndNodeRange(), FEProblemBase::getCurrentAlgebraicElementRange(), FEProblemBase::getCurrentAlgebraicNodeRange(), FEProblemBase::getDiracElements(), FEProblemBase::getEvaluableElementRange(), FEProblemBase::getNonlinearEvaluableElementRange(), FEProblemBase::ghostGhostedBoundaries(), FEProblemBase::init(), FEProblemBase::initialAdaptMesh(), FEProblemBase::initialSetup(), FEProblemBase::initXFEM(), MFEMProblem::mesh(), FEProblemBase::mesh(), FEProblemBase::meshChanged(), FEProblemBase::possiblyRebuildGeomSearchPatches(), FEProblemBase::prepareMaterials(), FEProblemBase::projectSolution(), FEProblemBase::reinitElemNeighborAndLowerD(), FEProblemBase::reinitElemPhys(), FEProblemBase::setAxisymmetricCoordAxis(), FEProblemBase::setCoordSystem(), FEProblemBase::timestepSetup(), FEProblemBase::uniformRefine(), and FEProblemBase::updateMaxQps().

◆ _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 2617 of file FEProblemBase.h.

Referenced by FEProblemBase::addMeshDivision(), and FEProblemBase::getMeshDivision().

◆ _mortar_data

MortarData 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 90 of file MooseBase.h.

Referenced by AddBCAction::act(), AddConstraintAction::act(), PartitionerAction::act(), AddFVInterfaceKernelAction::act(), AddUserObjectAction::act(), AddFVInitialConditionAction::act(), AddInitialConditionAction::act(), AddKernelAction::act(), AddFunctorMaterialAction::act(), AddMeshGeneratorAction::act(), AddVectorPostprocessorAction::act(), AddInterfaceKernelAction::act(), AddMarkerAction::act(), AddNodalKernelAction::act(), AddScalarKernelAction::act(), AddIndicatorAction::act(), AddPostprocessorAction::act(), AddDamperAction::act(), AddMultiAppAction::act(), AddMaterialAction::act(), AddTransferAction::act(), ReadExecutorParamsAction::act(), AddDiracKernelAction::act(), AddDGKernelAction::act(), AddPositionsAction::act(), AddReporterAction::act(), AddTimesAction::act(), AddFieldSplitAction::act(), AddFVKernelAction::act(), AddFVBCAction::act(), SetupPreconditionerAction::act(), SetupTimeIntegratorAction::act(), AddFunctionAction::act(), AddConvergenceAction::act(), AddMeshDivisionAction::act(), AddHDGKernelAction::act(), AddTimeStepperAction::act(), AddDistributionAction::act(), AddOutputAction::act(), AddLinearFVBCAction::act(), AddLinearFVKernelAction::act(), AddCorrectorAction::act(), AddMeshModifiersAction::act(), AddSamplerAction::act(), AddControlAction::act(), AddMFEMSolverAction::act(), AddMFEMPreconditionerAction::act(), AddMFEMSubMeshAction::act(), AddMFEMFESpaceAction::act(), AddPeriodicBCAction::act(), ADPiecewiseLinearInterpolationMaterial::ADPiecewiseLinearInterpolationMaterial(), BatchMeshGeneratorAction::BatchMeshGeneratorAction(), PiecewiseTabularBase::buildFromFile(), PiecewiseTabularBase::buildFromXY(), PiecewiseLinearBase::buildInterpolation(), CombinerGenerator::CombinerGenerator(), Executor::Executor(), ExtraIDIntegralReporter::ExtraIDIntegralReporter(), QuadraturePointMultiApp::fillPositions(), CentroidMultiApp::fillPositions(), MultiApp::fillPositions(), FunctionDT::FunctionDT(), FillBetweenCurvesGenerator::generate(), FillBetweenPointVectorsGenerator::generate(), FillBetweenSidesetsGenerator::generate(), NearestPointBase< LayeredSideDiffusiveFluxAverage, SideIntegralVariableUserObject >::name(), 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 2551 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 2549 of file FEProblemBase.h.

Referenced by FEProblemBase::needToAddDefaultNonlinearConvergence(), and FEProblemBase::setNeedToAddDefaultNonlinearConvergence().

◆ _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 2795 of file FEProblemBase.h.

◆ _neighbor_material_props

MaterialPropertyStorage& FEProblemBase::_neighbor_material_props
protectedinherited

◆ _nl_evaluable_local_elem_range

std::unique_ptr<libMesh::ConstElemRange> FEProblemBase::_nl_evaluable_local_elem_range
protectedinherited

◆ _nl_sys

std::vector<std::shared_ptr<NonlinearSystem> > FEProblem::_nl_sys
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 2581 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 2522 of file FEProblemBase.h.

Referenced by FEProblemBase::getNonlinearConvergenceNames(), and FEProblemBase::setNonlinearConvergenceNames().

◆ _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 1117 of file SubProblem.h.

Referenced by SubProblem::addNotZeroedVectorTag(), 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 2698 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 2701 of file FEProblemBase.h.

Referenced by FEProblemBase::meshDisplaced(), and FEProblemBase::notifyWhenMeshDisplaces().

◆ _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

◆ _pars

const InputParameters& MooseBaseParameterInterface::_pars
protectedinherited

Parameters of this object, references the InputParameters stored in the InputParametersWarehouse.

Definition at line 173 of file MooseBaseParameterInterface.h.

Referenced by AddFVICAction::act(), AddICAction::act(), CreateProblemAction::act(), CreateProblemDefaultAction::act(), SetupMeshAction::act(), ComposeTimeStepperAction::act(), SetupDebugAction::act(), AddAuxKernelAction::act(), AddPeriodicBCAction::act(), CommonOutputAction::act(), FunctorMaterial::addFunctorPropertyByBlocks(), BreakMeshByBlockGeneratorBase::BreakMeshByBlockGeneratorBase(), PiecewiseTabularBase::buildFromFile(), PNGOutput::calculateRescalingValues(), MooseBaseParameterInterface::connectControllableParams(), Console::Console(), MaterialBase::declareADProperty(), MaterialBase::declareProperty(), FEProblemSolve::FEProblemSolve(), FunctionMaterialBase< is_ad >::FunctionMaterialBase(), FileMeshGenerator::generate(), MaterialBase::getGenericZeroMaterialProperty(), MeshGenerator::getMeshGeneratorNameFromParam(), MeshGenerator::getMeshGeneratorNamesFromParam(), MooseBaseParameterInterface::getParam(), MooseBaseParameterInterface::getRenamedParam(), MeshGenerator::hasGenerateData(), AddVariableAction::init(), AdvancedOutput::initExecutionTypes(), Console::initialSetup(), MooseBaseParameterInterface::isParamSetByUser(), MooseBaseParameterInterface::isParamValid(), MultiApp::keepSolutionDuringRestore(), MooseBaseParameterInterface::MooseBaseParameterInterface(), MooseBaseParameterInterface::paramErrorMsg(), GlobalParamsAction::parameters(), MooseBaseParameterInterface::parameters(), MooseMesh::prepare(), Eigenvalue::prepareSolverOptions(), MooseMesh::setCoordSystem(), MooseMesh::setPartitionerHelper(), SetupMeshAction::setupMesh(), TransientBase::setupTimeIntegrator(), MooseBaseParameterInterface::uniqueName(), and MooseBaseParameterInterface::uniqueParameterName().

◆ _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 2870 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 124 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 2035 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 127 of file PerfGraphInterface.h.

Referenced by PerfGraphInterface::timedSectionName().

◆ _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 2798 of file FEProblemBase.h.

Referenced by FEProblemBase::createTagSolutions().

◆ _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 2024 of file FEProblemBase.h.

Referenced by FEProblemBase::FEProblemBase().

◆ _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

◆ _restartable_app

MooseApp& Restartable::_restartable_app
protectedinherited

Reference to the application.

Definition at line 227 of file Restartable.h.

Referenced by Restartable::registerRestartableDataOnApp(), and Restartable::registerRestartableNameWithFilterOnApp().

◆ _restartable_read_only

const bool Restartable::_restartable_read_only
protectedinherited

Flag for toggling read only status (see ReporterData)

Definition at line 236 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 230 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 233 of file Restartable.h.

Referenced by Restartable::declareRestartableDataHelper().

◆ _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

◆ _skip_exception_check

bool FEProblemBase::_skip_exception_check
protectedinherited

If or not skip 'exception and stop solve'.

Definition at line 2780 of file FEProblemBase.h.

Referenced by FEProblemBase::checkExceptionAndStopSolve(), FEProblemBase::initialSetup(), and FEProblemBase::skipExceptionCheck().

◆ _snesmf_reuse_base

bool FEProblemBase::_snesmf_reuse_base
protectedinherited

If or not to resuse the base vector for matrix-free calculation.

Definition at line 2777 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 2783 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 2596 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 2590 of file FEProblemBase.h.

Referenced by FEProblemBase::addAuxKernel(), FEProblemBase::addObjectParamsHelper(), FEProblemBase::addTimeIntegrator(), FEProblemBase::addVariable(), FEProblemBase::advanceState(), FEProblemBase::computeSystems(), FEProblemBase::copySolutionsBackwards(), FEProblemBase::createQRules(), FEProblemBase::createTagSolutions(), FEProblemBase::createTagVectors(), FEProblemBase::determineSolverSystem(), DumpObjectsProblem::DumpObjectsProblem(), FEProblemBase::duplicateVariableCheck(), EigenProblem::EigenProblem(), ExternalProblem::ExternalProblem(), FEProblem::FEProblem(), FEProblemBase::getActualFieldVariable(), FEProblemBase::getArrayVariable(), FEProblemBase::getScalarVariable(), FEProblemBase::getSolverSystem(), FEProblemBase::getStandardVariable(), FEProblemBase::getSystem(), FEProblemBase::getSystemBase(), FEProblemBase::getVariable(), FEProblemBase::getVariableNames(), FEProblemBase::getVectorVariable(), FEProblemBase::hasScalarVariable(), FEProblemBase::hasSolverVariable(), FEProblemBase::hasVariable(), FEProblemBase::init(), FEProblemBase::initialSetup(), FEProblemBase::meshChanged(), FEProblemBase::needSolutionState(), FEProblemBase::outputStep(), FEProblemBase::projectSolution(), FEProblemBase::reinitElem(), FEProblemBase::reinitElemPhys(), FEProblemBase::restoreOldSolutions(), FEProblemBase::restoreSolutions(), FEProblemBase::saveOldSolutions(), FEProblemBase::setCurrentSubdomainID(), Moose::PetscSupport::setSinglePetscOption(), FEProblemBase::setVariableAllDoFMap(), FEProblemBase::solverSystemConverged(), 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 2593 of file FEProblemBase.h.

Referenced by FEProblemBase::addVariable(), and FEProblemBase::determineSolverSystem().

◆ _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 2608 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

◆ _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 2541 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 2671 of file FEProblemBase.h.

Referenced by FEProblemBase::addMultiApp(), FEProblemBase::computeMultiAppsDT(), and FEProblemBase::updateActiveObjects().

◆ _type

const std::string MooseBase::_type
protectedinherited

◆ _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 2834 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_group_variables

bool ReferenceResidualInterface::_use_group_variables
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 2897 of file FEProblemBase.h.

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

◆ _use_nonlinear

bool FEProblem::_use_nonlinear
protectedinherited

◆ _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 2890 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 2569 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_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 2858 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 2852 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 2752 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 1058 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

The documentation for this class was generated from the following files: