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

#include <MFEMEigenproblem.h>

Inheritance diagram for MFEMEigenproblem:
[legend]

Public Types

enum class  NumericType { REAL , COMPLEX }
 Enumerates the supported numeric representations for MFEM variables and operators. More...
 
enum class  Direction : unsigned char { TO_EXTERNAL_APP , FROM_EXTERNAL_APP }
 
enum class  CoverageCheckMode {
  FALSE , TRUE , OFF , ON ,
  SKIP_LIST , ONLY_LIST
}
 
using DataFileParameterType = DataFileName
 The parameter type this interface expects for a data file name.
 

Public Member Functions

 MFEMEigenproblem (const InputParameters &params)
 
virtual ~MFEMEigenproblem ()
 
virtual void resolveMFEMSolvers () override
 Construct recorded MFEM solvers in dependency order and select the problem driver solver(s).
 
virtual void addVariable (const std::string &var_type, const std::string &var_name, InputParameters &parameters) override
 Override of MFEMProblem::addVariable.
 
Moose::MFEM::EigenRHSCoefficient getRHSCoefficient ()
 Returns the coefficient used to scale the right-hand side of the eigenproblem equation.
 
virtual std::shared_ptr< MFEMWeakFormBase > addDefaultWeakForm () override
 Add default weak form if none has been added by the user.
 
virtual std::shared_ptr< MFEMProblemComposer > addDefaultProblemComposer () override
 Add default problem composer if none has been added by the user.
 
virtual void initialSetup () override
 
virtual void execute (const ExecFlagType &exec_type) override
 Convenience function for performing execution of MOOSE systems.
 
virtual void externalSolve () override
 New interface for solving an External problem.
 
virtual void syncSolutions (Direction) override
 Method to transfer data to/from the external application to the associated transfer mesh.
 
virtual MFEMMesh & mesh () override
 Overwritten mesh() method from base MooseMesh to retrieve the correct mesh type, in this case MFEMMesh.
 
virtual const MFEMMesh & mesh () const override
 
const MooseMesh & mesh (bool use_displaced) const override
 
MooseMesh & mesh (bool use_displaced)
 
virtual std::vector< VariableName > getAuxVariableNames ()
 Returns all the variable names from the auxiliary system base.
 
template<typename T >
std::vector< std::shared_ptr< T > > addObject (const std::string &type, const std::string &name, InputParameters &parameters)
 
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.
 
void addBoundaryCondition (const std::string &bc_name, const std::string &name, InputParameters &parameters) override
 
void addMaterial (const std::string &material_name, const std::string &name, InputParameters &parameters) override
 
void addFunctorMaterial (const std::string &material_name, const std::string &name, InputParameters &parameters) override
 
void addFESpace (const std::string &type, const std::string &name, InputParameters &parameters)
 Add an MFEM FESpace to the problem.
 
void addFESpaceHierarchy (const std::string &type, const std::string &name, InputParameters &parameters)
 Add an MFEMFESpaceHierarchy to the problem.
 
void setMesh ()
 Set the mesh used by MFEM.
 
void addSubMesh (const std::string &type, const std::string &name, InputParameters &parameters)
 Add an MFEM SubMesh to the problem.
 
void addTransfer (const std::string &transfer_name, const std::string &name, InputParameters &parameters) override
 Add transfers between MultiApps and/or MFEM SubMeshes.
 
void addGridFunction (const std::string &var_type, const std::string &var_name, InputParameters &parameters)
 Adds one MFEM GridFunction to be used in the MFEM solve.
 
void addAuxVariable (const std::string &var_type, const std::string &var_name, InputParameters &parameters) override
 Override of ExternalProblem::addAuxVariable.
 
virtual void addAuxVariable (const std::string &var_name, const libMesh::FEType &type, const std::set< SubdomainID > *const active_subdomains=NULL)
 
void addElementalFieldVariable (const std::string &, const std::string &, InputParameters &) override
 Override of FEProblemBase::addElementalFieldVariable to be a no-op because we do not use the Marker/Indicator objects designed to work with libMesh infrastructure.
 
void addKernel (const std::string &kernel_name, const std::string &name, InputParameters &parameters) override
 Override of ExternalProblem::addKernel.
 
void addRealComponentToKernel (const std::string &kernel_name, const std::string &name, InputParameters &parameters)
 Adds a real component kernel to the parent MFEMComplexKernel.
 
void addImagComponentToKernel (const std::string &kernel_name, const std::string &name, InputParameters &parameters)
 Adds an imaginary component kernel to the parent MFEMComplexKernel.
 
void addRealComponentToBC (const std::string &kernel_name, const std::string &name, InputParameters &parameters)
 Adds a real component BC to the parent MFEMComplexIntegratedBC.
 
void addImagComponentToBC (const std::string &kernel_name, const std::string &name, InputParameters &parameters)
 Adds an imaginary component BC to the parent MFEMComplexIntegratedBC.
 
void addWeakForm (const std::string &weak_form_name, const std::string &name, InputParameters &parameters)
 Add an MFEM WeakForm to the problem.
 
void setEquationSystems ()
 Set all MFEM EquationSystems for this problem.
 
std::shared_ptr< Moose::MFEM::EquationSystem > getEquationSystem (const std::string &weak_form_name="") const
 Return the EquationSystem built by the weak form named weak_form_name.
 
void addProblemComposer (const std::string &composer_type, const std::string &name, InputParameters &parameters)
 Method called in AddMFEMProblemComposerAction which will create the problem composer.
 
void setProblemOperators ()
 Set all MFEM ProblemOperators to solve in this problem.
 
std::vector< std::shared_ptr< Moose::MFEM::ProblemOperatorBase > > & getProblemOperators ()
 Get vector of all ProblemOperators added to this problem.
 
void addAuxKernel (const std::string &kernel_name, const std::string &name, InputParameters &parameters) override
 Override of ExternalProblem::addAuxKernel.
 
void addFunction (const std::string &type, const std::string &name, InputParameters &parameters) override
 Override of ExternalProblem::addFunction.
 
void addInitialCondition (const std::string &ic_name, const std::string &name, InputParameters &parameters) override
 Add an MFEM initial condition to the problem.
 
void addPostprocessor (const std::string &type, const std::string &name, InputParameters &parameters) override
 Override of ExternalProblem::addPostprocessor.
 
void addVectorPostprocessor (const std::string &type, const std::string &name, InputParameters &parameters) override
 Add a vector postprocessor and register its vectors with the MFEM execution system.
 
void addIndicator (const std::string &type, const std::string &name, InputParameters &parameters) override
 Override of FEProblemBase::addIndicator.
 
void addMarker (const std::string &type, const std::string &name, InputParameters &parameters) override
 Override of FEProblemBase::addMarker.
 
virtual void addMFEMSolver (const std::string &user_object_name, const std::string &name, InputParameters &parameters)
 Method called in AddMFEMSolverAction which records a solver for later dependency-ordered construction.
 
void executeMFEMObjects (const ExecFlagType &exec_type)
 Execute MFEM executed objects scheduled on the supplied execute flag.
 
InputParameters addMFEMFESpaceFromMOOSEVariable (InputParameters &moosevar_params)
 Method used to get an mfem FEC depending on the variable family specified in the input file.
 
Moose::MFEM::CoefficientManager & getCoefficients ()
 Method to get the PropertyManager object for storing material properties and converting them to MFEM coefficients.
 
MFEMProblemData & getProblemData ()
 Method to get the current MFEMProblemData object storing the current data specifying the FE problem.
 
const MFEMProblemData & getProblemData () const
 Return the current MFEM problem data in a const context.
 
MPI_Comm getComm ()
 Return the MPI communicator associated with this FE problem's mesh.
 
const mfem::ParMesh & getMFEMVariableMesh (std::string var_name)
 Return the ParMesh associated with a particular variable.
 
void displaceMesh ()
 Displace the mesh, if mesh displacement is enabled.
 
void rebalanceMesh (mfem::ParMesh &pmesh)
 Rebalance the (necessarily nonconforming) mesh.
 
const mfem::ParGridFunction & getMeshDisplacementGridFunction ()
 Returns reference to the displacement GridFunction to apply to nodes.
 
Moose::FEBackend feBackend () const override
 
std::string solverTypeString (unsigned int solver_sys_num) override
 Return solver type as a human readable string.
 
void updateFESpaces ()
 Calls Update() on all FE spaces.
 
void updateGridFunctions ()
 Calls Update() on all gridfunctions.
 
bool hRefine ()
 If AMR is enabled, request (and perform if needed) h-refinement.
 
bool pRefine ()
 If AMR is enabled, request (and perform if needed) p-refinement.
 
std::shared_ptr< mfem::ParGridFunction > getGridFunction (const std::string &name)
 
std::shared_ptr< mfem::ParComplexGridFunction > getComplexGridFunction (const std::string &name)
 
NumericType getNumericType () const
 Retrieve the numeric type of the problem.
 
template<typename T >
T & getMFEMObject (const std::string &system, const std::string &name, const THREAD_ID tid=0) const
 Retrieve an MFEM object from the warehouse by system and name.
 
bool hasMFEMObject (const std::string &system, const std::string &name) const
 Determine whether an MFEM object with the supplied system and name exists.
 
mfem::AssemblyLevel assemblyLevel () const
 Return the default assembly level to use for EquationSystem assembly.
 
void setAssemblyLevel (mfem::AssemblyLevel assembly_level)
 Set the default assembly level to use for EquationSystem assembly.
 
virtual void solve (unsigned int nl_sys_num=0) override final
 Solve is implemented to providing syncing to/from the "transfer" mesh.
 
virtual void addExternalVariables ()
 Method called to add AuxVariables to the simulation.
 
bool initialized () const
 
virtual libMesh::EquationSystems & es () 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.
 
Moose::CouplingType coupling () const
 
void setCouplingMatrix (std::unique_ptr< libMesh::CouplingMatrix > cm, const unsigned int nl_sys_num)
 Set custom coupling matrix.
 
void setCouplingMatrix (libMesh::CouplingMatrix *cm, const unsigned int nl_sys_num)
 
const libMesh::CouplingMatrix * couplingMatrix (const unsigned int nl_sys_num) const override
 The coupling matrix defining what blocks exist in the preconditioning matrix.
 
void setNonlocalCouplingMatrix ()
 Set custom coupling matrix for variables requiring nonlocal contribution.
 
bool areCoupled (const unsigned int ivar, const unsigned int jvar, const unsigned int nl_sys_num) const
 
bool hasUOAuxStateCheck () const
 Whether or not MOOSE will perform a user object/auxiliary kernel state check.
 
bool checkingUOAuxState () const
 Return a flag to indicate whether we are executing user objects and auxliary kernels for state check Note: This function can return true only when hasUOAuxStateCheck() returns true, i.e.
 
virtual bool checkResidualForNans () const override
 Whether to check residual for NaN/Inf values.
 
void setCheckResidualForNans (bool check_residual_for_nans)
 Setter for residual NaN/Inf checking.
 
void trustUserCouplingMatrix ()
 Whether to trust the user coupling matrix even if we want to do things like be paranoid and create a full coupling matrix.
 
std::vector< std::pair< MooseVariableFieldBase *, MooseVariableFieldBase * > > & couplingEntries (const THREAD_ID tid, const unsigned int nl_sys_num)
 
std::vector< std::pair< MooseVariableFieldBase *, MooseVariableFieldBase * > > & nonlocalCouplingEntries (const THREAD_ID tid, const unsigned int nl_sys_num)
 
const std::vector< std::pair< MooseVariableFieldBase *, MooseVariableScalar * > > & fieldScalarCouplingEntries (const THREAD_ID tid, const unsigned int nl_sys_num) const
 
virtual bool hasVariable (const std::string &var_name) const override
 Whether or not this problem has the variable.
 
bool hasSolverVariable (const std::string &var_name) const
 
virtual const 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 (Nonlinear vs.
 
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 (Nonlinear vs.
 
virtual 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)
 
MooseVariableFieldBase & getActualFieldVariable (const THREAD_ID tid, const std::string &var_name) override
 Returns the variable reference for requested MooseVariableField which may be in any system.
 
virtual MooseVariable & getStandardVariable (const THREAD_ID tid, const std::string &var_name) override
 Returns the variable reference for requested MooseVariable which may be in any system.
 
virtual VectorMooseVariable & getVectorVariable (const THREAD_ID tid, const std::string &var_name) override
 Returns the variable reference for requested VectorMooseVariable which may be in any system.
 
virtual ArrayMooseVariable & getArrayVariable (const THREAD_ID tid, const std::string &var_name) override
 Returns the variable reference for requested ArrayMooseVariable which may be in any system.
 
virtual bool hasScalarVariable (const std::string &var_name) const override
 Returns a Boolean indicating whether any system contains a variable with the name provided.
 
virtual MooseVariableScalar & getScalarVariable (const THREAD_ID tid, const std::string &var_name) override
 Returns the scalar variable reference from whichever system contains it.
 
virtual libMesh::System & getSystem (const std::string &var_name) override
 Returns the equation system containing the variable provided.
 
const RestartableEquationSystems & getRestartableEquationSystems () const
 Get the RestartableEquationSystems object.
 
virtual void setActiveElementalMooseVariables (const std::set< MooseVariableFEBase * > &moose_vars, const THREAD_ID tid) override
 Set the MOOSE variables to be reinited on each element.
 
virtual void clearActiveElementalMooseVariables (const THREAD_ID tid) override
 Clear the active elemental MooseVariableFEBase.
 
virtual void clearActiveFEVariableCoupleableMatrixTags (const THREAD_ID tid) override
 
virtual void clearActiveFEVariableCoupleableVectorTags (const THREAD_ID tid) override
 
virtual void setActiveFEVariableCoupleableVectorTags (std::set< TagID > &vtags, const THREAD_ID tid) override
 
virtual void setActiveFEVariableCoupleableMatrixTags (std::set< TagID > &mtags, const THREAD_ID tid) override
 
virtual void clearActiveScalarVariableCoupleableMatrixTags (const THREAD_ID tid) override
 
virtual void clearActiveScalarVariableCoupleableVectorTags (const THREAD_ID tid) override
 
virtual void setActiveScalarVariableCoupleableVectorTags (std::set< TagID > &vtags, const THREAD_ID tid) override
 
virtual void setActiveScalarVariableCoupleableMatrixTags (std::set< TagID > &mtags, const THREAD_ID tid) override
 
virtual void createQRules (libMesh::QuadratureType type, libMesh::Order order, libMesh::Order volume_order=libMesh::INVALID_ORDER, libMesh::Order face_order=libMesh::INVALID_ORDER, SubdomainID block=Moose::ANY_BLOCK_ID, bool allow_negative_qweights=true)
 
void bumpVolumeQRuleOrder (libMesh::Order order, SubdomainID block)
 Increases the element/volume quadrature order for the specified mesh block if and only if the current volume quadrature order is lower.
 
void bumpAllQRuleOrder (libMesh::Order order, SubdomainID block)
 
unsigned int getMaxQps () const
 
libMesh::Order getMaxScalarOrder () const
 
void checkNonlocalCoupling ()
 
void checkUserObjectJacobianRequirement (THREAD_ID tid)
 
void setVariableAllDoFMap (const std::vector< const MooseVariableFEBase * > &moose_vars)
 
const std::vector< const MooseVariableFEBase * > & getUserObjectJacobianVariables (const THREAD_ID tid) const
 
virtual Assembly & assembly (const THREAD_ID tid, const unsigned int sys_num) override
 
virtual const Assembly & assembly (const THREAD_ID tid, const unsigned int sys_num) const override
 
Moose::Kokkos::Assembly & kokkosAssembly ()
 
const Moose::Kokkos::Assembly & kokkosAssembly () const
 
virtual std::vector< VariableName > getVariableNames ()
 Returns a list of all the variables in the problem (both from the NL and Aux systems.
 
void checkDuplicatePostprocessorVariableNames ()
 
void timestepSetup () override
 
void customSetup (const ExecFlagType &exec_type) override
 
void residualSetup () override
 
void jacobianSetup () override
 
virtual void prepare (const Elem *elem, const THREAD_ID tid) override
 
virtual void prepare (const Elem *elem, unsigned int ivar, unsigned int jvar, const std::vector< dof_id_type > &dof_indices, const THREAD_ID tid) override
 
virtual void prepareFace (const Elem *elem, const THREAD_ID tid) override
 
virtual void setCurrentSubdomainID (const Elem *elem, const THREAD_ID tid) override
 
virtual void setNeighborSubdomainID (const Elem *elem, unsigned int side, const THREAD_ID tid) override
 
virtual void setNeighborSubdomainID (const Elem *elem, const THREAD_ID tid)
 
virtual void prepareAssembly (const THREAD_ID tid) override
 
virtual void prepareAssemblyNeighbor (const THREAD_ID tid)
 Begin a fresh neighbor accumulation phase by sizing and zeroing the neighbor blocks.
 
virtual void addGhostedElem (dof_id_type elem_id) override
 Will make sure that all dofs connected to elem_id are ghosted to this processor.
 
virtual void addGhostedBoundary (BoundaryID boundary_id) override
 Will make sure that all necessary elements from boundary_id are ghosted to this processor.
 
virtual void ghostGhostedBoundaries () override
 Causes the boundaries added using addGhostedBoundary to actually be ghosted.
 
virtual void sizeZeroes (unsigned int size, const THREAD_ID tid)
 
virtual bool reinitDirac (const Elem *elem, const THREAD_ID tid) override
 Returns true if the Problem has Dirac kernels it needs to compute on elem.
 
virtual void reinitElem (const Elem *elem, const THREAD_ID tid) override
 
virtual void reinitElemPhys (const Elem *elem, const std::vector< Point > &phys_points_in_elem, const THREAD_ID tid) override
 
void reinitElemFace (const Elem *elem, unsigned int side, BoundaryID, const THREAD_ID tid)
 
virtual void reinitElemFace (const Elem *elem, unsigned int side, const THREAD_ID tid) override
 
virtual void reinitLowerDElem (const Elem *lower_d_elem, const THREAD_ID tid, const std::vector< Point > *const pts=nullptr, const std::vector< Real > *const weights=nullptr) override
 
virtual void reinitNode (const Node *node, const THREAD_ID tid) override
 
virtual void reinitNodeFace (const Node *node, BoundaryID bnd_id, const THREAD_ID tid) override
 
virtual void reinitNeighbor (const Elem *elem, unsigned int side, const THREAD_ID tid) override
 
virtual void reinitNeighborPhys (const Elem *neighbor, unsigned int neighbor_side, const std::vector< Point > &physical_points, const THREAD_ID tid) override
 
virtual void reinitNeighborPhys (const Elem *neighbor, const std::vector< Point > &physical_points, const THREAD_ID tid) override
 
virtual void reinitElemNeighborAndLowerD (const Elem *elem, unsigned int side, const THREAD_ID tid) override
 
virtual void reinitScalars (const THREAD_ID tid, bool reinit_for_derivative_reordering=false) override
 fills the VariableValue arrays for scalar variables from the solution vector
 
virtual void reinitOffDiagScalars (const THREAD_ID tid) override
 
virtual void getDiracElements (std::set< const Elem * > &elems) override
 Fills "elems" with the elements that should be looped over for Dirac Kernels.
 
virtual void clearDiracInfo () override
 Gets called before Dirac Kernels are asked to add the points they are supposed to be evaluated in.
 
virtual void subdomainSetup (SubdomainID subdomain, const THREAD_ID tid)
 
virtual void neighborSubdomainSetup (SubdomainID subdomain, const THREAD_ID tid)
 
virtual void newAssemblyArray (std::vector< std::shared_ptr< SolverSystem > > &solver_systems)
 
virtual void initNullSpaceVectors (const InputParameters &parameters, std::vector< std::shared_ptr< NonlinearSystemBase > > &nl)
 
virtual void init () override
 
void initKokkos ()
 Construct Kokkos assembly and systems and allocate Kokkos material property storages.
 
virtual void solveLinearSystem (const unsigned int linear_sys_num, const Moose::PetscSupport::PetscOptions *po=nullptr)
 Build and solve a linear system.
 
virtual void setException (const std::string &message)
 Set an exception, which is stored at this point by toggling a member variable in this class, and which must be followed up with by a call to checkExceptionAndStopSolve().
 
virtual bool hasException ()
 Whether or not an exception has occurred.
 
virtual void checkExceptionAndStopSolve (bool print_message=true)
 Check to see if an exception has occurred on any processor and, if possible, force the solve to fail, which will result in the time step being cut.
 
virtual bool solverSystemConverged (const unsigned int solver_sys_num) override
 
virtual unsigned int nNonlinearIterations (const unsigned int nl_sys_num) const override
 
virtual unsigned int nLinearIterations (const unsigned int nl_sys_num) const override
 
virtual Real finalNonlinearResidual (const unsigned int nl_sys_num) const override
 
virtual bool computingPreSMOResidual (const unsigned int nl_sys_num) const override
 Returns true if the problem is in the process of computing it's initial residual.
 
virtual bool startedInitialSetup ()
 Returns true if we are in or beyond the initialSetup stage.
 
virtual void onTimestepBegin () override
 
virtual void onTimestepEnd () override
 
virtual Real & time () const
 
virtual Real & timeOld () const
 
virtual Real & timeOlder () const
 The time two steps back.
 
virtual int & timeStep () const
 
virtual Real & dt () const
 
virtual Real & dtOld () const
 
Real getTimeFromStateArg (const Moose::StateArg &state) const
 Returns the time associated with the requested state.
 
virtual void transient (bool trans)
 
virtual bool isTransient () const override
 
virtual void addTimeIntegrator (const std::string &type, const std::string &name, InputParameters &parameters)
 
virtual void addPredictor (const std::string &type, const std::string &name, InputParameters &parameters)
 
virtual void copySolutionsBackwards ()
 
void skipNextForwardSolutionCopyToOld ()
 Prevents the copy of the solution vector to the old solution vector in each system.
 
virtual void advanceState ()
 Advance all of the state holding vectors / datastructures so that we can move to the next timestep.
 
virtual void restoreSolutions ()
 
void backupGeometricSearchState ()
 Snapshot geometric search state (both on the regular and, if present, the displaced mesh) so it can be restored with restoreGeometricSearchState() if this step is later rejected.
 
void restoreGeometricSearchState ()
 Restore geometric search state captured by the most recent backupGeometricSearchState().
 
virtual void saveOldSolutions ()
 Allocate vectors and save old solutions into them.
 
virtual void restoreOldSolutions ()
 Restore old solutions from the backup vectors and deallocate them.
 
void needSolutionState (unsigned int oldest_needed, Moose::SolutionIterationType iteration_type)
 Declare that we need up to old (1) or older (2) solution states for a given type of iteration.
 
bool hasSolutionState (unsigned int state, Moose::SolutionIterationType iteration_type) const
 Whether we need up to old (1) or older (2) solution states for a given type of iteration.
 
virtual void outputStep (ExecFlagType type)
 Output the current step.
 
virtual void postExecute ()
 Method called at the end of the simulation.
 
void forceOutput ()
 Indicates that the next call to outputStep should be forced.
 
virtual void initPetscOutputAndSomeSolverSettings ()
 Reinitialize PETSc output for proper linear/nonlinear iteration display.
 
Moose::PetscSupport::PetscOptions & getPetscOptions ()
 Retrieve a writable reference the PETSc options (used by PetscSupport)
 
void logAdd (const std::string &system, const std::string &name, const std::string &type, const InputParameters &params) const
 Output information about the object just added to the problem.
 
virtual bool hasFunction (const std::string &name, const THREAD_ID tid=0)
 
virtual Function & getFunction (const std::string &name, const THREAD_ID tid=0)
 
virtual void addKokkosFunction (const std::string &type, const std::string &name, InputParameters &parameters)
 Add a Kokkos function to the problem.
 
virtual bool hasKokkosFunction (const std::string &name) const
 Get whether a Kokkos function exists.
 
virtual Moose::Kokkos::Function getKokkosFunction (const std::string &name)
 Get a Kokkos function in an abstract type.
 
template<typename T >
T & getKokkosFunction (const std::string &name)
 Get a Kokkos function in a concrete type.
 
virtual void addMeshDivision (const std::string &type, const std::string &name, InputParameters &params)
 Add a MeshDivision.
 
MeshDivision & getMeshDivision (const std::string &name, const THREAD_ID tid=0) const
 Get a MeshDivision.
 
virtual void addConvergence (const std::string &type, const std::string &name, InputParameters &parameters)
 Adds a Convergence object.
 
virtual Convergence & getConvergence (const std::string &name, const THREAD_ID tid=0) const
 Gets a Convergence object.
 
virtual const std::vector< std::shared_ptr< Convergence > > & getConvergenceObjects (const THREAD_ID tid=0) const
 Gets the Convergence objects.
 
virtual bool hasConvergence (const std::string &name, const THREAD_ID tid=0) const
 Returns true if the problem has a Convergence object of the given name.
 
bool needToAddDefaultNonlinearConvergence () const
 Returns true if the problem needs to add the default nonlinear convergence.
 
bool needToAddDefaultMultiAppFixedPointConvergence () const
 Returns true if the problem needs to add the default fixed point convergence.
 
bool needToAddDefaultSteadyStateConvergence () const
 Returns true if the problem needs to add the default steady-state detection convergence.
 
void setNeedToAddDefaultNonlinearConvergence ()
 Sets _need_to_add_default_nonlinear_convergence to true.
 
void setNeedToAddDefaultMultiAppFixedPointConvergence ()
 Sets _need_to_add_default_multiapp_fixed_point_convergence to true.
 
void setNeedToAddDefaultSteadyStateConvergence ()
 Sets _need_to_add_default_steady_state_convergence to true.
 
bool hasSetMultiAppFixedPointConvergenceName () const
 Returns true if the problem has set the fixed point convergence name.
 
bool hasSetSteadyStateConvergenceName () const
 Returns true if the problem has set the steady-state detection convergence name.
 
virtual void addDefaultNonlinearConvergence (const InputParameters &params)
 Adds the default nonlinear Convergence associated with the problem.
 
virtual bool onlyAllowDefaultNonlinearConvergence () const
 Returns true if an error will result if the user supplies 'nonlinear_convergence'.
 
void addDefaultMultiAppFixedPointConvergence (const InputParameters &params)
 Adds the default fixed point Convergence associated with the problem.
 
void addDefaultSteadyStateConvergence (const InputParameters &params)
 Adds the default steady-state detection Convergence.
 
virtual void addLineSearch (const InputParameters &)
 add a MOOSE line search
 
virtual void lineSearch ()
 execute MOOSE line search
 
LineSearch * getLineSearch () override
 getter for the MOOSE line search
 
virtual void addDistribution (const std::string &type, const std::string &name, InputParameters &parameters)
 The following functions will enable MOOSE to have the capability to import distributions.
 
virtual bool hasDistribution (const std::string &name) const
 
virtual Distribution & getDistribution (const std::string &name)
 
virtual void addSampler (const std::string &type, const std::string &name, InputParameters &parameters)
 The following functions will enable MOOSE to have the capability to import Samplers.
 
virtual Sampler & getSampler (const std::string &name, const THREAD_ID tid=0)
 
NonlinearSystemBase & getNonlinearSystemBase (const unsigned int sys_num)
 
const NonlinearSystemBase & getNonlinearSystemBase (const unsigned int sys_num) const
 
void setCurrentNonlinearSystem (const unsigned int nl_sys_num)
 
NonlinearSystemBase & currentNonlinearSystem ()
 
const NonlinearSystemBase & currentNonlinearSystem () const
 
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.
 
virtual SystemBase & systemBaseNonlinear (const unsigned int sys_num) override
 
virtual const SystemBase & systemBaseSolver (const unsigned int sys_num) const override
 Return the solver system object as a base class reference given the system number.
 
virtual SystemBase & systemBaseSolver (const unsigned int sys_num) override
 
virtual const SystemBase & systemBaseAuxiliary () const override
 Return the auxiliary system object as a base class reference.
 
virtual SystemBase & systemBaseAuxiliary () override
 
virtual NonlinearSystem & getNonlinearSystem (const unsigned int sys_num)
 
virtual const SystemBase & getSystemBase (const unsigned int sys_num) const
 Get constant reference to a system in this problem.
 
virtual SystemBase & getSystemBase (const unsigned int sys_num)
 Get non-constant reference to a system in this problem.
 
SystemBase & getSystemBase (const std::string &sys_name)
 Get non-constant reference to a system in this problem.
 
LinearSystem & getLinearSystem (unsigned int sys_num)
 Get non-constant reference to a linear system.
 
const LinearSystem & getLinearSystem (unsigned int sys_num) const
 Get a constant reference to a linear system.
 
SolverSystem & getSolverSystem (unsigned int sys_num)
 Get non-constant reference to a solver system.
 
const SolverSystem & getSolverSystem (unsigned int sys_num) const
 Get a constant reference to a solver system.
 
void setCurrentLinearSystem (unsigned int sys_num)
 Set the current linear system pointer.
 
LinearSystem & currentLinearSystem ()
 Get a non-constant reference to the current linear system.
 
const LinearSystem & currentLinearSystem () const
 Get a constant reference to the current linear system.
 
virtual const SystemBase & systemBaseLinear (unsigned int sys_num) const override
 Get a constant base class reference to a linear system.
 
virtual SystemBase & systemBaseLinear (unsigned int sys_num) override
 Get a non-constant base class reference to a linear system.
 
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 addKokkosKernel (const std::string &kernel_name, const std::string &name, InputParameters &parameters)
 
virtual void addKokkosNodalKernel (const std::string &kernel_name, const std::string &name, InputParameters &parameters)
 
virtual void addKokkosBoundaryCondition (const std::string &bc_name, const std::string &name, InputParameters &parameters)
 
virtual void addKokkosLinearFVKernel (const std::string &kernel_name, const std::string &name, InputParameters &parameters)
 
virtual void addKokkosLinearFVBC (const std::string &bc_name, const std::string &name, InputParameters &parameters)
 
virtual void addConstraint (const std::string &c_name, const std::string &name, InputParameters &parameters)
 
virtual void setInputParametersFEProblem (InputParameters &parameters)
 
virtual void 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 addAuxScalarKernel (const std::string &kernel_name, const std::string &name, InputParameters &parameters)
 
virtual void addKokkosAuxKernel (const std::string &kernel_name, const std::string &name, InputParameters &parameters)
 
AuxiliarySystem & getAuxiliarySystem ()
 
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 addFVInitialCondition (const std::string &ic_name, const std::string &name, InputParameters &parameters)
 Add an initial condition for a finite volume variables.
 
void projectSolution ()
 
unsigned short getCurrentICState ()
 Retrieves the current initial condition state.
 
void projectInitialConditionOnCustomRange (libMesh::ConstElemRange &elem_range, ConstBndNodeRange &bnd_node_range, const std::optional< std::set< VariableName > > &target_vars=std::nullopt)
 Project initial conditions for custom elem_range and bnd_node_range This is needed when elements/boundary nodes are added to a specific subdomain at an intermediate step.
 
void projectFunctionOnCustomRange (ConstElemRange &elem_range, Number(*func)(const Point &, const libMesh::Parameters &, const std::string &, const std::string &), Gradient(*func_grad)(const Point &, const libMesh::Parameters &, const std::string &, const std::string &), const libMesh::Parameters &params, const std::vector< VariableName > &target_vars)
 Project a function onto a range of elements for a given variable.
 
virtual void 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 addKokkosMaterial (const std::string &material_name, const std::string &name, InputParameters &parameters)
 
void prepareMaterials (const std::unordered_set< unsigned int > &consumer_needed_mat_props, const SubdomainID blk_id, const THREAD_ID tid)
 Add the MooseVariables and the material properties that the current materials depend on to the dependency list.
 
void reinitMaterials (SubdomainID blk_id, const THREAD_ID tid, bool swap_stateful=true)
 
void reinitMaterialsFace (SubdomainID blk_id, const THREAD_ID tid, bool swap_stateful=true, const std::deque< MaterialBase * > *reinit_mats=nullptr)
 reinit materials on element faces
 
void reinitMaterialsFaceOnBoundary (const BoundaryID boundary_id, const SubdomainID blk_id, const THREAD_ID tid, const bool swap_stateful=true, const std::deque< MaterialBase * > *const reinit_mats=nullptr)
 reinit materials on element faces on a boundary (internal or external) This specific routine helps us not reinit when don't need to
 
void reinitMaterialsNeighborOnBoundary (const BoundaryID boundary_id, const SubdomainID blk_id, const THREAD_ID tid, const bool swap_stateful=true, const std::deque< MaterialBase * > *const reinit_mats=nullptr)
 reinit materials on neighbor element (usually faces) on a boundary (internal or external) This specific routine helps us not reinit when don't need to
 
void reinitMaterialsNeighbor (SubdomainID blk_id, const THREAD_ID tid, bool swap_stateful=true, const std::deque< MaterialBase * > *reinit_mats=nullptr)
 reinit materials on the neighboring element face
 
void reinitMaterialsBoundary (BoundaryID boundary_id, const THREAD_ID tid, bool swap_stateful=true, const std::deque< MaterialBase * > *reinit_mats=nullptr)
 reinit materials on a boundary
 
void reinitMaterialsInterface (BoundaryID boundary_id, const THREAD_ID tid, bool swap_stateful=true)
 
void prepareKokkosMaterials (const std::unordered_set< unsigned int > &consumer_needed_mat_props)
 
void reinitKokkosMaterials ()
 
virtual void swapBackMaterials (const THREAD_ID tid)
 
virtual void swapBackMaterialsFace (const THREAD_ID tid)
 
virtual void swapBackMaterialsNeighbor (const THREAD_ID tid)
 
void setActiveMaterialProperties (const std::unordered_set< unsigned int > &mat_prop_ids, const THREAD_ID tid)
 Record and set the material properties required by the current computing thread.
 
bool hasActiveMaterialProperties (const THREAD_ID tid) const
 Method to check whether or not a list of active material roperties has been set.
 
void clearActiveMaterialProperties (const THREAD_ID tid)
 Clear the active material properties.
 
virtual void addReporter (const std::string &type, const std::string &name, InputParameters &parameters)
 Add a Reporter object to the simulation.
 
virtual void addKokkosPostprocessor (const std::string &pp_name, const std::string &name, InputParameters &parameters)
 
virtual void addKokkosVectorPostprocessor (const std::string &pp_name, const std::string &name, InputParameters &parameters)
 
virtual void addKokkosReporter (const std::string &type, const std::string &name, InputParameters &parameters)
 
const ReporterData & getReporterData () const
 Provides const access the ReporterData object.
 
ReporterData & getReporterData (ReporterData::WriteKey)
 Provides non-const access the ReporterData object that is used to store reporter values.
 
virtual std::vector< std::shared_ptr< UserObject > > addUserObject (const std::string &user_object_name, const std::string &name, InputParameters &parameters)
 
template<class T >
T & getUserObject (const std::string &name, unsigned int tid=0) const
 Get the user object by its name.
 
const UserObject & getUserObjectBase (const std::string &name, const THREAD_ID tid=0) const
 Get the user object by its name.
 
bool hasUserObject (const std::string &name) const
 Check if there if a user object of given name.
 
virtual void addKokkosUserObject (const std::string &user_object_name, const std::string &name, InputParameters &parameters)
 
template<class T >
const T & getKokkosUserObject (const std::string &name) const
 Get the Kokkos user object by its name.
 
bool hasKokkosUserObject (const std::string &name) const
 Check if there if a Kokkos user object of given name.
 
void checkUserObjectNameCollision (const std::string &name, const std::string &type) const
 Check for name collision between different user objects.
 
const Positions & getPositionsObject (const std::string &name) const
 Get the Positions object by its name.
 
virtual void addFVInterpolationMethod (const std::string &method_type, const std::string &name, InputParameters &parameters)
 Add an FV interpolation method.
 
virtual void addFVGradientMethod (const std::string &method_type, const std::string &name, InputParameters &parameters)
 Add an FV gradient method.
 
FVGradientMethod & getFVGradientMethod (const GradientMethodName &name, const THREAD_ID tid=0)
 Retrieve a writable FV gradient method owned by this problem.
 
const FVGradientMethod & getFVGradientMethod (const GradientMethodName &name, const THREAD_ID tid=0) const
 Retrieve a read-only FV gradient method owned by this problem.
 
bool hasFVGradientMethod (const GradientMethodName &name) const
 Check if an FV gradient method with a given name exists.
 
const FVInterpolationMethod & getFVInterpolationMethod (const InterpolationMethodName &name, const THREAD_ID tid=0) const
 Retrieve an FV interpolation method.
 
const FVFaceInterpolationMethod & getFVFaceInterpolationMethod (const InterpolationMethodName &name, const THREAD_ID tid=0) const
 Retrieve a scalar face interpolation method.
 
const FVAdvectedInterpolationMethod & getFVAdvectedInterpolationMethod (const InterpolationMethodName &name, const THREAD_ID tid=0) const
 Retrieve an advected interpolation method.
 
bool hasFVInterpolationMethod (const InterpolationMethodName &name) const
 Check if an FV interpolation method with a given name exists.
 
bool hasPostprocessorValueByName (const PostprocessorName &name) const
 Whether or not a Postprocessor value exists by a given name.
 
const Postprocessor & getPostprocessorObjectByName (const PostprocessorName &object_name, const THREAD_ID tid=0) const
 Return the Postprocessor object registered under the supplied object name.
 
const PostprocessorValue & getPostprocessorValueByName (const PostprocessorName &name, std::size_t t_index=0) const
 Get a read-only reference to the value associated with a Postprocessor that exists.
 
void setPostprocessorValueByName (const PostprocessorName &name, const PostprocessorValue &value, std::size_t t_index=0)
 Set the value of a PostprocessorValue.
 
bool hasPostprocessor (const std::string &name) const
 Deprecated.
 
const VectorPostprocessorValue & getVectorPostprocessorValueByName (const std::string &object_name, const std::string &vector_name, std::size_t t_index=0) const
 Get a read-only reference to the vector value associated with the VectorPostprocessor.
 
void setVectorPostprocessorValueByName (const std::string &object_name, const std::string &vector_name, const VectorPostprocessorValue &value, std::size_t t_index=0)
 Set the value of a VectorPostprocessor vector.
 
const VectorPostprocessor & getVectorPostprocessorObjectByName (const std::string &object_name, const THREAD_ID tid=0) const
 Return the VPP object given the name.
 
virtual void addDamper (const std::string &damper_name, const std::string &name, InputParameters &parameters)
 
void setupDampers ()
 
bool hasDampers ()
 Whether or not this system has dampers.
 
virtual void addMultiApp (const std::string &multi_app_name, const std::string &name, InputParameters &parameters)
 Add a MultiApp to the problem.
 
std::shared_ptr< MultiApp > getMultiApp (const std::string &multi_app_name) const
 Get a MultiApp object by name.
 
std::vector< std::shared_ptr< Transfer > > getTransfers (ExecFlagType type, Transfer::DIRECTION direction) const
 Get Transfers by ExecFlagType and direction.
 
std::vector< std::shared_ptr< Transfer > > getTransfers (Transfer::DIRECTION direction) const
 
const ExecuteMooseObjectWarehouse< Transfer > & getMultiAppTransferWarehouse (Transfer::DIRECTION direction) const
 Return the complete warehouse for MultiAppTransfer object for the given direction.
 
void execMultiAppTransfers (ExecFlagType type, Transfer::DIRECTION direction, const MultiAppName &source_app="")
 Execute MultiAppTransfers associated with execution flag and direction.
 
bool execMultiApps (ExecFlagType type, bool auto_advance=true)
 Execute the MultiApps associated with the ExecFlagType.
 
unsigned int numConcurrentMultiApps () const
 
void partitionConcurrentMultiApps ()
 Assign each multiapp that shares an 'execution_order_group' with others a disjoint subset of the ranks so that they can be solved concurrently (at most one child app per rank at a time).
 
void finalizeMultiApps ()
 
void incrementMultiAppTStep (ExecFlagType type)
 Advance the MultiApps t_step (incrementStepOrReject) associated with the ExecFlagType.
 
void advanceMultiApps (ExecFlagType type)
 Deprecated method; use finishMultiAppStep and/or incrementMultiAppTStep depending on your purpose.
 
void finishMultiAppStep (ExecFlagType type, bool recurse_through_multiapp_levels=false)
 Finish the MultiApp time step (endStep, postStep) associated with the ExecFlagType.
 
void backupMultiApps (ExecFlagType type)
 Backup the MultiApps associated with the ExecFlagType.
 
void restoreMultiApps (ExecFlagType type, bool force=false)
 Restore the MultiApps associated with the ExecFlagType.
 
Real computeMultiAppsDT (ExecFlagType type)
 Find the smallest timestep over all MultiApps.
 
Real computeResidualL2Norm (NonlinearSystemBase &sys)
 Computes the residual of a nonlinear system using whatever is sitting in the current solution vector then returns the L2 norm.
 
Real computeResidualL2Norm (LinearSystem &sys)
 Computes the residual of a linear system using whatever is sitting in the current solution vector then returns the L2 norm.
 
virtual Real computeResidualL2Norm ()
 Computes the residual using whatever is sitting in the current solution vector then returns the L2 norm.
 
virtual void computeResidualSys (libMesh::NonlinearImplicitSystem &sys, const NumericVector< libMesh::Number > &soln, NumericVector< libMesh::Number > &residual)
 This function is called by Libmesh to form a residual.
 
void computeResidual (libMesh::NonlinearImplicitSystem &sys, const NumericVector< libMesh::Number > &soln, NumericVector< libMesh::Number > &residual)
 This function is called by Libmesh to form a residual.
 
virtual void computeResidual (const NumericVector< libMesh::Number > &soln, NumericVector< libMesh::Number > &residual, const unsigned int nl_sys_num)
 Form a residual with default tags (nontime, time, residual).
 
void computeResidualAndJacobian (const NumericVector< libMesh::Number > &soln, NumericVector< libMesh::Number > &residual, libMesh::SparseMatrix< libMesh::Number > &jacobian)
 Form a residual and Jacobian with default tags.
 
virtual void computeResidualTag (const NumericVector< libMesh::Number > &soln, NumericVector< libMesh::Number > &residual, TagID tag)
 Form a residual vector for a given tag.
 
virtual void computeResidualType (const NumericVector< libMesh::Number > &soln, NumericVector< libMesh::Number > &residual, TagID tag)
 Form a residual vector for a given tag and "residual" tag.
 
virtual void computeResidualInternal (const NumericVector< libMesh::Number > &soln, NumericVector< libMesh::Number > &residual, const std::set< TagID > &tags)
 Form a residual vector for a set of tags.
 
virtual void computeResidualTags (const std::set< TagID > &tags)
 Form multiple residual vectors and each is associated with one tag.
 
virtual void computeJacobianSys (libMesh::NonlinearImplicitSystem &sys, const NumericVector< libMesh::Number > &soln, libMesh::SparseMatrix< libMesh::Number > &jacobian)
 Form a Jacobian matrix.
 
virtual void computeJacobian (const NumericVector< libMesh::Number > &soln, libMesh::SparseMatrix< libMesh::Number > &jacobian, const unsigned int nl_sys_num)
 Form a Jacobian matrix with the default tag (system).
 
virtual void computeJacobianTag (const NumericVector< libMesh::Number > &soln, libMesh::SparseMatrix< libMesh::Number > &jacobian, TagID tag)
 Form a Jacobian matrix for a given tag.
 
virtual void computeJacobianInternal (const NumericVector< libMesh::Number > &soln, libMesh::SparseMatrix< libMesh::Number > &jacobian, const std::set< TagID > &tags)
 Form a Jacobian matrix for multiple tags.
 
virtual void computeJacobianTags (const std::set< TagID > &tags)
 Form multiple matrices, and each is associated with a tag.
 
virtual void computeJacobianBlocks (std::vector< JacobianBlock * > &blocks, const unsigned int nl_sys_num)
 Computes several Jacobian blocks simultaneously, summing their contributions into smaller preconditioning matrices.
 
virtual void computeJacobianBlock (libMesh::SparseMatrix< libMesh::Number > &jacobian, libMesh::System &precond_system, unsigned int ivar, unsigned int jvar)
 Really not a good idea to use this.
 
virtual void computeLinearSystemSys (libMesh::LinearImplicitSystem &sys, libMesh::SparseMatrix< libMesh::Number > &system_matrix, NumericVector< libMesh::Number > &rhs, const bool compute_gradients=true)
 Assemble both the right hand side and the system matrix of a given linear system.
 
void computeLinearSystemTags (const NumericVector< libMesh::Number > &soln, const std::set< TagID > &vector_tags, const std::set< TagID > &matrix_tags, const bool compute_gradients=true)
 Assemble the current linear system given a set of vector and matrix tags.
 
virtual Real computeDamping (const NumericVector< libMesh::Number > &soln, const NumericVector< libMesh::Number > &update)
 
virtual bool shouldUpdateSolution ()
 Check to see whether the problem should update the solution.
 
virtual bool updateSolution (NumericVector< libMesh::Number > &vec_solution, NumericVector< libMesh::Number > &ghosted_solution)
 Update the solution.
 
virtual void predictorCleanup (NumericVector< libMesh::Number > &ghosted_solution)
 Perform cleanup tasks after application of predictor to solution vector.
 
virtual void computeBounds (libMesh::NonlinearImplicitSystem &sys, NumericVector< libMesh::Number > &lower, NumericVector< libMesh::Number > &upper)
 
virtual void computeNearNullSpace (libMesh::NonlinearImplicitSystem &sys, std::vector< NumericVector< libMesh::Number > * > &sp)
 
virtual void computeNullSpace (libMesh::NonlinearImplicitSystem &sys, std::vector< NumericVector< libMesh::Number > * > &sp)
 
virtual void computeTransposeNullSpace (libMesh::NonlinearImplicitSystem &sys, std::vector< NumericVector< libMesh::Number > * > &sp)
 
void appendConstantModes (const std::vector< VariableName > &vars, const std::string &prefix, std::vector< NumericVector< libMesh::Number > * > &sp)
 Append one mode per variable of vars in the current nonlinear system to sp.
 
virtual void computePostCheck (libMesh::NonlinearImplicitSystem &sys, const NumericVector< libMesh::Number > &old_soln, NumericVector< libMesh::Number > &search_direction, NumericVector< libMesh::Number > &new_soln, bool &changed_search_direction, bool &changed_new_soln)
 
virtual void computeIndicatorsAndMarkers ()
 
virtual void computeIndicators ()
 
virtual void computeMarkers ()
 
virtual void addResidual (const THREAD_ID tid) override
 
virtual void addResidualNeighbor (const THREAD_ID tid) override
 
virtual void addResidualLower (const THREAD_ID tid) override
 
virtual void addResidualScalar (const THREAD_ID tid=0)
 
virtual void cacheResidual (const THREAD_ID tid) override
 
virtual void cacheResidualNeighbor (const THREAD_ID tid) override
 
virtual void addCachedResidual (const THREAD_ID tid) override
 
virtual void addCachedResidualDirectly (NumericVector< libMesh::Number > &residual, const THREAD_ID tid)
 Allows for all the residual contributions that are currently cached to be added directly into the vector passed in.
 
virtual void setResidual (NumericVector< libMesh::Number > &residual, const THREAD_ID tid) override
 
virtual void setResidual (libMesh::NumericVector< libMesh::Number > &residual, const THREAD_ID tid)=0
 
virtual void setResidualNeighbor (NumericVector< libMesh::Number > &residual, const THREAD_ID tid) override
 
virtual void setResidualNeighbor (libMesh::NumericVector< libMesh::Number > &residual, const THREAD_ID tid)=0
 
virtual void addJacobian (const THREAD_ID tid) override
 
virtual void addJacobianNeighbor (const THREAD_ID tid) override
 
virtual void addJacobianNeighbor (libMesh::SparseMatrix< libMesh::Number > &jacobian, unsigned int ivar, unsigned int jvar, const DofMap &dof_map, std::vector< dof_id_type > &dof_indices, std::vector< dof_id_type > &neighbor_dof_indices, const std::set< TagID > &tags, const THREAD_ID tid) override
 
virtual void addJacobianNeighbor (libMesh::SparseMatrix< libMesh::Number > &jacobian, unsigned int ivar, unsigned int jvar, const libMesh::DofMap &dof_map, std::vector< dof_id_type > &dof_indices, std::vector< dof_id_type > &neighbor_dof_indices, const std::set< TagID > &tags, const THREAD_ID tid)=0
 
virtual void addJacobianNeighborLowerD (const THREAD_ID tid) override
 
virtual void addJacobianLowerD (const THREAD_ID tid) override
 
virtual void addJacobianBlockTags (libMesh::SparseMatrix< libMesh::Number > &jacobian, unsigned int ivar, unsigned int jvar, const DofMap &dof_map, std::vector< dof_id_type > &dof_indices, const std::set< TagID > &tags, const THREAD_ID tid)
 
virtual void addJacobianScalar (const THREAD_ID tid=0)
 
virtual void addJacobianOffDiagScalar (unsigned int ivar, const THREAD_ID tid=0)
 
virtual void cacheJacobian (const THREAD_ID tid) override
 
virtual void cacheJacobianNeighbor (const THREAD_ID tid) override
 
virtual void addCachedJacobian (const THREAD_ID tid) override
 
virtual void prepareShapes (unsigned int var, const THREAD_ID tid) override
 
virtual void prepareFaceShapes (unsigned int var, const THREAD_ID tid) override
 
virtual void prepareNeighborShapes (unsigned int var, const THREAD_ID tid) override
 
virtual void addDisplacedProblem (std::shared_ptr< DisplacedProblem > displaced_problem)
 
virtual std::shared_ptr< const DisplacedProblem > getDisplacedProblem () const
 
virtual std::shared_ptr< DisplacedProblem > getDisplacedProblem ()
 
virtual void updateGeomSearch (GeometricSearchData::GeometricSearchType type=GeometricSearchData::ALL) override
 Update this object's geometric search data as well as the displaced problem's if it exists.
 
virtual void updateMortarMesh ()
 
void createMortarInterface (const std::pair< BoundaryID, BoundaryID > &primary_secondary_boundary_pair, const std::pair< SubdomainID, SubdomainID > &primary_secondary_subdomain_pair, bool on_displaced, bool periodic, const bool debug, const bool correct_edge_dropping, const Real minimum_projection_angle, const Mortar3DSubpatchPlane mortar_3d_subpatch_plane, const MooseEnum &triangulation, const bool triangulate_triangles, const Mortar3DQuadraturePointMapping mortar_3d_qp_mapping=Mortar3DQuadraturePointMapping::NORMAL_PROJECTION)
 
const std::unordered_map< std::pair< BoundaryID, BoundaryID >, MortarInterfaceConfig > & getMortarInterfaces (bool on_displaced) const
 
virtual void possiblyRebuildGeomSearchPatches ()
 
virtual GeometricSearchData & geomSearchData () override
 
void setRestartFile (const std::string &file_name)
 Communicate to the Resurector the name of the restart filer.
 
const MaterialPropertyRegistry & getMaterialPropertyRegistry () const
 
const InitialConditionWarehouse & getInitialConditionWarehouse () const
 Return InitialCondition storage.
 
const FVInitialConditionWarehouse & getFVInitialConditionWarehouse () const
 Return FVInitialCondition storage.
 
SolverParams & solverParams (unsigned int solver_sys_num=0)
 Get the solver parameters.
 
const SolverParams & solverParams (unsigned int solver_sys_num=0) const
 const version
 
Adaptivity & adaptivity ()
 
virtual void initialAdaptMesh ()
 
virtual bool adaptMesh ()
 
unsigned int getNumCyclesCompleted ()
 
bool hasInitialAdaptivity () const
 Return a Boolean indicating whether initial AMR is turned on.
 
bool hasInitialAdaptivity () const
 Return a Boolean indicating whether initial AMR is turned on.
 
void initXFEM (std::shared_ptr< XFEMInterface > xfem)
 Create XFEM controller object.
 
std::shared_ptr< XFEMInterface > getXFEM ()
 Get a pointer to the XFEM controller object.
 
bool haveXFEM ()
 Find out whether the current analysis is using XFEM.
 
virtual bool updateMeshXFEM ()
 Update the mesh due to changing XFEM cuts.
 
virtual bool allowMeshContractionAfterMeshChanged () const
 Whether meshChanged() should allow the mesh to be contracted (deletes children of coarsened elements and renumbers nodes and elements).
 
virtual void meshChanged (bool intermediate_change, bool contract_mesh, bool clean_refinement_flags)
 Update data after a mesh change.
 
void notifyWhenMeshChanges (MeshChangedInterface *mci)
 Register an object that derives from MeshChangedInterface to be notified when the mesh changes.
 
void notifyWhenMeshDisplaces (MeshDisplacedInterface *mdi)
 Register an object that derives from MeshDisplacedInterface to be notified when the displaced mesh gets updated.
 
void initElementStatefulProps (const libMesh::ConstElemRange &elem_range, const bool threaded)
 Initialize stateful properties for elements in a specific elem_range This is needed when elements/boundary nodes are added to a specific subdomain at an intermediate step.
 
void initKokkosStatefulProps ()
 
virtual void checkProblemIntegrity ()
 Method called to perform a series of sanity checks before a simulation is run.
 
void registerRandomInterface (RandomInterface &random_interface, const std::string &name)
 
void setConstJacobian (bool state)
 Set flag that Jacobian is constant (for optimization purposes)
 
void setKernelCoverageCheck (CoverageCheckMode mode)
 Set flag to indicate whether kernel coverage checks should be performed.
 
void setKernelCoverageCheck (bool flag)
 Set flag to indicate whether kernel coverage checks should be performed.
 
void setMaterialCoverageCheck (CoverageCheckMode mode)
 Set flag to indicate whether material coverage checks should be performed.
 
void setMaterialCoverageCheck (bool flag)
 Set flag to indicate whether material coverage checks should be performed.
 
void setParallelBarrierMessaging (bool flag)
 Toggle parallel barrier messaging (defaults to on).
 
void setVerboseProblem (bool verbose)
 Make the problem be verbose.
 
bool verboseMultiApps () const
 Whether or not to use verbose printing for MultiApps.
 
void parentOutputPositionChanged ()
 Calls parentOutputPositionChanged() on all sub apps.
 
unsigned int subspaceDim (const std::string &prefix) const
 Dimension of the subspace spanned by vectors with a given prefix.
 
const MooseObjectWarehouse< Function > & getFunctionWarehouse ()
 
const MaterialWarehouse & getMaterialWarehouse () const
 
const MaterialWarehouse & getRegularMaterialsWarehouse () const
 
const MaterialWarehouse & getDiscreteMaterialWarehouse () const
 
const MaterialWarehouse & getInterfaceMaterialsWarehouse () const
 
const MaterialWarehouse & getKokkosMaterialsWarehouse () const
 
std::shared_ptr< MaterialBase > getMaterial (std::string name, Moose::MaterialDataType type, const THREAD_ID tid=0, bool no_warn=false)
 Return a pointer to a MaterialBase object.
 
MaterialData & getMaterialData (Moose::MaterialDataType type, const THREAD_ID tid=0, const MooseObject *object=nullptr) const
 
MaterialData & getKokkosMaterialData (Moose::MaterialDataType type, const MooseObject *object=nullptr) const
 
const std::set< const MooseObject * > & getMaterialPropertyStorageConsumers (Moose::MaterialDataType type) const
 
const std::set< const MooseObject * > & getKokkosMaterialPropertyStorageConsumers (Moose::MaterialDataType type) const
 
bool restoreOriginalNonzeroPattern () const
 
bool errorOnJacobianNonzeroReallocation () const
 Will return True if the user wants to get an error when a nonzero is reallocated in the Jacobian by PETSc.
 
void setErrorOnJacobianNonzeroReallocation (bool state)
 
bool preserveMatrixSparsityPattern () const
 Will return True if the executioner in use requires preserving the sparsity pattern of the matrices being formed during the solve.
 
void setPreserveMatrixSparsityPattern (bool preserve)
 Set whether the sparsity pattern of the matrices being formed during the solve (usually the Jacobian) should be preserved.
 
bool ignoreZerosInJacobian () const
 Will return true if zeros in the Jacobian are to be dropped from the sparsity pattern.
 
void setIgnoreZerosInJacobian (bool state)
 Set whether the zeros in the Jacobian should be dropped from the sparsity pattern.
 
bool acceptInvalidSolution () const
 Whether or not to accept the solution based on its invalidity.
 
bool allowInvalidSolution () const
 Whether to accept / allow an invalid solution.
 
bool showInvalidSolutionConsole () const
 Whether or not to print out the invalid solutions summary table in console.
 
bool immediatelyPrintInvalidSolution () const
 Whether or not the solution invalid warnings are printed out immediately.
 
bool hasTimeIntegrator () const
 Returns whether or not this Problem has a TimeIntegrator.
 
virtual void executeAllObjects (const ExecFlagType &exec_type)
 
virtual Executor & getExecutor (const std::string &name)
 
virtual void computeUserObjects (const ExecFlagType &type, const Moose::AuxGroup &group)
 Call compute methods on UserObjects.
 
virtual void computeUserObjectByName (const ExecFlagType &type, const Moose::AuxGroup &group, const std::string &name)
 Compute an user object with the given name.
 
void needsPreviousNewtonIteration (bool state)
 Set a flag that indicated that user required values for the previous Newton iterate.
 
bool needsPreviousNewtonIteration () const
 Check to see whether we need to compute the variable values of the previous Newton iterate.
 
void needsPreviousMultiAppFixedPointIterationSolution (bool needed, const unsigned int solver_sys_num)
 Set a flag that indicated that user required values for the previous multiapp fixed point iterate for the solver systems (not auxiliary)
 
bool needsPreviousMultiAppFixedPointIterationSolution (const unsigned int solver_sys_num) const
 Check to see whether we need to compute the variable values of the previous multiapp fixed point iteration for the solver systems (not auxiliary)
 
void needsPreviousMultiAppFixedPointIterationAuxiliary (bool state)
 Set a flag that indicated that user required values for the previous multiapp fixed point iterate for the auxiliary system.
 
bool needsPreviousMultiAppFixedPointIterationAuxiliary () const
 Check to see whether we need to compute the variable values of the previous multiapp fixed point iteration for the auxiliary system.
 
void needsPreviousMultiSystemFixedPointIterationSolution (bool needed, const unsigned int solver_sys_num)
 Set a flag that indicates that user requires values for the previous multi-system fixed point iterate for the solver systems (not auxiliary)
 
bool needsPreviousMultiSystemFixedPointIterationSolution (const unsigned int solver_sys_num) const
 Check to see whether we need to compute the variable values of the previous multi-system fixed point iteration for the solver systems (not auxiliary)
 
void needsPreviousMultiSystemFixedPointIterationAuxiliary (bool state)
 Set a flag that indicates that user requires values for the previous multi-system fixed point iterate for the auxiliary system.
 
bool needsPreviousMultiSystemFixedPointIterationAuxiliary () const
 Check to see whether we need to compute the variable values of the previous multi-system fixed point iteration for the auxiliary system.
 
ExecuteMooseObjectWarehouse< Control > & getControlWarehouse ()
 Reference to the control logic warehouse.
 
void executeControls (const ExecFlagType &exec_type)
 Performs setup and execute calls for Control objects.
 
void executeSamplers (const ExecFlagType &exec_type)
 Performs setup and execute calls for Sampler objects.
 
virtual void updateActiveObjects ()
 Update the active objects in the warehouses.
 
void reportMooseObjectDependency (MooseObject *a, MooseObject *b)
 Register a MOOSE object dependency so we can either order operations properly or report when we cannot.
 
ExecuteMooseObjectWarehouse< MultiApp > & getMultiAppWarehouse ()
 
bool hasJacobian () const
 Returns _has_jacobian.
 
bool constJacobian () const
 Returns _const_jacobian (whether a MOOSE object has specified that the Jacobian is the same as the previous time it was computed)
 
void addOutput (const std::string &, const std::string &, InputParameters &)
 Adds an Output object.
 
TheWarehouse & theWarehouse () const
 
void setSNESMFReuseBase (bool reuse, bool set_by_user)
 If or not to reuse the base vector for matrix-free calculation.
 
bool useSNESMFReuseBase ()
 Return a flag that indicates if we are reusing the vector base.
 
void skipExceptionCheck (bool skip_exception_check)
 Set a flag that indicates if we want to skip exception and stop solve.
 
bool isSNESMFReuseBaseSetbyUser ()
 Return a flag to indicate if _snesmf_reuse_base is set by users.
 
bool & petscOptionsInserted ()
 If PETSc options are already inserted.
 
PetscOptions & petscOptionsDatabase ()
 
virtual void setUDotRequested (const bool u_dot_requested)
 Set boolean flag to true to store solution time derivative.
 
virtual void setUDotDotRequested (const bool u_dotdot_requested)
 Set boolean flag to true to store solution second time derivative.
 
virtual void setUDotOldRequested (const bool u_dot_old_requested)
 Set boolean flag to true to store old solution time derivative.
 
virtual void setUDotDotOldRequested (const bool u_dotdot_old_requested)
 Set boolean flag to true to store old solution second time derivative.
 
virtual bool uDotRequested ()
 Get boolean flag to check whether solution time derivative needs to be stored.
 
virtual bool uDotDotRequested ()
 Get boolean flag to check whether solution second time derivative needs to be stored.
 
virtual bool uDotOldRequested ()
 Get boolean flag to check whether old solution time derivative needs to be stored.
 
virtual bool uDotDotOldRequested ()
 Get boolean flag to check whether old solution second time derivative needs to be stored.
 
void haveADObjects (bool have_ad_objects) override
 Method for setting whether we have any ad objects.
 
virtual void haveADObjects (bool have_ad_objects)
 Method for setting whether we have any ad objects.
 
bool haveADObjects () const
 Method for reading wehther we have any ad objects.
 
bool shouldSolve () const
 
const MortarInterfaceWarehouse & mortarData () const
 Returns the mortar data object.
 
MortarInterfaceWarehouse & mortarData ()
 
virtual bool hasNeighborCoupling () const
 Whether the simulation has neighbor coupling.
 
virtual bool hasMortarCoupling () const
 Whether the simulation has mortar coupling.
 
void computingNonlinearResid (bool computing_nonlinear_residual) final
 Set whether or not the problem is in the process of computing the nonlinear residual.
 
bool computingNonlinearResid () const
 Returns true if the problem is in the process of computing the nonlinear residual.
 
virtual void computingNonlinearResid (const bool computing_nonlinear_residual)
 Set whether or not the problem is in the process of computing the nonlinear residual.
 
void setCurrentlyComputingResidual (bool currently_computing_residual) final
 Set whether or not the problem is in the process of computing the residual.
 
void numGridSteps (unsigned int num_grid_steps)
 Set the number of steps in a grid sequences.
 
void uniformRefine ()
 uniformly refine the problem mesh(es).
 
void automaticScaling (bool automatic_scaling) override
 Automatic scaling setter.
 
virtual void automaticScaling (bool automatic_scaling)
 Automatic scaling setter.
 
bool automaticScaling () const
 Automatic scaling getter.
 
virtual void reinitElemFaceRef (const Elem *elem, unsigned int side, Real tolerance, const std::vector< Point > *const pts, const std::vector< Real > *const weights=nullptr, const THREAD_ID tid=0) override
 reinitialize FE objects on a given element on a given side at a given set of reference points and then compute variable data.
 
virtual void reinitNeighborFaceRef (const Elem *neighbor_elem, unsigned int neighbor_side, Real tolerance, const std::vector< Point > *const pts, const std::vector< Real > *const weights=nullptr, const THREAD_ID tid=0) override
 reinitialize FE objects on a given neighbor element on a given side at a given set of reference points and then compute variable data.
 
bool fvBCsIntegrityCheck () const
 
void fvBCsIntegrityCheck (bool fv_bcs_integrity_check)
 
bool sideUOInterfaceMatPropIntegrityCheck () const
 
void getFVMatsAndDependencies (SubdomainID block_id, std::vector< std::shared_ptr< MaterialBase > > &face_materials, std::vector< std::shared_ptr< MaterialBase > > &neighbor_materials, std::set< MooseVariableFieldBase * > &variables, const THREAD_ID tid)
 Get the materials and variables potentially needed for FV.
 
void resizeMaterialData (Moose::MaterialDataType data_type, unsigned int nqp, const THREAD_ID tid)
 Resize material data.
 
bool haveDisplaced () const override final
 Whether we have a displaced problem in our simulation.
 
bool hasLinearConvergenceObjects () const
 Whether we have linear convergence objects.
 
void setNonlinearConvergenceNames (const std::vector< ConvergenceName > &convergence_names)
 Sets the nonlinear convergence object name(s) if there is one.
 
void setLinearConvergenceNames (const std::vector< ConvergenceName > &convergence_names)
 Sets the linear convergence object name(s) if there is one.
 
void setMultiAppFixedPointConvergenceName (const ConvergenceName &convergence_name)
 Sets the MultiApp fixed point convergence object name if there is one.
 
void setSteadyStateConvergenceName (const ConvergenceName &convergence_name)
 Sets the steady-state detection convergence object name if there is one.
 
const std::vector< ConvergenceName > & getNonlinearConvergenceNames () const
 Gets the nonlinear system convergence object name(s).
 
const std::vector< ConvergenceName > & getLinearConvergenceNames () const
 Gets the linear convergence object name(s).
 
const ConvergenceName & getMultiAppFixedPointConvergenceName () const
 Gets the MultiApp fixed point convergence object name.
 
const ConvergenceName & getSteadyStateConvergenceName () const
 Gets the steady-state detection convergence object name.
 
void computingScalingJacobian (bool computing_scaling_jacobian)
 Setter for whether we're computing the scaling jacobian.
 
bool computingScalingJacobian () const override final
 Getter for whether we're computing the scaling jacobian.
 
void computingScalingResidual (bool computing_scaling_residual)
 Setter for whether we're computing the scaling residual.
 
bool computingScalingResidual () const override final
 
MooseAppCoordTransform & coordTransform ()
 
virtual std::size_t numNonlinearSystems () const override
 
virtual std::size_t numLinearSystems () const override
 
virtual std::size_t numSolverSystems () const override
 
bool isSolverSystemNonlinear (const unsigned int sys_num)
 Check if the solver system is nonlinear.
 
virtual unsigned int currentNlSysNum () const override
 
virtual unsigned int currentLinearSysNum () const override
 
virtual unsigned int nlSysNum (const NonlinearSystemName &nl_sys_name) const override
 
unsigned int linearSysNum (const LinearSystemName &linear_sys_name) const override
 
unsigned int solverSysNum (const SolverSystemName &solver_sys_name) const override
 
unsigned int systemNumForVariable (const VariableName &variable_name) const
 
bool getFailNextNonlinearConvergenceCheck () const
 Whether it will skip further residual evaluations and fail the next nonlinear convergence check(s)
 
bool getFailNextSystemConvergenceCheck () const
 Whether it will fail the next system convergence check(s), triggering failed step behavior.
 
void setFailNextNonlinearConvergenceCheck ()
 Skip further residual evaluations and fail the next nonlinear convergence check(s)
 
void setFailNextSystemConvergenceCheck ()
 Tell the problem that the system(s) cannot be considered converged next time convergence is checked.
 
void resetFailNextNonlinearConvergenceCheck ()
 Tell the problem that the nonlinear convergence check(s) may proceed as normal.
 
void resetFailNextSystemConvergenceCheck ()
 Tell the problem that the system convergence check(s) may proceed as normal.
 
void setExecutionPrinting (const ExecFlagEnum &print_exec)
 
bool shouldPrintExecution (const THREAD_ID tid) const
 Check whether the problem should output execution orders at this time.
 
void reinitMortarUserObjects (BoundaryID primary_boundary_id, BoundaryID secondary_boundary_id, bool displaced)
 Call reinit on mortar user objects with matching primary boundary ID, secondary boundary ID, and displacement characteristics.
 
virtual const std::vector< VectorTag > & currentResidualVectorTags () const override
 Return the residual vector tags we are currently computing.
 
void setCurrentResidualVectorTags (const std::set< TagID > &vector_tags)
 Set the current residual vector tag data structure based on the passed in tag IDs.
 
void clearCurrentResidualVectorTags ()
 Clear the current residual vector tag data structure.
 
void clearCurrentJacobianMatrixTags ()
 Clear the current Jacobian matrix tag data structure ... if someone creates it.
 
virtual void needFV () override
 marks this problem as including/needing finite volume functionality.
 
virtual bool haveFV () const override
 returns true if this problem includes/needs finite volume functionality.
 
virtual bool hasNonlocalCoupling () const override
 Whether the simulation has active nonlocal coupling which should be accounted for in the Jacobian.
 
bool identifyVariableGroupsInNL () const
 Whether to identify variable groups in nonlinear systems.
 
virtual void setCurrentLowerDElem (const Elem *const lower_d_elem, const THREAD_ID tid) override
 Set the current lower dimensional element.
 
virtual void setCurrentBoundaryID (BoundaryID bid, const THREAD_ID tid) override
 sets the current boundary ID in assembly
 
const std::vector< NonlinearSystemName > & getNonlinearSystemNames () const
 
const std::vector< LinearSystemName > & getLinearSystemNames () const
 
const std::vector< SolverSystemName > & getSolverSystemNames () const
 
virtual const libMesh::CouplingMatrix & nonlocalCouplingMatrix (const unsigned i) const override
 
virtual bool checkNonlocalCouplingRequirement () const override
 
void createTagMatrices (CreateTaggedMatrixKey)
 
bool useHashTableMatrixAssembly () const
 
bool hasKokkosObjects () const
 
bool hasKokkosResidualObjects () const
 
void addKokkosMeshInitializationHook (std::function< void()> function)
 Add a function hook that needs to be called after Kokkos mesh initialization.
 
const bool & currentlyComputingResidual () const
 Returns true if the problem is in the process of computing the residual.
 
THREAD_ID numThreads () const
 
virtual bool nlConverged (const unsigned int nl_sys_num)
 
virtual bool converged (const unsigned int sys_num)
 Eventually we want to convert this virtual over to taking a solver system number argument.
 
bool defaultGhosting ()
 Whether or not the user has requested default ghosting ot be on.
 
virtual TagID addVectorTag (const TagName &tag_name, const Moose::VectorTagType type=Moose::VECTOR_TAG_RESIDUAL)
 Create a Tag.
 
void addNotZeroedVectorTag (const TagID tag)
 Adds a vector tag to the list of vectors that will not be zeroed when other tagged vectors are.
 
bool vectorTagNotZeroed (const TagID tag) const
 Checks if a vector tag is in the list of vectors that will not be zeroed when other tagged vectors are.
 
virtual const VectorTag & getVectorTag (const TagID tag_id) const
 Get a VectorTag from a TagID.
 
std::vector< VectorTag > getVectorTags (const std::set< TagID > &tag_ids) const
 
virtual const std::vector< VectorTag > & getVectorTags (const Moose::VectorTagType type=Moose::VECTOR_TAG_ANY) const
 Return all vector tags, where a tag is represented by a map from name to ID.
 
virtual TagID getVectorTagID (const TagName &tag_name) const
 Get a TagID from a TagName.
 
virtual TagName vectorTagName (const TagID tag) const
 Retrieve the name associated with a TagID.
 
virtual bool vectorTagExists (const TagID tag_id) const
 Check to see if a particular Tag exists.
 
virtual bool vectorTagExists (const TagName &tag_name) const
 Check to see if a particular Tag exists by using Tag name.
 
virtual unsigned int numVectorTags (const Moose::VectorTagType type=Moose::VECTOR_TAG_ANY) const
 The total number of tags, which can be limited to the tag type.
 
virtual Moose::VectorTagType vectorTagType (const TagID tag_id) const
 
virtual TagID addMatrixTag (TagName tag_name)
 Create a Tag.
 
virtual TagID getMatrixTagID (const TagName &tag_name) const
 Get a TagID from a TagName.
 
virtual TagName matrixTagName (TagID tag)
 Retrieve the name associated with a TagID.
 
virtual bool matrixTagExists (const TagName &tag_name) const
 Check to see if a particular Tag exists.
 
virtual bool matrixTagExists (TagID tag_id) const
 Check to see if a particular Tag exists.
 
virtual unsigned int numMatrixTags () const
 The total number of tags.
 
virtual std::map< TagName, TagID > & getMatrixTags ()
 Return all matrix tags in the system, where a tag is represented by a map from name to ID.
 
virtual bool hasLinearVariable (const std::string &var_name) const
 Whether or not this problem has this linear variable.
 
virtual bool hasAuxiliaryVariable (const std::string &var_name) const
 Whether or not this problem has this auxiliary variable.
 
virtual const std::set< MooseVariableFieldBase * > & getActiveElementalMooseVariables (const THREAD_ID tid) const
 Get the MOOSE variables to be reinited on each element.
 
virtual bool hasActiveElementalMooseVariables (const THREAD_ID tid) const
 Whether or not a list of active elemental moose variables has been set.
 
Moose::CoordinateSystemType getCoordSystem (SubdomainID sid) const
 
unsigned int getAxisymmetricRadialCoord () const
 Returns the desired radial direction for RZ coordinate transformation.
 
virtual DiracKernelInfo & diracKernelInfo ()
 
void reinitNodes (const std::vector< dof_id_type > &nodes, const THREAD_ID tid)
 
void reinitNodesNeighbor (const std::vector< dof_id_type > &nodes, const THREAD_ID tid)
 
void reinitNeighborLowerDElem (const Elem *elem, const THREAD_ID tid=0)
 reinitialize a neighboring lower dimensional element
 
void reinitMortarElem (const Elem *elem, const THREAD_ID tid=0)
 Reinit a mortar element to obtain a valid JxW.
 
void reinitGeomSearch ()
 reinitialize this object's geometric search data, e.g.
 
virtual void storeSubdomainMatPropName (SubdomainID block_id, const std::string &name)
 Adds the given material property to a storage map based on block ids.
 
virtual void storeBoundaryMatPropName (BoundaryID boundary_id, const std::string &name)
 Adds the given material property to a storage map based on boundary ids.
 
virtual void storeSubdomainZeroMatProp (SubdomainID block_id, const MaterialPropertyName &name)
 Adds to a map based on block ids of material properties for which a zero value can be returned.
 
virtual void storeBoundaryZeroMatProp (BoundaryID boundary_id, const MaterialPropertyName &name)
 Adds to a map based on boundary ids of material properties for which a zero value can be returned.
 
virtual void storeSubdomainDelayedCheckMatProp (const std::string &requestor, SubdomainID block_id, const std::string &name)
 Adds to a map based on block ids of material properties to validate.
 
virtual void storeBoundaryDelayedCheckMatProp (const std::string &requestor, BoundaryID boundary_id, const std::string &name)
 Adds to a map based on boundary ids of material properties to validate.
 
virtual void checkBlockMatProps ()
 Checks block material properties integrity.
 
virtual void checkBoundaryMatProps ()
 Checks boundary material properties integrity.
 
virtual void markMatPropRequested (const std::string &)
 Helper method for adding a material property name to the _material_property_requested set.
 
virtual bool isMatPropRequested (const std::string &prop_name) const
 Find out if a material property has been requested by any object.
 
void addConsumedPropertyName (const MooseObjectName &obj_name, const std::string &prop_name)
 Helper for tracking the object that is consuming a property for MaterialPropertyDebugOutput.
 
const std::map< MooseObjectName, std::set< std::string > > & getConsumedPropertyMap () const
 Return the map that tracks the object with consumed material properties.
 
virtual std::set< SubdomainID > getMaterialPropertyBlocks (const std::string &prop_name)
 Get a vector containing the block ids the material property is defined on.
 
virtual std::vector< SubdomainName > getMaterialPropertyBlockNames (const std::string &prop_name)
 Get a vector of block id equivalences that the material property is defined on.
 
virtual bool hasBlockMaterialProperty (SubdomainID block_id, const std::string &prop_name)
 Check if a material property is defined on a block.
 
virtual std::set< BoundaryID > getMaterialPropertyBoundaryIDs (const std::string &prop_name)
 Get a vector containing the block ids the material property is defined on.
 
virtual std::vector< BoundaryName > getMaterialPropertyBoundaryNames (const std::string &prop_name)
 Get a vector of block id equivalences that the material property is defined on.
 
virtual bool hasBoundaryMaterialProperty (BoundaryID boundary_id, const std::string &prop_name)
 Check if a material property is defined on a block.
 
virtual std::set< dof_id_type > & ghostedElems ()
 Return the list of elements that should have their DoFs ghosted to this processor.
 
const bool & currentlyComputingJacobian () const
 Returns true if the problem is in the process of computing the Jacobian.
 
void setCurrentlyComputingJacobian (const bool currently_computing_jacobian)
 Set whether or not the problem is in the process of computing the Jacobian.
 
const bool & currentlyComputingResidualAndJacobian () const
 Returns true if the problem is in the process of computing the residual and the Jacobian.
 
void setCurrentlyComputingResidualAndJacobian (bool currently_computing_residual_and_jacobian)
 Set whether or not the problem is in the process of computing the Jacobian.
 
virtual bool safeAccessTaggedMatrices () const
 Is it safe to access the tagged matrices.
 
virtual bool safeAccessTaggedVectors () const
 Is it safe to access the tagged vectors.
 
const std::set< TagID > & getActiveScalarVariableCoupleableVectorTags (const THREAD_ID tid) const
 
const std::set< TagID > & getActiveScalarVariableCoupleableMatrixTags (const THREAD_ID tid) const
 
const std::set< TagID > & getActiveFEVariableCoupleableVectorTags (const THREAD_ID tid) const
 
const std::set< TagID > & getActiveFEVariableCoupleableMatrixTags (const THREAD_ID tid) const
 
void addAlgebraicGhostingFunctor (libMesh::GhostingFunctor &algebraic_gf, bool to_mesh=true)
 Add an algebraic ghosting functor to this problem's DofMaps.
 
void addCouplingGhostingFunctor (libMesh::GhostingFunctor &coupling_gf, bool to_mesh=true)
 Add a coupling functor to this problem's DofMaps.
 
void removeAlgebraicGhostingFunctor (libMesh::GhostingFunctor &algebraic_gf)
 Remove an algebraic ghosting functor from this problem's DofMaps.
 
void removeCouplingGhostingFunctor (libMesh::GhostingFunctor &coupling_gf)
 Remove a coupling ghosting functor from this problem's DofMaps.
 
void clearAllDofIndices ()
 Clear dof indices from variables in nl and aux systems.
 
template<typename T >
const Moose::Functor< T > & getFunctor (const std::string &name, const THREAD_ID tid, const std::string &requestor_name, bool requestor_is_ad)
 
bool hasFunctor (const std::string &name, const THREAD_ID tid) const
 checks whether we have a functor corresponding to name on the thread id tid
 
template<typename T >
bool hasFunctorWithType (const std::string &name, const THREAD_ID tid) const
 checks whether we have a functor of type T corresponding to name on the thread id tid
 
template<typename T >
void addFunctor (const std::string &name, const Moose::FunctorBase< T > &functor, const THREAD_ID tid)
 add a functor to the problem functor container
 
template<typename T , typename PolymorphicLambda >
const Moose::FunctorBase< T > & addPiecewiseByBlockLambdaFunctor (const std::string &name, PolymorphicLambda my_lammy, const std::set< ExecFlagType > &clearance_schedule, const MooseMesh &mesh, const std::set< SubdomainID > &block_ids, const THREAD_ID tid)
 Add a functor that has block-wise lambda definitions, e.g.
 
void setFunctorOutput (bool set_output)
 Setter for debug functor output.
 
void setChainControlDataOutput (bool set_output)
 Setter for debug chain control data output.
 
template<typename T >
void registerUnfilledFunctorRequest (T *functor_interface, const std::string &functor_name, const THREAD_ID tid)
 Register an unfulfilled functor request.
 
void reinitFVFace (const THREAD_ID tid, const FaceInfo &fi)
 reinitialize the finite volume assembly data for the provided face and thread
 
void preparePRefinement ()
 Prepare DofMap and Assembly classes with our p-refinement information.
 
bool doingPRefinement () const
 
template<typename T >
MooseVariableFEBase & 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
 
void _setCLIOption ()
 For Internal Use.
 
virtual void terminateSolve ()
 Allow objects to request clean termination of the solve.
 
virtual bool isSolveTerminationRequested () const
 Check of termination has been requested.
 
const ConsoleStream & console () const
 Return console handle.
 
virtual bool enabled () const
 Return the enabled status of the object.
 
std::shared_ptr< MooseObject > getSharedPtr ()
 Get another shared pointer to this object that has the same ownership group.
 
std::shared_ptr< const MooseObject > getSharedPtr () const
 
bool isKokkosObject () const
 Get whether this object is a Kokkos functor The parameter MooseBase::kokkos_object_param is set by the Kokkos base classes.
 
MooseApp & getMooseApp () const
 Get the MooseApp this class is associated with.
 
const std::string & type () const
 Get the type of this class.
 
const std::string & name () const
 Get the name of the class.
 
std::string typeAndName () const
 Get the class's combined type and name; useful in error handling.
 
MooseObjectParameterName uniqueParameterName (const std::string &parameter_name) const
 
MooseObjectName uniqueName () const
 
const InputParameters & parameters () const
 Get the parameters of the object.
 
const hit::Node * getHitNode () const
 
bool hasBase () const
 
const std::string & getBase () const
 
template<typename T >
const T & getParam (const std::string &name) const
 Retrieve a parameter for the object.
 
template<typename T1 , typename T2 >
std::vector< std::pair< T1, T2 > > getParam (const std::string &param1, const std::string &param2) const
 Retrieve two parameters and provide pair of parameters for the object.
 
template<typename T >
const T * queryParam (const std::string &name) const
 Query a parameter for the object.
 
template<typename T >
const T & getRenamedParam (const std::string &old_name, const std::string &new_name) const
 Retrieve a renamed parameter for the object.
 
template<typename T >
T getCheckedPointerParam (const std::string &name, const std::string &error_string="") const
 Verifies that the requested parameter exists and is not NULL and returns it to the caller.
 
bool isParamValid (const std::string &name) const
 Test if the supplied parameter is valid.
 
bool isParamSetByUser (const std::string &name) const
 Test if the supplied parameter is set by a user, as opposed to not set or set to default.
 
void connectControllableParams (const std::string &parameter, const std::string &object_type, const std::string &object_name, const std::string &object_parameter) const
 Connect controllable parameter of this action with the controllable parameters of the objects added by this action.
 
template<typename... Args>
void paramError (const std::string &param, Args... args) const
 Emits an error prefixed with the file and line number of the given param (from the input file) along with the full parameter path+name followed by the given args as the message.
 
template<typename... Args>
void paramWarning (const std::string &param, Args... args) const
 Emits a warning prefixed with the file and line number of the given param (from the input file) along with the full parameter path+name followed by the given args as the message.
 
template<typename... Args>
void paramWarning (const std::string &param, Args... args) const
 
template<typename... Args>
void paramInfo (const std::string &param, Args... args) const
 Emits an informational message prefixed with the file and line number of the given param (from the input file) along with the full parameter path+name followed by the given args as the message.
 
std::string messagePrefix (const bool hit_prefix=true) const
 
std::string errorPrefix (const std::string &) const
 Deprecated message prefix; the error type is no longer used.
 
template<typename... Args>
void mooseError (Args &&... args) const
 Emits an error prefixed with object name and type and optionally a file path to the top-level block parameter if available.
 
template<typename... Args>
void mooseDocumentedError (const std::string &repo_name, const unsigned int issue_num, Args &&... args) const
 
template<typename... Args>
void mooseErrorNonPrefixed (Args &&... args) const
 Emits an error without the prefixing included in mooseError().
 
template<typename... Args>
void mooseWarning (Args &&... args) const
 Emits a warning prefixed with object name and type.
 
template<typename... Args>
void mooseWarning (Args &&... args) const
 
template<typename... Args>
void mooseWarningNonPrefixed (Args &&... args) const
 Emits a warning without the prefixing included in mooseWarning().
 
template<typename... Args>
void mooseWarningNonPrefixed (Args &&... args) const
 
template<typename... Args>
void mooseDeprecated (Args &&... args) const
 Emits a deprecation warning prefixed with the object name and type, and a stack trace.
 
template<typename... Args>
void mooseDeprecated (Args &&... args) const
 
template<typename... Args>
void mooseDeprecatedNoTrace (Args &&... args) const
 Emits a deprecation warning prefixed with the object name and type, and no stack trace.
 
template<typename... Args>
void mooseInfo (Args &&... args) const
 
void callMooseError (std::string msg, const bool with_prefix, const hit::Node *node=nullptr, const bool show_trace=true) const
 External method for calling moose error with added object context.
 
const Parallel::Communicator & comm () const
 
processor_id_type n_processors () const
 
processor_id_type processor_id () const
 
std::string getDataFileName (const std::string &param) const
 Deprecated method.
 
std::string getDataFileNameByName (const std::string &relative_path) const
 Deprecated method.
 
std::string getDataFilePath (const std::string &relative_path) const
 Returns the path of a data file for a given relative file path.
 
PerfGraph & perfGraph ()
 Get the PerfGraph.
 
const libMesh::ConstElemRange & getEvaluableElementRange ()
 In general, {evaluable elements} >= {local elements} U {algebraic ghosting elements}.
 
const libMesh::ConstElemRange & getNonlinearEvaluableElementRange ()
 
const libMesh::ConstElemRange & getCurrentAlgebraicElementRange ()
 These are the element and nodes that contribute to the jacobian and residual for this local processor.
 
const libMesh::ConstNodeRange & getCurrentAlgebraicNodeRange ()
 
const ConstBndNodeRange & getCurrentAlgebraicBndNodeRange ()
 
void setCurrentAlgebraicElementRange (libMesh::ConstElemRange *range)
 These functions allow setting custom ranges for the algebraic elements, nodes, and boundary nodes that contribute to the jacobian and residual for this local processor.
 
void setCurrentAlgebraicNodeRange (libMesh::ConstNodeRange *range)
 
void setCurrentAlgebraicBndNodeRange (ConstBndNodeRange *range)
 
void allowOutput (bool state)
 Ability to enable/disable all output calls.
 
template<typename T >
void allowOutput (bool state)
 
Moose::Kokkos::Array< Moose::Kokkos::System > & getKokkosSystems ()
 Get the Kokkos System array (always populated when any Kokkos object exists)
 
const Moose::Kokkos::Array< Moose::Kokkos::System > & getKokkosSystems () const
 
Moose::Kokkos::Array< Moose::Kokkos::FESystem > & getKokkosFESystems ()
 Get the Kokkos FESystem array (populated only when FE Kokkos objects exist)
 
const Moose::Kokkos::Array< Moose::Kokkos::FESystem > & getKokkosFESystems () const
 
Moose::Kokkos::System & getKokkosSystem (const unsigned int sys_num)
 Get the Kokkos System of a specified number.
 
const Moose::Kokkos::System & getKokkosSystem (const unsigned int sys_num) const
 
Moose::Kokkos::FESystem & getKokkosFESystem (const unsigned int sys_num)
 Get the Kokkos FESystem of a specified number.
 
const Moose::Kokkos::FESystem & getKokkosFESystem (const unsigned int sys_num) const
 
bool hasMultiApps () const
 Returns whether or not the current simulation has any multiapps.
 
bool hasMultiApps (ExecFlagType type) const
 
bool hasMultiApp (const std::string &name) const
 
const AutomaticMortarGeneration & getMortarInterface (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.
 
AutomaticMortarGeneration & getMortarInterface (const std::pair< BoundaryID, BoundaryID > &primary_secondary_boundary_pair, const std::pair< SubdomainID, SubdomainID > &primary_secondary_subdomain_pair, bool on_displaced)
 
const MaterialPropertyStorage & getMaterialPropertyStorage ()
 Return a reference to the material property storage.
 
const MaterialPropertyStorage & getBndMaterialPropertyStorage ()
 
const MaterialPropertyStorage & getNeighborMaterialPropertyStorage ()
 
Moose::Kokkos::MaterialPropertyStorage & getKokkosMaterialPropertyStorage ()
 
Moose::Kokkos::MaterialPropertyStorage & getKokkosBndMaterialPropertyStorage ()
 
Moose::Kokkos::MaterialPropertyStorage & getKokkosNeighborMaterialPropertyStorage ()
 
const MooseObjectWarehouse< Indicator > & getIndicatorWarehouse ()
 Return indicator/marker storage.
 
const MooseObjectWarehouse< InternalSideIndicatorBase > & getInternalSideIndicatorWarehouse ()
 
const MooseObjectWarehouse< Marker > & getMarkerWarehouse ()
 
bool needBoundaryMaterialOnSide (BoundaryID bnd_id, const THREAD_ID tid)
 These methods are used to determine whether stateful material properties need to be stored on internal sides.
 
bool needInterfaceMaterialOnSide (BoundaryID bnd_id, const THREAD_ID tid)
 
bool needInternalNeighborSideMaterial (SubdomainID subdomain_id, const THREAD_ID tid)
 
const ExecFlagType & getCurrentExecuteOnFlag () const
 Return/set the current execution flag.
 
void setCurrentExecuteOnFlag (const ExecFlagType &)
 

Static Public Member Functions

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

Public Attributes

std::map< std::string, std::vector< dof_id_type > > _var_dof_map
 
 usingCombinedWarningSolutionWarnings
 
const ConsoleStream _console
 An instance of helper class to write streams to the Console objects.
 
std::vector< Real > _real_zero
 Convenience zeros.
 
std::vector< VariableValue > _scalar_zero
 
std::vector< VariableValue > _zero
 
std::vector< VariablePhiValue > _phi_zero
 
std::vector< MooseArray< ADReal > > _ad_zero
 
std::vector< VariableGradient > _grad_zero
 
std::vector< MooseArray< ADRealVectorValue > > _ad_grad_zero
 
std::vector< VariablePhiGradient > _grad_phi_zero
 
std::vector< VariableSecond > _second_zero
 
std::vector< MooseArray< ADRealTensorValue > > _ad_second_zero
 
std::vector< VariablePhiSecond > _second_phi_zero
 
std::vector< Point > _point_zero
 
std::vector< VectorVariableValue > _vector_zero
 
std::vector< VectorVariableCurl > _vector_curl_zero
 

Static Public Attributes

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

Protected Member Functions

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

Protected Attributes

MFEMProblemData _problem_data
 Aggregated MFEM-side state for meshes, spaces, variables, coefficients, and solvers.
 
NumericType _num_type
 The numeric representation currently active for this problem.
 
std::map< std::string, MFEMSolverDefinition > _mfem_solver_definitions
 Solver definitions recorded by AddMFEMSolverAction before the dependency resolver constructs them.
 
Moose::MFEM::SolutionState & _solution_state_data
 Restartable MFEM solution state associated with this problem.
 
std::shared_ptr< MFEMProblemComposer > _problem_composer
 The problem operator builders for this mfem problem.
 
std::vector< std::shared_ptr< Moose::MFEM::ProblemOperatorBase > > _problem_operators
 Vector of MFEM problem operators executed in this problem.
 
mfem::AssemblyLevel _assembly_level {mfem::AssemblyLevel::LEGACY}
 Default assembly level to use for EquationSystem assembly.
 
MooseMesh & _mesh
 
bool _initialized
 
std::optional< std::vector< ConvergenceName > > _nonlinear_convergence_names
 Nonlinear system(s) convergence name(s)
 
std::optional< std::vector< ConvergenceName > > _linear_convergence_names
 Linear system(s) convergence name(s) (if any)
 
std::optional< ConvergenceName > _multiapp_fixed_point_convergence_name
 MultiApp fixed point convergence name.
 
std::optional< ConvergenceName > _steady_state_convergence_name
 Steady-state detection convergence name.
 
std::set< TagID > _fe_vector_tags
 
std::set< TagID > _fe_matrix_tags
 
std::set< TagID > _linear_vector_tags
 Temporary storage for filtered vector tags for linear systems.
 
std::set< TagID > _linear_matrix_tags
 Temporary storage for filtered matrix tags for linear systems.
 
const bool & _solve
 Whether or not to actually solve the nonlinear system.
 
bool _transient
 
Real & _time
 
Real & _time_old
 
Real & _time_older
 
int & _t_step
 
Real & _dt
 
Real & _dt_old
 
bool _need_to_add_default_nonlinear_convergence
 Flag that the problem needs to add the default nonlinear convergence.
 
bool _need_to_add_default_multiapp_fixed_point_convergence
 Flag that the problem needs to add the default fixed point convergence.
 
bool _need_to_add_default_steady_state_convergence
 Flag that the problem needs to add the default steady convergence.
 
const std::vector< LinearSystemName > _linear_sys_names
 The linear system names.
 
const std::size_t _num_linear_sys
 The number of linear systems.
 
std::vector< std::shared_ptr< LinearSystem > > _linear_systems
 The vector of linear systems.
 
std::map< LinearSystemName, unsigned int > _linear_sys_name_to_num
 Map from linear system name to number.
 
LinearSystem * _current_linear_sys
 The current linear system that we are solving.
 
const bool _using_default_nl
 Boolean to check if we have the default nonlinear system.
 
const std::vector< NonlinearSystemName > _nl_sys_names
 The nonlinear system names.
 
const std::size_t _num_nl_sys
 The number of nonlinear systems.
 
std::vector< std::shared_ptr< NonlinearSystemBase > > _nl
 The nonlinear systems.
 
std::map< NonlinearSystemName, unsigned int > _nl_sys_name_to_num
 Map from nonlinear system name to number.
 
NonlinearSystemBase * _current_nl_sys
 The current nonlinear system that we are solving.
 
SolverSystem * _current_solver_sys
 The current solver system.
 
std::vector< std::shared_ptr< SolverSystem > > _solver_systems
 Combined container to base pointer of every solver system.
 
std::map< SolverVariableName, unsigned int > _solver_var_to_sys_num
 Map connecting variable names with their respective solver systems.
 
std::map< SolverSystemName, unsigned int > _solver_sys_name_to_num
 Map connecting solver system names with their respective systems.
 
std::vector< SolverSystemName > _solver_sys_names
 The union of nonlinear and linear system names.
 
std::shared_ptr< AuxiliarySystem > _aux
 The auxiliary system.
 
Moose::CouplingType _coupling
 Type of variable coupling.
 
std::vector< std::unique_ptr< libMesh::CouplingMatrix > > _cm
 Coupling matrix for variables.
 
Moose::Kokkos::Array< Moose::Kokkos::System > _kokkos_systems
 System array - sparsely populated (only slots for systems needing a Kokkos::System)
 
Moose::Kokkos::Array< Moose::Kokkos::FESystem > _kokkos_fe_systems
 FESystem array - sparsely populated (only slots for systems needing a Kokkos::FESystem)
 
std::map< std::string, unsigned int > _subspace_dim
 Dimension of the subspace spanned by the vectors with a given prefix.
 
std::vector< std::vector< std::unique_ptr< Assembly > > > _assembly
 The Assembly objects.
 
Moose::Kokkos::Assembly _kokkos_assembly
 
MooseObjectWarehouse< MeshDivision > _mesh_divisions
 Warehouse to store mesh divisions NOTE: this could probably be moved to the MooseMesh instead of the Problem Time (and people's uses) will tell where this fits best.
 
MooseObjectWarehouse< Function > _functions
 functions
 
MooseObjectWarehouse< Moose::FunctionBase > _kokkos_functions
 
MooseObjectWarehouse< Convergence > _convergences
 convergence warehouse
 
MooseObjectWarehouse< KernelBase > _nonlocal_kernels
 nonlocal kernels
 
MooseObjectWarehouse< IntegratedBCBase > _nonlocal_integrated_bcs
 nonlocal integrated_bcs
 
MaterialPropertyRegistry _material_prop_registry
 
MaterialPropertyStorage & _material_props
 
MaterialPropertyStorage & _bnd_material_props
 
MaterialPropertyStorage & _neighbor_material_props
 
Moose::Kokkos::MaterialPropertyStorage & _kokkos_material_props
 
Moose::Kokkos::MaterialPropertyStorage & _kokkos_bnd_material_props
 
Moose::Kokkos::MaterialPropertyStorage & _kokkos_neighbor_material_props
 
MooseObjectWarehouse< Marker > _markers
 
ReporterData _reporter_data
 
ExecuteMooseObjectWarehouse< MultiApp > _multi_apps
 MultiApp Warehouse.
 
ExecuteMooseObjectWarehouse< TransientMultiApp > _transient_multi_apps
 Storage for TransientMultiApps (only needed for calling 'computeDT')
 
ExecuteMooseObjectWarehouse< Transfer > _transfers
 Normal Transfers.
 
ExecuteMooseObjectWarehouse< Transfer > _to_multi_app_transfers
 Transfers executed just before MultiApps to transfer data to them.
 
ExecuteMooseObjectWarehouse< Transfer > _from_multi_app_transfers
 Transfers executed just after MultiApps to transfer data from them.
 
ExecuteMooseObjectWarehouse< Transfer > _between_multi_app_transfers
 Transfers executed just before MultiApps to transfer data between them.
 
const unsigned int _num_concurrent_multiapps
 Number of concurrent applications being solved at the same time.
 
std::map< std::string, std::unique_ptr< RandomData > > _random_data_objects
 A map of objects that consume random numbers.
 
std::vector< std::unordered_map< SubdomainID, bool > > _block_mat_side_cache
 Cache for calculating materials on side.
 
std::vector< std::unordered_map< BoundaryID, bool > > _bnd_mat_side_cache
 Cache for calculating materials on side.
 
std::vector< std::unordered_map< BoundaryID, bool > > _interface_mat_side_cache
 Cache for calculating materials on interface.
 
std::vector< MeshChangedInterface * > _notify_when_mesh_changes
 Objects to be notified when the mesh changes.
 
std::vector< MeshDisplacedInterface * > _notify_when_mesh_displaces
 Objects to be notified when the mesh displaces.
 
Adaptivity _adaptivity
 
unsigned int _cycles_completed
 
std::shared_ptr< XFEMInterface > _xfem
 Pointer to XFEM controller.
 
MooseMesh * _displaced_mesh
 
std::shared_ptr< DisplacedProblem > _displaced_problem
 
GeometricSearchData _geometric_search_data
 
std::unique_ptr< MortarInterfaceWarehouse > _mortar_data
 
bool _reinit_displaced_elem
 Whether to call DisplacedProblem::reinitElem when this->reinitElem is called.
 
bool _reinit_displaced_face
 Whether to call DisplacedProblem::reinitElemFace when this->reinitElemFace is called.
 
bool _reinit_displaced_neighbor
 Whether to call DisplacedProblem::reinitNeighbor when this->reinitNeighbor is called.
 
bool _input_file_saved
 whether input file has been written
 
bool _has_dampers
 Whether or not this system has any Dampers associated with it.
 
bool _has_constraints
 Whether or not this system has any Constraints.
 
bool _snesmf_reuse_base
 If or not to resuse the base vector for matrix-free calculation.
 
bool _skip_exception_check
 If or not skip 'exception and stop solve'.
 
bool _snesmf_reuse_base_set_by_user
 If or not _snesmf_reuse_base is set by user.
 
bool _has_initialized_stateful
 Whether nor not stateful materials have been initialized.
 
bool _const_jacobian
 true if the Jacobian is constant
 
bool _has_jacobian
 Indicates if the Jacobian was computed.
 
bool _needs_old_newton_iter
 Indicates that we need to compute variable values for previous Newton iteration.
 
bool _previous_nl_solution_required
 Indicates we need to save the previous NL iteration variable values.
 
std::vector< bool > _previous_multiapp_fp_nl_solution_required
 Indicates we need to save the previous multiapp fixed-point iteration solver variable values.
 
bool _previous_multiapp_fp_aux_solution_required
 Indicates we need to save the previous multiapp fixed-point iteration auxiliary variable values.
 
std::vector< bool > _previous_multisystem_fp_nl_solution_required
 Indicates we need to save the previous multi-system fixed-point iteration solver variable values.
 
bool _previous_multisystem_fp_aux_solution_required
 Indicates we need to save the previous multi-system fixed-point iteration auxiliary variable values.
 
bool _has_nonlocal_coupling
 Indicates if nonlocal coupling is required/exists.
 
bool _calculate_jacobian_in_uo
 
std::vector< std::vector< const MooseVariableFEBase * > > _uo_jacobian_moose_vars
 
std::vector< unsigned char > _has_active_material_properties
 Whether there are active material properties on each thread.
 
std::vector< SolverParams > _solver_params
 
CoverageCheckMode _kernel_coverage_check
 Determines whether and which subdomains are to be checked to ensure that they have an active kernel.
 
std::vector< SubdomainName > _kernel_coverage_blocks
 
const bool _boundary_restricted_node_integrity_check
 whether to perform checking of boundary restricted nodal object variable dependencies, e.g.
 
const bool _boundary_restricted_elem_integrity_check
 whether to perform checking of boundary restricted elemental object variable dependencies, e.g.
 
const bool _interface_kernel_integrity_check
 Whether to check that interface kernel variables match the orientation of their boundaries.
 
const bool _side_uo_interface_mat_prop_integrity_check
 Whether to check that side user objects do not consume interface material properties.
 
CoverageCheckMode _material_coverage_check
 Determines whether and which subdomains are to be checked to ensure that they have an active material.
 
std::vector< SubdomainName > _material_coverage_blocks
 
bool _fv_bcs_integrity_check
 Whether to check overlapping Dirichlet and Flux BCs and/or multiple DirichletBCs per sideset.
 
const bool _fv_face_integrity_check
 Whether to check FV boundary and interface objects against the faces on which they execute.
 
const bool _material_dependency_check
 Determines whether a check to verify material dependencies on every subdomain.
 
const bool _uo_aux_state_check
 Whether or not checking the state of uo/aux evaluation.
 
bool _check_residual_for_nans
 Whether to check the residual for NaN or Inf values.
 
unsigned int _max_qps
 Maximum number of quadrature points used in the problem.
 
libMesh::Order _max_scalar_order
 Maximum scalar variable order.
 
bool _has_time_integrator
 Indicates whether or not this executioner has a time integrator (during setup)
 
bool _has_exception
 Whether or not an exception has occurred.
 
bool _parallel_barrier_messaging
 Whether or not information about how many transfers have completed is printed.
 
MooseEnum _verbose_setup
 Whether or not to be verbose during setup.
 
bool _verbose_multiapps
 Whether or not to be verbose with multiapps.
 
bool _verbose_restore
 Whether or not to be verbose on solution restoration post a failed time step.
 
std::string _exception_message
 The error message to go with an exception.
 
ExecFlagType _current_execute_on_flag
 Current execute_on flag.
 
ExecuteMooseObjectWarehouse< Control > _control_warehouse
 The control logic warehouse.
 
Moose::PetscSupport::PetscOptions _petsc_options
 PETSc option storage.
 
PetscOptions _petsc_option_data_base
 
bool _is_petsc_options_inserted
 If or not PETSc options have been added to database.
 
std::shared_ptr< LineSearch > _line_search
 
std::unique_ptr< libMesh::ConstElemRange > _evaluable_local_elem_range
 
std::unique_ptr< libMesh::ConstElemRange > _nl_evaluable_local_elem_range
 
std::unique_ptr< libMesh::ConstElemRange > _aux_evaluable_local_elem_range
 
std::unique_ptr< libMesh::ConstElemRange > _current_algebraic_elem_range
 
std::unique_ptr< libMesh::ConstNodeRange > _current_algebraic_node_range
 
std::unique_ptr< ConstBndNodeRange > _current_algebraic_bnd_node_range
 
bool _using_ad_mat_props
 Automatic differentiaion (AD) flag which indicates whether any consumer has requested an AD material property or whether any suppier has declared an AD material property.
 
unsigned short _current_ic_state
 
const std::vector< VariableName > _constant_null_space_vars
 Variables whose constant fields span part of the Jacobian nullspace.
 
const std::vector< VariableName > _constant_transpose_null_space_vars
 Variables whose constant fields span part of the Jacobian transpose nullspace.
 
const bool _use_hash_table_matrix_assembly
 Whether to assemble matrices using hash tables instead of preallocating matrix memory.
 
std::map< TagName, TagID > _matrix_tag_name_to_tag_id
 The currently declared tags.
 
std::map< TagID, TagName > _matrix_tag_id_to_tag_name
 Reverse map.
 
Factory & _factory
 The Factory for building objects.
 
DiracKernelInfo _dirac_kernel_info
 
std::map< SubdomainID, std::set< std::string > > _map_block_material_props
 Map of material properties (block_id -> list of properties)
 
std::map< BoundaryID, std::set< std::string > > _map_boundary_material_props
 Map for boundary material properties (boundary_id -> list of properties)
 
std::map< SubdomainID, std::set< MaterialPropertyName > > _zero_block_material_props
 Set of properties returned as zero properties.
 
std::map< BoundaryID, std::set< MaterialPropertyName > > _zero_boundary_material_props
 
std::set< std::string > _material_property_requested
 set containing all material property names that have been requested by getMaterialProperty*
 
std::vector< std::set< MooseVariableFieldBase * > > _active_elemental_moose_variables
 This is the set of MooseVariableFieldBase that will actually get reinited by a call to reinit(elem)
 
std::vector< unsigned int > _has_active_elemental_moose_variables
 Whether or not there is currently a list of active elemental moose variables.
 
std::vector< std::set< TagID > > _active_fe_var_coupleable_matrix_tags
 
std::vector< std::set< TagID > > _active_fe_var_coupleable_vector_tags
 
std::vector< std::set< TagID > > _active_sc_var_coupleable_matrix_tags
 
std::vector< std::set< TagID > > _active_sc_var_coupleable_vector_tags
 
bool _default_ghosting
 Whether or not to use default libMesh coupling.
 
std::set< dof_id_type > _ghosted_elems
 Elements that should have Dofs ghosted to the local processor.
 
bool _currently_computing_jacobian
 Flag to determine whether the problem is currently computing Jacobian.
 
bool _currently_computing_residual_and_jacobian
 Flag to determine whether the problem is currently computing the residual and Jacobian.
 
bool _computing_nonlinear_residual
 Whether the non-linear residual is being evaluated.
 
bool _currently_computing_residual
 Whether the residual is being evaluated.
 
bool _safe_access_tagged_matrices
 Is it safe to retrieve data from tagged matrices.
 
bool _safe_access_tagged_vectors
 Is it safe to retrieve data from tagged vectors.
 
bool _have_ad_objects
 AD flag indicating whether any AD objects have been added.
 
std::unordered_set< TagID > _not_zeroed_tagged_vectors
 the list of vector tags that will not be zeroed when all other tags are
 
bool _cli_option_found
 True if the CLI option is found.
 
bool _color_output
 True if we're going to attempt to write color output.
 
bool _termination_requested
 True if termination of the solve has been requested.
 
const bool & _enabled
 Reference to the "enable" InputParameters, used by Controls for toggling on/off MooseObjects.
 
MooseApp & _app
 The MOOSE application this is associated with.
 
ActionFactory & _action_factory
 Builds Actions.
 
const std::string & _type
 The type of this class.
 
const std::string & _name
 The name of this class.
 
const InputParameters & _pars
 The object's parameters.
 
const Parallel::Communicator & _communicator
 
MooseApp & _pg_moose_app
 The MooseApp that owns the PerfGraph.
 
const std::string _prefix
 A prefix to use for all sections.
 
MooseApp & _restartable_app
 Reference to the application.
 
const std::string _restartable_system_name
 The system name this object is in.
 
const THREAD_ID _restartable_tid
 The thread ID for this object.
 
const bool _restartable_read_only
 Flag for toggling read only status (see ReporterData)
 
InitialConditionWarehouse _ics
 
FVInitialConditionWarehouse _fv_ics
 
ScalarInitialConditionWarehouse _scalar_ics
 
MaterialWarehouse _materials
 
MaterialWarehouse _interface_materials
 
MaterialWarehouse _discrete_materials
 
MaterialWarehouse _all_materials
 
MaterialWarehouse _kokkos_materials
 
MooseObjectWarehouse< Indicator > _indicators
 
MooseObjectWarehouse< InternalSideIndicatorBase > _internal_side_indicators
 
std::map< SubdomainID, std::multimap< std::string, std::string > > _map_block_material_props_check
 Data structures of the requested material properties.
 
std::map< BoundaryID, std::multimap< std::string, std::string > > _map_boundary_material_props_check
 

Private Types

enum class  TrueFunctorIs { UNSET , NONAD , AD }
 

Private Member Functions

void setResidualObjectParamsAndLog (const std::string &ro_name, const std::string &name, InputParameters &parameters, const unsigned int nl_sys_num, const std::string &base_name, bool &reinit_displaced)
 Set the subproblem and system parameters for residual objects and log their addition.
 
void setAuxKernelParamsAndLog (const std::string &ak_name, const std::string &name, InputParameters &parameters, const std::string &base_name)
 Set the subproblem and system parameters for auxiliary kernels and log their addition.
 
TheWarehouse::Query getUOQuery (const std::string &system, const ExecFlagType &type, const Moose::AuxGroup &group) const
 
void getUOExecutionGroups (TheWarehouse::Query &query, std::set< int > &execution_groups) const
 
void translateCaughtException (const std::string &calling_method)
 Classify the exception currently being handled and register its message with setException(), or error if the exception cannot be recovered from.
 
void handleException (const std::string &calling_method)
 Handle exceptions.
 
void translateUserObjectExceptions (const std::function< void()> &work)
 Execute work, user object computations local to this process, and register any exception it raises with translateCaughtException() instead of letting it propagate, so that this process does not skip communication entered by the other processes.
 
std::vector< MortarUserObject * > getMortarUserObjects (BoundaryID primary_boundary_id, BoundaryID secondary_boundary_id, bool displaced, const std::vector< MortarUserObject * > &mortar_uo_superset)
 Helper for getting mortar objects corresponding to primary boundary ID, secondary boundary ID, and displaced parameters, given some initial set.
 
std::vector< MortarUserObject * > getMortarUserObjects (BoundaryID primary_boundary_id, BoundaryID secondary_boundary_id, bool displaced)
 Helper for getting mortar objects corresponding to primary boundary ID, secondary boundary ID, and displaced parameters from the entire active mortar user object set.
 
virtual std::pair< bool, unsigned 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.
 
void checkICRestartError (const std::string &ic_name, const std::string &name, const VariableName &var_name)
 Checks if the variable of the initial condition is getting restarted and errors for specific cases.
 
void addAnyRedistributers ()
 
void updateMaxQps ()
 
void joinAndFinalize (TheWarehouse::Query query, bool isgen=false)
 
void kokkosJoinAndFinalize (const std::vector< Moose::Kokkos::UserObject * > &userobjs)
 
virtual void resetState ()
 Reset state of this object in preparation for the next evaluation.
 
void cloneAlgebraicGhostingFunctor (libMesh::GhostingFunctor &algebraic_gf, bool to_mesh=true)
 Creates (n_sys - 1) clones of the provided algebraic ghosting functor (corresponding to the nonlinear system algebraic ghosting functor), initializes the clone with the appropriate DofMap, and then adds the clone to said DofMap.
 
void cloneCouplingGhostingFunctor (libMesh::GhostingFunctor &coupling_gf, bool to_mesh=true)
 Creates (n_sys - 1) clones of the provided coupling ghosting functor (corresponding to the nonlinear system coupling ghosting functor), initializes the clone with the appropriate DofMap, and then adds the clone to said DofMap.
 
void showFunctors () const
 Lists all functors in the problem.
 
void showFunctorRequestors () const
 Lists all functors and all the objects that requested them.
 
RestartableDataValue & registerRestartableDataOnApp (std::unique_ptr< RestartableDataValue > data, THREAD_ID tid) const
 Helper function for actually registering the restartable data.
 
void registerRestartableNameWithFilterOnApp (const std::string &name, Moose::RESTARTABLE_FILTER filter)
 Helper function for actually registering the restartable data.
 
template<typename T , typename... Args>
RestartableData< T > & declareRestartableDataHelper (const std::string &data_name, void *context, Args &&... args) const
 Helper function for declaring restartable data.
 
std::string restrictionSubdomainCheckName (SubdomainID check_id)
 Helper functions for checking MaterialProperties.
 
std::string restrictionBoundaryCheckName (BoundaryID check_id)
 

Static Private Member Functions

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

Private Attributes

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

Detailed Description

Definition at line 17 of file MFEMEigenproblem.h.

Member Typedef Documentation

◆ DataFileParameterType

using DataFileInterface::DataFileParameterType = DataFileName
inherited

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

Definition at line 27 of file DataFileInterface.h.

Member Enumeration Documentation

◆ CoverageCheckMode

enum class FEProblemBase::CoverageCheckMode
stronginherited

◆ Direction

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

Definition at line 21 of file ExternalProblem.h.

◆ NumericType

enum class MFEMProblem::NumericType
stronginherited

Enumerates the supported numeric representations for MFEM variables and operators.

Enumerator
REAL 
COMPLEX 

Definition at line 405 of file MFEMProblem.h.

◆ TrueFunctorIs

enum class SubProblem::TrueFunctorIs
strongprivateinherited
Enumerator
UNSET 
NONAD 
AD 

Definition at line 1130 of file SubProblem.h.

Constructor & Destructor Documentation

◆ MFEMEigenproblem()

MFEMEigenproblem::MFEMEigenproblem ( const InputParameters &  params)

Definition at line 42 of file MFEMEigenproblem.C.

42 : MFEMProblem(params)
43{
44 getProblemData().mode_separator = getParam<std::string>("mode_separator");
46 mooseError("Complex numbers are not currently supported for eigenproblems.");
47
48 if (isParamSetByUser("rhs_matrix_coefficient") && isParamSetByUser("rhs_coefficient"))
49 paramError("rhs_coefficient",
50 "Only one of 'rhs_coefficient' and 'rhs_matrix_coefficient' may be set to a "
51 "non-default value.");
52}
void mooseError(Args &&... args)
Emit an error message with the given stringified, concatenated args and terminate the application.
Definition MooseError.h:311
MFEMProblemData & getProblemData()
Method to get the current MFEMProblemData object storing the current data specifying the FE problem.
NumericType _num_type
The numeric representation currently active for this problem.
void paramError(const std::string &param, Args... args) const
Emits an error prefixed with the file and line number of the given param (from the input file) along ...
Definition MooseBase.h:457
bool isParamSetByUser(const std::string &name) const
Test if the supplied parameter is set by a user, as opposed to not set or set to default.
Definition MooseBase.h:205
std::string mode_separator

◆ ~MFEMEigenproblem()

virtual MFEMEigenproblem::~MFEMEigenproblem ( )
inlinevirtual

Definition at line 23 of file MFEMEigenproblem.h.

23{}

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

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

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

◆ adaptivity()

Adaptivity & FEProblemBase::adaptivity ( )
inlineinherited

Definition at line 2194 of file FEProblemBase.h.

2194{ return _adaptivity; }
Adaptivity _adaptivity

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

◆ adaptMesh()

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

Reimplemented in DumpObjectsProblem.

Definition at line 9294 of file FEProblemBase.C.

9295{
9296 // reset cycle counter
9298
9300 return false;
9301
9302 TIME_SECTION("adaptMesh", 3, "Adapting Mesh");
9303
9304 unsigned int cycles_per_step = _adaptivity.getCyclesPerStep();
9305
9306 bool mesh_changed = false;
9307
9308 for (unsigned int i = 0; i < cycles_per_step; ++i)
9309 {
9310 if (!_mesh.interiorLowerDBlocks().empty() || !_mesh.boundaryLowerDBlocks().empty())
9311 mooseError("HFEM does not support mesh adaptivity currently.");
9312
9313 // Markers were already computed once by Executioner
9314 if (_adaptivity.getRecomputeMarkersFlag() && i > 0)
9316
9317 bool mesh_changed_this_step;
9318 mesh_changed_this_step = _adaptivity.adaptMesh();
9319
9320 if (mesh_changed_this_step)
9321 {
9322 mesh_changed = true;
9323
9325 /*intermediate_change=*/true, /*contract_mesh=*/true, /*clean_refinement_flags=*/true);
9327 }
9328 else
9329 {
9330 // If the mesh didn't change, we still need to update the displaced mesh
9331 // to undo the undisplacement performed in Adaptivity::adaptMesh
9333 _displaced_problem->updateMesh();
9334
9335 _console << "Mesh unchanged, skipping remaining steps..." << std::endl;
9336 break;
9337 }
9338
9339 // Show adaptivity progress
9340 _console << std::flush;
9341 }
9342
9343 // We're done with all intermediate changes; now get systems ready
9344 // for real if necessary.
9345 if (mesh_changed)
9346 es().reinit_systems();
9347
9348 // Execute multi-apps that need to run after adaptivity, but before the next timestep.
9350
9351 return mesh_changed;
9352}
const ExecFlagType EXEC_POST_ADAPTIVITY
Definition Moose.C:61
unsigned int getCyclesPerStep() const
Pull out the number of cycles_per_step previously set through the AdaptivityAction.
Definition Adaptivity.h:126
bool getRecomputeMarkersFlag() const
Pull out the _recompute_markers_during_cycles flag previously set through the AdaptivityAction.
Definition Adaptivity.h:139
bool adaptMesh(std::string marker_name=std::string())
Adapts the mesh based on the error estimator used.
Definition Adaptivity.C:145
bool isAdaptivityDue()
Query if an adaptivity step should be performed at the current time / time step.
Definition Adaptivity.C:428
const ConsoleStream _console
An instance of helper class to write streams to the Console objects.
virtual libMesh::EquationSystems & es() override
MooseMesh & _mesh
bool execMultiApps(ExecFlagType type, bool auto_advance=true)
Execute the MultiApps associated with the ExecFlagType.
std::shared_ptr< DisplacedProblem > _displaced_problem
virtual void computeMarkers()
unsigned int _cycles_completed
virtual void meshChanged()
Deprecated.
const std::set< SubdomainID > & interiorLowerDBlocks() const
Definition MooseMesh.h:1555
const std::set< SubdomainID > & boundaryLowerDBlocks() const
Definition MooseMesh.h:1559
virtual void reinit_systems()

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

◆ addAlgebraicGhostingFunctor()

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

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

Definition at line 1031 of file SubProblem.C.

1032{
1033 EquationSystems & eq = es();
1034 const auto n_sys = eq.n_systems();
1035 if (!n_sys)
1036 return;
1037
1038 eq.get_system(0).get_dof_map().add_algebraic_ghosting_functor(algebraic_gf, to_mesh);
1039 cloneAlgebraicGhostingFunctor(algebraic_gf, to_mesh);
1040}
void cloneAlgebraicGhostingFunctor(libMesh::GhostingFunctor &algebraic_gf, bool to_mesh=true)
Creates (n_sys - 1) clones of the provided algebraic ghosting functor (corresponding to the nonlinear...
virtual libMesh::EquationSystems & es()=0
NamedFieldsMap< EquationSystem > EquationSystems

◆ addAnyRedistributers()

void FEProblemBase::addAnyRedistributers ( )
privateinherited

Definition at line 7091 of file FEProblemBase.C.

7092{
7093#ifdef LIBMESH_ENABLE_AMR
7094 if ((_adaptivity.isOn() || _num_grid_steps) &&
7097 {
7098 // Even on a serialized Mesh, we don't keep our material
7099 // properties serialized, so we'll rely on the callback to
7100 // redistribute() to redistribute properties at the same time
7101 // libMesh is redistributing elements.
7102 auto add_redistributer = [this](MooseMesh & mesh,
7103 const std::string & redistributer_name,
7104 const bool use_displaced_mesh)
7105 {
7107 redistribute_params.set<MooseApp *>(MooseBase::app_param) = &_app;
7108 redistribute_params.set<std::string>("for_whom") = this->name();
7109 redistribute_params.set<MooseMesh *>("mesh") = &mesh;
7110 redistribute_params.set<Moose::RelationshipManagerType>("rm_type") =
7112 redistribute_params.set<bool>("use_displaced_mesh") = use_displaced_mesh;
7113 redistribute_params.setHitNode(*parameters().getHitNode(), {});
7114
7115 std::shared_ptr<RedistributeProperties> redistributer =
7117 "RedistributeProperties", redistributer_name, redistribute_params);
7118
7121
7123 redistributer->addMaterialPropertyStorage(_bnd_material_props);
7124
7126 redistributer->addMaterialPropertyStorage(_neighbor_material_props);
7127
7128 mesh.getMesh().add_ghosting_functor(redistributer);
7129 };
7130
7131 add_redistributer(_mesh, "mesh_property_redistributer", false);
7133 add_redistributer(_displaced_problem->mesh(), "displaced_mesh_property_redistributer", true);
7134 }
7135#endif // LIBMESH_ENABLE_AMR
7136}
bool isOn()
Is adaptivity on?
Definition Adaptivity.h:193
MaterialPropertyStorage & _material_props
MaterialPropertyStorage & _neighbor_material_props
unsigned int _num_grid_steps
Number of steps in a grid sequence.
MaterialPropertyStorage & _bnd_material_props
virtual MooseMesh & mesh() override
std::shared_ptr< MooseObject > create(const std::string &obj_name, const std::string &name, const InputParameters &parameters, THREAD_ID tid=0, bool print_deprecated=true)
Definition Factory.C:142
The main MOOSE class responsible for handling user-defined parameters in almost every MOOSE system.
void setHitNode(const std::string &param, const hit::Node &node, const SetParamHitNodeKey)
Sets the hit node associated with the parameter param to node.
const hit::Node * getHitNode(const std::string &param) const
T & set(const std::string &name, bool quiet_mode=false)
Returns a writable reference to the named parameters.
Base class for MOOSE-based applications.
Definition MooseApp.h:110
const InputParameters & parameters() const
Get the parameters of the object.
Definition MooseBase.h:131
const std::string & name() const
Get the name of the class.
Definition MooseBase.h:103
static const std::string app_param
The name of the parameter that contains the MooseApp.
Definition MooseBase.h:59
MooseMesh wraps a libMesh::Mesh object and enhances its capabilities by caching additional data and s...
Definition MooseMesh.h:95
MeshBase & getMesh()
Accessor for the underlying libMesh Mesh object.
Definition MooseMesh.C:3546
RedistributeProperties is used for its redistribute() callback, which ensures that any stateful prope...
static InputParameters validParams()
void addMaterialPropertyStorage(MaterialPropertyStorage &mat_props)
Pushes the given pair ( mat_data , mat_props ) onto our list of _materials data to redistribute each ...
Factory & _factory
The Factory for building objects.
RelationshipManagerType
Main types of Relationship Managers.

◆ addAuxArrayVariable()

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

Definition at line 3674 of file FEProblemBase.C.

3678{
3679 parallel_object_only();
3680
3681 mooseDeprecated("Please use the addAuxVariable(var_type, var_name, params) API instead");
3682
3683 if (duplicateVariableCheck(var_name, type, /* is_aux = */ true, active_subdomains))
3684 return;
3685
3686 InputParameters params = _factory.getValidParams("ArrayMooseVariable");
3687 params.set<FEProblemBase *>("_fe_problem_base") = this;
3689 params.set<MooseEnum>("order") = type.order.get_order();
3690 params.set<MooseEnum>("family") = Moose::stringify(type.family);
3691 params.set<bool>("p_refinement") = type.p_refinement;
3692 params.set<unsigned int>("components") = components;
3693
3694 if (active_subdomains)
3695 for (const SubdomainID & id : *active_subdomains)
3696 params.set<std::vector<SubdomainName>>("block").push_back(Moose::stringify(id));
3697
3698 logAdd("Variable", var_name, "ArrayMooseVariable", params);
3699 _aux->addVariable("ArrayMooseVariable", var_name, params);
3701 _displaced_problem->addAuxVariable("ArrayMooseVariable", var_name, params);
3702}
subdomain_id_type SubdomainID
void mooseDeprecated(Args &&... args)
Emit a deprecated code/feature message with the given stringified, concatenated args.
Definition MooseError.h:363
Specialization of SubProblem for solving nonlinear equations plus auxiliary equations.
std::shared_ptr< AuxiliarySystem > _aux
The auxiliary 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.
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.
InputParameters getValidParams(const std::string &name) const
Get valid parameters for the object.
Definition Factory.C:68
const std::string & type() const
Get the type of this class.
Definition MooseBase.h:93
This is a "smart" enum class intended to replace many of the shortcomings in the C++ enum type It sho...
Definition MooseEnum.h:55
MOOSE now contains C++17 code, so give a reasonable error message stating what the user can do to add...
std::string stringify(const T &t)
conversion to string
Definition Conversion.h:65
VarKindType
Framework-wide stuff.
Definition MooseTypes.h:773
@ VAR_AUXILIARY
Definition MooseTypes.h:775
std::string stringify(MOOSEIOType type)
Definition NEML2Utils.C:56

◆ addAuxKernel()

void MFEMProblem::addAuxKernel ( const std::string &  kernel_name,
const std::string &  name,
InputParameters &  parameters 
)
overridevirtualinherited

Override of ExternalProblem::addAuxKernel.

Creates the MOOSE-side MFEM auxkernel wrapper.

Reimplemented from FEProblemBase.

Definition at line 382 of file MFEMProblem.C.

385{
386 addObject<MFEMExecutedObject>(kernel_name, name, parameters);
387}

◆ addAuxScalarKernel()

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

Definition at line 3756 of file FEProblemBase.C.

3759{
3760 parallel_object_only();
3761
3762 if (_displaced_problem && parameters.get<bool>("use_displaced_mesh"))
3763 {
3764 parameters.set<SubProblem *>("_subproblem") = _displaced_problem.get();
3765 parameters.set<SystemBase *>("_sys") = &_displaced_problem->auxSys();
3766 }
3767 else
3768 {
3769 if (_displaced_problem == nullptr && parameters.get<bool>("use_displaced_mesh"))
3770 {
3771 // We allow AuxScalarKernels to request that they use_displaced_mesh,
3772 // but then be overridden when no displacements variables are
3773 // provided in the Mesh block. If that happened, update the value
3774 // of use_displaced_mesh appropriately for this AuxScalarKernel.
3775 if (parameters.have_parameter<bool>("use_displaced_mesh"))
3776 parameters.set<bool>("use_displaced_mesh") = false;
3777 }
3778
3779 parameters.set<SubProblem *>("_subproblem") = this;
3780 parameters.set<SystemBase *>("_sys") = _aux.get();
3781 }
3782
3783 logAdd("AuxScalarKernel", name, kernel_name, parameters);
3784 _aux->addScalarKernel(kernel_name, name, parameters);
3785}
std::vector< std::pair< R1, R2 > > get(const std::string &param1, const std::string &param2) const
Combine two vector parameters into a single vector of pairs.
bool have_parameter(std::string_view name) const
A wrapper around the Parameters base class method.
Generic class for solving transient nonlinear problems.
Definition SubProblem.h:79
Base class for a system (of equations)
Definition SystemBase.h:87

◆ addAuxScalarVariable()

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

Definition at line 3705 of file FEProblemBase.C.

3709{
3710 parallel_object_only();
3711
3712 mooseDeprecated("Please use the addAuxVariable(var_type, var_name, params) API instead");
3713
3714 if (order > _max_scalar_order)
3715 _max_scalar_order = order;
3716
3717 FEType type(order, SCALAR);
3718 if (duplicateVariableCheck(var_name, type, /* is_aux = */ true, active_subdomains))
3719 return;
3720
3721 InputParameters params = _factory.getValidParams("MooseVariableScalar");
3722 params.set<FEProblemBase *>("_fe_problem_base") = this;
3724
3725 params.set<MooseEnum>("order") = type.order.get_order();
3726 params.set<MooseEnum>("family") = "SCALAR";
3727 params.set<std::vector<Real>>("scaling") = std::vector<Real>{1};
3728 if (active_subdomains)
3729 for (const SubdomainID & id : *active_subdomains)
3730 params.set<std::vector<SubdomainName>>("block").push_back(Moose::stringify(id));
3731
3732 logAdd("ScalarVariable", var_name, "MooseVariableScalar", params);
3733 _aux->addVariable("MooseVariableScalar", var_name, params);
3735 _displaced_problem->addAuxVariable("MooseVariableScalar", var_name, params);
3736}
libMesh::Order _max_scalar_order
Maximum scalar variable order.

◆ addAuxVariable() [1/2]

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

Reimplemented in DumpObjectsProblem.

◆ addAuxVariable() [2/2]

void MFEMProblem::addAuxVariable ( const std::string &  var_type,
const std::string &  var_name,
InputParameters &  parameters 
)
overridevirtualinherited

Override of ExternalProblem::addAuxVariable.

Sets a MFEM grid function to be used in the MFEM solve.

Reimplemented from FEProblemBase.

Definition at line 372 of file MFEMProblem.C.

375{
376 // We handle MFEM AuxVariables just like MFEM Variables, except
377 // we do not add additional GridFunctions for time derivatives.
378 addGridFunction(var_type, var_name, parameters);
379}
void addGridFunction(const std::string &var_type, const std::string &var_name, InputParameters &parameters)
Adds one MFEM GridFunction to be used in the MFEM solve.

◆ addBoundaryCondition()

void MFEMProblem::addBoundaryCondition ( const std::string &  bc_name,
const std::string &  name,
InputParameters &  parameters 
)
overridevirtualinherited

Reimplemented from FEProblemBase.

Definition at line 233 of file MFEMProblem.C.

236{
237 auto bc = addObject<MFEMBoundaryCondition>(bc_name, name, parameters).front();
239}
MFEMProblemData _problem_data
Aggregated MFEM-side state for meshes, spaces, variables, coefficients, and solvers.
void Register(const std::string &field_name, FieldArgs &&... args)
Construct new field with name field_name and register.
Moose::MFEM::BoundaryConditions bcs

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

2302{
2304 _assembly[tid][_current_nl_sys->number()]->addCachedResidualDirectly(
2306
2308 _assembly[tid][_current_nl_sys->number()]->addCachedResidualDirectly(
2310
2311 std::vector<VectorTag> extra_residual_vector_tags;
2312 extra_residual_vector_tags.reserve(currentResidualVectorTags().size());
2313 const auto time_tag = _current_nl_sys->timeVectorTag();
2314 const auto non_time_tag = _current_nl_sys->nonTimeVectorTag();
2315 for (const auto & vector_tag : currentResidualVectorTags())
2316 if (vector_tag._id != time_tag && vector_tag._id != non_time_tag)
2317 extra_residual_vector_tags.push_back(vector_tag);
2318
2319 // Flush extra vector tag caches (e.g. from extra_vector_tags on NodalConstraints)
2320 // to their respective system vectors after the standard TIME/NONTIME caches above.
2321 // Without this, NodalConstraint contributions to extra vector tags are silently
2322 // discarded by the blanket clearCachedResiduals.
2323 _assembly[tid][_current_nl_sys->number()]->addCachedResiduals(Assembly::GlobalDataKey{},
2324 extra_residual_vector_tags);
2325
2326 // We do this because by adding the cached residual directly, we cannot ensure that all of the
2327 // cached residuals are emptied after only the two add calls above
2328 _assembly[tid][_current_nl_sys->number()]->clearCachedResiduals(Assembly::GlobalDataKey{});
2329
2331 _displaced_problem->addCachedResidualDirectly(residual, tid);
2332}
if(!dmm->_nl) SETERRQ(PETSC_COMM_WORLD
Key structure for APIs manipulating global vectors/matrices.
Definition Assembly.h:841
virtual const std::vector< VectorTag > & currentResidualVectorTags() const override
Return the residual vector tags we are currently computing.
std::vector< std::vector< std::unique_ptr< Assembly > > > _assembly
The Assembly objects.
NonlinearSystemBase * _current_nl_sys
The current nonlinear system that we are solving.
TagID timeVectorTag() const override
Ideally, we should not need this API.
TagID nonTimeVectorTag() const override
virtual const VectorTag & getVectorTag(const TagID tag_id) const
Get a VectorTag from a TagID.
Definition SubProblem.C:153
bool hasVector(const std::string &tag_name) const
Check if the named vector exists in the system.
Definition SystemBase.C:924
unsigned int number() const
Gets the number of this system.

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

◆ addConstraint()

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

Definition at line 3547 of file FEProblemBase.C.

3550{
3551 parallel_object_only();
3552
3553 _has_constraints = true;
3554
3555 auto determine_var_param_name = [&parameters, this]()
3556 {
3557 if (parameters.isParamValid("variable"))
3558 return "variable";
3559 else
3560 {
3561 // must be a mortar constraint
3562 const bool has_secondary_var = parameters.isParamValid("secondary_variable");
3563 const bool has_primary_var = parameters.isParamValid("primary_variable");
3564 if (!has_secondary_var && !has_primary_var)
3565 mooseError(
3566 "Either a 'secondary_variable' or 'primary_variable' parameter must be supplied for '",
3568 "'");
3569 return has_secondary_var ? "secondary_variable" : "primary_variable";
3570 }
3571 };
3572
3573 const auto nl_sys_num =
3574 determineSolverSystem(parameters.varName(determine_var_param_name(), name), true).second;
3575 if (!isSolverSystemNonlinear(nl_sys_num))
3576 mooseError("You are trying to add a Constraint to a linear variable/system, which is not "
3577 "supported at the moment!");
3578
3579 if (_displaced_problem && parameters.get<bool>("use_displaced_mesh"))
3580 {
3581 parameters.set<SubProblem *>("_subproblem") = _displaced_problem.get();
3582 parameters.set<SystemBase *>("_sys") = &_displaced_problem->solverSys(nl_sys_num);
3584 }
3585 else
3586 {
3587 // It might _want_ to use a displaced mesh... but we're not so set it to false
3588 if (parameters.have_parameter<bool>("use_displaced_mesh"))
3589 parameters.set<bool>("use_displaced_mesh") = false;
3590
3591 parameters.set<SubProblem *>("_subproblem") = this;
3592 parameters.set<SystemBase *>("_sys") = _nl[nl_sys_num].get();
3593 }
3594
3595 logAdd("Constraint", name, c_name, parameters);
3596 _nl[nl_sys_num]->addConstraint(c_name, name, parameters);
3597}
bool isSolverSystemNonlinear(const unsigned int sys_num)
Check if the solver system is nonlinear.
bool _reinit_displaced_face
Whether to call DisplacedProblem::reinitElemFace when this->reinitElemFace is called.
bool _has_constraints
Whether or not this system has any Constraints.
std::vector< std::shared_ptr< NonlinearSystemBase > > _nl
The nonlinear systems.
virtual std::pair< bool, unsigned int > determineSolverSystem(const std::string &var_name, bool error_if_not_found=false) const override
Determine what solver system the provided variable name lies in.
std::string varName(const std::string &var_param_name, const std::string &moose_object_with_var_param_name) const
Determine the actual variable name from the given variable \emph parameter name.
const std::string & getObjectName() const
bool isParamValid(const std::string &name) const
This method returns parameters that have been initialized in one fashion or another,...
const Elem & get(const ElemType type_in)

◆ addConsumedPropertyName()

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

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

Definition at line 728 of file SubProblem.C.

729{
730 _consumed_material_properties[obj_name].insert(prop_name);
731}
std::map< MooseObjectName, std::set< std::string > > _consumed_material_properties

Referenced by MaterialPropertyInterface::addConsumedPropertyName().

◆ addConvergence()

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

Adds a Convergence object.

Definition at line 2930 of file FEProblemBase.C.

2933{
2934 parallel_object_only();
2935
2936 for (THREAD_ID tid = 0; tid < numThreads(); tid++)
2937 {
2938 std::shared_ptr<Convergence> conv = _factory.create<Convergence>(type, name, parameters, tid);
2939 _convergences.addObject(conv, tid);
2940 }
2941}
unsigned int THREAD_ID
Definition MooseTypes.h:237
Base class for convergence criteria.
Definition Convergence.h:26
MooseObjectWarehouse< Convergence > _convergences
convergence warehouse
virtual void addObject(std::shared_ptr< T > object, THREAD_ID tid=0, bool recurse=true) override
Adds an object to the storage structure.
THREAD_ID numThreads() const
Definition SubProblem.C:81

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

◆ addCouplingGhostingFunctor()

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

Add a coupling functor to this problem's DofMaps.

Definition at line 1064 of file SubProblem.C.

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

◆ addDamper()

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

Definition at line 6121 of file FEProblemBase.C.

6124{
6125 parallel_object_only();
6126
6127 const auto nl_sys_num =
6128 parameters.isParamValid("variable")
6129 ? determineSolverSystem(parameters.varName("variable", name), true).second
6130 : (unsigned int)0;
6131
6132 if (!isSolverSystemNonlinear(nl_sys_num))
6133 mooseError("You are trying to add a DGKernel to a linear variable/system, which is not "
6134 "supported at the moment!");
6135
6136 parameters.set<SubProblem *>("_subproblem") = this;
6137 parameters.set<SystemBase *>("_sys") = _nl[nl_sys_num].get();
6138
6139 _has_dampers = true;
6140 logAdd("Damper", name, damper_name, parameters);
6141 _nl[nl_sys_num]->addDamper(damper_name, name, parameters);
6142}
void ErrorVector unsigned int
bool _has_dampers
Whether or not this system has any Dampers associated with it.

◆ addDefaultMultiAppFixedPointConvergence()

void FEProblemBase::addDefaultMultiAppFixedPointConvergence ( const InputParameters &  params)
inherited

Adds the default fixed point Convergence associated with the problem.

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

Parameters
[in]paramsParameters to apply to Convergence parameters

Definition at line 2956 of file FEProblemBase.C.

2957{
2958 const std::string class_name = "DefaultMultiAppFixedPointConvergence";
2959 InputParameters params = _factory.getValidParams(class_name);
2960 params.applyParameters(params_to_apply);
2961 params.applyParameters(parameters());
2962 params.set<bool>("added_as_default") = true;
2964}
virtual void addConvergence(const std::string &type, const std::string &name, InputParameters &parameters)
Adds a Convergence object.
const ConvergenceName & getMultiAppFixedPointConvergenceName() const
Gets the MultiApp fixed point convergence object name.
void applyParameters(const InputParameters &common, const std::vector< std::string > &exclude={}, const bool allow_private=false)
Method for applying common parameters.

◆ addDefaultNonlinearConvergence()

void FEProblemBase::addDefaultNonlinearConvergence ( const InputParameters &  params)
virtualinherited

Adds the default nonlinear Convergence associated with the problem.

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

Parameters
[in]paramsParameters to apply to Convergence parameters

Reimplemented in ReferenceResidualProblem.

Definition at line 2944 of file FEProblemBase.C.

2945{
2946 const std::string class_name = "DefaultNonlinearConvergence";
2947 InputParameters params = _factory.getValidParams(class_name);
2948 params.applyParameters(params_to_apply);
2949 params.applyParameters(parameters());
2950 params.set<bool>("added_as_default") = true;
2951 for (const auto & conv_name : getNonlinearConvergenceNames())
2952 addConvergence(class_name, conv_name, params);
2953}
const std::vector< ConvergenceName > & getNonlinearConvergenceNames() const
Gets the nonlinear system convergence object name(s).

◆ addDefaultProblemComposer()

std::shared_ptr< MFEMProblemComposer > MFEMEigenproblem::addDefaultProblemComposer ( )
overridevirtual

Add default problem composer if none has been added by the user.

Reimplemented from MFEMProblem.

Definition at line 130 of file MFEMEigenproblem.C.

131{
132 InputParameters params = _factory.getValidParams("MFEMEigenWeakFormProblemComposer");
133 return addObject<MFEMProblemComposer>(
134 "MFEMEigenWeakFormProblemComposer", "__DefaultWeakFormProblemComposer", params)
135 .front();
136}

◆ addDefaultSteadyStateConvergence()

void FEProblemBase::addDefaultSteadyStateConvergence ( const InputParameters &  params)
inherited

Adds the default steady-state detection Convergence.

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

Parameters
[in]paramsParameters to apply to Convergence parameters

Definition at line 2967 of file FEProblemBase.C.

2968{
2969 const std::string class_name = "DefaultSteadyStateConvergence";
2970 InputParameters params = _factory.getValidParams(class_name);
2971 params.applyParameters(params_to_apply);
2972 params.applyParameters(parameters());
2973 params.set<bool>("added_as_default") = true;
2974 addConvergence(class_name, getSteadyStateConvergenceName(), params);
2975}
const ConvergenceName & getSteadyStateConvergenceName() const
Gets the steady-state detection convergence object name.

◆ addDefaultWeakForm()

std::shared_ptr< MFEMWeakFormBase > MFEMEigenproblem::addDefaultWeakForm ( )
overridevirtual

Add default weak form if none has been added by the user.

Reimplemented from MFEMProblem.

Definition at line 118 of file MFEMEigenproblem.C.

119{
121 mooseError("Complex MFEM eigenproblems are not currently supported. Please set the Problem "
122 "numeric type to 'real'.");
123
124 InputParameters parameters = _factory.getValidParams("MFEMEigenproblemWeakForm");
125 return addObject<MFEMWeakFormBase>("MFEMEigenproblemWeakForm", "__DefaultWeakForm", parameters)
126 .front();
127}
NumericType getNumericType() const
Retrieve the numeric type of the problem.

◆ addDGKernel()

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

Definition at line 3828 of file FEProblemBase.C.

3831{
3832 parallel_object_only();
3833
3834 const auto nl_sys_num = determineSolverSystem(parameters.varName("variable", name), true).second;
3835 if (!isSolverSystemNonlinear(nl_sys_num))
3836 mooseError("You are trying to add a DGKernel to a linear variable/system, which is not "
3837 "supported at the moment!");
3838
3839 if (_displaced_problem && parameters.get<bool>("use_displaced_mesh"))
3840 {
3841 parameters.set<SubProblem *>("_subproblem") = _displaced_problem.get();
3842 parameters.set<SystemBase *>("_sys") = &_displaced_problem->solverSys(nl_sys_num);
3844 }
3845 else
3846 {
3847 if (_displaced_problem == nullptr && parameters.get<bool>("use_displaced_mesh"))
3848 {
3849 // We allow DGKernels to request that they use_displaced_mesh,
3850 // but then be overridden when no displacements variables are
3851 // provided in the Mesh block. If that happened, update the value
3852 // of use_displaced_mesh appropriately for this DGKernel.
3853 if (parameters.have_parameter<bool>("use_displaced_mesh"))
3854 parameters.set<bool>("use_displaced_mesh") = false;
3855 }
3856
3857 parameters.set<SubProblem *>("_subproblem") = this;
3858 parameters.set<SystemBase *>("_sys") = _nl[nl_sys_num].get();
3859 }
3860
3861 logAdd("DGKernel", name, dg_kernel_name, parameters);
3862 _nl[nl_sys_num]->addDGKernel(dg_kernel_name, name, parameters);
3863
3865}
bool _reinit_displaced_neighbor
Whether to call DisplacedProblem::reinitNeighbor when this->reinitNeighbor is called.
bool _has_internal_edge_residual_objects
Whether the problem has dgkernels or interface kernels.

◆ addDiracKernel()

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

Definition at line 3788 of file FEProblemBase.C.

3791{
3792 parallel_object_only();
3793
3794 const auto nl_sys_num = determineSolverSystem(parameters.varName("variable", name), true).second;
3795 if (!isSolverSystemNonlinear(nl_sys_num))
3796 mooseError("You are trying to add a DiracKernel to a linear variable/system, which is not "
3797 "supported at the moment!");
3798
3799 if (_displaced_problem && parameters.get<bool>("use_displaced_mesh"))
3800 {
3801 parameters.set<SubProblem *>("_subproblem") = _displaced_problem.get();
3802 parameters.set<SystemBase *>("_sys") = &_displaced_problem->solverSys(nl_sys_num);
3804 }
3805 else
3806 {
3807 if (_displaced_problem == nullptr && parameters.get<bool>("use_displaced_mesh"))
3808 {
3809 // We allow DiracKernels to request that they use_displaced_mesh,
3810 // but then be overridden when no displacements variables are
3811 // provided in the Mesh block. If that happened, update the value
3812 // of use_displaced_mesh appropriately for this DiracKernel.
3813 if (parameters.have_parameter<bool>("use_displaced_mesh"))
3814 parameters.set<bool>("use_displaced_mesh") = false;
3815 }
3816
3817 parameters.set<SubProblem *>("_subproblem") = this;
3818 parameters.set<SystemBase *>("_sys") = _nl[nl_sys_num].get();
3819 }
3820
3821 logAdd("DiracKernel", name, kernel_name, parameters);
3822 _nl[nl_sys_num]->addDiracKernel(kernel_name, name, parameters);
3823}
bool _reinit_displaced_elem
Whether to call DisplacedProblem::reinitElem when this->reinitElem is called.

◆ addDisplacedProblem()

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

Definition at line 9093 of file FEProblemBase.C.

9094{
9095 parallel_object_only();
9096
9099}
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 3103 of file FEProblemBase.C.

3106{
3107 parameters.set<std::string>("type") = type;
3108 addObject<Distribution>(type, name, parameters, /* threaded = */ false);
3109}

◆ addElementalFieldVariable()

void MFEMProblem::addElementalFieldVariable ( const std::string &  ,
const std::string &  ,
InputParameters &   
)
inlineoverridevirtualinherited

Override of FEProblemBase::addElementalFieldVariable to be a no-op because we do not use the Marker/Indicator objects designed to work with libMesh infrastructure.

Reimplemented from FEProblemBase.

Definition at line 144 of file MFEMProblem.h.

145 {
146 }

◆ addExternalVariables()

virtual void ExternalProblem::addExternalVariables ( )
inlinevirtualinherited

Method called to add AuxVariables to the simulation.

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

Definition at line 48 of file ExternalProblem.h.

48{}

◆ addFESpace()

void MFEMProblem::addFESpace ( const std::string &  type,
const std::string &  name,
InputParameters &  parameters 
)
inherited

Add an MFEM FESpace to the problem.

Definition at line 257 of file MFEMProblem.C.

260{
261 if (getProblemData().fespace_hierarchies.Has(name))
262 mooseError("Cannot add FESpace '",
263 name,
264 "': an MFEMFESpaceHierarchy with the same name already exists. "
265 "FESpaces and FESpaceHierarchies share the fespaces namespace.");
266
267 auto & mfem_fespace = *addObject<MFEMFESpace>(type, name, parameters).front();
268
269 // Register fespace and associated fe collection.
270 getProblemData().fecs.Register(name, mfem_fespace.getFEC());
271 getProblemData().fespaces.Register(name, mfem_fespace.getFESpace());
272}
Moose::MFEM::FESpaces fespaces
Moose::MFEM::FECollections fecs

Referenced by MFEMProblem::addMFEMFESpaceFromMOOSEVariable().

◆ addFESpaceHierarchy()

void MFEMProblem::addFESpaceHierarchy ( const std::string &  type,
const std::string &  name,
InputParameters &  parameters 
)
inherited

Add an MFEMFESpaceHierarchy to the problem.

Definition at line 275 of file MFEMProblem.C.

278{
279 if (getProblemData().fespaces.Has(name))
280 mooseError("Cannot add MFEMFESpaceHierarchy '",
281 name,
282 "': a FESpace with the same name already exists. "
283 "FESpaces and FESpaceHierarchies share the fespaces namespace.");
284
285 auto hierarchy_obj = addObject<MFEMFESpaceHierarchy>(type, name, parameters).front();
286 auto hierarchy_shared = hierarchy_obj->getHierarchyShared();
287 // Register the hierarchy for co-ownership by solvers.
288 getProblemData().fespace_hierarchies.Register(name, hierarchy_shared);
289 // Register the finest-level FESpace in fespaces under the hierarchy name so that
290 // variables can say `fespace = <hierarchy_name>` without a separate FESpace definition.
291 // The aliasing shared_ptr keeps the hierarchy alive as long as this entry lives.
292 auto finest = std::shared_ptr<mfem::ParFiniteElementSpace>(
293 hierarchy_shared, &hierarchy_obj->getHierarchy().GetFinestFESpace());
295}
Moose::MFEM::FESpaceHierarchies fespace_hierarchies

◆ addFunction()

void MFEMProblem::addFunction ( const std::string &  type,
const std::string &  name,
InputParameters &  parameters 
)
overridevirtualinherited

Override of ExternalProblem::addFunction.

Creates a corresponding MFEM Coefficient or VectorCoefficient object for the added MOOSE function.

Reimplemented from FEProblemBase.

Definition at line 622 of file MFEMProblem.C.

625{
626 // Add function to the warehouse, while avoiding the threading logic in FEProblemBase::addFunction
627 {
628 parallel_object_only();
629
630 parameters.set<SubProblem *>("_subproblem") = this;
631
632 std::shared_ptr<Function> func = _factory.create<Function>(type, name, parameters);
633 logAdd("Function", name, type, parameters);
634 _functions.addObject(func);
635 }
636
637 auto & func = getFunction(name);
638 // FIXME: Do we want to have optimised versions for when functions
639 // are only of space or only of time.
640 if (std::find(SCALAR_FUNCS.begin(), SCALAR_FUNCS.end(), type) != SCALAR_FUNCS.end())
641 {
642 getCoefficients().declareScalar<mfem::FunctionCoefficient>(
643 name,
644 [&func](const mfem::Vector & p, mfem::real_t t) -> mfem::real_t
645 { return func.value(t, Moose::MFEM::libMeshPointFromMFEMVector(p)); });
646 }
647 else if (std::find(VECTOR_FUNCS.begin(), VECTOR_FUNCS.end(), type) != VECTOR_FUNCS.end())
648 {
650 getCoefficients().declareVector<mfem::VectorFunctionCoefficient>(
651 name,
652 dim,
653 [&func, dim](const mfem::Vector & p, mfem::real_t t, mfem::Vector & u)
654 {
655 libMesh::RealVectorValue vector_value =
656 func.vectorValue(t, Moose::MFEM::libMeshPointFromMFEMVector(p));
657 for (int i = 0; i < dim; i++)
658 {
659 u[i] = vector_value(i);
660 }
661 });
662 }
663 else if (std::find(MFEM_FUNCS.begin(), MFEM_FUNCS.end(), type) != MFEM_FUNCS.end())
664 {
665 }
666 else
667 mooseWarning("Could not identify function ", type, "; no MFEM coefficient object created.");
668}
const std::vector< std::string > SCALAR_FUNCS
int vectorFunctionDim(const std::string &type, const InputParameters &parameters)
const std::vector< std::string > MFEM_FUNCS
const std::vector< std::string > VECTOR_FUNCS
void mooseWarning(Args &&... args)
Emit a warning message with the given stringified, concatenated args.
Definition MooseError.h:345
unsigned int dim
virtual Function & getFunction(const std::string &name, const THREAD_ID tid=0)
MooseObjectWarehouse< Function > _functions
functions
Base class for function objects.
Definition Function.h:30
Moose::MFEM::CoefficientManager & getCoefficients()
Method to get the PropertyManager object for storing material properties and converting them to MFEM ...
mfem::Coefficient & declareScalar(const std::string &name, const std::string &existing_or_literal)
Declare an alias to an existing scalar coefficient or, if it does not exist, try interpreting the nam...
mfem::VectorCoefficient & declareVector(const std::string &name, const std::string &existing_or_literal)
Declare an alias to an existing vector coefficientor or, if it does not exist, try interpreting the n...
libMesh::Point libMeshPointFromMFEMVector(const mfem::Vector &vec)
Convert an MFEM position vector to a libMesh::Point.

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

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

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

◆ addFunctorMaterial()

void MFEMProblem::addFunctorMaterial ( const std::string &  material_name,
const std::string &  name,
InputParameters &  parameters 
)
overridevirtualinherited

Reimplemented from FEProblemBase.

Definition at line 249 of file MFEMProblem.C.

252{
253 addObject<MFEMFunctorMaterial>(material_name, name, parameters);
254}

◆ addFVBC()

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

Definition at line 3882 of file FEProblemBase.C.

3885{
3886 addObject<FVBoundaryCondition>(fv_bc_name, name, parameters);
3887}

Referenced by DiffusionFV::addFVBCs().

◆ addFVGradientMethod()

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

Add an FV gradient method.

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

Definition at line 5054 of file FEProblemBase.C.

5057{
5058 parallel_object_only();
5059
5061
5062 for (const auto tid : make_range(libMesh::n_threads()))
5063 {
5064 auto method = _factory.create<FVGradientMethod>(method_type, name, parameters, tid);
5065 logAdd("FVGradientMethod", name, method_type, parameters);
5066 theWarehouse().add(method);
5067 }
5068}
void addObjectParamsHelper(InputParameters &params, const std::string &object_name, const std::string &var_param_name="variable")
Helper for setting the "_subproblem" and "_sys" parameters in addObject() and in addUserObject().
TheWarehouse & theWarehouse() const
Base class for linear finite-volume cell-gradient methods.
void add(std::shared_ptr< MooseObject > obj)
add adds a new object to the warehouse and stores attributes/metadata about it for running queries/fi...
The following methods are specializations for using the libMesh::Parallel::packed_range_* routines fo...
IntRange< T > make_range(T beg, T end)
unsigned int n_threads()

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

4064{
4065 parallel_object_only();
4066
4067 // before we start to mess with the initial condition, we need to check parameters for errors.
4069 const std::string & var_name = parameters.get<VariableName>("variable");
4070
4071 // Forbid initial conditions on a restarted problem, as they would override the restart
4072 checkICRestartError(ic_name, name, var_name);
4073
4074 parameters.set<SubProblem *>("_subproblem") = this;
4075
4076 // field IC
4077 if (hasVariable(var_name))
4078 {
4079 for (THREAD_ID tid = 0; tid < numThreads(); ++tid)
4080 {
4081 auto & var = getVariable(
4083 parameters.set<SystemBase *>("_sys") = &var.sys();
4084 std::shared_ptr<FVInitialConditionBase> ic;
4085 if (var.isFV())
4086 ic = _factory.create<FVInitialCondition>(ic_name, name, parameters, tid);
4087 else
4088 mooseError(
4089 "Your variable for an FVInitialCondition needs to be an a finite volume variable!");
4090 _fv_ics.addObject(ic, tid);
4091 }
4092 }
4093 else
4094 mooseError("Variable '",
4095 var_name,
4096 "' requested in finite volume initial condition '",
4097 name,
4098 "' does not exist.");
4099}
virtual const MooseVariableFieldBase & getVariable(const THREAD_ID tid, const std::string &var_name, Moose::VarKindType expected_var_type=Moose::VarKindType::VAR_ANY, Moose::VarFieldType expected_var_field_type=Moose::VarFieldType::VAR_FIELD_ANY) const override
Returns the variable reference for requested variable which must be of the expected_var_type (Nonline...
virtual bool hasVariable(const std::string &var_name) const override
Whether or not this problem has the variable.
FVInitialConditionWarehouse _fv_ics
void checkICRestartError(const std::string &ic_name, const std::string &name, const VariableName &var_name)
Checks if the variable of the initial condition is getting restarted and errors for specific cases.
This is a template class that implements the workhorse compute and computeNodal methods.
void addObject(std::shared_ptr< FVInitialConditionBase > object, THREAD_ID tid, bool recurse=true)
Add object to the warehouse.
void checkParams(const std::string &parsing_syntax)
This function checks parameters stored in the object to make sure they are in the correct state as th...
@ VAR_FIELD_ANY
Definition MooseTypes.h:785
@ VAR_ANY
Definition MooseTypes.h:776

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

3893{
3896 addObject<FVInterfaceKernel>(
3897 fv_ik_name, name, parameters, /*threaded=*/true, /*variable_param_name=*/"variable1");
3898}

◆ addFVInterpolationMethod()

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

Add an FV interpolation method.

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

Definition at line 5037 of file FEProblemBase.C.

5040{
5041 parallel_object_only();
5042
5044
5045 for (const auto tid : make_range(numThreads()))
5046 {
5047 auto method = _factory.create<FVInterpolationMethod>(method_type, name, parameters, tid);
5048 logAdd("FVInterpolationMethod", name, method_type, parameters);
5049 theWarehouse().add(method);
5050 }
5051}
Registered base class for linear FV interpolation objects.

◆ addFVKernel()

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

Definition at line 3868 of file FEProblemBase.C.

3871{
3872 if (_displaced_problem && parameters.get<bool>("use_displaced_mesh"))
3873 // FVElementalKernels are computed in the historically finite element threaded loops. They rely
3874 // on Assembly data like _current_elem. When we call reinit on the FEProblemBase we will only
3875 // reinit the DisplacedProblem and its associated Assembly objects if we mark this boolean as
3876 // true
3878 addObject<FVKernel>(fv_kernel_name, name, parameters);
3879}

Referenced by DiffusionFV::addFVKernels().

◆ addGhostedBoundary()

void FEProblemBase::addGhostedBoundary ( BoundaryID  boundary_id)
overridevirtualinherited

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

Implements SubProblem.

Definition at line 2518 of file FEProblemBase.C.

2519{
2520 _mesh.addGhostedBoundary(boundary_id);
2522 _displaced_mesh->addGhostedBoundary(boundary_id);
2523}
void addGhostedBoundary(BoundaryID boundary_id)
This will add the boundary ids to be ghosted to this processor.
Definition MooseMesh.C:3327

Referenced by DisplacedProblem::addGhostedBoundary().

◆ addGhostedElem()

void FEProblemBase::addGhostedElem ( dof_id_type  elem_id)
overridevirtualinherited

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

Implements SubProblem.

Definition at line 2511 of file FEProblemBase.C.

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

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

◆ addGridFunction()

void MFEMProblem::addGridFunction ( const std::string &  var_type,
const std::string &  var_name,
InputParameters &  parameters 
)
inherited

Adds one MFEM GridFunction to be used in the MFEM solve.

Definition at line 332 of file MFEMProblem.C.

335{
336
337 if (var_type == "MFEMVariable" || var_type == "MFEMComplexVariable")
338 {
339 // Add MFEM variable directly.
340 if (var_type == "MFEMComplexVariable")
341 addObject<MFEMComplexVariable>(var_type, var_name, parameters);
342 else
343 addObject<MFEMVariable>(var_type, var_name, parameters);
344 }
345 else
346 {
347 // Add MOOSE variable.
348 ExternalProblem::addVariable(var_type, var_name, parameters);
349
350 // Add MFEM variable indirectly ("gridfunction").
352 addObject<MFEMVariable>("MFEMVariable", var_name, mfem_variable_params);
353 }
354
355 // Register gridfunction.
356 if (var_type == "MFEMComplexVariable")
357 {
358 MFEMComplexVariable & mfem_variable =
359 getMFEMObject<MFEMComplexVariable>("MooseVariableBase", var_name);
361 mfem_variable.declareCoefficients();
362 }
363 else // must be real, but may have been set up indirectly from a MOOSE variable
364 {
365 MFEMVariable & mfem_variable = getMFEMObject<MFEMVariable>("MooseVariableBase", var_name);
366 getProblemData().gridfunctions.Register(var_name, mfem_variable.getGridFunction());
367 mfem_variable.declareCoefficients();
368 }
369}
virtual void addVariable(const std::string &var_type, const std::string &var_name, InputParameters &params)
Canonical method for adding a non-linear variable.
Constructs and stores an mfem::ParComplexGridFunction object.
std::shared_ptr< mfem::ParComplexGridFunction > getComplexGridFunction() const
Returns a shared pointer to the constructed gridfunction.
InputParameters addMFEMFESpaceFromMOOSEVariable(InputParameters &moosevar_params)
Method used to get an mfem FEC depending on the variable family specified in the input file.
Constructs and stores an mfem::ParGridFunction object.
std::shared_ptr< mfem::ParGridFunction > getGridFunction() const
Returns a shared pointer to the constructed gridfunction.
void declareCoefficients()
Declare default coefficients associated with this gridfunction.
Moose::MFEM::ComplexGridFunctions cmplx_gridfunctions
Moose::MFEM::GridFunctions gridfunctions

Referenced by MFEMProblem::addAuxVariable(), addVariable(), and MFEMProblem::addVariable().

◆ addHDGKernel()

void FEProblemBase::addHDGKernel ( 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 const auto nl_sys_num = determineSolverSystem(parameters.varName("variable", name), true).second;
3439 if (!isSolverSystemNonlinear(nl_sys_num))
3440 mooseError("You are trying to add a HDGKernel to a linear variable/system, which is not "
3441 "supported at the moment!");
3443 kernel_name, name, parameters, nl_sys_num, "HDGKernel", _reinit_displaced_elem);
3444
3445 _nl[nl_sys_num]->addHDGKernel(kernel_name, name, parameters);
3446}
void setResidualObjectParamsAndLog(const std::string &ro_name, const std::string &name, InputParameters &parameters, const unsigned int nl_sys_num, const std::string &base_name, bool &reinit_displaced)
Set the subproblem and system parameters for residual objects and log their addition.

◆ addImagComponentToBC()

void MFEMProblem::addImagComponentToBC ( const std::string &  kernel_name,
const std::string &  name,
InputParameters &  parameters 
)
inherited

Adds an imaginary component BC to the parent MFEMComplexIntegratedBC.

Definition at line 438 of file MFEMProblem.C.

441{
442 auto parent_ptr = std::dynamic_pointer_cast<MFEMComplexIntegratedBC>(
443 getMFEMObject<MFEMComplexIntegratedBC>("BoundaryCondition", name).getSharedPtr());
444 parameters.set<VariableName>("variable") = parent_ptr->getParam<VariableName>("variable");
445 parameters.set<std::vector<BoundaryName>>("boundary") =
446 parent_ptr->getParam<std::vector<BoundaryName>>("boundary");
447 auto bc_ptr = std::dynamic_pointer_cast<MFEMIntegratedBC>(
448 addObject<MFEMBoundaryCondition>(kernel_name, name + "_imag", parameters).front());
449 parent_ptr->setImagBC(bc_ptr);
450}
std::shared_ptr< MooseObject > getSharedPtr()
Get another shared pointer to this object that has the same ownership group.
Definition MooseObject.C:70

◆ addImagComponentToKernel()

void MFEMProblem::addImagComponentToKernel ( const std::string &  kernel_name,
const std::string &  name,
InputParameters &  parameters 
)
inherited

Adds an imaginary component kernel to the parent MFEMComplexKernel.

Definition at line 411 of file MFEMProblem.C.

414{
415 auto parent_ptr = std::dynamic_pointer_cast<MFEMComplexKernel>(
416 getMFEMObject<MFEMComplexKernel>("Kernel", name).getSharedPtr());
417 parameters.set<VariableName>("variable") = parent_ptr->getParam<VariableName>("variable");
418 auto kernel_ptr = addObject<MFEMKernel>(kernel_name, name + "_imag", parameters).front();
419 parent_ptr->setImagKernel(kernel_ptr);
420}

◆ addIndicator()

void MFEMProblem::addIndicator ( const std::string &  type,
const std::string &  name,
InputParameters &  parameters 
)
overridevirtualinherited

Override of FEProblemBase::addIndicator.

Creates the MFEMIndicator used when setting up adaptive mesh refinement later.

Reimplemented from FEProblemBase.

Definition at line 119 of file MFEMProblem.C.

122{
123 auto estimator = addObject<MFEMIndicator>(indicator_type, name, parameters).front();
124
125 // construct the estimator itself
126 estimator->createEstimator();
127}

◆ addInitialCondition()

void MFEMProblem::addInitialCondition ( const std::string &  ic_name,
const std::string &  name,
InputParameters &  parameters 
)
overridevirtualinherited

Add an MFEM initial condition to the problem.

Reimplemented from FEProblemBase.

Definition at line 852 of file MFEMProblem.C.

855{
856 addObject<MFEMExecutedObject>(ic_name, name, parameters);
857}

◆ addInterfaceKernel()

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

Definition at line 3929 of file FEProblemBase.C.

3932{
3933 parallel_object_only();
3934
3935 const auto nl_sys_num = determineSolverSystem(parameters.varName("variable", name), true).second;
3936 if (!isSolverSystemNonlinear(nl_sys_num))
3937 mooseError("You are trying to add a InterfaceKernel to a linear variable/system, which is not "
3938 "supported at the moment!");
3939
3940 if (_displaced_problem && parameters.get<bool>("use_displaced_mesh"))
3941 {
3942 parameters.set<SubProblem *>("_subproblem") = _displaced_problem.get();
3943 parameters.set<SystemBase *>("_sys") = &_displaced_problem->solverSys(nl_sys_num);
3945 }
3946 else
3947 {
3948 if (_displaced_problem == nullptr && parameters.get<bool>("use_displaced_mesh"))
3949 {
3950 // We allow InterfaceKernels to request that they use_displaced_mesh,
3951 // but then be overridden when no displacements variables are
3952 // provided in the Mesh block. If that happened, update the value
3953 // of use_displaced_mesh appropriately for this InterfaceKernel.
3954 if (parameters.have_parameter<bool>("use_displaced_mesh"))
3955 parameters.set<bool>("use_displaced_mesh") = false;
3956 }
3957
3958 parameters.set<SubProblem *>("_subproblem") = this;
3959 parameters.set<SystemBase *>("_sys") = _nl[nl_sys_num].get();
3960 }
3961
3962 logAdd("InterfaceKernel", name, interface_kernel_name, parameters);
3963 _nl[nl_sys_num]->addInterfaceKernel(interface_kernel_name, name, parameters);
3964
3966}

◆ addInterfaceMaterial()

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

Definition at line 4425 of file FEProblemBase.C.

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

◆ addJacobian()

void FEProblemBase::addJacobian ( const THREAD_ID  tid)
overridevirtualinherited

Implements SubProblem.

Definition at line 2355 of file FEProblemBase.C.

2356{
2359 _assembly[tid][_current_nl_sys->number()]->addJacobianNonlocal(Assembly::GlobalDataKey{});
2361 {
2362 _displaced_problem->addJacobian(tid);
2364 _displaced_problem->addJacobianNonlocal(tid);
2365 }
2366}
bool _has_nonlocal_coupling
Indicates if nonlocal coupling is required/exists.

Referenced by ComputeDiracThread::postElement().

◆ addJacobianBlockTags()

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

Definition at line 2430 of file FEProblemBase.C.

2437{
2438 _assembly[tid][_current_nl_sys->number()]->addJacobianBlockTags(
2439 jacobian, ivar, jvar, dof_map, dof_indices, Assembly::GlobalDataKey{}, tags);
2440
2442 if (_nonlocal_cm[_current_nl_sys->number()](ivar, jvar) != 0)
2443 {
2445 _assembly[tid][_current_nl_sys->number()]->addJacobianBlockNonlocalTags(
2446 jacobian,
2447 ivar,
2448 jvar,
2449 dof_map,
2450 dof_indices,
2451 jv.allDofIndices(),
2453 tags);
2454 }
2455
2457 {
2458 _displaced_problem->addJacobianBlockTags(jacobian, ivar, jvar, dof_map, dof_indices, tags, tid);
2460 if (_nonlocal_cm[_current_nl_sys->number()](ivar, jvar) != 0)
2461 {
2463 _displaced_problem->addJacobianBlockNonlocal(
2464 jacobian, ivar, jvar, dof_map, dof_indices, jv.allDofIndices(), tags, tid);
2465 }
2466 }
2467}
std::vector< libMesh::CouplingMatrix > _nonlocal_cm
nonlocal coupling matrix
const std::vector< dof_id_type > & allDofIndices() const
Get all global dofindices for the variable.
This class provides an interface for common operations on field variables of both FE and FV types wit...
MooseVariableFieldBase & getVariable(THREAD_ID tid, const std::string &var_name) const
Gets a reference to a variable of with specified name.
Definition SystemBase.C:92

Referenced by ComputeJacobianBlocksThread::postElement().

◆ addJacobianLowerD()

void FEProblemBase::addJacobianLowerD ( const THREAD_ID  tid)
overridevirtualinherited

Implements SubProblem.

Definition at line 2385 of file FEProblemBase.C.

2386{
2387 _assembly[tid][_current_nl_sys->number()]->addJacobianLowerD(Assembly::GlobalDataKey{});
2389 _displaced_problem->addJacobianLowerD(tid);
2390}

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

◆ addJacobianNeighbor() [1/3]

void FEProblemBase::addJacobianNeighbor ( const THREAD_ID  tid)
overridevirtualinherited

◆ addJacobianNeighbor() [2/3]

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

◆ addJacobianNeighbor() [3/3]

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

◆ addJacobianNeighborLowerD()

void FEProblemBase::addJacobianNeighborLowerD ( const THREAD_ID  tid)
overridevirtualinherited

Implements SubProblem.

Definition at line 2377 of file FEProblemBase.C.

2378{
2379 _assembly[tid][_current_nl_sys->number()]->addJacobianNeighborLowerD(Assembly::GlobalDataKey{});
2381 _displaced_problem->addJacobianNeighborLowerD(tid);
2382}

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

◆ addJacobianOffDiagScalar()

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

Definition at line 2399 of file FEProblemBase.C.

2400{
2401 _assembly[tid][_current_nl_sys->number()]->addJacobianOffDiagScalar(ivar,
2403}

Referenced by NonlinearSystemBase::computeScalarKernelsJacobians().

◆ addJacobianScalar()

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

Definition at line 2393 of file FEProblemBase.C.

2394{
2395 _assembly[tid][_current_nl_sys->number()]->addJacobianScalar(Assembly::GlobalDataKey{});
2396}

Referenced by NonlinearSystemBase::computeScalarKernelsJacobians().

◆ addKernel()

void MFEMProblem::addKernel ( const std::string &  kernel_name,
const std::string &  name,
InputParameters &  parameters 
)
overridevirtualinherited

Override of ExternalProblem::addKernel.

Creates the MOOSE-side MFEM kernel wrapper and the corresponding MFEM kernel to be used in the MFEM solve.

Reimplemented from FEProblemBase.

Definition at line 390 of file MFEMProblem.C.

393{
394 auto kernel = addObject<MFEMKernel>(kernel_name, name, parameters).front();
396}
Moose::MFEM::Kernels kernels

◆ addKokkosAuxKernel()

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

◆ addKokkosBoundaryCondition()

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

◆ addKokkosFunction()

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

Add a Kokkos function to the problem.

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

Referenced by FEProblemBase::addFunction(), and FEProblemBase::getKokkosFunction().

◆ addKokkosKernel()

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

◆ addKokkosLinearFVBC()

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

◆ addKokkosLinearFVKernel()

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

◆ addKokkosMaterial()

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

◆ addKokkosMeshInitializationHook()

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

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

Parameters
functionThe function to be called

Definition at line 3103 of file FEProblemBase.h.

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

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

◆ addKokkosNodalKernel()

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

◆ addKokkosPostprocessor()

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

◆ addKokkosReporter()

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

◆ addKokkosUserObject()

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

◆ addKokkosVectorPostprocessor()

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

◆ addLinearFVBC()

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

Definition at line 3914 of file FEProblemBase.C.

3917{
3918#ifdef MOOSE_KOKKOS_ENABLED
3920 return addKokkosLinearFVBC(bc_name, name, parameters);
3921#endif
3922
3923 addObject<LinearFVBoundaryCondition>(bc_name, name, parameters);
3924}
virtual void addKokkosLinearFVBC(const std::string &bc_name, const std::string &name, InputParameters &parameters)
bool isKokkosObject() const
Returns whether this InputParameters belongs to a Kokkos object Checks whether MooseBase::kokkos_obje...

◆ addLinearFVKernel()

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

Definition at line 3901 of file FEProblemBase.C.

3904{
3905#ifdef MOOSE_KOKKOS_ENABLED
3907 return addKokkosLinearFVKernel(kernel_name, name, parameters);
3908#endif
3909
3910 addObject<LinearFVKernel>(kernel_name, name, parameters);
3911}
virtual void addKokkosLinearFVKernel(const std::string &kernel_name, const std::string &name, InputParameters &parameters)

◆ addLineSearch()

virtual void FEProblemBase::addLineSearch ( const InputParameters &  )
inlinevirtualinherited

add a MOOSE line search

Reimplemented in DumpObjectsProblem, and FEProblem.

Definition at line 838 of file FEProblemBase.h.

839 {
840 mooseError("Line search not implemented for this problem type yet.");
841 }

Referenced by FEProblemSolve::FEProblemSolve().

◆ addMarker()

void MFEMProblem::addMarker ( const std::string &  type,
const std::string &  name,
InputParameters &  parameters 
)
overridevirtualinherited

Override of FEProblemBase::addMarker.

Creates the MFEMRefinementMarker used for adaptive mesh refinement.

Reimplemented from FEProblemBase.

Definition at line 130 of file MFEMProblem.C.

133{
134 getProblemData().refiner = addObject<MFEMRefinementMarker>(marker_type, name, parameters).front();
135}
std::shared_ptr< MFEMRefinementMarker > refiner

◆ addMaterial()

void MFEMProblem::addMaterial ( const std::string &  material_name,
const std::string &  name,
InputParameters &  parameters 
)
overridevirtualinherited

Reimplemented from FEProblemBase.

Definition at line 242 of file MFEMProblem.C.

243{
245 "MFEM materials must be added through the 'FunctorMaterials' block and not 'Materials'");
246}

◆ addMaterialHelper()

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

Definition at line 4433 of file FEProblemBase.C.

4437{
4438 parallel_object_only();
4439
4440 if (_displaced_problem && parameters.get<bool>("use_displaced_mesh"))
4441 {
4442 parameters.set<SubProblem *>("_subproblem") = _displaced_problem.get();
4444 }
4445 else
4446 {
4447 if (_displaced_problem == nullptr && parameters.get<bool>("use_displaced_mesh"))
4448 {
4449 // We allow Materials to request that they use_displaced_mesh,
4450 // but then be overridden when no displacements variables are
4451 // provided in the Mesh block. If that happened, update the value
4452 // of use_displaced_mesh appropriately for this Material.
4453 if (parameters.have_parameter<bool>("use_displaced_mesh"))
4454 parameters.set<bool>("use_displaced_mesh") = false;
4455 }
4456
4457 parameters.set<SubProblem *>("_subproblem") = this;
4458 }
4459
4460 unsigned int n_threads = numThreads();
4461
4462#ifdef MOOSE_KOKKOS_ENABLED
4464 n_threads = 1;
4465#endif
4466
4467 for (THREAD_ID tid = 0; tid < n_threads; tid++)
4468 {
4469 // Create the general Block/Boundary MaterialBase object
4470 std::shared_ptr<MaterialBase> material =
4471 _factory.create<MaterialBase>(mat_name, name, parameters, tid);
4472 logAdd("Material", name, mat_name, parameters);
4473 bool discrete = !material->getParam<bool>("compute");
4474
4475 // If the object is boundary restricted or if it is a functor material we do not create the
4476 // neighbor and face objects
4477 if (material->boundaryRestricted() || dynamic_cast<FunctorMaterial *>(material.get()))
4478 {
4479 _all_materials.addObject(material, tid);
4480 if (discrete)
4481 _discrete_materials.addObject(material, tid);
4482 else
4483 for (auto && warehouse : warehouses)
4484 warehouse->addObject(material, tid);
4485 }
4486
4487 // Non-boundary restricted require face and neighbor objects
4488 else
4489 {
4490 // TODO: we only need to do this if we have needs for face materials (e.g.
4491 // FV, DG, etc.) - but currently we always do it. Figure out how to fix
4492 // this.
4493
4494 // The name of the object being created, this is changed multiple times as objects are
4495 // created below
4496 std::string object_name;
4497
4498 // Create a copy of the supplied parameters to the setting for "_material_data_type" isn't
4499 // used from a previous tid loop
4500 InputParameters current_parameters = parameters;
4501
4502 // face material
4503 current_parameters.set<Moose::MaterialDataType>("_material_data_type") =
4505 object_name = name + "_face";
4506 std::shared_ptr<MaterialBase> face_material =
4507 _factory.create<MaterialBase>(mat_name, object_name, current_parameters, tid);
4508
4509 // neighbor material
4510 current_parameters.set<Moose::MaterialDataType>("_material_data_type") =
4512 current_parameters.set<bool>("_neighbor") = true;
4513 object_name = name + "_neighbor";
4514 std::shared_ptr<MaterialBase> neighbor_material =
4515 _factory.create<MaterialBase>(mat_name, object_name, current_parameters, tid);
4516
4517 // Store the material objects
4518 _all_materials.addObjects(material, neighbor_material, face_material, tid);
4519
4520 if (discrete)
4521 _discrete_materials.addObjects(material, neighbor_material, face_material, tid);
4522 else
4523 for (auto && warehouse : warehouses)
4524 warehouse->addObjects(material, neighbor_material, face_material, tid);
4525
4526 // Names of all controllable parameters for this Material object
4527 const std::string & base = parameters.getBase();
4528 MooseObjectParameterName name(MooseObjectName(base, material->name()), "*");
4529 const auto param_names =
4531
4532 // Connect parameters of the primary Material object to those on the face and neighbor
4533 // objects
4534 for (const auto & p_name : param_names)
4535 {
4536 MooseObjectParameterName primary_name(MooseObjectName(base, material->name()),
4537 p_name.parameter());
4538 MooseObjectParameterName face_name(MooseObjectName(base, face_material->name()),
4539 p_name.parameter());
4540 MooseObjectParameterName neighbor_name(MooseObjectName(base, neighbor_material->name()),
4541 p_name.parameter());
4543 primary_name, face_name, false);
4545 primary_name, neighbor_name, false);
4546 }
4547 }
4548 }
4549}
MaterialWarehouse _discrete_materials
std::vector< std::shared_ptr< T > > addObject(const std::string &type, const std::string &name, InputParameters &parameters, const bool threaded=true, const std::string &var_param_name="variable")
Method for creating and adding an object to the warehouse.
MaterialWarehouse _all_materials
FunctorMaterials compute functor material properties.
std::vector< MooseObjectParameterName > getControllableParameterNames(const MooseObjectParameterName &input) const
Return a vector of parameters names matching the supplied name.
void addControllableParameterConnection(const MooseObjectParameterName &primary, const MooseObjectParameterName &secondary, bool error_on_empty=true)
Method for linking control parameters of different names.
const std::string & getBase() const
MaterialBases compute MaterialProperties.
void addObjects(std::shared_ptr< MaterialBase > block, std::shared_ptr< MaterialBase > neighbor, std::shared_ptr< MaterialBase > face, THREAD_ID tid=0)
A special method unique to this class for adding Block, Neighbor, and Face material objects.
InputParameterWarehouse & getInputParameterWarehouse()
Get the InputParameterWarehouse for MooseObjects.
Definition MooseApp.C:2876
A class for storing the names of MooseObject by tag and object name.
A class for storing an input parameter name.
MaterialDataType
MaterialData types.
Definition MooseTypes.h:750
@ NEIGHBOR_MATERIAL_DATA
Definition MooseTypes.h:754
@ FACE_MATERIAL_DATA
Definition MooseTypes.h:753

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

◆ addMatrixTag()

TagID SubProblem::addMatrixTag ( TagName  tag_name)
virtualinherited

Create a Tag.

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

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

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

Reimplemented in DisplacedProblem.

Definition at line 303 of file SubProblem.C.

304{
305 auto tag_name_upper = MooseUtils::toUpper(tag_name);
306 auto existing_tag = _matrix_tag_name_to_tag_id.find(tag_name_upper);
307 if (existing_tag == _matrix_tag_name_to_tag_id.end())
308 {
309 auto tag_id = _matrix_tag_name_to_tag_id.size();
310
311 _matrix_tag_name_to_tag_id[tag_name_upper] = tag_id;
312
313 _matrix_tag_id_to_tag_name[tag_id] = tag_name_upper;
314 }
315
316 return _matrix_tag_name_to_tag_id.at(tag_name_upper);
317}
std::map< TagID, TagName > _matrix_tag_id_to_tag_name
Reverse map.
std::map< TagName, TagID > _matrix_tag_name_to_tag_id
The currently declared tags.
std::string toUpper(std::string name)
Convert supplied string to upper case.

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

◆ addMeshDivision()

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

Add a MeshDivision.

Definition at line 3058 of file FEProblemBase.C.

3061{
3062 parallel_object_only();
3063 parameters.set<FEProblemBase *>("_fe_problem_base") = this;
3064 parameters.set<SubProblem *>("_subproblem") = this;
3065 for (THREAD_ID tid = 0; tid < numThreads(); tid++)
3066 {
3067 std::shared_ptr<MeshDivision> func = _factory.create<MeshDivision>(type, name, parameters, tid);
3068 _mesh_divisions.addObject(func, tid);
3069 }
3070}
MooseObjectWarehouse< MeshDivision > _mesh_divisions
Warehouse to store mesh divisions NOTE: this could probably be moved to the MooseMesh instead of the ...
Base class for MeshDivision objects.

◆ addMFEMFESpaceFromMOOSEVariable()

InputParameters MFEMProblem::addMFEMFESpaceFromMOOSEVariable ( InputParameters &  moosevar_params)
inherited

Method used to get an mfem FEC depending on the variable family specified in the input file.

This method is used in addAuxVariable to help create the MFEM grid function that corresponds to a given MOOSE aux-variable.

Definition at line 706 of file MFEMProblem.C.

707{
708
709 InputParameters fespace_params = _factory.getValidParams("MFEMGenericFESpace");
710 InputParameters variable_params = _factory.getValidParams("MFEMVariable");
711
712 const auto family = Utility::string_to_enum<FEFamily>(parameters.get<MooseEnum>("family"));
713 auto order = static_cast<int>(parameters.get<MooseEnum>("order"));
714 const auto dim = mesh().dimension();
715
716 std::string space;
717 int vdim = 1;
718
719 switch (family)
720 {
721 case FEFamily::LAGRANGE:
722 space = "H1";
723 break;
724 case FEFamily::NEDELEC_ONE:
725 space = "ND";
726 break;
727 case FEFamily::RAVIART_THOMAS:
728 space = "RT";
729 --order;
730 break;
731 case FEFamily::MONOMIAL:
732 case FEFamily::L2_LAGRANGE:
733 space = "L2";
734 break;
735 case FEFamily::LAGRANGE_VEC:
736 space = "H1";
737 vdim = dim;
738 break;
739 case FEFamily::MONOMIAL_VEC:
740 case FEFamily::L2_LAGRANGE_VEC:
741 space = "L2";
742 vdim = dim;
743 break;
744 default:
745 mooseError("Unable to set MFEM FESpace for MOOSE variable");
746 break;
747 }
748
749 // Create fespace name. If this already exists, we will reuse this for
750 // the mfem variable ("gridfunction"). If using AMR, this implies all
751 // variables sharing the fespace are affected.
752 const auto fec_name = space + "_" + std::to_string(dim) + "D_P" + std::to_string(order);
753 const auto fes_name = fec_name + "_X" + std::to_string(vdim);
754
755 // Set all fespace parameters.
756 fespace_params.set<std::string>("fec_name") = fec_name;
757 fespace_params.set<int>("vdim") = vdim;
758
759 if (!hasMFEMObject("MFEMFESpace", fes_name))
760 addFESpace("MFEMGenericFESpace", fes_name, fespace_params);
761
762 variable_params.set<MFEMFESpaceName>("fespace") = fes_name;
763
764 return variable_params;
765}
unsigned int dimension() const override
Returns MeshBase::mesh_dimension(), (not MeshBase::spatial_dimension()!) of the underlying libMesh me...
Definition MFEMMesh.h:65
virtual MFEMMesh & mesh() override
Overwritten mesh() method from base MooseMesh to retrieve the correct mesh type, in this case MFEMMes...
void addFESpace(const std::string &type, const std::string &name, InputParameters &parameters)
Add an MFEM FESpace to the problem.
bool hasMFEMObject(const std::string &system, const std::string &name) const
Determine whether an MFEM object with the supplied system and name exists.

Referenced by MFEMProblem::addGridFunction().

◆ addMFEMSolver()

void MFEMProblem::addMFEMSolver ( const std::string &  user_object_name,
const std::string &  name,
InputParameters &  parameters 
)
virtualinherited

Method called in AddMFEMSolverAction which records a solver for later dependency-ordered construction.

Definition at line 138 of file MFEMProblem.C.

141{
142 mooseAssert(!_mfem_solver_definitions.count(name), "Multiple MFEM solvers named '" + name + "'.");
143 _mfem_solver_definitions.emplace(name, MFEMSolverDefinition{solver_type, &parameters});
144}
std::map< std::string, MFEMSolverDefinition > _mfem_solver_definitions
Solver definitions recorded by AddMFEMSolverAction before the dependency resolver constructs them.

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

6235{
6236 parallel_object_only();
6237
6238 parameters.set<MPI_Comm>("_mpi_comm") = _communicator.get();
6239
6240 if (_displaced_problem && parameters.get<bool>("use_displaced_mesh"))
6241 {
6242 parameters.set<SubProblem *>("_subproblem") = _displaced_problem.get();
6243 parameters.set<SystemBase *>("_sys") = &_displaced_problem->auxSys();
6245 }
6246 else
6247 {
6248 if (_displaced_problem == nullptr && parameters.get<bool>("use_displaced_mesh"))
6249 {
6250 // We allow MultiApps to request that they use_displaced_mesh,
6251 // but then be overridden when no displacements variables are
6252 // provided in the Mesh block. If that happened, update the value
6253 // of use_displaced_mesh appropriately for this MultiApp.
6254 if (parameters.have_parameter<bool>("use_displaced_mesh"))
6255 parameters.set<bool>("use_displaced_mesh") = false;
6256 }
6257
6258 parameters.set<SubProblem *>("_subproblem") = this;
6259 parameters.set<SystemBase *>("_sys") = _aux.get();
6260 }
6261
6262 std::shared_ptr<MultiApp> multi_app = _factory.create<MultiApp>(multi_app_name, name, parameters);
6263 logAdd("MultiApp", name, multi_app_name, parameters);
6264 multi_app->possiblyCreateChildApplications();
6265
6266 _multi_apps.addObject(multi_app);
6267
6268 // Store TransientMultiApp objects in another container, this is needed for calling computeDT
6269 std::shared_ptr<TransientMultiApp> trans_multi_app =
6270 std::dynamic_pointer_cast<TransientMultiApp>(multi_app);
6271 if (trans_multi_app)
6272 _transient_multi_apps.addObject(trans_multi_app);
6273}
void addObject(std::shared_ptr< T > object, THREAD_ID tid=0, bool recurse=true) override
Adds an object to the storage structure.
ExecuteMooseObjectWarehouse< MultiApp > _multi_apps
MultiApp Warehouse.
ExecuteMooseObjectWarehouse< TransientMultiApp > _transient_multi_apps
Storage for TransientMultiApps (only needed for calling 'computeDT')
A MultiApp represents one or more MOOSE applications that are running simultaneously.
Definition MultiApp.h:140
const Parallel::Communicator & _communicator

◆ addNodalKernel()

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

Definition at line 3449 of file FEProblemBase.C.

3452{
3453#ifdef MOOSE_KOKKOS_ENABLED
3455 return addKokkosNodalKernel(kernel_name, name, parameters);
3456#endif
3457
3458 parallel_object_only();
3459
3460 const auto nl_sys_num = determineSolverSystem(parameters.varName("variable", name), true).second;
3461 if (_displaced_problem && parameters.get<bool>("use_displaced_mesh"))
3462 {
3463 parameters.set<SubProblem *>("_subproblem") = _displaced_problem.get();
3464 parameters.set<SystemBase *>("_sys") = &_displaced_problem->solverSys(nl_sys_num);
3466 }
3467 else
3468 {
3469 if (_displaced_problem == nullptr && parameters.get<bool>("use_displaced_mesh"))
3470 {
3471 // We allow NodalKernels to request that they use_displaced_mesh,
3472 // but then be overridden when no displacements variables are
3473 // provided in the Mesh block. If that happened, update the value
3474 // of use_displaced_mesh appropriately for this NodalKernel.
3475 if (parameters.have_parameter<bool>("use_displaced_mesh"))
3476 parameters.set<bool>("use_displaced_mesh") = false;
3477 }
3478
3479 parameters.set<SubProblem *>("_subproblem") = this;
3480 parameters.set<SystemBase *>("_sys") = _nl[nl_sys_num].get();
3481 }
3482 logAdd("NodalKernel", name, kernel_name, parameters);
3483 _nl[nl_sys_num]->addNodalKernel(kernel_name, name, parameters);
3484}
virtual void addKokkosNodalKernel(const std::string &kernel_name, const std::string &name, InputParameters &parameters)

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

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

Referenced by FEProblemBase::createTagVectors().

◆ addObject() [1/2]

template<typename T >
std::vector< std::shared_ptr< T > > MFEMProblem::addObject ( const std::string &  type,
const std::string &  name,
InputParameters &  parameters 
)
inlineinherited

Definition at line 70 of file MFEMProblem.h.

71 {
72 return ExternalProblem::addObject<T>(type, name, parameters, /*threaded=*/false);
73 }

◆ addObject() [2/2]

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

3866{
3867 parallel_object_only();
3868
3869 logAdd(MooseUtils::prettyCppType<T>(), name, type, parameters);
3870 // Add the _subproblem and _sys parameters depending on use_displaced_mesh
3871 addObjectParamsHelper(parameters, name, var_param_name);
3872
3873 const auto n_threads = threaded ? this->numThreads() : 1;
3874 std::vector<std::shared_ptr<T>> objects(n_threads);
3875 for (THREAD_ID tid = 0; tid < n_threads; ++tid)
3876 {
3877 std::shared_ptr<T> obj = _factory.create<T>(type, name, parameters, tid);
3878 theWarehouse().add(obj);
3879 objects[tid] = std::move(obj);
3880 }
3881
3882 return objects;
3883}

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

4837{
4838 // Due to objects like SolutionUserObject which manipulate libmesh objects
4839 // and variables directly at the back end, we need a default option here
4840 // which is going to be the pointer to the first solver system within this
4841 // problem
4842 unsigned int sys_num = 0;
4843 if (parameters.isParamValid(var_param_name))
4844 {
4845 const auto variable_name = parameters.varName(var_param_name, object_name);
4846 if (this->hasVariable(variable_name) || this->hasScalarVariable(variable_name))
4847 sys_num = getSystem(variable_name).number();
4848 }
4849 if (parameters.isParamValid("solver_sys"))
4850 {
4851 const auto var_sys_num = sys_num;
4852 sys_num = getSystemBase(parameters.get<SolverSystemName>("solver_sys")).number();
4853 if (sys_num != var_sys_num && parameters.isParamValid(var_param_name))
4854 mooseError("We dont support setting 'variable' to a variable that is not set to the same "
4855 "system as the 'solver_sys' parameter");
4856 }
4857
4858 if (_displaced_problem && parameters.have_parameter<bool>("use_displaced_mesh") &&
4859 parameters.get<bool>("use_displaced_mesh"))
4860 {
4861 parameters.set<SubProblem *>("_subproblem") = _displaced_problem.get();
4862 if (sys_num == _aux->number())
4863 parameters.set<SystemBase *>("_sys") = &_displaced_problem->systemBaseAuxiliary();
4864 else
4865 parameters.set<SystemBase *>("_sys") = &_displaced_problem->solverSys(sys_num);
4866 }
4867 else
4868 {
4869 // The object requested use_displaced_mesh, but it was overridden
4870 // due to there being no displacements variables in the [Mesh] block.
4871 // If that happened, update the value of use_displaced_mesh appropriately.
4872 if (!_displaced_problem && parameters.have_parameter<bool>("use_displaced_mesh") &&
4873 parameters.get<bool>("use_displaced_mesh"))
4874 parameters.set<bool>("use_displaced_mesh") = false;
4875
4876 parameters.set<SubProblem *>("_subproblem") = this;
4877
4878 if (sys_num == _aux->number())
4879 parameters.set<SystemBase *>("_sys") = _aux.get();
4880 else
4881 parameters.set<SystemBase *>("_sys") = _solver_systems[sys_num].get();
4882 }
4883}
virtual bool hasScalarVariable(const std::string &var_name) const override
Returns a Boolean indicating whether any system contains a variable with the name provided.
virtual const SystemBase & getSystemBase(const unsigned int sys_num) const
Get constant reference to a system in this problem.
std::vector< std::shared_ptr< SolverSystem > > _solver_systems
Combined container to base pointer of every solver system.
virtual libMesh::System & getSystem(const std::string &var_name) override
Returns the equation system containing the variable provided.
unsigned int number() const

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

◆ addOutput()

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

Adds an Output object.

Definition at line 10242 of file FEProblemBase.C.

10245{
10246 parallel_object_only();
10247
10248 // Get a reference to the OutputWarehouse
10249 OutputWarehouse & output_warehouse = _app.getOutputWarehouse();
10250
10251 // Reject the reserved names for objects not built by MOOSE
10252 if (!parameters.get<bool>("_built_by_moose") && output_warehouse.isReservedName(object_name))
10253 mooseError("The name '", object_name, "' is a reserved name for output objects");
10254
10255 // Check that an object by the same name does not already exist; this must be done before the
10256 // object is created to avoid getting misleading errors from the Parser
10257 if (output_warehouse.hasOutput(object_name))
10258 mooseError("An output object named '", object_name, "' already exists");
10259
10260 // Add a pointer to the FEProblemBase class
10261 parameters.addPrivateParam<FEProblemBase *>("_fe_problem_base", this);
10262
10263 // --show-input should enable the display of the input file on the screen
10264 if (object_type == "Console" && _app.getParam<bool>("show_input") &&
10265 parameters.get<bool>("output_screen"))
10266 parameters.set<ExecFlagEnum>("execute_input_on") = EXEC_INITIAL;
10267
10268 // Record whether this object's own block set 'file_base' itself before a common 'file_base'
10269 // from the [Outputs] block, if any, is copied down onto it below -- that copy makes
10270 // 'file_base' look valid and user-set on this object even when only the common block set it
10271 // (see #4215), so this must be captured first.
10272 if (parameters.isParamDefined("_file_base_set_by_own_block"))
10273 parameters.set<bool>("_file_base_set_by_own_block") = parameters.isParamSetByUser("file_base");
10274
10275 // Apply only user-set parameters from the common [Outputs] block so that
10276 // each output type's own defaults are not overridden by common defaults.
10277 const InputParameters * common = output_warehouse.getCommonParameters();
10278 if (common)
10280
10281 // Set the correct value for the binary flag for XDA/XDR output
10282 if (object_type == "XDR")
10283 parameters.set<bool>("_binary") = true;
10284 else if (object_type == "XDA")
10285 parameters.set<bool>("_binary") = false;
10286
10287 // Adjust the checkpoint suffix if auto recovery was enabled
10288 if (object_name == "auto_recovery_checkpoint")
10289 parameters.set<std::string>("suffix") = "auto_recovery";
10290
10291 // Create the object and add it to the warehouse
10292 std::shared_ptr<Output> output = _factory.create<Output>(object_type, object_name, parameters);
10293 logAdd("Output", object_name, object_type, parameters);
10294 output_warehouse.addOutput(output);
10295}
const ExecFlagType EXEC_INITIAL
Definition Moose.C:31
A MultiMooseEnum object to hold "execute_on" flags.
bool isParamDefined(const std::string &name) const
Method returns true if the parameter is defined for any type.
bool isParamSetByUser(const std::string &name) const
Method returns true if the parameter was set by the user.
void addPrivateParam(const std::string &name, const T &value)
These method add a parameter to the InputParameters object which can be retrieved like any other para...
void applyCommonUserSetParameters(const InputParameters &common, const std::vector< std::string > &exclude={}, const bool allow_private=false)
Variant of applyParameters that only applies parameters explicitly set by the user in common (i....
OutputWarehouse & getOutputWarehouse()
Get the OutputWarehouse objects.
Definition MooseApp.C:2418
const T & getParam(const std::string &name) const
Retrieve a parameter for the object.
Definition MooseBase.h:406
Class for storing and utilizing output objects.
const InputParameters * getCommonParameters() const
Get a reference to the common output parameters.
bool isReservedName(const std::string &name)
Test if the given name is reserved.
bool hasOutput(const std::string &name) const
Returns true if the output object exists.
void addOutput(std::shared_ptr< Output > output)
Adds an existing output object to the warehouse.
Based class for output objects.
Definition Output.h:52

◆ addPiecewiseByBlockLambdaFunctor()

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

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

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

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

Definition at line 1334 of file SubProblem.h.

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

Referenced by FunctorMaterial::addFunctorPropertyByBlocks().

◆ addPostprocessor()

void MFEMProblem::addPostprocessor ( const std::string &  type,
const std::string &  name,
InputParameters &  parameters 
)
overridevirtualinherited

Override of ExternalProblem::addPostprocessor.

In addition to creating the postprocessor object, it will create a coefficient that will hold its value.

Reimplemented from FEProblemBase.

Definition at line 671 of file MFEMProblem.C.

674{
675 if (parameters.getSystemAttributeName() == "MFEMExecutedObject")
676 {
677 checkUserObjectNameCollision(name, "Postprocessor");
678 addObject<MFEMExecutedObject>(type, name, parameters);
679 }
680 else
682
683 // Make the postprocessor value available as a spatially uniform scalar coefficient. This is done
684 // for postprocessors of all types so that values calculated elsewhere and transferred in, such
685 // as from a subapp, may also be used to build coefficients.
687 getCoefficients().declareScalar<mfem::FunctionCoefficient>(
688 name, [&val](const mfem::Vector &) -> mfem::real_t { return val; });
689}
Real PostprocessorValue
various MOOSE typedefs
Definition MooseTypes.h:230
const PostprocessorValue & getPostprocessorValueByName(const PostprocessorName &name, std::size_t t_index=0) const
Get a read-only reference to the value associated with a Postprocessor that exists.
void checkUserObjectNameCollision(const std::string &name, const std::string &type) const
Check for name collision between different user objects.
virtual void addPostprocessor(const std::string &pp_name, const std::string &name, InputParameters &parameters)
const std::string & getSystemAttributeName() const
Get the system attribute name if it was registered.

◆ addPredictor()

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

Definition at line 8034 of file FEProblemBase.C.

8037{
8038 parallel_object_only();
8039
8041 mooseError("Vector bounds cannot be used with LinearSystems!");
8042
8043 parameters.set<SubProblem *>("_subproblem") = this;
8044 std::shared_ptr<Predictor> predictor = _factory.create<Predictor>(type, name, parameters);
8045 logAdd("Predictor", name, type, parameters);
8046
8047 for (auto & nl : _nl)
8048 nl->setPredictor(predictor);
8049}
virtual std::size_t numLinearSystems() const override
virtual std::size_t numNonlinearSystems() const override
Base class for predictors.
Definition Predictor.h:29

Referenced by AB2PredictorCorrector::AB2PredictorCorrector().

◆ addProblemComposer()

void MFEMProblem::addProblemComposer ( const std::string &  composer_type,
const std::string &  name,
InputParameters &  parameters 
)
inherited

Method called in AddMFEMProblemComposerAction which will create the problem composer.

Definition at line 513 of file MFEMProblem.C.

516{
517 _problem_composer = addObject<MFEMProblemComposer>(composer_type, name, parameters).front();
518}
std::shared_ptr< MFEMProblemComposer > _problem_composer
The problem operator builders for this mfem problem.

◆ addRealComponentToBC()

void MFEMProblem::addRealComponentToBC ( const std::string &  kernel_name,
const std::string &  name,
InputParameters &  parameters 
)
inherited

Adds a real component BC to the parent MFEMComplexIntegratedBC.

Definition at line 423 of file MFEMProblem.C.

426{
427 auto parent_ptr = std::dynamic_pointer_cast<MFEMComplexIntegratedBC>(
428 getMFEMObject<MFEMComplexIntegratedBC>("BoundaryCondition", name).getSharedPtr());
429 parameters.set<VariableName>("variable") = parent_ptr->getParam<VariableName>("variable");
430 parameters.set<std::vector<BoundaryName>>("boundary") =
431 parent_ptr->getParam<std::vector<BoundaryName>>("boundary");
432 auto bc_ptr = std::dynamic_pointer_cast<MFEMIntegratedBC>(
433 addObject<MFEMBoundaryCondition>(kernel_name, name + "_real", parameters).front());
434 parent_ptr->setRealBC(bc_ptr);
435}

◆ addRealComponentToKernel()

void MFEMProblem::addRealComponentToKernel ( const std::string &  kernel_name,
const std::string &  name,
InputParameters &  parameters 
)
inherited

Adds a real component kernel to the parent MFEMComplexKernel.

Definition at line 399 of file MFEMProblem.C.

402{
403 auto parent_ptr = std::dynamic_pointer_cast<MFEMComplexKernel>(
404 getMFEMObject<MFEMComplexKernel>("Kernel", name).getSharedPtr());
405 parameters.set<VariableName>("variable") = parent_ptr->getParam<VariableName>("variable");
406 auto kernel_ptr = addObject<MFEMKernel>(kernel_name, name + "_real", parameters).front();
407 parent_ptr->setRealKernel(kernel_ptr);
408}

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

4940{
4941#ifdef MOOSE_KOKKOS_ENABLED
4944#endif
4945
4947
4949}
virtual std::vector< std::shared_ptr< UserObject > > addUserObject(const std::string &user_object_name, const std::string &name, InputParameters &parameters)
virtual void addKokkosReporter(const std::string &type, const std::string &name, InputParameters &parameters)

Referenced by MultiAppGeneralFieldTransfer::MultiAppGeneralFieldTransfer().

◆ addResidual()

void FEProblemBase::addResidual ( const THREAD_ID  tid)
overridevirtualinherited

Implements SubProblem.

Definition at line 2240 of file FEProblemBase.C.

2241{
2244
2246 _displaced_problem->addResidual(tid);
2247}

Referenced by ComputeDiracThread::postElement().

◆ addResidualLower()

void FEProblemBase::addResidualLower ( const THREAD_ID  tid)
overridevirtualinherited

◆ addResidualNeighbor()

void FEProblemBase::addResidualNeighbor ( const THREAD_ID  tid)
overridevirtualinherited

◆ addResidualScalar()

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

Definition at line 2270 of file FEProblemBase.C.

2271{
2272 _assembly[tid][_current_nl_sys->number()]->addResidualScalar(Assembly::GlobalDataKey{},
2274}

Referenced by NonlinearSystemBase::computeResidualInternal().

◆ addSampler()

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

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

Definition at line 3144 of file FEProblemBase.C.

3147{
3148 const auto samplers = addObject<Sampler>(type, name, parameters);
3149 for (auto & sampler : samplers)
3150 sampler->init();
3151}
virtual void init() override

◆ addScalarKernel()

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

Definition at line 3487 of file FEProblemBase.C.

3490{
3491 parallel_object_only();
3492
3493 const auto nl_sys_num = determineSolverSystem(parameters.varName("variable", name), true).second;
3494 if (!isSolverSystemNonlinear(nl_sys_num))
3495 mooseError("You are trying to add a ScalarKernel to a linear variable/system, which is not "
3496 "supported at the moment!");
3497
3498 if (_displaced_problem && parameters.get<bool>("use_displaced_mesh"))
3499 {
3500 parameters.set<SubProblem *>("_subproblem") = _displaced_problem.get();
3501 parameters.set<SystemBase *>("_sys") = &_displaced_problem->solverSys(nl_sys_num);
3502 }
3503 else
3504 {
3505 if (_displaced_problem == nullptr && parameters.get<bool>("use_displaced_mesh"))
3506 {
3507 // We allow ScalarKernels to request that they use_displaced_mesh,
3508 // but then be overridden when no displacements variables are
3509 // provided in the Mesh block. If that happened, update the value
3510 // of use_displaced_mesh appropriately for this ScalarKernel.
3511 if (parameters.have_parameter<bool>("use_displaced_mesh"))
3512 parameters.set<bool>("use_displaced_mesh") = false;
3513 }
3514
3515 parameters.set<SubProblem *>("_subproblem") = this;
3516 parameters.set<SystemBase *>("_sys") = _nl[nl_sys_num].get();
3517 }
3518
3519 logAdd("ScalarKernel", name, kernel_name, parameters);
3520 _nl[nl_sys_num]->addScalarKernel(kernel_name, name, parameters);
3521}

◆ addSubMesh()

void MFEMProblem::addSubMesh ( const std::string &  type,
const std::string &  name,
InputParameters &  parameters 
)
inherited

Add an MFEM SubMesh to the problem.

Definition at line 831 of file MFEMProblem.C.

834{
835 auto & mfem_submesh = *addObject<MFEMSubMesh>(var_type, var_name, parameters).front();
836 // Register submesh.
837 getProblemData().submeshes.Register(var_name, mfem_submesh.getSubMesh());
838}
Moose::MFEM::SubMeshes submeshes

◆ addTimeIntegrator()

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

Definition at line 7999 of file FEProblemBase.C.

8002{
8003 parallel_object_only();
8004
8005 parameters.set<SubProblem *>("_subproblem") = this;
8006 logAdd("TimeIntegrator", name, type, parameters);
8007 _aux->addTimeIntegrator(type, name + ":aux", parameters);
8008 for (auto & sys : _solver_systems)
8009 sys->addTimeIntegrator(type, name + ":" + sys->name(), parameters);
8010 _has_time_integrator = true;
8011
8012 // add vectors to store u_dot, u_dotdot, udot_old, u_dotdot_old and
8013 // solution vectors older than 2 time steps, if requested by the time
8014 // integrator
8015 _aux->addDotVectors();
8016 for (auto & nl : _nl)
8017 {
8018 nl->addDotVectors();
8019
8020 auto tag_udot = nl->getTimeIntegrators()[0]->uDotFactorTag();
8021 if (!nl->hasVector(tag_udot))
8022 nl->associateVectorToTag(*nl->solutionUDot(), tag_udot);
8023 auto tag_udotdot = nl->getTimeIntegrators()[0]->uDotDotFactorTag();
8024 if (!nl->hasVector(tag_udotdot) && uDotDotRequested())
8025 nl->associateVectorToTag(*nl->solutionUDotDot(), tag_udotdot);
8026 }
8027
8029 // Time integrator does not exist when displaced problem is created.
8030 _displaced_problem->addTimeIntegrator();
8031}
virtual void addTimeIntegrator(const std::string &type, const std::string &name, InputParameters &parameters)
virtual bool uDotDotRequested()
Get boolean flag to check whether solution second time derivative needs to be stored.
bool _has_time_integrator
Indicates whether or not this executioner has a time integrator (during setup)

Referenced by TransientBase::setupTimeIntegrator().

◆ addTransfer()

void MFEMProblem::addTransfer ( const std::string &  transfer_name,
const std::string &  name,
InputParameters &  parameters 
)
overridevirtualinherited

Add transfers between MultiApps and/or MFEM SubMeshes.

Reimplemented from FEProblemBase.

Definition at line 841 of file MFEMProblem.C.

844{
845 if (parameters.getBase() == "MFEMSubMeshTransfer")
846 addObject<MFEMExecutedObject>(transfer_name, name, parameters);
847 else
849}
virtual void addTransfer(const std::string &transfer_name, const std::string &name, InputParameters &parameters)
Add a Transfer to the problem.

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

4955{
4956#ifdef MOOSE_KOKKOS_ENABLED
4958 {
4959 addKokkosUserObject(user_object_name, name, parameters);
4960 return {};
4961 }
4962#endif
4963
4964 parallel_object_only();
4965
4966 std::vector<std::shared_ptr<UserObject>> uos;
4967
4968 // Add the _subproblem and _sys parameters depending on use_displaced_mesh
4970
4971 for (const auto tid : make_range(numThreads()))
4972 {
4973 // Create the UserObject
4974 std::shared_ptr<UserObject> user_object =
4975 _factory.create<UserObject>(user_object_name, name, parameters, tid);
4976 logAdd("UserObject", name, user_object_name, parameters);
4977 uos.push_back(user_object);
4978
4979 if (tid != 0)
4980 user_object->setPrimaryThreadCopy(uos[0].get());
4981
4982 theWarehouse().add(user_object);
4983
4984 // Attempt to create all the possible UserObject types
4985 auto euo = std::dynamic_pointer_cast<ElementUserObject>(user_object);
4986 auto suo = std::dynamic_pointer_cast<SideUserObject>(user_object);
4987 auto isuo = std::dynamic_pointer_cast<InternalSideUserObject>(user_object);
4988 auto iuo = std::dynamic_pointer_cast<InterfaceUserObjectBase>(user_object);
4989 auto nuo = std::dynamic_pointer_cast<NodalUserObject>(user_object);
4990 auto duo = std::dynamic_pointer_cast<DomainUserObject>(user_object);
4991 auto guo = std::dynamic_pointer_cast<GeneralUserObject>(user_object);
4992 auto tguo = std::dynamic_pointer_cast<ThreadedGeneralUserObject>(user_object);
4993 auto muo = std::dynamic_pointer_cast<MortarUserObject>(user_object);
4994
4995 // Account for displaced mesh use
4996 if (_displaced_problem && parameters.get<bool>("use_displaced_mesh"))
4997 {
4998 // Whether to re-init or not depends on the attributes of the base classes.
4999 // For example, InterfaceUOBase has "_current_side_elem" and "_neighbor_elem"
5000 // so it needs to reinit on displaced neighbors and faces
5001 // _reinit_displaced_elem -> _current_elem will be reinited
5002 // _reinit_displaced_face -> _current_elem, lowerD if any and _current_side_elem to be
5003 // reinited _reinit_displaced_neighbor -> _current_elem, lowerD if any and _current_neighbor
5004 // to be reinited Note that as soon as you use materials on the displaced mesh, all three get
5005 // turned on.
5006 if (euo || nuo || duo)
5008 if (suo || duo || isuo || iuo)
5010 if (iuo || duo || isuo)
5012 }
5013
5014 // These objects only require one thread
5015 if ((guo && !tguo) || muo)
5016 break;
5017 }
5018
5019 // Add as a Functor if it is one. We usually need to add the user object from thread 0 as the
5020 // registered functor for all threads because when user objects are thread joined, generally only
5021 // the primary thread copy ends up with all the data
5022 for (const auto tid : make_range(numThreads()))
5023 {
5024 const decltype(uos)::size_type uo_index = uos.front()->needThreadedCopy() ? tid : 0;
5025 if (const auto functor = dynamic_cast<Moose::FunctorBase<Real> *>(uos[uo_index].get()))
5026 {
5027 this->addFunctor(name, *functor, tid);
5029 _displaced_problem->addFunctor(name, *functor, tid);
5030 }
5031 }
5032
5033 return uos;
5034}
virtual void addKokkosUserObject(const std::string &user_object_name, const std::string &name, InputParameters &parameters)
Base class template for functor objects.
Base class for user-specific data.
Definition UserObject.h:20

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

◆ addVariable()

void MFEMEigenproblem::addVariable ( const std::string &  var_type,
const std::string &  var_name,
InputParameters &  parameters 
)
overridevirtual

Override of MFEMProblem::addVariable.

Sets a MFEM grid function to be used in the MFEM solve.

Reimplemented from MFEMProblem.

Definition at line 65 of file MFEMEigenproblem.C.

68{
69 validateVariableNumericType(var_type, var_name);
70
71 // Reject names that would collide with the mode-suffix convention or with any
72 // already-registered eigenmode storage entry.
73 const auto num_modes = getParam<int>("num_modes");
74 const auto & sep = getProblemData().mode_separator;
75 if (getProblemData().gridfunctions.Has(var_name))
76 mooseError("MFEM variable '",
77 var_name,
78 "' clashes with an existing gridfunction (likely an eigenmode entry from another "
79 "variable). Choose a different variable name or set 'mode_separator' to a string "
80 "that avoids the clash.");
81
82 for (int i = 0; i < num_modes; ++i)
83 {
84 const auto mode_name = var_name + sep + std::to_string(i);
85 if (getProblemData().gridfunctions.Has(mode_name))
86 mooseError("Eigenmode storage name '",
87 mode_name,
88 "' for variable '",
89 var_name,
90 "' clashes with an already-registered variable. Set 'mode_separator' to a "
91 "string that avoids the clash, or rename the conflicting variable.");
92 }
93
94 addGridFunction(var_type, var_name, parameters);
95
96 for (int i = 0; i < num_modes; ++i)
97 addGridFunction(var_type, var_name + sep + std::to_string(i), parameters);
98}
void validateVariableNumericType(const std::string &var_type, const std::string &var_name) const
Verify that a primary variable's numeric type matches the problem's equation system.

◆ addVectorPostprocessor()

void MFEMProblem::addVectorPostprocessor ( const std::string &  type,
const std::string &  name,
InputParameters &  parameters 
)
overridevirtualinherited

Add a vector postprocessor and register its vectors with the MFEM execution system.

Reimplemented from FEProblemBase.

Definition at line 692 of file MFEMProblem.C.

695{
696 if (parameters.getSystemAttributeName() == "MFEMExecutedObject")
697 {
698 checkUserObjectNameCollision(name, "VectorPostprocessor");
699 addObject<MFEMExecutedObject>(type, name, parameters);
700 }
701 else
703}
virtual void addVectorPostprocessor(const std::string &pp_name, const std::string &name, InputParameters &parameters)

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

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

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

◆ addWeakForm()

void MFEMProblem::addWeakForm ( const std::string &  weak_form_name,
const std::string &  name,
InputParameters &  parameters 
)
inherited

Add an MFEM WeakForm to the problem.

Definition at line 453 of file MFEMProblem.C.

456{
457 addObject<MFEMWeakFormBase>(weak_form_name, name, parameters);
458}

◆ advanceMultiApps()

void FEProblemBase::advanceMultiApps ( ExecFlagType  type)
inlineinherited

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

Definition at line 1755 of file FEProblemBase.h.

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

◆ advanceState()

void FEProblemBase::advanceState ( )
virtualinherited

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

Reimplemented in DumpObjectsProblem.

Definition at line 7815 of file FEProblemBase.C.

7816{
7817 TIME_SECTION("advanceState", 5, "Advancing State");
7818
7819 for (auto & sys : _solver_systems)
7820 sys->advanceStateHistory(Moose::SolutionIterationType::Time);
7821 _aux->advanceStateHistory(Moose::SolutionIterationType::Time);
7822
7824 {
7825 for (const auto i : index_range(_solver_systems))
7826 _displaced_problem->solverSys(i).advanceStateHistory(Moose::SolutionIterationType::Time);
7827 _displaced_problem->auxSys().advanceStateHistory(Moose::SolutionIterationType::Time);
7828 }
7829
7831
7833
7836
7839
7842
7843#ifdef MOOSE_KOKKOS_ENABLED
7846
7849
7852#endif
7853
7855}
void copyValuesBack()
Copies current chain control data values into old values.
Moose::Kokkos::MaterialPropertyStorage & _kokkos_neighbor_material_props
ReporterData _reporter_data
Moose::Kokkos::MaterialPropertyStorage & _kokkos_bnd_material_props
Moose::Kokkos::MaterialPropertyStorage & _kokkos_material_props
void backupGeometricSearchState()
Snapshot geometric search state (both on the regular and, if present, the displaced mesh) so it can b...
void shift()
Shift the material properties in time.
ChainControlDataSystem & getChainControlDataSystem()
Gets the system that manages the ChainControls.
Definition MooseApp.h:895
MooseApp & getMooseApp() const
Get the MooseApp this class is associated with.
Definition MooseBase.h:87
void shift()
Shift current, old, and older material property data storages.
void copyValuesBack()
At the end of a timestep this method is called to copy the values back in time in preparation for the...
SolutionIterationType
Definition MooseTypes.h:270
auto index_range(const T &sizable)

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

◆ allowInvalidSolution()

bool FEProblemBase::allowInvalidSolution ( ) const
inlineinherited

Whether to accept / allow an invalid solution.

Definition at line 2494 of file FEProblemBase.h.

2494{ return _allow_invalid_solution; }
const bool _allow_invalid_solution

Referenced by FEProblemBase::acceptInvalidSolution().

◆ allowMeshContractionAfterMeshChanged()

virtual bool FEProblemBase::allowMeshContractionAfterMeshChanged ( ) const
inlinevirtualinherited

Whether meshChanged() should allow the mesh to be contracted (deletes children of coarsened elements and renumbers nodes and elements).

This should be overriden with care as disabling contraction may result in a substantial increase in the memory footprint of the mesh.

Definition at line 2235 of file FEProblemBase.h.

2235{ return true; }

Referenced by FEProblemBase::meshChanged().

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

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

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

◆ allowOutput() [2/2]

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

Definition at line 3812 of file FEProblemBase.h.

3813{
3815}

◆ appendConstantModes()

void FEProblemBase::appendConstantModes ( const std::vector< VariableName > &  vars,
const std::string &  prefix,
std::vector< NumericVector< libMesh::Number > * > &  sp 
)
inherited

Append one mode per variable of vars in the current nonlinear system to sp.

A mode is one basis vector of a subspace. It has one entry per degree of freedom of the system. Here each mode is one on the variable's degrees of freedom and zero elsewhere. This is the coefficient vector of a constant field of the variable for a basis that is a partition of unity, such as a Lagrange or a constant monomial basis. libMesh orthonormalizes the modes before it passes them to PETSc.

Parameters
varsThe variables that each contribute one mode. Variables in other nonlinear systems are skipped.
prefixThe prefix of the name of the system vector that stores each mode
spThe basis vectors of a subspace, such as the nullspace or the transpose nullspace of the Jacobian, that libMesh passes to PETSc

Definition at line 8938 of file FEProblemBase.C.

8941{
8942 auto & sys = _current_nl_sys->system();
8943 std::vector<dof_id_type> dofs;
8944 for (const auto & var : vars)
8945 {
8946 // Each variable lives in exactly one nonlinear system
8947 if (!sys.has_variable(var))
8948 continue;
8949
8950 // The mode is rebuilt on every request so that it stays valid after the dof
8951 // distribution changes, e.g. after mesh adaptivity
8952 auto & mode = _current_nl_sys->addVector(prefix + var, false, libMesh::PARALLEL);
8953 mode.zero();
8954 sys.get_dof_map().local_variable_indices(dofs, sys.variable_number(var));
8955 for (const auto dof : dofs)
8956 mode.set(dof, 1);
8957 mode.close();
8958 sp.push_back(&mode);
8959 }
8960}
char ** vars
virtual libMesh::System & system() override
Get the reference to the libMesh system.
NumericVector< Number > & addVector(const std::string &vector_name, const bool project, const libMesh::ParallelType type)
Adds a solution length vector to the system.
Definition SystemBase.C:608
virtual void zero()=0

Referenced by FEProblemBase::computeNullSpace(), and FEProblemBase::computeTransposeNullSpace().

◆ areCoupled()

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

◆ assembly() [1/2]

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

Implements SubProblem.

Definition at line 3969 of file FEProblemBase.h.

3970{
3971 mooseAssert(tid < _assembly.size(), "Assembly objects not initialized");
3972 mooseAssert(sys_num < _assembly[tid].size(),
3973 "System number larger than the assembly container size");
3974 return *_assembly[tid][sys_num];
3975}

◆ assembly() [2/2]

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

◆ assemblyLevel()

mfem::AssemblyLevel MFEMProblem::assemblyLevel ( ) const
inlineinherited

Return the default assembly level to use for EquationSystem assembly.

Definition at line 432 of file MFEMProblem.h.

432{ return _assembly_level; }
mfem::AssemblyLevel _assembly_level
Default assembly level to use for EquationSystem assembly.

◆ automaticScaling() [1/3]

bool SubProblem::automaticScaling ( ) const
inherited

Automatic scaling getter.

Returns
A boolean representing whether we are performing automatic scaling

Definition at line 845 of file SubProblem.C.

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

◆ automaticScaling() [2/3]

void SubProblem::automaticScaling ( bool  automatic_scaling)
virtualinherited

Automatic scaling setter.

Parameters
automatic_scalingA boolean representing whether we are performing automatic scaling

Reimplemented from SubProblem.

Definition at line 839 of file SubProblem.C.

1164{
1165 for (const auto nl_sys_num : make_range(numNonlinearSystems()))
1166 systemBaseNonlinear(nl_sys_num).automaticScaling(automatic_scaling);
1167}
bool automaticScaling() const
Automatic scaling getter.

◆ automaticScaling() [3/3]

void FEProblemBase::automaticScaling ( bool  automatic_scaling)
overridevirtualinherited

Automatic scaling setter.

Parameters
automatic_scalingA boolean representing whether we are performing automatic scaling

Reimplemented from SubProblem.

Definition at line 10428 of file FEProblemBase.C.

10429{
10431 _displaced_problem->automaticScaling(automatic_scaling);
10432
10433 SubProblem::automaticScaling(automatic_scaling);
10434}
bool automaticScaling() const
Automatic scaling getter.

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

◆ backupGeometricSearchState()

void FEProblemBase::backupGeometricSearchState ( )
inherited

Snapshot geometric search state (both on the regular and, if present, the displaced mesh) so it can be restored with restoreGeometricSearchState() if this step is later rejected.

Called from advanceState(), i.e. before this step's timestepSetup() has run.

Definition at line 7858 of file FEProblemBase.C.

7859{
7861
7863 _displaced_problem->geomSearchData().backup();
7864}
GeometricSearchData _geometric_search_data
void backup()
Snapshot the PenetrationLocators' restartable state (the same state used for restart/recover),...

Referenced by FEProblemBase::advanceState().

◆ backupMultiApps()

void FEProblemBase::backupMultiApps ( ExecFlagType  type)
inherited

Backup the MultiApps associated with the ExecFlagType.

Definition at line 6712 of file FEProblemBase.C.

6713{
6714 const auto & multi_apps = _multi_apps[type].getActiveObjects();
6715
6716 if (multi_apps.size())
6717 {
6718 TIME_SECTION("backupMultiApps", 5, "Backing Up MultiApp");
6719
6721 _console << COLOR_CYAN << "\nBacking Up MultiApps on " << type.name() << COLOR_DEFAULT
6722 << std::endl;
6723
6724 for (const auto & multi_app : multi_apps)
6725 multi_app->backup();
6726
6728
6730 _console << COLOR_CYAN << "Finished Backing Up MultiApps on " << type.name() << "\n"
6731 << COLOR_DEFAULT << std::endl;
6732 }
6733}
bool _verbose_multiapps
Whether or not to be verbose with multiapps.
bool _parallel_barrier_messaging
Whether or not information about how many transfers have completed is printed.
const std::vector< std::shared_ptr< T > > & getActiveObjects(THREAD_ID tid=0) const
Retrieve complete vector to the active all/block/boundary restricted objects for a given thread.
void parallelBarrierNotify(const Parallel::Communicator &comm, bool messaging)
Definition MooseUtils.C:390

Referenced by FixedPointSolve::solve().

◆ bumpAllQRuleOrder()

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

Definition at line 7190 of file FEProblemBase.C.

7191{
7192 for (unsigned int tid = 0; tid < numThreads(); ++tid)
7193 for (const auto i : index_range(_nl))
7194 _assembly[tid][i]->bumpAllQRuleOrder(order, block);
7195
7197 _displaced_problem->bumpAllQRuleOrder(order, block);
7198
7199 updateMaxQps();
7200}
void bumpAllQRuleOrder(libMesh::Order order, SubdomainID block)

Referenced by FEProblemBase::bumpAllQRuleOrder().

◆ bumpVolumeQRuleOrder()

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

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

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

Definition at line 7177 of file FEProblemBase.C.

7178{
7179 for (unsigned int tid = 0; tid < numThreads(); ++tid)
7180 for (const auto i : index_range(_nl))
7181 _assembly[tid][i]->bumpVolumeQRuleOrder(order, block);
7182
7184 _displaced_problem->bumpVolumeQRuleOrder(order, block);
7185
7186 updateMaxQps();
7187}
void bumpVolumeQRuleOrder(libMesh::Order order, SubdomainID block)
Increases the element/volume quadrature order for the specified mesh block if and only if the current...

Referenced by FEProblemBase::bumpVolumeQRuleOrder().

◆ cacheJacobian()

void FEProblemBase::cacheJacobian ( const THREAD_ID  tid)
overridevirtualinherited

Reimplemented from SubProblem.

Definition at line 2406 of file FEProblemBase.C.

2407{
2410 _displaced_problem->cacheJacobian(tid);
2411}
virtual void cacheJacobian(const THREAD_ID tid)

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

◆ cacheJacobianNeighbor()

void FEProblemBase::cacheJacobianNeighbor ( const THREAD_ID  tid)
overridevirtualinherited

Reimplemented from SubProblem.

Definition at line 2414 of file FEProblemBase.C.

2415{
2418 _displaced_problem->cacheJacobianNeighbor(tid);
2419}
virtual void cacheJacobianNeighbor(const THREAD_ID tid)

Referenced by NonlinearSystemBase::constraintJacobians().

◆ cacheResidual()

void FEProblemBase::cacheResidual ( const THREAD_ID  tid)
overridevirtualinherited

Reimplemented from SubProblem.

Definition at line 2277 of file FEProblemBase.C.

2278{
2281 _displaced_problem->cacheResidual(tid);
2282}
virtual void cacheResidual(const THREAD_ID tid)

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

◆ cacheResidualNeighbor()

void FEProblemBase::cacheResidualNeighbor ( const THREAD_ID  tid)
overridevirtualinherited

Reimplemented from SubProblem.

Definition at line 2285 of file FEProblemBase.C.

2286{
2289 _displaced_problem->cacheResidualNeighbor(tid);
2290}
virtual void cacheResidualNeighbor(const THREAD_ID tid)

Referenced by NonlinearSystemBase::constraintResiduals().

◆ callMooseError() [1/2]

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

External method for calling moose error with added object context.

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

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

Definition at line 114 of file MooseBase.C.

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

◆ callMooseError() [2/2]

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

External method for calling moose error with added object context.

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

Definition at line 105 of file MooseBase.C.

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

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

◆ checkBlockMatProps()

void SubProblem::checkBlockMatProps ( )
virtualinherited

Checks block material properties integrity.

See also
FEProblemBase::checkProblemIntegrity

Definition at line 615 of file SubProblem.C.

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

Referenced by FEProblemBase::checkProblemIntegrity().

◆ checkBoundaryMatProps()

void SubProblem::checkBoundaryMatProps ( )
virtualinherited

Checks boundary material properties integrity.

See also
FEProblemBase::checkProblemIntegrity

Definition at line 657 of file SubProblem.C.

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

Referenced by FEProblemBase::checkProblemIntegrity().

◆ checkCoordinateSystems()

void FEProblemBase::checkCoordinateSystems ( )
protectedinherited

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

Definition at line 9994 of file FEProblemBase.C.

9995{
9997}
void checkCoordinateSystems()
Performs a sanity check for every element in the mesh.
Definition MooseMesh.C:4425

Referenced by FEProblemBase::checkProblemIntegrity().

◆ checkDependMaterialsHelper()

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

Helper method for checking Material object dependency.

See also
checkProblemIntegrity

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

Definition at line 9873 of file FEProblemBase.C.

9875{
9876 for (const auto & it : materials_map)
9877 {
9879 std::set<std::string> block_depend_props, block_supplied_props;
9880
9881 for (const auto & mat1 : it.second)
9882 {
9883 auto & alldeps = mat1->getMatPropDependencies(); // includes requested stateful props
9884 for (auto & dep : alldeps)
9885 block_depend_props.insert(_material_prop_registry.getName(dep));
9886
9887 // See if any of the active materials supply this property
9888 for (const auto & mat2 : it.second)
9889 {
9890 const std::set<std::string> & supplied_props = mat2->MaterialBase::getSuppliedItems();
9891 block_supplied_props.insert(supplied_props.begin(), supplied_props.end());
9892 }
9893 }
9894
9895 // Add zero material properties specific to this block and unrestricted
9896 block_supplied_props.insert(_zero_block_material_props[it.first].begin(),
9897 _zero_block_material_props[it.first].end());
9898
9899 // Error check to make sure all properties consumed by materials are supplied on this block
9900 std::set<std::string> difference;
9901 std::set_difference(block_depend_props.begin(),
9902 block_depend_props.end(),
9903 block_supplied_props.begin(),
9904 block_supplied_props.end(),
9905 std::inserter(difference, difference.end()));
9906
9907 if (!difference.empty())
9908 {
9909 std::ostringstream oss;
9910 oss << "One or more Material Properties were not supplied on block ";
9911 const std::string & subdomain_name = _mesh.getSubdomainName(it.first);
9912 if (subdomain_name.length() > 0)
9913 oss << subdomain_name << " (" << it.first << ")";
9914 else
9915 oss << it.first;
9916 oss << ":\n";
9917 for (const auto & name : difference)
9918 oss << name << "\n";
9919 mooseError(oss.str());
9920 }
9921 }
9922
9923 // This loop checks that materials are not supplied by multiple Material objects
9924 for (const auto & it : materials_map)
9925 {
9926 const auto & materials = it.second;
9927 std::set<std::string> inner_supplied, outer_supplied;
9928
9929 for (const auto & outer_mat : materials)
9930 {
9931 // Storage for properties for this material (outer) and all other materials (inner)
9932 outer_supplied = outer_mat->getSuppliedItems();
9933 inner_supplied.clear();
9934
9935 // Property to material map for error reporting
9936 std::map<std::string, std::set<std::string>> prop_to_mat;
9937 for (const auto & name : outer_supplied)
9938 prop_to_mat[name].insert(outer_mat->name());
9939
9940 for (const auto & inner_mat : materials)
9941 {
9942 if (outer_mat == inner_mat)
9943 continue;
9944
9945 // Check whether these materials are an AD pair
9946 auto outer_mat_type = outer_mat->type();
9947 auto inner_mat_type = inner_mat->type();
9948 removeSubstring(outer_mat_type, "<RESIDUAL>");
9949 removeSubstring(outer_mat_type, "<JACOBIAN>");
9950 removeSubstring(inner_mat_type, "<RESIDUAL>");
9951 removeSubstring(inner_mat_type, "<JACOBIAN>");
9952 if (outer_mat_type == inner_mat_type && outer_mat_type != outer_mat->type() &&
9953 inner_mat_type != inner_mat->type())
9954 continue;
9955
9956 inner_supplied.insert(inner_mat->getSuppliedItems().begin(),
9957 inner_mat->getSuppliedItems().end());
9958
9959 for (const auto & inner_supplied_name : inner_supplied)
9960 prop_to_mat[inner_supplied_name].insert(inner_mat->name());
9961 }
9962
9963 // Test that a property isn't supplied on multiple blocks
9964 std::set<std::string> intersection;
9965 std::set_intersection(outer_supplied.begin(),
9966 outer_supplied.end(),
9967 inner_supplied.begin(),
9968 inner_supplied.end(),
9969 std::inserter(intersection, intersection.end()));
9970
9971 if (!intersection.empty())
9972 {
9973 std::ostringstream oss;
9974 oss << "The following material properties are declared on block " << it.first
9975 << " by multiple materials:\n";
9976 oss << ConsoleUtils::indent(2) << std::setw(30) << std::left << "Material Property"
9977 << "Material Objects\n";
9978 for (const auto & outer_name : intersection)
9979 {
9980 oss << ConsoleUtils::indent(2) << std::setw(30) << std::left << outer_name;
9981 for (const auto & inner_name : prop_to_mat[outer_name])
9982 oss << inner_name << " ";
9983 oss << '\n';
9984 }
9985
9986 mooseError(oss.str());
9987 break;
9988 }
9989 }
9990 }
9991}
void removeSubstring(std::string &main, const std::string &sub)
MaterialPropertyRegistry _material_prop_registry
const std::string & getSubdomainName(SubdomainID subdomain_id) const
Return the name of a block given an id.
Definition MooseMesh.C:1748
std::string indent(unsigned int spaces)
Create empty string for indenting.

Referenced by FEProblemBase::checkProblemIntegrity().

◆ checkDisplacementOrders()

void FEProblemBase::checkDisplacementOrders ( )
protectedinherited

Verify that SECOND order mesh uses SECOND order displacements.

Definition at line 9788 of file FEProblemBase.C.

9789{
9791 {
9792 bool mesh_has_second_order_elements = false;
9793 for (const auto & elem : as_range(_displaced_mesh->activeLocalElementsBegin(),
9794 _displaced_mesh->activeLocalElementsEnd()))
9795 {
9796 if (elem->default_order() == SECOND)
9797 {
9798 mesh_has_second_order_elements = true;
9799 break;
9800 }
9801 }
9802
9803 // We checked our local elements, so take the max over all processors.
9804 _displaced_mesh->comm().max(mesh_has_second_order_elements);
9805
9806 // If the Mesh has second order elements, make sure the
9807 // displacement variables are second-order.
9808 if (mesh_has_second_order_elements)
9809 {
9810 const std::vector<std::string> & displacement_variables =
9811 _displaced_problem->getDisplacementVarNames();
9812
9813 for (const auto & var_name : displacement_variables)
9814 {
9815 MooseVariableFEBase & mv =
9816 _displaced_problem->getVariable(/*tid=*/0,
9817 var_name,
9820 if (mv.order() != SECOND)
9821 mooseError("Error: mesh has SECOND order elements, so all displacement variables must be "
9822 "SECOND order.");
9823 }
9824 }
9825 }
9826}
libMesh::Order order() const
Get the order of this variable Note: Order enum can be implicitly converted to unsigned int.
void max(const T &r, T &o, Request &req) const
const Parallel::Communicator & comm() const
@ VAR_FIELD_STANDARD
Definition MooseTypes.h:781
SimpleRange< IndexType > as_range(const std::pair< IndexType, IndexType > &p)

Referenced by FEProblemBase::checkProblemIntegrity().

◆ checkDuplicatePostprocessorVariableNames()

void FEProblemBase::checkDuplicatePostprocessorVariableNames ( )
inherited

Definition at line 1868 of file FEProblemBase.C.

1869{
1870 for (const auto & pp : _reporter_data.getPostprocessorNames())
1871 if (hasScalarVariable(pp))
1872 mooseError("Postprocessor \"" + pp +
1873 "\" has the same name as a scalar variable in the system.");
1874}

Referenced by FEProblemBase::checkProblemIntegrity().

◆ checkExceptionAndStopSolve()

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

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

Notes:

  • The exception have be registered by calling setException() prior to calling this.
  • This is collective on MPI, and must be called simultaneously by all processors!
  • If called when the solve can be interruped, it will do so and also throw a MooseHandledException, 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 7636 of file FEProblemBase.C.

7637{
7639 return;
7640
7641 TIME_SECTION("checkExceptionAndStopSolve", 5);
7642
7643 // See if any processor had an exception. If it did, get back the
7644 // processor that the exception occurred on.
7645 unsigned int processor_id;
7646
7648
7649 if (_has_exception)
7650 {
7652
7654 {
7655 // Print the message
7656 if (_communicator.rank() == 0 && print_message)
7657 {
7658 _console << "\n" << _exception_message << "\n";
7659 if (isTransient())
7660 _console
7661 << "To recover, the solution will fail and then be re-attempted with a reduced time "
7662 "step.\n"
7663 << std::endl;
7664 }
7665
7666 // Stop the solve -- this entails setting
7667 // SNESSetFunctionDomainError() or directly inserting NaNs in the
7668 // residual vector to let PETSc >= 3.6 return DIVERGED_NANORINF.
7669 if (_current_nl_sys)
7671
7674
7675 // and close Aux system (we MUST do this here; see #11525)
7676 _aux->solution().close();
7677
7678 // We've handled this exception, so we no longer have one.
7679 _has_exception = false;
7680
7681 // Force the next non-linear convergence check to fail (and all further residual evaluation
7682 // to be skipped).
7684
7685 // Repropagate the exception, so it can be caught at a higher level, typically
7686 // this is NonlinearSystem::computeResidual().
7688 }
7689 else
7690 mooseError("The following parallel-communicated exception was detected during " +
7691 Moose::stringify(_current_execute_on_flag) + " evaluation:\n" +
7693 "\nBecause this did not occur during residual evaluation, there"
7694 " is no way to handle this, so the solution is aborting.\n");
7695 }
7696}
LinearSystem * _current_linear_sys
The current linear system that we are solving.
std::set< TagID > _fe_vector_tags
std::string _exception_message
The error message to go with an exception.
ExecFlagType _current_execute_on_flag
Current execute_on flag.
bool _skip_exception_check
If or not skip 'exception and stop solve'.
bool _fail_next_system_convergence_check
bool _has_exception
Whether or not an exception has occurred.
virtual bool isTransient() const override
virtual void stopSolve(const ExecFlagType &exec_flag, const std::set< TagID > &vector_tags_to_close) override
Quit the current solve as soon as possible.
Thrown by FEProblemBase::checkExceptionAndStopSolve() once an exception has been communicated to all ...
virtual void stopSolve(const ExecFlagType &exec_flag, const std::set< TagID > &vector_tags_to_close)=0
Quit the current solve as soon as possible.
void maxloc(T &r, unsigned int &max_id) const
processor_id_type rank() const
void broadcast(T &data, const unsigned int root_id=0, const bool identical_sizes=false) const
bool isSolverExecFlag(const ExecFlagType &exec_flag)
Definition Moose.C:68

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

◆ checkGradientMethods()

void FEProblemBase::checkGradientMethods ( )
protectedinherited

Let every FVGradientMethod resolve its dependencies on other gradient methods.

Definition at line 9864 of file FEProblemBase.C.

9865{
9866 std::vector<FVGradientMethod *> methods;
9867 theWarehouse().query().condition<AttribSystem>("FVGradientMethod").queryInto(methods);
9868 for (auto * method : methods)
9869 method->resolveGradientMethodDependencies(*this);
9870}
QueryCache & condition(Args &&... args)
Adds a new condition to the query.
Query query()
query creates and returns an initialized a query object for querying objects from the warehouse.

Referenced by FEProblemBase::checkProblemIntegrity().

◆ checkICRestartError()

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

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

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

Definition at line 3969 of file FEProblemBase.C.

3972{
3974 {
3975 std::string restart_method = "";
3976 if (_app.isRestarting())
3977 restart_method =
3978 "a checkpoint restart, by IC object '" + ic_name + "' for variable '" + name + "'";
3979 else if (_app.getExReaderForRestart())
3980 {
3981 std::vector<std::string> restarted_vars = _app.getExReaderForRestart()->get_elem_var_names();
3982 const auto nodal_vars = _app.getExReaderForRestart()->get_nodal_var_names();
3983 const auto global_vars = _app.getExReaderForRestart()->get_global_var_names();
3984 restarted_vars.insert(restarted_vars.end(), nodal_vars.begin(), nodal_vars.end());
3985 restarted_vars.insert(restarted_vars.end(), global_vars.begin(), global_vars.end());
3986
3987 if (std::find(restarted_vars.begin(), restarted_vars.end(), var_name) != restarted_vars.end())
3988 restart_method = "an Exodus restart, by IC object '" + ic_name + "' for variable '" + name +
3989 "' that is also being restarted";
3990 }
3991 if (!restart_method.empty())
3992 mooseError(
3993 "Initial conditions have been specified during ",
3994 restart_method,
3995 ".\nThis is only allowed if you specify 'allow_initial_conditions_with_restart' to "
3996 "the [Problem], as initial conditions can override restarted fields");
3997 }
3998}
const bool _allow_ics_during_restart
bool isRestarting() const
Whether or not this is a "restart" calculation.
Definition MooseApp.C:1684
libMesh::ExodusII_IO * getExReaderForRestart() const
Get the Exodus reader to restart variables from an Exodus mesh file.
Definition MooseApp.h:453
const std::vector< std::string > & get_global_var_names()
const std::vector< std::string > & get_elem_var_names()
const std::vector< std::string > & get_nodal_var_names()

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

◆ checkingUOAuxState()

bool FEProblemBase::checkingUOAuxState ( ) const
inlineinherited

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

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

Definition at line 229 of file FEProblemBase.h.

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

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

◆ checkNonlocalCoupling()

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

Definition at line 2007 of file FEProblemBase.C.

2008{
2009 TIME_SECTION("checkNonlocalCoupling", 5, "Checking Nonlocal Coupling");
2010
2011 for (THREAD_ID tid = 0; tid < numThreads(); tid++)
2012 for (auto & nl : _nl)
2013 {
2014 const auto & all_kernels = nl->getKernelWarehouse();
2015 const auto & kernels = all_kernels.getObjects(tid);
2016 for (const auto & kernel : kernels)
2017 {
2018 std::shared_ptr<NonlocalKernel> nonlocal_kernel =
2019 std::dynamic_pointer_cast<NonlocalKernel>(kernel);
2020 if (nonlocal_kernel)
2021 {
2024 _nonlocal_kernels.addObject(kernel, tid);
2025 }
2026 }
2027 const MooseObjectWarehouse<IntegratedBCBase> & all_integrated_bcs =
2028 nl->getIntegratedBCWarehouse();
2029 const auto & integrated_bcs = all_integrated_bcs.getObjects(tid);
2030 for (const auto & integrated_bc : integrated_bcs)
2031 {
2032 std::shared_ptr<NonlocalIntegratedBC> nonlocal_integrated_bc =
2033 std::dynamic_pointer_cast<NonlocalIntegratedBC>(integrated_bc);
2034 if (nonlocal_integrated_bc)
2035 {
2038 _nonlocal_integrated_bcs.addObject(integrated_bc, tid);
2039 }
2040 }
2041 }
2042}
MooseObjectWarehouse< IntegratedBCBase > _nonlocal_integrated_bcs
nonlocal integrated_bcs
MooseObjectWarehouse< KernelBase > _nonlocal_kernels
nonlocal kernels
bool _requires_nonlocal_coupling
nonlocal coupling requirement flag
bool _calculate_jacobian_in_uo
const std::vector< std::shared_ptr< T > > & getObjects(THREAD_ID tid=0) const
Retrieve complete vector to the all/block/boundary restricted objects for a given thread.
A storage container for MooseObjects that inherit from SetupInterface.

◆ checkNonlocalCouplingRequirement()

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

Implements SubProblem.

Definition at line 10862 of file FEProblemBase.C.

10863{
10865}

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

◆ checkProblemIntegrity()

void FEProblemBase::checkProblemIntegrity ( )
virtualinherited

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

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

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

unsigned int is necessary to print SubdomainIDs in the statement below

vector is necessary to get the subdomain names

Reimplemented in EigenProblem.

Definition at line 9614 of file FEProblemBase.C.

9615{
9616 TIME_SECTION("checkProblemIntegrity", 5);
9617
9618 // Subdomains specified by the "Problem/block" parameter
9619 const auto & subdomain_names = getParam<std::vector<SubdomainName>>("block");
9620 auto mesh_subdomains_vec = MooseMeshUtils::getSubdomainIDs(_mesh, subdomain_names);
9621 std::set<SubdomainID> mesh_subdomains(mesh_subdomains_vec.begin(), mesh_subdomains_vec.end());
9622
9623 // Check kernel coverage of subdomains (blocks) in the mesh
9626 {
9627 std::set<SubdomainID> blocks;
9630 blocks = mesh_subdomains;
9632 {
9633 blocks = mesh_subdomains;
9634 for (const auto & subdomain_name : _kernel_coverage_blocks)
9635 {
9636 const auto id = _mesh.getSubdomainID(subdomain_name);
9637 if (id == Moose::INVALID_BLOCK_ID)
9638 paramError("kernel_coverage_block_list",
9639 "Subdomain \"",
9640 subdomain_name,
9641 "\" not found in mesh.");
9642 blocks.erase(id);
9643 }
9644 }
9646 for (const auto & subdomain_name : _kernel_coverage_blocks)
9647 {
9648 const auto id = _mesh.getSubdomainID(subdomain_name);
9649 if (id == Moose::INVALID_BLOCK_ID)
9650 paramError("kernel_coverage_block_list",
9651 "Subdomain \"",
9652 subdomain_name,
9653 "\" not found in mesh.");
9654 blocks.insert(id);
9655 }
9656 if (!blocks.empty())
9657 for (auto & nl : _nl)
9658 nl->checkKernelCoverage(blocks);
9659 }
9660
9661 // Check materials
9662 {
9663#ifdef LIBMESH_ENABLE_AMR
9664 if ((_adaptivity.isOn() || _num_grid_steps) &&
9667 {
9668 _console << "Using EXPERIMENTAL Stateful Material Property projection with Adaptivity!\n"
9669 << std::flush;
9670 }
9671#endif
9672
9673 std::set<SubdomainID> local_mesh_subs(mesh_subdomains);
9674
9677 {
9682 bool check_material_coverage = false;
9683 std::set<SubdomainID> ids = _all_materials.getActiveBlocks();
9684 for (const auto & id : ids)
9685 {
9686 local_mesh_subs.erase(id);
9687 check_material_coverage = true;
9688 }
9689
9690 // did the user limit the subdomains to be checked?
9692 {
9693 for (const auto & subdomain_name : _material_coverage_blocks)
9694 {
9695 const auto id = _mesh.getSubdomainID(subdomain_name);
9696 if (id == Moose::INVALID_BLOCK_ID)
9697 paramError("material_coverage_block_list",
9698 "Subdomain \"" + subdomain_name + "\" not found in mesh.");
9699 local_mesh_subs.erase(id);
9700 }
9701 }
9703 {
9704 std::set<SubdomainID> blocks(local_mesh_subs);
9705 for (const auto & subdomain_name : _material_coverage_blocks)
9706 {
9707 const auto id = _mesh.getSubdomainID(subdomain_name);
9708 if (id == Moose::INVALID_BLOCK_ID)
9709 paramError("material_coverage_block_list",
9710 "Subdomain \"" + subdomain_name + "\" not found in mesh.");
9711 blocks.erase(id);
9712 }
9713 for (const auto id : blocks)
9714 local_mesh_subs.erase(id);
9715 }
9716
9717 // also exclude mortar spaces from the material check
9718 auto && mortar_subdomain_ids = _mortar_data->getMortarSubdomainIDs();
9719 for (auto subdomain_id : mortar_subdomain_ids)
9720 local_mesh_subs.erase(subdomain_id);
9721
9722 // Check Material Coverage
9723 if (check_material_coverage && !local_mesh_subs.empty())
9724 {
9725 std::stringstream extra_subdomain_ids;
9727 std::copy(local_mesh_subs.begin(),
9728 local_mesh_subs.end(),
9729 std::ostream_iterator<unsigned int>(extra_subdomain_ids, " "));
9731 std::vector<SubdomainID> local_mesh_subs_vec(local_mesh_subs.begin(),
9732 local_mesh_subs.end());
9733
9734 mooseError("The following blocks from your input mesh do not contain an active material: " +
9735 extra_subdomain_ids.str() +
9736 "(names: " + Moose::stringify(_mesh.getSubdomainNames(local_mesh_subs_vec)) +
9737 ")\nWhen ANY mesh block contains a Material object, "
9738 "all blocks must contain a Material object.\n");
9739 }
9740 }
9741
9742 // Check material properties on blocks and boundaries
9745
9746 // Check that material properties exist when requested by other properties on a given block
9747 const auto & materials = _all_materials.getActiveObjects();
9748 for (const auto & material : materials)
9749 material->checkStatefulSanity();
9750
9751 // auto mats_to_check = _materials.getActiveBlockObjects();
9752 // const auto & discrete_materials = _discrete_materials.getActiveBlockObjects();
9753 // for (const auto & map_it : discrete_materials)
9754 // for (const auto & container_element : map_it.second)
9755 // mats_to_check[map_it.first].push_back(container_element);
9758 }
9759
9761
9763
9764 // Verify that we don't have any Element type/Coordinate Type conflicts
9766
9767 // Coordinate transforms are only intended for use with MultiApps at this time. If you are not
9768 // using multiapps but still require these, contact a moose developer
9770 !hasMultiApps())
9771 mooseError("Coordinate transformation parameters, listed below, are only to be used in the "
9772 "context of application to application field transfers at this time. The mesh is "
9773 "not modified by these parameters within an application.\n"
9774 "You should likely use a 'TransformGenerator' in the [Mesh] block to achieve the "
9775 "desired mesh modification.\n\n",
9777
9778 // If using displacements, verify that the order of the displacement
9779 // variables matches the order of the elements in the displaced
9780 // mesh.
9782
9783 // Check for postprocessor names with same name as a scalar variable
9785}
char ** blocks
std::vector< SubdomainName > _material_coverage_blocks
void checkDependMaterialsHelper(const std::map< SubdomainID, std::vector< std::shared_ptr< MaterialBase > > > &materials_map)
Helper method for checking Material object dependency.
const bool _skip_nl_system_check
const bool & _solve
Whether or not to actually solve the nonlinear system.
void checkDisplacementOrders()
Verify that SECOND order mesh uses SECOND order displacements.
std::unique_ptr< MortarInterfaceWarehouse > _mortar_data
CoverageCheckMode _kernel_coverage_check
Determines whether and which subdomains are to be checked to ensure that they have an active kernel.
void checkUserObjects()
const bool _material_dependency_check
Determines whether a check to verify material dependencies on every subdomain.
bool hasMultiApps() const
Returns whether or not the current simulation has any multiapps.
void checkCoordinateSystems()
Verify that there are no element type/coordinate type conflicts.
void checkDuplicatePostprocessorVariableNames()
void checkGradientMethods()
Let every FVGradientMethod resolve its dependencies on other gradient methods.
CoverageCheckMode _material_coverage_check
Determines whether and which subdomains are to be checked to ensure that they have an active material...
std::vector< SubdomainName > _kernel_coverage_blocks
bool hasScalingOrRotationTransformation() const
Returns true if the app has scaling and/or rotation transformation.
static InputParameters validParams()
Describes the parameters this object can take to setup transformations.
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:1754
MooseAppCoordTransform & coordTransform()
Definition MooseMesh.h:2086
SubdomainID getSubdomainID(const SubdomainName &subdomain_name) const
Get the associated subdomain ID for the subdomain name.
Definition MooseMesh.C:1712
std::set< SubdomainID > getActiveBlocks(THREAD_ID tid=0) const
Return a set of active SubdomainsIDs.
const std::map< SubdomainID, std::vector< std::shared_ptr< T > > > & getActiveBlockObjects(THREAD_ID tid=0) const
virtual void checkBoundaryMatProps()
Checks boundary material properties integrity.
Definition SubProblem.C:657
virtual void checkBlockMatProps()
Checks block material properties integrity.
Definition SubProblem.C:615
std::vector< subdomain_id_type > getSubdomainIDs(const libMesh::MeshBase &mesh, const std::vector< SubdomainName > &subdomain_name)
Get the associated subdomainIDs for the subdomain names that are passed in.
const SubdomainID INVALID_BLOCK_ID
Definition MooseTypes.C:20

Referenced by EigenProblem::checkProblemIntegrity().

◆ checkResidualForNans()

virtual bool FEProblemBase::checkResidualForNans ( ) const
inlineoverridevirtualinherited

Whether to check residual for NaN/Inf values.

Implements SubProblem.

Definition at line 232 of file FEProblemBase.h.

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

Referenced by DisplacedProblem::checkResidualForNans().

◆ checkUserObjectJacobianRequirement()

void FEProblemBase::checkUserObjectJacobianRequirement ( THREAD_ID  tid)
inherited

Definition at line 2045 of file FEProblemBase.C.

2046{
2047 std::set<const MooseVariableFEBase *> uo_jacobian_moose_vars;
2048 {
2049 std::vector<ShapeElementUserObject *> objs;
2050 theWarehouse()
2051 .query()
2053 .condition<AttribThread>(tid)
2054 .queryInto(objs);
2055
2056 for (const auto & uo : objs)
2057 {
2058 _calculate_jacobian_in_uo = uo->computeJacobianFlag();
2059 const auto & mv_deps = uo->jacobianMooseVariables();
2060 uo_jacobian_moose_vars.insert(mv_deps.begin(), mv_deps.end());
2061 }
2062 }
2063 {
2064 std::vector<ShapeSideUserObject *> objs;
2065 theWarehouse()
2066 .query()
2068 .condition<AttribThread>(tid)
2069 .queryInto(objs);
2070 for (const auto & uo : objs)
2071 {
2072 _calculate_jacobian_in_uo = uo->computeJacobianFlag();
2073 const auto & mv_deps = uo->jacobianMooseVariables();
2074 uo_jacobian_moose_vars.insert(mv_deps.begin(), mv_deps.end());
2075 }
2076 }
2077
2078 _uo_jacobian_moose_vars[tid].assign(uo_jacobian_moose_vars.begin(), uo_jacobian_moose_vars.end());
2079 std::sort(
2080 _uo_jacobian_moose_vars[tid].begin(), _uo_jacobian_moose_vars[tid].end(), sortMooseVariables);
2081}
@ ShapeSideUserObject
@ ShapeElementUserObject
std::vector< std::vector< const MooseVariableFEBase * > > _uo_jacobian_moose_vars

◆ checkUserObjectNameCollision()

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

Check for name collision between different user objects.

Parameters
nameThe object name being added
typeThe object type being added

Definition at line 4886 of file FEProblemBase.C.

4888{
4889 if (hasUserObject(name))
4890 mooseError("A ",
4892 " already exists. You may not add a ",
4893 type,
4894 " by the same name.");
4895
4896#ifdef MOOSE_KOKKOS_ENABLED
4898 mooseError("A ",
4899 getKokkosUserObject<UserObjectBase>(name).typeAndName(),
4900 " already exists. You may not add a ",
4901 type,
4902 " by the same name.");
4903#endif
4904}
bool hasKokkosUserObject(const std::string &name) const
Check if there if a Kokkos user object of given name.
bool hasUserObject(const std::string &name) const
Check if there if a user object of given name.
const UserObject & getUserObjectBase(const std::string &name, const THREAD_ID tid=0) const
Get the user object by its name.
std::string typeAndName() const
Get the class's combined type and name; useful in error handling.
Definition MooseBase.C:57

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

◆ checkUserObjects()

void FEProblemBase::checkUserObjects ( )
protectedinherited

Definition at line 9829 of file FEProblemBase.C.

9830{
9831 // Check user_objects block coverage
9832 std::set<SubdomainID> mesh_subdomains = _mesh.meshSubdomains();
9833 std::set<SubdomainID> user_objects_blocks;
9834
9835 // gather names of all user_objects that were defined in the input file
9836 // and the blocks that they are defined on
9837 std::set<std::string> names;
9838
9839 std::vector<UserObjectBase *> objects;
9841
9842 for (const auto & obj : objects)
9843 names.insert(obj->name());
9844
9845 // See if all referenced blocks are covered
9846 std::set<SubdomainID> difference;
9847 std::set_difference(user_objects_blocks.begin(),
9848 user_objects_blocks.end(),
9849 mesh_subdomains.begin(),
9850 mesh_subdomains.end(),
9851 std::inserter(difference, difference.end()));
9852
9853 if (!difference.empty())
9854 {
9855 std::ostringstream oss;
9856 oss << "One or more UserObjects is referencing a nonexistent block:\n";
9857 for (const auto & id : difference)
9858 oss << id << "\n";
9859 mooseError(oss.str());
9860 }
9861}
const std::set< SubdomainID > & meshSubdomains() const
Returns a read-only reference to the set of subdomains currently present in the Mesh.
Definition MooseMesh.C:3269

Referenced by FEProblemBase::checkProblemIntegrity().

◆ clearActiveElementalMooseVariables()

void FEProblemBase::clearActiveElementalMooseVariables ( const THREAD_ID  tid)
overridevirtualinherited

Clear the active elemental MooseVariableFEBase.

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

Parameters
tidThe thread id

Reimplemented from SubProblem.

Definition at line 7019 of file FEProblemBase.C.

7020{
7022
7024 _displaced_problem->clearActiveElementalMooseVariables(tid);
7025}
virtual void clearActiveElementalMooseVariables(const THREAD_ID tid)
Clear the active elemental MooseVariableFieldBase.
Definition SubProblem.C:458

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

◆ clearActiveFEVariableCoupleableMatrixTags()

void FEProblemBase::clearActiveFEVariableCoupleableMatrixTags ( const THREAD_ID  tid)
overridevirtualinherited

Reimplemented from SubProblem.

Definition at line 7028 of file FEProblemBase.C.

7029{
7031
7033 _displaced_problem->clearActiveFEVariableCoupleableMatrixTags(tid);
7034}
virtual void clearActiveFEVariableCoupleableMatrixTags(const THREAD_ID tid)
Definition SubProblem.C:376

◆ clearActiveFEVariableCoupleableVectorTags()

void FEProblemBase::clearActiveFEVariableCoupleableVectorTags ( const THREAD_ID  tid)
overridevirtualinherited

Reimplemented from SubProblem.

Definition at line 7037 of file FEProblemBase.C.

7038{
7040
7042 _displaced_problem->clearActiveFEVariableCoupleableVectorTags(tid);
7043}
virtual void clearActiveFEVariableCoupleableVectorTags(const THREAD_ID tid)
Definition SubProblem.C:370

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

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

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

◆ clearActiveScalarVariableCoupleableMatrixTags()

void FEProblemBase::clearActiveScalarVariableCoupleableMatrixTags ( const THREAD_ID  tid)
overridevirtualinherited

Reimplemented from SubProblem.

Definition at line 7046 of file FEProblemBase.C.

7047{
7049
7051 _displaced_problem->clearActiveScalarVariableCoupleableMatrixTags(tid);
7052}
virtual void clearActiveScalarVariableCoupleableMatrixTags(const THREAD_ID tid)
Definition SubProblem.C:417

Referenced by AuxiliarySystem::clearScalarVariableCoupleableTags().

◆ clearActiveScalarVariableCoupleableVectorTags()

void FEProblemBase::clearActiveScalarVariableCoupleableVectorTags ( const THREAD_ID  tid)
overridevirtualinherited

Reimplemented from SubProblem.

Definition at line 7055 of file FEProblemBase.C.

7056{
7058
7060 _displaced_problem->clearActiveScalarVariableCoupleableVectorTags(tid);
7061}
virtual void clearActiveScalarVariableCoupleableVectorTags(const THREAD_ID tid)
Definition SubProblem.C:411

Referenced by AuxiliarySystem::clearScalarVariableCoupleableTags().

◆ clearAllDofIndices()

void SubProblem::clearAllDofIndices ( )
inherited

Clear dof indices from variables in nl and aux systems.

Definition at line 1178 of file SubProblem.C.

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

Referenced by FEProblemBase::solve().

◆ clearCurrentJacobianMatrixTags()

void FEProblemBase::clearCurrentJacobianMatrixTags ( )
inlineinherited

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

Definition at line 3044 of file FEProblemBase.h.

3044{}

Referenced by FEProblemBase::resetState().

◆ clearCurrentResidualVectorTags()

void FEProblemBase::clearCurrentResidualVectorTags ( )
inlineinherited

Clear the current residual vector tag data structure.

Definition at line 4006 of file FEProblemBase.h.

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

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

◆ clearDiracInfo()

void FEProblemBase::clearDiracInfo ( )
overridevirtualinherited

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

Implements SubProblem.

Definition at line 2869 of file FEProblemBase.C.

2870{
2872
2874 _displaced_problem->clearDiracInfo();
2875}
void clearPoints()
Remove all of the current points and elements.
DiracKernelInfo _dirac_kernel_info

Referenced by NonlinearSystemBase::computeDiracContributions().

◆ cloneAlgebraicGhostingFunctor()

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

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

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

Definition at line 1009 of file SubProblem.C.

1010{
1011 EquationSystems & eq = es();
1012 const auto n_sys = eq.n_systems();
1013
1014 auto pr = _root_alg_gf_to_sys_clones.emplace(
1015 &algebraic_gf, std::vector<std::shared_ptr<libMesh::GhostingFunctor>>(n_sys - 1));
1016 mooseAssert(pr.second, "We are adding a duplicate algebraic ghosting functor");
1017 auto & clones_vec = pr.first->second;
1018
1019 for (MooseIndex(n_sys) i = 1; i < n_sys; ++i)
1020 {
1021 DofMap & dof_map = eq.get_system(i).get_dof_map();
1022 std::shared_ptr<libMesh::GhostingFunctor> clone_alg_gf = algebraic_gf.clone();
1023 std::dynamic_pointer_cast<RelationshipManager>(clone_alg_gf)
1024 ->init(mesh(), *algebraic_gf.get_mesh(), &dof_map);
1025 dof_map.add_algebraic_ghosting_functor(clone_alg_gf, to_mesh);
1026 clones_vec[i - 1] = clone_alg_gf;
1027 }
1028}
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.
virtual std::unique_ptr< GhostingFunctor > clone() const=0
const MeshBase * get_mesh() const

Referenced by SubProblem::addAlgebraicGhostingFunctor().

◆ cloneCouplingGhostingFunctor()

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

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

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

Definition at line 1043 of file SubProblem.C.

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

Referenced by SubProblem::addCouplingGhostingFunctor().

◆ computeBounds()

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

Definition at line 8737 of file FEProblemBase.C.

8740{
8741 try
8742 {
8743 try
8744 {
8745 mooseAssert(_current_nl_sys && (sys.number() == _current_nl_sys->number()),
8746 "I expect these system numbers to be the same");
8747
8748 if (!_current_nl_sys->hasVector("lower_bound") || !_current_nl_sys->hasVector("upper_bound"))
8749 return;
8750
8751 TIME_SECTION("computeBounds", 1, "Computing Bounds");
8752
8753 NumericVector<Number> & _lower = _current_nl_sys->getVector("lower_bound");
8754 NumericVector<Number> & _upper = _current_nl_sys->getVector("upper_bound");
8755 _lower.swap(lower);
8756 _upper.swap(upper);
8757 for (THREAD_ID tid = 0; tid < numThreads(); tid++)
8759
8760 _aux->residualSetup();
8762 _lower.swap(lower);
8763 _upper.swap(upper);
8764 }
8765 catch (...)
8766 {
8767 handleException("computeBounds");
8768 }
8769 }
8770 catch (MooseException & e)
8771 {
8772 mooseError("Irrecoverable exception: " + std::string(e.what()));
8773 }
8774 catch (...)
8775 {
8776 mooseError("Unexpected exception type");
8777 }
8778}
const ExecFlagType EXEC_LINEAR
Definition Moose.C:32
void computeSystems(const ExecFlagType &type)
Do generic system computations.
void handleException(const std::string &calling_method)
Handle exceptions.
virtual void residualSetup(THREAD_ID tid=0) const override
Provides a way for users to bail out of the current solve.
virtual const char * what() const
Get out the error message.
virtual NumericVector< Number > & getVector(const std::string &name)
Get a raw NumericVector by name.
Definition SystemBase.C:933
virtual void swap(NumericVector< T > &v)

Referenced by Moose::compute_bounds().

◆ computeDamping()

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

Definition at line 9046 of file FEProblemBase.C.

9048{
9049 // Default to no damping
9050 Real damping = 1.0;
9051
9052 if (_has_dampers)
9053 {
9054 TIME_SECTION("computeDamping", 1, "Computing Damping");
9055
9056 // Save pointer to the current solution
9057 const NumericVector<Number> * _saved_current_solution = _current_nl_sys->currentSolution();
9058
9060 // For now, do not re-compute auxiliary variables. Doing so allows a wild solution increment
9061 // to get to the material models, which may not be able to cope with drastically different
9062 // values. Once more complete dependency checking is in place, auxiliary variables (and
9063 // material properties) will be computed as needed by dampers.
9064 // _aux.compute();
9065 damping = _current_nl_sys->computeDamping(soln, update);
9066
9067 // restore saved solution
9068 _current_nl_sys->setSolution(*_saved_current_solution);
9069 }
9070
9071 return damping;
9072}
Real computeDamping(const NumericVector< Number > &solution, const NumericVector< Number > &update)
Compute damping.
void setSolution(const NumericVector< Number > &soln)
Set the solution to a given vector.
virtual const NumericVector< Number > *const & currentSolution() const override final
The solution vector that is currently being operated on.
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real

Referenced by FEProblemBase::computePostCheck().

◆ computeIndicators()

void FEProblemBase::computeIndicators ( )
virtualinherited

Reimplemented in DumpObjectsProblem.

Definition at line 5349 of file FEProblemBase.C.

5350{
5351 // Initialize indicator aux variable fields
5353 {
5354 TIME_SECTION("computeIndicators", 1, "Computing Indicators");
5355
5356 // Internal side indicators may lead to creating a much larger sparsity pattern than dictated by
5357 // the actual finite element scheme (e.g. CFEM)
5358 const auto old_do_derivatives = ADReal::do_derivatives;
5359 ADReal::do_derivatives = false;
5360
5361 std::vector<std::string> fields;
5362
5363 // Indicator Fields
5364 const auto & indicators = _indicators.getActiveObjects();
5365 for (const auto & indicator : indicators)
5366 fields.push_back(indicator->name());
5367
5368 // InternalSideIndicator Fields
5369 const auto & internal_indicators = _internal_side_indicators.getActiveObjects();
5370 for (const auto & internal_indicator : internal_indicators)
5371 fields.push_back(internal_indicator->name());
5372
5373 _aux->zeroVariables(fields);
5374
5375 // compute Indicators
5376 ComputeIndicatorThread cit(*this);
5378 _aux->solution().close();
5379 _aux->update();
5380
5381 ComputeIndicatorThread finalize_cit(*this, true);
5383 _aux->solution().close();
5384 _aux->update();
5385
5386 ADReal::do_derivatives = old_do_derivatives;
5387 }
5388}
MooseObjectWarehouse< Indicator > _indicators
const libMesh::ConstElemRange & getCurrentAlgebraicElementRange()
These are the element and nodes that contribute to the jacobian and residual for this local processor...
MooseObjectWarehouse< InternalSideIndicatorBase > _internal_side_indicators
bool hasActiveObjects(THREAD_ID tid=0) const
void parallel_reduce(const Range &range, Body &body, unsigned int n_threads=libMesh::n_threads())
PetscErrorCode PetscInt const PetscInt fields[]

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

◆ computeIndicatorsAndMarkers()

void FEProblemBase::computeIndicatorsAndMarkers ( )
virtualinherited

Definition at line 5342 of file FEProblemBase.C.

5343{
5346}
virtual void computeIndicators()

◆ computeJacobian()

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

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

Reimplemented in EigenProblem.

Definition at line 8562 of file FEProblemBase.C.

8565{
8566 setCurrentNonlinearSystem(nl_sys_num);
8567
8568 _fe_matrix_tags.clear();
8569
8570 auto & tags = getMatrixTags();
8571 for (auto & tag : tags)
8572 _fe_matrix_tags.insert(tag.second);
8573
8575}
std::set< TagID > _fe_matrix_tags
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:256

Referenced by FEProblemBase::computeJacobianSys().

◆ computeJacobianBlock()

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

Really not a good idea to use this.

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

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

Definition at line 8725 of file FEProblemBase.C.

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

◆ computeJacobianBlocks()

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

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

Used by Physics-based preconditioning

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

Reimplemented in EigenProblem.

Definition at line 8705 of file FEProblemBase.C.

8707{
8708 TIME_SECTION("computeTransientImplicitJacobian", 2);
8709 setCurrentNonlinearSystem(nl_sys_num);
8710
8712 {
8714 _displaced_problem->updateMesh();
8715 }
8716
8718
8722}
const ExecFlagType EXEC_NONLINEAR
Definition Moose.C:34
const ExecFlagType EXEC_PRE_DISPLACE
Definition Moose.C:55
void computeJacobianBlocks(std::vector< JacobianBlock * > &blocks)
Computes several Jacobian blocks simultaneously, summing their contributions into smaller preconditio...
bool _currently_computing_jacobian
Flag to determine whether the problem is currently computing Jacobian.

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

◆ computeJacobianInternal()

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

Form a Jacobian matrix for multiple tags.

It should not be called directly by users.

Definition at line 8578 of file FEProblemBase.C.

8581{
8582 TIME_SECTION("computeJacobianInternal", 1);
8583
8585
8587
8588 computeJacobianTags(tags);
8589
8591}
virtual void computeJacobianTags(const std::set< TagID > &tags)
Form multiple matrices, and each is associated with a tag.
TagID systemMatrixTag() const override
Return the Matrix Tag ID for System.
virtual void disassociateMatrixFromTag(libMesh::SparseMatrix< Number > &matrix, TagID tag)
Disassociate a matrix from a tag.
virtual void associateMatrixToTag(libMesh::SparseMatrix< Number > &matrix, TagID tag)
Associate a matrix to a tag.

Referenced by FEProblemBase::computeJacobian().

◆ computeJacobianSys()

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

Form a Jacobian matrix.

It is called by Libmesh.

Definition at line 8538 of file FEProblemBase.C.

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

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

◆ computeJacobianTag()

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

Form a Jacobian matrix for a given tag.

Definition at line 8548 of file FEProblemBase.C.

8551{
8553
8554 _current_nl_sys->associateMatrixToTag(jacobian, tag);
8555
8556 computeJacobianTags({tag});
8557
8559}

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

◆ computeJacobianTags()

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

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

Definition at line 8594 of file FEProblemBase.C.

8595{
8596 try
8597 {
8598 try
8599 {
8601 {
8602 TIME_SECTION("computeJacobianTags", 5, "Computing Jacobian");
8603
8604 for (auto tag : tags)
8605 if (_current_nl_sys->hasMatrix(tag))
8606 {
8607 auto & matrix = _current_nl_sys->getMatrix(tag);
8610 else
8611 matrix.zero();
8613 // PETSc algorithms require diagonal allocations regardless of whether there is
8614 // non-zero diagonal dependence. With global AD indexing we only add non-zero
8615 // dependence, so PETSc will scream at us unless we artificially add the diagonals.
8616 for (auto index : make_range(matrix.row_start(), matrix.row_stop()))
8617 matrix.add(index, index, 0);
8618 }
8619
8620 _aux->zeroVariablesForJacobian();
8621
8622 unsigned int n_threads = numThreads();
8623
8624 // Random interface objects
8625 for (const auto & it : _random_data_objects)
8626 it.second->updateSeeds(EXEC_NONLINEAR);
8627
8631 _displaced_problem->setCurrentlyComputingJacobian(true);
8632
8634
8635 for (unsigned int tid = 0; tid < n_threads; tid++)
8636 reinitScalars(tid);
8637
8639
8640 _aux->jacobianSetup();
8641
8643 {
8645 _displaced_problem->updateMesh();
8646 // A standalone scaling Jacobian is assembled without a preceding residual evaluation, so
8647 // the displaced mortar segment mesh can be stale relative to the just-updated displaced
8648 // parent mesh. Every other Jacobian evaluation is preceded by a residual (or combined
8649 // residual/Jacobian) evaluation that already rebuilt the mortar mesh, so doing it here in
8650 // the general case would be duplicative.
8651 if (_current_nl_sys->computingScalingJacobian() && _mortar_data->hasDisplacedObjects())
8653 }
8654
8655 for (unsigned int tid = 0; tid < n_threads; tid++)
8656 {
8659 }
8660
8661#ifdef MOOSE_KOKKOS_ENABLED
8663#endif
8664
8666
8668
8670
8672
8674
8676
8677 // For explicit Euler calculations for example we often compute the Jacobian one time and
8678 // then re-use it over and over. If we're performing automatic scaling, we don't want to
8679 // use that kernel, diagonal-block only Jacobian for our actual matrix when performing
8680 // solves!
8682 _has_jacobian = true;
8683 }
8684 }
8685 catch (...)
8686 {
8687 handleException("computeJacobianTags");
8688 }
8689 }
8690 catch (const MooseException &)
8691 {
8692 // The buck stops here, we have already handled the exception by
8693 // calling the system's stopSolve() method, it is now up to PETSc to return a
8694 // "diverged" reason during the next solve.
8695 }
8696 catch (...)
8697 {
8698 mooseError("Unexpected exception type");
8699 }
8700
8701 resetState();
8702}
virtual void computeUserObjects(const ExecFlagType &type, const Moose::AuxGroup &group)
Call compute methods on UserObjects.
virtual void resetState()
Reset state of this object in preparation for the next evaluation.
virtual void reinitScalars(const THREAD_ID tid, bool reinit_for_derivative_reordering=false) override
fills the VariableValue arrays for scalar variables from the solution vector
std::map< std::string, std::unique_ptr< RandomData > > _random_data_objects
A map of objects that consume random numbers.
void executeControls(const ExecFlagType &exec_type)
Performs setup and execute calls for Control objects.
const bool _restore_original_nonzero_pattern
Whether we should restore the original nonzero pattern for every Jacobian evaluation.
bool _const_jacobian
true if the Jacobian is constant
MooseObjectWarehouse< Moose::FunctionBase > _kokkos_functions
virtual void updateMortarMesh()
bool haveADObjects() const
Method for reading wehther we have any ad objects.
Definition SubProblem.h:782
bool _has_jacobian
Indicates if the Jacobian was computed.
virtual void jacobianSetup(THREAD_ID tid=0) const override
virtual void jacobianSetup(THREAD_ID tid=0) const
void computeJacobianTags(const std::set< TagID > &tags)
Computes multiple (tag associated) Jacobian matricese.
void jacobianSetup()
Calls the jacobianSetup function for each of the output objects.
bool _safe_access_tagged_matrices
Is it safe to retrieve data from tagged matrices.
virtual libMesh::SparseMatrix< Number > & getMatrix(TagID tag)
Get a raw SparseMatrix.
bool computingScalingJacobian() const
Whether we are computing an initial Jacobian for automatic variable scaling.
virtual void restore_original_nonzero_pattern()
bool has_static_condensation() const
@ POST_AUX
Definition MooseTypes.h:765
@ PRE_AUX
Definition MooseTypes.h:764

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

◆ computeKokkosUserObjectsInternal()

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

◆ computeLinearSystemSys()

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

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

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

Definition at line 8781 of file FEProblemBase.C.

8785{
8786 TIME_SECTION("computeLinearSystemSys", 5);
8787
8789
8792
8793 // We are using the residual tag system for right hand sides so we fetch everything
8794 const auto & vector_tags = getVectorTags(Moose::VECTOR_TAG_RESIDUAL);
8795
8796 // We filter out tags which do not have associated vectors in the current
8797 // system. This is essential to be able to use system-dependent vector tags.
8800
8804 compute_gradients);
8805
8810 // We reset the tags to the default containers for further operations
8815}
std::set< TagID > _linear_vector_tags
Temporary storage for filtered vector tags for linear systems.
void setCurrentLinearSystem(unsigned int sys_num)
Set the current linear system pointer.
void computeLinearSystemTags(const NumericVector< libMesh::Number > &soln, const std::set< TagID > &vector_tags, const std::set< TagID > &matrix_tags, const bool compute_gradients=true)
Assemble the current linear system given a set of vector and matrix tags.
unsigned int linearSysNum(const LinearSystemName &linear_sys_name) const override
std::set< TagID > _linear_matrix_tags
Temporary storage for filtered matrix tags for linear systems.
TagID rightHandSideVectorTag() const
virtual TagID systemMatrixTag() const override
Return the Matrix Tag ID for System.
NumericVector< Number > & getRightHandSideVector()
Fetching the right hand side vector from the libmesh system.
SparseMatrix< Number > & getSystemMatrix()
Fetching the system matrix from the libmesh system.
std::vector< VectorTag > getVectorTags(const std::set< TagID > &tag_ids) const
Definition SubProblem.C:164
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:281
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:292
virtual void associateVectorToTag(NumericVector< Number > &vec, TagID tag)
Associate a vector for a given tag.
Definition SystemBase.C:981
virtual void disassociateVectorFromTag(NumericVector< Number > &vec, TagID tag)
Disassociate a given vector from a given tag.
Definition SystemBase.C:993
const std::string & name() const
@ VECTOR_TAG_RESIDUAL

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

◆ computeLinearSystemTags()

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

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

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

Definition at line 8818 of file FEProblemBase.C.

8822{
8823 TIME_SECTION("computeLinearSystemTags", 5, "Computing Linear System");
8824
8826
8827 for (auto tag : matrix_tags)
8828 {
8829 auto & matrix = _current_linear_sys->getMatrix(tag);
8830 matrix.zero();
8831 }
8832
8833 unsigned int n_threads = numThreads();
8834
8836
8837 // Random interface objects
8838 for (const auto & it : _random_data_objects)
8839 it.second->updateSeeds(EXEC_NONLINEAR);
8840
8842
8844
8845 _aux->jacobianSetup();
8846
8847 for (THREAD_ID tid = 0; tid < n_threads; tid++)
8848 {
8850 }
8851
8852#ifdef MOOSE_KOKKOS_ENABLED
8854#endif
8855
8856 try
8857 {
8859 }
8860 catch (MooseException & e)
8861 {
8862 _console << "\nA MooseException was raised during Auxiliary variable computation.\n"
8863 << "The next solve will fail, the timestep will be reduced, and we will try again.\n"
8864 << std::endl;
8865
8866 // We know the next solve is going to fail, so there's no point in
8867 // computing anything else after this. Plus, using incompletely
8868 // computed AuxVariables in subsequent calculations could lead to
8869 // other errors or unhandled exceptions being thrown.
8870 return;
8871 }
8872
8875
8877
8878 _current_linear_sys->computeLinearSystemTags(vector_tags, matrix_tags, compute_gradients);
8879
8880 // Reset execution flag as after this point we are no longer on LINEAR
8882
8883 // These are the relevant parts of resetState()
8886}
const ExecFlagType EXEC_NONE
Definition Moose.C:30
void computeLinearSystemTags(const std::set< TagID > &vector_tags, const std::set< TagID > &matrix_tags, const bool compute_gradients=true)
Compute the right hand side and the system matrix of the system for given tags.
bool _safe_access_tagged_vectors
Is it safe to retrieve data from tagged vectors.
virtual void zero()=0

Referenced by FEProblemBase::computeLinearSystemSys().

◆ computeMarkers()

void FEProblemBase::computeMarkers ( )
virtualinherited

Reimplemented in DumpObjectsProblem.

Definition at line 5391 of file FEProblemBase.C.

5392{
5394 {
5395 TIME_SECTION("computeMarkers", 1, "Computing Markers");
5396
5397 std::vector<std::string> fields;
5398
5399 // Marker Fields
5400 const auto & markers = _markers.getActiveObjects();
5401 for (const auto & marker : markers)
5402 fields.push_back(marker->name());
5403
5404 _aux->zeroVariables(fields);
5405
5407
5408 for (THREAD_ID tid = 0; tid < numThreads(); ++tid)
5409 {
5410 const auto & markers = _markers.getActiveObjects(tid);
5411 for (const auto & marker : markers)
5412 marker->markerSetup();
5413 }
5414
5415 ComputeMarkerThread cmt(*this);
5417
5418 _aux->solution().close();
5419 _aux->update();
5420 }
5421}
void updateErrorVectors()
Update the ErrorVectors that have been requested through calls to getErrorVector().
Definition Adaptivity.C:407
MooseObjectWarehouse< Marker > _markers

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

◆ computeMultiAppsDT()

Real FEProblemBase::computeMultiAppsDT ( ExecFlagType  type)
inherited

Find the smallest timestep over all MultiApps.

Definition at line 6764 of file FEProblemBase.C.

6765{
6766 const auto & multi_apps = _transient_multi_apps[type].getActiveObjects();
6767
6768 Real smallest_dt = std::numeric_limits<Real>::max();
6769
6770 for (const auto & multi_app : multi_apps)
6771 smallest_dt = std::min(smallest_dt, multi_app->computeDT());
6772
6773 return smallest_dt;
6774}
auto min(const L &left, const R &right)

Referenced by TransientBase::constrainDTFromMultiApp().

◆ computeNearNullSpace()

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

Definition at line 8889 of file FEProblemBase.C.

8891{
8892 mooseAssert(_current_nl_sys && (sys.number() == _current_nl_sys->number()),
8893 "I expect these system numbers to be the same");
8894
8895 sp.clear();
8896 for (unsigned int i = 0; i < subspaceDim("NearNullSpace"); ++i)
8897 {
8898 std::stringstream postfix;
8899 postfix << "_" << i;
8900 std::string modename = "NearNullSpace" + postfix.str();
8901 sp.push_back(&_current_nl_sys->getVector(modename));
8902 }
8903}
unsigned int subspaceDim(const std::string &prefix) const
Dimension of the subspace spanned by vectors with a given prefix.

Referenced by Moose::compute_nearnullspace().

◆ computeNullSpace()

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

Definition at line 8906 of file FEProblemBase.C.

8908{
8909 mooseAssert(_current_nl_sys && (sys.number() == _current_nl_sys->number()),
8910 "I expect these system numbers to be the same");
8911 sp.clear();
8912 for (unsigned int i = 0; i < subspaceDim("NullSpace"); ++i)
8913 {
8914 std::stringstream postfix;
8915 postfix << "_" << i;
8916 sp.push_back(&_current_nl_sys->getVector("NullSpace" + postfix.str()));
8917 }
8918 appendConstantModes(_constant_null_space_vars, "ConstantNullSpace_", sp);
8919}
void appendConstantModes(const std::vector< VariableName > &vars, const std::string &prefix, std::vector< NumericVector< libMesh::Number > * > &sp)
Append one mode per variable of vars in the current nonlinear system to sp.
const std::vector< VariableName > _constant_null_space_vars
Variables whose constant fields span part of the Jacobian nullspace.

Referenced by Moose::compute_nullspace().

◆ computePostCheck()

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

Definition at line 8963 of file FEProblemBase.C.

8969{
8970 mooseAssert(_current_nl_sys && (sys.number() == _current_nl_sys->number()),
8971 "I expect these system numbers to be the same");
8972
8973 // This function replaces the old PetscSupport::dampedCheck() function.
8974 //
8975 // 1.) Recreate code in PetscSupport::dampedCheck() for constructing
8976 // ghosted "soln" and "update" vectors.
8977 // 2.) Call FEProblemBase::computeDamping() with these ghost vectors.
8978 // 3.) Recreate the code in PetscSupport::dampedCheck() to actually update
8979 // the solution vector based on the damping, and set the "changed" flags
8980 // appropriately.
8981
8982 TIME_SECTION("computePostCheck", 2, "Computing Post Check");
8983
8985
8986 // MOOSE's FEProblemBase doesn't update the solution during the
8987 // postcheck, but FEProblemBase-derived classes might.
8989 {
8990 // We need ghosted versions of new_soln and search_direction (the
8991 // ones we get from libmesh/PETSc are PARALLEL vectors. To make
8992 // our lives simpler, we use the same ghosting pattern as the
8993 // system's current_local_solution to create new ghosted vectors.
8994
8995 // Construct zeroed-out clones with the same ghosted dofs as the
8996 // System's current_local_solution.
8997 std::unique_ptr<NumericVector<Number>> ghosted_solution =
8998 sys.current_local_solution->zero_clone(),
8999 ghosted_search_direction =
9000 sys.current_local_solution->zero_clone();
9001
9002 // Copy values from input vectors into clones with ghosted values.
9003 *ghosted_solution = new_soln;
9004 *ghosted_search_direction = search_direction;
9005
9006 if (_has_dampers)
9007 {
9008 // Compute the damping coefficient using the ghosted vectors
9009 Real damping = computeDamping(*ghosted_solution, *ghosted_search_direction);
9010
9011 // If some non-trivial damping was computed, update the new_soln
9012 // vector accordingly.
9013 if (damping < 1.0)
9014 {
9015 new_soln = old_soln;
9016 new_soln.add(-damping, search_direction);
9017 changed_new_soln = true;
9018 }
9019 }
9020
9022 {
9023 // Update the ghosted copy of the new solution, if necessary.
9024 if (changed_new_soln)
9025 *ghosted_solution = new_soln;
9026
9027 bool updated_solution = updateSolution(new_soln, *ghosted_solution);
9028 if (updated_solution)
9029 changed_new_soln = true;
9030 }
9031 }
9032
9034 {
9036 _aux->copyCurrentIntoPreviousNL();
9037 }
9038
9039 // MOOSE doesn't change the search_direction
9040 changed_search_direction = false;
9041
9043}
const ExecFlagType EXEC_POSTCHECK
Definition Moose.C:36
virtual bool shouldUpdateSolution()
Check to see whether the problem should update the solution.
virtual Real computeDamping(const NumericVector< libMesh::Number > &soln, const NumericVector< libMesh::Number > &update)
virtual bool updateSolution(NumericVector< libMesh::Number > &vec_solution, NumericVector< libMesh::Number > &ghosted_solution)
Update the solution.
virtual void setPreviousNewtonSolution(const NumericVector< Number > &soln)
virtual bool vectorTagExists(const TagID tag_id) const
Check to see if a particular Tag exists.
Definition SubProblem.h:204
virtual void add(const numeric_index_type i, const T value)=0
std::unique_ptr< NumericVector< Number > > current_local_solution
const TagName PREVIOUS_NL_SOLUTION_TAG
Definition MooseTypes.C:28

Referenced by Moose::compute_postcheck().

◆ computeResidual() [1/2]

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

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

◆ computeResidual() [2/2]

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

This function is called by Libmesh to form a residual.

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

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

◆ computeResidualAndJacobian()

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

Form a residual and Jacobian with default tags.

Definition at line 8145 of file FEProblemBase.C.

8148{
8149 try
8150 {
8151 try
8152 {
8153 // vector tags
8155 const auto & residual_vector_tags = getVectorTags(Moose::VECTOR_TAG_RESIDUAL);
8156
8157 mooseAssert(_fe_vector_tags.empty(),
8158 "This should be empty indicating a clean starting state");
8159 // We filter out tags which do not have associated vectors in the current nonlinear
8160 // system. This is essential to be able to use system-dependent residual tags.
8162
8164
8165 // matrix tags
8166 {
8167 _fe_matrix_tags.clear();
8168
8169 auto & tags = getMatrixTags();
8170 for (auto & tag : tags)
8171 _fe_matrix_tags.insert(tag.second);
8172 }
8173
8175
8178
8179 for (const auto tag : _fe_matrix_tags)
8180 if (_current_nl_sys->hasMatrix(tag))
8181 {
8182 auto & matrix = _current_nl_sys->getMatrix(tag);
8183 matrix.zero();
8185 // PETSc algorithms require diagonal allocations regardless of whether there is non-zero
8186 // diagonal dependence. With global AD indexing we only add non-zero
8187 // dependence, so PETSc will scream at us unless we artificially add the diagonals.
8188 for (auto index : make_range(matrix.row_start(), matrix.row_stop()))
8189 matrix.add(index, index, 0);
8190 }
8191
8192 _aux->zeroVariablesForResidual();
8193
8194 unsigned int n_threads = numThreads();
8195
8197
8198 // Random interface objects
8199 for (const auto & it : _random_data_objects)
8200 it.second->updateSeeds(EXEC_LINEAR);
8201
8206 {
8207 _displaced_problem->setCurrentlyComputingResidual(true);
8208 _displaced_problem->setCurrentlyComputingJacobian(true);
8209 _displaced_problem->setCurrentlyComputingResidualAndJacobian(true);
8210 }
8211
8213
8214 for (unsigned int tid = 0; tid < n_threads; tid++)
8215 reinitScalars(tid);
8216
8218
8219 _aux->residualSetup();
8220
8222 {
8224 _displaced_problem->updateMesh();
8225 if (_mortar_data->hasDisplacedObjects())
8227 }
8228
8229 for (THREAD_ID tid = 0; tid < n_threads; tid++)
8230 {
8233 }
8234
8235#ifdef MOOSE_KOKKOS_ENABLED
8237#endif
8238
8240
8242
8244
8246
8249
8251
8254 }
8255 catch (...)
8256 {
8257 handleException("computeResidualAndJacobian");
8258 }
8259 }
8260 catch (const MooseException &)
8261 {
8262 // The buck stops here, we have already handled the exception by
8263 // calling the system's stopSolve() method, it is now up to PETSc to return a
8264 // "diverged" reason during the next solve.
8265 }
8266 catch (...)
8267 {
8268 mooseError("Unexpected exception type");
8269 }
8270
8271 resetState();
8272 _fe_vector_tags.clear();
8273 _fe_matrix_tags.clear();
8274}
void setCurrentResidualVectorTags(const std::set< TagID > &vector_tags)
Set the current residual vector tag data structure based on the passed in tag IDs.
void setCurrentlyComputingResidual(bool currently_computing_residual) final
Set whether or not the problem is in the process of computing the residual.
virtual void residualSetup(THREAD_ID tid=0) const
void computeResidualAndJacobianTags(const std::set< TagID > &vector_tags, const std::set< TagID > &matrix_tags)
Form possibly multiple tag-associated vectors and matrices.
TagID residualVectorTag() const override
void residualSetup()
Calls the residualSetup function for each of the output objects.
void setCurrentlyComputingJacobian(const bool currently_computing_jacobian)
Set whether or not the problem is in the process of computing the Jacobian.
Definition SubProblem.h:700
void setCurrentlyComputingResidualAndJacobian(bool currently_computing_residual_and_jacobian)
Set whether or not the problem is in the process of computing the Jacobian.

Referenced by ComputeResidualAndJacobian::residual_and_jacobian().

◆ computeResidualInternal()

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

Form a residual vector for a set of tags.

It should not be called directly by users.

Definition at line 8306 of file FEProblemBase.C.

8309{
8310 parallel_object_only();
8311
8312 TIME_SECTION("computeResidualInternal", 1);
8313
8314 try
8315 {
8317
8319
8320 computeResidualTags(tags);
8321
8323 }
8324 catch (MooseException & e)
8325 {
8326 // If a MooseException propagates all the way to here, it means
8327 // that it was thrown from a MOOSE system where we do not
8328 // (currently) properly support the throwing of exceptions, and
8329 // therefore we have no choice but to error out. It may be
8330 // *possible* to handle exceptions from other systems, but in the
8331 // meantime, we don't want to silently swallow any unhandled
8332 // exceptions here.
8333 mooseError("An unhandled MooseException was raised during residual computation. Please "
8334 "contact the MOOSE team for assistance.");
8335 }
8336}
virtual void computeResidualTags(const std::set< TagID > &tags)
Form multiple residual vectors and each is associated with one tag.

◆ computeResidualL2Norm() [1/3]

Real FEProblemBase::computeResidualL2Norm ( )
virtualinherited

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

Returns
The L2 norm of the residual

Reimplemented in EigenProblem.

Definition at line 8078 of file FEProblemBase.C.

8079{
8080 TIME_SECTION("computeResidualL2Norm", 2, "Computing L2 Norm of Residual");
8081
8082 // We use sum the squared norms of the individual systems and then take the square root of it
8083 Real l2_norm = 0.0;
8084 for (auto sys : _nl)
8085 {
8086 const auto norm = computeResidualL2Norm(*sys);
8087 l2_norm += norm * norm;
8088 }
8089
8090 for (auto sys : _linear_systems)
8091 {
8092 const auto norm = computeResidualL2Norm(*sys);
8093 l2_norm += norm * norm;
8094 }
8095
8096 return std::sqrt(l2_norm);
8097}
std::vector< std::shared_ptr< LinearSystem > > _linear_systems
The vector of linear systems.
virtual Real computeResidualL2Norm()
Computes the residual using whatever is sitting in the current solution vector then returns the L2 no...
LIBMESH_DEVICE_INLINE auto norm(const T &a)

Referenced by FEProblemBase::computeResidualL2Norm().

◆ computeResidualL2Norm() [2/3]

Real FEProblemBase::computeResidualL2Norm ( LinearSystem &  sys)
inherited

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

Definition at line 8060 of file FEProblemBase.C.

8061{
8062 _current_linear_sys = &sys;
8063
8064 // We assemble the current system to check the current residual
8068 /*compute fresh gradients*/ true);
8069
8070 // Unfortunate, but we have to allocate a new vector for the residual
8071 auto residual = sys.linearImplicitSystem().rhs->clone();
8072 residual->scale(-1.0);
8073 residual->add_vector(*sys.currentSolution(), *sys.linearImplicitSystem().matrix);
8074 return residual->l2_norm();
8075}
virtual void computeLinearSystemSys(libMesh::LinearImplicitSystem &sys, libMesh::SparseMatrix< libMesh::Number > &system_matrix, NumericVector< libMesh::Number > &rhs, const bool compute_gradients=true)
Assemble both the right hand side and the system matrix of a given linear system.
libMesh::LinearImplicitSystem & linearImplicitSystem()
Return a reference to the stored linear implicit system.
NumericVector< Number > * rhs
SparseMatrix< Number > * matrix
virtual std::unique_ptr< NumericVector< T > > clone() const=0

◆ computeResidualL2Norm() [3/3]

Real FEProblemBase::computeResidualL2Norm ( NonlinearSystemBase &  sys)
inherited

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

Definition at line 8052 of file FEProblemBase.C.

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

Referenced by DefaultMultiAppFixedPointConvergence::checkConvergence(), Residual::getValue(), DefaultMultiAppFixedPointConvergence::preIteration(), and DefaultMultiAppFixedPointConvergence::preLoop().

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

8103{
8104 parallel_object_only();
8105
8106 TIME_SECTION("computeResidualSys", 5);
8107 // Reset before residual setup, calculation & execution
8109
8110 computeResidual(soln, residual, sys.number());
8111}

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

◆ computeResidualTag()

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

Form a residual vector for a given tag.

Definition at line 8277 of file FEProblemBase.C.

8280{
8281 try
8282 {
8284
8285 _current_nl_sys->associateVectorToTag(residual, tag);
8286
8287 computeResidualTags({tag});
8288
8290 }
8291 catch (MooseException & e)
8292 {
8293 // If a MooseException propagates all the way to here, it means
8294 // that it was thrown from a MOOSE system where we do not
8295 // (currently) properly support the throwing of exceptions, and
8296 // therefore we have no choice but to error out. It may be
8297 // *possible* to handle exceptions from other systems, but in the
8298 // meantime, we don't want to silently swallow any unhandled
8299 // exceptions here.
8300 mooseError("An unhandled MooseException was raised during residual computation. Please "
8301 "contact the MOOSE team for assistance.");
8302 }
8303}

◆ computeResidualTags()

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

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

Definition at line 8448 of file FEProblemBase.C.

8449{
8450 parallel_object_only();
8451
8452 try
8453 {
8454 try
8455 {
8456 TIME_SECTION("computeResidualTags", 5, "Computing Residual");
8457
8458 ADReal::do_derivatives = false;
8459
8461
8462 _aux->zeroVariablesForResidual();
8463
8464 unsigned int n_threads = numThreads();
8465
8467
8468 // Random interface objects
8469 for (const auto & it : _random_data_objects)
8470 it.second->updateSeeds(EXEC_LINEAR);
8471
8472 // This is itself a residual evaluation (distinct from the combined residual/Jacobian path
8473 // above, which sets this before its own updateMortarMesh() call): mark it so that
8474 // updateMortarMesh() below knows not to reinit the equation systems mid-evaluation. Reset by
8475 // resetState() at the bottom of this function.
8478 _displaced_problem->setCurrentlyComputingResidual(true);
8479
8481
8482 for (unsigned int tid = 0; tid < n_threads; tid++)
8483 reinitScalars(tid);
8484
8486
8487 _aux->residualSetup();
8488
8490 {
8492 _displaced_problem->updateMesh();
8493 if (_mortar_data->hasDisplacedObjects())
8495 }
8496
8497 for (THREAD_ID tid = 0; tid < n_threads; tid++)
8498 {
8501 }
8502
8503#ifdef MOOSE_KOKKOS_ENABLED
8505#endif
8506
8508
8510
8512
8514
8517 }
8518 catch (...)
8519 {
8520 handleException("computeResidualTags");
8521 }
8522 }
8523 catch (const MooseException &)
8524 {
8525 // The buck stops here, we have already handled the exception by
8526 // calling the system's stopSolve() method, it is now up to PETSc to return a
8527 // "diverged" reason during the next solve.
8528 }
8529 catch (...)
8530 {
8531 mooseError("Unexpected exception type");
8532 }
8533
8534 resetState();
8535}
void computeResidualTags(const std::set< TagID > &tags)
Form multiple tag-associated residual vectors for all the given tags.

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

◆ computeResidualType()

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

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

Definition at line 8339 of file FEProblemBase.C.

8342{
8343 TIME_SECTION("computeResidualType", 5);
8344
8345 try
8346 {
8348
8350
8352
8354 }
8355 catch (MooseException & e)
8356 {
8357 // If a MooseException propagates all the way to here, it means
8358 // that it was thrown from a MOOSE system where we do not
8359 // (currently) properly support the throwing of exceptions, and
8360 // therefore we have no choice but to error out. It may be
8361 // *possible* to handle exceptions from other systems, but in the
8362 // meantime, we don't want to silently swallow any unhandled
8363 // exceptions here.
8364 mooseError("An unhandled MooseException was raised during residual computation. Please "
8365 "contact the MOOSE team for assistance.");
8366 }
8367}

◆ computeSystems()

void FEProblemBase::computeSystems ( const ExecFlagType &  type)
protectedinherited

Do generic system computations.

Definition at line 10763 of file FEProblemBase.C.

10764{
10765 // When performing an adjoint solve in the optimization module, the current solver system is the
10766 // adjoint. However, the adjoint solve requires having accurate time derivative calculations for
10767 // the forward system. The cleanest way to handle such uses is just to compute the time
10768 // derivatives for all solver systems instead of trying to guess which ones we need and don't need
10769 for (auto & solver_sys : _solver_systems)
10770 solver_sys->compute(type);
10771
10772 _aux->compute(type);
10773}

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

◆ computeTransposeNullSpace()

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

Definition at line 8922 of file FEProblemBase.C.

8924{
8925 mooseAssert(_current_nl_sys && (sys.number() == _current_nl_sys->number()),
8926 "I expect these system numbers to be the same");
8927 sp.clear();
8928 for (unsigned int i = 0; i < subspaceDim("TransposeNullSpace"); ++i)
8929 {
8930 std::stringstream postfix;
8931 postfix << "_" << i;
8932 sp.push_back(&_current_nl_sys->getVector("TransposeNullSpace" + postfix.str()));
8933 }
8934 appendConstantModes(_constant_transpose_null_space_vars, "ConstantTransposeNullSpace_", sp);
8935}
const std::vector< VariableName > _constant_transpose_null_space_vars
Variables whose constant fields span part of the Jacobian transpose nullspace.

Referenced by Moose::compute_transpose_nullspace().

◆ computeUserObjectByName()

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

Compute an user object with the given name.

Definition at line 5695 of file FEProblemBase.C.

5698{
5699 const auto old_exec_flag = _current_execute_on_flag;
5701
5702 std::set<int> execution_groups;
5703
5704#ifdef MOOSE_KOKKOS_ENABLED
5705 TheWarehouse::Query kokkos_query =
5706 getUOQuery("KokkosUserObject", type, group).condition<AttribName>(name);
5707 getUOExecutionGroups(kokkos_query, execution_groups);
5708#endif
5709
5711 getUOExecutionGroups(query, execution_groups);
5712
5713 for (const auto execution_group : execution_groups)
5714 {
5715#ifdef MOOSE_KOKKOS_ENABLED
5717 type, kokkos_query.clone().condition<AttribExecutionOrderGroup>(execution_group));
5718#endif
5719
5721 query.clone().condition<AttribExecutionOrderGroup>(execution_group));
5722 }
5723
5724 _current_execute_on_flag = old_exec_flag;
5725}
TheWarehouse::Query getUOQuery(const std::string &system, const ExecFlagType &type, const Moose::AuxGroup &group) const
void computeUserObjectsInternal(const ExecFlagType &type, TheWarehouse::Query &query)
void computeKokkosUserObjectsInternal(const ExecFlagType &type, TheWarehouse::Query &query)
void getUOExecutionGroups(TheWarehouse::Query &query, std::set< int > &execution_groups) const
QueryCache is a convenient way to construct and pass around (possible partially constructed) warehous...
QueryCache clone() const
clone creates and returns an independent copy of the query in its current state.
query_obj query

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

◆ computeUserObjects()

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

Call compute methods on UserObjects.

Definition at line 5728 of file FEProblemBase.C.

5729{
5730 std::set<int> execution_groups;
5731
5732#ifdef MOOSE_KOKKOS_ENABLED
5733 TheWarehouse::Query kokkos_query = getUOQuery("KokkosUserObject", type, group);
5734 getUOExecutionGroups(kokkos_query, execution_groups);
5735#endif
5736
5737 TheWarehouse::Query query = getUOQuery("UserObject", type, group);
5738 getUOExecutionGroups(query, execution_groups);
5739
5740 for (const auto execution_group : execution_groups)
5741 {
5742#ifdef MOOSE_KOKKOS_ENABLED
5744 type, kokkos_query.clone().condition<AttribExecutionOrderGroup>(execution_group));
5745#endif
5746
5748 query.clone().condition<AttribExecutionOrderGroup>(execution_group));
5749 }
5750
5751 // Exceptions raised on solver execution flags are communicated and handled by the PARALLEL_CATCH
5752 // surrounding the assembly loops of the residual, Jacobian and linear systems. On all other
5753 // execution flags there is no solve left to fail, so the exception is communicated here in order
5754 // to report it at the point of the simulation where it was raised
5757}
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,...

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

◆ computeUserObjectsInternal()

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

Definition at line 5760 of file FEProblemBase.C.

5761{
5762 TIME_SECTION("computeUserObjects", 1, "Computing User Objects");
5763
5764 std::vector<GeneralUserObject *> genobjs;
5765 query.clone().condition<AttribInterfaces>(Interfaces::GeneralUserObject).queryInto(genobjs);
5766
5767 std::vector<UserObject *> userobjs;
5768 query.clone()
5772 .queryInto(userobjs);
5773
5774 std::vector<UserObject *> tgobjs;
5775 query.clone()
5777 .queryInto(tgobjs);
5778
5779 std::vector<UserObject *> nodal;
5780 query.clone().condition<AttribInterfaces>(Interfaces::NodalUserObject).queryInto(nodal);
5781
5782 std::vector<MortarUserObject *> mortar;
5783 query.clone().condition<AttribInterfaces>(Interfaces::MortarUserObject).queryInto(mortar);
5784
5785 if (userobjs.empty() && genobjs.empty() && tgobjs.empty() && nodal.empty() && mortar.empty())
5786 return;
5787
5788 // Start the timer here since we have at least one active user object
5789 std::string compute_uo_tag = "computeUserObjects(" + Moose::stringify(type) + ")";
5790
5791 // Each phase of process-local work below is followed by a check for an exception on any process
5792 // before the phase's user objects are finalized, because finalization communicates. An exception
5793 // stops the execution of user objects on all processes, so that none is finalized with partial
5794 // data
5796 [&]()
5797 {
5798 // Perform Residual/Jacobian setups
5799 if (type == EXEC_LINEAR)
5800 {
5801 for (auto obj : userobjs)
5802 obj->residualSetup();
5803 for (auto obj : nodal)
5804 obj->residualSetup();
5805 for (auto obj : mortar)
5806 obj->residualSetup();
5807 for (auto obj : tgobjs)
5808 obj->residualSetup();
5809 for (auto obj : genobjs)
5810 obj->residualSetup();
5811 }
5812 else if (type == EXEC_NONLINEAR)
5813 {
5814 for (auto obj : userobjs)
5815 obj->jacobianSetup();
5816 for (auto obj : nodal)
5817 obj->jacobianSetup();
5818 for (auto obj : mortar)
5819 obj->jacobianSetup();
5820 for (auto obj : tgobjs)
5821 obj->jacobianSetup();
5822 for (auto obj : genobjs)
5823 obj->jacobianSetup();
5824 }
5825
5826 for (auto obj : userobjs)
5827 obj->initialize();
5828
5829 // Execute Side/InternalSide/Interface/Elemental/DomainUserObjects
5830 if (!userobjs.empty())
5831 {
5832 // non-nodal user objects have to be run separately before the nodal user objects run
5833 // because some nodal user objects (NodalNormal related) depend on elemental user objects
5834 // :-(
5835 ComputeUserObjectsThread cppt(*this, query);
5837 }
5838 });
5840
5841 if (!userobjs.empty())
5842 {
5843 // There is one instance in rattlesnake where an elemental user object's finalize depends
5844 // on a side user object having been finalized first :-(
5850 }
5851
5852 // if any elemental user object may have written to variables we need to close the aux solution
5853 for (const auto & uo : userobjs)
5854 if (auto euo = dynamic_cast<const ElementUserObject *>(uo);
5855 euo && euo->hasWritableCoupledVariables())
5856 {
5857 _aux->solution().close();
5858 _aux->system().update();
5859 break;
5860 }
5861
5862 // Execute NodalUserObjects
5863 // BISON has an axial reloc elemental user object that has a finalize func that depends on a
5864 // nodal user object's prev value. So we can't initialize this until after elemental objects
5865 // have been finalized :-(
5866 if (!nodal.empty())
5867 {
5869 [&]()
5870 {
5871 for (auto obj : nodal)
5872 obj->initialize();
5873 ComputeNodalUserObjectsThread cnppt(*this, query);
5875 });
5878 }
5879
5880 // if any nodal user object may have written to variables we need to close the aux solution
5881 for (const auto & uo : nodal)
5882 if (auto nuo = dynamic_cast<const NodalUserObject *>(uo);
5883 nuo && nuo->hasWritableCoupledVariables())
5884 {
5885 _aux->solution().close();
5886 _aux->system().update();
5887 break;
5888 }
5889
5890 // Execute MortarUserObjects
5891 if (!mortar.empty())
5892 {
5894 [this, type, &mortar]()
5895 {
5896 for (auto obj : mortar)
5897 obj->initialize();
5898
5899 auto create_and_run_mortar_functors = [this, type, &mortar](const bool displaced)
5900 {
5901 // go over mortar interfaces and construct functors
5902 const auto & mortar_interfaces = getMortarInterfaces(displaced);
5903 for (const auto & [primary_secondary_boundary_pair, interface_config] :
5904 mortar_interfaces)
5905 {
5906 auto mortar_uos_to_execute =
5907 getMortarUserObjects(primary_secondary_boundary_pair.first,
5908 primary_secondary_boundary_pair.second,
5909 displaced,
5910 mortar);
5911
5912 auto * const subproblem = displaced ? cast_ptr<SubProblem *>(_displaced_problem.get())
5913 : cast_ptr<SubProblem *>(this);
5914 MortarUserObjectThread muot(mortar_uos_to_execute,
5915 *interface_config.amg,
5916 *subproblem,
5917 *this,
5918 displaced,
5919 subproblem->assembly(0, 0));
5920
5921 muot();
5922 }
5923 };
5924
5925 create_and_run_mortar_functors(false);
5927 create_and_run_mortar_functors(true);
5928 });
5930
5932 [&mortar]()
5933 {
5934 for (auto obj : mortar)
5935 obj->finalize();
5936 });
5938 }
5939
5940 // Execute threaded general user objects
5941 if (!tgobjs.empty())
5942 {
5944 [&tgobjs]()
5945 {
5946 for (auto obj : tgobjs)
5947 obj->initialize();
5948 });
5950 }
5951 std::vector<GeneralUserObject *> tguos_zero;
5952 query.clone()
5953 .condition<AttribThread>(0)
5954 .condition<AttribInterfaces>(Interfaces::ThreadedGeneralUserObject)
5955 .queryInto(tguos_zero);
5956 for (auto obj : tguos_zero)
5957 {
5958 std::vector<GeneralUserObject *> tguos;
5959 auto q = query.clone()
5960 .condition<AttribName>(obj->name())
5961 .condition<AttribInterfaces>(Interfaces::ThreadedGeneralUserObject);
5962 q.queryInto(tguos);
5963
5965 [this, &tguos]()
5966 {
5968
5969 // Force one thread per ThreadedGeneralUserObject via grainsize
5971 tguos.end(),
5972 /*grainsize=*/1),
5973 ctguot,
5974 numThreads());
5975 });
5977 joinAndFinalize(q);
5978 }
5979
5980 // Execute general user objects
5982}
@ InternalSideUserObject
@ ThreadedGeneralUserObject
@ InterfaceUserObject
StoredRange< std::vector< GeneralUserObject * >::iterator, GeneralUserObject * > GeneralUserObjectRange
Thread to compute threaded general user objects.
Class for threaded computation of UserObjects.
bool hasWritableCoupledVariables() const
Checks whether the object has any writable coupled variables.
Definition Coupleable.h:142
void jacobianSetup() override
void joinAndFinalize(TheWarehouse::Query query, bool isgen=false)
void residualSetup() override
void translateUserObjectExceptions(const std::function< void()> &work)
Execute work, user object computations local to this process, and register any exception it raises wi...
const std::unordered_map< std::pair< BoundaryID, BoundaryID >, MortarInterfaceConfig > & getMortarInterfaces(bool on_displaced) const
std::vector< MortarUserObject * > getMortarUserObjects(BoundaryID primary_boundary_id, BoundaryID secondary_boundary_id, bool displaced, const std::vector< MortarUserObject * > &mortar_uo_superset)
Helper for getting mortar objects corresponding to primary boundary ID, secondary boundary ID,...
const libMesh::ConstNodeRange & getCurrentAlgebraicNodeRange()
A user object that runs over all the nodes and does an aggregation step to compute a single value.
void initialize(EquationSystems &es, const std::string &system_name)
Tnew cast_ptr(Told *oldvar)

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

◆ computingNonlinearResid() [1/3]

bool SubProblem::computingNonlinearResid ( ) const
inlineinherited

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

Definition at line 718 of file SubProblem.h.

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

◆ computingNonlinearResid() [2/3]

void FEProblemBase::computingNonlinearResid ( bool  computing_nonlinear_residual)
finalvirtualinherited

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

Reimplemented from SubProblem.

Definition at line 10394 of file FEProblemBase.C.

10395{
10396 parallel_object_only();
10397
10399 _displaced_problem->computingNonlinearResid(computing_nonlinear_residual);
10400 _computing_nonlinear_residual = computing_nonlinear_residual;
10401}

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

◆ computingNonlinearResid() [3/3]

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

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

Reimplemented from SubProblem.

Definition at line 723 of file SubProblem.h.

724 {
725 _computing_nonlinear_residual = computing_nonlinear_residual;
726 }

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

7792{
7793 return _nl[nl_sys_num]->computingPreSMOResidual();
7794}

Referenced by DisplacedProblem::computingPreSMOResidual().

◆ computingScalingJacobian() [1/2]

bool FEProblemBase::computingScalingJacobian ( ) const
inlinefinaloverridevirtualinherited

Getter for whether we're computing the scaling jacobian.

Implements SubProblem.

Definition at line 2929 of file FEProblemBase.h.

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

◆ computingScalingJacobian() [2/2]

void FEProblemBase::computingScalingJacobian ( bool  computing_scaling_jacobian)
inlineinherited

◆ computingScalingResidual() [1/2]

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

Implements SubProblem.

Definition at line 2942 of file FEProblemBase.h.

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

◆ computingScalingResidual() [2/2]

void FEProblemBase::computingScalingResidual ( bool  computing_scaling_residual)
inlineinherited

Setter for whether we're computing the scaling residual.

Definition at line 2934 of file FEProblemBase.h.

2935 {
2936 _computing_scaling_residual = computing_scaling_residual;
2937 }

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

◆ connectControllableParams()

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

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

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

Definition at line 77 of file MooseBase.C.

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

◆ console()

const ConsoleStream & Problem::console ( ) const
inlineinherited

Return console handle.

Definition at line 48 of file Problem.h.

48{ return _console; }

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

◆ constJacobian()

bool FEProblemBase::constJacobian ( ) const
inherited

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

Definition at line 10236 of file FEProblemBase.C.

10237{
10238 return _const_jacobian;
10239}

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

◆ converged()

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

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

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

Definition at line 116 of file SubProblem.h.

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

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

◆ coordTransform()

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

Definition at line 10634 of file FEProblemBase.C.

10635{
10636 return mesh().coordTransform();
10637}

◆ copySolutionsBackwards()

void FEProblemBase::copySolutionsBackwards ( )
virtualinherited

Definition at line 7797 of file FEProblemBase.C.

7798{
7799 TIME_SECTION("copySolutionsBackwards", 3, "Copying Solutions Backward");
7800
7801 for (auto & sys : _solver_systems)
7802 sys->copyStateHistoryBackwards();
7803 _aux->copyStateHistoryBackwards();
7804}

◆ coupling()

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

Definition at line 197 of file FEProblemBase.h.

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

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

◆ couplingEntries()

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

◆ couplingMatrix()

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

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

Implements SubProblem.

Definition at line 3978 of file FEProblemBase.h.

3979{
3980 return _cm[i].get();
3981}

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

◆ createMortarInterface()

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

Definition at line 9132 of file FEProblemBase.C.

9144{
9145 _has_mortar = true;
9146
9147 if (on_displaced)
9148 return _mortar_data->createMortarInterface(primary_secondary_boundary_pair,
9149 primary_secondary_subdomain_pair,
9151 on_displaced,
9152 periodic,
9153 debug,
9154 correct_edge_dropping,
9155 minimum_projection_angle,
9156 mortar_3d_subpatch_plane,
9157 triangulation,
9158 triangulate_triangles,
9159 mortar_3d_qp_mapping);
9160 else
9161 return _mortar_data->createMortarInterface(primary_secondary_boundary_pair,
9162 primary_secondary_subdomain_pair,
9163 *this,
9164 on_displaced,
9165 periodic,
9166 debug,
9167 correct_edge_dropping,
9168 minimum_projection_angle,
9169 mortar_3d_subpatch_plane,
9170 triangulation,
9171 triangulate_triangles,
9172 mortar_3d_qp_mapping);
9173}
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 7203 of file FEProblemBase.C.

7209{
7210 if (order == INVALID_ORDER)
7211 {
7212 // automatically determine the integration order
7213 order = _solver_systems[0]->getMinQuadratureOrder();
7214 for (const auto i : make_range(std::size_t(1), _solver_systems.size()))
7215 if (order < _solver_systems[i]->getMinQuadratureOrder())
7216 order = _solver_systems[i]->getMinQuadratureOrder();
7217 if (order < _aux->getMinQuadratureOrder())
7218 order = _aux->getMinQuadratureOrder();
7219 }
7220
7221 if (volume_order == INVALID_ORDER)
7222 volume_order = order;
7223
7224 if (face_order == INVALID_ORDER)
7225 face_order = order;
7226
7227 for (unsigned int tid = 0; tid < numThreads(); ++tid)
7228 for (const auto i : index_range(_solver_systems))
7229 _assembly[tid][i]->createQRules(
7230 type, order, volume_order, face_order, block, allow_negative_qweights);
7231
7233 _displaced_problem->createQRules(
7234 type, order, volume_order, face_order, block, allow_negative_qweights);
7235
7236 updateMaxQps();
7237}
virtual void createQRules(libMesh::QuadratureType type, libMesh::Order order, libMesh::Order volume_order=libMesh::INVALID_ORDER, libMesh::Order face_order=libMesh::INVALID_ORDER, SubdomainID block=Moose::ANY_BLOCK_ID, bool allow_negative_qweights=true)

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

◆ createTagMatrices()

void FEProblemBase::createTagMatrices ( CreateTaggedMatrixKey  )
inherited

Definition at line 842 of file FEProblemBase.C.

843{
844 auto & matrices = getParam<std::vector<std::vector<TagName>>>("extra_tag_matrices");
845 for (const auto sys_num : index_range(matrices))
846 for (auto & matrix : matrices[sys_num])
847 {
848 auto tag = addMatrixTag(matrix);
849 _solver_systems[sys_num]->addMatrix(tag);
850 }
851
852 for (auto & sys : _solver_systems)
853 sys->sizeVariableMatrixData();
854 _aux->sizeVariableMatrixData();
855}
for(PetscInt i=0;i< nvars;++i)
virtual TagID addMatrixTag(TagName tag_name)
Create a Tag.
Definition SubProblem.C:303

◆ createTagSolutions()

void FEProblemBase::createTagSolutions ( )
protectedinherited

Create extra tagged solution vectors.

Definition at line 858 of file FEProblemBase.C.

859{
860 for (auto & vector : getParam<std::vector<TagName>>("extra_tag_solutions"))
861 {
862 auto tag = addVectorTag(vector, Moose::VECTOR_TAG_SOLUTION);
863 for (auto & sys : _solver_systems)
864 sys->addVector(tag, false, libMesh::GHOSTED);
865 _aux->addVector(tag, false, libMesh::GHOSTED);
866 }
867
869 {
870 // We'll populate the zeroth state of the nonlinear iterations with the current solution for
871 // ease of use in doing things like copying solutions backwards. We're just storing pointers in
872 // the solution states containers so populating the zeroth state does not cost us the memory of
873 // a new vector
875 }
876
878 for (auto & sys : _solver_systems)
879 sys->associateVectorToTag(*sys->system().current_local_solution.get(), tag);
880 _aux->associateVectorToTag(*_aux->system().current_local_solution.get(), tag);
881}
bool _previous_nl_solution_required
Indicates we need to save the previous NL iteration variable values.
void needSolutionState(unsigned int oldest_needed, Moose::SolutionIterationType iteration_type)
Declare that we need up to old (1) or older (2) solution states for a given type of iteration.
virtual TagID addVectorTag(const TagName &tag_name, const Moose::VectorTagType type=Moose::VECTOR_TAG_RESIDUAL)
Create a Tag.
Definition SubProblem.C:84
@ VECTOR_TAG_SOLUTION
const TagName SOLUTION_TAG
Definition MooseTypes.C:25

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

◆ createTagVectors()

void FEProblemBase::createTagVectors ( )
protectedinherited

Create extra tagged vectors and matrices.

Definition at line 820 of file FEProblemBase.C.

821{
822 // add vectors and their tags to system
823 auto & vectors = getParam<std::vector<std::vector<TagName>>>("extra_tag_vectors");
824 for (const auto sys_num : index_range(vectors))
825 for (auto & vector : vectors[sys_num])
826 {
827 auto tag = addVectorTag(vector);
828 _solver_systems[sys_num]->addVector(tag, false, libMesh::GHOSTED);
829 }
830
831 auto & not_zeroed_vectors = getParam<std::vector<std::vector<TagName>>>("not_zeroed_tag_vectors");
832 for (const auto sys_num : index_range(not_zeroed_vectors))
833 for (auto & vector : not_zeroed_vectors[sys_num])
834 {
835 auto tag = addVectorTag(vector);
836 _solver_systems[sys_num]->addVector(tag, false, GHOSTED);
838 }
839}
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:141

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

◆ currentLinearSysNum()

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

Implements SubProblem.

Definition at line 10651 of file FEProblemBase.C.

10652{
10653 // If we don't have linear systems this should be an invalid number
10654 unsigned int current_linear_sys_num = libMesh::invalid_uint;
10655 if (_linear_systems.size())
10656 current_linear_sys_num = currentLinearSystem().number();
10657
10658 return current_linear_sys_num;
10659}
LinearSystem & currentLinearSystem()
Get a non-constant reference to the current linear system.
const unsigned int invalid_uint

Referenced by DisplacedProblem::currentLinearSysNum().

◆ currentLinearSystem() [1/2]

LinearSystem & FEProblemBase::currentLinearSystem ( )
inlineinherited

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

Definition at line 3946 of file FEProblemBase.h.

3947{
3948 mooseAssert(_current_linear_sys, "The linear system is not currently set");
3949 return *_current_linear_sys;
3950}

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

◆ currentLinearSystem() [2/2]

const LinearSystem & FEProblemBase::currentLinearSystem ( ) const
inlineinherited

Get a constant reference to the current linear system.

Definition at line 3953 of file FEProblemBase.h.

3954{
3955 mooseAssert(_current_linear_sys, "The linear system is not currently set");
3956 return *_current_linear_sys;
3957}

◆ currentlyComputingJacobian()

const bool & SubProblem::currentlyComputingJacobian ( ) const
inlineinherited

◆ currentlyComputingResidual()

const bool & SubProblem::currentlyComputingResidual ( ) const
inlineinherited

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

Definition at line 731 of file SubProblem.h.

bool _currently_computing_residual
Whether the residual is being evaluated.

Referenced by FEProblemBase::updateMortarMesh().

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

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

Referenced by SubProblem::reinitElemFaceRef().

◆ currentNlSysNum()

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

Implements SubProblem.

Definition at line 10640 of file FEProblemBase.C.

10641{
10642 // If we don't have nonlinear systems this should be an invalid number
10643 unsigned int current_nl_sys_num = libMesh::invalid_uint;
10644 if (_nl.size())
10645 current_nl_sys_num = currentNonlinearSystem().number();
10646
10647 return current_nl_sys_num;
10648}
NonlinearSystemBase & currentNonlinearSystem()

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

◆ currentNonlinearSystem() [1/2]

NonlinearSystemBase & FEProblemBase::currentNonlinearSystem ( )
inlineinherited

◆ currentNonlinearSystem() [2/2]

const NonlinearSystemBase & FEProblemBase::currentNonlinearSystem ( ) const
inlineinherited

Definition at line 3923 of file FEProblemBase.h.

3924{
3925 mooseAssert(_current_nl_sys, "The nonlinear system is not currently set");
3926 return *_current_nl_sys;
3927}

◆ currentResidualVectorTags()

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

◆ customSetup()

void FEProblemBase::customSetup ( const ExecFlagType &  exec_type)
overridevirtualinherited

Reimplemented from SubProblem.

Definition at line 5441 of file FEProblemBase.C.

5442{
5443 SubProblem::customSetup(exec_type);
5444
5445 if (_line_search)
5446 _line_search->customSetup(exec_type);
5447
5448 unsigned int n_threads = numThreads();
5449 for (THREAD_ID tid = 0; tid < n_threads; tid++)
5450 {
5451 _all_materials.customSetup(exec_type, tid);
5452 _functions.customSetup(exec_type, tid);
5453 }
5454
5455#ifdef MOOSE_KOKKOS_ENABLED
5456 _kokkos_functions.customSetup(exec_type);
5457#endif
5458
5459 _aux->customSetup(exec_type);
5460 for (auto & nl : _nl)
5461 nl->customSetup(exec_type);
5462
5464 _displaced_problem->customSetup(exec_type);
5465
5466 for (THREAD_ID tid = 0; tid < n_threads; tid++)
5467 {
5468 _internal_side_indicators.customSetup(exec_type, tid);
5469 _indicators.customSetup(exec_type, tid);
5470 _markers.customSetup(exec_type, tid);
5471 }
5472
5473 std::vector<UserObject *> userobjs;
5474 theWarehouse().query().condition<AttribSystem>("UserObject").queryIntoUnsorted(userobjs);
5475 for (auto obj : userobjs)
5476 obj->customSetup(exec_type);
5477
5478#ifdef MOOSE_KOKKOS_ENABLED
5479 {
5480 std::vector<UserObjectBase *> userobjs;
5481 theWarehouse().query().condition<AttribSystem>("KokkosUserObject").queryIntoUnsorted(userobjs);
5482 for (auto obj : userobjs)
5483 obj->customSetup(exec_type);
5484 }
5485#endif
5486
5487 _app.getOutputWarehouse().customSetup(exec_type);
5488}
void customSetup(const ExecFlagType &exec_type) override
std::shared_ptr< LineSearch > _line_search
virtual void customSetup(const ExecFlagType &exec_type, THREAD_ID tid=0) const
void customSetup(const ExecFlagType &exec_type)
Calls the setup function for each of the output objects.
virtual void customSetup(const ExecFlagType &exec_type)

Referenced by FEProblemBase::execute().

◆ declareManagedRestartableDataWithContext()

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

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

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

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

See delcareRestartableData and declareRestartableDataWithContext for more information.

Definition at line 283 of file Restartable.h.

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

◆ declareRecoverableData()

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

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

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

Note - this data will NOT be restored on Restart!

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

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

Definition at line 358 of file Restartable.h.

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

◆ declareRestartableData()

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

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

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

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

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

Definition at line 276 of file Restartable.h.

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

◆ declareRestartableDataHelper()

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

Helper function for declaring restartable data.

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

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

Definition at line 310 of file Restartable.h.

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

◆ declareRestartableDataWithContext()

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

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

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

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

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

Definition at line 301 of file Restartable.h.

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

◆ declareRestartableDataWithObjectName()

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

Declare a piece of data as "restartable".

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

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

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

Definition at line 330 of file Restartable.h.

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

◆ declareRestartableDataWithObjectNameWithContext()

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

Declare a piece of data as "restartable".

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

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

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

Definition at line 340 of file Restartable.h.

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

◆ defaultGhosting()

bool SubProblem::defaultGhosting ( )
inlineinherited

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

Definition at line 147 of file SubProblem.h.

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

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

◆ determineSolverSystem()

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

Determine what solver system the provided variable name lies in.

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

Implements SubProblem.

Definition at line 3316 of file FEProblemBase.C.

3318{
3319 auto map_it = _solver_var_to_sys_num.find(var_name);
3320 const bool var_in_sys = map_it != _solver_var_to_sys_num.end();
3321 if (var_in_sys)
3322 mooseAssert(_solver_systems[map_it->second]->hasVariable(var_name) ||
3323 _solver_systems[map_it->second]->hasScalarVariable(var_name),
3324 "If the variable is in our FEProblem solver system map, then it must be in the "
3325 "solver system we expect");
3326 else if (error_if_not_found)
3327 {
3328 if (_aux->hasVariable(var_name) || _aux->hasScalarVariable(var_name))
3329 mooseError("No solver variable named ",
3330 var_name,
3331 " found. Did you specify an auxiliary variable when you meant to specify a "
3332 "solver variable?");
3333 else
3334 mooseError("Unknown variable '",
3335 var_name,
3336 "'. It does not exist in the solver system(s) or auxiliary system");
3337 }
3338
3339 return std::make_pair(var_in_sys, var_in_sys ? map_it->second : libMesh::invalid_uint);
3340}
std::map< SolverVariableName, unsigned int > _solver_var_to_sys_num
Map connecting variable names with their respective solver systems.

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

◆ diracKernelInfo()

DiracKernelInfo & SubProblem::diracKernelInfo ( )
virtualinherited

Definition at line 740 of file SubProblem.C.

741{
742 return _dirac_kernel_info;
743}

◆ displaceMesh()

void MFEMProblem::displaceMesh ( )
inherited

Displace the mesh, if mesh displacement is enabled.

Definition at line 768 of file MFEMProblem.C.

769{
770 // Displace mesh
771 if (mesh().shouldDisplace())
772 {
773 mesh().displace(cast_ref<mfem::GridFunction const &>(getMeshDisplacementGridFunction()));
774 // TODO: update FESpaces GridFunctions etc for transient solves
775 }
776}
void displace(mfem::GridFunction const &displacement)
Displace the nodes of the mesh by the given displacement.
Definition MFEMMesh.C:136
const mfem::ParGridFunction & getMeshDisplacementGridFunction()
Returns reference to the displacement GridFunction to apply to nodes.

Referenced by MFEMProblemSolve::solve().

◆ doingPRefinement()

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

Definition at line 1345 of file SubProblem.C.

1346{
1347 return mesh().doingPRefinement();
1348}
void doingPRefinement(bool doing_p_refinement)
Indicate whether the kind of adaptivity we're doing includes p-refinement.
Definition MooseMesh.h:1507

Referenced by ElementAdaptivityLevelAux::ElementAdaptivityLevelAux(), ElementLpNormAux::ElementLpNormAux(), InternalSideIndicatorBase::InternalSideIndicatorBase(), FEProblemBase::meshChanged(), and VolumeAux::VolumeAux().

◆ dt()

virtual Real & FEProblemBase::dt ( ) const
inlinevirtualinherited

◆ dtOld()

virtual Real & FEProblemBase::dtOld ( ) const
inlinevirtualinherited

Definition at line 585 of file FEProblemBase.h.

585{ return _dt_old; }

Referenced by IterationAdaptiveDT::acceptStep().

◆ duplicateVariableCheck()

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

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

Definition at line 3179 of file FEProblemBase.C.

3183{
3184 std::set<SubdomainID> subdomainIDs;
3185 if (active_subdomains->size() == 0)
3186 {
3187 const auto subdomains = _mesh.meshSubdomains();
3188 subdomainIDs.insert(subdomains.begin(), subdomains.end());
3189 }
3190 else
3191 subdomainIDs.insert(active_subdomains->begin(), active_subdomains->end());
3192
3193 for (auto & sys : _solver_systems)
3194 {
3195 SystemBase * curr_sys_ptr = sys.get();
3196 SystemBase * other_sys_ptr = _aux.get();
3197 std::string error_prefix = "";
3198 if (is_aux)
3199 {
3200 curr_sys_ptr = _aux.get();
3201 other_sys_ptr = sys.get();
3202 error_prefix = "aux";
3203 }
3204
3205 if (other_sys_ptr->hasVariable(var_name))
3206 mooseError("Cannot have an auxiliary variable and a solver variable with the same name: ",
3207 var_name);
3208
3209 if (curr_sys_ptr->hasVariable(var_name))
3210 {
3211 const libMesh::Variable & var =
3212 curr_sys_ptr->system().variable(curr_sys_ptr->system().variable_number(var_name));
3213
3214 // variable type
3215 if (var.type() != type)
3216 mooseError("Mismatching types are specified for ",
3217 error_prefix,
3218 "variable with name '",
3219 var_name,
3220 "': '",
3221 Moose::stringify(var.type()),
3222 "' and '",
3224 "'");
3225
3226 // block-restriction
3227 if (!(active_subdomains->size() == 0 && var.active_subdomains().size() == 0))
3228 {
3229 const auto varActiveSubdomains = var.active_subdomains();
3230 std::set<SubdomainID> varSubdomainIDs;
3231 if (varActiveSubdomains.size() == 0)
3232 {
3233 const auto subdomains = _mesh.meshSubdomains();
3234 varSubdomainIDs.insert(subdomains.begin(), subdomains.end());
3235 }
3236 else
3237 varSubdomainIDs.insert(varActiveSubdomains.begin(), varActiveSubdomains.end());
3238
3239 // Is subdomainIDs a subset of varSubdomainIDs? With this we allow the case that the newly
3240 // requested block restriction is only a subset of the existing one.
3241 const auto isSubset = std::includes(varSubdomainIDs.begin(),
3242 varSubdomainIDs.end(),
3243 subdomainIDs.begin(),
3244 subdomainIDs.end());
3245
3246 if (!isSubset)
3247 {
3248 // helper function: make a string from a set of subdomain ids
3249 const auto stringifySubdomains = [this](std::set<SubdomainID> subdomainIDs)
3250 {
3251 std::stringstream s;
3252 for (auto const i : subdomainIDs)
3253 {
3254 // do we need to insert a comma?
3255 if (s.tellp() != 0)
3256 s << ", ";
3257
3258 // insert subdomain name and id -or- only the id (if no name is given)
3259 const auto subdomainName = _mesh.getSubdomainName(i);
3260 if (subdomainName.empty())
3261 s << i;
3262 else
3263 s << subdomainName << " (" << i << ")";
3264 }
3265 return s.str();
3266 };
3267
3268 const std::string msg = "Mismatching block-restrictions are specified for " +
3269 error_prefix + "variable with name '" + var_name + "': {" +
3270 stringifySubdomains(varSubdomainIDs) + "} and {" +
3271 stringifySubdomains(subdomainIDs) + "}";
3272
3273 mooseError(msg);
3274 }
3275 }
3276
3277 return true;
3278 }
3279 }
3280
3281 return false;
3282}
virtual bool hasVariable(const std::string &var_name) const
Query a system for a variable.
Definition SystemBase.C:851
const Variable & variable(unsigned int var) const
unsigned int variable_number(std::string_view var) const
const std::set< subdomain_id_type > & active_subdomains() const
const FEType & type() const

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

◆ enabled()

virtual bool MooseObject::enabled ( ) const
inlinevirtualinherited

Return the enabled status of the object.

Reimplemented in EigenKernel.

Definition at line 49 of file MooseObject.h.

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

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

◆ errorOnJacobianNonzeroReallocation()

bool FEProblemBase::errorOnJacobianNonzeroReallocation ( ) const
inlineinherited

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

Definition at line 2454 of file FEProblemBase.h.

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

Referenced by NonlinearSystemBase::computeJacobianBlocks(), NonlinearSystemBase::constraintJacobians(), LinearSystem::setMatrixOptions(), and NonlinearSystemBase::setMatrixOptions().

◆ errorPrefix()

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

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

Definition at line 264 of file MooseBase.h.

264{ return messagePrefix(); }

◆ es()

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

◆ execMultiApps()

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

Execute the MultiApps associated with the ExecFlagType.

Definition at line 6547 of file FEProblemBase.C.

6548{
6549 // Active MultiApps
6550 const std::vector<MooseSharedPointer<MultiApp>> & multi_apps =
6551 _multi_apps[exec_on].getActiveObjects();
6552
6553 // Do anything that needs to be done to Apps before transfers
6554 for (const auto & multi_app : multi_apps)
6555 multi_app->preTransfer(_dt, _time);
6556
6557 // Execute Transfers _to_ MultiApps
6559
6560 // Execute Transfers _beween_ MultiApps for the multiapps that don't execute on this flag
6561 // NOTE: there is usually no need to execute a transfer unless the multiapp providing its
6562 // data also executed. But we need to obey what the user requested for the execution schedule,
6563 // hence the two executions
6565
6566 // Order the multiapps based on their execution group
6567 // Build the ordered multiapp groups
6568 std::map<unsigned int, std::vector<MooseSharedPointer<MultiApp>>> ordered_multi_apps;
6569
6570 for (const auto & multi_app : multi_apps)
6571 ordered_multi_apps[multi_app->getParam<unsigned int>("execution_order_group")].push_back(
6572 multi_app);
6573
6574 // Check that concurrent multiapps will even be used
6575 if (multi_apps.size() && _num_concurrent_multiapps > 1)
6576 {
6577 bool has_concurrent_apps = false;
6578 for (const auto & [group, multi_app_group] : ordered_multi_apps)
6579 if (multi_app_group.size() > 1)
6580 has_concurrent_apps = true;
6581 if (!has_concurrent_apps)
6582 paramInfo(
6583 "num_concurrent_multiapps",
6584 "Due to the specified multiapp execution groups, or differences in execution schedules, "
6585 "concurrent multiapps are not actually used on " +
6586 Moose::stringify(exec_on));
6587 }
6588
6589 // Execute MultiApps
6590 if (multi_apps.size())
6591 {
6592 TIME_SECTION("execMultiApps", 1, "Executing MultiApps", false);
6593
6595 _console << COLOR_CYAN << "\nExecuting MultiApps on " << Moose::stringify(exec_on)
6596 << COLOR_DEFAULT << std::endl;
6597
6598 bool success = true;
6599
6600 for (const auto & [group_id, multi_app_group] : ordered_multi_apps)
6601 {
6602 bool group_success = true;
6603 if (_verbose_multiapps && ordered_multi_apps.size() > 1)
6604 _console << COLOR_CYAN << "\nExecuting MultiApps group " << Moose::stringify(group_id)
6605 << COLOR_DEFAULT << std::endl;
6606
6607 if (_verbose_multiapps && multi_app_group.size() > 1)
6608 {
6609 // Let the user know about concurrent multiapp use (new option: help them set it up)
6610 _console << COLOR_CYAN << "\nConcurrent MultiApps: " << std::endl;
6611 for (const auto & multi_app : multi_app_group)
6612 _console << multi_app->name() << " ";
6613 _console << COLOR_DEFAULT << std::endl;
6614 }
6615
6616 // With concurrent multiapps, the multiapps in a group have each been assigned a disjoint
6617 // subset of the ranks (see partitionConcurrentMultiApps()), so solveStep() does real work
6618 // only on those ranks and returns early on the others. Looping here therefore lets different
6619 // ranks advance different multiapps at the same time - the concurrency comes from the rank
6620 // partition. This notably avoids racing PETSc's process-global state (communicator and
6621 // options database).
6622 for (const auto & multi_app : multi_app_group)
6623 if (!multi_app->solveStep(_dt, _time, auto_advance))
6624 group_success = false;
6625
6626 // Whether to move on to the next group must be a collective decision so that every rank
6627 // leaves the group loop together and stays aligned for the following collectives.
6628 _communicator.min(group_success);
6629
6630 // No need to solve the other groups if this group failed
6631 if (!group_success)
6632 {
6633 success = false;
6634 break;
6635 }
6636
6637 // Execute Transfers _between_ MultiApps after each app executes
6638 for (const auto & multi_app : multi_app_group)
6639 execMultiAppTransfers(exec_on, MultiAppTransfer::BETWEEN_MULTIAPP, multi_app->name());
6640 }
6641
6643 _communicator.min(success);
6644
6645 if (!success)
6646 return false;
6647
6649 _console << COLOR_CYAN << "Finished Executing MultiApps on " << Moose::stringify(exec_on)
6650 << "\n"
6651 << COLOR_DEFAULT << std::endl;
6652 }
6653
6654 // Execute Transfers _from_ MultiApps (to the parent app)
6656
6657 // If we made it here then everything passed
6658 return true;
6659}
const unsigned int _num_concurrent_multiapps
Number of concurrent applications being solved at the same time.
void execMultiAppTransfers(ExecFlagType type, Transfer::DIRECTION direction, const MultiAppName &source_app="")
Execute MultiAppTransfers associated with execution flag and direction.
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 in...
Definition MooseBase.h:471
Base class for all MultiAppTransfer objects.
void min(const T &r, T &o, Request &req) const
@ FROM_MULTIAPP
Definition Transfer.h:71
@ TO_MULTIAPP
Definition Transfer.h:70
@ BETWEEN_MULTIAPP
Definition Transfer.h:72

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

◆ execMultiAppTransfers()

void FEProblemBase::execMultiAppTransfers ( ExecFlagType  type,
Transfer::DIRECTION  direction,
const MultiAppName &  source_app = "" 
)
inherited

Execute MultiAppTransfers associated with execution flag and direction.

Parameters
typeThe execution flag to execute.
directionThe direction (to or from) to transfer.
source_appThe source application to execute transfers from. Defaults to all sources

Definition at line 6300 of file FEProblemBase.C.

6303{
6304 // Keep track of whether a transfer is actually executed to avoid extraneous console output
6305 bool is_executing_a_transfer = false;
6306 bool to_multiapp = direction == MultiAppTransfer::TO_MULTIAPP;
6307 bool from_multiapp = direction == MultiAppTransfer::FROM_MULTIAPP;
6308
6309 // Build console output
6310 std::string string_direction;
6311 std::string additional_source_info = "";
6312 if (to_multiapp)
6313 string_direction = " To ";
6314 else if (from_multiapp)
6315 string_direction = " From ";
6316 else
6317 string_direction = " Between ";
6318 if (!source_app.empty())
6319 additional_source_info = " from app '" + source_app + "'";
6320
6321 // This lambda only checks the source app, since the exec_type selection is done in the warehouse
6322 auto executeThisTransfer = [this, &direction, &source_app, &type](auto & transfer)
6323 {
6324 mooseAssert(transfer->getExecuteOnEnum().contains(type), "Should execute on this schedule");
6325 // no restriction / ordering groups on transfers from parent to child at this time
6326 if (direction != MultiAppTransfer::BETWEEN_MULTIAPP)
6327 return true;
6328 // on sibling transfers, we can delay until the app has been executed if the transfer is set
6329 // that way.
6330 if (transfer->getFromName() == source_app && transfer->executeAfterSiblingSourceApp())
6331 {
6332 libmesh_ignore(this);
6333 mooseAssert(this->getMultiApp(transfer->getFromName())->getExecuteOnEnum().contains(type),
6334 "from_multiapp should also execute on this schedule");
6335 }
6336 // Execute if:
6337 // - transfer is set execute before from_multiapp, and we are calling this before source apps
6338 // - from_multiapp app is not executing on this execute_on
6339 // - from_multiapp just executed (set to source app)
6340 if ((source_app.empty() && (!transfer->executeAfterSiblingSourceApp() ||
6341 !transfer->getFromMultiApp()->getExecuteOnEnum().contains(type))) ||
6342 (transfer->getFromName() == source_app && transfer->executeAfterSiblingSourceApp()))
6343 return true;
6344 return false;
6345 };
6346
6348 : from_multiapp ? _from_multi_app_transfers[type]
6350
6351 if (wh.hasActiveObjects())
6352 {
6353 TIME_SECTION("execMultiAppTransfers", 1, "Executing Transfers");
6354
6355 const auto & transfers = wh.getActiveObjects();
6356
6358 {
6360 {"Name", "Type", "From", "To"});
6361
6362 // Build Table of Transfer Info
6363 for (const auto & transfer : transfers)
6364 {
6365 auto multiapp_transfer = dynamic_cast<MultiAppTransfer *>(transfer.get());
6366
6367 // Don't add transfer to table if it won't execute
6368 if (!executeThisTransfer(multiapp_transfer))
6369 continue;
6370
6371 is_executing_a_transfer = true;
6372 table.addRow(multiapp_transfer->name(),
6373 multiapp_transfer->type(),
6374 multiapp_transfer->getFromName(),
6375 multiapp_transfer->getToName());
6376 }
6377
6378 // Print it
6379 if (is_executing_a_transfer)
6380 {
6381 _console << COLOR_CYAN << "\nTransfers on " << Moose::stringify(type) << string_direction
6382 << "MultiApps" << additional_source_info << COLOR_DEFAULT << ":" << std::endl;
6383
6384 table.print(_console);
6385 }
6386 }
6387
6388 for (const auto & transfer : transfers)
6389 {
6390 auto multiapp_transfer = libMesh::cast_ptr<MultiAppTransfer *>(transfer.get());
6391 if (!executeThisTransfer(multiapp_transfer))
6392 continue;
6393
6394 transfer->setCurrentDirection(direction);
6395 transfer->execute();
6396 }
6397
6399
6400 if (_verbose_multiapps && is_executing_a_transfer)
6401 _console << COLOR_CYAN << "Transfers on " << Moose::stringify(type) << " Are Finished\n"
6402 << COLOR_DEFAULT << std::endl;
6403 }
6404
6405 if (_multi_apps[type].getActiveObjects().size() && !is_executing_a_transfer && _verbose_multiapps)
6406 _console << COLOR_CYAN << "\nNo Transfers on " << Moose::stringify(type) << string_direction
6407 << "MultiApps\n"
6408 << COLOR_DEFAULT << std::endl;
6409}
ExecuteMooseObjectWarehouse< Transfer > _between_multi_app_transfers
Transfers executed just before MultiApps to transfer data between them.
std::shared_ptr< MultiApp > getMultiApp(const std::string &multi_app_name) const
Get a MultiApp object by name.
ExecuteMooseObjectWarehouse< Transfer > _to_multi_app_transfers
Transfers executed just before MultiApps to transfer data to them.
ExecuteMooseObjectWarehouse< Transfer > _from_multi_app_transfers
Transfers executed just after MultiApps to transfer data from them.
A class for "pretty printing" a table of data.
void libmesh_ignore(const Args &...)

Referenced by FEProblemBase::execMultiApps().

◆ execute()

void MFEMProblem::execute ( const ExecFlagType &  exec_type)
overridevirtualinherited

Convenience function for performing execution of MOOSE systems.

Reimplemented from FEProblemBase.

Definition at line 100 of file MFEMProblem.C.

101{
102 setCurrentExecuteOnFlag(exec_type);
103 executeMFEMObjects(exec_type);
104
105 ExternalProblem::execute(exec_type);
106}
void setCurrentExecuteOnFlag(const ExecFlagType &)
virtual void execute(const ExecFlagType &exec_type)
Convenience function for performing execution of MOOSE systems.
void executeMFEMObjects(const ExecFlagType &exec_type)
Execute MFEM executed objects scheduled on the supplied execute flag.

Referenced by MFEMSteady::execute(), and MFEMSteady::init().

◆ executeAllObjects()

void FEProblemBase::executeAllObjects ( const ExecFlagType &  exec_type)
virtualinherited

Definition at line 5436 of file FEProblemBase.C.

5437{
5438}

Referenced by Executor::exec().

◆ executeControls()

void FEProblemBase::executeControls ( const ExecFlagType &  exec_type)
inherited

Performs setup and execute calls for Control objects.

Definition at line 5985 of file FEProblemBase.C.

5986{
5987 if (_control_warehouse[exec_type].hasActiveObjects())
5988 {
5989 TIME_SECTION("executeControls", 1, "Executing Controls");
5990
5992
5993 auto controls_wh = _control_warehouse[exec_type];
5994 // Add all of the dependencies into the resolver and sort them
5995 for (const auto & it : controls_wh.getActiveObjects())
5996 {
5997 // Make sure an item with no dependencies comes out too!
5998 resolver.addItem(it);
5999
6000 std::vector<std::string> & dependent_controls = it->getDependencies();
6001 for (const auto & depend_name : dependent_controls)
6002 {
6003 if (controls_wh.hasActiveObject(depend_name))
6004 {
6005 auto dep_control = controls_wh.getActiveObject(depend_name);
6006 resolver.addEdge(dep_control, it);
6007 }
6008 else
6009 mooseError("The Control \"",
6010 depend_name,
6011 "\" was not created, did you make a "
6012 "spelling mistake or forget to include it "
6013 "in your input file?");
6014 }
6015 }
6016
6017 const auto & ordered_controls = resolver.getSortedValues();
6018
6019 if (!ordered_controls.empty())
6020 {
6021 // already called by initialSetup when exec_type == EXEC_INITIAL
6022 if (exec_type != EXEC_INITIAL)
6023 _control_warehouse.setup(exec_type);
6024
6025 // Run the controls in the proper order
6026 for (const auto & control : ordered_controls)
6027 control->execute();
6028 }
6029 }
6030}
Class that represents the dependecy as a graph.
void addItem(const T &value)
Add an independent item to the set.
const std::vector< T > & getSortedValues()
This function also returns dependency resolved values but with a simpler single vector interface.
void addEdge(const T &a, const T &b)
Add an edge between nodes 'a' and 'b'.
void setup(const ExecFlagType &exec_flag, THREAD_ID tid=0) const
ExecuteMooseObjectWarehouse< Control > _control_warehouse
The control logic warehouse.

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

◆ executeMFEMObjects()

void MFEMProblem::executeMFEMObjects ( const ExecFlagType &  exec_type)
inherited

Execute MFEM executed objects scheduled on the supplied execute flag.

Definition at line 860 of file MFEMProblem.C.

861{
862 std::vector<MFEMExecutedObject *> objects;
864 .query()
865 .condition<AttribSystem>("MFEMExecutedObject")
866 .condition<AttribExecOns>(exec_type)
867 .condition<AttribThread>(0)
868 .queryInto(objects);
869
870 std::map<std::string, const MFEMExecutedObject *> suppliers;
871 for (auto * const object : objects)
872 for (const auto & item : object->getSuppliedItems())
873 {
874 const auto [it, inserted] = suppliers.emplace(item, object);
875 if (!inserted && it->second != object)
876 mooseError("MFEM executed-object dependency ambiguity on ",
877 exec_type,
878 ": both '",
879 it->second->name(),
880 "' and '",
881 object->name(),
882 "' supply '",
883 item,
884 "'.");
885 }
886
887 for (auto * const object : objects)
888 {
889 object->initialize();
890 object->execute();
891 object->finalize();
892
893 if (auto * const pp = dynamic_cast<const Postprocessor *>(object))
894 {
895 _reporter_data.finalize(pp->PPName());
896 setPostprocessorValueByName(pp->PPName(), pp->getValue());
897 }
898
899 if (auto * const vpp = dynamic_cast<VectorPostprocessor *>(object))
900 _reporter_data.finalize(vpp->PPName());
901 }
902}
void setPostprocessorValueByName(const PostprocessorName &name, const PostprocessorValue &value, std::size_t t_index=0)
Set the value of a PostprocessorValue.
Base class for all Postprocessors.
void finalize(const std::string &object_name)
Helper function for performing post calculation actions via the ReporterContext objects.
Base class for Postprocessors that produce a vector of values.

Referenced by MFEMProblem::execute().

◆ executeSamplers()

void FEProblemBase::executeSamplers ( const ExecFlagType &  exec_type)
inherited

Performs setup and execute calls for Sampler objects.

Definition at line 6033 of file FEProblemBase.C.

6034{
6035 // TODO: This should be done in a threaded loop, but this should be super quick so for now
6036 // do a serial loop.
6037 for (THREAD_ID tid = 0; tid < numThreads(); ++tid)
6038 {
6039 std::vector<Sampler *> objects;
6040 theWarehouse()
6041 .query()
6042 .condition<AttribSystem>("Sampler")
6043 .condition<AttribThread>(tid)
6044 .condition<AttribExecOns>(exec_type)
6045 .queryInto(objects);
6046
6047 if (!objects.empty())
6048 {
6049 TIME_SECTION("executeSamplers", 1, "Executing Samplers");
6050 FEProblemBase::objectSetupHelper<Sampler>(objects, exec_type);
6051 FEProblemBase::objectExecuteHelper<Sampler>(objects);
6052 }
6053 }
6054}

Referenced by FEProblemBase::execute().

◆ externalSolve()

virtual void MFEMProblem::externalSolve ( )
inlineoverridevirtualinherited

New interface for solving an External problem.

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

Implements ExternalProblem.

Definition at line 51 of file MFEMProblem.h.

51{}

◆ feBackend()

Moose::FEBackend MFEMProblem::feBackend ( ) const
inlineoverridevirtualinherited

Reimplemented from FEProblemBase.

Definition at line 362 of file MFEMProblem.h.

◆ fieldScalarCouplingEntries()

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

Definition at line 7353 of file FEProblemBase.C.

7354{
7355 return _assembly[tid][nl_sys]->fieldScalarCouplingEntries();
7356}

◆ finalizeMultiApps()

void FEProblemBase::finalizeMultiApps ( )
inherited

Definition at line 6662 of file FEProblemBase.C.

6663{
6664 const auto & multi_apps = _multi_apps.getActiveObjects();
6665
6666 for (const auto & multi_app : multi_apps)
6667 multi_app->finalize();
6668}

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

◆ finalNonlinearResidual()

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

Reimplemented from SubProblem.

Definition at line 7785 of file FEProblemBase.C.

7786{
7787 return _nl[nl_sys_num]->finalNonlinearResidual();
7788}

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

6691{
6692 const auto & multi_apps = _multi_apps[type].getActiveObjects();
6693
6694 if (multi_apps.size())
6695 {
6697 _console << COLOR_CYAN << "\nAdvancing MultiApps on " << type.name() << COLOR_DEFAULT
6698 << std::endl;
6699
6700 for (const auto & multi_app : multi_apps)
6701 multi_app->finishStep(recurse_through_multiapp_levels);
6702
6704
6706 _console << COLOR_CYAN << "Finished Advancing MultiApps on " << type.name() << "\n"
6707 << COLOR_DEFAULT << std::endl;
6708 }
6709}

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

◆ flagInvalidSolutionInternal()

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

Set solution invalid mark for the given solution ID.

Definition at line 41 of file SolutionInvalidInterface.C.

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

◆ forceOutput()

void FEProblemBase::forceOutput ( )
inherited

Indicates that the next call to outputStep should be forced.

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

Forced output will NOT override the allowOutput flag.

Definition at line 7948 of file FEProblemBase.C.

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

Referenced by TransientMultiApp::solveStep().

◆ fvBCsIntegrityCheck() [1/2]

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

Definition at line 2844 of file FEProblemBase.h.

2844{ 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 3984 of file FEProblemBase.h.

3985{
3987 // the user has requested that we don't check integrity so we will honor that
3988 return;
3989
3990 _fv_bcs_integrity_check = fv_bcs_integrity_check;
3991}

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

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

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

◆ getActiveFEVariableCoupleableMatrixTags()

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

Definition at line 382 of file SubProblem.C.

383{
385}
std::vector< std::set< TagID > > _active_fe_var_coupleable_matrix_tags

◆ getActiveFEVariableCoupleableVectorTags()

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

Definition at line 388 of file SubProblem.C.

389{
391}
std::vector< std::set< TagID > > _active_fe_var_coupleable_vector_tags

Referenced by MultiAppVariableValueSamplePostprocessorTransfer::execute().

◆ getActiveScalarVariableCoupleableMatrixTags()

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

Definition at line 423 of file SubProblem.C.

424{
426}
std::vector< std::set< TagID > > _active_sc_var_coupleable_matrix_tags

Referenced by MooseVariableScalar::reinit().

◆ getActiveScalarVariableCoupleableVectorTags()

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

Definition at line 429 of file SubProblem.C.

430{
432}
std::vector< std::set< TagID > > _active_sc_var_coupleable_vector_tags

◆ getActualFieldVariable()

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

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

Implements SubProblem.

Definition at line 6893 of file FEProblemBase.C.

6894{
6895 for (auto & sys : _solver_systems)
6896 if (sys->hasVariable(var_name))
6897 return sys->getActualFieldVariable<Real>(tid, var_name);
6898 if (_aux->hasVariable(var_name))
6899 return _aux->getActualFieldVariable<Real>(tid, var_name);
6900
6901 mooseError("Unknown variable " + var_name);
6902}
MooseVariableFieldBase & getActualFieldVariable(const THREAD_ID tid, const std::string &var_name) override
Returns the variable reference for requested MooseVariableField which may be in any system.

Referenced by MultiAppVariableValueSampleTransfer::execute().

◆ getArrayVariable()

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

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

Implements SubProblem.

Definition at line 6917 of file FEProblemBase.C.

6918{
6919 for (auto & sys : _solver_systems)
6920 if (sys->hasVariable(var_name))
6921 return sys->getFieldVariable<RealEigenVector>(tid, var_name);
6922 if (_aux->hasVariable(var_name))
6923 return _aux->getFieldVariable<RealEigenVector>(tid, var_name);
6924
6925 mooseError("Unknown variable " + var_name);
6926}
Eigen::Matrix< Real, Eigen::Dynamic, 1 > RealEigenVector
Definition MooseTypes.h:147

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

◆ getAuxiliarySystem()

AuxiliarySystem & FEProblemBase::getAuxiliarySystem ( )
inlineinherited

Definition at line 1094 of file FEProblemBase.h.

1094{ return *_aux; }

Referenced by Adaptivity::adaptMesh(), DisplacedProblem::addTimeIntegrator(), ElementSubdomainModifierBase::applyIC(), TransientMultiApp::appTransferVector(), MooseMesh::cacheFaceInfoVariableOwnership(), MooseMesh::cacheFVElementalDoFs(), PNGOutput::calculateRescalingValues(), NonlinearSystemBase::computeJacobianInternal(), NonlinearSystemBase::computeNodalBCsJacobian(), NonlinearSystemBase::computeNodalBCsResidual(), NonlinearSystemBase::computeResidualTags(), NonlinearSystemBase::constraintResiduals(), DisplacedProblem::DisplacedProblem(), EigenExecutionerBase::EigenExecutionerBase(), FEProblemBase::execute(), ActivateElementsUserObjectBase::initSolutions(), EigenExecutionerBase::inversePowerIteration(), PNGOutput::makeMeshFunc(), MoveNodesByParsedExpressionModifier::MoveNodesByParsedExpressionModifier(), MultiAppVariableValueSamplePostprocessorTransfer::MultiAppVariableValueSamplePostprocessorTransfer(), NonlinearThread::onInterfaceWithHRefinementMismatch(), ConsoleUtils::outputAuxiliarySystemInformation(), BlockRestrictionDebugOutput::printBlockRestrictionGroups(), BlockRestrictionDebugOutput::printBlockRestrictionMap(), BlockRestrictionDebugOutput::printBoundaryRestrictionGroups(), MultiApp::restore(), NonlinearSystemBase::setConstraintSecondaryValues(), TransientMultiApp::setupApp(), TransientMultiApp::solveStep(), AB2PredictorCorrector::step(), DisplacedProblem::syncSolutions(), Coupleable::writableCoupledValue(), and MoveNodesByParsedExpressionModifier::writeOutputs().

◆ getAuxVariableNames()

std::vector< VariableName > MFEMProblem::getAuxVariableNames ( )
virtualinherited

Returns all the variable names from the auxiliary system base.

This is helpful in the syncSolutions() method when transferring variable data.

Definition at line 810 of file MFEMProblem.C.

811{
813}
virtual const SystemBase & systemBaseAuxiliary() const override
Return the auxiliary system object as a base class reference.
const std::vector< VariableName > & getVariableNames() const
Definition SystemBase.h:893

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

789{
791}
unsigned int getAxisymmetricRadialCoord() const
Returns the desired radial direction for RZ coordinate transformation.
Definition MooseMesh.C:4412

◆ getBase()

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

Definition at line 147 of file MooseBase.h.

147{ return _pars.getBase(); }

Referenced by MooseBase::uniqueParameterName().

◆ getBndMaterialPropertyStorage()

const MaterialPropertyStorage & FEProblemBase::getBndMaterialPropertyStorage ( )
inlineinherited

Definition at line 2138 of file FEProblemBase.h.

2138{ return _bnd_material_props; }

◆ getCheckedPointerParam()

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

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

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

Definition at line 450 of file MooseBase.h.

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

◆ getCoefficients()

Moose::MFEM::CoefficientManager & MFEMProblem::getCoefficients ( )
inlineinherited

◆ getComm()

MPI_Comm MFEMProblem::getComm ( )
inlineinherited

Return the MPI communicator associated with this FE problem's mesh.

Definition at line 331 of file MFEMProblem.h.

331{ return getProblemData().comm; }

◆ getComplexGridFunction()

std::shared_ptr< mfem::ParComplexGridFunction > MFEMProblem::getComplexGridFunction ( const std::string &  name)
inlineinherited
Returns
a shared pointer to an MFEM parallel complex grid function

Definition at line 397 of file MFEMProblem.h.

398 {
400 }
std::shared_ptr< T > GetShared(const std::string &field_name) const
Returns a shared pointer to the field. This is guaranteed to return a non-null shared pointer.

Referenced by MFEMComplexScalarBoundaryIC::execute(), MFEMComplexScalarIC::execute(), MFEMComplexVectorIC::execute(), MFEMComplexSumAux::MFEMComplexSumAux(), MFEMComplexVariableValueSamplerBase::MFEMComplexVariableValueSamplerBase(), MultiAppMFEMCopyTransfer::transferVariables(), and MultiAppMFEMShapeEvaluationTransfer::transferVariables().

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

735{
737}

Referenced by MaterialPropertyDebugOutput::output().

◆ getControlWarehouse()

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

Reference to the control logic warehouse.

Definition at line 2636 of file FEProblemBase.h.

2636{ return _control_warehouse; }

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

◆ getConvergence()

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

◆ getConvergenceObjects()

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

Gets the Convergence objects.

Definition at line 3052 of file FEProblemBase.C.

3053{
3054 return _convergences.getActiveObjects(tid);
3055}

◆ getCoordSystem()

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

Definition at line 1283 of file SubProblem.C.

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

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

◆ getCurrentAlgebraicBndNodeRange()

const ConstBndNodeRange & FEProblemBase::getCurrentAlgebraicBndNodeRange ( )
inherited

◆ getCurrentAlgebraicElementRange()

const ConstElemRange & FEProblemBase::getCurrentAlgebraicElementRange ( )
inherited

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

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

Definition at line 10776 of file FEProblemBase.C.

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

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

◆ getCurrentAlgebraicNodeRange()

const ConstNodeRange & FEProblemBase::getCurrentAlgebraicNodeRange ( )
inherited

Definition at line 10784 of file FEProblemBase.C.

10785{
10787 return *_mesh.getLocalNodeRange();
10788
10790}
std::unique_ptr< libMesh::ConstNodeRange > _current_algebraic_node_range
libMesh::ConstNodeRange * getLocalNodeRange()
Definition MooseMesh.C:1276

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

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

5425{
5427}

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

◆ getCurrentICState()

unsigned short FEProblemBase::getCurrentICState ( )
inherited

Retrieves the current initial condition state.

Returns
current initial condition state

Definition at line 10835 of file FEProblemBase.C.

10836{
10837 return _current_ic_state;
10838}
unsigned short _current_ic_state

Referenced by ComputeInitialConditionThread::operator()().

◆ getDataFileName()

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

Deprecated method.

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

Definition at line 21 of file DataFileInterface.C.

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

◆ getDataFileNameByName()

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

Deprecated method.

Use getDataFilePath() instead.

Definition at line 31 of file DataFileInterface.C.

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

◆ getDataFilePath()

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

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

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

Definition at line 40 of file DataFileInterface.C.

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

Referenced by DataFileInterface::getDataFileNameByName().

◆ getDiracElements()

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

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

Implements SubProblem.

Definition at line 2850 of file FEProblemBase.C.

2851{
2852 // First add in the undisplaced elements
2854
2856 {
2857 std::set<const Elem *> displaced_elements;
2858 _displaced_problem->getDiracElements(displaced_elements);
2859
2860 { // Use the ids from the displaced elements to get the undisplaced elements
2861 // and add them to the list
2862 for (const auto & elem : displaced_elements)
2863 elems.insert(_mesh.elemPtr(elem->id()));
2864 }
2865 }
2866}
std::set< const Elem * > & getElements()
Returns a writeable reference to the _elements container.

Referenced by NonlinearSystemBase::computeDiracContributions().

◆ getDiscreteMaterialWarehouse()

const MaterialWarehouse & FEProblemBase::getDiscreteMaterialWarehouse ( ) const
inlineinherited

Definition at line 2394 of file FEProblemBase.h.

2394{ return _discrete_materials; }

◆ getDisplacedProblem() [1/2]

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

Definition at line 2072 of file FEProblemBase.h.

2072{ return _displaced_problem; }

◆ getDisplacedProblem() [2/2]

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

◆ getDistribution()

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

Definition at line 3124 of file FEProblemBase.C.

3125{
3126 std::vector<Distribution *> objs;
3127 theWarehouse()
3128 .query()
3129 .condition<AttribSystem>("Distribution")
3130 .condition<AttribName>(name)
3131 .queryInto(objs);
3132 if (objs.empty())
3133 {
3134 mooseAssert(getMooseApp().actionWarehouse().isTaskComplete("add_distribution"),
3135 "A Distribution getter was called before Distributions have been constructed. "
3136 "If you are attempting to access this object in the constructor of another object "
3137 "then make sure that the Distribution is constructed before the object using it.");
3138 mooseError("Unable to find Distribution with name '" + name + "'");
3139 }
3140 return *(objs[0]);
3141}

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

◆ getEquationSystem()

std::shared_ptr< Moose::MFEM::EquationSystem > MFEMProblem::getEquationSystem ( const std::string &  weak_form_name = "") const
inherited

Return the EquationSystem built by the weak form named weak_form_name.

If the name is empty, return the problem's sole EquationSystem; it is an error to omit the name when more than one weak form has been added, since the choice would otherwise be silently arbitrary.

Definition at line 494 of file MFEMProblem.C.

495{
496 const auto & eqn_systems = getProblemData().eqn_systems;
497
498 if (!weak_form_name.empty())
499 return eqn_systems.GetShared(weak_form_name);
500
501 mooseAssert(eqn_systems.size() != 0, "No equation systems have been built for this problem");
502
503 if (eqn_systems.size() > 1)
504 mooseError("This problem has ",
505 eqn_systems.size(),
506 " equation systems, so the one to use cannot be inferred. Set the 'weak_form' "
507 "parameter to name the weak form whose equation system should be used.");
508
509 return eqn_systems.begin()->second;
510}
Moose::MFEM::EquationSystems eqn_systems

Referenced by Moose::MFEM::EigenproblemESProblemOperator::EigenproblemESProblemOperator(), and Moose::MFEM::LinearSolverBase::LinearSolverBase().

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

1009{
1011 {
1012 std::vector<const DofMap *> dof_maps(es().n_systems());
1013 for (const auto i : make_range(es().n_systems()))
1014 {
1015 const auto & sys = es().get_system(i);
1016 dof_maps[i] = &sys.get_dof_map();
1017 }
1019 std::make_unique<ConstElemRange>(_mesh.getMesh().multi_evaluable_elements_begin(dof_maps),
1020 _mesh.getMesh().multi_evaluable_elements_end(dof_maps));
1021 }
1023}
std::unique_ptr< libMesh::ConstElemRange > _evaluable_local_elem_range
const T_sys & get_system(std::string_view name) const

Referenced by NodalPatchRecoveryBase::gatherRequestList().

◆ getExecutor()

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

Definition at line 2526 of file FEProblemBase.h.

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

◆ getFailNextNonlinearConvergenceCheck()

bool FEProblemBase::getFailNextNonlinearConvergenceCheck ( ) const
inlineinherited

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

Definition at line 2985 of file FEProblemBase.h.

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

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

◆ getFailNextSystemConvergenceCheck()

bool FEProblemBase::getFailNextSystemConvergenceCheck ( ) const
inlineinherited

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

Definition at line 2987 of file FEProblemBase.h.

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

◆ getFunction()

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

Definition at line 2984 of file FEProblemBase.C.

2985{
2986 // This thread lock is necessary since this method will create functions
2987 // for all threads if one is missing.
2988 Threads::spin_mutex::scoped_lock lock(get_function_mutex);
2989
2990 if (!hasFunction(name, tid))
2991 {
2992 // If we didn't find a function, it might be a default function, attempt to construct one now
2993 std::istringstream ss(name);
2994 Real real_value;
2995
2996 // First see if it's just a constant. If it is, build a ConstantFunction
2997 if (ss >> real_value && ss.eof())
2998 {
2999 InputParameters params = _factory.getValidParams("ConstantFunction");
3000 params.set<Real>("value") = real_value;
3001 addFunction("ConstantFunction", ss.str(), params);
3002 }
3003 else
3004 {
3006 std::string vars = "x,y,z,t,NaN,pi,e";
3007 if (fp.Parse(name, vars) == -1) // -1 for success
3008 {
3009 // It parsed ok, so build a MooseParsedFunction
3010 InputParameters params = _factory.getValidParams("ParsedFunction");
3011 params.set<std::string>("expression") = name;
3012 addFunction("ParsedFunction", name, params);
3013 }
3014 }
3015
3016 // Try once more
3017 if (!hasFunction(name, tid))
3018 {
3019 mooseAssert(getMooseApp().actionWarehouse().isTaskComplete("add_function"),
3020 "getFunction() was called before Functions have been constructed. The requested "
3021 "Function '" +
3022 name + "' may exist in the input file, but Functions are not available yet.");
3023
3024 mooseError("Unable to find function " + name);
3025 }
3026 }
3027
3028 auto * const ret = dynamic_cast<Function *>(_functions.getActiveObject(name, tid).get());
3029 if (!ret)
3030 mooseError("No function named ", name, " of appropriate type");
3031
3032 return *ret;
3033}
Threads::spin_mutex get_function_mutex
virtual void addFunction(const std::string &type, const std::string &name, InputParameters &parameters)
virtual bool hasFunction(const std::string &name, const THREAD_ID tid=0)

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

◆ getFunctionWarehouse()

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

Definition at line 2383 of file FEProblemBase.h.

2383{ return _functions; }

◆ getFunctor()

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

Definition at line 1210 of file SubProblem.h.

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

Referenced by FunctorInterface::getFunctorByName().

◆ getFVAdvectedInterpolationMethod()

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

Retrieve an advected interpolation method.

Parameters
nameThe name of the method.
tidThe thread ID.

Definition at line 5204 of file FEProblemBase.C.

5206{
5207 const auto & method = getFVInterpolationMethod(name, tid);
5208 const auto * advected_method = dynamic_cast<const FVAdvectedInterpolationMethod *>(&method);
5209
5210 if (!advected_method)
5211 mooseError("FVInterpolationMethod '",
5212 name,
5213 "' (",
5214 method.type(),
5215 ") is not an advected interpolation method.");
5216
5217 return *advected_method;
5218}
const FVInterpolationMethod & getFVInterpolationMethod(const InterpolationMethodName &name, const THREAD_ID tid=0) const
Retrieve an FV interpolation method.
Interface for interpolation methods that provide matrix and RHS contributions for advected face value...

Referenced by FVInterpolationMethodInterface::getFVAdvectedInterpolationMethod().

◆ getFVFaceInterpolationMethod()

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

Retrieve a scalar face interpolation method.

Parameters
nameThe name of the method.
tidThe thread ID.

Definition at line 5187 of file FEProblemBase.C.

5189{
5190 const auto & method = getFVInterpolationMethod(name, tid);
5191 const auto * face_method = dynamic_cast<const FVFaceInterpolationMethod *>(&method);
5192
5193 if (!face_method)
5194 mooseError("FVInterpolationMethod '",
5195 name,
5196 "' (",
5197 method.type(),
5198 ") is not a scalar face interpolation method.");
5199
5200 return *face_method;
5201}
Abstract base class for interpolation methods that produce a scalar face value from adjacent cell val...

Referenced by FVInterpolationMethodInterface::getFVFaceInterpolationMethod().

◆ getFVGradientMethod() [1/2]

FVGradientMethod & FEProblemBase::getFVGradientMethod ( const GradientMethodName &  name,
const THREAD_ID  tid = 0 
)
inherited

Retrieve a writable FV gradient method owned by this problem.

Parameters
nameThe name of the method.
tidThe thread ID.

Definition at line 5140 of file FEProblemBase.C.

5141{
5142 return const_cast<FVGradientMethod &>(
5143 static_cast<const FEProblemBase &>(*this).getFVGradientMethod(name, tid));
5144}
FVGradientMethod & getFVGradientMethod(const GradientMethodName &name, const THREAD_ID tid=0)
Retrieve a writable FV gradient method owned by this problem.

Referenced by FEProblemBase::getFVGradientMethod().

◆ getFVGradientMethod() [2/2]

const FVGradientMethod & FEProblemBase::getFVGradientMethod ( const GradientMethodName &  name,
const THREAD_ID  tid = 0 
) const
inherited

Retrieve a read-only FV gradient method owned by this problem.

Parameters
nameThe name of the method.
tidThe thread ID.

Definition at line 5122 of file FEProblemBase.C.

5123{
5124 std::vector<FVGradientMethod *> methods;
5125 theWarehouse()
5126 .query()
5127 .condition<AttribSystem>("FVGradientMethod")
5128 .condition<AttribThread>(tid)
5129 .condition<AttribName>(name)
5130 .queryInto(methods);
5131
5132 if (methods.empty())
5133 mooseError("Unable to find FVGradientMethod with name '", name, "'");
5134
5135 mooseAssert(methods.size() == 1, "Expected a single FVGradientMethod per thread");
5136 return *(methods[0]);
5137}

◆ getFVInitialConditionWarehouse()

const FVInitialConditionWarehouse & FEProblemBase::getFVInitialConditionWarehouse ( ) const
inlineinherited

◆ getFVInterpolationMethod()

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

Retrieve an FV interpolation method.

Parameters
nameThe name of the method.
tidThe thread ID.

Definition at line 5160 of file FEProblemBase.C.

5162{
5163 std::vector<FVInterpolationMethod *> methods;
5164 theWarehouse()
5165 .query()
5166 .condition<AttribSystem>("FVInterpolationMethod")
5167 .condition<AttribThread>(tid)
5168 .condition<AttribName>(name)
5169 .queryInto(methods);
5170
5171 if (methods.empty())
5172 {
5173 mooseAssert(getMooseApp().actionWarehouse().isTaskComplete("add_interpolation_method"),
5174 "An FVInterpolationMethod getter was called before FVInterpolationMethods have "
5175 "been constructed. If you are attempting to access this object in the constructor "
5176 "of another object then make sure that the FVInterpolationMethod is constructed "
5177 "before the object using it.");
5178
5179 mooseError("Unable to find FVInterpolationMethod with name '", name, "'");
5180 }
5181
5182 mooseAssert(methods.size() == 1, "Expected a single FVInterpolationMethod per thread");
5183 return *(methods[0]);
5184}

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

◆ getFVMatsAndDependencies()

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

Get the materials and variables potentially needed for FV.

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

Definition at line 10467 of file FEProblemBase.C.

10473{
10474 if (_materials[Moose::FACE_MATERIAL_DATA].hasActiveBlockObjects(blk_id, tid))
10475 {
10476 auto & this_face_mats =
10478 for (std::shared_ptr<MaterialBase> face_mat : this_face_mats)
10479 if (face_mat->ghostable())
10480 {
10481 face_materials.push_back(face_mat);
10482 auto & var_deps = face_mat->getMooseVariableDependencies();
10483 for (auto * var : var_deps)
10484 {
10485 if (!var->isFV())
10486 mooseError(
10487 "Ghostable materials should only have finite volume variables coupled into them.");
10488 else if (face_mat->hasStatefulProperties())
10489 mooseError("Finite volume materials do not currently support stateful properties.");
10490 variables.insert(var);
10491 }
10492 }
10493 }
10494
10495 if (_materials[Moose::NEIGHBOR_MATERIAL_DATA].hasActiveBlockObjects(blk_id, tid))
10496 {
10497 auto & this_neighbor_mats =
10499 for (std::shared_ptr<MaterialBase> neighbor_mat : this_neighbor_mats)
10500 if (neighbor_mat->ghostable())
10501 {
10502 neighbor_materials.push_back(neighbor_mat);
10503#ifndef NDEBUG
10504 auto & var_deps = neighbor_mat->getMooseVariableDependencies();
10505 for (auto * var : var_deps)
10506 {
10507 if (!var->isFV())
10508 mooseError(
10509 "Ghostable materials should only have finite volume variables coupled into them.");
10510 else if (neighbor_mat->hasStatefulProperties())
10511 mooseError("Finite volume materials do not currently support stateful properties.");
10512 auto pr = variables.insert(var);
10513 mooseAssert(!pr.second,
10514 "We should not have inserted any new variables dependencies from our "
10515 "neighbor materials that didn't exist for our face materials");
10516 }
10517#endif
10518 }
10519 }
10520}
MaterialWarehouse _materials

◆ getGridFunction()

std::shared_ptr< mfem::ParGridFunction > MFEMProblem::getGridFunction ( const std::string &  name)
inlineinherited

◆ getHitNode() [1/2]

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

Definition at line 136 of file MooseBase.h.

136{ return getHitNode(_pars); }

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

◆ getHitNode() [2/2]

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

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

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

Definition at line 167 of file MooseBase.C.

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

◆ getIndicatorWarehouse()

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

Return indicator/marker storage.

Definition at line 2164 of file FEProblemBase.h.

2164{ return _indicators; }

◆ getInitialConditionWarehouse()

const InitialConditionWarehouse & FEProblemBase::getInitialConditionWarehouse ( ) const
inlineinherited

◆ getInterfaceMaterialsWarehouse()

const MaterialWarehouse & FEProblemBase::getInterfaceMaterialsWarehouse ( ) const
inlineinherited

◆ getInternalSideIndicatorWarehouse()

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

Definition at line 2165 of file FEProblemBase.h.

2166 {
2168 }

◆ getKokkosBndMaterialPropertyStorage()

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

Definition at line 2149 of file FEProblemBase.h.

2150 {
2152 }

◆ getKokkosFESystem() [1/2]

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

Get the Kokkos FESystem of a specified number.

Parameters
sys_numThe system number
Returns
The Kokkos FESystem

◆ getKokkosFESystem() [2/2]

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

◆ getKokkosFESystems() [1/2]

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

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

Returns
The array of Kokkos FESystem objects

Definition at line 904 of file FEProblemBase.h.

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

◆ getKokkosFESystems() [2/2]

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

Definition at line 908 of file FEProblemBase.h.

909 {
910 return _kokkos_fe_systems;
911 }

◆ getKokkosFunction() [1/2]

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

Get a Kokkos function in an abstract type.

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

◆ getKokkosFunction() [2/2]

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

Get a Kokkos function in a concrete type.

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

Definition at line 4014 of file FEProblemBase.h.

4015{
4016 if (!hasKokkosFunction(name))
4017 {
4018 // If we didn't find a function, it might be a default function, attempt to construct one now
4019 std::istringstream ss(name);
4020 Real real_value;
4021
4022 // First see if it's just a constant. If it is, build a ConstantFunction
4023 if (ss >> real_value && ss.eof())
4024 {
4025 InputParameters params = _factory.getValidParams("KokkosConstantFunction");
4026 params.set<Real>("value") = real_value;
4027 addKokkosFunction("KokkosConstantFunction", ss.str(), params);
4028 }
4029
4030 // Try once more
4031 if (!hasKokkosFunction(name))
4032 mooseError("Unable to find Kokkos function '" + name, "'");
4033 }
4034
4035 auto * const ret = dynamic_cast<T *>(_kokkos_functions.getActiveObject(name).get());
4036 if (!ret)
4037 mooseError("No Kokkos function named '", name, "' of appropriate type");
4038
4039 return *ret;
4040}
virtual bool hasKokkosFunction(const std::string &name) const
Get whether a Kokkos function exists.
virtual void addKokkosFunction(const std::string &type, const std::string &name, InputParameters &parameters)
Add a Kokkos function to the problem.

◆ getKokkosMaterialData()

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

Referenced by BlockRestrictable::initializeBlockRestrictable().

◆ getKokkosMaterialPropertyStorage()

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

Definition at line 2145 of file FEProblemBase.h.

2146 {
2148 }

◆ getKokkosMaterialPropertyStorageConsumers()

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

◆ getKokkosMaterialsWarehouse()

const MaterialWarehouse & FEProblemBase::getKokkosMaterialsWarehouse ( ) const
inlineinherited

Definition at line 2401 of file FEProblemBase.h.

2401{ return _kokkos_materials; }
MaterialWarehouse _kokkos_materials

◆ getKokkosNeighborMaterialPropertyStorage()

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

Definition at line 2153 of file FEProblemBase.h.

2154 {
2156 }

◆ getKokkosSystem() [1/2]

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

Get the Kokkos System of a specified number.

Parameters
sys_numThe system number
Returns
The Kokkos System

◆ getKokkosSystem() [2/2]

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

◆ getKokkosSystems() [1/2]

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

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

Returns
The array of Kokkos System objects

Definition at line 892 of file FEProblemBase.h.

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

◆ getKokkosSystems() [2/2]

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

Definition at line 893 of file FEProblemBase.h.

894 {
895 return _kokkos_systems;
896 }

◆ getKokkosUserObject()

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

Get the Kokkos user object by its name.

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

Definition at line 1461 of file FEProblemBase.h.

1462 {
1463 std::vector<T *> objs;
1464 theWarehouse()
1465 .query()
1466 .condition<AttribSystem>("KokkosUserObject")
1467 .condition<AttribName>(name)
1468 .queryInto(objs);
1469 if (objs.empty())
1470 mooseError("Unable to find Kokkos user object with name '" + name + "'");
1471 return *(objs[0]);
1472 }

Referenced by UserObjectInterface::getUserObjectFromFEProblem().

◆ getLinearConvergenceNames()

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

Gets the linear convergence object name(s).

Definition at line 10580 of file FEProblemBase.C.

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

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

◆ getLinearSystem() [1/2]

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

Get non-constant reference to a linear system.

Parameters
sys_numThe number of the linear system

Definition at line 3930 of file FEProblemBase.h.

3931{
3932 mooseAssert(sys_num < _linear_systems.size(),
3933 "System number greater than the number of linear systems");
3934 return *_linear_systems[sys_num];
3935}

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

◆ getLinearSystem() [2/2]

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

Get a constant reference to a linear system.

Parameters
sys_numThe number of the linear system

Definition at line 3938 of file FEProblemBase.h.

3939{
3940 mooseAssert(sys_num < _linear_systems.size(),
3941 "System number greater than the number of linear systems");
3942 return *_linear_systems[sys_num];
3943}

◆ getLinearSystemNames()

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

Definition at line 3066 of file FEProblemBase.h.

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

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

◆ getLineSearch()

LineSearch * FEProblemBase::getLineSearch ( )
inlineoverridevirtualinherited

getter for the MOOSE line search

Implements SubProblem.

Definition at line 851 of file FEProblemBase.h.

851{ return _line_search.get(); }

Referenced by DisplacedProblem::getLineSearch().

◆ getMarkerWarehouse()

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

Definition at line 2169 of file FEProblemBase.h.

2169{ return _markers; }

◆ getMaterial()

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

Return a pointer to a MaterialBase object.

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

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

Definition at line 4290 of file FEProblemBase.C.

4294{
4295 switch (type)
4296 {
4298 name += "_neighbor";
4299 break;
4301 name += "_face";
4302 break;
4303 default:
4304 break;
4305 }
4306
4307 std::shared_ptr<MaterialBase> material = _all_materials[type].getActiveObject(name, tid);
4308 if (!no_warn && material->getParam<bool>("compute") && type == Moose::BLOCK_MATERIAL_DATA)
4309 mooseWarning("You are retrieving a Material object (",
4310 material->name(),
4311 "), but its compute flag is set to true. This indicates that MOOSE is "
4312 "computing this property which may not be desired and produce un-expected "
4313 "results.");
4314
4315 return material;
4316}
@ BLOCK_MATERIAL_DATA
Definition MooseTypes.h:751

Referenced by MaterialPropertyInterface::getMaterialByName().

◆ getMaterialData()

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

Definition at line 4319 of file FEProblemBase.C.

4322{
4323 switch (type)
4324 {
4326 if (object)
4328 return _material_props.getMaterialData(tid);
4330 if (object)
4336 if (object)
4339 }
4340
4341 mooseError("FEProblemBase::getMaterialData(): Invalid MaterialDataType ", type);
4342}
void addConsumer(Moose::MaterialDataType type, const MooseObject *object)
Add object as the consumer of storage of type type.
const MaterialData & getMaterialData(const THREAD_ID tid) const
@ BOUNDARY_MATERIAL_DATA
Definition MooseTypes.h:752
@ INTERFACE_MATERIAL_DATA
Definition MooseTypes.h:755

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

◆ getMaterialPropertyBlockNames()

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

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

Definition at line 481 of file SubProblem.C.

482{
483 std::set<SubdomainID> blocks = getMaterialPropertyBlocks(prop_name);
484 std::vector<SubdomainName> block_names;
485 block_names.reserve(blocks.size());
486 for (const auto & block_id : blocks)
487 {
488 SubdomainName name;
489 name = mesh().getMesh().subdomain_name(block_id);
490 if (name.empty())
491 {
492 std::ostringstream oss;
493 oss << block_id;
494 name = oss.str();
495 }
496 block_names.push_back(name);
497 }
498
499 return block_names;
500}
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:465

Referenced by MaterialPropertyInterface::getMaterialPropertyBlockNames().

◆ getMaterialPropertyBlocks()

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

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

Definition at line 465 of file SubProblem.C.

466{
467 std::set<SubdomainID> blocks;
468
469 for (const auto & it : _map_block_material_props)
470 {
471 const std::set<std::string> & prop_names = it.second;
472 std::set<std::string>::iterator name_it = prop_names.find(prop_name);
473 if (name_it != prop_names.end())
474 blocks.insert(it.first);
475 }
476
477 return blocks;
478}

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

◆ getMaterialPropertyBoundaryIDs()

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

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

Definition at line 517 of file SubProblem.C.

518{
519 std::set<BoundaryID> boundaries;
520
521 for (const auto & it : _map_boundary_material_props)
522 {
523 const std::set<std::string> & prop_names = it.second;
524 std::set<std::string>::iterator name_it = prop_names.find(prop_name);
525 if (name_it != prop_names.end())
526 boundaries.insert(it.first);
527 }
528
529 return boundaries;
530}

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

◆ getMaterialPropertyBoundaryNames()

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

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

Definition at line 533 of file SubProblem.C.

534{
535 std::set<BoundaryID> boundaries = getMaterialPropertyBoundaryIDs(prop_name);
536 std::vector<BoundaryName> boundary_names;
537 boundary_names.reserve(boundaries.size());
538 const BoundaryInfo & boundary_info = mesh().getMesh().get_boundary_info();
539
540 for (const auto & bnd_id : boundaries)
541 {
542 BoundaryName name;
543 if (bnd_id == Moose::ANY_BOUNDARY_ID)
544 name = "ANY_BOUNDARY_ID";
545 else
546 {
547 name = boundary_info.get_sideset_name(bnd_id);
548 if (name.empty())
549 {
550 std::ostringstream oss;
551 oss << bnd_id;
552 name = oss.str();
553 }
554 }
555 boundary_names.push_back(name);
556 }
557
558 return boundary_names;
559}
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:517

Referenced by MaterialPropertyInterface::getMaterialPropertyBoundaryNames().

◆ getMaterialPropertyRegistry()

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

Definition at line 2127 of file FEProblemBase.h.

2128 {
2130 }

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

◆ getMaterialPropertyStorage()

const MaterialPropertyStorage & FEProblemBase::getMaterialPropertyStorage ( )
inlineinherited

Return a reference to the material property storage.

Returns
A const reference to the material property storage

Definition at line 2137 of file FEProblemBase.h.

2137{ return _material_props; }

◆ getMaterialPropertyStorageConsumers()

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

Definition at line 4345 of file FEProblemBase.C.

4346{
4347 switch (type)
4348 {
4357 }
4358
4359 mooseError("FEProblemBase::getMaterialPropertyStorageConsumers(): Invalid MaterialDataType ",
4360 type);
4361}
const std::set< const MooseObject * > & getConsumers(Moose::MaterialDataType type) const

◆ getMaterialWarehouse()

const MaterialWarehouse & FEProblemBase::getMaterialWarehouse ( ) const
inlineinherited

◆ getMatrixTagID()

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

Get a TagID from a TagName.

Reimplemented in DisplacedProblem.

Definition at line 334 of file SubProblem.C.

335{
336 auto tag_name_upper = MooseUtils::toUpper(tag_name);
337
338 if (!matrixTagExists(tag_name))
339 mooseError("Matrix tag: ",
340 tag_name,
341 " does not exist. ",
342 "If this is a TimeKernel then this may have happened because you didn't "
343 "specify a Transient Executioner.");
344
345 return _matrix_tag_name_to_tag_id.at(tag_name_upper);
346}
virtual bool matrixTagExists(const TagName &tag_name) const
Check to see if a particular Tag exists.
Definition SubProblem.C:320

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

◆ getMatrixTags()

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

◆ getMaxQps()

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

Definition at line 1993 of file FEProblemBase.C.

1994{
1995 if (_max_qps == std::numeric_limits<unsigned int>::max())
1996 mooseError("Max QPS uninitialized");
1997 return _max_qps;
1998}
unsigned int _max_qps
Maximum number of quadrature points used in the problem.

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

◆ getMaxScalarOrder()

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

Definition at line 2001 of file FEProblemBase.C.

2002{
2003 return _max_scalar_order;
2004}

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

◆ getMeshDisplacementGridFunction()

const mfem::ParGridFunction & MFEMProblem::getMeshDisplacementGridFunction ( )
inherited

Returns reference to the displacement GridFunction to apply to nodes.

Definition at line 779 of file MFEMProblem.C.

780{
781 return *getGridFunction(mesh().getMeshDisplacementVariable());
782}
std::shared_ptr< mfem::ParGridFunction > getGridFunction(const std::string &name)

Referenced by MFEMProblem::displaceMesh().

◆ getMeshDivision()

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

Get a MeshDivision.

Definition at line 3073 of file FEProblemBase.C.

3074{
3075 auto * const ret = dynamic_cast<MeshDivision *>(_mesh_divisions.getActiveObject(name, tid).get());
3076 if (!ret)
3077 mooseError("No MeshDivision object named ", name, " of appropriate type");
3078 return *ret;
3079}

Referenced by NestedDivision::NestedDivision().

◆ getMFEMObject()

template<typename T >
T & MFEMProblem::getMFEMObject ( const std::string &  system,
const std::string &  name,
const THREAD_ID  tid = 0 
) const
inherited

Retrieve an MFEM object from the warehouse by system and name.

Definition at line 495 of file MFEMProblem.h.

498{
499 std::vector<T *> objs;
501 .query()
502 .condition<AttribSystem>(system)
503 .condition<AttribThread>(tid)
504 .condition<AttribName>(name)
505 .queryInto(objs);
506 if (objs.empty())
507 mooseError("Unable to find MFEM object with system '" + system + "' and name '" + name + "'");
508 mooseAssert(objs.size() == 1, "Shouldn't find more than one object with given system and name");
509 return *(objs[0]);
510}

Referenced by MFEMFESpaceHierarchy::buildHierarchy(), MFEML2ZienkiewiczZhuIndicator::createEstimator(), MFEML2ZienkiewiczZhuIndicator::MFEML2ZienkiewiczZhuIndicator(), MFEMRefinementMarker::MFEMRefinementMarker(), MFEMVariable::MFEMVariable(), and Moose::MFEM::LinearSolverBase::SetPreconditioner().

◆ getMFEMVariableMesh()

const mfem::ParMesh & MFEMProblem::getMFEMVariableMesh ( std::string  var_name)
inlineinherited

Return the ParMesh associated with a particular variable.

Definition at line 336 of file MFEMProblem.h.

337 {
338 if (_problem_data.gridfunctions.Has(var_name))
339 return *_problem_data.gridfunctions.Get(var_name)->ParFESpace()->GetParMesh();
340 else if (_problem_data.cmplx_gridfunctions.Has(var_name))
341 return *_problem_data.cmplx_gridfunctions.Get(var_name)->ParFESpace()->GetParMesh();
342 else
343 mooseError("Variable " + var_name +
344 " not found in MFEMProblem real or complex gridfunctions.");
345 }
bool Has(const std::string &field_name) const
Predicate to check if a field is registered with name field_name.
T * Get(const std::string &field_name) const
Returns a non-owning pointer to the field. This is guaranteed to return a non-null pointer.

◆ getMooseApp()

MooseApp & MooseBase::getMooseApp ( ) const
inlineinherited

Get the MooseApp this class is associated with.

Definition at line 87 of file MooseBase.h.

87{ return _app; }

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

◆ getMortarInterface() [1/2]

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

Definition at line 9186 of file FEProblemBase.C.

9190{
9191 return _mortar_data->getMortarInterface(
9192 primary_secondary_boundary_pair, primary_secondary_subdomain_pair, on_displaced);
9193}

◆ getMortarInterface() [2/2]

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

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

Definition at line 9176 of file FEProblemBase.C.

9180{
9181 return _mortar_data->getMortarInterface(
9182 primary_secondary_boundary_pair, primary_secondary_subdomain_pair, on_displaced);
9183}

◆ getMortarInterfaces()

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

Definition at line 10868 of file FEProblemBase.C.

10869{
10870 return _mortar_data->getMortarInterfaces(on_displaced);
10871}

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

◆ getMortarUserObjects() [1/2]

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

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

Definition at line 10693 of file FEProblemBase.C.

10696{
10697 std::vector<MortarUserObject *> mortar_uos;
10698 theWarehouse()
10699 .query()
10701 .queryInto(mortar_uos);
10702 return getMortarUserObjects(primary_boundary_id, secondary_boundary_id, displaced, mortar_uos);
10703}

◆ getMortarUserObjects() [2/2]

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

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

Definition at line 10676 of file FEProblemBase.C.

10680{
10681 std::vector<MortarUserObject *> mortar_uos;
10682 auto * const subproblem =
10683 displaced ? cast_ptr<SubProblem *>(_displaced_problem.get()) : cast_ptr<SubProblem *>(this);
10684 for (auto * const obj : mortar_uo_superset)
10685 if (obj->onInterface(primary_boundary_id, secondary_boundary_id) &&
10686 (&obj->getSubProblem() == subproblem))
10687 mortar_uos.push_back(obj);
10688
10689 return mortar_uos;
10690}

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

◆ getMultiApp()

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

Get a MultiApp object by name.

Definition at line 6288 of file FEProblemBase.C.

6289{
6290 if (!hasMultiApp(multi_app_name))
6291 mooseAssert(getMooseApp().actionWarehouse().isTaskComplete("add_multi_app"),
6292 "A MultiApp getter was called before MultiApps have been constructed. "
6293 "If you are attempting to access this object in the constructor of another object "
6294 "then make sure that the MultiApp is constructed before the object using it.");
6295
6296 return _multi_apps.getObject(multi_app_name);
6297}
bool hasMultiApp(const std::string &name) const
std::shared_ptr< T > getObject(const std::string &name, THREAD_ID tid=0) const

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

◆ getMultiAppFixedPointConvergenceName()

const ConvergenceName & FEProblemBase::getMultiAppFixedPointConvergenceName ( ) const
inherited

Gets the MultiApp fixed point convergence object name.

Definition at line 10588 of file FEProblemBase.C.

10589{
10592 else
10593 mooseError("The fixed point convergence name has not been set.");
10594}
std::optional< ConvergenceName > _multiapp_fixed_point_convergence_name
MultiApp fixed point convergence name.

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

◆ getMultiAppTransferWarehouse()

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

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

Definition at line 6434 of file FEProblemBase.C.

6435{
6436 if (direction == MultiAppTransfer::TO_MULTIAPP)
6438 else if (direction == MultiAppTransfer::FROM_MULTIAPP)
6440 else
6442}

◆ getMultiAppWarehouse()

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

◆ getNeighborMaterialPropertyStorage()

const MaterialPropertyStorage & FEProblemBase::getNeighborMaterialPropertyStorage ( )
inlineinherited

Definition at line 2139 of file FEProblemBase.h.

2140 {
2142 }

◆ getNonlinearConvergenceNames()

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

Gets the nonlinear system convergence object name(s).

Definition at line 10556 of file FEProblemBase.C.

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

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

◆ getNonlinearEvaluableElementRange()

const ConstElemRange & FEProblemBase::getNonlinearEvaluableElementRange ( )
inherited

Definition at line 1026 of file FEProblemBase.C.

1027{
1029 {
1030 std::vector<const DofMap *> dof_maps(_nl.size());
1031 for (const auto i : index_range(dof_maps))
1032 dof_maps[i] = &_nl[i]->dofMap();
1034 std::make_unique<ConstElemRange>(_mesh.getMesh().multi_evaluable_elements_begin(dof_maps),
1035 _mesh.getMesh().multi_evaluable_elements_end(dof_maps));
1036 }
1037
1039}
std::unique_ptr< libMesh::ConstElemRange > _nl_evaluable_local_elem_range

Referenced by ElemSideNeighborLayersTester::execute().

◆ getNonlinearSystem()

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

Reimplemented in FEProblem.

Definition at line 3088 of file FEProblemBase.C.

3089{
3090 mooseDeprecated("FEProblemBase::getNonlinearSystem() is deprecated, please use "
3091 "FEProblemBase::getNonlinearSystemBase() \n");
3092
3093 mooseAssert(sys_num < _nl.size(), "System number greater than the number of nonlinear systems");
3094 auto nl_sys = std::dynamic_pointer_cast<NonlinearSystem>(_nl[sys_num]);
3095
3096 if (!nl_sys)
3097 mooseError("This is not a NonlinearSystem");
3098
3099 return *nl_sys;
3100}

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

◆ getNonlinearSystemBase() [1/2]

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

◆ getNonlinearSystemBase() [2/2]

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

Definition at line 3893 of file FEProblemBase.h.

3894{
3895 mooseAssert(sys_num < _nl.size(), "System number greater than the number of nonlinear systems");
3896 return *_nl[sys_num];
3897}

◆ getNonlinearSystemNames()

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

Definition at line 3062 of file FEProblemBase.h.

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

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

◆ getNumCyclesCompleted()

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

Definition at line 2205 of file FEProblemBase.h.

2205{ return _cycles_completed; }

◆ getNumericType()

NumericType MFEMProblem::getNumericType ( ) const
inlineinherited

◆ getParam() [1/2]

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

Retrieve a parameter for the object.

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

Definition at line 406 of file MooseBase.h.

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

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

◆ getParam() [2/2]

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

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

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

Definition at line 443 of file MooseBase.h.

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

◆ getPetscOptions()

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

◆ getPositionsObject()

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

Get the Positions object by its name.

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

Definition at line 5094 of file FEProblemBase.C.

5095{
5096 std::vector<Positions *> objs;
5097 theWarehouse()
5098 .query()
5099 .condition<AttribSystem>("UserObject")
5100 .condition<AttribName>(name)
5101 .queryInto(objs);
5102 if (objs.empty())
5103 mooseError("Unable to find Positions object with name '" + name + "'");
5104 mooseAssert(objs.size() == 1, "Should only find one Positions");
5105 return *(objs[0]);
5106}

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

◆ getPostprocessorObjectByName()

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

Return the Postprocessor object registered under the supplied object name.

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

Definition at line 5240 of file FEProblemBase.C.

5242{
5243 std::vector<Postprocessor *> objs;
5244 theWarehouse()
5245 .query()
5247 .condition<AttribThread>(tid)
5248 .condition<AttribName>(object_name)
5249 .queryInto(objs);
5250
5251 if (objs.empty())
5252 mooseError("Unable to find Postprocessor with name '", object_name, "'");
5253 mooseAssert(objs.size() == 1,
5254 "We shouldn't find more than one postprocessor object for a given name");
5255 return *(objs[0]);
5256}

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

5261{
5263 t_index);
5264}
A ReporterName that represents a Postprocessor.
const T & getReporterValue(const ReporterName &reporter_name, const MooseObject &consumer, const ReporterMode &mode, const std::size_t time_index=0) const
Method for returning read only references to Reporter values.

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

◆ getProblemData() [1/2]

MFEMProblemData & MFEMProblem::getProblemData ( )
inlineinherited

◆ getProblemData() [2/2]

const MFEMProblemData & MFEMProblem::getProblemData ( ) const
inlineinherited

Return the current MFEM problem data in a const context.

Definition at line 326 of file MFEMProblem.h.

326{ return _problem_data; }

◆ getProblemOperators()

std::vector< std::shared_ptr< Moose::MFEM::ProblemOperatorBase > > & MFEMProblem::getProblemOperators ( )
inherited

Get vector of all ProblemOperators added to this problem.

Definition at line 560 of file MFEMProblem.C.

561{
562 return _problem_operators;
563}
std::vector< std::shared_ptr< Moose::MFEM::ProblemOperatorBase > > _problem_operators
Vector of MFEM problem operators executed in this problem.

Referenced by MFEMProblem::setProblemOperators().

◆ getRegularMaterialsWarehouse()

const MaterialWarehouse & FEProblemBase::getRegularMaterialsWarehouse ( ) const
inlineinherited

◆ getRenamedParam()

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

Retrieve a renamed parameter for the object.

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

Parameters
old_namethe old name for the parameter
new_namethe new name for the parameter

Definition at line 420 of file MooseBase.h.

421{
422 // Most important: accept new parameter
423 if (isParamSetByUser(new_name) && !isParamValid(old_name))
424 return getParam<T>(new_name);
425 // Second most: accept old parameter
426 if (isParamValid(old_name) && !isParamSetByUser(new_name))
427 return getParam<T>(old_name);
428 // Third most: accept default for new parameter
429 if (isParamValid(new_name) && !isParamValid(old_name))
430 return getParam<T>(new_name);
431 // Refuse: no default, no value passed
432 if (!isParamValid(old_name) && !isParamValid(new_name))
433 mooseError("parameter '" + new_name +
434 "' is being retrieved without being set.\nDid you misspell it?");
435 // Refuse: both old and new parameters set by user
436 else
437 mooseError("Parameter '" + new_name + "' may not be provided alongside former parameter '" +
438 old_name + "'");
439}
bool isParamValid(const std::string &name) const
Test if the supplied parameter is valid.
Definition MooseBase.h:199

◆ getReporterData() [1/2]

const ReporterData & FEProblemBase::getReporterData ( ) const
inlineinherited

Provides const access the ReporterData object.

NOTE: There is a private non-const version of this function that uses a key object only constructable by the correct interfaces. This was done by design to encourage the use of the Reporter and ReporterInterface classes.

Definition at line 1402 of file FEProblemBase.h.

1402{ return _reporter_data; }

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

◆ getReporterData() [2/2]

ReporterData & FEProblemBase::getReporterData ( ReporterData::WriteKey  )
inlineinherited

Provides non-const access the ReporterData object that is used to store reporter values.

see ReporterData.h

Definition at line 1409 of file FEProblemBase.h.

1409{ return _reporter_data; }

◆ getRestartableData()

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

Declare a piece of data as "restartable" and initialize it Similar to declareRestartableData but returns a const reference to the object.

Forwarded arguments are not allowed in this case because we assume that the object is restarted and we won't need different constructors to initialize it.

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

Parameters
data_nameThe name of the data (usually just use the same name as the member variable)

Definition at line 294 of file Restartable.h.

295{
296 return declareRestartableDataHelper<T>(data_name, nullptr).get();
297}

◆ getRestartableEquationSystems()

const RestartableEquationSystems & FEProblemBase::getRestartableEquationSystems ( ) const
inherited

Get the RestartableEquationSystems object.

Definition at line 6965 of file FEProblemBase.C.

6966{
6967 return _req.get();
6968}
const T & get() const
Get the restartable value.
Definition Restartable.h:58

Referenced by LinearFVGradientManager::checkRestartedGradientHistory().

◆ getRHSCoefficient()

Moose::MFEM::EigenRHSCoefficient MFEMEigenproblem::getRHSCoefficient ( )

Returns the coefficient used to scale the right-hand side of the eigenproblem equation.

Definition at line 55 of file MFEMEigenproblem.C.

56{
57 if (isParamSetByUser("rhs_matrix_coefficient"))
59 getParam<MFEMMatrixCoefficientName>("rhs_matrix_coefficient"));
61 getParam<MFEMScalarCoefficientName>("rhs_coefficient"));
62}
mfem::MatrixCoefficient & getMatrixCoefficient(const std::string &name)
Return scalar coefficient with the given name.
mfem::Coefficient & getScalarCoefficient(const std::string &name)
Return a scalar coefficient with the given name or, if that doesn't exist, try interpreting the name ...

◆ getSampler()

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

Definition at line 3154 of file FEProblemBase.C.

3155{
3156 std::vector<Sampler *> objs;
3157 theWarehouse()
3158 .query()
3159 .condition<AttribSystem>("Sampler")
3160 .condition<AttribThread>(tid)
3161 .condition<AttribName>(name)
3162 .queryInto(objs);
3163 if (objs.empty())
3164 {
3165 mooseAssert(getMooseApp().actionWarehouse().isTaskComplete("add_sampler"),
3166 "A Sampler getter was called before Samplers have been constructed. "
3167 "If you are attempting to access this object in the constructor of another object "
3168 "then make sure that the Sampler is constructed before the object using it.");
3169
3170 mooseError(
3171 "Unable to find Sampler with name '" + name +
3172 "', if you are attempting to access this object in the constructor of another object then "
3173 "make sure that the Sampler is constructed before the object using it.");
3174 }
3175 return *(objs[0]);
3176}

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

◆ getScalarVariable()

MooseVariableScalar & FEProblemBase::getScalarVariable ( const THREAD_ID  tid,
const std::string &  var_name 
)
overridevirtualinherited

Returns the scalar variable reference from whichever system contains it.

Implements SubProblem.

Definition at line 6941 of file FEProblemBase.C.

6942{
6943 for (auto & sys : _solver_systems)
6944 if (sys->hasScalarVariable(var_name))
6945 return sys->getScalarVariable(tid, var_name);
6946 if (_aux->hasScalarVariable(var_name))
6947 return _aux->getScalarVariable(tid, var_name);
6948
6949 mooseError("Unknown variable " + var_name);
6950}
virtual MooseVariableScalar & getScalarVariable(const THREAD_ID tid, const std::string &var_name) override
Returns the scalar variable reference from whichever system contains it.

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

◆ getSharedPtr() [1/2]

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

Get another shared pointer to this object that has the same ownership group.

Wrapper around shared_from_this().

Definition at line 70 of file MooseObject.C.

71{
72 try
73 {
74 return shared_from_this();
75 }
76 catch (std::bad_weak_ptr &)
77 {
78 mooseError(not_shared_error);
79 }
80}

Referenced by MFEMProblem::addImagComponentToBC(), MFEMProblem::addImagComponentToKernel(), MFEMProblem::addRealComponentToBC(), MFEMProblem::addRealComponentToKernel(), and WebServerControl::addServerAction().

◆ getSharedPtr() [2/2]

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

Definition at line 83 of file MooseObject.C.

84{
85 try
86 {
87 return shared_from_this();
88 }
89 catch (std::bad_weak_ptr &)
90 {
91 mooseError(not_shared_error);
92 }
93}

◆ getSolverSystem() [1/2]

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

◆ getSolverSystem() [2/2]

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

Get a constant reference to a solver system.

Parameters
sys_numThe number of the solver system

Definition at line 3908 of file FEProblemBase.h.

3909{
3910 mooseAssert(sys_num < _solver_systems.size(),
3911 "System number greater than the number of solver systems");
3912 return *_solver_systems[sys_num];
3913}

◆ getSolverSystemNames()

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

Definition at line 3070 of file FEProblemBase.h.

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

Referenced by ConsoleUtils::outputExecutionInformation().

◆ getStandardVariable()

MooseVariable & FEProblemBase::getStandardVariable ( const THREAD_ID  tid,
const std::string &  var_name 
)
overridevirtualinherited

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

Implements SubProblem.

Definition at line 6881 of file FEProblemBase.C.

6882{
6883 for (auto & sys : _solver_systems)
6884 if (sys->hasVariable(var_name))
6885 return sys->getFieldVariable<Real>(tid, var_name);
6886 if (_aux->hasVariable(var_name))
6887 return _aux->getFieldVariable<Real>(tid, var_name);
6888
6889 mooseError("Unknown variable " + var_name);
6890}

Referenced by CoupleableMooseVariableDependencyIntermediateInterface::coupledValueByName(), MOOSEQuantityToNEML2< T, state >::MOOSEQuantityToNEML2(), FEProblemBase::projectFunctionOnCustomRange(), LinearFVKernel::requestVariableCellGradient(), and ElementSubdomainModifierBase::storeOverriddenDofValues().

◆ getSteadyStateConvergenceName()

const ConvergenceName & FEProblemBase::getSteadyStateConvergenceName ( ) const
inherited

Gets the steady-state detection convergence object name.

Definition at line 10597 of file FEProblemBase.C.

10598{
10600 return _steady_state_convergence_name.value();
10601 else
10602 mooseError("The steady convergence name has not been set.");
10603}
std::optional< ConvergenceName > _steady_state_convergence_name
Steady-state detection convergence name.

Referenced by FEProblemBase::addDefaultSteadyStateConvergence(), TransientBase::convergedToSteadyState(), and TransientBase::init().

◆ getSystem()

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

Returns the equation system containing the variable provided.

Implements SubProblem.

Definition at line 6953 of file FEProblemBase.C.

6954{
6955 const auto [var_in_sys, sys_num] = determineSolverSystem(var_name);
6956 if (var_in_sys)
6957 return _solver_systems[sys_num]->system();
6958 else if (_aux->hasVariable(var_name) || _aux->hasScalarVariable(var_name))
6959 return _aux->system();
6960 else
6961 mooseError("Unable to find a system containing the variable " + var_name);
6962}

Referenced by FEProblemBase::addObjectParamsHelper(), MultiApp::appTransferVector(), FunctorChangeFunctorMaterialTempl< is_ad >::FunctorChangeFunctorMaterialTempl(), ElementSubdomainModifierBase::gatherPatchElements(), and ElementSubdomainModifierBase::storeOverriddenDofValues().

◆ getSystemBase() [1/3]

SystemBase & FEProblemBase::getSystemBase ( const std::string &  sys_name)
inherited

Get non-constant reference to a system in this problem.

Parameters
sys_nameThe name of the system

Definition at line 10315 of file FEProblemBase.C.

10316{
10317 if (std::find(_solver_sys_names.begin(), _solver_sys_names.end(), sys_name) !=
10318 _solver_sys_names.end())
10319 return getSystemBase(solverSysNum(sys_name));
10320 else if (sys_name == "aux0")
10321 return *_aux;
10322 else
10323 mooseError("System '" + sys_name + "' was requested from problem but does not exist.");
10324}
unsigned int solverSysNum(const SolverSystemName &solver_sys_name) const override

◆ getSystemBase() [2/3]

SystemBase & FEProblemBase::getSystemBase ( const unsigned int  sys_num)
virtualinherited

Get non-constant reference to a system in this problem.

Parameters
sys_numThe number of the system

Definition at line 10327 of file FEProblemBase.C.

10328{
10329 if (sys_num < _solver_systems.size())
10330 return *_solver_systems[sys_num];
10331
10332 return *_aux;
10333}

◆ getSystemBase() [3/3]

const SystemBase & FEProblemBase::getSystemBase ( const unsigned int  sys_num) const
virtualinherited

Get constant reference to a system in this problem.

Parameters
sys_numThe number of the system

Definition at line 10306 of file FEProblemBase.C.

10307{
10308 if (sys_num < _solver_systems.size())
10309 return *_solver_systems[sys_num];
10310
10311 return *_aux;
10312}

Referenced by FEProblemBase::addObjectParamsHelper(), PhysicsBase::copyVariablesFromMesh(), FEProblemBase::getSystemBase(), FEProblemBase::projectFunctionOnCustomRange(), and ElementSubdomainModifierBase::restoreOverriddenDofValues().

◆ getTimeFromStateArg()

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

Returns the time associated with the requested state.

Definition at line 7975 of file FEProblemBase.C.

7976{
7978 // If we are any iteration type other than time (e.g. nonlinear), then temporally we are still
7979 // in the present time
7980 return time();
7981
7982 switch (state.state)
7983 {
7984 case 0:
7985 return time();
7986
7987 case 1:
7988 return timeOld();
7989
7990 case 2:
7991 return timeOlder();
7992
7993 default:
7994 mooseError("Unhandled state ", state.state, " in FEProblemBase::getTimeFromStateArg");
7995 }
7996}
virtual Real & timeOld() const
virtual Real & time() const
virtual Real & timeOlder() const
The time two steps back.
SolutionIterationType iteration_type
The solution iteration type, e.g. time or nonlinear.
unsigned int state
The state.

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

◆ getTransfers() [1/2]

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

Get Transfers by ExecFlagType and direction.

Definition at line 6412 of file FEProblemBase.C.

6413{
6414 if (direction == MultiAppTransfer::TO_MULTIAPP)
6416 else if (direction == MultiAppTransfer::FROM_MULTIAPP)
6418 else
6420}

◆ getTransfers() [2/2]

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

Definition at line 6423 of file FEProblemBase.C.

6424{
6425 if (direction == MultiAppTransfer::TO_MULTIAPP)
6427 else if (direction == MultiAppTransfer::FROM_MULTIAPP)
6429 else
6431}

◆ getUOExecutionGroups()

void FEProblemBase::getUOExecutionGroups ( TheWarehouse::Query &  query,
std::set< int > &  execution_groups 
) const
privateinherited

Definition at line 5685 of file FEProblemBase.C.

5687{
5688 std::vector<UserObjectBase *> uos;
5689 query.queryIntoUnsorted(uos);
5690 for (const auto & uo : uos)
5691 execution_groups.insert(uo->getParam<int>("execution_order_group"));
5692}

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

◆ getUOQuery()

TheWarehouse::Query FEProblemBase::getUOQuery ( const std::string &  system,
const ExecFlagType &  type,
const Moose::AuxGroup &  group 
) const
privateinherited

Definition at line 5667 of file FEProblemBase.C.

5670{
5672 theWarehouse().query().condition<AttribSystem>(system).condition<AttribExecOns>(type);
5673
5674 if (group == Moose::PRE_IC)
5675 query.condition<AttribPreIC>(true);
5676 else if (group == Moose::PRE_AUX)
5677 query.condition<AttribPreAux>(type);
5678 else if (group == Moose::POST_AUX)
5679 query.condition<AttribPostAux>(type);
5680
5681 return query;
5682}
TODO: delete this later - it is a temporary hack for dealing with inter-system dependencies.
Definition Attributes.h:346
TODO: delete this later - it is a temporary hack for dealing with inter-system dependencies.
Definition Attributes.h:315
TODO: delete this later - it is a temporary hack for dealing with inter-system dependencies.
Definition Attributes.h:296

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

◆ getUserObject()

template<class T >
T & FEProblemBase::getUserObject ( const std::string &  name,
unsigned int  tid = 0 
) const
inlineinherited

Get the user object by its name.

Parameters
nameThe name of the user object being retrieved
Returns
Reference to the user object

Definition at line 1421 of file FEProblemBase.h.

1422 {
1423 std::vector<T *> objs;
1424 theWarehouse()
1425 .query()
1426 .condition<AttribSystem>("UserObject")
1427 .condition<AttribThread>(tid)
1428 .condition<AttribName>(name)
1429 .queryInto(objs);
1430 if (objs.empty())
1431 mooseError("Unable to find user object with name '" + name + "'");
1432 return *(objs[0]);
1433 }

Referenced by ChangeOverFixedPointPostprocessor::ChangeOverFixedPointPostprocessor(), ChangeOverTimePostprocessor::ChangeOverTimePostprocessor(), MultiAppTransfer::checkParentAppUserObjectExecuteOn(), ExtraIDIntegralReporter::ExtraIDIntegralReporter(), ReporterTransferInterface::hideVariableHelper(), EigenExecutionerBase::init(), EigenProblemSolve::initialSetup(), IntegralPreservingFunctionIC::initialSetup(), ElementSubdomainModifierBase::initialSetup(), EigenExecutionerBase::inversePowerIteration(), and TorchFEInterpolation::syncWithMainThread().

◆ getUserObjectBase()

const UserObject & FEProblemBase::getUserObjectBase ( const std::string &  name,
const THREAD_ID  tid = 0 
) const
inherited

Get the user object by its name.

Parameters
nameThe name of the user object being retrieved
tidThe thread of the user object (defaults to 0)
Returns
Const reference to the user object

Definition at line 5071 of file FEProblemBase.C.

5072{
5073 std::vector<UserObject *> objs;
5074 theWarehouse()
5075 .query()
5076 .condition<AttribSystem>("UserObject")
5077 .condition<AttribThread>(tid)
5078 .condition<AttribName>(name)
5079 .queryInto(objs);
5080 if (objs.empty())
5081 {
5082 mooseAssert(getMooseApp().actionWarehouse().isTaskComplete("add_user_object"),
5083 "A UserObject getter was called before UserObjects have been constructed. The "
5084 "requested UserObject '" +
5085 name + "' may exist in the input file, but UserObjects are not available yet.");
5086
5087 mooseError("Unable to find user object with name '" + name + "'");
5088 }
5089 mooseAssert(objs.size() == 1, "Should only find one UO");
5090 return *(objs[0]);
5091}

Referenced by MultiAppConservativeTransfer::adjustTransferredSolution(), MultiAppConservativeTransfer::adjustTransferredSolutionNearestPoint(), MultiApp::appUserObjectBase(), EigenProblem::checkProblemIntegrity(), FEProblemBase::checkUserObjectNameCollision(), UserObjectInterface::getUserObjectFromFEProblem(), MultiAppCloneReporterTransfer::initialSetup(), MultiAppConservativeTransfer::initialSetup(), and Terminator::initialSetup().

◆ getUserObjectJacobianVariables()

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

Definition at line 356 of file FEProblemBase.h.

357 {
358 return _uo_jacobian_moose_vars[tid];
359 }

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

◆ getVariable() [1/3]

virtual MooseVariableFieldBase & SubProblem::getVariable ( const THREAD_ID  tid,
const std::string &  var_name,
Moose::VarKindType  expected_var_type = Moose::VarKindType::VAR_ANY,
Moose::VarFieldType  expected_var_field_type = Moose::VarFieldType::VAR_FIELD_ANY 
)
inlinevirtualinherited

Reimplemented from SubProblem.

Definition at line 282 of file SubProblem.h.

286 {
287 return const_cast<MooseVariableFieldBase &>(const_cast<const SubProblem *>(this)->getVariable(
288 tid, var_name, expected_var_type, expected_var_field_type));
289 }

◆ getVariable() [2/3]

const MooseVariableFieldBase & FEProblemBase::getVariable ( const THREAD_ID  tid,
const std::string &  var_name,
Moose::VarKindType  expected_var_type = Moose::VarKindType::VAR_ANY,
Moose::VarFieldType  expected_var_field_type = Moose::VarFieldType::VAR_FIELD_ANY 
) const
overridevirtualinherited

Returns the variable reference for requested variable which must be of the expected_var_type (Nonlinear vs.

Auxiliary) and expected_var_field_type (standard, scalar, vector). The default values of VAR_ANY and VAR_FIELD_ANY should be used when "any" type of variable is acceptable. Throws an error if the variable in question is not in the expected System or of the expected type.

Implements SubProblem.

Definition at line 6871 of file FEProblemBase.C.

6875{
6876 return getVariableHelper(
6877 tid, var_name, expected_var_type, expected_var_field_type, _solver_systems, *_aux);
6878}
MooseVariableFieldBase & getVariableHelper(const THREAD_ID tid, const std::string &var_name, Moose::VarKindType expected_var_type, Moose::VarFieldType expected_var_field_type, const std::vector< T > &nls, const SystemBase &aux) const
Helper function called by getVariable that handles the logic for checking whether Variables of the re...

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

◆ getVariable() [3/3]

virtual const MooseVariableFieldBase & SubProblem::getVariable ( const THREAD_ID  tid,
const std::string &  var_name,
Moose::VarKindType  expected_var_type = Moose::VarKindType::VAR_ANY,
Moose::VarFieldType  expected_var_field_type = Moose::VarFieldType::VAR_FIELD_ANY 
) const
virtualinherited

Returns the variable reference for requested variable which must be of the expected_var_type (Nonlinear vs.

Auxiliary) and expected_var_field_type (standard, scalar, vector). The default values of VAR_ANY and VAR_FIELD_ANY should be used when "any" type of variable is acceptable. Throws an error if the variable in question is not in the expected System or of the expected type.

Implements SubProblem.

◆ getVariableHelper() [1/2]

template<typename T >
MooseVariableFieldBase & SubProblem::getVariableHelper ( const THREAD_ID  tid,
const std::string &  var_name,
Moose::VarKindType  expected_var_type,
Moose::VarFieldType  expected_var_field_type,
const std::vector< T > &  nls,
const SystemBase &  aux 
) const
protectedinherited

Helper function called by getVariable that handles the logic for checking whether Variables of the requested type are available.

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

◆ getVariableHelper() [2/2]

template<typename T >
MooseVariableFEBase & SubProblem::getVariableHelper ( const THREAD_ID  tid,
const std::string &  var_name,
Moose::VarKindType  expected_var_type,
Moose::VarFieldType  expected_var_field_type,
const std::vector< T > &  systems,
const SystemBase &  aux 
) const
inherited

Definition at line 810 of file SubProblem.C.

816{
817 // Eventual return value
818 MooseVariableFEBase * var = nullptr;
819
820 const auto [var_in_sys, sys_num] = determineSolverSystem(var_name);
821
822 // First check that the variable is found on the expected system.
823 if (expected_var_type == Moose::VarKindType::VAR_ANY)
824 {
825 if (var_in_sys)
826 var = &(systems[sys_num]->getVariable(tid, var_name));
827 else if (aux.hasVariable(var_name))
828 var = &(aux.getVariable(tid, var_name));
829 else
830 mooseError("Unknown variable " + var_name);
831 }
832 else if (expected_var_type == Moose::VarKindType::VAR_SOLVER && var_in_sys &&
833 systems[sys_num]->hasVariable(var_name))
834 var = &(systems[sys_num]->getVariable(tid, var_name));
835 else if (expected_var_type == Moose::VarKindType::VAR_AUXILIARY && aux.hasVariable(var_name))
836 var = &(aux.getVariable(tid, var_name));
837 else
838 {
839 std::string expected_var_type_string =
840 (expected_var_type == Moose::VarKindType::VAR_SOLVER ? "nonlinear" : "auxiliary");
841 mooseError("No ",
842 expected_var_type_string,
843 " variable named ",
844 var_name,
845 " found. "
846 "Did you specify an auxiliary variable when you meant to specify a nonlinear "
847 "variable (or vice-versa)?");
848 }
849
850 // Now make sure the var found has the expected field type.
851 if ((expected_var_field_type == Moose::VarFieldType::VAR_FIELD_ANY) ||
852 (expected_var_field_type == var->fieldType()))
853 return *var;
854 else
855 {
856 std::string expected_var_field_type_string =
857 MooseUtils::toLower(Moose::stringify(expected_var_field_type));
858 std::string var_field_type_string = MooseUtils::toLower(Moose::stringify(var->fieldType()));
859
860 mooseError("No ",
861 expected_var_field_type_string,
862 " variable named ",
863 var_name,
864 " found. "
865 "Did you specify a ",
866 var_field_type_string,
867 " variable when you meant to specify a ",
868 expected_var_field_type_string,
869 " variable?");
870 }
871}
virtual Moose::VarFieldType fieldType() const =0
Field type of this variable.
virtual std::pair< bool, unsigned int > determineSolverSystem(const std::string &var_name, bool error_if_not_found=false) const =0
virtual bool hasVariable(const std::string &var_name) const =0
Whether or not this problem has the variable.
std::string toLower(std::string name)
Convert supplied string to lower case.
@ VAR_SOLVER
Definition MooseTypes.h:774

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

10016{
10017 std::vector<VariableName> names;
10018
10019 for (auto & sys : _solver_systems)
10020 {
10021 const std::vector<VariableName> & var_names = sys->getVariableNames();
10022 names.insert(names.end(), var_names.begin(), var_names.end());
10023 }
10024
10025 const std::vector<VariableName> & aux_var_names = _aux->getVariableNames();
10026 names.insert(names.end(), aux_var_names.begin(), aux_var_names.end());
10027
10028 return names;
10029}

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

◆ getVectorPostprocessorObjectByName()

const VectorPostprocessor & FEProblemBase::getVectorPostprocessorObjectByName ( const std::string &  object_name,
const THREAD_ID  tid = 0 
) const
inherited

Return the VPP object given the name.

Parameters
object_nameThe name of the VPP object
Returns
Desired VPP object

This is used by various output objects as well as the scatter value handling.

See also
CSV.C, XMLOutput.C, VectorPostprocessorInterface.C

Definition at line 5303 of file FEProblemBase.C.

5305{
5306 std::vector<VectorPostprocessor *> objs;
5307 theWarehouse()
5308 .query()
5310 .condition<AttribThread>(tid)
5311 .condition<AttribName>(object_name)
5312 .queryInto(objs);
5313
5314 if (objs.empty())
5315 {
5316 mooseAssert(
5317 getMooseApp().actionWarehouse().isTaskComplete("add_vector_postprocessor"),
5318 "A VectorPostprocessor getter was called before VectorPostprocessors have been "
5319 "constructed. The requested VectorPostprocessor '" +
5320 object_name +
5321 "' may exist in the input file, but VectorPostprocessors are not available yet.");
5322
5323 mooseError("Unable to find VectorPostprocessor with name '", object_name, "'");
5324 }
5325 mooseAssert(objs.size() == 1,
5326 "We shouldn't find more than one vector postprocessor object for a given name");
5327 return *(objs[0]);
5328}
@ VectorPostprocessor

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

◆ getVectorPostprocessorValueByName()

const VectorPostprocessorValue & FEProblemBase::getVectorPostprocessorValueByName ( const std::string &  object_name,
const std::string &  vector_name,
std::size_t  t_index = 0 
) const
inherited

Get a read-only reference to the vector value associated with the VectorPostprocessor.

Parameters
object_nameThe name of the VPP object.
vector_nameThe namve of the decalred vector within the object.
Returns
Referent to the vector of data.

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

Definition at line 5284 of file FEProblemBase.C.

5287{
5289 VectorPostprocessorReporterName(object_name, vector_name), t_index);
5290}
std::vector< Real > VectorPostprocessorValue
Definition MooseTypes.h:231
A ReporterName that represents a VectorPostprocessor.

Referenced by HistogramVectorPostprocessor::execute().

◆ getVectorTag()

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

◆ getVectorTagID()

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

Get a TagID from a TagName.

Reimplemented in DisplacedProblem.

Definition at line 195 of file SubProblem.C.

196{
197 mooseAssert(verifyVectorTags(), "Vector tag storage invalid");
198
199 const auto tag_name_upper = MooseUtils::toUpper(tag_name);
200 const auto search = _vector_tags_name_map.find(tag_name_upper);
201 if (search != _vector_tags_name_map.end())
202 return search->second;
203
204 std::string message =
205 tag_name_upper == "TIME"
206 ? ".\n\nThis may occur if "
207 "you have a TimeKernel in your problem but did not specify a transient executioner."
208 : "";
209 mooseError("Vector tag '", tag_name_upper, "' does not exist", message);
210}

Referenced by Coupleable::coupledVectorTagArrayGradient(), Coupleable::coupledVectorTagArrayGradients(), Coupleable::coupledVectorTagArrayValues(), Coupleable::coupledVectorTagDofValues(), Coupleable::coupledVectorTagGradient(), Coupleable::coupledVectorTagGradients(), ScalarCoupleable::coupledVectorTagScalarValue(), Coupleable::coupledVectorTagValues(), MultiAppVariableValueSamplePostprocessorTransfer::execute(), DisplacedProblem::getVectorTagID(), MooseVariableDataBase< OutputType >::MooseVariableDataBase(), ReferenceResidualConvergence::ReferenceResidualConvergence(), SolverSystem::setSolution(), TaggingInterface::TaggingInterface(), TagVectorAux::TagVectorAux(), MultiAppDofCopyTransfer::transfer(), TaggingInterface::useVectorTag(), Coupleable::vectorTagDofValueHelper(), and Coupleable::vectorTagValueHelper().

◆ getVectorTags() [1/2]

const std::vector< VectorTag > & SubProblem::getVectorTags ( const Moose::VectorTagType  type = Moose::VECTOR_TAG_ANY) const
virtualinherited

Return all vector tags, where a tag is represented by a map from name to ID.

Can optionally be limited to a vector tag type.

Reimplemented in DisplacedProblem.

Definition at line 176 of file SubProblem.C.

177{
178 mooseAssert(verifyVectorTags(), "Vector tag storage invalid");
179
181 return _vector_tags;
182 else
183 return _typed_vector_tags[type];
184}

◆ getVectorTags() [2/2]

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

◆ getVectorVariable()

VectorMooseVariable & FEProblemBase::getVectorVariable ( const THREAD_ID  tid,
const std::string &  var_name 
)
overridevirtualinherited

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

Implements SubProblem.

Definition at line 6905 of file FEProblemBase.C.

6906{
6907 for (auto & sys : _solver_systems)
6908 if (sys->hasVariable(var_name))
6909 return sys->getFieldVariable<RealVectorValue>(tid, var_name);
6910 if (_aux->hasVariable(var_name))
6911 return _aux->getFieldVariable<RealVectorValue>(tid, var_name);
6912
6913 mooseError("Unknown variable " + var_name);
6914}
VectorValue< Real > RealVectorValue
Definition SubProblem.h:34

◆ getXFEM()

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

Get a pointer to the XFEM controller object.

Definition at line 2222 of file FEProblemBase.h.

2222{ 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 683 of file SubProblem.h.

683{ return _ghosted_elems; }

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

◆ ghostGhostedBoundaries()

void FEProblemBase::ghostGhostedBoundaries ( )
overridevirtualinherited

Causes the boundaries added using addGhostedBoundary to actually be ghosted.

Implements SubProblem.

Definition at line 2526 of file FEProblemBase.C.

2527{
2528 TIME_SECTION("ghostGhostedBoundaries", 3, "Ghosting Ghosted Boundaries");
2529
2531
2534}
void ghostGhostedBoundaries()
Actually do the ghosting of boundaries that need to be ghosted to this processor.
Definition MooseMesh.C:3412

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

◆ handleException()

void FEProblemBase::handleException ( const std::string &  calling_method)
privateinherited

Handle exceptions.

Note that the result of this call will be a thrown MooseException. The caller of this method must determine how to handle the thrown exception

Definition at line 8428 of file FEProblemBase.C.

8429{
8430 translateCaughtException(calling_method);
8432}
void translateCaughtException(const std::string &calling_method)
Classify the exception currently being handled and register its message with setException(),...

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

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

453{
455}
std::vector< unsigned int > _has_active_elemental_moose_variables
Whether or not there is currently a list of active elemental moose variables.

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

◆ hasActiveMaterialProperties()

bool FEProblemBase::hasActiveMaterialProperties ( const THREAD_ID  tid) const
inherited

Method to check whether or not a list of active material roperties has been set.

This method is called by reinitMaterials to determine whether Material computeProperties methods need to be called. If the return is False, this check prevents unnecessary material property computation

Parameters
tidThe thread id
Returns
True if there has been a list of active material properties set, False otherwise

Definition at line 7079 of file FEProblemBase.C.

7080{
7082}

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

◆ hasAuxiliaryVariable()

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

◆ hasBase()

bool MooseBase::hasBase ( ) const
inlineinherited
Returns
Whether or not this object has a registered base (set via InputParameters::registerBase())

Definition at line 142 of file MooseBase.h.

142{ return _pars.hasBase(); }
bool hasBase() const

◆ hasBlockMaterialProperty()

bool SubProblem::hasBlockMaterialProperty ( SubdomainID  block_id,
const std::string &  prop_name 
)
virtualinherited

Check if a material property is defined on a block.

Definition at line 503 of file SubProblem.C.

504{
505 auto it = _map_block_material_props.find(bid);
506 if (it == _map_block_material_props.end())
507 return false;
508
509 if (it->second.count(prop_name) > 0)
510 return true;
511 else
512 return false;
513}

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

563{
564 auto it = _map_boundary_material_props.find(bid);
565 if (it == _map_boundary_material_props.end())
566 return false;
567
568 if (it->second.count(prop_name) > 0)
569 return true;
570 else
571 return false;
572}

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

3037{
3038 return _convergences.hasActiveObject(name, tid);
3039}
bool hasActiveObject(const std::string &name, THREAD_ID tid=0) const
Convenience functions for checking/getting specific objects.

Referenced by ParsedConvergence::initializeSymbols().

◆ hasDampers()

bool FEProblemBase::hasDampers ( )
inlineinherited

Whether or not this system has dampers.

Definition at line 1676 of file FEProblemBase.h.

1676{ return _has_dampers; }

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

◆ hasDistribution()

bool FEProblemBase::hasDistribution ( const std::string &  name) const
virtualinherited

Definition at line 3112 of file FEProblemBase.C.

3113{
3114 std::vector<Distribution *> objs;
3115 theWarehouse()
3116 .query()
3117 .condition<AttribSystem>("Distribution")
3118 .condition<AttribName>(name)
3119 .queryInto(objs);
3120 return !objs.empty();
3121}

◆ hasException()

virtual bool FEProblemBase::hasException ( )
inlinevirtualinherited

Whether or not an exception has occurred.

Definition at line 535 of file FEProblemBase.h.

535{ return _has_exception; }

Referenced by NonlinearSystem::converged(), ThreadedNodeLoop< RangeType, IteratorType >::keepGoing(), and ThreadedElementLoop< RangeType >::keepGoing().

◆ hasFunction()

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

◆ hasFunctor()

bool SubProblem::hasFunctor ( const std::string &  name,
const THREAD_ID  tid 
) const
inherited

checks whether we have a functor corresponding to name on the thread id tid

Definition at line 1275 of file SubProblem.C.

1276{
1277 mooseAssert(tid < _functors.size(), "Too large a thread ID");
1278 auto & functors = _functors[tid];
1279 return (functors.find("wraps_" + name) != functors.end());
1280}

Referenced by DiffusionCG::addFEKernels(), and FunctorInterface::isFunctor().

◆ hasFunctorWithType()

template<typename T >
bool SubProblem::hasFunctorWithType ( const std::string &  name,
const THREAD_ID  tid 
) const
inherited

checks whether we have a functor of type T corresponding to name on the thread id tid

Definition at line 1316 of file SubProblem.h.

1317{
1318 mooseAssert(tid < _functors.size(), "Too large a thread ID");
1319 auto & functors = _functors[tid];
1320
1321 const auto & it = functors.find("wraps_" + name);
1322 constexpr bool requested_functor_is_ad =
1323 !std::is_same<T, typename MetaPhysicL::RawType<T>::value_type>::value;
1324
1325 if (it == functors.end())
1326 return false;
1327 else
1328 return dynamic_cast<Moose::Functor<T> *>(
1329 requested_functor_is_ad ? std::get<2>(it->second).get() : std::get<1>(it->second).get());
1330}

◆ hasFVGradientMethod()

bool FEProblemBase::hasFVGradientMethod ( const GradientMethodName &  name) const
inherited

Check if an FV gradient method with a given name exists.

Definition at line 5147 of file FEProblemBase.C.

5148{
5149 std::vector<FVGradientMethod *> methods;
5150 theWarehouse()
5151 .query()
5152 .condition<AttribSystem>("FVGradientMethod")
5153 .condition<AttribThread>(0)
5154 .condition<AttribName>(name)
5155 .queryInto(methods);
5156 return !methods.empty();
5157}

◆ hasFVInterpolationMethod()

bool FEProblemBase::hasFVInterpolationMethod ( const InterpolationMethodName &  name) const
inherited

Check if an FV interpolation method with a given name exists.

Definition at line 5221 of file FEProblemBase.C.

5222{
5223 std::vector<FVInterpolationMethod *> methods;
5224 theWarehouse()
5225 .query()
5226 .condition<AttribSystem>("FVInterpolationMethod")
5227 .condition<AttribThread>(0)
5228 .condition<AttribName>(name)
5229 .queryInto(methods);
5230 return !methods.empty();
5231}

Referenced by FVInterpolationMethodInterface::hasFVInterpolationMethod().

◆ hasInitialAdaptivity() [1/2]

bool FEProblemBase::hasInitialAdaptivity ( ) const
inlineinherited

Return a Boolean indicating whether initial AMR is turned on.

Definition at line 2210 of file FEProblemBase.h.

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

◆ hasInitialAdaptivity() [2/2]

bool FEProblemBase::hasInitialAdaptivity ( ) const
inlineinherited

Return a Boolean indicating whether initial AMR is turned on.

Definition at line 2215 of file FEProblemBase.h.

2215{ return false; }

◆ hasJacobian()

bool FEProblemBase::hasJacobian ( ) const
inherited

Returns _has_jacobian.

Definition at line 10230 of file FEProblemBase.C.

10231{
10232 return _has_jacobian;
10233}

Referenced by DisplacedProblem::prepare().

◆ hasKokkosFunction()

virtual bool FEProblemBase::hasKokkosFunction ( const std::string &  name) const
virtualinherited

Get whether a Kokkos function exists.

Parameters
nameThe Kokkos function name
Returns
Whether a Kokkos function exists

Referenced by FEProblemBase::getKokkosFunction().

◆ hasKokkosObjects()

bool FEProblemBase::hasKokkosObjects ( ) const
inlineinherited
Returns
whether any Kokkos object was added in the problem

Definition at line 3094 of file FEProblemBase.h.

3094{ return _has_kokkos_objects; }
bool _has_kokkos_objects
Whether we have any Kokkos objects.

Referenced by MooseMesh::update().

◆ hasKokkosResidualObjects()

bool FEProblemBase::hasKokkosResidualObjects ( ) const
inlineinherited

◆ hasKokkosUserObject()

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

Check if there if a Kokkos user object of given name.

Parameters
nameThe name of the Kokkos user object being checked for
Returns
true if the Kokkos user object exists, false otherwise

Referenced by FEProblemBase::checkUserObjectNameCollision(), UserObjectInterface::getUserObjectFromFEProblem(), and UserObjectInterface::hasUserObjectByName().

◆ hasLinearConvergenceObjects()

bool FEProblemBase::hasLinearConvergenceObjects ( ) const
inherited

Whether we have linear convergence objects.

Definition at line 10564 of file FEProblemBase.C.

10565{
10566 // If false,this means we have not set one, not that we are querying this too early
10567 // TODO: once there is a default linear CV object, error on the 'not set' case
10568 return _linear_convergence_names.has_value();
10569}

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

◆ hasLinearVariable()

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

Whether or not this problem has this linear variable.

Definition at line 794 of file SubProblem.C.

795{
796 for (const auto i : make_range(numLinearSystems()))
797 if (systemBaseLinear(i).hasVariable(var_name))
798 return true;
799 return false;
800}
virtual std::size_t numLinearSystems() const =0
virtual const SystemBase & systemBaseLinear(const unsigned int sys_num) const =0
Return the linear system object as a base class reference given the system number.

Referenced by SubProblem::getFunctor().

◆ hasMFEMObject()

bool MFEMProblem::hasMFEMObject ( const std::string &  system,
const std::string &  name 
) const
inherited

Determine whether an MFEM object with the supplied system and name exists.

Definition at line 926 of file MFEMProblem.C.

927{
928 std::vector<MooseObject *> objs;
930 .query()
931 .condition<AttribSystem>(system)
932 .condition<AttribThread>(0)
933 .condition<AttribName>(name)
934 .queryInto(objs);
935 return !objs.empty();
936}

Referenced by MFEMProblem::addMFEMFESpaceFromMOOSEVariable().

◆ hasMortarCoupling()

virtual bool FEProblemBase::hasMortarCoupling ( ) const
inlinevirtualinherited

Whether the simulation has mortar coupling.

Definition at line 2783 of file FEProblemBase.h.

2783{ return _has_mortar; }

◆ hasMultiApp()

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

Definition at line 6282 of file FEProblemBase.C.

6283{
6284 return _multi_apps.hasActiveObject(multi_app_name);
6285}

Referenced by FEProblemBase::getMultiApp().

◆ hasMultiApps() [1/2]

bool FEProblemBase::hasMultiApps ( ) const
inlineinherited

◆ hasMultiApps() [2/2]

bool FEProblemBase::hasMultiApps ( ExecFlagType  type) const
inherited

Definition at line 6276 of file FEProblemBase.C.

6277{
6279}

◆ hasNeighborCoupling()

virtual bool FEProblemBase::hasNeighborCoupling ( ) const
inlinevirtualinherited

Whether the simulation has neighbor coupling.

Definition at line 2778 of file FEProblemBase.h.

◆ hasNonlocalCoupling()

virtual bool FEProblemBase::hasNonlocalCoupling ( ) const
inlineoverridevirtualinherited

Whether the simulation has active nonlocal coupling which should be accounted for in the Jacobian.

For this to return true, there must be at least one active nonlocal kernel or boundary condition

Implements SubProblem.

Definition at line 3049 of file FEProblemBase.h.

3049{ return _has_nonlocal_coupling; }

Referenced by DisplacedProblem::hasNonlocalCoupling().

◆ hasPostprocessor()

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

Deprecated.

Use hasPostprocessorValueByName

Definition at line 5276 of file FEProblemBase.C.

5277{
5278 mooseDeprecated("FEProblemBase::hasPostprocssor is being removed; use "
5279 "hasPostprocessorValueByName instead.");
5281}
bool hasPostprocessorValueByName(const PostprocessorName &name) const
Whether or not a Postprocessor value exists by a given name.

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

◆ hasPostprocessorValueByName()

bool FEProblemBase::hasPostprocessorValueByName ( const PostprocessorName &  name) const
inherited

Whether or not a Postprocessor value exists by a given name.

Parameters
nameThe name of the Postprocessor
Returns
True if a Postprocessor value exists

Note: You should prioritize the use of PostprocessorInterface::hasPostprocessor and PostprocessorInterface::hasPostprocessorByName over this method when possible.

Definition at line 5234 of file FEProblemBase.C.

5235{
5237}
bool hasReporterValue(const ReporterName &reporter_name) const
Return True if a Reporter value with the given type and name have been created.

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

◆ hasScalarVariable()

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

Returns a Boolean indicating whether any system contains a variable with the name provided.

Implements SubProblem.

Definition at line 6929 of file FEProblemBase.C.

6930{
6931 for (auto & sys : _solver_systems)
6932 if (sys->hasScalarVariable(var_name))
6933 return true;
6934 if (_aux->hasScalarVariable(var_name))
6935 return true;
6936
6937 return false;
6938}

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

◆ hasSetMultiAppFixedPointConvergenceName()

bool FEProblemBase::hasSetMultiAppFixedPointConvergenceName ( ) const
inlineinherited

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

Definition at line 793 of file FEProblemBase.h.

794 {
796 }

◆ hasSetSteadyStateConvergenceName()

bool FEProblemBase::hasSetSteadyStateConvergenceName ( ) const
inlineinherited

Returns true if the problem has set the steady-state detection convergence name.

Definition at line 798 of file FEProblemBase.h.

799 {
800 return _steady_state_convergence_name.has_value();
801 }

◆ hasSolutionState()

bool FEProblemBase::hasSolutionState ( unsigned int  state,
Moose::SolutionIterationType  iteration_type 
) const
inherited

Whether we need up to old (1) or older (2) solution states for a given type of iteration.

Parameters
oldest_neededoldest solution state needed
iteration_typethe type of iteration for which old/older states are needed

Definition at line 892 of file FEProblemBase.C.

894{
895 bool has_solution_state = false;
896 for (auto & sys : _solver_systems)
897 has_solution_state |= sys->hasSolutionState(state, iteration_type);
898 has_solution_state |= _aux->hasSolutionState(state, iteration_type);
899 return has_solution_state;
900}
bool hasSolutionState(unsigned int state, Moose::SolutionIterationType iteration_type) const
Whether we need up to old (1) or older (2) solution states for a given type of iteration.

◆ hasSolverVariable()

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

Definition at line 6861 of file FEProblemBase.C.

6862{
6863 for (auto & sys : _solver_systems)
6864 if (sys->hasVariable(var_name))
6865 return true;
6866
6867 return false;
6868}

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

◆ hasTimeIntegrator()

bool FEProblemBase::hasTimeIntegrator ( ) const
inlineinherited

Returns whether or not this Problem has a TimeIntegrator.

Definition at line 2507 of file FEProblemBase.h.

2507{ return _has_time_integrator; }

Referenced by TransientBase::setupTimeIntegrator().

◆ hasUOAuxStateCheck()

bool FEProblemBase::hasUOAuxStateCheck ( ) const
inlineinherited

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

Definition at line 221 of file FEProblemBase.h.

221{ 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 5109 of file FEProblemBase.C.

5110{
5111 std::vector<UserObject *> objs;
5112 theWarehouse()
5113 .query()
5114 .condition<AttribSystem>("UserObject")
5115 .condition<AttribThread>(0)
5116 .condition<AttribName>(name)
5117 .queryInto(objs);
5118 return !objs.empty();
5119}

Referenced by FEProblemBase::checkUserObjectNameCollision(), DistributedPositions::DistributedPositions(), MultiAppGeneralFieldFunctorTransfer::execute(), UserObjectInterface::getUserObjectFromFEProblem(), UserObjectInterface::hasUserObjectByName(), ReporterTransferInterface::hideVariableHelper(), ParsedDownSelectionPositions::initialize(), and TransformedPositions::TransformedPositions().

◆ hasVariable()

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

◆ haveADObjects() [1/3]

bool SubProblem::haveADObjects ( ) const
inlineinherited

Method for reading wehther we have any ad objects.

Definition at line 782 of file SubProblem.h.

782{ return _have_ad_objects; }
bool _have_ad_objects
AD flag indicating whether any AD objects have been added.

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

◆ haveADObjects() [2/3]

virtual void SubProblem::haveADObjects ( bool  have_ad_objects)
inlinevirtualinherited

Method for setting whether we have any ad objects.

Reimplemented from SubProblem.

Definition at line 778 of file SubProblem.h.

778{ _have_ad_objects = have_ad_objects; }

◆ haveADObjects() [3/3]

void FEProblemBase::haveADObjects ( bool  have_ad_objects)
overridevirtualinherited

Method for setting whether we have any ad objects.

Reimplemented from SubProblem.

Definition at line 10298 of file FEProblemBase.C.

10299{
10300 _have_ad_objects = have_ad_objects;
10302 _displaced_problem->SubProblem::haveADObjects(have_ad_objects);
10303}

◆ haveDisplaced()

bool FEProblemBase::haveDisplaced ( ) const
inlinefinaloverridevirtualinherited

Whether we have a displaced problem in our simulation.

Implements SubProblem.

Definition at line 2883 of file FEProblemBase.h.

2883{ return _displaced_problem.get(); }

◆ haveFV()

virtual bool FEProblemBase::haveFV ( ) const
inlineoverridevirtualinherited

◆ haveXFEM()

bool FEProblemBase::haveXFEM ( )
inlineinherited

Find out whether the current analysis is using XFEM.

Definition at line 2225 of file FEProblemBase.h.

2225{ return _xfem != nullptr; }

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

◆ hRefine()

bool MFEMProblem::hRefine ( )
inlineinherited

If AMR is enabled, request (and perform if needed) h-refinement.

Definition at line 379 of file MFEMProblem.h.

379{ return _problem_data.refiner && _problem_data.refiner->hRefine(); }

Referenced by MFEMProblemSolve::solve().

◆ identifyVariableGroupsInNL()

bool FEProblemBase::identifyVariableGroupsInNL ( ) const
inlineinherited

Whether to identify variable groups in nonlinear systems.

This affects dof ordering

Definition at line 3054 of file FEProblemBase.h.

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

Referenced by NonlinearSystemBase::NonlinearSystemBase().

◆ ignoreZerosInJacobian()

bool FEProblemBase::ignoreZerosInJacobian ( ) const
inlineinherited

Will return true if zeros in the Jacobian are to be dropped from the sparsity pattern.

Note that this can make preserving the matrix sparsity pattern impossible.

Definition at line 2479 of file FEProblemBase.h.

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

Referenced by NonlinearSystemBase::constraintJacobians(), and NonlinearSystemBase::setMatrixOptions().

◆ immediatelyPrintInvalidSolution()

bool FEProblemBase::immediatelyPrintInvalidSolution ( ) const
inlineinherited

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

Definition at line 2504 of file FEProblemBase.h.

const bool & _immediately_print_invalid_solution

Referenced by SolutionInvalidInterface::flagInvalidSolutionInternal().

◆ incrementMultiAppTStep()

void FEProblemBase::incrementMultiAppTStep ( ExecFlagType  type)
inherited

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

Definition at line 6680 of file FEProblemBase.C.

6681{
6682 const auto & multi_apps = _multi_apps[type].getActiveObjects();
6683
6684 if (multi_apps.size())
6685 for (const auto & multi_app : multi_apps)
6686 multi_app->incrementTStep(_time);
6687}

Referenced by TransientBase::incrementStepOrReject().

◆ init()

void FEProblemBase::init ( )
overridevirtualinherited

Implements Problem.

Reimplemented in EigenProblem, and FEProblem.

Definition at line 7359 of file FEProblemBase.C.

7360{
7361 if (_initialized)
7362 return;
7363
7364 TIME_SECTION("init", 2, "Initializing");
7365
7366 // call executioner's preProblemInit so that it can do some setups before problem init
7368
7369 // If we have AD and we are doing global AD indexing, then we should by default set the matrix
7370 // coupling to full. If the user has told us to trust their coupling matrix, then this call will
7371 // not do anything
7374
7375 for (const auto i : index_range(_nl))
7376 {
7377 auto & nl = _nl[i];
7378 auto & cm = _cm[i];
7379
7380 unsigned int n_vars = nl->nVariables();
7381 {
7382 TIME_SECTION("fillCouplingMatrix", 3, "Filling Coupling Matrix");
7383
7384 switch (_coupling)
7385 {
7387 cm = std::make_unique<CouplingMatrix>(n_vars);
7388 for (unsigned int i = 0; i < n_vars; i++)
7389 (*cm)(i, i) = 1;
7390 break;
7391
7392 // for full jacobian
7394 cm = std::make_unique<CouplingMatrix>(n_vars);
7395 for (unsigned int i = 0; i < n_vars; i++)
7396 for (unsigned int j = 0; j < n_vars; j++)
7397 (*cm)(i, j) = 1;
7398 break;
7399
7401 // do nothing, _cm was already set through couplingMatrix() call
7402 break;
7403 }
7404 }
7405
7406 nl->dofMap()._dof_coupling = cm.get();
7407
7408 // If there are no variables, make sure to pass a nullptr coupling
7409 // matrix, to avoid warnings about non-nullptr yet empty
7410 // CouplingMatrices.
7411 if (n_vars == 0)
7412 nl->dofMap()._dof_coupling = nullptr;
7413
7414 nl->dofMap().attach_extra_sparsity_function(&extraSparsity, nl.get());
7415 nl->dofMap().attach_extra_send_list_function(&extraSendList, nl.get());
7416 _aux->dofMap().attach_extra_send_list_function(&extraSendList, _aux.get());
7417
7418 if (!_skip_nl_system_check && _solve && n_vars == 0)
7419 mooseError("No variables specified in nonlinear system '", nl->name(), "'.");
7420 }
7421
7422 for (const auto param :
7423 {"constant_null_space_variables", "constant_transpose_null_space_variables"})
7424 for (const auto & var : getParam<std::vector<VariableName>>(param))
7425 if (std::none_of(_nl.begin(),
7426 _nl.end(),
7427 [&var](const auto & nl)
7428 { return nl->hasVariable(var) || nl->hasScalarVariable(var); }))
7429 paramError(param, "Variable '", var, "' is not in any nonlinear system.");
7430
7431 ghostGhostedBoundaries(); // We do this again right here in case new boundaries have been added
7432
7433 // We may have added element/nodes to the mesh in ghostGhostedBoundaries so we need to update
7434 // all of our mesh information. We need to make sure that mesh information is up-to-date before
7435 // EquationSystems::init because that will call through to updateGeomSearch (for sparsity
7436 // augmentation) and if we haven't added back boundary node information before that latter call,
7437 // then we're screwed. We'll get things like "Unable to find closest node!"
7441
7442 if (_mesh.doingPRefinement())
7443 {
7446 _displaced_problem->preparePRefinement();
7447 }
7448
7449 // do not assemble system matrix for JFNK solve
7450 for (auto & nl : _nl)
7451 if (solverParams(nl->number())._type == Moose::ST_JFNK)
7452 nl->turnOffJacobian();
7453
7454 for (auto & sys : _solver_systems)
7455 sys->preInit();
7456 _aux->preInit();
7457
7458 // Build the mortar segment meshes, if they haven't been already, for a couple reasons:
7459 // 1) Get the ghosting correct for both static and dynamic meshes
7460 // 2) Make sure the mortar mesh is built for mortar constraints that live on the static mesh
7461 //
7462 // It is worth-while to note that mortar meshes that live on a dynamic mesh will be built
7463 // during residual and Jacobian evaluation because when displacements are solution variables
7464 // the mortar mesh will move and change during the course of a non-linear solve. We DO NOT
7465 // redo ghosting during non-linear solve, so for purpose 1) the below call has to be made
7466 if (!_mortar_data->initialized())
7468
7469 {
7470 TIME_SECTION("EquationSystems::Init", 2, "Initializing Equation Systems");
7471 es().init();
7472 }
7473
7474 for (auto & sys : _solver_systems)
7475 sys->postInit();
7476 _aux->postInit();
7477
7478 // Now that the equation system and the dof distribution is done, we can generate the
7479 // finite volume-related parts if needed.
7480 if (haveFV())
7482
7483 for (auto & sys : _solver_systems)
7484 sys->update();
7485 _aux->update();
7486
7487 for (THREAD_ID tid = 0; tid < numThreads(); ++tid)
7488 for (const auto i : index_range(_nl))
7489 {
7490 mooseAssert(
7491 _cm[i],
7492 "Coupling matrix not set for system "
7493 << i
7494 << ". This should only happen if a preconditioner was not setup for this system");
7495 _assembly[tid][i]->init(_cm[i].get());
7496 }
7497
7499 _displaced_problem->init();
7500
7501#ifdef MOOSE_KOKKOS_ENABLED
7503 initKokkos();
7504#endif
7505
7506 _initialized = true;
7507}
void extraSendList(std::vector< dof_id_type > &send_list, void *context)
///< Type of coordinate system
Definition SystemBase.C:38
void extraSparsity(libMesh::SparsityPattern::Graph &sparsity, std::vector< dof_id_type > &n_nz, std::vector< dof_id_type > &n_oz, void *context)
Free function used for a libMesh callback.
Definition SystemBase.C:46
unsigned int n_vars
virtual void preProblemInit()
Perform initializations during executing actions right before init_problem task.
Definition Executioner.h:57
virtual bool haveFV() const override
returns true if this problem includes/needs finite volume functionality.
void setCoupling(Moose::CouplingType type)
Set the coupling between variables TODO: allow user-defined coupling.
SolverParams & solverParams(unsigned int solver_sys_num=0)
Get the solver parameters.
void initKokkos()
Construct Kokkos assembly and systems and allocate Kokkos material property storages.
virtual void ghostGhostedBoundaries() override
Causes the boundaries added using addGhostedBoundary to actually be ghosted.
Executioner * getExecutioner() const
Retrieve the Executioner for this App.
Definition MooseApp.C:2024
const std::string & _type
The type of this class.
Definition MooseBase.h:378
void setupFiniteVolumeMeshData() const
Sets up the additional data needed for finite volume computations.
Definition MooseMesh.C:4190
void meshChanged()
Declares that the MooseMesh has changed, invalidates cached data and rebuilds caches.
Definition MooseMesh.C:894
void preparePRefinement()
Prepare DofMap and Assembly classes with our p-refinement information.
@ ST_JFNK
Jacobian-Free Newton Krylov.
Definition MooseTypes.h:903
@ COUPLING_FULL
Definition MooseTypes.h:791
@ COUPLING_DIAG
Definition MooseTypes.h:790
@ COUPLING_CUSTOM
Definition MooseTypes.h:792
bool globalADIndexing()
Whether we are using global AD indexing.
Definition ADUtils.h:28

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

◆ initElementStatefulProps()

void FEProblemBase::initElementStatefulProps ( const libMesh::ConstElemRange &  elem_range,
const bool  threaded 
)
inherited

Initialize stateful properties for elements in a specific elem_range This is needed when elements/boundary nodes are added to a specific subdomain at an intermediate step.

Definition at line 9598 of file FEProblemBase.C.

9599{
9602 if (threaded)
9603 Threads::parallel_reduce(elem_range, cmt, numThreads());
9604 else
9605 cmt(elem_range, true);
9606
9607#ifdef MOOSE_KOKKOS_ENABLED
9610#endif
9611}
void initKokkosStatefulProps()

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

◆ initialAdaptMesh()

void FEProblemBase::initialAdaptMesh ( )
virtualinherited

Definition at line 9258 of file FEProblemBase.C.

9259{
9260 unsigned int n = adaptivity().getInitialSteps();
9262 if (n)
9263 {
9264 if (!_mesh.interiorLowerDBlocks().empty() || !_mesh.boundaryLowerDBlocks().empty())
9265 mooseError("HFEM does not support mesh adaptivity currently.");
9266
9267 TIME_SECTION("initialAdaptMesh", 2, "Performing Initial Adaptivity");
9268
9269 for (unsigned int i = 0; i < n; i++)
9270 {
9273
9275 {
9277 /*intermediate_change=*/false, /*contract_mesh=*/true, /*clean_refinement_flags=*/true);
9278
9279 // reproject the initial condition
9281
9283 }
9284 else
9285 {
9286 _console << "Mesh unchanged, skipping remaining steps..." << std::endl;
9287 return;
9288 }
9289 }
9290 }
9291}
bool initialAdaptMesh()
Used during initial adaptivity.
Definition Adaptivity.C:295
Adaptivity & adaptivity()

◆ initialized()

bool FEProblemBase::initialized ( ) const
inlineinherited
Returns
Whether the problem was initialized, i.e. whether init() has executed

Definition at line 169 of file FEProblemBase.h.

169{ return _initialized; }

Referenced by MooseMesh::update().

◆ initialSetup()

void MFEMProblem::initialSetup ( )
overridevirtualinherited

Reimplemented from FEProblemBase.

Definition at line 85 of file MFEMProblem.C.

86{
88
89 std::vector<MFEMExecutedObject *> objects;
91 .query()
92 .condition<AttribSystem>("MFEMExecutedObject")
93 .condition<AttribThread>(0)
94 .queryInto(objects);
95 for (auto * const object : objects)
96 object->initialSetup();
97}
void initialSetup() override
virtual void initialSetup() override
Definition MFEMProblem.C:85

Referenced by MFEMSteady::init().

◆ initKokkos()

void FEProblemBase::initKokkos ( )
inherited

Construct Kokkos assembly and systems and allocate Kokkos material property storages.

Referenced by FEProblemBase::init().

◆ initKokkosStatefulProps()

void FEProblemBase::initKokkosStatefulProps ( )
inherited

◆ initNullSpaceVectors()

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

Definition at line 917 of file FEProblemBase.C.

919{
920 TIME_SECTION("initNullSpaceVectors", 5, "Initializing Null Space Vectors");
921
922 unsigned int dimNullSpace = parameters.get<unsigned int>("null_space_dimension");
923 unsigned int dimTransposeNullSpace =
924 parameters.get<unsigned int>("transpose_null_space_dimension");
925 unsigned int dimNearNullSpace = parameters.get<unsigned int>("near_null_space_dimension");
926 for (unsigned int i = 0; i < dimNullSpace; ++i)
927 {
928 std::ostringstream oss;
929 oss << "_" << i;
930 // do not project, since this will be recomputed, but make it ghosted, since the near nullspace
931 // builder might march over all nodes
932 for (auto & nl : nls)
933 nl->addVector("NullSpace" + oss.str(), false, libMesh::GHOSTED);
934 }
935 _subspace_dim["NullSpace"] = dimNullSpace;
936 for (unsigned int i = 0; i < dimTransposeNullSpace; ++i)
937 {
938 std::ostringstream oss;
939 oss << "_" << i;
940 // do not project, since this will be recomputed, but make it ghosted, since the near nullspace
941 // builder might march over all nodes
942 for (auto & nl : nls)
943 nl->addVector("TransposeNullSpace" + oss.str(), false, libMesh::GHOSTED);
944 }
945 _subspace_dim["TransposeNullSpace"] = dimTransposeNullSpace;
946 for (unsigned int i = 0; i < dimNearNullSpace; ++i)
947 {
948 std::ostringstream oss;
949 oss << "_" << i;
950 // do not project, since this will be recomputed, but make it ghosted, since the near-nullspace
951 // builder might march over all semilocal nodes
952 for (auto & nl : nls)
953 nl->addVector("NearNullSpace" + oss.str(), false, libMesh::GHOSTED);
954 }
955 _subspace_dim["NearNullSpace"] = dimNearNullSpace;
956}
std::map< std::string, unsigned int > _subspace_dim
Dimension of the subspace spanned by the vectors with a given prefix.

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

◆ initPetscOutputAndSomeSolverSettings()

void FEProblemBase::initPetscOutputAndSomeSolverSettings ( )
virtualinherited

Reinitialize PETSc output for proper linear/nonlinear iteration display.

This also may be used for some PETSc-related solver settings

Reimplemented in EigenProblem.

Definition at line 7954 of file FEProblemBase.C.

7955{
7958}
void solveSetup()
Calls the timestepSetup function for each of the output objects.
void petscSetDefaults(FEProblemBase &problem)
Sets the default options for PETSc.

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

◆ initXFEM()

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

Create XFEM controller object.

Definition at line 9356 of file FEProblemBase.C.

9357{
9358 _xfem = xfem;
9359 _xfem->setMesh(&_mesh);
9360 if (_displaced_mesh)
9361 _xfem->setDisplacedMesh(_displaced_mesh);
9362
9363 auto fill_data = [this](auto & storage)
9364 {
9365 std::vector<MaterialData *> data(numThreads());
9366 for (const auto tid : make_range(numThreads()))
9367 data[tid] = &storage.getMaterialData(tid);
9368 return data;
9369 };
9370 _xfem->setMaterialData(fill_data(_material_props));
9371 _xfem->setBoundaryMaterialData(fill_data(_bnd_material_props));
9372
9373 unsigned int n_threads = numThreads();
9374 for (unsigned int i = 0; i < n_threads; ++i)
9375 for (const auto nl_sys_num : index_range(_nl))
9376 {
9377 _assembly[i][nl_sys_num]->setXFEM(_xfem);
9379 _displaced_problem->assembly(i, nl_sys_num).setXFEM(_xfem);
9380 }
9381}
MaterialData & getMaterialData(Moose::MaterialDataType type, const THREAD_ID tid=0, const MooseObject *object=nullptr) const
void fill_data(std::map< processor_id_type, std::vector< std::set< unsigned int > > > &data, int M)

◆ isKokkosObject()

bool MooseObject::isKokkosObject ( ) const
inlineinherited

Get whether this object is a Kokkos functor The parameter MooseBase::kokkos_object_param is set by the Kokkos base classes.

Definition at line 63 of file MooseObject.h.

63{ return parameters().isKokkosObject(); }

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

◆ isMatPropRequested()

bool SubProblem::isMatPropRequested ( const std::string &  prop_name) const
virtualinherited

Find out if a material property has been requested by any object.

Definition at line 722 of file SubProblem.C.

723{
724 return _material_property_requested.find(prop_name) != _material_property_requested.end();
725}
std::set< std::string > _material_property_requested
set containing all material property names that have been requested by getMaterialProperty*

◆ isParamSetByUser()

bool MooseBase::isParamSetByUser ( const std::string &  name) const
inlineinherited

Test if the supplied parameter is set by a user, as opposed to not set or set to default.

Parameters
nameThe name of the parameter to test

Definition at line 205 of file MooseBase.h.

206 {
208 }

Referenced by DiffusionCG::addFEBCs(), DiffusionCG::addFEKernels(), DiffusionPhysicsBase::addInitialConditions(), CylinderComponent::addMeshGenerators(), AdvancedExtruderGenerator::AdvancedExtruderGenerator(), MFEMMesh::buildMesh(), MFEMBoundarySubMesh::buildSubMesh(), MFEMDomainSubMesh::buildSubMesh(), SurfaceDelaunayGeneratorBase::checkBoundaryAndHolesParams(), LibtorchNeuralNetControl::conditionalParameterError(), ConservativeAdvectionBCTempl< is_ad >::ConservativeAdvectionBCTempl(), MFEMNewtonNonlinearSolver::ConstructSolver(), MooseApp::copyInputs(), DiffusionPhysicsBase::DiffusionPhysicsBase(), MooseApp::errorCheck(), FileMesh::FileMesh(), FullSolveMultiApp::FullSolveMultiApp(), MeshDiagnosticsGenerator::generate(), OrientSurfaceMeshGenerator::generate(), SurfaceSubdomainsFromAllNormalsGenerator::generate(), MFEMVectorFESpace::getFECName(), MooseBase::getRenamedParam(), getRHSCoefficient(), DefaultConvergenceBase::getSharedExecutionerParam(), AddVariableAction::init(), MFEMMesh::init(), PhysicsBase::initializePhysics(), LibtorchNeuralNetControl::initialSetup(), ElementSubdomainModifierBase::initialSetup(), LibtorchNeuralNetControl::loadControlNeuralNetFromFile(), MatrixSymmetryCheck::MatrixSymmetryCheck(), MeshDiagnosticsGenerator::MeshDiagnosticsGenerator(), MFEMEigenproblem(), MFEMGeneratedMeshGenerator::MFEMGeneratedMeshGenerator(), MFEMVariable::MFEMVariable(), MooseApp::MooseApp(), MortarConstraintBase::MortarConstraintBase(), MoveNodesByParsedExpressionModifier::moveNodes(), MultiAppGeneralFieldFunctorTransfer::MultiAppGeneralFieldFunctorTransfer(), MultiAppGeneralFieldTransfer::MultiAppGeneralFieldTransfer(), OrientSurfaceMeshGenerator::OrientSurfaceMeshGenerator(), SolutionInvalidityOutput::output(), Output::Output(), MultiAppGeneralFieldTransfer::outputValueConflicts(), PetscExternalPartitioner::partition(), PolyLineMeshFollowingNodeSetGenerator::PolyLineMeshFollowingNodeSetGenerator(), MooseMesh::prepare(), SolutionUserObjectBase::readXda(), ReferenceResidualConvergence::ReferenceResidualConvergence(), PhysicsBase::reportPotentiallyMissedParameters(), MooseApp::run(), MooseApp::runInputFile(), MooseApp::runInputs(), MooseApp::setMFEMDevice(), Moose::MFEM::LinearSolverBase::SetPreconditioner(), MFEMHypreBoomerAMG::SetSolverParameters(), SetupMeshAction::setupMesh(), MooseApp::setupOptions(), SideSetsFromBoundingBoxGenerator::SideSetsFromBoundingBoxGenerator(), SingleMatrixPreconditioner::SingleMatrixPreconditioner(), SmoothMeshGenerator::SmoothMeshGenerator(), SurfaceSubdomainsDelaunayRemesher::SurfaceSubdomainsDelaunayRemesher(), SurfaceSubdomainsFromAllNormalsGenerator::SurfaceSubdomainsFromAllNormalsGenerator(), TagVectorAux::TagVectorAux(), TimedSubdomainModifier::TimedSubdomainModifier(), TimeIntegratedPostprocessor::TimeIntegratedPostprocessor(), TriToQuadConverter::TriToQuadConverter(), XYFrontalDelaunayGenerator::XYFrontalDelaunayGenerator(), and XYZDelaunayGenerator::XYZDelaunayGenerator().

◆ isParamValid()

bool MooseBase::isParamValid ( const std::string &  name) const
inlineinherited

Test if the supplied parameter is valid.

Parameters
nameThe name of the parameter to test

Definition at line 199 of file MooseBase.h.

199{ return _pars.isParamValid(name); }

Referenced by GridPartitioner::_do_partition(), HierarchicalGridPartitioner::_do_partition(), AddVariableAction::act(), AutoCheckpointAction::act(), CommonOutputAction::act(), ComposeTimeStepperAction::act(), CopyNodalVarsAction::act(), CreateDisplacedProblemAction::act(), SetAdaptivityOptionsAction::act(), SetupDebugAction::act(), SetupMeshCompleteAction::act(), DiffusionCG::addFEKernels(), DiffusionFV::addFVBCs(), DiffusionFV::addFVKernels(), DiffusionPhysicsBase::addInitialConditions(), ComponentJunction::addMeshGenerators(), CylinderComponent::addMeshGenerators(), DiffusionPhysicsBase::addPostprocessors(), AdvancedExtruderGenerator::AdvancedExtruderGenerator(), AdvectiveFluxAux::AdvectiveFluxAux(), ArrayHFEMDirichletBC::ArrayHFEMDirichletBC(), ArrayVarReductionAux::ArrayVarReductionAux(), BicubicSplineFunction::BicubicSplineFunction(), BlockDeletionGenerator::BlockDeletionGenerator(), BreakMeshByBlockGenerator::BreakMeshByBlockGenerator(), BSplineCurveGenerator::BSplineCurveGenerator(), TimedSubdomainModifier::buildFromFile(), ParsedChainControl::buildFunction(), GeneratedMesh::buildMesh(), MooseMesh::buildTypedMesh(), CartesianGridDivision::CartesianGridDivision(), CartesianMeshGenerator::CartesianMeshGenerator(), SurfaceDelaunayGeneratorBase::checkBoundaryAndHolesParams(), MultiAppTransfer::checkParentAppUserObjectExecuteOn(), LibmeshPartitioner::clone(), SampledOutput::cloneMesh(), CombinedVectorPostprocessor::CombinedVectorPostprocessor(), CombinerGenerator::CombinerGenerator(), ComponentJunction::ComponentJunction(), ConservativeAdvectionBCTempl< is_ad >::ConservativeAdvectionBCTempl(), ConservativeAdvectionTempl< is_ad >::ConservativeAdvectionTempl(), FEProblemSolve::convergenceSetup(), CopyMeshPartitioner::CopyMeshPartitioner(), CSVReaderVectorPostprocessor::CSVReaderVectorPostprocessor(), CutMeshByLevelSetGeneratorBase::CutMeshByLevelSetGeneratorBase(), ConstantReporter::declareConstantReporterValue(), ConstantReporter::declareConstantReporterValues(), DGKernelBase::DGKernelBase(), DiffusionFluxAux::DiffusionFluxAux(), DiffusionPhysicsBase::DiffusionPhysicsBase(), DomainUserObject::DomainUserObject(), DynamicObjectRegistrationAction::DynamicObjectRegistrationAction(), EigenProblemSolve::EigenProblemSolve(), ElementGenerator::ElementGenerator(), ElementGroupCentroidPositions::ElementGroupCentroidPositions(), PIDTransientControl::execute(), MultiAppNearestNodeTransfer::execute(), MultiAppUserObjectTransfer::execute(), Exodus::Exodus(), ExtraIDIntegralReporter::ExtraIDIntegralReporter(), ExtraIDIntegralVectorPostprocessor::ExtraIDIntegralVectorPostprocessor(), FEProblemBase::FEProblemBase(), FEProblemSolve::FEProblemSolve(), FileOutput::FileOutput(), SurfaceDelaunayGeneratorBase::fillDelaunayOptions(), SpatialUserObjectVectorPostprocessor::fillPoints(), CombinerGenerator::fillPositions(), MultiApp::fillPositions(), FiniteDifferencePreconditioner::FiniteDifferencePreconditioner(), FixedPointSolve::FixedPointSolve(), FunctionDT::FunctionDT(), FunctionValuePostprocessor::FunctionValuePostprocessor(), FVInterfaceKernel::FVInterfaceKernel(), FVMassMatrix::FVMassMatrix(), SurfaceSubdomainsDelaunayRemesher::General2DDelaunay(), AddMetaDataGenerator::generate(), BlockDeletionGenerator::generate(), BreakBoundaryOnSubdomainGenerator::generate(), BSplineCurveGenerator::generate(), ConcentricCircleMeshGenerator::generate(), DistributedRectilinearMeshGenerator::generate(), ElementGenerator::generate(), ExtraNodesetGenerator::generate(), FileMeshGenerator::generate(), GeneratedMeshGenerator::generate(), LowerDBlockFromSidesetGenerator::generate(), ManifoldSubdomainGenerator::generate(), MeshExtruderGenerator::generate(), OrientSurfaceMeshGenerator::generate(), ParsedExtraElementIDGenerator::generate(), ParsedSubdomainGeneratorBase::generate(), RenumberBySubdomainGenerator::generate(), SideSetsFromNodeSetsGenerator::generate(), SphereMeshGenerator::generate(), SubdomainBoundingBoxGenerator::generate(), SubdomainPerElementGenerator::generate(), XYDelaunayGenerator::generate(), XYMeshLineCutter::generate(), XYZDelaunayGenerator::generate(), GeneratedMeshGenerator::GeneratedMeshGenerator(), PropertyReadFile::getFileNames(), MultiAppNearestNodeTransfer::getLocalEntitiesAndComponents(), MeshGenerator::getMeshGeneratorNameFromParam(), MeshGenerator::getMeshGeneratorNamesFromParam(), MooseBase::getRenamedParam(), MultiAppNearestNodeTransfer::getTargetLocalNodes(), AddPeriodicBCAction::getVariables(), Terminator::handleMessage(), HFEMDirichletBC::HFEMDirichletBC(), EigenExecutionerBase::init(), IterationAdaptiveDT::init(), AdvancedOutput::initAvailableLists(), AdvancedOutput::initExecutionTypes(), BlockRestrictable::initializeBlockRestrictable(), BoundaryRestrictable::initializeBoundaryRestrictable(), SolutionAux::initialSetup(), SolutionScalarAux::initialSetup(), PIDTransientControl::initialSetup(), ParsedConvergence::initialSetup(), EigenProblemSolve::initialSetup(), MooseParsedFunction::initialSetup(), MooseParsedGradFunction::initialSetup(), MooseParsedVectorFunction::initialSetup(), PiecewiseTabularBase::initialSetup(), SolutionIC::initialSetup(), Console::initialSetup(), MultiAppCloneReporterTransfer::initialSetup(), MultiAppGeneralFieldTransfer::initialSetup(), MultiAppVariableValueSampleTransfer::initialSetup(), SampledOutput::initSample(), IterationAdaptiveDT::IterationAdaptiveDT(), LeastSquaresFit::LeastSquaresFit(), LibmeshPartitioner::LibmeshPartitioner(), PNGOutput::makePNG(), MassMatrix::MassMatrix(), MatCoupledForce::MatCoupledForce(), MeshGeneratorComponent::MeshGeneratorComponent(), MooseApp::MooseApp(), MooseMesh::MooseMesh(), MoosePreconditioner::MoosePreconditioner(), MooseStaticCondensationPreconditioner::MooseStaticCondensationPreconditioner(), MooseVariableBase::MooseVariableBase(), MooseVariableFV< RealEigenVector >::MooseVariableFV(), MortarConstraintBase::MortarConstraintBase(), MoveNodeGenerator::MoveNodeGenerator(), MultiApp::MultiApp(), MultiAppCloneReporterTransfer::MultiAppCloneReporterTransfer(), MultiAppGeneralFieldKDTreeTransferBase::MultiAppGeneralFieldKDTreeTransferBase(), MultiAppGeneralFieldShapeEvaluationTransfer::MultiAppGeneralFieldShapeEvaluationTransfer(), MultiAppGeneralFieldTransfer::MultiAppGeneralFieldTransfer(), MultiAppGeneralFieldUserObjectTransfer::MultiAppGeneralFieldUserObjectTransfer(), MultiAppPostprocessorInterpolationTransfer::MultiAppPostprocessorInterpolationTransfer(), MultiAppPostprocessorTransfer::MultiAppPostprocessorTransfer(), MultiAppReporterTransfer::MultiAppReporterTransfer(), MultiAppTransfer::MultiAppTransfer(), MultiAppUserObjectTransfer::MultiAppUserObjectTransfer(), MultiAppVariableValueSampleTransfer::MultiAppVariableValueSampleTransfer(), MultiPostprocessorConvergence::MultiPostprocessorConvergence(), MultiSystemSolveObject::MultiSystemSolveObject(), NEML2Action::NEML2Action(), NodeSetsGeneratorBase::NodeSetsGeneratorBase(), EigenExecutionerBase::normalizeSolution(), OrientSurfaceMeshGenerator::OrientSurfaceMeshGenerator(), Output::Output(), ParsedCurveGenerator::ParsedCurveGenerator(), ParsedSubdomainGeneratorBase::ParsedSubdomainGeneratorBase(), PetscOutput::PetscOutput(), PhysicsBasedPreconditioner::PhysicsBasedPreconditioner(), EqualValueBoundaryConstraint::pickPrimaryNode(), PIDTransientControl::PIDTransientControl(), PiecewiseTabularBase::PiecewiseTabularBase(), PlaneIDMeshGenerator::PlaneIDMeshGenerator(), EqualValueBoundaryConstraint::populateSecondaryNodes(), MooseMesh::prepare(), MultiApp::readCommandLineArguments(), SolutionUserObjectBase::readExodusIIOrNemesis(), ReferenceResidualInterface::ReferenceResidualInterface(), RenameBlockGenerator::RenameBlockGenerator(), ReporterPointSource::ReporterPointSource(), PhysicsBase::reportPotentiallyMissedParameters(), ParsedSubdomainMeshGenerator::setBlockName(), MooseMesh::setCoordSystem(), FileOutput::setFileBaseInternal(), SideSetsGeneratorBase::setup(), SurfaceMeshGeneratorBase::setup(), Split::setup(), SetupMeshAction::setupMesh(), MooseApp::setupOptions(), Output::setWallTimeIntervalFromCommandLineParam(), SideDiffusiveFluxIntegralTempl< is_ad, T >::SideDiffusiveFluxIntegralTempl(), SideSetsGeneratorBase::SideSetsGeneratorBase(), SingleMatrixPreconditioner::SingleMatrixPreconditioner(), SolutionUserObjectBase::SolutionUserObjectBase(), Terminator::Terminator(), TimeIntervalTimes::TimeIntervalTimes(), TimePeriod::TimePeriod(), PIDTransientControl::timestepSetup(), MultiAppDofCopyTransfer::transfer(), TransformGenerator::TransformGenerator(), TransientBase::TransientBase(), VariableCondensationPreconditioner::VariableCondensationPreconditioner(), VectorMagnitudeFunctorMaterialTempl< is_ad >::VectorMagnitudeFunctorMaterialTempl(), XYQuadrilateralMeshFromBoundaryCurve::XYQuadrilateralMeshFromBoundaryCurve(), and XYZDelaunayGenerator::XYZDelaunayGenerator().

◆ isSNESMFReuseBaseSetbyUser()

bool FEProblemBase::isSNESMFReuseBaseSetbyUser ( )
inlineinherited

Return a flag to indicate if _snesmf_reuse_base is set by users.

Definition at line 2704 of file FEProblemBase.h.

bool _snesmf_reuse_base_set_by_user
If or not _snesmf_reuse_base is set by user.

◆ isSolverSystemNonlinear()

bool FEProblemBase::isSolverSystemNonlinear ( const unsigned int  sys_num)
inlineinherited

◆ isSolveTerminationRequested()

virtual bool Problem::isSolveTerminationRequested ( ) const
inlinevirtualinherited

Check of termination has been requested.

This should be called by transient Executioners in the keepGoing() member.

Definition at line 43 of file Problem.h.

43{ return _termination_requested; };
bool _termination_requested
True if termination of the solve has been requested.
Definition Problem.h:58

Referenced by WebServerControl::execute(), and TransientBase::keepGoing().

◆ isTransient()

virtual bool FEProblemBase::isTransient ( ) const
inlineoverridevirtualinherited

◆ jacobianSetup()

void FEProblemBase::jacobianSetup ( )
overridevirtualinherited

Reimplemented from SubProblem.

Definition at line 10620 of file FEProblemBase.C.

10621{
10623 // We need to setup all the nonlinear systems other than our current one which actually called
10624 // this method (so we have to make sure we don't go in a circle)
10625 for (const auto i : make_range(numNonlinearSystems()))
10626 if (i != currentNlSysNum())
10627 _nl[i]->jacobianSetup();
10628 // We don't setup the aux sys because that's been done elsewhere
10630 _displaced_problem->jacobianSetup();
10631}
virtual unsigned int currentNlSysNum() const override
virtual void jacobianSetup()

Referenced by FEProblemBase::jacobianSetup(), and NonlinearSystemBase::jacobianSetup().

◆ joinAndFinalize()

void FEProblemBase::joinAndFinalize ( TheWarehouse::Query  query,
bool  isgen = false 
)
privateinherited

Definition at line 5592 of file FEProblemBase.C.

5593{
5594 std::vector<UserObject *> objs;
5595 query.queryInto(objs);
5596 // The same user objects exist on every process, so every process returns here or none does
5597 if (objs.empty())
5598 return;
5599
5600 if (!isgen)
5601 {
5602 // join all threaded user objects (i.e. not regular general user objects) to the primary
5603 // thread
5605 [&objs]()
5606 {
5607 for (auto obj : objs)
5608 if (obj->primaryThreadCopy())
5609 obj->primaryThreadCopy()->threadJoin(*obj);
5610 });
5612 }
5613
5614 query.condition<AttribThread>(0).queryInto(objs);
5615
5616 // finalize objects and retrieve/store any postprocessor values
5617 for (auto obj : objs)
5618 {
5619 if (isgen && dynamic_cast<ThreadedGeneralUserObject *>(obj))
5620 continue;
5621 if (isgen)
5622 {
5623 // general user objects are not run in their own threaded loop object - so run them here
5624 if (shouldPrintExecution(0))
5625 _console << "[DBG] Initializing, executing & finalizing general UO '" << obj->name()
5626 << "' on " << _current_execute_on_flag.name() << std::endl;
5628 [obj]()
5629 {
5630 obj->initialize();
5631 obj->execute();
5632 });
5634 }
5635
5636 // An exception raised by finalize() is communicated once all objects have been finalized, so
5637 // that a process raising one does not skip the communication in the finalize() of the
5638 // remaining objects
5639 translateUserObjectExceptions([obj]() { obj->finalize(); });
5640
5641 // These have to be stored piecemeal (with every call to this function) because general
5642 // postprocessors (which run last after other userobjects have been completed) might depend on
5643 // them being stored. This wouldn't be a problem if all userobjects satisfied the dependency
5644 // resolver interface and could be sorted appropriately with the general userobjects, but they
5645 // don't.
5646 auto pp = dynamic_cast<const Postprocessor *>(obj);
5647 if (pp)
5648 {
5649 _reporter_data.finalize(obj->name());
5650 setPostprocessorValueByName(obj->name(), pp->getValue());
5651 }
5652
5653 auto vpp = dynamic_cast<VectorPostprocessor *>(obj);
5654 if (vpp)
5655 _reporter_data.finalize(obj->name());
5656
5657 // Update Reporter data
5658 auto reporter = dynamic_cast<Reporter *>(obj);
5659 if (reporter)
5660 _reporter_data.finalize(obj->name());
5661 }
5662
5664}
bool shouldPrintExecution(const THREAD_ID tid) const
Check whether the problem should output execution orders at this time.
const std::string & name() const
Reporter objects allow for the declaration of arbitrary data types that are aggregate values for a si...
Definition Reporter.h:48
An instance of this object type has one copy per thread that runs on each thread.

Referenced by FEProblemBase::computeUserObjectsInternal().

◆ kokkosAssembly() [1/2]

Moose::Kokkos::Assembly & FEProblemBase::kokkosAssembly ( )
inlineinherited

Definition at line 365 of file FEProblemBase.h.

365{ return _kokkos_assembly; }
Moose::Kokkos::Assembly _kokkos_assembly

◆ kokkosAssembly() [2/2]

const Moose::Kokkos::Assembly & FEProblemBase::kokkosAssembly ( ) const
inlineinherited

Definition at line 366 of file FEProblemBase.h.

366{ return _kokkos_assembly; }

◆ kokkosJoinAndFinalize()

void FEProblemBase::kokkosJoinAndFinalize ( const std::vector< Moose::Kokkos::UserObject * > &  userobjs)
privateinherited

◆ linearSysNum()

unsigned int FEProblemBase::linearSysNum ( const LinearSystemName &  linear_sys_name) const
overridevirtualinherited
Returns
the linear system number corresponding to the provided linear_sys_name

Implements SubProblem.

Definition at line 7521 of file FEProblemBase.C.

7522{
7523 std::istringstream ss(linear_sys_name);
7524 unsigned int linear_sys_num;
7525 if (!(ss >> linear_sys_num) || !ss.eof())
7526 linear_sys_num = libmesh_map_find(_linear_sys_name_to_num, linear_sys_name);
7527
7528 return linear_sys_num;
7529}
std::map< LinearSystemName, unsigned int > _linear_sys_name_to_num
Map from linear system name to number.

Referenced by Moose::compute_linear_system(), FEProblemBase::computeLinearSystemSys(), LinearSystem::computeLinearSystemTags(), and DisplacedProblem::linearSysNum().

◆ lineSearch()

void FEProblemBase::lineSearch ( )
virtualinherited

execute MOOSE line search

Definition at line 3082 of file FEProblemBase.C.

3083{
3084 _line_search->lineSearch();
3085}

Referenced by ComputeLineSearchObjectWrapper::linesearch().

◆ logAdd()

void FEProblemBase::logAdd ( const std::string &  system,
const std::string &  name,
const std::string &  type,
const InputParameters &  params 
) const
inherited

◆ makeLinearSolverParams()

SolverParams FEProblemBase::makeLinearSolverParams ( )
staticprivateinherited

Make basic solver params for linear solves.

Definition at line 10847 of file FEProblemBase.C.

10848{
10849 SolverParams solver_params;
10850 solver_params._type = Moose::SolveType::ST_LINEAR;
10852 return solver_params;
10853}
Moose::LineSearchType _line_search
Moose::SolveType _type
@ ST_LINEAR
Solving a linear problem.
Definition MooseTypes.h:906
@ LS_NONE
Definition MooseTypes.h:987

Referenced by FEProblemBase::FEProblemBase().

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

717{
718 _material_property_requested.insert(prop_name);
719}

Referenced by MaterialPropertyInterface::markMatPropRequested(), and MaterialBase::markMatPropRequested().

◆ matrixTagExists() [1/2]

bool SubProblem::matrixTagExists ( const TagName &  tag_name) const
virtualinherited

◆ matrixTagExists() [2/2]

bool SubProblem::matrixTagExists ( TagID  tag_id) const
virtualinherited

Check to see if a particular Tag exists.

Reimplemented in DisplacedProblem.

Definition at line 328 of file SubProblem.C.

329{
330 return _matrix_tag_id_to_tag_name.find(tag_id) != _matrix_tag_id_to_tag_name.end();
331}

◆ matrixTagName()

TagName SubProblem::matrixTagName ( TagID  tag)
virtualinherited

Retrieve the name associated with a TagID.

Reimplemented in DisplacedProblem.

Definition at line 349 of file SubProblem.C.

350{
351 return _matrix_tag_id_to_tag_name[tag];
352}

Referenced by SystemBase::addMatrix(), DisplacedProblem::matrixTagName(), and SystemBase::removeMatrix().

◆ mesh() [1/4]

const MFEMMesh & MFEMProblem::mesh ( ) const
overridevirtualinherited

Reimplemented from FEProblemBase.

Definition at line 825 of file MFEMProblem.C.

826{
827 return const_cast<MFEMProblem *>(this)->mesh();
828}

◆ mesh() [2/4]

MFEMMesh & MFEMProblem::mesh ( )
overridevirtualinherited

Overwritten mesh() method from base MooseMesh to retrieve the correct mesh type, in this case MFEMMesh.

Reimplemented from FEProblemBase.

Definition at line 816 of file MFEMProblem.C.

817{
818 auto * mfem_mesh = dynamic_cast<MFEMMesh *>(&_mesh);
819 mooseAssert(mfem_mesh,
820 "The mesh for an MFEMProblem must be MFEMFileMesh or MFEMMeshGeneratorMesh.");
821 return *mfem_mesh;
822}
Abstract MooseMesh base for all MFEM-backed mesh types (MFEMFileMesh, MFEMMeshGeneratorMesh).
Definition MFEMMesh.h:24

Referenced by MFEMProblem::addMFEMFESpaceFromMOOSEVariable(), MFEMProblem::displaceMesh(), MFEMProblem::getMeshDisplacementGridFunction(), MFEMProblem::mesh(), and MFEMProblem::setMesh().

◆ mesh() [3/4]

MooseMesh & FEProblemBase::mesh ( bool  use_displaced)
inherited

Definition at line 811 of file FEProblemBase.C.

812{
813 if (use_displaced && !_displaced_problem)
814 mooseWarning("Displaced mesh was requested but the displaced problem does not exist. "
815 "Regular mesh will be returned");
816 return ((use_displaced && _displaced_problem) ? _displaced_problem->mesh() : mesh());
817}

◆ mesh() [4/4]

const MooseMesh & FEProblemBase::mesh ( bool  use_displaced) const
overridevirtualinherited

Implements SubProblem.

Definition at line 802 of file FEProblemBase.C.

803{
804 if (use_displaced && !_displaced_problem)
805 mooseWarning("Displaced mesh was requested but the displaced problem does not exist. "
806 "Regular mesh will be returned");
807 return ((use_displaced && _displaced_problem) ? _displaced_problem->mesh() : mesh());
808}

◆ meshChanged() [1/2]

virtual void FEProblemBase::meshChanged ( )
inlineprotectedvirtualinherited

Deprecated.

Users should switch to overriding the meshChanged which takes arguments

Definition at line 3113 of file FEProblemBase.h.

3113{}

Referenced by FEProblemBase::adaptMesh(), FEProblemBase::initialAdaptMesh(), FEProblemBase::meshChanged(), FEProblemBase::timestepSetup(), FEProblemBase::uniformRefine(), and FEProblemBase::updateMeshXFEM().

◆ meshChanged() [2/2]

void FEProblemBase::meshChanged ( bool  intermediate_change,
bool  contract_mesh,
bool  clean_refinement_flags 
)
virtualinherited

Update data after a mesh change.

Iff intermediate_change is true, only perform updates as necessary to prepare for another mesh change immediately-subsequent. An example of data that is not updated during an intermediate change is libMesh System matrix data. An example of data that \emph is updated during an intermediate change is libMesh System vectors. These vectors are projected or restricted based off of adaptive mesh refinement or the changing of element subdomain IDs. The flags contract_mesh and clean_refinement_flags should generally only be set to true when the mesh has changed due to mesh refinement. contract_mesh deletes children of coarsened elements and renumbers nodes and elements. clean_refinement_flags resets refinement flags such that any subsequent calls to System::restrict_vectors or System::prolong_vectors before another AMR step do not mistakenly attempt to re-do the restriction/prolongation which occurred in this method. The value of contract_mesh is ignored when FEProblemBase::allowMeshContractionAfterMeshChanged is set to false.

Definition at line 9414 of file FEProblemBase.C.

9417{
9418 TIME_SECTION("meshChanged", 3, "Handling Mesh Changes");
9419
9420 const bool should_contract = contract_mesh && allowMeshContractionAfterMeshChanged();
9421
9423
9426 _mesh.cacheChangedLists(); // Currently only used with adaptivity and stateful material
9427 // properties
9428
9429 // Clear these out because they corresponded to the old mesh
9430 _ghosted_elems.clear();
9432
9433 // The mesh changed. We notify the MooseMesh first, because
9434 // callbacks (e.g. for sparsity calculations) triggered by the
9435 // EquationSystems reinit may require up-to-date MooseMesh caches.
9437
9438 // If we're just going to alter the mesh again, all we need to
9439 // handle here is AMR and projections, not full system reinit
9440 if (intermediate_change)
9441 es().reinit_solutions();
9442 else
9443 es().reinit();
9444
9445 if (should_contract)
9446 // Once vectors are restricted, we can delete children of coarsened elements
9447 _mesh.getMesh().contract();
9448 if (clean_refinement_flags)
9449 {
9450 // Finally clear refinement flags so that if someone tries to project vectors again without
9451 // an intervening mesh refinement to clear flags they won't run into trouble
9453 refinement.clean_refinement_flags();
9454 }
9455
9456 if (!intermediate_change)
9457 {
9458 // Since the mesh has changed, we need to make sure that we update any of our
9459 // MOOSE-system specific data.
9460 for (auto & sys : _solver_systems)
9461 sys->reinit();
9462 _aux->reinit();
9463 }
9464
9465 // Updating MooseMesh first breaks other adaptivity code, unless we
9466 // then *again* update the MooseMesh caches. E.g. the definition of
9467 // "active" and "local" may have been *changed* by refinement and
9468 // repartitioning done in EquationSystems::reinit().
9470
9471 // If we have finite volume variables, we will need to recompute additional elemental/face
9472 // quantities
9475
9476 // Let the meshChangedInterface notify the mesh changed event before we update the active
9477 // semilocal nodes, because the set of ghosted elements may potentially be updated during a mesh
9478 // changed event.
9479 for (const auto & mci : _notify_when_mesh_changes)
9480 mci->meshChanged();
9481
9482 // Since the Mesh changed, update the PointLocator object used by DiracKernels.
9484
9485 // Need to redo ghosting
9487
9489 {
9490 // Mesh contraction is necessary when a displaced problem is used.
9492 mooseError("Disabling mesh contraction is not implemented when a displaced problem is used. "
9493 "Please contact a "
9494 "developer of this application to discuss the combination of these features.");
9495
9496 _displaced_problem->meshChanged(should_contract, clean_refinement_flags);
9498 }
9499
9501
9504
9505 // Just like we reinitialized our geometric search objects, we also need to reinitialize our
9506 // mortar meshes. Note that this needs to happen after DisplacedProblem::meshChanged because the
9507 // mortar mesh discretization will depend necessarily on the displaced mesh being re-displaced
9508 _mortar_data->meshChanged();
9509
9510 // Nonlinear systems hold the mortar mesh functors. The domains of definition of the mortar
9511 // functors might have changed when the mesh changed.
9512 for (auto & nl_sys : _nl)
9513 nl_sys->reinitMortarFunctors();
9514
9515 reinitBecauseOfGhostingOrNewGeomObjects(/*mortar_changed=*/true);
9516
9517 // We need to create new storage for newly active elements, and copy
9518 // stateful properties from the old elements.
9521 {
9522 if (doingPRefinement())
9524
9525 // Prolong properties onto newly refined elements' children
9526 {
9528 /* refine = */ true, *this, _material_props, _bnd_material_props, _assembly);
9529 const auto & range = *_mesh.refinedElementRange();
9530 Threads::parallel_reduce(range, pmp, numThreads());
9531
9532 // Concurrent erasure from the shared hash map is not safe while we are reading from it in
9533 // ProjectMaterialProperties, so we handle erasure here. Moreover, erasure based on key is
9534 // not thread safe in and of itself because it is a read-write operation. Note that we do not
9535 // do the erasure for p-refinement because the coarse level element is the same as our active
9536 // refined level element
9537 if (!doingPRefinement())
9538 for (const auto & elem : range)
9539 {
9543 }
9544 }
9545
9546 // Restrict properties onto newly coarsened elements
9547 {
9549 /* refine = */ false, *this, _material_props, _bnd_material_props, _assembly);
9550 const auto & range = *_mesh.coarsenedElementRange();
9551 Threads::parallel_reduce(range, pmp, numThreads());
9552 // Note that we do not do the erasure for p-refinement because the coarse level element is the
9553 // same as our active refined level element
9554 if (!doingPRefinement())
9555 for (const auto & elem : range)
9556 {
9557 auto && coarsened_children = _mesh.coarsenedElementChildren(elem);
9558 for (auto && child : coarsened_children)
9559 {
9563 }
9564 }
9565 }
9566 }
9567
9570
9571 _has_jacobian = false; // we have to recompute jacobian when mesh changed
9572
9573 // Now for backwards compatibility with user code that overrode the old no-arg meshChanged we must
9574 // call it here
9575 meshChanged();
9576}
void updatePointLocator(const MooseMesh &mesh)
Called during FEProblemBase::meshChanged() to update the PointLocator object used by the DiracKernels...
virtual bool allowMeshContractionAfterMeshChanged() const
Whether meshChanged() should allow the mesh to be contracted (deletes children of coarsened elements ...
void reinitBecauseOfGhostingOrNewGeomObjects(bool mortar_changed=false)
Call when it is possible that the needs for ghosted elements has changed.
void setVariableAllDoFMap(const std::vector< const MooseVariableFEBase * > &moose_vars)
std::vector< MeshChangedInterface * > _notify_when_mesh_changes
Objects to be notified when the mesh changes.
bool _has_initialized_stateful
Whether nor not stateful materials have been initialized.
void reinit()
Completely redo all geometric search objects.
void eraseProperty(const Elem *elem)
Remove the property storage and element pointer from internal data structures Use this when elements ...
void markMeshChangedForBackup()
Mark this app as requiring mesh topology data in its next Backup object.
Definition MooseApp.h:759
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:954
ConstElemPointerRange * refinedElementRange() const
Return a range that is suitable for threaded execution over elements that were just refined.
Definition MooseMesh.C:942
void updateActiveSemiLocalNodeRange(std::set< dof_id_type > &ghosted_elems)
Clears the "semi-local" node list and rebuilds it.
Definition MooseMesh.C:962
bool isFiniteVolumeInfoDirty() const
Definition MooseMesh.h:1464
void cacheChangedLists()
Cache information about what elements were refined and coarsened in the previous step.
Definition MooseMesh.C:924
ConstElemPointerRange * coarsenedElementRange() const
Return a range that is suitable for threaded execution over elements that were just coarsened.
Definition MooseMesh.C:948
void buildPRefinementAndCoarseningMaps(Assembly *assembly)
Definition MooseMesh.C:2416
bool doingPRefinement() const

Referenced by MoveNodesByParsedExpressionModifier::execute(), ActivateElementsUserObjectBase::finalize(), SidesetAroundSubdomainUpdater::finalize(), Exodus::handleExodusIOMeshRenumbering(), ElementSubdomainModifierBase::modify(), MooseApp::restore(), TransientMultiApp::setupApp(), and Adaptivity::uniformRefineWithProjection().

◆ meshDisplaced()

void FEProblemBase::meshDisplaced ( )
protectedvirtualinherited

Update data after a mesh displaced.

Definition at line 9591 of file FEProblemBase.C.

9592{
9593 for (const auto & mdi : _notify_when_mesh_displaces)
9594 mdi->meshDisplaced();
9595}
std::vector< MeshDisplacedInterface * > _notify_when_mesh_displaces
Objects to be notified when the mesh displaces.
virtual void meshDisplaced()
Update data after a mesh displaced.

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

◆ messagePrefix() [1/2]

std::string MooseBase::messagePrefix ( const bool  hit_prefix = true) const
inlineinherited
Returns
A prefix to be used in messages that contain the input file location associated with this object (if any) and the name and type of the object.

Definition at line 256 of file MooseBase.h.

257 {
258 return messagePrefix(_pars, hit_prefix);
259 }

Referenced by MooseBase::callMooseError(), MooseBase::errorPrefix(), MooseBase::messagePrefix(), MooseBase::mooseDeprecated(), MooseBase::mooseDeprecatedNoTrace(), MooseBase::mooseInfo(), and MooseBase::mooseWarning().

◆ messagePrefix() [2/2]

std::string MooseBase::messagePrefix ( const InputParameters &  params,
const bool  hit_prefix 
)
staticprivateinherited

Internal method for getting the message prefix for an object (object type, name, etc).

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

Definition at line 140 of file MooseBase.C.

141{
142 std::string prefix = "";
143
144 if (hit_prefix)
145 if (const auto node = MooseBase::getHitNode(params))
146 prefix += Moose::hitMessagePrefix(*node);
147
148 // Don't have context without type and name
149 if (!params.isMooseBaseObject())
150 return prefix;
151
152 const auto & name = params.getObjectName();
153 const std::string base = params.hasBase() ? params.getBase() : "object";
154 const bool is_main_app = base == "Application" && name == AppFactory::main_app_name;
155 prefix += "The following occurred in the ";
156 if (is_main_app)
157 prefix += "main " + base;
158 else
159 prefix += base;
160 if (base != params.getObjectName() && name.size() && !is_main_app)
161 prefix += " '" + name + "'";
162 prefix += " of type " + params.getObjectType() + ".";
163 return prefix + "\n\n";
164}
static const std::string main_app_name
The name for the "main" moose application.
Definition AppFactory.h:68
bool isMooseBaseObject() const
const std::string & getObjectType() const
std::string hitMessagePrefix(const hit::Node &node)
Get the prefix to be associated with a hit node for a message.
Definition Moose.C:915

◆ mooseDeprecated() [1/2]

template<typename... Args>
void MooseBase::mooseDeprecated ( Args &&...  args) const
inlineinherited

Emits a deprecation warning prefixed with the object name and type, and a stack trace.

Definition at line 317 of file MooseBase.h.

318 {
320 _console, false, true, true, messagePrefix(true), std::forward<Args>(args)...);
321 }
void mooseDeprecatedStream(S &oss, const bool expired, const bool print_title, const bool show_trace, Args &&... args)
Definition MooseError.h:252

Referenced by MooseApp::addCapability(), DataFileInterface::getDataFileName(), DataFileInterface::getDataFileNameByName(), MooseApp::getRecoverFileBase(), MooseApp::hasRecoverFileBase(), MooseApp::MooseApp(), and MooseApp::setupOptions().

◆ mooseDeprecated() [2/2]

template<typename... Args>
void SolutionInvalidInterface::mooseDeprecated ( Args &&...  args) const
inlineinherited

◆ mooseDeprecatedNoTrace()

template<typename... Args>
void MooseBase::mooseDeprecatedNoTrace ( Args &&...  args) const
inlineinherited

Emits a deprecation warning prefixed with the object name and type, and no stack trace.

Definition at line 327 of file MooseBase.h.

328 {
330 _console, false, true, false, messagePrefix(true), std::forward<Args>(args)...);
331 }

Referenced by MooseApp::MooseApp().

◆ mooseDocumentedError()

template<typename... Args>
void MooseBase::mooseDocumentedError ( const std::string &  repo_name,
const unsigned int  issue_num,
Args &&...  args 
) const
inlineinherited

Definition at line 277 of file MooseBase.h.

280 {
282 repo_name, issue_num, argumentsToString(std::forward<Args>(args)...)),
283 /* with_prefix = */ true);
284 }
std::string formatMooseDocumentedError(const std::string &repo_name, const unsigned int issue_num, const std::string &msg)
Formats a documented error.
Definition MooseError.C:140

◆ mooseError()

template<typename... Args>
void MooseBase::mooseError ( Args &&...  args) const
inlineinherited

Emits an error prefixed with object name and type and optionally a file path to the top-level block parameter if available.

Definition at line 271 of file MooseBase.h.

272 {
273 callMooseError(argumentsToString(std::forward<Args>(args)...), /* with_prefix = */ true);
274 }

Referenced by CopyMeshPartitioner::_do_partition(), GridPartitioner::_do_partition(), HierarchicalGridPartitioner::_do_partition(), PetscExternalPartitioner::_do_partition(), AdaptivityAction::act(), AddBoundsVectorsAction::act(), AddFVICAction::act(), AddICAction::act(), AddMeshGeneratorAction::act(), AddPeriodicBCAction::act(), AddTimeStepperAction::act(), AddVectorPostprocessorAction::act(), ChainControlSetupAction::act(), CheckFVBCAction::act(), CheckIntegrityAction::act(), CombineComponentsMeshes::act(), CommonOutputAction::act(), CreateDisplacedProblemAction::act(), CreateExecutionerAction::act(), CreateProblemAction::act(), CreateProblemDefaultAction::act(), CSGOnlyAction::act(), DeprecatedBlockAction::act(), InitProblemAction::act(), MaterialOutputAction::act(), SetAdaptivityOptionsAction::act(), SetupDebugAction::act(), SetupMeshAction::act(), SetupMeshCompleteAction::act(), SetupPredictorAction::act(), SetupTimeStepperAction::act(), SplitMeshAction::act(), Action::Action(), AddActionComponentAction::AddActionComponentAction(), PhysicsComponentInterface::addBoundaryConditionsFromComponents(), MooseApp::addCapabilityInternal(), DistributedRectilinearMeshGenerator::addElement(), MooseApp::addExecutor(), SubProblem::addFunctor(), PhysicsComponentInterface::addInitialConditionsFromComponents(), ComponentJunction::addMeshGenerators(), MeshGenerator::addMeshSubgenerator(), SubProblem::addPiecewiseByBlockLambdaFunctor(), DistributedRectilinearMeshGenerator::addPoint(), DiracKernelBase::addPointWithValidId(), CreateDisplacedProblemAction::addProxyRelationshipManagers(), MooseMesh::addQuadratureNode(), AddActionComponentAction::addRelationshipManagers(), WebServerControl::addServerAction(), AddVariableAction::addVariable(), SubProblem::addVectorTag(), MooseVariableScalar::adUDot(), Output::advancedExecuteOn(), MooseVariableBase::allDofIndices(), MooseApp::appNameToLibName(), MultiApp::appPostprocessorValue(), MultiApp::appProblem(), MultiApp::appProblemBase(), MultiApp::appUserObjectBase(), MooseApp::attachRelationshipManagers(), MooseApp::attachRelationshipManagers(), Function::average(), BatchMeshGeneratorAction::BatchMeshGeneratorAction(), MooseMesh::buildCoarseningMap(), MultiApp::buildComm(), DistributedRectilinearMeshGenerator::buildCube(), PiecewiseTabularInterface::buildFromFile(), PiecewiseTabularInterface::buildFromJSON(), PiecewiseTabularInterface::buildFromXY(), MooseMesh::buildLowerDMesh(), GeneratedMesh::buildMesh(), MeshGeneratorMesh::buildMesh(), SpiralAnnularMesh::buildMesh(), TiledMesh::buildMesh(), MooseMesh::buildRefinementMap(), MaterialBase::buildRequiredMaterials(), MooseMesh::buildTypedMesh(), MooseMesh::cacheFaceInfoVariableOwnership(), CartesianGridDivision::CartesianGridDivision(), CartesianMeshGenerator::CartesianMeshGenerator(), EigenExecutionerBase::chebyshev(), SubProblem::checkBlockMatProps(), PhysicsBase::checkBlockRestrictionIdentical(), ComponentBoundaryConditionInterface::checkBoundaryConditionsAllRequested(), SubProblem::checkBoundaryMatProps(), PhysicsBase::checkComponentType(), IterationCountConvergence::checkConvergence(), MooseMesh::checkCoordinateSystems(), DiffusionLHDGAssemblyHelper::checkCoupling(), DefaultConvergenceBase::checkDuplicateSetSharedExecutionerParams(), MooseMesh::checkDuplicateSubdomainNames(), MaterialBase::checkExecutionStage(), FVFluxBC::checkFaceIntegrity(), FVInterfaceKernel::checkFaceIntegrity(), PhysicsVariableCoordinator::checkFVAdjacency(), MeshGenerator::checkGetMesh(), ReporterTransferInterface::checkHasReporterValue(), EigenExecutionerBase::checkIntegrity(), Eigenvalue::checkIntegrity(), ExplicitTimeIntegrator::checkLinearConvergence(), MooseApp::checkMetaDataIntegrity(), MeshDiagnosticsGenerator::checkNonConformalMeshFromAdaptivity(), MeshDiagnosticsGenerator::checkNonMatchingEdges(), PostprocessorInterface::checkParam(), Moose::PeriodicBCHelper::checkPeriodicParams(), Sampler::checkReinitStatus(), MultiAppTransfer::checkSiblingsTransferSupported(), NEML2Action::checkStatefulConsistency(), MaterialBase::checkStatefulSanity(), AddDefaultConvergenceAction::checkUnusedMultiAppFixedPointConvergenceParameters(), AddDefaultConvergenceAction::checkUnusedNonlinearConvergenceParameters(), AddDefaultConvergenceAction::checkUnusedSteadyStateConvergenceParameters(), Moose::PetscSupport::checkUserProvidedPetscOption(), MultiAppTransfer::checkVariable(), MeshDiagnosticsGenerator::checkWatertightNodesets(), MeshDiagnosticsGenerator::checkWatertightSidesets(), MooseMesh::clone(), LibmeshPartitioner::clone(), CombinerGenerator::CombinerGenerator(), MooseVariableFieldBase::componentName(), VariableCondensationPreconditioner::computeDInverseDiag(), CompositionDT::computeDT(), MooseVariableFieldBase::computeFaceValues(), TimeStepper::computeFailedDT(), IterationAdaptiveDT::computeFailedDT(), MooseMesh::computeFiniteVolumeCoords(), AdvancedExtruderGenerator::computeNodeNormals(), Moose::Kokkos::ResidualObject::computeOffDiagJacobian(), MaterialBase::computeProperties(), ResidualObject::computeResidualAndJacobian(), TimeStepper::computeStep(), AStableDirk4::computeTimeDerivatives(), BDF2::computeTimeDerivatives(), CrankNicolson::computeTimeDerivatives(), ExplicitEuler::computeTimeDerivatives(), ExplicitRK2::computeTimeDerivatives(), ExplicitTVDRK2::computeTimeDerivatives(), ImplicitEuler::computeTimeDerivatives(), ImplicitMidpoint::computeTimeDerivatives(), LStableDirk2::computeTimeDerivatives(), LStableDirk3::computeTimeDerivatives(), LStableDirk4::computeTimeDerivatives(), NewmarkBeta::computeTimeDerivatives(), ConcentricCircleMesh::ConcentricCircleMesh(), ConditionalEnableControl::ConditionalEnableControl(), TimeStepper::constrainStep(), LibtorchNeuralNetControl::controlNeuralNet(), TransientBase::convergedToSteadyState(), ParsedConvergence::convertRealToBool(), MooseApp::copyInputs(), CopyMeshPartitioner::CopyMeshPartitioner(), MultiApp::createApp(), MooseApp::createExecutors(), AddVariableAction::createInitialConditionAction(), MooseApp::createRMFromTemplateAndInit(), Function::curl(), ReporterTransferInterface::declareClone(), Moose::Kokkos::MaterialBase::declareKokkosPropertyInternal(), MeshGenerator::declareMeshProperty(), ReporterTransferInterface::declareVectorClone(), FunctorRelationshipManager::delete_remote_elements(), MooseMesh::deleteRemoteElements(), MooseApp::determineLibtorchDeviceType(), MeshDiagnosticsGenerator::diagnosticsLog(), Function::div(), FunctorBinnedValuesDivision::divisionIndex(), FunctorRelationshipManager::dofmap_reinit(), MooseApp::dynamicAllRegistration(), MooseApp::dynamicAppRegistration(), DistributedRectilinearMeshGenerator::elemId(), MooseApp::errorCheck(), MooseMesh::errorIfDistributedMesh(), MultiAppTransfer::errorIfObjectExecutesOnTransferInSourceApp(), FixedPointSolve::examineFixedPointConvergence(), Eigenvalue::execute(), TransientBase::execute(), WebServerControl::execute(), MooseApp::executeExecutioner(), FVInterfaceKernel::faceArg1(), FVInterfaceKernel::faceArg2(), MultiApp::fillPositions(), MooseApp::finalizeRestore(), Transfer::find_sys(), PhysicsVariableCoordinator::findOrCreate(), DiracKernelInfo::findPoint(), FixedPointSolve::findTransformedSystem(), FixedPointSolve::FixedPointSolve(), FunctionDT::FunctionDT(), FunctionScalarAux::FunctionScalarAux(), FunctionScalarIC::FunctionScalarIC(), LinearFVBoundaryCondition::functorFaceArg(), FVInitialConditionTempl< T >::FVInitialConditionTempl(), FVScalarLagrangeMultiplierInterface::FVScalarLagrangeMultiplierInterface(), AdvancedExtruderGenerator::generate(), BoundingBoxNodeSetGenerator::generate(), CoarsenBlockGenerator::generate(), CombinerGenerator::generate(), CutMeshByLevelSetGeneratorBase::generate(), DistributedRectilinearMeshGenerator::generate(), ElementOrderConversionGenerator::generate(), ExtraNodesetGenerator::generate(), FileMeshGenerator::generate(), FlipSidesetGenerator::generate(), GeneratedMeshGenerator::generate(), LowerDBlockFromSidesetGenerator::generate(), MeshCollectionGenerator::generate(), MeshDiagnosticsGenerator::generate(), MeshExtruderGenerator::generate(), MeshRepairGenerator::generate(), MoveNodeGenerator::generate(), PlaneIDMeshGenerator::generate(), PolyLineMeshFollowingNodeSetGenerator::generate(), ProjectSideSetOntoLevelSetGenerator::generate(), RenameBlockGenerator::generate(), RenameBoundaryGenerator::generate(), RenumberBySubdomainGenerator::generate(), SmoothMeshGenerator::generate(), SpiralAnnularMeshGenerator::generate(), StackGenerator::generate(), SubdomainBoundingBoxGenerator::generate(), SubdomainPerElementGenerator::generate(), TiledMeshGenerator::generate(), XYMeshLineCutter::generate(), XYZDelaunayGenerator::generate(), PatternedMeshGenerator::generate(), MeshGenerator::generateCSG(), MeshGenerator::generateData(), GeneratedMesh::GeneratedMesh(), GeneratedMeshGenerator::GeneratedMeshGenerator(), MeshGenerator::generateInternal(), MeshGenerator::generateInternalCSG(), CircularBoundaryCorrectionGenerator::generateRadialCorrectionFactor(), MooseMesh::getAxisymmetricRadialCoord(), MooseMesh::getBlockConnectedBlocks(), MooseMesh::getBoundaryID(), MultiApp::getBoundingBox(), ChainControl::getChainControlDataByName(), WebServerControl::getClientInfo(), MooseMesh::getCoarseningMap(), MultiApp::getCommandLineArgs(), MooseVariableBase::getContinuity(), Control::getControllableParameterByName(), MooseMesh::getCoordSystem(), PhysicsBase::getCoupledPhysics(), PhysicsBase::getCoupledPhysics(), DataFileInterface::getDataFilePath(), TransfiniteMeshGenerator::getDiscreteEdge(), MooseVariableBase::getDofIndices(), VariableCondensationPreconditioner::getDofToCondense(), TransfiniteMeshGenerator::getEdge(), EigenExecutionerBase::getEigenSystemConvergence(), MooseMesh::getElementIDIndex(), Material::getElementIDNeighbor(), Material::getElementIDNeighborByName(), MooseMesh::getElemIDMapping(), MooseMesh::getElemIDsOnBlocks(), WebServerControl::Response::getError(), MultiApp::getExecutioner(), MooseApp::getExecutor(), MultiAppTransfer::getFromMultiApp(), MultiAppTransfer::getFromMultiAppInfo(), SubProblem::getFunctor(), MooseMesh::getGeneralAxisymmetricCoordAxis(), MaterialPropertyInterface::getGenericMaterialPropertyByName(), DistributedRectilinearMeshGenerator::getGhostNeighbors(), DistributedRectilinearMeshGenerator::getIndices(), MaterialPropertyInterface::getKokkosBlockMaterialProperty(), FunctionInterface::getKokkosFunctionByName(), MaterialPropertyInterface::getKokkosMaterialPropertyByName(), Material::getMaterialByName(), SubProblem::getMatrixTagID(), AnnularMesh::getMaxInDimension(), GeneratedMesh::getMaxInDimension(), MeshGenerator::getMeshGeneratorNameFromParam(), MeshGenerator::getMeshGeneratorNamesFromParam(), AnnularMesh::getMinInDimension(), GeneratedMesh::getMinInDimension(), MultiAppTransfer::getMultiApp(), DistributedRectilinearMeshGenerator::getNeighbors(), MooseMesh::getNodeBlockIds(), MooseMesh::getNodeList(), MooseMesh::getPairedBoundaryMapping(), MaterialOutputAction::getParams(), PlaneIDMeshGenerator::getPlaneID(), PostprocessorInterface::getPostprocessorValueByNameInternal(), ComponentMaterialPropertyInterface::getPropertyValue(), MooseMesh::getRefinementMap(), MooseBase::getRenamedParam(), ReporterInterface::getReporterContextBaseByName(), ReporterInterface::getReporterName(), Reporter::getReporterValueName(), MooseApp::getRestartableDataMap(), MooseApp::getRestartableDataMapName(), MooseApp::getRestartableMetaData(), MooseApp::getRMClone(), MooseObject::getSharedPtr(), MooseObject::getSharedPtr(), PhysicsBase::getSolverSystem(), MooseMesh::getSubdomainBoundaryIds(), TransientBase::getTimeIntegratorNames(), MultiAppTransfer::getToMultiApp(), MultiAppTransfer::getToMultiAppInfo(), MooseMesh::getUniqueCoordSystem(), UserObjectInterface::getUserObjectBaseByName(), UserObjectInterface::getUserObjectName(), SubProblem::getVariableHelper(), AddPeriodicBCAction::getVariables(), VectorPostprocessorInterface::getVectorPostprocessorName(), SubProblem::getVectorTag(), SubProblem::getVectorTagID(), MultiApp::globalAppToLocal(), Function::gradient(), MooseVariableBase::hasDoFsOnNodes(), PostprocessorInterface::hasPostprocessor(), PostprocessorInterface::hasPostprocessorByName(), ReporterInterface::hasReporterValue(), ReporterInterface::hasReporterValueByName(), VectorPostprocessorInterface::hasVectorPostprocessor(), VectorPostprocessorInterface::hasVectorPostprocessor(), VectorPostprocessorInterface::hasVectorPostprocessorByName(), VectorPostprocessorInterface::hasVectorPostprocessorByName(), TransientBase::incrementStepOrReject(), NEML2Action::inferMOOSEIOType(), AddVariableAction::init(), MooseMesh::init(), Sampler::init(), EigenExecutionerBase::init(), TransientBase::init(), MFEMMesh::init(), CrankNicolson::init(), ExplicitTimeIntegrator::init(), FixedPointIterationAdaptiveDT::init(), IterationAdaptiveDT::init(), MultiApp::init(), NestedDivision::initialize(), ParsedConvergence::initializeConstantSymbol(), PhysicsBase::initializePhysics(), SubProblem::initialSetup(), AuxKernelBase::initialSetup(), SolutionScalarAux::initialSetup(), FullSolveMultiApp::initialSetup(), ExplicitTimeIntegrator::initialSetup(), Function::integral(), InternalSideIndicatorBase::InternalSideIndicatorBase(), EigenExecutionerBase::inversePowerIteration(), Sampler::isAdaptiveSamplingCompleted(), MooseMesh::isBoundaryFullyExternalToSubdomains(), MooseVariableBase::isNodal(), IterationAdaptiveDT::IterationAdaptiveDT(), IterationCountConvergence::IterationCountConvergence(), LibmeshPartitioner::LibmeshPartitioner(), MooseApp::libNameToAppName(), LineSearch::lineSearch(), LibtorchNeuralNetControl::loadControlNeuralNetFromFile(), MooseApp::loadLibraryAndDependencies(), ReporterPointMarker::markerSetup(), Material::Material(), Distribution::median(), FunctorRelationshipManager::mesh_reinit(), MeshDiagnosticsGenerator::MeshDiagnosticsGenerator(), MeshExtruderGenerator::MeshExtruderGenerator(), MeshRepairGenerator::MeshRepairGenerator(), SetupMeshAction::modifyParamsForUseSplit(), MooseApp::MooseApp(), MeshMetaDataInterface::mooseErrorInternal(), MooseMesh::MooseMesh(), MooseObject::MooseObject(), UserObjectInterface::mooseObjectError(), MooseVariableBase::MooseVariableBase(), MoveNodeGenerator::MoveNodeGenerator(), MultiApp::MultiApp(), MultiAppTransfer::MultiAppTransfer(), NewmarkBeta::NewmarkBeta(), DistributedRectilinearMeshGenerator::nodeId(), DistributedRectilinearMeshGenerator::numNeighbors(), Output::onInterval(), FunctorRelationshipManager::operator()(), RelationshipManager::operator==(), ActionComponent::outerSurfaceArea(), ActionComponent::outerSurfaceBoundaries(), MortarNodalGeometryOutput::output(), Output::Output(), MooseApp::outputMachineReadableData(), DistributedRectilinearMeshGenerator::paritionSquarely(), ParsedConvergence::ParsedConvergence(), ParsedCurveGenerator::ParsedCurveGenerator(), ExplicitTimeIntegrator::performExplicitSolve(), PetscExternalPartitioner::PetscExternalPartitioner(), PhysicsBasedPreconditioner::PhysicsBasedPreconditioner(), PIDTransientControl::PIDTransientControl(), PiecewiseTabularInterface::PiecewiseTabularInterface(), CutMeshByLevelSetGeneratorBase::pointPairLevelSetInterception(), ProjectSideSetOntoLevelSetGenerator::pointPairLevelSetInterception(), ReporterInterface::possiblyCheckHasReporter(), VectorPostprocessorInterface::possiblyCheckHasVectorPostprocessorByName(), AStableDirk4::postResidual(), ExplicitRK2::postResidual(), ExplicitTVDRK2::postResidual(), ImplicitMidpoint::postResidual(), LStableDirk2::postResidual(), LStableDirk3::postResidual(), LStableDirk4::postResidual(), VariableCondensationPreconditioner::preallocateCondensedJacobian(), Predictor::Predictor(), TransientBase::preExecute(), MooseMesh::prepare(), MooseMesh::prepared(), FixedPointSolve::printFixedPointConvergenceReason(), MFEMFunctorMaterial::processLiterals(), MultiApp::readCommandLineArguments(), CoarsenBlockGenerator::recursiveCoarsen(), MooseApp::recursivelyCreateExecutors(), FunctorRelationshipManager::redistribute(), MooseApp::registerRestartableData(), MooseApp::registerRestartableNameWithFilter(), Sampler::reinit(), MooseApp::removeRelationshipManager(), PhysicsBase::reportPotentiallyMissedParameters(), PhysicsVariableCoordinator::requestVariable(), NEML2Action::resolveParameterName(), MooseApp::restore(), RinglebMesh::RinglebMesh(), RinglebMeshGenerator::RinglebMeshGenerator(), MooseApp::run(), MooseApp::runInputs(), ScalarComponentIC::ScalarComponentIC(), DistributedRectilinearMeshGenerator::scaleNodalPositions(), FunctorRelationshipManager::set_mesh(), MooseVariableBase::setActiveTags(), DistributedRectilinearMeshGenerator::setBoundaryNames(), MooseMesh::setCoordSystem(), MooseMesh::setGeneralAxisymmetricCoordAxes(), MeshGenerator::setMeshProperty(), MooseApp::setMFEMDevice(), Sampler::setNumberOfCols(), Sampler::setNumberOfRandomSeeds(), Sampler::setNumberOfRows(), Split::setup(), TransientMultiApp::setupApp(), Moose::PeriodicBCHelper::setupAutoPeriodicBoundaries(), NEML2Action::setupDerivativeMappings(), NEML2Action::setupInputMappings(), Moose::PeriodicBCHelper::setupManualPeriodicBoundaries(), SetupMeshAction::setupMesh(), MooseApp::setupOptions(), NEML2Action::setupOutputMappings(), NEML2Action::setupParameterDerivativeMappings(), NEML2Action::setupParameterMappings(), TimeSequenceStepperBase::setupSequence(), TransientBase::setupTimeIntegrator(), PhysicsBase::shouldCreateIC(), PhysicsBase::shouldCreateTimeDerivative(), PhysicsBase::shouldCreateVariable(), SingleMatrixPreconditioner::SingleMatrixPreconditioner(), MooseVariableBase::sizeMatrixTagData(), SmoothMeshGenerator::SmoothMeshGenerator(), SolutionTimeAdaptiveDT::SolutionTimeAdaptiveDT(), Moose::MFEM::LinearSolverBase::Solve(), TimeIntegrator::solve(), ExplicitRK2::solve(), ExplicitTVDRK2::solve(), FullSolveMultiApp::solveStep(), UserObject::spatialPoints(), UserObject::spatialValue(), SpiralAnnularMesh::SpiralAnnularMesh(), SpiralAnnularMeshGenerator::SpiralAnnularMeshGenerator(), MeshRepairGenerator::splitNonConvexPolygons(), WebServerControl::startServer(), StitchedMesh::StitchedMesh(), MaterialBase::subdomainSetup(), CutMeshByLevelSetGeneratorBase::tet4ElemCutter(), Action::timedAct(), Function::timeDerivative(), Function::timeIntegral(), ParsedCurveGenerator::tSectionSpaceDefiner(), MooseVariableScalar::uDot(), MooseVariableScalar::uDotDot(), MooseVariableScalar::uDotDotOld(), MooseVariableScalar::uDotOld(), MooseBase::uniqueName(), AuxScalarKernel::uOld(), ScalarKernelBase::uOld(), Function::value(), Moose::Kokkos::ResidualObject::variable(), VariableCondensationPreconditioner::VariableCondensationPreconditioner(), PhysicsBase::variableExists(), MultiAppTransfer::variableIntegrityCheck(), AddVariableAction::variableType(), SubProblem::vectorTagName(), SubProblem::vectorTagType(), Function::vectorValue(), SubProblem::verifyVectorTags(), ActionComponent::volume(), WebServerControl::WebServerControl(), WebServerControl::writePortFile(), MFEMMesh::writeRecoveryFiles(), and MooseApp::writeRestartableMetaData().

◆ mooseErrorNonPrefixed()

template<typename... Args>
void MooseBase::mooseErrorNonPrefixed ( Args &&...  args) const
inlineinherited

Emits an error without the prefixing included in mooseError().

Definition at line 290 of file MooseBase.h.

291 {
292 callMooseError(argumentsToString(std::forward<Args>(args)...), /* with_prefix = */ false);
293 }

◆ mooseInfo()

template<typename... Args>
void MooseBase::mooseInfo ( Args &&...  args) const
inlineinherited

◆ mooseWarning() [1/2]

template<typename... Args>
void MooseBase::mooseWarning ( Args &&...  args) const
inlineinherited

Emits a warning prefixed with object name and type.

Definition at line 299 of file MooseBase.h.

300 {
301 moose::internal::mooseWarningStream(_console, messagePrefix(true), std::forward<Args>(args)...);
302 }
void mooseWarningStream(S &oss, Args &&... args)
Definition MooseError.h:197

Referenced by DiracKernelInfo::findPoint(), DataFileInterface::getDataFilePath(), MooseApp::loadLibraryAndDependencies(), MooseBase::paramWarning(), and MooseApp::setupOptions().

◆ mooseWarning() [2/2]

template<typename... Args>
void SolutionInvalidInterface::mooseWarning ( Args &&...  args) const
inlineinherited

Definition at line 73 of file SolutionInvalidInterface.h.

74 {
75 _si_moose_base.MooseBase::mooseWarning(std::forward<Args>(args)...);
76 flagSolutionWarningMultipleRegistration(_si_moose_base.name() + ": warning");
77 }

Referenced by CopyMeshPartitioner::_do_partition(), AddFunctionAction::act(), AddKernelAction::act(), CommonOutputAction::act(), MaterialOutputAction::act(), MeshOnlyAction::act(), MooseMesh::addPeriodicVariable(), BoundaryMarker::BoundaryMarker(), DistributedRectilinearMeshGenerator::buildCube(), CartesianMeshGenerator::CartesianMeshGenerator(), CheckOutputAction::checkConsoleOutput(), MultiAppTransfer::checkMultiAppExecuteOn(), MeshDiagnosticsGenerator::checkNonMatchingEdges(), MeshDiagnosticsGenerator::checkPolygons(), ActionComponent::checkRequiredTasks(), PhysicsBase::checkRequiredTasks(), MultiApp::createApp(), MeshDiagnosticsGenerator::diagnosticsLog(), CartesianGridDivision::divisionIndex(), CylindricalGridDivision::divisionIndex(), SphericalGridDivision::divisionIndex(), Postprocessor::evaluateDotWarning(), FiniteDifferencePreconditioner::FiniteDifferencePreconditioner(), FixedPointSolve::FixedPointSolve(), BSplineCurveGenerator::generate(), RenumberBySubdomainGenerator::generate(), SubdomainPerElementGenerator::generate(), SurfaceMeshGeneratorBase::get2DElemNormal(), MultiAppTransfer::getAppInfo(), FunctorBinnedValuesDivision::getBinIndex(), IndicatorMarker::IndicatorMarker(), CartesianGridDivision::initialize(), CylindricalGridDivision::initialize(), SphericalGridDivision::initialize(), MaterialBase::initStatefulProperties(), IterationAdaptiveDT::limitDTToPostprocessorValue(), MFEMRefinementMarker::MFEMRefinementMarker(), NewmarkBeta::NewmarkBeta(), Output::Output(), MaterialOutputAction::outputHelper(), Executioner::problem(), PhysicsBase::reportPotentiallyMissedParameters(), MaterialBase::resetQpProperties(), MooseMesh::setCoordSystem(), TransientMultiApp::solveStep(), MeshRepairGenerator::splitNonConvexPolygons(), and VariableCondensationPreconditioner::VariableCondensationPreconditioner().

◆ mooseWarningNonPrefixed() [1/2]

template<typename... Args>
void MooseBase::mooseWarningNonPrefixed ( Args &&...  args) const
inlineinherited

Emits a warning without the prefixing included in mooseWarning().

Definition at line 308 of file MooseBase.h.

309 {
310 moose::internal::mooseWarningStream(_console, std::forward<Args>(args)...);
311 }

◆ mooseWarningNonPrefixed() [2/2]

template<typename... Args>
void SolutionInvalidInterface::mooseWarningNonPrefixed ( Args &&...  args) const
inlineinherited

Definition at line 80 of file SolutionInvalidInterface.h.

81 {
82 _si_moose_base.MooseBase::mooseWarningNonPrefixed(std::forward<Args>(args)...);
83 flagSolutionWarningMultipleRegistration(_si_moose_base.name() + ": warning");
84 }

◆ mortarData() [1/2]

MortarInterfaceWarehouse & FEProblemBase::mortarData ( )
inlineinherited

Definition at line 2773 of file FEProblemBase.h.

2773{ return *_mortar_data; }

◆ mortarData() [2/2]

const MortarInterfaceWarehouse & FEProblemBase::mortarData ( ) const
inlineinherited

Returns the mortar data object.

Definition at line 2772 of file FEProblemBase.h.

2772{ return *_mortar_data; }

◆ name()

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

Get the name of the class.

Returns
The name of the class

Definition at line 103 of file MooseBase.h.

104 {
105 mooseAssert(_name.size(), "Empty name");
106 return _name;
107 }
const std::string & _name
The name of this class.
Definition MooseBase.h:381

Referenced by AdaptivityAction::act(), AddActionComponentAction::act(), AddElementalFieldAction::act(), AddPeriodicBCAction::act(), AddTimeStepperAction::act(), CommonOutputAction::act(), CopyNodalVarsAction::act(), CSGOnlyAction::act(), DeprecatedBlockAction::act(), DisplayGhostingAction::act(), MaterialOutputAction::act(), SetupResidualDebugAction::act(), SetupTimeIntegratorAction::act(), FEProblemBase::addAnyRedistributers(), Executioner::addAttributeReporter(), FEProblemBase::addAuxKernel(), MFEMProblem::addAuxKernel(), FEProblemBase::addAuxScalarKernel(), DisplacedProblem::addAuxVariable(), FEProblemBase::addBoundaryCondition(), MFEMProblem::addBoundaryCondition(), MFEMComplexWeakForm::addBoundaryCondition(), MFEMWeakForm::addBoundaryCondition(), PhysicsComponentInterface::addComponent(), FEProblemBase::addConstraint(), FEProblemBase::addConvergence(), FEProblemBase::addDamper(), MFEMProblem::addDefaultProblemComposer(), MFEMProblem::addDefaultWeakForm(), FEProblemBase::addDGKernel(), FEProblemBase::addDiracKernel(), FEProblemBase::addDistribution(), MooseApp::addExecutor(), MooseApp::addExecutorParams(), MFEMProblem::addFESpace(), MFEMProblem::addFESpaceHierarchy(), FEProblemBase::addFunction(), MFEMProblem::addFunction(), SubProblem::addFunctor(), FEProblemBase::addFunctorMaterial(), MFEMProblem::addFunctorMaterial(), FunctorMaterial::addFunctorProperty(), FunctorMaterial::addFunctorPropertyByBlocks(), FEProblemBase::addFVBC(), FEProblemBase::addFVGradientMethod(), FEProblemBase::addFVInitialCondition(), FEProblemBase::addFVInterfaceKernel(), FEProblemBase::addFVInterpolationMethod(), FEProblemBase::addFVKernel(), ADDGKernel::ADDGKernel(), FEProblemBase::addHDGKernel(), MFEMProblem::addImagComponentToBC(), MFEMProblem::addImagComponentToKernel(), FEProblemBase::addIndicator(), MFEMProblem::addIndicator(), FEProblemBase::addInitialCondition(), MFEMProblem::addInitialCondition(), FEProblemBase::addInterfaceKernel(), FEProblemBase::addInterfaceMaterial(), ElementAndTraceScalarHDGAssemblyHelper::additionalROVariables(), BoundaryIntegralValueConstraint::additionalROVariables(), DiffusionLHDGKernel::additionalROVariables(), ADKernelScalarBase::additionalROVariables(), FEProblemBase::addKernel(), MFEMProblem::addKernel(), MFEMComplexWeakForm::addKernel(), FEProblemBase::addLinearFVBC(), FEProblemBase::addLinearFVKernel(), FEProblemBase::addMarker(), MFEMProblem::addMarker(), FEProblemBase::addMaterial(), FEProblemBase::addMaterialHelper(), ComponentMaterialPropertyInterface::addMaterials(), FEProblemBase::addMeshDivision(), MooseApp::addMeshGenerator(), ComponentJunction::addMeshGenerators(), ComponentMeshTransformHelper::addMeshGenerators(), CylinderComponent::addMeshGenerators(), MeshGenerator::addMeshSubgenerator(), MeshGenerator::addMeshSubgenerator(), MFEMProblem::addMFEMSolver(), FEProblemBase::addMultiApp(), FEProblemBase::addNodalKernel(), MFEMProblem::addObject(), FEProblemBase::addObject(), InitialConditionWarehouse::addObject(), ComponentPhysicsInterface::addPhysics(), SubProblem::addPiecewiseByBlockLambdaFunctor(), FEProblemBase::addPostprocessor(), MFEMProblem::addPostprocessor(), UserObjectBase::addPostprocessorDependencyHelper(), AuxKernelBase::addPostprocessorDependencyHelper(), InitialConditionBase::addPostprocessorDependencyHelper(), FEProblemBase::addPredictor(), MFEMProblem::addProblemComposer(), CreateDisplacedProblemAction::addProxyRelationshipManagers(), MFEMProblem::addRealComponentToBC(), MFEMProblem::addRealComponentToKernel(), AddActionComponentAction::addRelationshipManagers(), FEProblemBase::addReporter(), FEProblemBase::addSampler(), FEProblemBase::addScalarKernel(), WebServerControl::addServerActionsInternal(), PhysicsBase::addSharedAuxVariable(), PhysicsBase::addSharedSolverVariable(), FEProblemBase::addTimeIntegrator(), FEProblemBase::addTransfer(), MFEMProblem::addTransfer(), PhysicsBase::addUserObject(), FEProblemBase::addUserObject(), UserObjectBase::addUserObjectDependencyHelper(), AuxKernelBase::addUserObjectDependencyHelper(), InitialConditionBase::addUserObjectDependencyHelper(), DisplacedProblem::addVariable(), FEProblemBase::addVectorPostprocessor(), MFEMProblem::addVectorPostprocessor(), UserObjectBase::addVectorPostprocessorDependencyHelper(), AuxKernelBase::addVectorPostprocessorDependencyHelper(), MFEMProblem::addWeakForm(), MooseLinearVariableFV< OutputType >::adError(), Output::advancedExecuteOn(), AdvancedExtruderGenerator::AdvancedExtruderGenerator(), NEML2ModelExecutor::advanceState(), MooseVariableBase::allDofIndices(), MooseApp::appBinaryName(), MooseApp::appendMeshGenerator(), MultiApp::appPostprocessorValue(), MultiApp::appProblem(), MultiApp::appProblemBase(), MultiApp::appUserObjectBase(), ArrayDGKernel::ArrayDGKernel(), ArrayParsedAux::ArrayParsedAux(), PhysicsBase::assignBlocks(), AStableDirk4::AStableDirk4(), Function::average(), MultiApp::backup(), BreakMeshByBlockGenerator::BreakMeshByBlockGenerator(), CoarsenedPiecewiseLinear::buildCoarsenedGrid(), PiecewiseTabularInterface::buildFromFile(), PiecewiseTabularInterface::buildFromXY(), MFEMGeometricMultigridSolver::BuildMultigrid(), MooseMesh::buildNodeListFromSideList(), MultiAppVariableValueSamplePostprocessorTransfer::cacheElemToPostprocessorData(), MooseBase::callMooseError(), ChangeOverFixedPointPostprocessor::ChangeOverFixedPointPostprocessor(), ChangeOverTimePostprocessor::ChangeOverTimePostprocessor(), PhysicsBase::checkBlockRestrictionIdentical(), PhysicsBase::checkComponentType(), DefaultNonlinearConvergence::checkConvergence(), ParsedConvergence::checkConvergence(), checkCoupledScalarVariableBlocks(), FEProblemBase::checkDependMaterialsHelper(), FVFluxBC::checkFaceIntegrity(), FVInterfaceKernel::checkFaceIntegrity(), TaggingInterface::checkForNans(), SamplerBase::checkForStandardFieldVariableType(), PhysicsVariableCoordinator::checkFVAdjacency(), MeshGenerator::checkGetMesh(), ReporterTransferInterface::checkHasReporterValue(), FEProblemBase::checkICRestartError(), NonlinearSystemBase::checkKernelCoverage(), Moose::Kokkos::Material::checkMaterialProperty(), Material::checkMaterialProperty(), MooseApp::checkMetaDataIntegrity(), Damper::checkMinDamping(), SideUserObject::checkNoInterfaceMaterialPropertyDependencies(), MultiAppTransfer::checkParentAppUserObjectExecuteOn(), Checkpoint::checkpointInfo(), LinearFVGradientManager::checkRestartedGradientHistory(), FEProblemBase::checkUserObjectNameCollision(), BlockRestrictable::checkVariable(), DomainUserObject::checkVariable(), Coupleable::checkWritableVar(), CoarsenSurfaceMeshAlongSidesetGenerator::coarsenAlongSidesets(), MooseVariableFieldBase::componentName(), CompositeFunction::CompositeFunction(), MaterialBase::computeProperties(), FEProblemBase::computeUserObjectByName(), VectorPostprocessorVisualizationAux::computeValue(), MooseBase::connectControllableParams(), ConstantPostprocessor::ConstantPostprocessor(), Coupleable::coupledName(), CommonOutputAction::create(), MultiApp::createApp(), MooseApp::createExecutors(), MeshGeneratorSystem::createMeshGeneratorOrder(), MooseApp::createRecoverablePerfGraph(), MoveBoundaryNodesToCurveGenerator::curveGenerator(), CutMeshByPlaneGenerator::CutMeshByPlaneGenerator(), DebugResidualAux::DebugResidualAux(), MaterialBase::declareADProperty(), MFEMComplexVariable::declareCoefficients(), MFEMVariable::declareCoefficients(), MeshInfo::declareHelper(), Moose::Kokkos::MaterialBase::declareKokkosOnDemandProperty(), Moose::Kokkos::MaterialBase::declareKokkosProperty(), MeshGenerator::declareMeshesForSubByName(), MeshGenerator::declareNullMeshName(), MaterialBase::declareProperty(), MFEMCoordinateTransformations::declareRZCoefficients(), DOFMapOutput::demangle(), DerivativeSumMaterialTempl< is_ad >::DerivativeSumMaterialTempl(), MooseMesh::detectPairedSidesets(), DGKernel::DGKernel(), DGKernelBase::DGKernelBase(), DomainUserObject::DomainUserObject(), DumpObjectsProblem::dumpObjectHelper(), ElementDamper::ElementDamper(), ElementGroupCentroidPositions::ElementGroupCentroidPositions(), ElementMaterialSampler::ElementMaterialSampler(), ElementValueSampler::ElementValueSampler(), EigenKernel::enabled(), MooseMesh::errorIfDistributedMesh(), SolutionUserObjectBase::evalMeshFunction(), SolutionUserObjectBase::evalMeshFunctionGradient(), SolutionUserObjectBase::evalMultiValuedMeshFunction(), SolutionUserObjectBase::evalMultiValuedMeshFunctionGradient(), GreaterThanLessThanPostprocessor::execute(), PointValue::execute(), RestartableDataReporter::execute(), MultiAppGeneralFieldTransfer::execute(), MultiAppNearestNodeTransfer::execute(), MultiAppProjectionTransfer::execute(), MultiAppUserObjectTransfer::execute(), SideValueSampler::execute(), WebServerControl::execute(), ActionWarehouse::executeActionsWithAction(), Exodus::Exodus(), ExtraIDIntegralVectorPostprocessor::ExtraIDIntegralVectorPostprocessor(), FVInterfaceKernel::faceArg1(), FVInterfaceKernel::faceArg2(), NEML2ModelExecutor::failedInputDumpName(), FEProblemBase::FEProblemBase(), NEML2ModelExecutor::fillInputs(), MultiApp::fillPositions(), MultiAppGeometricInterpolationTransfer::fillSourceInterpolationPoints(), PointSamplerBase::finalize(), ChainControl::fullControlDataName(), FunctionArrayAux::FunctionArrayAux(), FunctionDT::FunctionDT(), FVFunctionIC::functionName(), FunctionIC::functionName(), FunctorPositions::FunctorPositions(), FunctorSmootherTempl< T >::FunctorSmootherTempl(), FVInitialConditionTempl< T >::FVInitialConditionTempl(), FVOneVarDiffusionInterface::FVOneVarDiffusionInterface(), GapValueAux::GapValueAux(), AdvancedExtruderGenerator::generate(), BoundaryDeletionGenerator::generate(), BreakMeshByBlockGenerator::generate(), BSplineCurveGenerator::generate(), CoarsenSurfaceMeshAlongSidesetGenerator::generate(), GeneratedMeshGenerator::generate(), ManifoldSubdomainGenerator::generate(), ParsedExtraElementIDGenerator::generate(), ParsedSubdomainGeneratorBase::generate(), RenameBlockGenerator::generate(), RenameBoundaryGenerator::generate(), RenumberBySubdomainGenerator::generate(), SideSetsFromNodeSetsGenerator::generate(), StitchBoundaryMeshGenerator::generate(), StitchMeshGenerator::generate(), SubdomainBoundingBoxGenerator::generate(), SubdomainsFromPartitionerGenerator::generate(), UniqueExtraIDMeshGenerator::generate(), MeshGenerator::generateInternal(), MeshGenerator::generateInternalCSG(), InterfaceMaterial::getADMaterialProperty(), Material::getADMaterialProperty(), MultiAppTransfer::getAppInfo(), MooseMesh::getBoundaryString(), MultiApp::getBoundingBox(), MooseBase::getCheckedPointerParam(), MooseApp::getCheckpointDirectories(), MFEMProblem::getComplexGridFunction(), Control::getControllableParameterByName(), Control::getControllableValue(), Control::getControllableValueByName(), FEProblemBase::getConvergence(), MeshGenerator::getCSGBase(), MeshGenerator::getCSGBasesByName(), UserObjectBase::getDependObjects(), FEProblemBase::getDistribution(), DistributionInterface::getDistribution(), DistributionInterface::getDistributionByName(), ElementUOProvider::getElementalValueLong(), ElementUOProvider::getElementalValueReal(), MultiApp::getExecutioner(), FEProblemBase::getExecutor(), MooseApp::getExecutor(), OutputWarehouse::getFileNumbers(), FEProblemBase::getFunction(), SubProblem::getFunctor(), FEProblemBase::getFVAdvectedInterpolationMethod(), FEProblemBase::getFVFaceInterpolationMethod(), FEProblemBase::getFVGradientMethod(), FEProblemBase::getFVGradientMethod(), FEProblemBase::getFVInterpolationMethod(), AuxKernelTempl< ComputeValueType >::getGenericMaterialProperty(), NodalPatchRecovery::getGenericMaterialProperty(), InterfaceMaterial::getGenericMaterialProperty(), Material::getGenericMaterialProperty(), InterfaceMaterial::getGenericNeighborMaterialProperty(), InterfaceMaterial::getGenericNeighborMaterialPropertyByName(), Material::getGenericOptionalMaterialProperty(), MaterialBase::getGenericZeroMaterialProperty(), MFEMProblem::getGridFunction(), FEProblemBase::getKokkosFunction(), FEProblemBase::getKokkosUserObject(), SolutionUserObjectBase::getLocalVarIndex(), Marker::getMarkerValue(), Material::getMaterial(), FEProblemBase::getMaterial(), Material::getMaterialByName(), AuxKernelTempl< ComputeValueType >::getMaterialProperty(), NodalPatchRecovery::getMaterialProperty(), InterfaceMaterial::getMaterialProperty(), Material::getMaterialProperty(), SubProblem::getMaterialPropertyBlockNames(), SubProblem::getMaterialPropertyBoundaryNames(), AuxKernelTempl< ComputeValueType >::getMaterialPropertyOld(), NodalPatchRecovery::getMaterialPropertyOld(), InterfaceMaterial::getMaterialPropertyOld(), Material::getMaterialPropertyOld(), AuxKernelTempl< ComputeValueType >::getMaterialPropertyOlder(), NodalPatchRecovery::getMaterialPropertyOlder(), InterfaceMaterial::getMaterialPropertyOlder(), Material::getMaterialPropertyOlder(), MFEMObject::getMatrixCoefficient(), MFEMObject::getMatrixCoefficientByName(), MeshGenerator::getMesh(), FEProblemBase::getMeshDivision(), MeshGenerator::getMeshesByName(), MooseApp::getMeshGenerator(), MeshGenerator::getMeshGeneratorNameFromParam(), MeshGenerator::getMeshGeneratorNamesFromParam(), MFEMProblem::getMFEMObject(), ActionWarehouse::getMooseAppName(), TorchFEInterpolation::getMOOSEVariable(), MultiAppTransfer::getMultiApp(), InterfaceMaterial::getNeighborADMaterialProperty(), InterfaceMaterial::getNeighborMaterialProperty(), InterfaceMaterial::getNeighborMaterialPropertyOld(), InterfaceMaterial::getNeighborMaterialPropertyOlder(), Material::getOptionalADMaterialProperty(), Material::getOptionalMaterialProperty(), Material::getOptionalMaterialPropertyOld(), Material::getOptionalMaterialPropertyOlder(), MooseBase::getParam(), FEProblemBase::getPositionsObject(), FEProblemBase::getPostprocessorValueByName(), ComponentMaterialPropertyInterface::getPropertyValue(), ReporterData::getReporterInfo(), MFEMExecutedObject::getRequestedItems(), MooseApp::getRestartableDataMap(), MooseApp::getRestartableDataMapName(), MooseApp::getRestartableMetaData(), FEProblemBase::getSampler(), MFEMObject::getScalarCoefficient(), MFEMObject::getScalarCoefficientByName(), TimedSubdomainModifier::getSubdomainIDAndCheck(), MFEMExecutedObject::getSuppliedItems(), TransientBase::getTimeStepperName(), ProjectedStatefulMaterialStorageAction::getTypeEnum(), FEProblemBase::getUserObject(), FEProblemBase::getUserObjectBase(), MFEMObject::getVectorCoefficient(), MFEMObject::getVectorCoefficientByName(), LinearFVGradientManager::gradientStateVectorName(), Terminator::handleMessage(), Control::hasControllableParameterByName(), FEProblemBase::hasConvergence(), FEProblemBase::hasDistribution(), FEProblemBase::hasFunction(), SubProblem::hasFunctor(), SubProblem::hasFunctorWithType(), FEProblemBase::hasFVGradientMethod(), FEProblemBase::hasFVInterpolationMethod(), MeshInfo::hasItem(), MooseApp::hasMeshGenerator(), MFEMProblem::hasMFEMObject(), AdvancedOutput::hasOutputHelper(), FEProblemBase::hasPostprocessor(), FEProblemBase::hasPostprocessorValueByName(), MooseApp::hasRelationshipManager(), MooseApp::hasRestartableDataMap(), MooseApp::hasRestartableMetaData(), FEProblemBase::hasUserObject(), NEML2Action::inferMOOSEIOType(), AddVariableAction::init(), AdvancedOutput::init(), IterationAdaptiveDT::init(), AdvancedOutput::initAvailableLists(), MeshInfo::initCombinedInfos(), AdvancedOutput::initExecutionTypes(), AttribName::initFrom(), NestedDivision::initialize(), TransformedPositions::initialize(), BoundaryRestrictable::initializeBoundaryRestrictable(), AuxKernelBase::initialSetup(), SolutionScalarAux::initialSetup(), MFEMScalarQuadratureFunction::initialSetup(), MFEMVectorQuadratureFunction::initialSetup(), Console::initialSetup(), JSONOutput::initialSetup(), BoundaryLinearFVFluxIntegral::initialSetup(), NodalVariableValue::initialSetup(), SideFVFluxBCIntegral::initialSetup(), MultiAppGeneralFieldFunctorTransfer::initialSetup(), MultiAppProjectionTransfer::initialSetup(), BoundaryMeshBuilder::initialSetup(), SolutionUserObjectBase::initialSetup(), AdvancedOutput::initOutputList(), AdvancedOutput::initPostprocessorOrVectorPostprocessorLists(), MaterialBase::initStatefulProperties(), Function::integral(), InterfaceKernelTempl< T >::InterfaceKernelTempl(), MultiAppGeometricInterpolationTransfer::interpolateTargetPoints(), MeshGenerator::isChildMeshGenerator(), DerivativeMaterialInterface< T >::isNotObjectVariable(), MeshGenerator::isNullMeshName(), MooseBase::isParamSetByUser(), MooseBase::isParamValid(), MeshGenerator::isParentMeshGenerator(), LinearCombinationFunction::LinearCombinationFunction(), FEProblemBase::logAdd(), MooseLinearVariableFV< OutputType >::lowerDError(), Marker::Marker(), MaterialBase::markMatPropRequested(), Material::Material(), Distribution::median(), MemoryUsageReporter::MemoryUsageReporter(), NEML2ModelExecutor::meshChanged(), MeshGenerator::meshPropertyPrefix(), MooseBase::messagePrefix(), MFEMGeometricMultigridSolver::MFEMGeometricMultigridSolver(), MFEMScalarQuadratureFunction::MFEMScalarQuadratureFunction(), MFEMVectorQuadratureFunction::MFEMVectorQuadratureFunction(), MooseApp::MooseApp(), OutputWarehouse::mooseConsole(), SolutionInvalidInterface::mooseDeprecated(), MooseVariableBase::MooseVariableBase(), MooseVariableInterface< T >::MooseVariableInterface(), SolutionInvalidInterface::mooseWarning(), SolutionInvalidInterface::mooseWarningNonPrefixed(), MoveNodesByParsedExpressionModifier::MoveNodesByParsedExpressionModifier(), MultiAppGeneralFieldTransfer::MultiAppGeneralFieldTransfer(), MultiAppUserObjectTransfer::MultiAppUserObjectTransfer(), NodalDamper::NodalDamper(), MooseLinearVariableFV< OutputType >::nodalError(), NodalPatchRecoveryAuxBase::NodalPatchRecoveryAuxBase(), NodalValueSampler::NodalValueSampler(), MeshGenerator::Comparator::operator()(), DOFMapOutput::output(), ProgressOutput::output(), Output::Output(), AdvancedOutput::outputElementalVariables(), ConsoleUtils::outputExecutionInformation(), MaterialOutputAction::outputHelper(), AdvancedOutput::outputInput(), AdvancedOutput::outputNodalVariables(), AdvancedOutput::outputPostprocessors(), Exodus::outputPostprocessors(), Nemesis::outputPostprocessors(), TableOutput::outputReporter(), AdvancedOutput::outputReporters(), AdvancedOutput::outputScalarVariables(), AdvancedOutput::outputSystemInformation(), AdvancedOutput::outputVectorPostprocessors(), SolutionInvalidInterface::paramWarning(), ParsedCurveGenerator::ParsedCurveGenerator(), ParsedODEKernel::ParsedODEKernel(), ComponentPhysicsInterface::physicsExists(), PiecewiseBilinear::PiecewiseBilinear(), PiecewiseByBlockFunctorMaterialTempl< T >::PiecewiseByBlockFunctorMaterialTempl(), PiecewiseFunction::PiecewiseFunction(), PointInUnionCheckUO::PointInUnionCheckUO(), MooseApp::possiblyLoadRestartableMetaData(), MFEMExecutedObject::postprocessorDependencyKey(), PhysicsBase::prefix(), MooseMesh::prepare(), BlockRestrictionDebugOutput::printBlockRestrictionMap(), PerfGraphLivePrint::printStats(), FEProblemBase::projectInitialConditionOnCustomRange(), MooseBase::queryParam(), MultiApp::readCommandLineArguments(), Receiver::Receiver(), Executor::Result::record(), FEProblemBase::registerRandomInterface(), MooseApp::registerRestartableDataMapName(), MooseApp::registerRestartableNameWithFilter(), MaterialBase::resetQpProperties(), MultiApp::restore(), ScalarComponentIC::ScalarComponentIC(), MultiApp::setAppOutputFileBase(), FEProblemBase::setAuxKernelParamsAndLog(), MooseMesh::setBoundaryName(), Control::setControllableValue(), Control::setControllableValueByName(), OutputWarehouse::setFileNumbers(), FEProblemBase::setPostprocessorValueByName(), FEProblemBase::setResidualObjectParamsAndLog(), MooseMesh::setSubdomainName(), MooseMesh::setSubdomainName(), NodeSetsGeneratorBase::setup(), SideSetsGeneratorBase::setup(), SurfaceMeshGeneratorBase::setup(), Split::setup(), TransientMultiApp::setupApp(), MoveNodesByParsedExpressionModifier::setupNodalOutputVariables(), SideSetExtruderGenerator::SideSetExtruderGenerator(), TransientMultiApp::solveStep(), UserObject::spatialValue(), LinearFVGradientReader::stateComponents(), StitchedMesh::StitchedMesh(), SubProblem::storeBoundaryDelayedCheckMatProp(), SubProblem::storeBoundaryMatPropName(), MaterialBase::storeBoundaryZeroMatProp(), SubProblem::storeBoundaryZeroMatProp(), SubProblem::storeSubdomainDelayedCheckMatProp(), SubProblem::storeSubdomainMatPropName(), MaterialBase::storeSubdomainZeroMatProp(), SubProblem::storeSubdomainZeroMatProp(), ConstraintWarehouse::subdomainsCovered(), MaterialBase::subdomainSetup(), SumPostprocessor::SumPostprocessor(), MFEMPostprocessor::suppliedPostprocessorName(), MFEMVectorPostprocessor::suppliedVectorPostprocessorName(), BoundaryMeshBuilder::surfaceElementSet(), TorchFEInterpolation::syncWithMainThread(), TaggingInterface::TaggingInterface(), MooseLinearVariableFV< OutputType >::timeIntegratorError(), VectorPostprocessorVisualizationAux::timestepSetup(), ElementSubdomainModifierBase::timestepSetup(), to_json(), TorchPreKernel::TorchPreKernel(), MultiAppDofCopyTransfer::transfer(), MultiAppShapeEvaluationTransfer::transferVariable(), MultiAppMFEMCopyTransfer::transferVariables(), MultiAppMFEMShapeEvaluationTransfer::transferVariables(), TransientMultiApp::TransientMultiApp(), MooseBase::typeAndName(), MooseBase::uniqueParameterName(), FVQpFluxBC::uOnGhost(), FVQpFluxBC::uOnUSub(), UserObjectBase::UserObjectBase(), UserObjectInterface::userObjectName(), ParsedAux::validateGenericVectorNames(), BreakMeshByBlockGenerator::validParams(), MeshInfo::validParams(), MFEMExecutedObject::variableDependencyKey(), PhysicsBase::variableExists(), MultiAppTransfer::variableIntegrityCheck(), VectorMagnitudeFunctorMaterialTempl< is_ad >::VectorMagnitudeFunctorMaterialTempl(), MFEMExecutedObject::vectorPostprocessorDependencyKey(), Convergence::verboseOutput(), AdvancedOutput::wantOutput(), Coupleable::writableCoupledValue(), Coupleable::writableVariable(), Console::write(), MooseApp::writeRestartableMetaData(), and XYQuadrilateralMeshFromBoundaryCurve::XYQuadrilateralMeshFromBoundaryCurve().

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

10058{
10059 if (_bnd_mat_side_cache[tid].find(bnd_id) == _bnd_mat_side_cache[tid].end())
10060 {
10061 auto & bnd_mat_side_cache = _bnd_mat_side_cache[tid][bnd_id];
10062 bnd_mat_side_cache = false;
10063
10064 // Check systems
10065 if (_aux->needMaterialOnSide(bnd_id))
10066 {
10067 bnd_mat_side_cache = true;
10068 return true;
10069 }
10070 for (auto & nl : _nl)
10071 if (nl->needBoundaryMaterialOnSide(bnd_id, tid))
10072 {
10073 bnd_mat_side_cache = true;
10074 return true;
10075 }
10076
10077 // TODO: these objects should be checked for whether they actually consume materials
10078 // NOTE: InterfaceUO can use use boundary properties too
10079 if (theWarehouse()
10080 .query()
10081 .condition<AttribThread>(tid)
10082 .condition<AttribInterfaces>(Interfaces::SideUserObject | Interfaces::DomainUserObject |
10084 .condition<AttribBoundaries>(bnd_id)
10085 .count() > 0)
10086 {
10087 bnd_mat_side_cache = true;
10088 return true;
10089 }
10090 }
10091
10092 return _bnd_mat_side_cache[tid][bnd_id];
10093}
std::vector< std::unordered_map< BoundaryID, bool > > _bnd_mat_side_cache
Cache for calculating materials on side.
bool needBoundaryMaterialOnSide(BoundaryID bnd_id, const THREAD_ID tid)
These methods are used to determine whether stateful material properties need to be stored on interna...
KOKKOS_INLINE_FUNCTION const T * find(const T &target, const T *const begin, const T *const end)
Find a value in an array.
Definition KokkosUtils.h:40

Referenced by ComputeMaterialsObjectThread::onBoundary(), ProjectMaterialProperties::onBoundary(), FEProblemBase::reinitMaterialsBoundary(), FEProblemBase::reinitMaterialsFaceOnBoundary(), and FEProblemBase::reinitMaterialsNeighborOnBoundary().

◆ needFV()

virtual void FEProblemBase::needFV ( )
inlineoverridevirtualinherited

marks this problem as including/needing finite volume functionality.

Implements SubProblem.

Definition at line 3046 of file FEProblemBase.h.

3046{ _have_fv = true; }

Referenced by DiffusionFV::initializePhysicsAdditional(), and DisplacedProblem::needFV().

◆ needInterfaceMaterialOnSide()

bool FEProblemBase::needInterfaceMaterialOnSide ( BoundaryID  bnd_id,
const THREAD_ID  tid 
)
inherited

Definition at line 10096 of file FEProblemBase.C.

10097{
10098 if (_interface_mat_side_cache[tid].find(bnd_id) == _interface_mat_side_cache[tid].end())
10099 {
10100 auto & interface_mat_side_cache = _interface_mat_side_cache[tid][bnd_id];
10101 interface_mat_side_cache = false;
10102
10103 // Aux-system has not needed interface materials so far
10104 for (auto & nl : _nl)
10105 if (nl->needInterfaceMaterialOnSide(bnd_id, tid))
10106 {
10107 interface_mat_side_cache = true;
10108 return true;
10109 }
10110
10111 // TODO: these objects should be checked for whether they actually consume materials
10112 if (theWarehouse()
10113 .query()
10114 .condition<AttribThread>(tid)
10115 .condition<AttribInterfaces>(Interfaces::InterfaceUserObject |
10117 .condition<AttribBoundaries>(bnd_id)
10118 .count() > 0)
10119 {
10120 interface_mat_side_cache = true;
10121 return true;
10122 }
10123 else if (_interface_materials.hasActiveBoundaryObjects(bnd_id, tid))
10124 {
10125 interface_mat_side_cache = true;
10126 return true;
10127 }
10128 }
10129 return _interface_mat_side_cache[tid][bnd_id];
10130}
bool needInterfaceMaterialOnSide(BoundaryID bnd_id, const THREAD_ID tid)
std::vector< std::unordered_map< BoundaryID, bool > > _interface_mat_side_cache
Cache for calculating materials on interface.
bool hasActiveBoundaryObjects(THREAD_ID tid=0) const

Referenced by ComputeMaterialsObjectThread::onInterface(), FEProblemBase::reinitMaterialsFaceOnBoundary(), FEProblemBase::reinitMaterialsInterface(), and FEProblemBase::reinitMaterialsNeighborOnBoundary().

◆ needInternalNeighborSideMaterial()

bool FEProblemBase::needInternalNeighborSideMaterial ( SubdomainID  subdomain_id,
const THREAD_ID  tid 
)
inherited

Definition at line 10133 of file FEProblemBase.C.

10134{
10135 if (_block_mat_side_cache[tid].find(subdomain_id) == _block_mat_side_cache[tid].end())
10136 {
10137 _block_mat_side_cache[tid][subdomain_id] = false;
10138
10139 for (auto & nl : _nl)
10140 if (nl->needInternalNeighborSideMaterial(subdomain_id, tid))
10141 {
10142 _block_mat_side_cache[tid][subdomain_id] = true;
10143 return true;
10144 }
10145
10146 // TODO: these objects should be checked for whether they actually consume materials
10147 if (theWarehouse()
10148 .query()
10149 .condition<AttribThread>(tid)
10150 .condition<AttribInterfaces>(Interfaces::InternalSideUserObject |
10152 .condition<AttribSubdomains>(subdomain_id)
10153 .count() > 0)
10154 {
10155 _block_mat_side_cache[tid][subdomain_id] = true;
10156 return true;
10157 }
10158 }
10159
10160 return _block_mat_side_cache[tid][subdomain_id];
10161}
std::vector< std::unordered_map< SubdomainID, bool > > _block_mat_side_cache
Cache for calculating materials on side.
bool needInternalNeighborSideMaterial(SubdomainID subdomain_id, const THREAD_ID tid)

Referenced by FEProblemBase::reinitMaterialsFaceOnBoundary(), FEProblemBase::reinitMaterialsNeighborOnBoundary(), ComputeMaterialsObjectThread::subdomainChanged(), and ProjectMaterialProperties::subdomainChanged().

◆ needSolutionState()

void FEProblemBase::needSolutionState ( unsigned int  oldest_needed,
Moose::SolutionIterationType  iteration_type 
)
inherited

Declare that we need up to old (1) or older (2) solution states for a given type of iteration.

Parameters
oldest_neededoldest solution state needed
iteration_typethe type of iteration for which old/older states are needed

Definition at line 884 of file FEProblemBase.C.

885{
886 for (auto & sys : _solver_systems)
887 sys->needSolutionState(state, iteration_type);
888 _aux->needSolutionState(state, iteration_type);
889}

Referenced by FEProblemBase::createTagSolutions().

◆ needsPreviousMultiAppFixedPointIterationAuxiliary() [1/2]

bool FEProblemBase::needsPreviousMultiAppFixedPointIterationAuxiliary ( ) const
inherited

Check to see whether we need to compute the variable values of the previous multiapp fixed point iteration for the auxiliary system.

Returns
true if the user required values of the previous multiapp fixed point iteration from the auxiliary system

Definition at line 10198 of file FEProblemBase.C.

10199{
10201}
bool _previous_multiapp_fp_aux_solution_required
Indicates we need to save the previous multiapp fixed-point iteration auxiliary variable values.

◆ needsPreviousMultiAppFixedPointIterationAuxiliary() [2/2]

void FEProblemBase::needsPreviousMultiAppFixedPointIterationAuxiliary ( bool  state)
inherited

Set a flag that indicated that user required values for the previous multiapp fixed point iterate for the auxiliary system.

Definition at line 10192 of file FEProblemBase.C.

10193{
10195}

Referenced by FunctorChangeFunctorMaterialTempl< is_ad >::FunctorChangeFunctorMaterialTempl(), and FixedPointSolve::initialSetup().

◆ needsPreviousMultiAppFixedPointIterationSolution() [1/2]

void FEProblemBase::needsPreviousMultiAppFixedPointIterationSolution ( bool  needed,
const unsigned int  solver_sys_num 
)
inherited

Set a flag that indicated that user required values for the previous multiapp fixed point iterate for the solver systems (not auxiliary)

Parameters
neededthe value that should be set to the flag
solver_sys_numthe index of the solver system for which the previous iteration is needed

Definition at line 10178 of file FEProblemBase.C.

10180{
10181 _previous_multiapp_fp_nl_solution_required[solver_sys_num] = needed;
10182}
std::vector< bool > _previous_multiapp_fp_nl_solution_required
Indicates we need to save the previous multiapp fixed-point iteration solver variable values.

Referenced by FunctorChangeFunctorMaterialTempl< is_ad >::FunctorChangeFunctorMaterialTempl(), and FixedPointSolve::initialSetup().

◆ needsPreviousMultiAppFixedPointIterationSolution() [2/2]

bool FEProblemBase::needsPreviousMultiAppFixedPointIterationSolution ( const unsigned int  solver_sys_num) const
inherited

Check to see whether we need to compute the variable values of the previous multiapp fixed point iteration for the solver systems (not auxiliary)

Parameters
solver_sys_numthe index of the solver system for which the previous iteration is needed
Returns
true if the user required values of the previous multiapp fixed point iteration

Definition at line 10185 of file FEProblemBase.C.

10187{
10188 return _previous_multiapp_fp_nl_solution_required[solver_sys_num];
10189}

◆ needsPreviousMultiSystemFixedPointIterationAuxiliary() [1/2]

bool FEProblemBase::needsPreviousMultiSystemFixedPointIterationAuxiliary ( ) const
inherited

Check to see whether we need to compute the variable values of the previous multi-system fixed point iteration for the auxiliary system.

Returns
true if the user required values of the previous multi-system fixed point iteration from the auxiliary system

Definition at line 10224 of file FEProblemBase.C.

10225{
10227}
bool _previous_multisystem_fp_aux_solution_required
Indicates we need to save the previous multi-system fixed-point iteration auxiliary variable values.

◆ needsPreviousMultiSystemFixedPointIterationAuxiliary() [2/2]

void FEProblemBase::needsPreviousMultiSystemFixedPointIterationAuxiliary ( bool  state)
inherited

Set a flag that indicates that user requires values for the previous multi-system fixed point iterate for the auxiliary system.

Definition at line 10218 of file FEProblemBase.C.

Referenced by FunctorChangeFunctorMaterialTempl< is_ad >::FunctorChangeFunctorMaterialTempl(), and FEProblemSolve::initialSetup().

◆ needsPreviousMultiSystemFixedPointIterationSolution() [1/2]

void FEProblemBase::needsPreviousMultiSystemFixedPointIterationSolution ( bool  needed,
const unsigned int  solver_sys_num 
)
inherited

Set a flag that indicates that user requires values for the previous multi-system fixed point iterate for the solver systems (not auxiliary)

Parameters
neededthe value that should be set to the flag
solver_sys_numthe index of the solver system for which the previous iteration is needed

Definition at line 10204 of file FEProblemBase.C.

10206{
10207 _previous_multisystem_fp_nl_solution_required[solver_sys_num] = needed;
10208}
std::vector< bool > _previous_multisystem_fp_nl_solution_required
Indicates we need to save the previous multi-system fixed-point iteration solver variable values.

Referenced by FunctorChangeFunctorMaterialTempl< is_ad >::FunctorChangeFunctorMaterialTempl(), and FEProblemSolve::initialSetup().

◆ needsPreviousMultiSystemFixedPointIterationSolution() [2/2]

bool FEProblemBase::needsPreviousMultiSystemFixedPointIterationSolution ( const unsigned int  solver_sys_num) const
inherited

Check to see whether we need to compute the variable values of the previous multi-system fixed point iteration for the solver systems (not auxiliary)

Parameters
solver_sys_numthe index of the solver system for which the previous iteration is needed
Returns
true if the user required values of the previous multi-system fixed point iteration

Definition at line 10211 of file FEProblemBase.C.

10213{
10214 return _previous_multisystem_fp_nl_solution_required[solver_sys_num];
10215}

◆ needsPreviousNewtonIteration() [1/2]

bool FEProblemBase::needsPreviousNewtonIteration ( ) const
inherited

Check to see whether we need to compute the variable values of the previous Newton iterate.

Returns
true if the user required values of the previous Newton iterate

Definition at line 10164 of file FEProblemBase.C.

10165{
10167}

◆ needsPreviousNewtonIteration() [2/2]

void FEProblemBase::needsPreviousNewtonIteration ( bool  state)
inherited

Set a flag that indicated that user required values for the previous Newton iterate.

Definition at line 10170 of file FEProblemBase.C.

10171{
10173 mooseError("Previous nonlinear solution is required but not added through "
10174 "Problem/previous_nl_solution_required=true");
10175}

Referenced by Coupleable::coupledGradientPreviousNL(), Coupleable::coupledNodalValuePreviousNL(), Coupleable::coupledSecondPreviousNL(), Coupleable::coupledValuePreviousNL(), and NonlinearSystem::solve().

◆ needToAddDefaultMultiAppFixedPointConvergence()

bool FEProblemBase::needToAddDefaultMultiAppFixedPointConvergence ( ) const
inlineinherited

Returns true if the problem needs to add the default fixed point convergence.

Definition at line 768 of file FEProblemBase.h.

769 {
771 }
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 763 of file FEProblemBase.h.

764 {
766 }
bool _need_to_add_default_nonlinear_convergence
Flag that the problem needs to add the default nonlinear convergence.

◆ needToAddDefaultSteadyStateConvergence()

bool FEProblemBase::needToAddDefaultSteadyStateConvergence ( ) const
inlineinherited

Returns true if the problem needs to add the default steady-state detection convergence.

Definition at line 773 of file FEProblemBase.h.

774 {
776 }
bool _need_to_add_default_steady_state_convergence
Flag that the problem needs to add the default steady convergence.

◆ neighborSubdomainSetup()

void FEProblemBase::neighborSubdomainSetup ( SubdomainID  subdomain,
const THREAD_ID  tid 
)
virtualinherited

Definition at line 2893 of file FEProblemBase.C.

2894{
2895 _all_materials.neighborSubdomainSetup(subdomain, tid);
2896}
virtual void neighborSubdomainSetup(THREAD_ID tid=0) const

Referenced by ThreadedFaceLoop< RangeType >::neighborSubdomainChanged().

◆ newAssemblyArray()

void FEProblemBase::newAssemblyArray ( std::vector< std::shared_ptr< SolverSystem > > &  solver_systems)
virtualinherited

Definition at line 903 of file FEProblemBase.C.

904{
905 unsigned int n_threads = numThreads();
906
907 _assembly.resize(n_threads);
908 for (const auto i : make_range(n_threads))
909 {
910 _assembly[i].resize(solver_systems.size());
911 for (const auto j : index_range(solver_systems))
912 _assembly[i][j] = std::make_unique<Assembly>(*solver_systems[j], i);
913 }
914}
Keeps track of stuff related to assembling.
Definition Assembly.h:102

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

◆ nlConverged()

bool SubProblem::nlConverged ( const unsigned int  nl_sys_num)
virtualinherited
Returns
whether the given nonlinear system nl_sys_num is converged.

Definition at line 708 of file SubProblem.C.

709{
710 mooseAssert(nl_sys_num < numNonlinearSystems(),
711 "The nonlinear system number is higher than the number of systems we have!");
712 return solverSystemConverged(nl_sys_num);
713}

◆ nLinearIterations()

unsigned int FEProblemBase::nLinearIterations ( const unsigned int  nl_sys_num) const
overridevirtualinherited

Reimplemented from SubProblem.

Definition at line 7779 of file FEProblemBase.C.

7780{
7781 return _nl[nl_sys_num]->nLinearIterations();
7782}

Referenced by PiecewiseLinearFromVectorPostprocessor::valueInternal().

◆ nlSysNum()

unsigned int FEProblemBase::nlSysNum ( const NonlinearSystemName &  nl_sys_name) const
overridevirtualinherited
Returns
the nonlinear system number corresponding to the provided nl_sys_name

Implements SubProblem.

Definition at line 7510 of file FEProblemBase.C.

7511{
7512 std::istringstream ss(nl_sys_name);
7513 unsigned int nl_sys_num;
7514 if (!(ss >> nl_sys_num) || !ss.eof())
7515 nl_sys_num = libmesh_map_find(_nl_sys_name_to_num, nl_sys_name);
7516
7517 return nl_sys_num;
7518}
std::map< NonlinearSystemName, unsigned int > _nl_sys_name_to_num
Map from nonlinear system name to number.

Referenced by DisplacedProblem::nlSysNum().

◆ nNonlinearIterations()

unsigned int FEProblemBase::nNonlinearIterations ( const unsigned int  nl_sys_num) const
overridevirtualinherited

Reimplemented from SubProblem.

Definition at line 7773 of file FEProblemBase.C.

7774{
7775 return _nl[nl_sys_num]->nNonlinearIterations();
7776}

Referenced by PiecewiseLinearFromVectorPostprocessor::valueInternal().

◆ nonlocalCouplingEntries()

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

Definition at line 7347 of file FEProblemBase.C.

7348{
7349 return _assembly[tid][nl_sys]->nonlocalCouplingEntries();
7350}

Referenced by ComputeFullJacobianThread::computeOnBoundary(), and ComputeFullJacobianThread::computeOnElement().

◆ nonlocalCouplingMatrix()

const libMesh::CouplingMatrix & FEProblemBase::nonlocalCouplingMatrix ( const unsigned  i) const
overridevirtualinherited
Returns
the nonlocal coupling matrix for the i'th nonlinear system

Implements SubProblem.

Definition at line 10856 of file FEProblemBase.C.

10857{
10858 return _nonlocal_cm[i];
10859}

Referenced by DisplacedProblem::nonlocalCouplingMatrix().

◆ notifyWhenMeshChanges()

void FEProblemBase::notifyWhenMeshChanges ( MeshChangedInterface *  mci)
inherited

Register an object that derives from MeshChangedInterface to be notified when the mesh changes.

Definition at line 9579 of file FEProblemBase.C.

9580{
9581 _notify_when_mesh_changes.push_back(mci);
9582}

Referenced by MeshChangedInterface::MeshChangedInterface().

◆ notifyWhenMeshDisplaces()

void FEProblemBase::notifyWhenMeshDisplaces ( MeshDisplacedInterface *  mdi)
inherited

Register an object that derives from MeshDisplacedInterface to be notified when the displaced mesh gets updated.

Definition at line 9585 of file FEProblemBase.C.

9586{
9587 _notify_when_mesh_displaces.push_back(mdi);
9588}

Referenced by MeshDisplacedInterface::MeshDisplacedInterface().

◆ numConcurrentMultiApps()

unsigned int FEProblemBase::numConcurrentMultiApps ( ) const
inlineinherited
Returns
the number set for concurrent multiapp execution; greater than 1 enables running the multiapps of an 'execution_order_group' concurrently, each on its own subset of ranks

Definition at line 1732 of file FEProblemBase.h.

1732{ return _num_concurrent_multiapps; }

◆ numGridSteps()

void FEProblemBase::numGridSteps ( unsigned int  num_grid_steps)
inlineinherited

Set the number of steps in a grid sequences.

Definition at line 2794 of file FEProblemBase.h.

2794{ _num_grid_steps = num_grid_steps; }

Referenced by FEProblemSolve::FEProblemSolve().

◆ numLinearSystems()

virtual std::size_t FEProblemBase::numLinearSystems ( ) const
inlineoverridevirtualinherited

◆ numMatrixTags()

virtual unsigned int SubProblem::numMatrixTags ( ) const
inlinevirtualinherited

◆ numNonlinearSystems()

virtual std::size_t FEProblemBase::numNonlinearSystems ( ) const
inlineoverridevirtualinherited

◆ numSolverSystems()

virtual std::size_t FEProblemBase::numSolverSystems ( ) const
inlineoverridevirtualinherited

◆ numThreads()

THREAD_ID SubProblem::numThreads ( ) const
inherited
Returns
the number of threads the associated application uses (see MooseApp::numThreads())

Definition at line 81 of file SubProblem.C.

81{ return getMooseApp().numThreads(); }
THREAD_ID numThreads() const
Returns the number of threads this application uses.
Definition MooseApp.h:421

Referenced by Adaptivity::adaptMesh(), FEProblemBase::addConvergence(), FEProblemBase::addFunction(), FEProblemBase::addFunctorMaterial(), FEProblemBase::addFVInitialCondition(), FEProblemBase::addFVInterpolationMethod(), FEProblemBase::addIndicator(), FEProblemBase::addInitialCondition(), FEProblemBase::addMarker(), FEProblemBase::addMaterialHelper(), FEProblemBase::addMeshDivision(), FEProblemBase::addObject(), FEProblemBase::addUserObject(), FEProblemBase::bumpAllQRuleOrder(), DisplacedProblem::bumpAllQRuleOrder(), FEProblemBase::bumpVolumeQRuleOrder(), DisplacedProblem::bumpVolumeQRuleOrder(), FEProblemBase::checkNonlocalCoupling(), FEProblemBase::computeBounds(), FEProblemBase::computeIndicators(), FEProblemBase::computeJacobianTags(), FEProblemBase::computeLinearSystemTags(), FEProblemBase::computeMarkers(), FEProblemBase::computeResidualAndJacobian(), FEProblemBase::computeResidualTags(), FEProblemBase::computeUserObjectsInternal(), FEProblemBase::createQRules(), DisplacedProblem::createQRules(), FEProblemBase::customSetup(), PenetrationLocator::detectPenetration(), DisplacedProblem::DisplacedProblem(), FEProblemBase::executeSamplers(), FEProblemBase::FEProblemBase(), NearestNodeLocator::findNodes(), DisplacedProblem::init(), FEProblem::init(), FEProblemBase::init(), FEProblemBase::initElementStatefulProps(), DumpObjectsProblem::initialSetup(), FEProblemBase::initXFEM(), MaterialPropertyStorage::MaterialPropertyStorage(), FEProblemBase::meshChanged(), FEProblemBase::newAssemblyArray(), PenetrationLocator::PenetrationLocator(), SubProblem::preparePRefinement(), FEProblemBase::projectInitialConditionOnCustomRange(), FEProblemBase::projectSolution(), FEProblemBase::reinitDirac(), FixedPointSolve::solve(), TransientMultiApp::solveStep(), SubProblem::SubProblem(), FEProblemBase::timestepSetup(), DisplacedProblem::undisplaceMesh(), FEProblemBase::updateActiveObjects(), Adaptivity::updateErrorVectors(), FEProblemBase::updateMaxQps(), DisplacedProblem::updateMesh(), DisplacedProblem::updateMesh(), NearestNodeLocator::updatePatch(), FEProblemBase::~FEProblemBase(), and PenetrationLocator::~PenetrationLocator().

◆ numVectorTags()

unsigned int SubProblem::numVectorTags ( const Moose::VectorTagType  type = Moose::VECTOR_TAG_ANY) const
virtualinherited

◆ objectExecuteHelper()

template<typename T >
void FEProblemBase::objectExecuteHelper ( const std::vector< T * > &  objects)
staticinherited

Definition at line 3853 of file FEProblemBase.h.

3854{
3855 for (T * obj_ptr : objects)
3856 obj_ptr->execute();
3857}

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

3820{
3821 if (exec_flag == EXEC_INITIAL)
3822 {
3823 for (T * obj_ptr : objects)
3824 obj_ptr->initialSetup();
3825 }
3826
3827 else if (exec_flag == EXEC_TIMESTEP_BEGIN)
3828 {
3829 for (const auto obj_ptr : objects)
3830 obj_ptr->timestepSetup();
3831 }
3832 else if (exec_flag == EXEC_SUBDOMAIN)
3833 {
3834 for (const auto obj_ptr : objects)
3835 obj_ptr->subdomainSetup();
3836 }
3837
3838 else if (exec_flag == EXEC_NONLINEAR)
3839 {
3840 for (const auto obj_ptr : objects)
3841 obj_ptr->jacobianSetup();
3842 }
3843
3844 else if (exec_flag == EXEC_LINEAR)
3845 {
3846 for (const auto obj_ptr : objects)
3847 obj_ptr->residualSetup();
3848 }
3849}
const ExecFlagType EXEC_SUBDOMAIN
Definition Moose.C:53
const ExecFlagType EXEC_TIMESTEP_BEGIN
Definition Moose.C:38
void timestepSetup() override
virtual void subdomainSetup(SubdomainID subdomain, const THREAD_ID tid)

◆ onlyAllowDefaultNonlinearConvergence()

virtual bool FEProblemBase::onlyAllowDefaultNonlinearConvergence ( ) const
inlinevirtualinherited

Returns true if an error will result if the user supplies 'nonlinear_convergence'.

Some problems are strongly tied to their convergence, and it does not make sense to use any convergence other than their default and additionally would be error-prone.

Reimplemented in ReferenceResidualProblem.

Definition at line 817 of file FEProblemBase.h.

817{ return false; }

Referenced by FEProblemSolve::FEProblemSolve().

◆ onTimestepBegin()

void FEProblemBase::onTimestepBegin ( )
overridevirtualinherited

Implements SubProblem.

Definition at line 7961 of file FEProblemBase.C.

7962{
7963 TIME_SECTION("onTimestepBegin", 2);
7964
7965 for (auto & nl : _nl)
7966 nl->onTimestepBegin();
7967}
virtual void onTimestepBegin() override

Referenced by TransientBase::takeStep(), and MFEMTransient::takeStep().

◆ onTimestepEnd()

void FEProblemBase::onTimestepEnd ( )
overridevirtualinherited

◆ outputStep()

void FEProblemBase::outputStep ( ExecFlagType  type)
virtualinherited

Output the current step.

Will ensure that everything is in the proper state to be outputted. Then tell the OutputWarehouse to do its thing

Parameters
typeThe type execution flag (see Moose.h)

Reimplemented in DumpObjectsProblem.

Definition at line 7924 of file FEProblemBase.C.

7925{
7926 TIME_SECTION("outputStep", 1, "Outputting");
7927
7929
7930 for (auto & sys : _solver_systems)
7931 sys->update();
7932 _aux->update();
7933
7935 _displaced_problem->syncSolutions();
7937
7939}
void outputStep(ExecFlagType type)
Calls the outputStep method for each output object.

Referenced by TransientBase::endStep(), Eigenvalue::execute(), SteadyBase::execute(), TransientBase::execute(), MFEMSteady::execute(), InversePowerMethod::init(), NonlinearEigen::init(), EigenExecutionerBase::postExecute(), TransientBase::preExecute(), FEProblemSolve::solve(), FixedPointSolve::solve(), FixedPointSolve::solveStep(), and TransientMultiApp::solveStep().

◆ paramError()

template<typename... Args>
void MooseBase::paramError ( const std::string &  param,
Args...  args 
) const
inherited

Emits an error prefixed with the file and line number of the given param (from the input file) along with the full parameter path+name followed by the given args as the message.

If this object's parameters were not created directly by the Parser, then this function falls back to the normal behavior of mooseError - only printing a message using the given args.

Definition at line 457 of file MooseBase.h.

458{
459 _pars.paramError(param, std::forward<Args>(args)...);
460}
void paramError(const std::string &param, Args... args) const
Emits a parameter error prefixed with the parameter location and object information if available.

Referenced by HierarchicalGridPartitioner::_do_partition(), AutoCheckpointAction::act(), CommonOutputAction::act(), SetupDebugAction::act(), ADArrayIntegratedBC::ADArrayIntegratedBC(), ADArrayRobinBC::ADArrayRobinBC(), DiffusionCG::addFEKernels(), DiffusionFV::addFVKernels(), NEML2ModelExecutor::addGatheredParameter(), NEML2ModelExecutor::addGatheredVariable(), ADDGKernel::ADDGKernel(), ComponentJunction::addMeshGenerators(), CylinderComponent::addMeshGenerators(), ReporterPointSource::addPoints(), DiffusionPhysicsBase::addPostprocessors(), ADIntegratedBCTempl< T >::ADIntegratedBCTempl(), ADKernelTempl< T >::ADKernelTempl(), ADPenaltyPeriodicSegmentalConstraint::ADPenaltyPeriodicSegmentalConstraint(), ADPeriodicSegmentalConstraint::ADPeriodicSegmentalConstraint(), AdvancedExtruderGenerator::AdvancedExtruderGenerator(), AdvectiveFluxAux::AdvectiveFluxAux(), AnnularMesh::AnnularMesh(), AnnularMeshGenerator::AnnularMeshGenerator(), ArrayBodyForce::ArrayBodyForce(), ArrayCoupledForce::ArrayCoupledForce(), ArrayDGKernel::ArrayDGKernel(), ArrayDGLowerDKernel::ArrayDGLowerDKernel(), ArrayDirichletBC::ArrayDirichletBC(), ArrayHFEMDirichletBC::ArrayHFEMDirichletBC(), ArrayIntegratedBC::ArrayIntegratedBC(), ArrayKernel::ArrayKernel(), ArrayLowerDIntegratedBC::ArrayLowerDIntegratedBC(), ArrayParsedAux::ArrayParsedAux(), ArrayPenaltyDirichletBC::ArrayPenaltyDirichletBC(), ArrayReactionNodalKernelTempl< is_ad >::ArrayReactionNodalKernelTempl(), ArrayVacuumBC::ArrayVacuumBC(), ArrayVarReductionAux::ArrayVarReductionAux(), ParsedSubdomainIDsGenerator::assignElemSubdomainID(), AuxKernelBase::AuxKernelBase(), BatchMeshGeneratorAction::BatchMeshGeneratorAction(), BlockDeletionGenerator::BlockDeletionGenerator(), BlockWeightedPartitioner::BlockWeightedPartitioner(), BoundaryIntegralValueConstraint::BoundaryIntegralValueConstraint(), BoundaryLinearFVFluxIntegral::BoundaryLinearFVFluxIntegral(), BoundsBase::BoundsBase(), BreakMeshByBlockGenerator::BreakMeshByBlockGenerator(), BSplineCurveGenerator::BSplineCurveGenerator(), BuildArrayVariableAux::BuildArrayVariableAux(), MFEMFESpaceHierarchy::buildHierarchy(), MFEMMesh::buildMesh(), TimeSequenceStepperBase::buildSequence(), CartesianGridDivision::CartesianGridDivision(), CartesianMeshGenerator::CartesianMeshGenerator(), SurfaceDelaunayGeneratorBase::checkBoundaryAndHolesParams(), checkComponent(), Moose::Kokkos::ParsedObjectBase::checkDuplicateSymbols(), SamplerBase::checkForStandardFieldVariableType(), MeshGenerator::checkGetMesh(), ComponentInitialConditionInterface::checkInitialConditionsAllRequested(), BatchMeshGeneratorAction::checkInputParameterType(), PhysicsBase::checkIntegrityEarly(), SurfaceDelaunayGeneratorBase::checkInteriorPoints(), SideUserObject::checkNoInterfaceMaterialPropertyDependencies(), PostprocessorInterface::checkParam(), MortarConsumerInterface::checkPetrovGalerkinQuadraticFaces(), FEProblemBase::checkProblemIntegrity(), MultiAppReporterTransfer::checkSiblingsTransferSupported(), NEML2Action::checkStatefulConsistency(), MFEMMultiAppTransfer::checkValidTransferProblemTypes(), Coupleable::checkVar(), MultiAppTransfer::checkVariable(), CircularBoundaryCorrectionGenerator::CircularBoundaryCorrectionGenerator(), CircularBoundaryCorrectionGenerator::circularCenterCalculator(), MultiAppGeneralFieldTransfer::closestToPosition(), CoarsenBlockGenerator::CoarsenBlockGenerator(), CombinedVectorPostprocessor::CombinedVectorPostprocessor(), CombinerGenerator::CombinerGenerator(), ComponentInitialConditionInterface::ComponentInitialConditionInterface(), ComponentJunction::ComponentJunction(), ComponentMaterialPropertyInterface::ComponentMaterialPropertyInterface(), CompositionDT::CompositionDT(), AdvancedExtruderGenerator::computeNodeNormals(), ConcentricCircleMeshGenerator::ConcentricCircleMeshGenerator(), LibtorchNeuralNetControl::conditionalParameterError(), ConservativeAdvectionBCTempl< is_ad >::ConservativeAdvectionBCTempl(), ConservativeAdvectionTempl< is_ad >::ConservativeAdvectionTempl(), ConstantVectorPostprocessor::ConstantVectorPostprocessor(), MFEMNewtonNonlinearSolver::ConstructSolver(), ContainsPointAux::ContainsPointAux(), CopyValueAux::CopyValueAux(), MultiAppGeneralFieldTransfer::correctSolutionVectorValues(), Coupleable::Coupleable(), CoupledForceTempl< is_ad >::CoupledForceTempl(), CoupledValueFunctionMaterialTempl< is_ad >::CoupledValueFunctionMaterialTempl(), MultiApp::createApp(), MeshGeneratorSystem::createMeshGenerator(), CumulativeTimeAverageFunctorAux::CumulativeTimeAverageFunctorAux(), MoveBoundaryNodesToCurveGenerator::curveGenerator(), CylindricalGridDivision::CylindricalGridDivision(), DebugResidualAux::DebugResidualAux(), ConstantReporter::declareConstantReporterValue(), ConstantReporter::declareConstantReporterValues(), AccumulateReporter::declareLateValues(), DefaultMultiAppFixedPointConvergence::DefaultMultiAppFixedPointConvergence(), DGKernel::DGKernel(), DGKernelBase::DGKernelBase(), DGLowerDKernel::DGLowerDKernel(), DiffusionFluxAux::DiffusionFluxAux(), DomainUserObject::DomainUserObject(), EigenProblem::EigenProblem(), EigenProblemSolve::EigenProblemSolve(), ElementAdaptivityLevelAux::ElementAdaptivityLevelAux(), ElementGenerator::ElementGenerator(), ElementGroupCentroidPositions::ElementGroupCentroidPositions(), ElementLengthAux::ElementLengthAux(), ElementLpNormAux::ElementLpNormAux(), ElementNormalAux::ElementNormalAux(), ExtraIDIntegralVectorPostprocessor::elementValue(), ElementValueSampler::ElementValueSampler(), ElementVectorL2Error::ElementVectorL2Error(), EqualValueEmbeddedConstraintTempl< is_ad >::EqualValueEmbeddedConstraintTempl(), ReporterPointSource::errorCheck(), StitchMeshGeneratorBase::errorMissingBoundary(), ExamplePatchMeshGenerator::ExamplePatchMeshGenerator(), FunctorNodalCorrector::execute(), MultiAppNearestNodeTransfer::execute(), MultiAppUserObjectTransfer::execute(), ExtraElementIDAux::ExtraElementIDAux(), ExtraElementIntegerDivision::ExtraElementIntegerDivision(), ExtraIDIntegralVectorPostprocessor::ExtraIDIntegralVectorPostprocessor(), FEProblemBase::FEProblemBase(), FEProblemSolve::FEProblemSolve(), FileMeshGenerator::FileMeshGenerator(), FillBetweenCurvesGenerator::FillBetweenCurvesGenerator(), FillBetweenSidesetsGenerator::FillBetweenSidesetsGenerator(), SpatialUserObjectVectorPostprocessor::fillPoints(), CombinerGenerator::fillPositions(), MultiApp::fillPositions(), InternalSideIndicatorBase::finalize(), MeshTriangulationUtils::finalizeTriangulation(), FixedPointSolve::findTransformedSystem(), FixedPointSolve::FixedPointSolve(), ForcingFunctionAux::ForcingFunctionAux(), FullSolveMultiApp::FullSolveMultiApp(), FunctionArrayAux::FunctionArrayAux(), FunctionValuePostprocessor::FunctionValuePostprocessor(), FunctorADConverterTempl< T >::FunctorADConverterTempl(), FunctorAux::FunctorAux(), FunctorBinnedValuesDivision::FunctorBinnedValuesDivision(), FunctorCoordinatesFunctionAux::FunctorCoordinatesFunctionAux(), FunctorElementalGradientAuxTempl< is_ad >::FunctorElementalGradientAuxTempl(), FunctorExtremaPositions::FunctorExtremaPositions(), FunctorIC::FunctorIC(), FunctorNodalCorrector::FunctorNodalCorrector(), FunctorPositions::FunctorPositions(), FunctorSmootherTempl< T >::FunctorSmootherTempl(), FunctorVectorElementalAuxTempl< is_ad >::FunctorVectorElementalAuxTempl(), FVAdvection::FVAdvection(), FVFluxBC::FVFluxBC(), FVInterfaceKernel::FVInterfaceKernel(), FVOneVarDiffusionInterface::FVOneVarDiffusionInterface(), FVTwoVarContinuityConstraint::FVTwoVarContinuityConstraint(), Boundary2DDelaunayGenerator::General2DDelaunay(), SurfaceSubdomainsDelaunayRemesher::General2DDelaunay(), AddMetaDataGenerator::generate(), AdvancedExtruderGenerator::generate(), BlockDeletionGenerator::generate(), BlockToMeshConverterGenerator::generate(), Boundary2DDelaunayGenerator::generate(), BoundaryDeletionGenerator::generate(), BoundaryElementConversionGenerator::generate(), BreakBoundaryOnSubdomainGenerator::generate(), BreakMeshByBlockGenerator::generate(), BreakMeshByElementGenerator::generate(), CircularBoundaryCorrectionGenerator::generate(), CoarsenBlockGenerator::generate(), CoarsenSurfaceMeshAlongSidesetGenerator::generate(), CombinerGenerator::generate(), ConcentricCircleMeshGenerator::generate(), CutMeshByLevelSetGeneratorBase::generate(), ElementsToTetrahedronsConverter::generate(), ExtraNodesetGenerator::generate(), FillBetweenCurvesGenerator::generate(), FillBetweenSidesetsGenerator::generate(), FlipSidesetGenerator::generate(), GeneratedMeshGenerator::generate(), LowerDBlockFromSidesetGenerator::generate(), ManifoldSubdomainGenerator::generate(), MeshCollectionGenerator::generate(), MeshExtruderGenerator::generate(), MoveBoundaryNodesToCurveGenerator::generate(), ParsedCurveGenerator::generate(), ParsedExtraElementIDGenerator::generate(), ParsedSubdomainGeneratorBase::generate(), PlaneIDMeshGenerator::generate(), PolyLineMeshFollowingNodeSetGenerator::generate(), ProjectSideSetOntoLevelSetGenerator::generate(), RefineBlockGenerator::generate(), RefineSidesetGenerator::generate(), RenameBlockGenerator::generate(), RenameBoundaryGenerator::generate(), RenumberBySubdomainGenerator::generate(), SideSetsFromNodeSetsGenerator::generate(), StackGenerator::generate(), SubdomainBoundingBoxGenerator::generate(), SubdomainsFromPartitionerGenerator::generate(), SurfaceSubdomainsDelaunayRemesher::generate(), TriToQuadConverter::generate(), UniqueExtraIDMeshGenerator::generate(), XYFrontalDelaunayGenerator::generate(), XYMeshLineCutter::generate(), XYZDelaunayGenerator::generate(), PatternedMeshGenerator::generate(), GeneratedMeshGenerator::GeneratedMeshGenerator(), BoundaryLayerUtils::generateOffsetPolyline(), GenericConstantStdVectorMaterialTempl< is_ad >::GenericConstantStdVectorMaterialTempl(), GenericFunctorGradientMaterialTempl< is_ad >::GenericFunctorGradientMaterialTempl(), GenericFunctorMaterialTempl< is_ad >::GenericFunctorMaterialTempl(), GenericFunctorTimeDerivativeMaterialTempl< is_ad >::GenericFunctorTimeDerivativeMaterialTempl(), GenericVectorFunctorMaterialTempl< is_ad >::GenericVectorFunctorMaterialTempl(), PropertyReadFile::getBlockData(), ComponentBoundaryConditionInterface::getBoundaryCondition(), MultiApp::getCommandLineArgs(), PropertyReadFile::getData(), PropertyReadFile::getFileNames(), Sampler::getGlobalSamples(), ComponentInitialConditionInterface::getInitialCondition(), NEML2Action::getInputParameterMapping(), MultiAppNearestNodeTransfer::getLocalEntitiesAndComponents(), Sampler::getLocalSamples(), MeshGenerator::getMeshGeneratorNameFromParam(), MeshGenerator::getMeshGeneratorNamesFromParam(), FEProblemSolve::getParamFromNonlinearSystemVectorParam(), PostprocessorInterface::getPostprocessorNameInternal(), PostprocessorInterface::getPostprocessorValueInternal(), Sampler::getSampleRow(), MultiAppNearestNodeTransfer::getTargetLocalNodes(), UserObjectInterface::getUserObjectBase(), UserObjectInterface::getUserObjectName(), AddPeriodicBCAction::getVariables(), HFEMDirichletBC::HFEMDirichletBC(), AddVariableAction::init(), TimeIntegrator::init(), MFEMTransient::init(), FEProblemBase::init(), MultiApp::init(), MFEMWeakFormBase::initEquationSystem(), DistributedPositions::initialize(), BlockWeightedPartitioner::initialize(), BlockRestrictable::initializeBlockRestrictable(), BoundaryRestrictable::initializeBoundaryRestrictable(), PhysicsBase::initializePhysics(), ReferenceResidualConvergence::initialSetup(), Axisymmetric2D3DSolutionFunction::initialSetup(), PiecewiseConstantFromCSV::initialSetup(), SolutionIC::initialSetup(), LibtorchControlValuePostprocessor::initialSetup(), ElementSubdomainModifierBase::initialSetup(), MFEMScalarCoefficientPointValueSampler::initialSetup(), FullSolveMultiApp::initialSetup(), JSONOutput::initialSetup(), BoundaryLinearFVFluxIntegral::initialSetup(), SideFVFluxBCIntegral::initialSetup(), MultiAppCloneReporterTransfer::initialSetup(), MultiAppDofCopyTransfer::initialSetup(), MultiAppGeneralFieldKDTreeTransferBase::initialSetup(), MultiAppGeneralFieldNearestLocationTransfer::initialSetup(), MultiAppGeneralFieldTransfer::initialSetup(), MultiAppVariableValueSamplePostprocessorTransfer::initialSetup(), PointInPolyhedronCheckUO::initialSetup(), HistogramVectorPostprocessor::initialSetup(), SampledOutput::initSample(), AddMetaDataGenerator::inputChecker(), IntegratedBC::IntegratedBC(), InterfaceDiffusiveFluxIntegralTempl< is_ad >::InterfaceDiffusiveFluxIntegralTempl(), InterfaceValueUserObjectAux::InterfaceValueUserObjectAux(), InternalSideIndicatorBase::InternalSideIndicatorBase(), InterpolatedStatefulMaterialTempl< T >::InterpolatedStatefulMaterialTempl(), InversePowerMethod::InversePowerMethod(), IterationAdaptiveDT::IterationAdaptiveDT(), MultiApp::keepSolutionDuringRestore(), Kernel::Kernel(), LibtorchNeuralNetControl::LibtorchNeuralNetControl(), LinearCombinationFunction::LinearCombinationFunction(), LinearFVAdvectionDiffusionFunctorRobinBC::LinearFVAdvectionDiffusionFunctorRobinBC(), LinearFVGradientAux::LinearFVGradientAux(), Moose::MFEM::LinearSolverBase::LinearSolverBase(), LowerDIntegratedBC::LowerDIntegratedBC(), PNGOutput::makeMeshFunc(), MatCoupledForce::MatCoupledForce(), MaterialADConverterTempl< T >::MaterialADConverterTempl(), MaterialFunctorConverterTempl< T >::MaterialFunctorConverterTempl(), MatReactionTempl< is_ad >::MatReactionTempl(), MatrixSymmetryCheck::MatrixSymmetryCheck(), PatternedMeshGenerator::mergeSubdomainNameMaps(), MeshCollectionGenerator::MeshCollectionGenerator(), MeshDiagnosticsGenerator::MeshDiagnosticsGenerator(), MeshDivisionAux::MeshDivisionAux(), MeshGenerator::MeshGenerator(), MeshGeneratorComponent::MeshGeneratorComponent(), MeshInfo::MeshInfo(), MFEMComplexSumAux::MFEMComplexSumAux(), MFEMEigenproblem(), MFEMFunctorMaterial::MFEMFunctorMaterial(), MFEMGeneratedMeshGenerator::MFEMGeneratedMeshGenerator(), MFEMGenericFunctorMaterial::MFEMGenericFunctorMaterial(), MFEMGenericFunctorMatrixMaterial::MFEMGenericFunctorMatrixMaterial(), MFEMGenericFunctorVectorMaterial::MFEMGenericFunctorVectorMaterial(), MFEMGeometricMultigridSolver::MFEMGeometricMultigridSolver(), MFEMHypreBoomerAMG::MFEMHypreBoomerAMG(), MFEMMultiAppTransfer::MFEMMultiAppTransfer(), MFEMNDtoRTAux::MFEMNDtoRTAux(), MFEMSumAux::MFEMSumAux(), MFEMVariable::MFEMVariable(), MFEMWeakFormProblemComposerBase::MFEMWeakFormProblemComposerBase(), MooseLinearVariableFV< OutputType >::MooseLinearVariableFV(), UserObjectInterface::mooseObjectError(), MoosePreconditioner::MoosePreconditioner(), MooseStaticCondensationPreconditioner::MooseStaticCondensationPreconditioner(), MooseVariableBase::MooseVariableBase(), MortarConstraintBase::MortarConstraintBase(), MortarNodalAuxKernelTempl< ComputeValueType >::MortarNodalAuxKernelTempl(), MultiApp::moveApp(), MoveBoundaryNodesToCurveGenerator::MoveBoundaryNodesToCurveGenerator(), MoveNodeGenerator::MoveNodeGenerator(), MoveNodesByParsedExpressionModifier::MoveNodesByParsedExpressionModifier(), TriToQuadConverter::moveSurvivingTriangles(), MultiApp::MultiApp(), MultiAppCloneReporterTransfer::MultiAppCloneReporterTransfer(), MultiAppGeneralFieldFunctorTransfer::MultiAppGeneralFieldFunctorTransfer(), MultiAppGeneralFieldKDTreeTransferBase::MultiAppGeneralFieldKDTreeTransferBase(), MultiAppGeneralFieldShapeEvaluationTransfer::MultiAppGeneralFieldShapeEvaluationTransfer(), MultiAppGeneralFieldTransfer::MultiAppGeneralFieldTransfer(), MultiAppGeneralFieldUserObjectTransfer::MultiAppGeneralFieldUserObjectTransfer(), MultiAppGeometricInterpolationTransfer::MultiAppGeometricInterpolationTransfer(), MultiAppNearestNodeTransfer::MultiAppNearestNodeTransfer(), MultiAppPostprocessorInterpolationTransfer::MultiAppPostprocessorInterpolationTransfer(), MultiAppPostprocessorToAuxScalarTransfer::MultiAppPostprocessorToAuxScalarTransfer(), MultiAppPostprocessorTransfer::MultiAppPostprocessorTransfer(), MultiAppProjectionTransfer::MultiAppProjectionTransfer(), MultiAppReporterTransfer::MultiAppReporterTransfer(), MultiAppScalarToAuxScalarTransfer::MultiAppScalarToAuxScalarTransfer(), MultiAppShapeEvaluationTransfer::MultiAppShapeEvaluationTransfer(), MultiAppTransfer::MultiAppTransfer(), MultiAppUserObjectTransfer::MultiAppUserObjectTransfer(), MultiAppVariableValueSamplePostprocessorTransfer::MultiAppVariableValueSamplePostprocessorTransfer(), MultiAppVariableValueSampleTransfer::MultiAppVariableValueSampleTransfer(), MultiAppVectorPostprocessorTransfer::MultiAppVectorPostprocessorTransfer(), MultiSystemSolveObject::MultiSystemSolveObject(), NearestNodeValueAux::NearestNodeValueAux(), NEML2Action::NEML2Action(), NestedDivision::NestedDivision(), NodalBC::NodalBC(), NodalEqualValueConstraint::NodalEqualValueConstraint(), NodalKernel::NodalKernel(), NodalPatchRecoveryAux::NodalPatchRecoveryAux(), NodalValueSampler::NodalValueSampler(), NumDOFs::NumDOFs(), OrientSurfaceMeshGenerator::OrientSurfaceMeshGenerator(), MeshTriangulationUtils::outerBoundaryIds(), Output::Output(), ParsedCurveGenerator::ParsedCurveGenerator(), ParsedFunctorMaterialTempl< is_ad >::ParsedFunctorMaterialTempl(), ParsedPostprocessor::ParsedPostprocessor(), ParsedReporterBase::ParsedReporterBase(), ParsedScalarReporter::ParsedScalarReporter(), ParsedSubdomainGeneratorBase::ParsedSubdomainGeneratorBase(), ParsedVectorRealReductionReporter::ParsedVectorRealReductionReporter(), ParsedVectorReporter::ParsedVectorReporter(), ParsedVectorVectorRealReductionReporter::ParsedVectorVectorRealReductionReporter(), PatternedMeshGenerator::PatternedMeshGenerator(), PenaltyPeriodicSegmentalConstraint::PenaltyPeriodicSegmentalConstraint(), PeriodicSegmentalConstraint::PeriodicSegmentalConstraint(), PIDTransientControl::PIDTransientControl(), PlaneDeletionGenerator::PlaneDeletionGenerator(), PlaneIDMeshGenerator::PlaneIDMeshGenerator(), PointInPolyhedronBaseUO::PointInPolyhedronBaseUO(), PointInSignedFunctionCheckUO::PointInSignedFunctionCheckUO(), PointInUnionCheckUO::PointInUnionCheckUO(), PointwiseRenormalizeVector::PointwiseRenormalizeVector(), PolyLineMeshFollowingNodeSetGenerator::PolyLineMeshFollowingNodeSetGenerator(), EqualValueBoundaryConstraint::populateSecondaryNodes(), ReporterInterface::possiblyCheckHasReporter(), VectorPostprocessorInterface::possiblyCheckHasVectorPostprocessor(), LibmeshPartitioner::prepareBlocksForSubdomainPartitioner(), ProjectedMaterialPropertyNodalPatchRecoveryAux::ProjectedMaterialPropertyNodalPatchRecoveryAux(), ProjectSideSetOntoLevelSetGenerator::ProjectSideSetOntoLevelSetGenerator(), PropertyReadFile::PropertyReadFile(), RandomIC::RandomIC(), RankTwoTensorFromComponentProperties::RankTwoTensorFromComponentProperties(), MultiApp::readCommandLineArguments(), PropertyReadFile::readData(), SolutionUserObjectBase::readExodusIIOrNemesis(), SolutionUserObjectBase::readXda(), ReferenceResidualConvergence::ReferenceResidualConvergence(), RefineBlockGenerator::RefineBlockGenerator(), RefineSidesetGenerator::RefineSidesetGenerator(), RenameBlockGenerator::RenameBlockGenerator(), RenameBoundaryGenerator::RenameBoundaryGenerator(), ReporterPointSource::ReporterPointSource(), FEProblemBase::restoreSolutions(), SecondTimeDerivativeAux::SecondTimeDerivativeAux(), FEProblemBase::setLinearConvergenceNames(), FEProblemBase::setNonlinearConvergenceNames(), MooseMesh::setPartitioner(), Moose::MFEM::LinearSolverBase::SetPreconditioner(), Moose::MFEM::LinearSolverBase::SetPreconditionerImpl(), MFEMHypreAME::SetPreconditionerImpl(), MFEMHypreFGMRES::SetPreconditionerImpl(), MFEMHypreGMRES::SetPreconditionerImpl(), MFEMHyprePCG::SetPreconditionerImpl(), NodeSetsGeneratorBase::setup(), SideSetsGeneratorBase::setup(), SurfaceMeshGeneratorBase::setup(), CylinderComponent::setupComponent(), NEML2Action::setupDerivativeMappings(), NEML2Action::setupInputMappings(), MultiSystemSolveObject::setupMultiSystemFixedPointRelaxationFactors(), MoveNodesByParsedExpressionModifier::setupNodalOutputVariables(), NEML2Action::setupParameterDerivativeMappings(), SetupQuadratureAction::SetupQuadratureAction(), SidesetAroundSubdomainUpdater::SidesetAroundSubdomainUpdater(), SideSetsFromBoundingBoxGenerator::SideSetsFromBoundingBoxGenerator(), SideValueSampler::SideValueSampler(), SingleRankPartitioner::SingleRankPartitioner(), SphericalGridDivision::SphericalGridDivision(), StitchBoundaryMeshGenerator::StitchBoundaryMeshGenerator(), StitchMeshGenerator::StitchMeshGenerator(), SurfaceSubdomainsDelaunayRemesher::SurfaceSubdomainsDelaunayRemesher(), SymmetryTransformGenerator::SymmetryTransformGenerator(), TagVectorAux::TagVectorAux(), XYFrontalDelaunayGenerator::targetArea(), Terminator::Terminator(), TimeDerivativeAux::TimeDerivativeAux(), TorchPreKernel::TorchPreKernel(), Transfer::Transfer(), TransformGenerator::TransformGenerator(), TransientMultiApp::TransientMultiApp(), CylinderComponent::translation(), MeshTriangulationUtils::triangulateWithDelaunay(), TriToQuadConverter::TriToQuadConverter(), ParsedCurveGenerator::tSectionSpaceDefiner(), UniqueExtraIDMeshGenerator::UniqueExtraIDMeshGenerator(), UserObjectBase::UserObjectBase(), Checkpoint::validateExecuteOn(), ParsedAux::validateGenericVectorNames(), SolutionAux::validateVariable(), MFEMProblem::validateVariableNumericType(), VariableCondensationPreconditioner::VariableCondensationPreconditioner(), VectorBodyForce::VectorBodyForce(), VectorFunctionDirichletBC::VectorFunctionDirichletBC(), VectorFunctionIC::VectorFunctionIC(), VolumeAux::VolumeAux(), WebServerControl::WebServerControl(), XYDelaunayGenerator::XYDelaunayGenerator(), XYFrontalDelaunayGenerator::XYFrontalDelaunayGenerator(), XYMeshLineCutter::XYMeshLineCutter(), XYQuadrilateralMeshFromBoundaryCurve::XYQuadrilateralMeshFromBoundaryCurve(), and XYZDelaunayGenerator::XYZDelaunayGenerator().

◆ parameters()

const InputParameters & MooseBase::parameters ( ) const
inlineinherited

Get the parameters of the object.

Returns
The parameters of the object

Definition at line 131 of file MooseBase.h.

131{ return _pars; }

Referenced by AddActionComponentAction::act(), CommonOutputAction::act(), CSGOnlyAction::act(), MeshOnlyAction::act(), SetupDebugAction::act(), SplitMeshAction::act(), Action::Action(), FEProblemBase::addAnyRedistributers(), FEProblemBase::addAuxKernel(), MFEMProblem::addAuxKernel(), FEProblemBase::addAuxScalarKernel(), DisplacedProblem::addAuxVariable(), MFEMProblem::addAuxVariable(), FEProblemBase::addBoundaryCondition(), MFEMProblem::addBoundaryCondition(), FEProblemBase::addConstraint(), FEProblemBase::addConvergence(), FEProblemBase::addDamper(), AddDefaultConvergenceAction::addDefaultMultiAppFixedPointConvergence(), FEProblemBase::addDefaultMultiAppFixedPointConvergence(), AddDefaultConvergenceAction::addDefaultNonlinearConvergence(), FEProblemBase::addDefaultNonlinearConvergence(), ReferenceResidualProblem::addDefaultNonlinearConvergence(), AddDefaultConvergenceAction::addDefaultSteadyStateConvergence(), FEProblemBase::addDefaultSteadyStateConvergence(), MFEMProblem::addDefaultWeakForm(), addDefaultWeakForm(), FEProblemBase::addDGKernel(), FEProblemBase::addDiracKernel(), FEProblemBase::addDistribution(), MFEMProblem::addFESpace(), MFEMProblem::addFESpaceHierarchy(), FEProblemBase::addFunction(), MFEMProblem::addFunction(), FEProblemBase::addFunctorMaterial(), MFEMProblem::addFunctorMaterial(), FEProblemBase::addFVBC(), FEProblemBase::addFVGradientMethod(), FEProblemBase::addFVInitialCondition(), FEProblemBase::addFVInterfaceKernel(), FEProblemBase::addFVInterpolationMethod(), FEProblemBase::addFVKernel(), MFEMProblem::addGridFunction(), FEProblemBase::addHDGKernel(), MFEMProblem::addImagComponentToBC(), MFEMProblem::addImagComponentToKernel(), FEProblemBase::addIndicator(), MFEMProblem::addIndicator(), FEProblemBase::addInitialCondition(), MFEMProblem::addInitialCondition(), DiffusionPhysicsBase::addInitialConditions(), FEProblemBase::addInterfaceKernel(), FEProblemBase::addInterfaceMaterial(), FEProblemBase::addKernel(), MFEMProblem::addKernel(), FEProblemBase::addLinearFVBC(), FEProblemBase::addLinearFVKernel(), FEProblem::addLineSearch(), FEProblemBase::addMarker(), MFEMProblem::addMarker(), FEProblemBase::addMaterial(), FEProblemBase::addMaterialHelper(), FEProblemBase::addMeshDivision(), MFEMProblem::addMFEMFESpaceFromMOOSEVariable(), MFEMProblem::addMFEMSolver(), FEProblemBase::addMultiApp(), FEProblemBase::addNodalKernel(), MFEMProblem::addObject(), FEProblemBase::addObject(), FEProblemBase::addObjectParamsHelper(), FEProblemBase::addOutput(), FEProblemBase::addPostprocessor(), MFEMProblem::addPostprocessor(), FEProblemBase::addPredictor(), MFEMProblem::addProblemComposer(), MFEMProblem::addRealComponentToBC(), MFEMProblem::addRealComponentToKernel(), FEProblemBase::addReporter(), FEProblemBase::addSampler(), FEProblemBase::addScalarKernel(), MFEMProblem::addSubMesh(), FEProblemBase::addTimeIntegrator(), FEProblemBase::addTransfer(), MFEMProblem::addTransfer(), FEProblemBase::addUserObject(), DisplacedProblem::addVariable(), addVariable(), MFEMProblem::addVariable(), FEProblemBase::addVectorPostprocessor(), MFEMProblem::addVectorPostprocessor(), MFEMProblem::addWeakForm(), ADPiecewiseLinearInterpolationMaterial::ADPiecewiseLinearInterpolationMaterial(), AdvancedOutput::AdvancedOutput(), AnnularMesh::AnnularMesh(), AnnularMeshGenerator::AnnularMeshGenerator(), assemble_l2(), Moose::assemble_matrix(), Action::associateWithParameter(), AuxKernelBase::AuxKernelBase(), AuxScalarKernel::AuxScalarKernel(), BoundsBase::BoundsBase(), MooseMesh::buildTypedMesh(), MeshGenerator::checkGetMesh(), PostprocessorInterface::checkParam(), AddDefaultConvergenceAction::checkUnusedMultiAppFixedPointConvergenceParameters(), AddDefaultConvergenceAction::checkUnusedNonlinearConvergenceParameters(), AddDefaultConvergenceAction::checkUnusedSteadyStateConvergenceParameters(), SampledOutput::cloneMesh(), Moose::compute_bounds(), Moose::compute_jacobian(), Moose::compute_nearnullspace(), Moose::compute_nullspace(), Moose::compute_postcheck(), Moose::compute_transpose_nullspace(), LibtorchNeuralNetControl::conditionalParameterError(), Console::Console(), MooseMeshUtils::copyIntoMesh(), CommonOutputAction::create(), MultiApp::createApp(), Postprocessor::declareValue(), DumpObjectsProblem::deduceNecessaryParameters(), DefaultMultiAppFixedPointConvergence::DefaultMultiAppFixedPointConvergence(), DumpObjectsProblem::dumpObjectHelper(), DumpObjectsProblem::DumpObjectsProblem(), EigenProblem::EigenProblem(), EigenProblemSolve::EigenProblemSolve(), ElementMaterialSampler::ElementMaterialSampler(), ExamplePatchMeshGenerator::ExamplePatchMeshGenerator(), Executor::Executor(), Exodus::Exodus(), ElementSubdomainModifierBase::extrapolatePolynomial(), FEProblem::FEProblem(), FixedPointSolve::FixedPointSolve(), FunctorSmootherTempl< T >::FunctorSmootherTempl(), GapValueAux::GapValueAux(), ParsedSubdomainGeneratorBase::generate(), ActionWarehouse::getCurrentActionName(), ExecutorInterface::getExecutor(), Material::getMaterial(), Moose::PeriodicBCHelper::getParams(), ReporterInterface::getReporterName(), Reporter::getReporterValueName(), UserObjectInterface::getUserObjectName(), AuxKernelBase::getVariableHelper(), VectorPostprocessorInterface::getVectorPostprocessorName(), GhostingUserObject::GhostingUserObject(), MeshGeneratorSystem::hasDataDrivenAllowed(), AttribSystem::initFrom(), AttribDisplaced::initFrom(), BlockRestrictable::initializeBlockRestrictable(), FullSolveMultiApp::initialSetup(), FEProblemBase::initNullSpaceVectors(), InterfaceDiffusiveFluxIntegralTempl< is_ad >::InterfaceDiffusiveFluxIntegralTempl(), InterfaceIntegralVariableValuePostprocessor::InterfaceIntegralVariableValuePostprocessor(), InterfaceKernelTempl< T >::InterfaceKernelTempl(), MooseObject::isKokkosObject(), isValid(), IterationAdaptiveDT::IterationAdaptiveDT(), MooseApp::MooseApp(), MooseObject::MooseObject(), UserObjectInterface::mooseObjectError(), MooseVariableInterface< T >::MooseVariableInterface(), MultiApp::MultiApp(), MultiAppGeneralFieldTransfer::MultiAppGeneralFieldTransfer(), MultiAppGeneralFieldUserObjectTransfer::MultiAppGeneralFieldUserObjectTransfer(), MultiAppTransfer::MultiAppTransfer(), MultiAppVariableValueSamplePostprocessorTransfer::MultiAppVariableValueSamplePostprocessorTransfer(), NodeFaceConstraint::NodeFaceConstraint(), ConsoleUtils::outputLegacyInformation(), OverlayMeshGenerator::OverlayMeshGenerator(), ParsedReporterBase::ParsedReporterBase(), ParsedScalarReporter::ParsedScalarReporter(), PenetrationAux::PenetrationAux(), PiecewiseBilinear::PiecewiseBilinear(), PiecewiseLinearInterpolationMaterial::PiecewiseLinearInterpolationMaterial(), NEML2Action::printSummary(), ProjectedStatefulMaterialStorageAction::processProperty(), PropertyReadFile::PropertyReadFile(), PseudoTimestep::PseudoTimestep(), RandomIC::RandomIC(), ReferenceResidualConvergence::ReferenceResidualConvergence(), InputParameterWarehouse::removeInputParameters(), FEProblemBase::setAuxKernelParamsAndLog(), FEProblemBase::setInputParametersFEProblem(), FEProblem::setInputParametersFEProblem(), FEProblemBase::setResidualObjectParamsAndLog(), SideSetsGeneratorBase::setup(), NonlinearSystemBase::shouldEvaluatePreSMOResidual(), SideSetsFromBoundingBoxGenerator::SideSetsFromBoundingBoxGenerator(), Moose::PetscSupport::storePetscOptions(), DumpObjectsProblem::stringifyParameters(), TaggingInterface::TaggingInterface(), Transfer::Transfer(), TransientBase::TransientBase(), VectorBodyForce::VectorBodyForce(), VectorFunctionDirichletBC::VectorFunctionDirichletBC(), VectorFunctionIC::VectorFunctionIC(), and VectorMagnitudeFunctorMaterialTempl< is_ad >::VectorMagnitudeFunctorMaterialTempl().

◆ paramInfo()

template<typename... Args>
void MooseBase::paramInfo ( const std::string &  param,
Args...  args 
) const
inherited

Emits an informational message prefixed with the file and line number of the given param (from the input file) along with the full parameter path+name followed by the given args as the message.

If this object's parameters were not created directly by the Parser, then this function falls back to the normal behavior of mooseInfo - only printing a message using the given args.

Definition at line 471 of file MooseBase.h.

472{
473 mooseInfo(_pars.paramMessage(param, std::forward<Args>(args)...));
474}
std::string paramMessage(const std::string &param, Args... args) const

Referenced by GridPartitioner::_do_partition(), ComboMarker::ComboMarker(), Control::Control(), FEProblemBase::execMultiApps(), FunctorIC::FunctorIC(), and TransientMultiApp::TransientMultiApp().

◆ paramWarning() [1/2]

template<typename... Args>
void MooseBase::paramWarning ( const std::string &  param,
Args...  args 
) const
inherited

Emits a warning prefixed with the file and line number of the given param (from the input file) along with the full parameter path+name followed by the given args as the message.

If this object's parameters were not created directly by the Parser, then this function falls back to the normal behavior of mooseWarning - only printing a message using the given args.

Definition at line 464 of file MooseBase.h.

465{
466 mooseWarning(_pars.paramMessage(param, std::forward<Args>(args)...));
467}

◆ paramWarning() [2/2]

template<typename... Args>
void SolutionInvalidInterface::paramWarning ( const std::string &  param,
Args...  args 
) const
inlineinherited

◆ parentOutputPositionChanged()

void FEProblemBase::parentOutputPositionChanged ( )
inherited

Calls parentOutputPositionChanged() on all sub apps.

Definition at line 5331 of file FEProblemBase.C.

5332{
5333 for (const auto & it : _multi_apps)
5334 {
5335 const auto & objects = it.second.getActiveObjects();
5336 for (const auto & obj : objects)
5338 }
5339}
void parentOutputPositionChanged()
Calls parentOutputPositionChanged() on all sub apps.

Referenced by TransientBase::parentOutputPositionChanged().

◆ partitionConcurrentMultiApps()

void FEProblemBase::partitionConcurrentMultiApps ( )
inherited

Assign each multiapp that shares an 'execution_order_group' with others a disjoint subset of the ranks so that they can be solved concurrently (at most one child app per rank at a time).

Note that each MultiApp may have multiple child applications, and each child app may use more than one rank.

  • Only does anything when 'num_concurrent_multiapps' > 1.
  • Must be called before the sub-apps are created.

Definition at line 6445 of file FEProblemBase.C.

6446{
6448 return;
6449
6450 // Group the multiapps by execution order group. Only position-based multiapps are partitioned
6451 // here; sampler-style (non-positions) multiapps assign their own rank configuration.
6452 std::map<unsigned int, std::vector<std::shared_ptr<MultiApp>>> groups;
6453 for (const auto & multi_app : _multi_apps.getActiveObjects())
6454 if (multi_app->usingPositions())
6455 groups[multi_app->getParam<unsigned int>("execution_order_group")].push_back(multi_app);
6456
6457 // For the MultiApps that are using samplers, their partitioning is already handled there
6458 // so we just skipped them. But if they were to share an execution_order_group, we would crash
6459 // if using concurrent multiapps. So let's error.
6460 // For any other MultiApps that are not using positions, we would just need them to know
6461 // numGlobalApps() to benefit from this concurrent partitioning. We can allow them here in the
6462 // future.
6463 std::map<unsigned int, std::vector<std::shared_ptr<MultiApp>>> check_groups;
6464 for (const auto & multi_app : _multi_apps.getActiveObjects())
6465 check_groups[multi_app->getParam<unsigned int>("execution_order_group")].push_back(multi_app);
6466 for (const auto & [group_id, group] : check_groups)
6467 for (const auto & multi_app : group)
6468 if (group.size() > 1 && !multi_app->usingPositions())
6469 multi_app->paramError(
6470 "execution_order_group",
6471 "This MultiApp must be placed in its own execution order group as concurrent execution "
6472 "has not been implemented for this type of app at this time");
6473
6474 const auto n_procs = n_processors();
6475 const auto my_rank = processor_id();
6476
6477 for (const auto & [group_id, group] : groups)
6478 {
6479 // Nothing to run concurrently unless the group has more than one multiapp
6480 if (group.size() < 2)
6481 continue;
6482
6483 // Number of ranks handed to each multiapp. Start each at its per-app minimum (at least one
6484 // rank), then distribute the rest; caps prevent giving a multiapp more ranks than it could
6485 // spread its apps over at 'max_procs_per_app'. With the defaults (min 1, max unbounded) this
6486 // is just an even split.
6487 std::vector<processor_id_type> count(group.size());
6488 std::vector<processor_id_type> caps(group.size());
6489 std::vector<processor_id_type> mins(group.size());
6490 std::vector<processor_id_type> maxs(group.size());
6491 processor_id_type min_total = 0;
6492 for (const auto m : index_range(group))
6493 {
6494 // Each multiapp needs at least one rank, so a 'min_procs_per_app' of 0 is treated as 1
6495 mins[m] = group[m]->getParam<processor_id_type>("min_procs_per_app");
6496 maxs[m] = group[m]->getParam<processor_id_type>("max_procs_per_app");
6497 const auto n_apps_m = cast_int<processor_id_type>(group[m]->numGlobalApps());
6498 caps[m] = (maxs[m] >= n_procs) ? n_procs : std::min(n_procs, n_apps_m * maxs[m]);
6499 count[m] = mins[m];
6500 min_total += mins[m];
6501 }
6502
6503 if (min_total > n_procs)
6504 mooseError("Not enough MPI ranks to run the ",
6505 group.size(),
6506 " multiapps of 'execution_order_group' ",
6507 group_id,
6508 " concurrently: they need at least ",
6509 min_total,
6510 " ranks (from 'min_procs_per_app') but only ",
6511 n_procs,
6512 " are available. Reduce the number of concurrent multiapps, lower "
6513 "'min_procs_per_app', or run with more processors.");
6514
6515 // Hand out the remaining ranks round-robin to multiapps still below their cap
6516 processor_id_type remaining = n_procs - min_total;
6517 bool progress = true;
6518 while (remaining > 0 && progress)
6519 {
6520 progress = false;
6521 for (const auto m : index_range(group))
6522 if (remaining > 0 && count[m] < caps[m])
6523 {
6524 count[m]++;
6525 remaining--;
6526 progress = true;
6527 }
6528 }
6529 // Any leftover ranks (all multiapps already at their cap) simply run no app in this group.
6530
6531 // Assign each multiapp a contiguous, disjoint rank range and (re)initialize it on that range.
6532 // This is collective: every rank calls init() (hence buildComm's split) for every multiapp.
6533 processor_id_type offset = 0;
6534 for (const auto m : index_range(group))
6535 {
6536 LocalRankConfig cfg{0, 0, 0, 0, false, 0};
6537 if (my_rank >= offset && my_rank < offset + count[m])
6538 cfg = rankConfig(
6539 my_rank - offset, count[m], group[m]->numGlobalApps(), mins[m], maxs[m], false);
6540 group[m]->init(group[m]->numGlobalApps(), cfg);
6541 offset += count[m];
6542 }
6543 }
6544}
LocalRankConfig rankConfig(processor_id_type rank, processor_id_type nprocs, dof_id_type napps, processor_id_type min_app_procs, processor_id_type max_app_procs, bool batch_mode=false)
Returns app partitioning information relevant to the given rank for a multiapp scenario with the give...
Definition MultiApp.C:1369
processor_id_type n_processors() const
uint8_t processor_id_type
Holds app partitioning information relevant to the a particular rank for a multiapp scenario.
Definition MultiApp.h:47

◆ perfGraph()

PerfGraph & PerfGraphInterface::perfGraph ( )
inherited

Get the PerfGraph.

Definition at line 86 of file PerfGraphInterface.C.

87{
88 return _pg_moose_app.perfGraph();
89}
PerfGraph & perfGraph()
Get the PerfGraph for this app.
Definition MooseApp.h:176
MooseApp & _pg_moose_app
The MooseApp that owns the PerfGraph.

Referenced by CommonOutputAction::act(), PerfGraphData::finalize(), PerfGraphReporter::finalize(), and PerfGraphOutput::output().

◆ petscOptionsDatabase()

PetscOptions & FEProblemBase::petscOptionsDatabase ( )
inlineinherited

◆ petscOptionsInserted()

bool & FEProblemBase::petscOptionsInserted ( )
inlineinherited

If PETSc options are already inserted.

Definition at line 2709 of file FEProblemBase.h.

bool _is_petsc_options_inserted
If or not PETSc options have been added to database.

Referenced by EigenProblemSolve::initialSetup().

◆ possiblyRebuildGeomSearchPatches()

void FEProblemBase::possiblyRebuildGeomSearchPatches ( )
virtualinherited

Definition at line 9196 of file FEProblemBase.C.

9197{
9198 if (_displaced_problem) // Only need to do this if things are moving...
9199 {
9200 TIME_SECTION("possiblyRebuildGeomSearchPatches", 5, "Rebuilding Geometric Search Patches");
9201
9202 switch (_mesh.getPatchUpdateStrategy())
9203 {
9204 case Moose::Never:
9205 break;
9206 case Moose::Iteration:
9207 // Update the list of ghosted elements at the start of the time step
9210
9211 _displaced_problem->geomSearchData().updateGhostedElems();
9213
9214 // The commands below ensure that the sparsity of the Jacobian matrix is
9215 // augmented at the start of the time step using neighbor nodes from the end
9216 // of the previous time step.
9217
9219
9220 // This is needed to reinitialize PETSc output
9222
9223 break;
9224
9225 case Moose::Auto:
9226 {
9227 Real max = _displaced_problem->geomSearchData().maxPatchPercentage();
9228 _communicator.max(max);
9229
9230 // If we haven't moved very far through the patch
9231 if (max < 0.4)
9232 break;
9233 }
9234 libmesh_fallthrough();
9235
9236 // Let this fall through if things do need to be updated...
9237 case Moose::Always:
9238 // Flush output here to see the message before the reinitialization, which could take a
9239 // while
9240 _console << "\n\nUpdating geometric search patches\n" << std::endl;
9241
9244
9245 _displaced_problem->geomSearchData().clearNearestNodeLocators();
9247
9249
9250 // This is needed to reinitialize PETSc output
9252 }
9253 }
9254}
virtual void initPetscOutputAndSomeSolverSettings()
Reinitialize PETSc output for proper linear/nonlinear iteration display.
void clearNearestNodeLocators()
Clear out the Penetration Locators so they will redo the search.
void updateGhostedElems()
Updates the list of ghosted elements at the start of each time step for the nonlinear iteration patch...
const Moose::PatchUpdateType & getPatchUpdateStrategy() const
Get the current patch update strategy.
Definition MooseMesh.C:3511
auto max(const L &left, const R &right)
@ Iteration

Referenced by FEProblemBase::solve().

◆ postExecute()

void FEProblemBase::postExecute ( )
virtualinherited

Method called at the end of the simulation.

Definition at line 6671 of file FEProblemBase.C.

6672{
6673 const auto & multi_apps = _multi_apps.getActiveObjects();
6674
6675 for (const auto & multi_app : multi_apps)
6676 multi_app->postExecute();
6677}
virtual void postExecute()
Method called at the end of the simulation.

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

◆ predictorCleanup()

void FEProblemBase::predictorCleanup ( NumericVector< libMesh::Number > &  ghosted_solution)
virtualinherited

Perform cleanup tasks after application of predictor to solution vector.

Parameters
ghosted_solutionGhosted solution vector

Definition at line 9088 of file FEProblemBase.C.

9089{
9090}

Referenced by NonlinearSystemBase::setInitialSolution().

◆ pRefine()

bool MFEMProblem::pRefine ( )
inlineinherited

If AMR is enabled, request (and perform if needed) p-refinement.

Definition at line 384 of file MFEMProblem.h.

384{ return _problem_data.refiner && _problem_data.refiner->pRefine(); }

Referenced by MFEMProblemSolve::solve().

◆ prepare() [1/2]

void FEProblemBase::prepare ( const Elem *  elem,
const THREAD_ID  tid 
)
overridevirtualinherited

Implements SubProblem.

Definition at line 2096 of file FEProblemBase.C.

2097{
2098 for (const auto i : index_range(_solver_systems))
2099 {
2100 _assembly[tid][i]->reinit(elem);
2101 _solver_systems[i]->prepare(tid);
2102
2103 if (i < _num_nl_sys)
2104 {
2105 // This method is called outside of residual/Jacobian callbacks during initial condition
2106 // evaluation
2108 _assembly[tid][i]->prepareJacobianBlock();
2109 _assembly[tid][i]->prepareResidual();
2111 _assembly[tid][i]->prepareNonlocal();
2112 }
2113 }
2114 _aux->prepare(tid);
2115
2116 if (_displaced_problem &&
2117 // _reinit_displaced_neighbor applies to interface type objects which will do computations
2118 // based on both elem and neighbor. Consequently, despite what you might think by its name, we
2119 // must make sure we prepare the displaced elem
2121 {
2122 _displaced_problem->prepare(_displaced_mesh->elemPtr(elem->id()), tid);
2124 _displaced_problem->prepareNonlocal(tid);
2125 }
2126}
const bool & currentlyComputingJacobian() const
Returns true if the problem is in the process of computing the Jacobian.
Definition SubProblem.h:695

Referenced by NodalPatchRecovery::compute(), ComputeElemDampingThread::onElement(), ComputeIndicatorThread::onElement(), ComputeMarkerThread::onElement(), ComputeMaterialsObjectThread::onElement(), ComputeUserObjectsThread::onElement(), and ComputeInitialConditionThread::operator()().

◆ prepare() [2/2]

void FEProblemBase::prepare ( const Elem *  elem,
unsigned int  ivar,
unsigned int  jvar,
const std::vector< dof_id_type > &  dof_indices,
const THREAD_ID  tid 
)
overridevirtualinherited

Implements SubProblem.

Definition at line 2140 of file FEProblemBase.C.

2145{
2146 for (const auto i : index_range(_nl))
2147 {
2148 _assembly[tid][i]->reinit(elem);
2149 _nl[i]->prepare(tid);
2150 }
2151
2152 _aux->prepare(tid);
2153 const auto current_nl_sys_num = _current_nl_sys->number();
2154 _assembly[tid][current_nl_sys_num]->prepareBlock(ivar, jvar, dof_indices);
2156 if (_nonlocal_cm[current_nl_sys_num](ivar, jvar) != 0)
2157 {
2159 _assembly[tid][current_nl_sys_num]->prepareBlockNonlocal(
2160 ivar, jvar, dof_indices, jv.allDofIndices());
2161 }
2162
2164 {
2165 _displaced_problem->prepare(_displaced_mesh->elemPtr(elem->id()), ivar, jvar, dof_indices, tid);
2167 if (_nonlocal_cm[current_nl_sys_num](ivar, jvar) != 0)
2168 {
2170 _displaced_problem->prepareBlockNonlocal(ivar, jvar, dof_indices, jv.allDofIndices(), tid);
2171 }
2172 }
2173}
virtual void prepare()=0
Prepare the elemental degrees of freedom.

◆ prepareAssembly()

void FEProblemBase::prepareAssembly ( const THREAD_ID  tid)
overridevirtualinherited

◆ prepareAssemblyNeighbor()

void FEProblemBase::prepareAssemblyNeighbor ( const THREAD_ID  tid)
virtualinherited

Begin a fresh neighbor accumulation phase by sizing and zeroing the neighbor blocks.

Definition at line 2231 of file FEProblemBase.C.

2232{
2233 _assembly[tid][_current_nl_sys->number()]->prepareNeighbor();
2234
2236 _displaced_problem->prepareAssemblyNeighbor(tid);
2237}

Referenced by NonlinearSystemBase::constraintJacobians().

◆ prepareFace()

void FEProblemBase::prepareFace ( const Elem *  elem,
const THREAD_ID  tid 
)
overridevirtualinherited

Implements SubProblem.

Definition at line 2129 of file FEProblemBase.C.

2130{
2131 for (auto & nl : _nl)
2132 nl->prepareFace(tid, true);
2133 _aux->prepareFace(tid, false);
2134
2136 _displaced_problem->prepareFace(_displaced_mesh->elemPtr(elem->id()), tid);
2137}
virtual void prepareFace(const Elem *elem, const THREAD_ID tid) override

Referenced by ComputeUserObjectsThread::onInterface(), and ComputeUserObjectsThread::onInternalSide().

◆ prepareFaceShapes()

void FEProblemBase::prepareFaceShapes ( unsigned int  var,
const THREAD_ID  tid 
)
overridevirtualinherited

Implements SubProblem.

Definition at line 2499 of file FEProblemBase.C.

2500{
2501 _assembly[tid][_current_nl_sys->number()]->copyFaceShapes(var);
2502}

Referenced by ComputeUserObjectsThread::onBoundary().

◆ prepareKokkosMaterials()

void FEProblemBase::prepareKokkosMaterials ( const std::unordered_set< unsigned int > &  consumer_needed_mat_props)
inherited

◆ prepareMaterials()

void FEProblemBase::prepareMaterials ( const std::unordered_set< unsigned int > &  consumer_needed_mat_props,
const SubdomainID  blk_id,
const THREAD_ID  tid 
)
inherited

Add the MooseVariables and the material properties that the current materials depend on to the dependency list.

Parameters
consumer_needed_mat_propsThe material properties needed by consumer objects (other than the materials themselves)
blk_idThe subdomain ID for which we are preparing our list of needed vars and props
tidThe thread ID we are preparing the requirements for

This MUST be done after the moose variable dependency list has been set for all the other objects using the setActiveElementalMooseVariables API!

Definition at line 4552 of file FEProblemBase.C.

4555{
4556 std::set<MooseVariableFEBase *> needed_moose_vars;
4557 std::unordered_set<unsigned int> needed_mat_props;
4558
4559 if (_all_materials.hasActiveBlockObjects(blk_id, tid))
4560 {
4561 _all_materials.updateVariableDependency(needed_moose_vars, tid);
4562 _all_materials.updateBlockMatPropDependency(blk_id, needed_mat_props, tid);
4563 }
4564
4565 const auto & ids = _mesh.getSubdomainBoundaryIds(blk_id);
4566 for (const auto id : ids)
4567 {
4568 _materials.updateBoundaryVariableDependency(id, needed_moose_vars, tid);
4569 _materials.updateBoundaryMatPropDependency(id, needed_mat_props, tid);
4570 }
4571
4572 const auto & current_active_elemental_moose_variables = getActiveElementalMooseVariables(tid);
4573 needed_moose_vars.insert(current_active_elemental_moose_variables.begin(),
4574 current_active_elemental_moose_variables.end());
4575
4576 needed_mat_props.insert(consumer_needed_mat_props.begin(), consumer_needed_mat_props.end());
4577
4578 setActiveElementalMooseVariables(needed_moose_vars, tid);
4579 setActiveMaterialProperties(needed_mat_props, tid);
4580}
void setActiveMaterialProperties(const std::unordered_set< unsigned int > &mat_prop_ids, const THREAD_ID tid)
Record and set the material properties required by the current computing thread.
virtual void setActiveElementalMooseVariables(const std::set< MooseVariableFEBase * > &moose_vars, const THREAD_ID tid) override
Set the MOOSE variables to be reinited on each element.
const std::set< BoundaryID > & getSubdomainBoundaryIds(const SubdomainID subdomain_id) const
Get the list of boundary ids associated with the given subdomain id.
Definition MooseMesh.C:3595
void updateVariableDependency(std::set< MooseVariableFieldBase * > &needed_moose_vars, THREAD_ID tid=0) const
Update variable dependency vector.
void updateBlockMatPropDependency(SubdomainID id, std::unordered_set< unsigned int > &needed_mat_props, THREAD_ID tid=0, const bool producer_only=false) const
void updateBoundaryVariableDependency(std::set< MooseVariableFieldBase * > &needed_moose_vars, THREAD_ID tid=0) const
bool hasActiveBlockObjects(THREAD_ID tid=0) const
void updateBoundaryMatPropDependency(std::unordered_set< unsigned int > &needed_mat_props, THREAD_ID tid=0, const bool producer_only=false) const
virtual const std::set< MooseVariableFieldBase * > & getActiveElementalMooseVariables(const THREAD_ID tid) const
Get the MOOSE variables to be reinited on each element.
Definition SubProblem.C:446

Referenced by ComputeIndicatorThread::subdomainChanged(), ComputeMarkerThread::subdomainChanged(), and ComputeUserObjectsThread::subdomainChanged().

◆ prepareNeighborShapes()

void FEProblemBase::prepareNeighborShapes ( unsigned int  var,
const THREAD_ID  tid 
)
overridevirtualinherited

Implements SubProblem.

Definition at line 2505 of file FEProblemBase.C.

2506{
2507 _assembly[tid][_current_nl_sys->number()]->copyNeighborShapes(var);
2508}

◆ preparePRefinement()

void SubProblem::preparePRefinement ( )
inherited

Prepare DofMap and Assembly classes with our p-refinement information.

Definition at line 1337 of file SubProblem.C.

1338{
1339 for (const auto tid : make_range(numThreads()))
1340 for (const auto s : make_range(numNonlinearSystems()))
1341 assembly(tid, s).preparePRefinement();
1342}
virtual Assembly & assembly(const THREAD_ID tid, const unsigned int sys_num)=0

Referenced by FEProblemBase::init().

◆ prepareShapes()

void FEProblemBase::prepareShapes ( unsigned int  var,
const THREAD_ID  tid 
)
overridevirtualinherited

Implements SubProblem.

Definition at line 2493 of file FEProblemBase.C.

2494{
2495 _assembly[tid][_current_nl_sys->number()]->copyShapes(var);
2496}

Referenced by ComputeUserObjectsThread::onElement().

◆ preserveMatrixSparsityPattern()

bool FEProblemBase::preserveMatrixSparsityPattern ( ) const
inlineinherited

Will return True if the executioner in use requires preserving the sparsity pattern of the matrices being formed during the solve.

This is usually the Jacobian.

Definition at line 2468 of file FEProblemBase.h.

bool _preserve_matrix_sparsity_pattern
Whether to preserve the system matrix / Jacobian sparsity pattern, using 0-valued entries usually.

◆ projectFunctionOnCustomRange()

void FEProblemBase::projectFunctionOnCustomRange ( ConstElemRange &  elem_range,
Number(*)(const Point &, const libMesh::Parameters &, const std::string &, const std::string &)  func,
Gradient(*)(const Point &, const libMesh::Parameters &, const std::string &, const std::string &)  func_grad,
const libMesh::Parameters &  params,
const std::vector< VariableName > &  target_vars 
)
inherited

Project a function onto a range of elements for a given variable.

Parameters
elem_rangeElement range to project on
funcFunction to project
func_gradGradient of the function
paramsParameters to pass to the function
target_varsvariable names to project

Definition at line 4257 of file FEProblemBase.C.

4268{
4269 mooseAssert(!Threads::in_threads,
4270 "We're performing a projection based on data from just the thread 0 variable, so any "
4271 "modifications to the variable solution must have been thread joined already");
4272
4273 std::unordered_map<unsigned int, std::vector<unsigned int>> sys_to_var_nums;
4274
4275 for (const auto & target_var : target_vars)
4276 {
4277 const auto sn = systemNumForVariable(target_var);
4278 const auto & var = getStandardVariable(0, target_var);
4279 sys_to_var_nums[sn].push_back(var.number());
4280 }
4281
4282 for (const auto & [sys_num, var_nums] : sys_to_var_nums)
4283 {
4284 System & libmesh_sys = getSystemBase(sys_num).system();
4285 libmesh_sys.project_solution(func, func_grad, params, elem_range, var_nums);
4286 }
4287}
virtual MooseVariable & getStandardVariable(const THREAD_ID tid, const std::string &var_name) override
Returns the variable reference for requested MooseVariable which may be in any system.
unsigned int systemNumForVariable(const VariableName &variable_name) const
void project_solution(FunctionBase< Number > *f, FunctionBase< Gradient > *g=nullptr, std::optional< ConstElemRange > active_local_range=std::nullopt, std::optional< std::vector< unsigned int > > variable_numbers=std::nullopt) const

Referenced by ElementSubdomainModifierBase::extrapolatePolynomial().

◆ projectInitialConditionOnCustomRange()

void FEProblemBase::projectInitialConditionOnCustomRange ( libMesh::ConstElemRange &  elem_range,
ConstBndNodeRange &  bnd_node_range,
const std::optional< std::set< VariableName > > &  target_vars = std::nullopt 
)
inherited

Project initial conditions for custom elem_range and bnd_node_range This is needed when elements/boundary nodes are added to a specific subdomain at an intermediate step.

Parameters
elem_rangeElement range to project on
bnd_node_rangeBoundary node range to project on
target_varsSet of variable names to project ICs

Definition at line 4175 of file FEProblemBase.C.

4179{
4180 if (target_vars)
4181 {
4182 ComputeInitialConditionThread cic(*this, &(*target_vars));
4183 Threads::parallel_reduce(elem_range, cic, numThreads());
4184 }
4185 else
4186 {
4188 Threads::parallel_reduce(elem_range, cic, numThreads());
4189 }
4190
4191 // Need to close the solution vector here so that boundary ICs take precendence
4192 for (auto & nl : _nl)
4193 nl->solution().close();
4194 _aux->solution().close();
4195
4196 if (target_vars)
4197 {
4198 ComputeBoundaryInitialConditionThread cbic(*this, &(*target_vars));
4199 Threads::parallel_reduce(bnd_nodes, cbic, numThreads());
4200 }
4201 else
4202 {
4204 Threads::parallel_reduce(bnd_nodes, cbic, numThreads());
4205 }
4206
4207 for (auto & nl : _nl)
4208 nl->solution().close();
4209 _aux->solution().close();
4210
4211 // Also, load values into the SCALAR dofs
4212 // Note: We assume that all SCALAR dofs are on the
4213 // processor with highest ID
4215 {
4216 const auto & ics = _scalar_ics.getActiveObjects();
4217 for (const auto & ic : ics)
4218 {
4219 MooseVariableScalar & var = ic->variable();
4220
4221 if (target_vars && !target_vars->count(var.name()))
4222 continue;
4223
4224 var.reinit();
4225
4226 DenseVector<Number> vals(var.order());
4227 ic->compute(vals);
4228
4229 const unsigned int n_scalar_dofs = var.dofIndices().size();
4230 for (unsigned int i = 0; i < n_scalar_dofs; i++)
4231 {
4232 const auto global_index = var.dofIndices()[i];
4233 var.sys().solution().set(global_index, vals(i));
4234 var.setValue(i, vals(i));
4235 }
4236 }
4237 }
4238
4239 // Spline node ICs may need to be evaluated indirectly.
4240 bool solve_for_spline_dofs = shouldSolveForSplineDofs(_mesh.getMesh());
4241
4242 for (auto & nl : _nl)
4243 {
4244 nl->solution().close();
4245 if (solve_for_spline_dofs)
4246 solveForSplineDofs(*nl);
4247 nl->solution().localize(*nl->system().current_local_solution, nl->dofMap().get_send_list());
4248 }
4249
4250 _aux->solution().close();
4251 if (solve_for_spline_dofs)
4252 solveForSplineDofs(*_aux);
4253 _aux->solution().localize(*_aux->sys().current_local_solution, _aux->dofMap().get_send_list());
4254}
ScalarInitialConditionWarehouse _scalar_ics
virtual const std::vector< dof_id_type > & dofIndices() const
Get local DoF indices.
SystemBase & sys()
Get the system this variable is part of.
Class for scalar variables (they are different).
void setValue(unsigned int i, Number value)
Set the nodal value for this variable (to keep everything up to date.
void reinit(bool reinit_for_derivative_reordering=false)
Fill out the VariableValue arrays from the system solution vector.
NumericVector< Number > & solution()
Definition SystemBase.h:215
virtual void set(const numeric_index_type i, const T value)=0

Referenced by ElementSubdomainModifierBase::applyIC(), and ActivateElementsUserObjectBase::initSolutions().

◆ projectSolution()

void FEProblemBase::projectSolution ( )
inherited

Definition at line 4102 of file FEProblemBase.C.

4103{
4104 TIME_SECTION("projectSolution", 2, "Projecting Initial Solutions")
4105
4107
4109 Threads::parallel_reduce(getCurrentAlgebraicElementRange(), cic, numThreads());
4110
4111 if (haveFV())
4112 {
4113 using ElemInfoRange = StoredRange<MooseMesh::const_elem_info_iterator, const ElemInfo *>;
4114 ElemInfoRange elem_info_range(_mesh.ownedElemInfoBegin(), _mesh.ownedElemInfoEnd());
4115
4117 Threads::parallel_reduce(elem_info_range, cfvic, numThreads());
4118 }
4119
4120 // Need to close the solution vector here so that boundary ICs take precendence
4121 for (auto & nl : _nl)
4122 nl->solution().close();
4123 _aux->solution().close();
4124
4125 // now run boundary-restricted initial conditions
4128
4129 for (auto & nl : _nl)
4130 nl->solution().close();
4131 _aux->solution().close();
4132
4133 // Also, load values into the SCALAR dofs
4134 // Note: We assume that all SCALAR dofs are on the
4135 // processor with highest ID
4137 {
4138 const auto & ics = _scalar_ics.getActiveObjects();
4139 for (const auto & ic : ics)
4140 {
4141 MooseVariableScalar & var = ic->variable();
4142 var.reinit();
4143
4144 DenseVector<Number> vals(var.order());
4145 ic->compute(vals);
4146
4147 const unsigned int n_scalar_dofs = var.dofIndices().size();
4148 for (unsigned int i = 0; i < n_scalar_dofs; i++)
4149 {
4150 const auto global_index = var.dofIndices()[i];
4151 var.sys().solution().set(global_index, vals(i));
4152 var.setValue(i, vals(i));
4153 }
4154 }
4155 }
4156
4157 // Spline node ICs may need to be evaluated indirectly.
4158 bool solve_for_spline_dofs = shouldSolveForSplineDofs(_mesh.getMesh());
4159
4160 for (auto & sys : _solver_systems)
4161 {
4162 sys->solution().close();
4163 if (solve_for_spline_dofs)
4164 solveForSplineDofs(*sys);
4165 sys->solution().localize(*sys->system().current_local_solution, sys->dofMap().get_send_list());
4166 }
4167
4168 _aux->solution().close();
4169 if (solve_for_spline_dofs)
4170 solveForSplineDofs(*_aux);
4171 _aux->solution().localize(*_aux->sys().current_local_solution, _aux->dofMap().get_send_list());
4172}
const ConstBndNodeRange & getCurrentAlgebraicBndNodeRange()
Scope guard for starting and stopping Floating Point Exception Trapping.
elem_info_iterator ownedElemInfoEnd()
Definition MooseMesh.C:1518
elem_info_iterator ownedElemInfoBegin()
Iterators to owned faceInfo objects.
Definition MooseMesh.C:1510

Referenced by FEProblemBase::initialAdaptMesh().

◆ queryParam()

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

Query a parameter for the object.

If a parameter of the given name and type does not exist or if the parameter is not valid, nullptr will be returned

Parameters
nameThe name of the parameter
Returns
A pointer to the parameter value, if it exists

Definition at line 413 of file MooseBase.h.

414{
415 return _pars.queryParam<T>(name);
416}
const T * queryParam(const std::string &name) const
Query a parameter.

Referenced by MFEMExecutedObject::getRequestedItems(), and MFEMGeometricMultigridSolver::MFEMGeometricMultigridSolver().

◆ rebalanceMesh()

void MFEMProblem::rebalanceMesh ( mfem::ParMesh &  pmesh)
inherited

Rebalance the (necessarily nonconforming) mesh.

Definition at line 785 of file MFEMProblem.C.

786{
787 if (pmesh.Nonconforming())
788 {
789 pmesh.Rebalance();
792 }
793}
void updateFESpaces()
Calls Update() on all FE spaces.
void updateGridFunctions()
Calls Update() on all gridfunctions.

Referenced by MFEMRefinementMarker::hRefine().

◆ registerInvalidSolutionInternal()

InvalidSolutionID SolutionInvalidInterface::registerInvalidSolutionInternal ( const std::string &  message,
const bool  warning 
) const
protectedinherited

Definition at line 55 of file SolutionInvalidInterface.C.

57{
59 _si_moose_base.type(), message, warning);
60}
InvalidSolutionID registerInvalidity(const std::string &object_type, const std::string &message, const bool warning)
Call to register an invalid calculation.

◆ registerRandomInterface()

void FEProblemBase::registerRandomInterface ( RandomInterface &  random_interface,
const std::string &  name 
)
inherited

Definition at line 10047 of file FEProblemBase.C.

10048{
10049 auto insert_pair = moose_try_emplace(
10050 _random_data_objects, name, std::make_unique<RandomData>(*this, random_interface));
10051
10052 auto random_data_ptr = insert_pair.first->second.get();
10053 random_interface.setRandomDataPointer(random_data_ptr);
10054}
std::pair< typename M::iterator, bool > moose_try_emplace(M &m, const typename M::key_type &k, Args &&... args)
Function to mirror the behavior of the C++17 std::map::try_emplace() method (no hint).
Definition Moose.h:103
void setRandomDataPointer(RandomData *random_data)

Referenced by RandomInterface::setRandomResetFrequency().

◆ registerRestartableDataOnApp()

RestartableDataValue & Restartable::registerRestartableDataOnApp ( std::unique_ptr< RestartableDataValue >  data,
THREAD_ID  tid 
) const
privateinherited

Helper function for actually registering the restartable data.

Definition at line 63 of file Restartable.C.

65{
67 std::move(data), tid, _restartable_read_only, _metaname);
68}
RestartableDataValue & registerRestartableData(std::unique_ptr< RestartableDataValue > data, THREAD_ID tid, bool read_only, const RestartableDataMapName &metaname="")
Definition MooseApp.C:2458
const RestartableDataMapName _metaname
Restartable metadata name.
const bool _restartable_read_only
Flag for toggling read only status (see ReporterData)
MooseApp & _restartable_app
Reference to the application.

Referenced by Restartable::declareRestartableDataHelper().

◆ registerRestartableNameWithFilterOnApp()

void Restartable::registerRestartableNameWithFilterOnApp ( const std::string &  name,
Moose::RESTARTABLE_FILTER  filter 
)
privateinherited

Helper function for actually registering the restartable data.

Definition at line 71 of file Restartable.C.

73{
75}
void registerRestartableNameWithFilter(const std::string &name, Moose::RESTARTABLE_FILTER filter)
NOTE: This is an internal function meant for MOOSE use only!
Definition MooseApp.C:1710

Referenced by Restartable::declareRecoverableData().

◆ registerTimedSection() [1/2]

PerfID PerfGraphInterface::registerTimedSection ( const std::string &  section_name,
const unsigned int  level 
) const
protectedinherited

Call to register a named section for timing.

Parameters
section_nameThe name of the code section to be timed
levelThe importance of the timer - lower is more important (0 will always come out)
Returns
The ID of the section - use when starting timing

Definition at line 61 of file PerfGraphInterface.C.

63{
64 const auto timed_section_name = timedSectionName(section_name);
65 if (!moose::internal::getPerfGraphRegistry().sectionExists(timed_section_name))
66 return moose::internal::getPerfGraphRegistry().registerSection(timed_section_name, level);
67 else
68 return moose::internal::getPerfGraphRegistry().sectionID(timed_section_name);
69}
std::string timedSectionName(const std::string &section_name) const
PerfID sectionID(const std::string &section_name) const
Given a name return the PerfID @section_name The name of the section.
PerfID registerSection(const std::string &section_name, const unsigned int level)
Call to register a named section for timing.
PerfGraphRegistry & getPerfGraphRegistry()
Get the global PerfGraphRegistry singleton.

◆ registerTimedSection() [2/2]

PerfID PerfGraphInterface::registerTimedSection ( const std::string &  section_name,
const unsigned int  level,
const std::string &  live_message,
const bool  print_dots = true 
) const
protectedinherited

Call to register a named section for timing.

Parameters
section_nameThe name of the code section to be timed
levelThe importance of the timer - lower is more important (0 will always come out)
live_messageThe message to be printed to the screen during execution
print_dotsWhether or not progress dots should be printed for this section
Returns
The ID of the section - use when starting timing

Definition at line 72 of file PerfGraphInterface.C.

76{
77 const auto timed_section_name = timedSectionName(section_name);
78 if (!moose::internal::getPerfGraphRegistry().sectionExists(timed_section_name))
80 timedSectionName(section_name), level, live_message, print_dots);
81 else
82 return moose::internal::getPerfGraphRegistry().sectionID(timed_section_name);
83}

◆ registerUnfilledFunctorRequest()

template<typename T >
void SubProblem::registerUnfilledFunctorRequest ( T *  functor_interface,
const std::string &  functor_name,
const THREAD_ID  tid 
)
inherited

Register an unfulfilled functor request.

◆ reinitBecauseOfGhostingOrNewGeomObjects()

void FEProblemBase::reinitBecauseOfGhostingOrNewGeomObjects ( bool  mortar_changed = false)
protectedinherited

Call when it is possible that the needs for ghosted elements has changed.

Parameters
mortar_changedWhether an update of mortar data has been requested since the last EquationSystems (re)initialization

Definition at line 6094 of file FEProblemBase.C.

6095{
6096 TIME_SECTION("reinitBecauseOfGhostingOrNewGeomObjects",
6097 3,
6098 "Reinitializing Because of Geometric Search Objects");
6099
6100 // Need to see if _any_ processor has ghosted elems or geometry objects.
6101 bool needs_reinit = !_ghosted_elems.empty();
6102 needs_reinit = needs_reinit || !_geometric_search_data._nearest_node_locators.empty() ||
6103 (_mortar_data->hasObjects() && mortar_changed);
6104 needs_reinit =
6105 needs_reinit || (_displaced_problem &&
6106 (!_displaced_problem->geomSearchData()._nearest_node_locators.empty() ||
6107 (_mortar_data->hasDisplacedObjects() && mortar_changed)));
6108 _communicator.max(needs_reinit);
6109
6110 if (needs_reinit)
6111 {
6112 // Call reinit to get the ghosted vectors correct now that some geometric search has been done
6113 es().reinit();
6114
6115 if (_displaced_mesh)
6116 _displaced_problem->es().reinit();
6117 }
6118}
std::map< std::pair< BoundaryID, BoundaryID >, NearestNodeLocator * > _nearest_node_locators

Referenced by FEProblemBase::meshChanged(), FEProblemBase::possiblyRebuildGeomSearchPatches(), and FEProblemBase::updateMortarMesh().

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

2545{
2546 std::vector<Point> & points = _dirac_kernel_info.getPoints()[elem].first;
2547
2548 unsigned int n_points = points.size();
2549
2550 if (n_points)
2551 {
2552 if (n_points > _max_qps)
2553 {
2554 _max_qps = n_points;
2555
2560 unsigned int max_qpts = getMaxQps();
2561 for (unsigned int tid = 0; tid < numThreads(); ++tid)
2562 {
2563 // the highest available order in libMesh is 43
2564 _scalar_zero[tid].resize(libMesh::FORTYTHIRD, 0);
2565 _zero[tid].resize(max_qpts, 0);
2566 _grad_zero[tid].resize(max_qpts, RealGradient(0.));
2567 _second_zero[tid].resize(max_qpts, RealTensor(0.));
2568 _vector_zero[tid].resize(max_qpts, RealGradient(0.));
2569 _vector_curl_zero[tid].resize(max_qpts, RealGradient(0.));
2570 }
2571 }
2572
2573 for (const auto i : index_range(_nl))
2574 {
2575 _assembly[tid][i]->reinitAtPhysical(elem, points);
2576 _nl[i]->prepare(tid);
2577 }
2578 _aux->prepare(tid);
2579
2580 reinitElem(elem, tid);
2581 }
2582
2583 _assembly[tid][_current_nl_sys->number()]->prepare();
2585 _assembly[tid][_current_nl_sys->number()]->prepareNonlocal();
2586
2587 bool have_points = n_points > 0;
2589 {
2590 have_points |= _displaced_problem->reinitDirac(_displaced_mesh->elemPtr(elem->id()), tid);
2592 _displaced_problem->prepareNonlocal(tid);
2593 }
2594
2595 return have_points;
2596}
MultiPointMap & getPoints()
Returns a writeable reference to the _points container.
unsigned int getMaxQps() const
std::vector< VariableGradient > _grad_zero
std::vector< VariableSecond > _second_zero
virtual void reinitElem(const Elem *elem, const THREAD_ID tid) override
std::vector< VectorVariableValue > _vector_zero
std::vector< VariableValue > _scalar_zero
std::vector< VectorVariableCurl > _vector_curl_zero
std::vector< VariableValue > _zero
RealTensorValue RealTensor
RealVectorValue RealGradient

Referenced by ComputeDiracThread::onElement().

◆ reinitElem()

void FEProblemBase::reinitElem ( const Elem *  elem,
const THREAD_ID  tid 
)
overridevirtualinherited

◆ reinitElemFace() [1/2]

void FEProblemBase::reinitElemFace ( const Elem *  elem,
unsigned int  side,
BoundaryID  ,
const THREAD_ID  tid 
)
inherited

Definition at line 2631 of file FEProblemBase.C.

2635{
2637 "reinitElemFace with a BoundaryID argument is deprecated because the boundary id was never "
2638 "used. Please call reinitElemFace without the BoundaryID argument instead");
2639
2640 reinitElemFace(elem, side, tid);
2641}
void reinitElemFace(const Elem *elem, unsigned int side, BoundaryID, const THREAD_ID tid)

Referenced by ComputeMaterialsObjectThread::onBoundary(), ComputeUserObjectsThread::onBoundary(), ComputeMaterialsObjectThread::onInterface(), NonlinearThread::prepareFace(), and FEProblemBase::reinitElemFace().

◆ reinitElemFace() [2/2]

void FEProblemBase::reinitElemFace ( const Elem *  elem,
unsigned int  side,
const THREAD_ID  tid 
)
overridevirtualinherited

Implements SubProblem.

Definition at line 2644 of file FEProblemBase.C.

2645{
2646 for (const auto i : index_range(_solver_systems))
2647 {
2648 _assembly[tid][i]->reinit(elem, side);
2649 _solver_systems[i]->reinitElemFace(elem, side, tid);
2650 }
2651 _aux->reinitElemFace(elem, side, tid);
2652
2654 _displaced_problem->reinitElemFace(_displaced_mesh->elemPtr(elem->id()), side, tid);
2655}

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

10443{
10444 SubProblem::reinitElemFaceRef(elem, side, tolerance, pts, weights, tid);
10445
10447 _displaced_problem->reinitElemFaceRef(
10448 _displaced_mesh->elemPtr(elem->id()), side, tolerance, pts, weights, tid);
10449}
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:874

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

◆ reinitElemNeighborAndLowerD()

void FEProblemBase::reinitElemNeighborAndLowerD ( const Elem *  elem,
unsigned int  side,
const THREAD_ID  tid 
)
overridevirtualinherited

Implements SubProblem.

Definition at line 2763 of file FEProblemBase.C.

2766{
2767 reinitNeighbor(elem, side, tid);
2768
2769 const Elem * lower_d_elem = _mesh.getLowerDElem(elem, side);
2770 if (lower_d_elem && _mesh.interiorLowerDBlocks().count(lower_d_elem->subdomain_id()) > 0)
2771 reinitLowerDElem(lower_d_elem, tid);
2772 else
2773 {
2774 // with mesh refinement, lower-dimensional element might be defined on neighbor side
2775 auto & neighbor = _assembly[tid][0]->neighbor();
2776 auto & neighbor_side = _assembly[tid][0]->neighborSide();
2777 const Elem * lower_d_elem_neighbor = _mesh.getLowerDElem(neighbor, neighbor_side);
2778 if (lower_d_elem_neighbor &&
2779 _mesh.interiorLowerDBlocks().count(lower_d_elem_neighbor->subdomain_id()) > 0)
2780 {
2781 auto qps = _assembly[tid][0]->qPointsFaceNeighbor().stdVector();
2782 std::vector<Point> reference_points;
2783 FEMap::inverse_map(
2784 lower_d_elem_neighbor->dim(), lower_d_elem_neighbor, qps, reference_points);
2785 reinitLowerDElem(lower_d_elem_neighbor, tid, &reference_points);
2786 }
2787 }
2788
2790 _displaced_problem->reinitElemNeighborAndLowerD(
2791 _displaced_mesh->elemPtr(elem->id()), side, tid);
2792}
virtual void reinitLowerDElem(const Elem *lower_d_elem, const THREAD_ID tid, const std::vector< Point > *const pts=nullptr, const std::vector< Real > *const weights=nullptr) override
virtual void reinitNeighbor(const Elem *elem, unsigned int side, const THREAD_ID tid) override
const Elem * getLowerDElem(const Elem *, unsigned short int) const
Returns a const pointer to a lower dimensional element that corresponds to a side of a higher dimensi...
Definition MooseMesh.C:1682

Referenced by ComputeMaterialsObjectThread::onInternalSide(), and NonlinearThread::onInternalSide().

◆ reinitElemPhys()

void FEProblemBase::reinitElemPhys ( const Elem *  elem,
const std::vector< Point > &  phys_points_in_elem,
const THREAD_ID  tid 
)
overridevirtualinherited

Implements SubProblem.

Definition at line 2610 of file FEProblemBase.C.

2613{
2614 mooseAssert(_mesh.queryElemPtr(elem->id()) == elem,
2615 "Are you calling this method with a displaced mesh element?");
2616
2617 for (const auto i : index_range(_solver_systems))
2618 {
2619 _assembly[tid][i]->reinitAtPhysical(elem, phys_points_in_elem);
2620 _solver_systems[i]->prepare(tid);
2621 _assembly[tid][i]->prepare();
2623 _assembly[tid][i]->prepareNonlocal();
2624 }
2625 _aux->prepare(tid);
2626
2627 reinitElem(elem, tid);
2628}
virtual Elem * queryElemPtr(const dof_id_type i)
Definition MooseMesh.C:3223

Referenced by MultiAppVariableValueSamplePostprocessorTransfer::execute().

◆ reinitFVFace()

void SubProblem::reinitFVFace ( const THREAD_ID  tid,
const FaceInfo &  fi 
)
inherited

reinitialize the finite volume assembly data for the provided face and thread

Definition at line 1289 of file SubProblem.C.

1290{
1291 for (const auto nl : make_range(numNonlinearSystems()))
1292 assembly(tid, nl).reinitFVFace(fi);
1293}
void reinitFVFace(const THREAD_ID tid, const FaceInfo &fi)
reinitialize the finite volume assembly data for the provided face and thread

◆ reinitGeomSearch()

void SubProblem::reinitGeomSearch ( )
inherited

reinitialize this object's geometric search data, e.g.

do things like clear and re-add quadrature nodes

Definition at line 1373 of file SubProblem.C.

1374{
1376}
virtual GeometricSearchData & geomSearchData()=0

◆ reinitKokkosMaterials()

void FEProblemBase::reinitKokkosMaterials ( )
inherited

◆ reinitLowerDElem()

void FEProblemBase::reinitLowerDElem ( const Elem *  lower_d_elem,
const THREAD_ID  tid,
const std::vector< Point > *const  pts = nullptr,
const std::vector< Real > *const  weights = nullptr 
)
overridevirtualinherited

Reimplemented from SubProblem.

Definition at line 2658 of file FEProblemBase.C.

2662{
2663 SubProblem::reinitLowerDElem(lower_d_elem, tid, pts, weights);
2664
2666 _displaced_problem->reinitLowerDElem(
2667 _displaced_mesh->elemPtr(lower_d_elem->id()), tid, pts, weights);
2668}
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:949

Referenced by ComputeUserObjectsThread::onBoundary(), NonlinearThread::prepareFace(), and FEProblemBase::reinitElemNeighborAndLowerD().

◆ reinitMaterials()

void FEProblemBase::reinitMaterials ( SubdomainID  blk_id,
const THREAD_ID  tid,
bool  swap_stateful = true 
)
inherited

Definition at line 4583 of file FEProblemBase.C.

4584{
4586 {
4587 auto && elem = _assembly[tid][0]->elem();
4588 unsigned int n_points = _assembly[tid][0]->qRule()->n_points();
4589
4590 auto & material_data = _material_props.getMaterialData(tid);
4591 material_data.resize(n_points);
4592
4593 // Only swap if requested
4594 if (swap_stateful)
4595 material_data.swap(*elem);
4596
4598 material_data.reset(_discrete_materials.getActiveBlockObjects(blk_id, tid));
4599
4600 if (_materials.hasActiveBlockObjects(blk_id, tid))
4601 material_data.reinit(_materials.getActiveBlockObjects(blk_id, tid));
4602 }
4603}
bool hasActiveMaterialProperties(const THREAD_ID tid) const
Method to check whether or not a list of active material roperties has been set.
void resize(unsigned int n_qpoints)
Resize the data to hold properties for n_qpoints quadrature points.

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

◆ reinitMaterialsBoundary()

void FEProblemBase::reinitMaterialsBoundary ( BoundaryID  boundary_id,
const THREAD_ID  tid,
bool  swap_stateful = true,
const std::deque< MaterialBase * > *  reinit_mats = nullptr 
)
inherited

reinit materials on a boundary

Parameters
boundary_idThe boundary on which to reinit corresponding materials
tidThe thread id
swap_statefulWhether to swap stateful material properties between MaterialData and MaterialPropertyStorage
execute_statefulWhether to execute material objects that have stateful properties. This should be false when for example executing material objects for mortar contexts in which stateful properties don't make sense
reinit_matsspecific list of materials to reinit. Used notably in the context of mortar with stateful elements

Definition at line 4728 of file FEProblemBase.C.

4732{
4733 if (hasActiveMaterialProperties(tid) && needBoundaryMaterialOnSide(boundary_id, tid))
4734 {
4735 auto && elem = _assembly[tid][0]->elem();
4736 unsigned int side = _assembly[tid][0]->side();
4737 unsigned int n_points = _assembly[tid][0]->qRuleFace()->n_points();
4738
4739 auto & bnd_material_data = _bnd_material_props.getMaterialData(tid);
4740 bnd_material_data.resize(n_points);
4741
4742 if (swap_stateful && !bnd_material_data.isSwapped())
4743 bnd_material_data.swap(*elem, side);
4744
4745 if (_discrete_materials.hasActiveBoundaryObjects(boundary_id, tid))
4746 bnd_material_data.reset(_discrete_materials.getActiveBoundaryObjects(boundary_id, tid));
4747
4748 if (reinit_mats)
4749 bnd_material_data.reinit(*reinit_mats);
4750 else if (_materials.hasActiveBoundaryObjects(boundary_id, tid))
4751 bnd_material_data.reinit(_materials.getActiveBoundaryObjects(boundary_id, tid));
4752 }
4753}
const std::map< BoundaryID, std::vector< std::shared_ptr< T > > > & getActiveBoundaryObjects(THREAD_ID tid=0) const

Referenced by Moose::Mortar::loopOverMortarSegments(), ComputeUserObjectsThread::onBoundary(), ComputeUserObjectsThread::onInterface(), NonlinearThread::onInterface(), NonlinearThread::onInterfaceWithHRefinementMismatch(), and NonlinearThread::prepareFace().

◆ reinitMaterialsFace()

void FEProblemBase::reinitMaterialsFace ( SubdomainID  blk_id,
const THREAD_ID  tid,
bool  swap_stateful = true,
const std::deque< MaterialBase * > *  reinit_mats = nullptr 
)
inherited

reinit materials on element faces

Parameters
blk_idThe subdomain on which the element owning the face lives
tidThe thread id
swap_statefulWhether to swap stateful material properties between MaterialData and MaterialPropertyStorage
reinit_matsspecific list of materials to reinit. Used notably in the context of mortar with stateful elements

Definition at line 4606 of file FEProblemBase.C.

4610{
4611 // we reinit more often than needed here because we dont have a way to check whether
4612 // we need to compute the face materials on a particular (possibly external) face
4614 {
4615 auto && elem = _assembly[tid][0]->elem();
4616 unsigned int side = _assembly[tid][0]->side();
4617 unsigned int n_points = _assembly[tid][0]->qRuleFace()->n_points();
4618
4619 auto & bnd_material_data = _bnd_material_props.getMaterialData(tid);
4620 bnd_material_data.resize(n_points);
4621
4622 if (swap_stateful && !bnd_material_data.isSwapped())
4623 bnd_material_data.swap(*elem, side);
4624
4625 if (_discrete_materials[Moose::FACE_MATERIAL_DATA].hasActiveBlockObjects(blk_id, tid))
4626 bnd_material_data.reset(
4627 _discrete_materials[Moose::FACE_MATERIAL_DATA].getActiveBlockObjects(blk_id, tid));
4628
4629 if (reinit_mats)
4630 bnd_material_data.reinit(*reinit_mats);
4631 else if (_materials[Moose::FACE_MATERIAL_DATA].hasActiveBlockObjects(blk_id, tid))
4632 bnd_material_data.reinit(
4633 _materials[Moose::FACE_MATERIAL_DATA].getActiveBlockObjects(blk_id, tid));
4634 }
4635}

Referenced by Moose::Mortar::loopOverMortarSegments(), ComputeIndicatorThread::onInternalSide(), ComputeUserObjectsThread::onInternalSide(), NonlinearThread::onInternalSide(), and NonlinearThread::prepareFace().

◆ reinitMaterialsFaceOnBoundary()

void FEProblemBase::reinitMaterialsFaceOnBoundary ( const BoundaryID  boundary_id,
const SubdomainID  blk_id,
const THREAD_ID  tid,
const bool  swap_stateful = true,
const std::deque< MaterialBase * > *const  reinit_mats = nullptr 
)
inherited

reinit materials on element faces on a boundary (internal or external) This specific routine helps us not reinit when don't need to

Parameters
boundary_idThe boundary on which the face belongs
blk_idThe block id to which the element (who owns the face) belong
tidThe thread id
swap_statefulWhether to swap stateful material properties between MaterialData and MaterialPropertyStorage
reinit_matsspecific list of materials to reinit. Used notably in the context of mortar with stateful elements

Definition at line 4638 of file FEProblemBase.C.

4643{
4644 if (hasActiveMaterialProperties(tid) && (needBoundaryMaterialOnSide(boundary_id, tid) ||
4645 needInterfaceMaterialOnSide(boundary_id, tid) ||
4647 {
4648 const auto * const elem = _assembly[tid][0]->elem();
4649 unsigned int side = _assembly[tid][0]->side();
4650 unsigned int n_points = _assembly[tid][0]->qRuleFace()->n_points();
4651
4652 auto & bnd_material_data = _bnd_material_props.getMaterialData(tid);
4653 bnd_material_data.resize(n_points);
4654
4655 if (swap_stateful && !bnd_material_data.isSwapped())
4656 bnd_material_data.swap(*elem, side);
4657
4658 if (_discrete_materials[Moose::FACE_MATERIAL_DATA].hasActiveBlockObjects(blk_id, tid))
4659 bnd_material_data.reset(
4660 _discrete_materials[Moose::FACE_MATERIAL_DATA].getActiveBlockObjects(blk_id, tid));
4661
4662 if (reinit_mats)
4663 bnd_material_data.reinit(*reinit_mats);
4664 else if (_materials[Moose::FACE_MATERIAL_DATA].hasActiveBlockObjects(blk_id, tid))
4665 bnd_material_data.reinit(
4666 _materials[Moose::FACE_MATERIAL_DATA].getActiveBlockObjects(blk_id, tid));
4667 }
4668}

Referenced by ComputeUserObjectsThread::onBoundary(), ComputeUserObjectsThread::onInterface(), NonlinearThread::onInterface(), NonlinearThread::onInterfaceWithHRefinementMismatch(), and NonlinearThread::prepareFace().

◆ reinitMaterialsInterface()

void FEProblemBase::reinitMaterialsInterface ( BoundaryID  boundary_id,
const THREAD_ID  tid,
bool  swap_stateful = true 
)
inherited

Definition at line 4756 of file FEProblemBase.C.

4759{
4760 if (hasActiveMaterialProperties(tid) && needInterfaceMaterialOnSide(boundary_id, tid))
4761 {
4762 const Elem * const & elem = _assembly[tid][0]->elem();
4763 unsigned int side = _assembly[tid][0]->side();
4764 unsigned int n_points = _assembly[tid][0]->qRuleFace()->n_points();
4765
4766 auto & bnd_material_data = _bnd_material_props.getMaterialData(tid);
4767 bnd_material_data.resize(n_points);
4768
4769 if (swap_stateful && !bnd_material_data.isSwapped())
4770 bnd_material_data.swap(*elem, side);
4771
4772 if (_interface_materials.hasActiveBoundaryObjects(boundary_id, tid))
4773 bnd_material_data.reinit(_interface_materials.getActiveBoundaryObjects(boundary_id, tid));
4774 }
4775}

Referenced by ComputeUserObjectsThread::onInterface(), NonlinearThread::onInterface(), and NonlinearThread::onInterfaceWithHRefinementMismatch().

◆ reinitMaterialsNeighbor()

void FEProblemBase::reinitMaterialsNeighbor ( SubdomainID  blk_id,
const THREAD_ID  tid,
bool  swap_stateful = true,
const std::deque< MaterialBase * > *  reinit_mats = nullptr 
)
inherited

reinit materials on the neighboring element face

Parameters
blk_idThe subdomain on which the neighbor element lives
tidThe thread id
swap_statefulWhether to swap stateful material properties between MaterialData and MaterialPropertyStorage
reinit_matsspecific list of materials to reinit. Used notably in the context of mortar with stateful elements

Definition at line 4688 of file FEProblemBase.C.

4692{
4694 {
4695 // NOTE: this will not work with h-adaptivity
4696 // lindsayad: why not?
4697
4698 const Elem * neighbor = _assembly[tid][0]->neighbor();
4699 unsigned int neighbor_side = neighbor->which_neighbor_am_i(_assembly[tid][0]->elem());
4700
4701 mooseAssert(neighbor, "neighbor should be non-null");
4702 mooseAssert(blk_id == neighbor->subdomain_id(),
4703 "The provided blk_id " << blk_id << " and neighbor subdomain ID "
4704 << neighbor->subdomain_id() << " do not match.");
4705
4706 unsigned int n_points = _assembly[tid][0]->qRuleNeighbor()->n_points();
4707
4708 auto & neighbor_material_data = _neighbor_material_props.getMaterialData(tid);
4709 neighbor_material_data.resize(n_points);
4710
4711 // Only swap if requested
4712 if (swap_stateful)
4713 neighbor_material_data.swap(*neighbor, neighbor_side);
4714
4715 if (_discrete_materials[Moose::NEIGHBOR_MATERIAL_DATA].hasActiveBlockObjects(blk_id, tid))
4716 neighbor_material_data.reset(
4717 _discrete_materials[Moose::NEIGHBOR_MATERIAL_DATA].getActiveBlockObjects(blk_id, tid));
4718
4719 if (reinit_mats)
4720 neighbor_material_data.reinit(*reinit_mats);
4721 else if (_materials[Moose::NEIGHBOR_MATERIAL_DATA].hasActiveBlockObjects(blk_id, tid))
4722 neighbor_material_data.reinit(
4723 _materials[Moose::NEIGHBOR_MATERIAL_DATA].getActiveBlockObjects(blk_id, tid));
4724 }
4725}

Referenced by Moose::Mortar::loopOverMortarSegments(), ComputeUserObjectsThread::onInterface(), ComputeIndicatorThread::onInternalSide(), ComputeUserObjectsThread::onInternalSide(), NonlinearThread::onInternalSide(), FEProblemBase::reinitMaterialsNeighborOnBoundary(), and NonlinearSystemBase::reinitNodeFace().

◆ reinitMaterialsNeighborOnBoundary()

void FEProblemBase::reinitMaterialsNeighborOnBoundary ( const BoundaryID  boundary_id,
const SubdomainID  blk_id,
const THREAD_ID  tid,
const bool  swap_stateful = true,
const std::deque< MaterialBase * > *const  reinit_mats = nullptr 
)
inherited

reinit materials on neighbor element (usually faces) on a boundary (internal or external) This specific routine helps us not reinit when don't need to

Parameters
boundary_idThe boundary on which the face belongs
blk_idThe block id to which the element (who owns the face) belong
tidThe thread id
swap_statefulWhether to swap stateful material properties between MaterialData and MaterialPropertyStorage
reinit_matsspecific list of materials to reinit. Used notably in the context of mortar with stateful elements

Definition at line 4671 of file FEProblemBase.C.

4677{
4678 // Since objects don't declare whether they need the face or neighbor (side) material properties,
4679 // we use the same criteria for skipping material property computations as for face material
4680 // properties This could be a future optimization.
4681 if (hasActiveMaterialProperties(tid) && (needBoundaryMaterialOnSide(boundary_id, tid) ||
4682 needInterfaceMaterialOnSide(boundary_id, tid) ||
4684 reinitMaterialsNeighbor(blk_id, tid, swap_stateful, reinit_mats);
4685}
void reinitMaterialsNeighbor(SubdomainID blk_id, const THREAD_ID tid, bool swap_stateful=true, const std::deque< MaterialBase * > *reinit_mats=nullptr)
reinit materials on the neighboring element face

Referenced by NonlinearThread::onInterface(), and NonlinearThread::onInterfaceWithHRefinementMismatch().

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

1003{
1004 for (const auto nl_sys_num : make_range(numNonlinearSystems()))
1005 assembly(tid, nl_sys_num).reinitMortarElem(elem);
1006}
void reinitMortarElem(const Elem *elem, const THREAD_ID tid=0)
Reinit a mortar element to obtain a valid JxW.

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

◆ reinitMortarUserObjects()

void FEProblemBase::reinitMortarUserObjects ( BoundaryID  primary_boundary_id,
BoundaryID  secondary_boundary_id,
bool  displaced 
)
inherited

Call reinit on mortar user objects with matching primary boundary ID, secondary boundary ID, and displacement characteristics.

Definition at line 10706 of file FEProblemBase.C.

10709{
10710 const auto mortar_uos =
10711 getMortarUserObjects(primary_boundary_id, secondary_boundary_id, displaced);
10712 for (auto * const mortar_uo : mortar_uos)
10713 {
10714 mortar_uo->setNormals();
10715 mortar_uo->reinit();
10716 }
10717}

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

◆ reinitNeighbor()

void FEProblemBase::reinitNeighbor ( const Elem *  elem,
unsigned int  side,
const THREAD_ID  tid 
)
overridevirtualinherited

Implements SubProblem.

Definition at line 2724 of file FEProblemBase.C.

2725{
2726 setNeighborSubdomainID(elem, side, tid);
2727
2728 const Elem * neighbor = elem->neighbor_ptr(side);
2729 unsigned int neighbor_side = neighbor->which_neighbor_am_i(elem);
2730
2731 for (const auto i : index_range(_nl))
2732 {
2733 _assembly[tid][i]->reinitElemAndNeighbor(elem, side, neighbor, neighbor_side);
2734 _nl[i]->prepareNeighbor(tid);
2735 // Called during stateful material property evaluation outside of solve
2736 _assembly[tid][i]->prepareNeighbor();
2737 }
2738 _aux->prepareNeighbor(tid);
2739
2740 for (auto & nl : _nl)
2741 {
2742 nl->reinitElemFace(elem, side, tid);
2743 nl->reinitNeighborFace(neighbor, neighbor_side, tid);
2744 }
2745 _aux->reinitElemFace(elem, side, tid);
2746 _aux->reinitNeighborFace(neighbor, neighbor_side, tid);
2747
2749 {
2750 // There are cases like for cohesive zone modeling without significant sliding where we cannot
2751 // use FEInterface::inverse_map in Assembly::reinitElemAndNeighbor in the displaced problem
2752 // because the physical points coming from the element don't actually lie on the neighbor.
2753 // Moreover, what's the point of doing another physical point inversion in other cases? We only
2754 // care about the reference points which we can just take from the undisplaced computation
2755 const auto & displaced_ref_pts = _assembly[tid][0]->qRuleNeighbor()->get_points();
2756
2757 _displaced_problem->reinitNeighbor(
2758 _displaced_mesh->elemPtr(elem->id()), side, tid, &displaced_ref_pts);
2759 }
2760}
virtual void setNeighborSubdomainID(const Elem *elem, unsigned int side, const THREAD_ID tid) override

Referenced by ComputeMaterialsObjectThread::onInterface(), ComputeUserObjectsThread::onInterface(), NonlinearThread::onInterface(), ComputeIndicatorThread::onInternalSide(), ComputeUserObjectsThread::onInternalSide(), and FEProblemBase::reinitElemNeighborAndLowerD().

◆ reinitNeighborFaceRef()

void FEProblemBase::reinitNeighborFaceRef ( const Elem *  neighbor_elem,
unsigned int  neighbor_side,
Real  tolerance,
const std::vector< Point > *const  pts,
const std::vector< Real > *const  weights = nullptr,
const THREAD_ID  tid = 0 
)
overridevirtualinherited

reinitialize FE objects on a given neighbor element on a given side at a given set of reference points and then compute variable data.

Note that this method makes no assumptions about what's been called beforehand, e.g. you don't have to call some prepare method before this one. This is an all-in-one reinit

Reimplemented from SubProblem.

Definition at line 10452 of file FEProblemBase.C.

10458{
10459 SubProblem::reinitNeighborFaceRef(neighbor_elem, neighbor_side, tolerance, pts, weights, tid);
10460
10462 _displaced_problem->reinitNeighborFaceRef(
10463 _displaced_mesh->elemPtr(neighbor_elem->id()), neighbor_side, tolerance, pts, weights, tid);
10464}
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:913

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

◆ reinitNeighborLowerDElem()

void SubProblem::reinitNeighborLowerDElem ( const Elem *  elem,
const THREAD_ID  tid = 0 
)
inherited

reinitialize a neighboring lower dimensional element

Definition at line 995 of file SubProblem.C.

996{
997 for (const auto nl_sys_num : make_range(numNonlinearSystems()))
998 assembly(tid, nl_sys_num).reinitNeighborLowerDElem(elem);
999}
void reinitNeighborLowerDElem(const Elem *elem, const THREAD_ID tid=0)
reinitialize a neighboring lower dimensional element
Definition SubProblem.C:995

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

◆ reinitNeighborPhys() [1/2]

void FEProblemBase::reinitNeighborPhys ( const Elem *  neighbor,
const std::vector< Point > &  physical_points,
const THREAD_ID  tid 
)
overridevirtualinherited

Implements SubProblem.

Definition at line 2823 of file FEProblemBase.C.

2826{
2827 mooseAssert(_mesh.queryElemPtr(neighbor->id()) == neighbor,
2828 "Are you calling this method with a displaced mesh element?");
2829
2830 for (const auto i : index_range(_nl))
2831 {
2832 // Reinits shape the functions at the physical points
2833 _assembly[tid][i]->reinitNeighborAtPhysical(neighbor, physical_points);
2834
2835 // Sets the neighbor dof indices
2836 _nl[i]->prepareNeighbor(tid);
2837 }
2838 _aux->prepareNeighbor(tid);
2839
2840 // Resizes Re and Ke
2841 _assembly[tid][_current_nl_sys->number()]->prepareNeighbor();
2842
2843 // Compute the values of each variable at the points
2844 for (auto & nl : _nl)
2845 nl->reinitNeighbor(neighbor, tid);
2846 _aux->reinitNeighbor(neighbor, tid);
2847}

◆ reinitNeighborPhys() [2/2]

void FEProblemBase::reinitNeighborPhys ( const Elem *  neighbor,
unsigned int  neighbor_side,
const std::vector< Point > &  physical_points,
const THREAD_ID  tid 
)
overridevirtualinherited

Implements SubProblem.

Definition at line 2795 of file FEProblemBase.C.

2799{
2800 mooseAssert(_mesh.queryElemPtr(neighbor->id()) == neighbor,
2801 "Are you calling this method with a displaced mesh element?");
2802
2803 for (const auto i : index_range(_nl))
2804 {
2805 // Reinits shape the functions at the physical points
2806 _assembly[tid][i]->reinitNeighborAtPhysical(neighbor, neighbor_side, physical_points);
2807
2808 // Sets the neighbor dof indices
2809 _nl[i]->prepareNeighbor(tid);
2810 }
2811 _aux->prepareNeighbor(tid);
2812
2813 // Resizes Re and Ke
2814 _assembly[tid][_current_nl_sys->number()]->prepareNeighbor();
2815
2816 // Compute the values of each variable at the points
2817 for (auto & nl : _nl)
2818 nl->reinitNeighborFace(neighbor, neighbor_side, tid);
2819 _aux->reinitNeighborFace(neighbor, neighbor_side, tid);
2820}

Referenced by NonlinearThread::onInterfaceWithHRefinementMismatch(), and NonlinearSystemBase::reinitNodeFace().

◆ reinitNode()

void FEProblemBase::reinitNode ( const Node *  node,
const THREAD_ID  tid 
)
overridevirtualinherited

Implements SubProblem.

Definition at line 2671 of file FEProblemBase.C.

2672{
2674 _displaced_problem->reinitNode(&_displaced_mesh->nodeRef(node->id()), tid);
2675
2676 for (const auto i : index_range(_nl))
2677 {
2678 _assembly[tid][i]->reinit(node);
2679 _nl[i]->reinitNode(node, tid);
2680 }
2681 _aux->reinitNode(node, tid);
2682}
virtual const Node & nodeRef(const dof_id_type i) const
Definition MooseMesh.C:846

Referenced by NodalPatchRecovery::compute(), NonlinearSystemBase::computeResidualInternal(), ComputeNodalDampingThread::onNode(), ComputeNodalKernelJacobiansThread::onNode(), ComputeNodalKernelsThread::onNode(), and ComputeNodalUserObjectsThread::onNode().

◆ reinitNodeFace()

void FEProblemBase::reinitNodeFace ( const Node *  node,
BoundaryID  bnd_id,
const THREAD_ID  tid 
)
overridevirtualinherited

◆ reinitNodes()

void SubProblem::reinitNodes ( const std::vector< dof_id_type > &  nodes,
const THREAD_ID  tid 
)
inherited

Definition at line 979 of file SubProblem.C.

980{
981 for (const auto nl_sys_num : make_range(numNonlinearSystems()))
982 systemBaseNonlinear(nl_sys_num).reinitNodes(nodes, tid);
983 systemBaseAuxiliary().reinitNodes(nodes, tid);
984}
void reinitNodes(const std::vector< dof_id_type > &nodes, const THREAD_ID tid)
Definition SubProblem.C:979
virtual void reinitNodes(const std::vector< dof_id_type > &nodes, THREAD_ID tid)
Reinit variables at a set of nodes.
Definition SystemBase.C:424

Referenced by AuxNodalScalarKernel::compute(), NodalScalarKernel::reinit(), and NodalConstraint::reinitConstraintNodes().

◆ reinitNodesNeighbor()

void SubProblem::reinitNodesNeighbor ( const std::vector< dof_id_type > &  nodes,
const THREAD_ID  tid 
)
inherited

Definition at line 987 of file SubProblem.C.

988{
989 for (const auto nl_sys_num : make_range(numNonlinearSystems()))
990 systemBaseNonlinear(nl_sys_num).reinitNodesNeighbor(nodes, tid);
992}
void reinitNodesNeighbor(const std::vector< dof_id_type > &nodes, const THREAD_ID tid)
Definition SubProblem.C:987
virtual void reinitNodesNeighbor(const std::vector< dof_id_type > &nodes, THREAD_ID tid)
Reinit variables at a set of neighbor nodes.
Definition SystemBase.C:435

Referenced by NodalConstraint::reinitConstraintNodes().

◆ reinitOffDiagScalars()

void FEProblemBase::reinitOffDiagScalars ( const THREAD_ID  tid)
overridevirtualinherited

Implements SubProblem.

Definition at line 2716 of file FEProblemBase.C.

2717{
2718 _assembly[tid][_current_nl_sys->number()]->prepareOffDiagScalar();
2720 _displaced_problem->reinitOffDiagScalars(tid);
2721}

Referenced by NonlinearSystemBase::computeScalarKernelsJacobians(), NonlinearSystemBase::constraintJacobians(), and NonlinearThread::onElement().

◆ reinitScalars()

void FEProblemBase::reinitScalars ( const THREAD_ID  tid,
bool  reinit_for_derivative_reordering = false 
)
overridevirtualinherited

fills the VariableValue arrays for scalar variables from the solution vector

Parameters
tidThe thread id
reinit_for_derivative_reorderingA flag indicating whether we are reinitializing for the purpose of re-ordering derivative information for ADNodalBCs

Implements SubProblem.

Definition at line 2699 of file FEProblemBase.C.

2700{
2701 TIME_SECTION("reinitScalars", 3, "Reinitializing Scalar Variables");
2702
2704 _displaced_problem->reinitScalars(tid, reinit_for_derivative_reordering);
2705
2706 for (auto & nl : _nl)
2707 nl->reinitScalars(tid, reinit_for_derivative_reordering);
2708 _aux->reinitScalars(tid, reinit_for_derivative_reordering);
2709
2710 // This is called outside of residual/Jacobian call-backs
2711 for (auto & assembly : _assembly[tid])
2712 assembly->prepareScalar();
2713}
virtual Assembly & assembly(const THREAD_ID tid, const unsigned int sys_num) override

Referenced by NonlinearSystemBase::computeJacobianBlocks(), NonlinearSystemBase::computeJacobianInternal(), FEProblemBase::computeJacobianTags(), NonlinearSystemBase::computeNodalBCsJacobian(), FEProblemBase::computeResidualAndJacobian(), NonlinearSystemBase::computeResidualAndJacobianInternal(), NonlinearSystemBase::computeResidualInternal(), FEProblemBase::computeResidualTags(), NonlinearSystemBase::computeScalarKernelsJacobians(), and AuxiliarySystem::computeScalarVars().

◆ removeAlgebraicGhostingFunctor()

void SubProblem::removeAlgebraicGhostingFunctor ( libMesh::GhostingFunctor &  algebraic_gf)
inherited

Remove an algebraic ghosting functor from this problem's DofMaps.

Definition at line 1075 of file SubProblem.C.

1076{
1077 EquationSystems & eq = es();
1078 const auto n_sys = eq.n_systems();
1079 DofMap & nl_dof_map = eq.get_system(0).get_dof_map();
1080
1081 const bool found_in_root_sys =
1082 std::find(nl_dof_map.algebraic_ghosting_functors_begin(),
1083 nl_dof_map.algebraic_ghosting_functors_end(),
1084 &algebraic_gf) != nl_dof_map.algebraic_ghosting_functors_end();
1085
1086#ifndef NDEBUG
1087 const bool found_in_our_map =
1088 _root_alg_gf_to_sys_clones.find(&algebraic_gf) != _root_alg_gf_to_sys_clones.end();
1089 mooseAssert(found_in_root_sys == found_in_our_map,
1090 "If the ghosting functor exists in the root DofMap, then we need to have a key for "
1091 "it in our gf to clones map");
1092#endif
1093
1094 if (found_in_root_sys) // libMesh yells if we try to remove
1095 // something that's not there
1096 nl_dof_map.remove_algebraic_ghosting_functor(algebraic_gf);
1097
1098 auto it = _root_alg_gf_to_sys_clones.find(&algebraic_gf);
1099 if (it == _root_alg_gf_to_sys_clones.end())
1100 return;
1101
1102 auto & clones_vec = it->second;
1103 mooseAssert((n_sys - 1) == clones_vec.size(),
1104 "The size of the gf clones vector doesn't match the number of systems minus one");
1105 if (clones_vec.empty())
1106 {
1107 mooseAssert(n_sys == 1, "The clones vector should only be empty if there is only one system");
1108 return;
1109 }
1110
1111 for (const auto i : make_range(n_sys))
1112 eq.get_system(i + 1).get_dof_map().remove_algebraic_ghosting_functor(*clones_vec[i]);
1113
1114 _root_alg_gf_to_sys_clones.erase(it->first);
1115}

◆ removeCouplingGhostingFunctor()

void SubProblem::removeCouplingGhostingFunctor ( libMesh::GhostingFunctor &  coupling_gf)
inherited

Remove a coupling ghosting functor from this problem's DofMaps.

Definition at line 1118 of file SubProblem.C.

1119{
1120 EquationSystems & eq = es();
1121 const auto num_nl_sys = numNonlinearSystems();
1122 if (!num_nl_sys)
1123 return;
1124
1125 DofMap & nl_dof_map = eq.get_system(0).get_dof_map();
1126 const bool found_in_root_sys = std::find(nl_dof_map.coupling_functors_begin(),
1127 nl_dof_map.coupling_functors_end(),
1128 &coupling_gf) != nl_dof_map.coupling_functors_end();
1129
1130#ifndef NDEBUG
1131 const bool found_in_our_map =
1133 mooseAssert(found_in_root_sys == found_in_our_map,
1134 "If the ghosting functor exists in the root DofMap, then we need to have a key for "
1135 "it in our gf to clones map");
1136#endif
1137
1138 if (found_in_root_sys) // libMesh yells if we try to remove
1139 // something that's not there
1140 nl_dof_map.remove_coupling_functor(coupling_gf);
1141
1142 auto it = _root_coupling_gf_to_sys_clones.find(&coupling_gf);
1143 if (it == _root_coupling_gf_to_sys_clones.end())
1144 return;
1145
1146 auto & clones_vec = it->second;
1147 mooseAssert((num_nl_sys - 1) == clones_vec.size(),
1148 "The size of the gf clones vector doesn't match the number of systems minus one");
1149 if (clones_vec.empty())
1150 {
1151 mooseAssert(num_nl_sys == 1,
1152 "The clones vector should only be empty if there is only one nonlinear system");
1153 return;
1154 }
1155
1156 for (const auto i : make_range(num_nl_sys))
1157 eq.get_system(i + 1).get_dof_map().remove_coupling_functor(*clones_vec[i]);
1158
1159 _root_coupling_gf_to_sys_clones.erase(it->first);
1160}

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

6089{
6090 //<< "Object " << a->name() << " -> " << b->name() << std::endl;
6091}

◆ resetFailNextNonlinearConvergenceCheck()

void FEProblemBase::resetFailNextNonlinearConvergenceCheck ( )
inlineinherited

Tell the problem that the nonlinear convergence check(s) may proceed as normal.

Definition at line 2995 of file FEProblemBase.h.

void resetFailNextSystemConvergenceCheck()
Tell the problem that the system convergence check(s) may proceed as normal.

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

◆ resetFailNextSystemConvergenceCheck()

void FEProblemBase::resetFailNextSystemConvergenceCheck ( )
inlineinherited

Tell the problem that the system convergence check(s) may proceed as normal.

Definition at line 2997 of file FEProblemBase.h.

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

◆ resetState()

void FEProblemBase::resetState ( )
privatevirtualinherited

Reset state of this object in preparation for the next evaluation.

Definition at line 7699 of file FEProblemBase.C.

7700{
7701 // Our default state is to allow computing derivatives
7702 ADReal::do_derivatives = true;
7704
7705 // Clear the VectorTags and MatrixTags
7708
7711
7716 {
7717 _displaced_problem->setCurrentlyComputingResidual(false);
7718 _displaced_problem->setCurrentlyComputingJacobian(false);
7719 _displaced_problem->setCurrentlyComputingResidualAndJacobian(false);
7720 }
7721}
void clearCurrentJacobianMatrixTags()
Clear the current Jacobian matrix tag data structure ... if someone creates it.
void clearCurrentResidualVectorTags()
Clear the current residual vector tag data structure.

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

◆ residualSetup()

void FEProblemBase::residualSetup ( )
overridevirtualinherited

Reimplemented from SubProblem.

Definition at line 10606 of file FEProblemBase.C.

10607{
10609 // We need to setup all the nonlinear systems other than our current one which actually called
10610 // this method (so we have to make sure we don't go in a circle)
10611 for (const auto i : make_range(numNonlinearSystems()))
10612 if (i != currentNlSysNum())
10613 _nl[i]->residualSetup();
10614 // We don't setup the aux sys because that's been done elsewhere
10616 _displaced_problem->residualSetup();
10617}
virtual void residualSetup()

Referenced by FEProblemBase::residualSetup(), and NonlinearSystemBase::residualSetup().

◆ resizeMaterialData()

void FEProblemBase::resizeMaterialData ( Moose::MaterialDataType  data_type,
unsigned int  nqp,
const THREAD_ID  tid 
)
inherited

Resize material data.

Parameters
data_typeThe type of material data to resize
nqpThe number of quadrature points to resize for
tidThe thread ID

Definition at line 10523 of file FEProblemBase.C.

10526{
10527 getMaterialData(data_type, tid).resize(nqp);
10528}

◆ resolveMFEMSolvers()

void MFEMEigenproblem::resolveMFEMSolvers ( )
overridevirtual

Construct recorded MFEM solvers in dependency order and select the problem driver solver(s).

Reimplemented from MFEMProblem.

Definition at line 101 of file MFEMEigenproblem.C.

102{
104
105 if (getProblemData().nonlinear_solver)
106 mooseError("MFEMEigenproblem does not support nonlinear solver '",
107 getProblemData().nonlinear_solver->name(),
108 "'.");
109
110 if (getProblemData().jacobian_solver &&
111 !std::dynamic_pointer_cast<Moose::MFEM::EigensolverBase>(getProblemData().jacobian_solver))
112 mooseError("The selected solver '",
113 getProblemData().jacobian_solver->name(),
114 "' is not an eigensolver, but the problem is marked as an eigenproblem.");
115}
virtual void resolveMFEMSolvers()
Construct recorded MFEM solvers in dependency order and select the problem driver solver(s).

◆ restartableName()

std::string Restartable::restartableName ( const std::string &  data_name) const
protectedinherited

Gets the name of a piece of restartable data given a data name, adding the system name and object name prefix.

This should only be used in this interface and in testing.

Definition at line 78 of file Restartable.C.

79{
80 return _restartable_system_name + "/" + _restartable_name + "/" + data_name;
81}
const std::string _restartable_system_name
The system name this object is in.

Referenced by Restartable::declareRecoverableData(), and Restartable::declareRestartableDataHelper().

◆ restoreGeometricSearchState()

void FEProblemBase::restoreGeometricSearchState ( )
inherited

Restore geometric search state captured by the most recent backupGeometricSearchState().

Called from TimeStepper::rejectStep(), which must call this before restoreSolutions() so that the geometric search re-projects from the restored, accepted-state seeds rather than from the discarded attempt's converged state.

Definition at line 7867 of file FEProblemBase.C.

7868{
7870
7872 _displaced_problem->geomSearchData().restore();
7873}
void restore()
Restore the PenetrationLocators' state captured by the most recent backup().

Referenced by TimeStepper::rejectStep().

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

6737{
6738 const auto & multi_apps = _multi_apps[type].getActiveObjects();
6739
6740 if (multi_apps.size())
6741 {
6743 {
6744 if (force)
6745 _console << COLOR_CYAN << "\nRestoring Multiapps on " << type.name()
6746 << " because of solve failure!" << COLOR_DEFAULT << std::endl;
6747 else
6748 _console << COLOR_CYAN << "\nRestoring MultiApps on " << type.name() << COLOR_DEFAULT
6749 << std::endl;
6750 }
6751
6752 for (const auto & multi_app : multi_apps)
6753 multi_app->restore(force);
6754
6756
6758 _console << COLOR_CYAN << "Finished Restoring MultiApps on " << type.name() << "\n"
6759 << COLOR_DEFAULT << std::endl;
6760 }
6761}

Referenced by TransientBase::incrementStepOrReject(), and FixedPointSolve::solve().

◆ restoreOldSolutions()

void FEProblemBase::restoreOldSolutions ( )
virtualinherited

Restore old solutions from the backup vectors and deallocate them.

Definition at line 7914 of file FEProblemBase.C.

7915{
7916 TIME_SECTION("restoreOldSolutions", 5, "Restoring Old Solutions");
7917
7918 for (auto & sys : _solver_systems)
7919 sys->restoreOldSolutions();
7920 _aux->restoreOldSolutions();
7921}
virtual void restoreOldSolutions()
Restore old solutions from the backup vectors and deallocate them.

Referenced by EigenExecutionerBase::inversePowerIteration().

◆ restoreOriginalNonzeroPattern()

bool FEProblemBase::restoreOriginalNonzeroPattern ( ) const
inlineinherited
Returns
Whether the original matrix nonzero pattern is restored before each Jacobian assembly

Definition at line 2448 of file FEProblemBase.h.

Referenced by NonlinearSystemBase::computeJacobianInternal().

◆ restoreSolutions()

void FEProblemBase::restoreSolutions ( )
virtualinherited

Definition at line 7876 of file FEProblemBase.C.

7877{
7878 TIME_SECTION("restoreSolutions", 5, "Restoring Solutions");
7879
7880 if (!_not_zeroed_tagged_vectors.empty())
7881 paramError("not_zeroed_tag_vectors",
7882 "There is currently no way to restore not-zeroed vectors.");
7883
7884 for (auto & sys : _solver_systems)
7885 {
7886 if (_verbose_restore)
7887 _console << "Restoring solutions on system " << sys->name() << "..." << std::endl;
7888 sys->restoreStateHistory();
7889 }
7890
7891 if (_verbose_restore)
7892 _console << "Restoring solutions on Auxiliary system..." << std::endl;
7893 _aux->restoreStateHistory();
7894
7895 if (_verbose_restore)
7896 _console << "Restoring postprocessor, vector-postprocessor, and reporter data..." << std::endl;
7898
7900 _displaced_problem->updateMesh();
7901}
bool _verbose_restore
Whether or not to be verbose on solution restoration post a failed time step.
void restoreState(bool verbose=false)
When a time step fails, this method is called to revert the current reporter values to their old stat...

Referenced by ActivateElementsUserObjectBase::initSolutions(), TimeStepper::rejectStep(), and FEProblemBase::updateMeshXFEM().

◆ restrictionBoundaryCheckName()

std::string SubProblem::restrictionBoundaryCheckName ( BoundaryID  check_id)
privateinherited

Definition at line 775 of file SubProblem.C.

776{
777 return mesh().getMesh().get_boundary_info().sideset_name(check_id);
778}

Referenced by SubProblem::checkBoundaryMatProps().

◆ restrictionSubdomainCheckName()

std::string SubProblem::restrictionSubdomainCheckName ( SubdomainID  check_id)
privateinherited

Helper functions for checking MaterialProperties.

Definition at line 764 of file SubProblem.C.

765{
766 // TODO: Put a better a interface in MOOSE
767 std::map<subdomain_id_type, std::string> & name_map = mesh().getMesh().set_subdomain_name_map();
768 std::map<subdomain_id_type, std::string>::const_iterator pos = name_map.find(check_id);
769 if (pos != name_map.end())
770 return pos->second;
771 return "";
772}

Referenced by SubProblem::checkBlockMatProps().

◆ safeAccessTaggedMatrices()

virtual bool SubProblem::safeAccessTaggedMatrices ( ) const
inlinevirtualinherited

Is it safe to access the tagged matrices.

Reimplemented in DisplacedProblem.

Definition at line 742 of file SubProblem.h.

Referenced by MooseVariableScalar::reinit(), and DisplacedProblem::safeAccessTaggedMatrices().

◆ safeAccessTaggedVectors()

virtual bool SubProblem::safeAccessTaggedVectors ( ) const
inlinevirtualinherited

Is it safe to access the tagged vectors.

Reimplemented in DisplacedProblem.

Definition at line 745 of file SubProblem.h.

Referenced by MooseVariableScalar::reinit(), and DisplacedProblem::safeAccessTaggedVectors().

◆ saveOldSolutions()

void FEProblemBase::saveOldSolutions ( )
virtualinherited

Allocate vectors and save old solutions into them.

Definition at line 7904 of file FEProblemBase.C.

7905{
7906 TIME_SECTION("saveOldSolutions", 5, "Saving Old Solutions");
7907
7908 for (auto & sys : _solver_systems)
7909 sys->saveOldSolutions();
7910 _aux->saveOldSolutions();
7911}
virtual void saveOldSolutions()
Allocate vectors and save old solutions into them.

Referenced by EigenExecutionerBase::inversePowerIteration().

◆ selectMatrixTagsFromSystem()

void SubProblem::selectMatrixTagsFromSystem ( const SystemBase &  system,
const std::map< TagName, TagID > &  input_matrix_tags,
std::set< TagID > &  selected_tags 
)
staticinherited

Select the matrix tags which belong to a specific system.

Parameters
systemReference to the system
input_matrix_tagsA map of matrix tags
selected_tagsA set which gets populated by the tag-ids that belong to the system

Definition at line 292 of file SubProblem.C.

295{
296 selected_tags.clear();
297 for (const auto & matrix_tag_pair : input_matrix_tags)
298 if (system.hasMatrix(matrix_tag_pair.second))
299 selected_tags.insert(matrix_tag_pair.second);
300}

Referenced by FEProblemBase::computeLinearSystemSys().

◆ selectVectorTagsFromSystem()

void SubProblem::selectVectorTagsFromSystem ( const SystemBase &  system,
const std::vector< VectorTag > &  input_vector_tags,
std::set< TagID > &  selected_tags 
)
staticinherited

Select the vector tags which belong to a specific system.

Parameters
systemReference to the system
input_vector_tagsA vector of vector tags
selected_tagsA set which gets populated by the tag-ids that belong to the system

Definition at line 281 of file SubProblem.C.

284{
285 selected_tags.clear();
286 for (const auto & vector_tag : input_vector_tags)
287 if (system.hasVector(vector_tag._id))
288 selected_tags.insert(vector_tag._id);
289}

Referenced by FEProblemBase::computeLinearSystemSys(), FEProblemBase::computeResidualAndJacobian(), and ComputeResidualAndJacobianThread::determineObjectWarehouses().

◆ setActiveElementalMooseVariables()

void FEProblemBase::setActiveElementalMooseVariables ( const std::set< MooseVariableFEBase * > &  moose_vars,
const THREAD_ID  tid 
)
overridevirtualinherited

Set the MOOSE variables to be reinited on each element.

Parameters
moose_varsA set of variables that need to be reinited each time reinit() is called.
tidThe thread id

Reimplemented from SubProblem.

Definition at line 7009 of file FEProblemBase.C.

7011{
7013
7015 _displaced_problem->setActiveElementalMooseVariables(moose_vars, tid);
7016}
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:435

Referenced by FEProblemBase::prepareMaterials(), ComputeDiracThread::subdomainChanged(), ComputeIndicatorThread::subdomainChanged(), ComputeMarkerThread::subdomainChanged(), ComputeMaterialsObjectThread::subdomainChanged(), and ComputeUserObjectsThread::subdomainChanged().

◆ setActiveFEVariableCoupleableMatrixTags()

void FEProblemBase::setActiveFEVariableCoupleableMatrixTags ( std::set< TagID > &  mtags,
const THREAD_ID  tid 
)
overridevirtualinherited

Reimplemented from SubProblem.

Definition at line 6971 of file FEProblemBase.C.

6972{
6974
6976 _displaced_problem->setActiveFEVariableCoupleableMatrixTags(mtags, tid);
6977}
virtual void setActiveFEVariableCoupleableMatrixTags(std::set< TagID > &mtags, const THREAD_ID tid)
Definition SubProblem.C:355

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

7066{
7067 // mark active properties in every material
7068 for (auto & mat : _all_materials.getObjects(tid))
7069 mat->setActiveProperties(mat_prop_ids);
7070 for (auto & mat : _all_materials[Moose::FACE_MATERIAL_DATA].getObjects(tid))
7071 mat->setActiveProperties(mat_prop_ids);
7072 for (auto & mat : _all_materials[Moose::NEIGHBOR_MATERIAL_DATA].getObjects(tid))
7073 mat->setActiveProperties(mat_prop_ids);
7074
7075 _has_active_material_properties[tid] = !mat_prop_ids.empty();
7076}

Referenced by Moose::Mortar::loopOverMortarSegments(), FEProblemBase::prepareMaterials(), NodalPatchRecovery::reinitPatch(), NonlinearSystemBase::setConstraintSecondaryValues(), and ComputeDiracThread::subdomainChanged().

◆ setActiveScalarVariableCoupleableMatrixTags()

void FEProblemBase::setActiveScalarVariableCoupleableMatrixTags ( std::set< TagID > &  mtags,
const THREAD_ID  tid 
)
overridevirtualinherited

Reimplemented from SubProblem.

Definition at line 6989 of file FEProblemBase.C.

6991{
6993
6995 _displaced_problem->setActiveScalarVariableCoupleableMatrixTags(mtags, tid);
6996}
virtual void setActiveScalarVariableCoupleableMatrixTags(std::set< TagID > &mtags, const THREAD_ID tid)
Definition SubProblem.C:394

Referenced by AuxiliarySystem::setScalarVariableCoupleableTags().

◆ setActiveScalarVariableCoupleableVectorTags()

void FEProblemBase::setActiveScalarVariableCoupleableVectorTags ( std::set< TagID > &  vtags,
const THREAD_ID  tid 
)
overridevirtualinherited

Reimplemented from SubProblem.

Definition at line 6999 of file FEProblemBase.C.

7001{
7003
7005 _displaced_problem->setActiveScalarVariableCoupleableVectorTags(vtags, tid);
7006}
virtual void setActiveScalarVariableCoupleableVectorTags(std::set< TagID > &vtags, const THREAD_ID tid)
Definition SubProblem.C:401

Referenced by AuxiliarySystem::setScalarVariableCoupleableTags().

◆ setAssemblyLevel()

void MFEMProblem::setAssemblyLevel ( mfem::AssemblyLevel  assembly_level)
inlineinherited

Set the default assembly level to use for EquationSystem assembly.

Called by the MFEM executioners, which own the user-facing assembly_level parameter, during their construction; weak forms read it back when building their EquationSystems in setEquationSystems().

Definition at line 439 of file MFEMProblem.h.

439{ _assembly_level = assembly_level; }

Referenced by MFEMTransient::MFEMTransient().

◆ setAuxKernelParamsAndLog()

void FEProblemBase::setAuxKernelParamsAndLog ( const std::string &  ak_name,
const std::string &  name,
InputParameters &  parameters,
const std::string &  base_name 
)
privateinherited

Set the subproblem and system parameters for auxiliary kernels and log their addition.

Parameters
ak_nameThe type of the auxiliary kernel
nameThe name of the auxiliary kernel
parametersThe auxiliary kernel parameters
base_nameThe base type of the auxiliary kernel, i.e. AuxKernel or KokkosAuxKernel

Definition at line 3376 of file FEProblemBase.C.

3380{
3381 if (_displaced_problem && parameters.get<bool>("use_displaced_mesh"))
3382 {
3383 parameters.set<SubProblem *>("_subproblem") = _displaced_problem.get();
3384 parameters.set<SystemBase *>("_sys") = &_displaced_problem->auxSys();
3385 parameters.set<SystemBase *>("_nl_sys") = &_displaced_problem->solverSys(0);
3386 if (!parameters.get<std::vector<BoundaryName>>("boundary").empty())
3388 else
3390 }
3391 else
3392 {
3393 if (_displaced_problem == nullptr && parameters.get<bool>("use_displaced_mesh"))
3394 {
3395 // We allow AuxKernels to request that they use_displaced_mesh,
3396 // but then be overridden when no displacements variables are
3397 // provided in the Mesh block. If that happened, update the value
3398 // of use_displaced_mesh appropriately for this AuxKernel.
3399 if (parameters.have_parameter<bool>("use_displaced_mesh"))
3400 parameters.set<bool>("use_displaced_mesh") = false;
3401 }
3402
3403 parameters.set<SubProblem *>("_subproblem") = this;
3404 parameters.set<SystemBase *>("_sys") = _aux.get();
3405 parameters.set<SystemBase *>("_nl_sys") = _solver_systems[0].get();
3406 }
3407
3408 logAdd(base_name, name, ak_name, parameters);
3409}

Referenced by FEProblemBase::addAuxKernel().

◆ setAxisymmetricCoordAxis()

void FEProblemBase::setAxisymmetricCoordAxis ( const MooseEnum &  rz_coord_axis)
inherited

Definition at line 1002 of file FEProblemBase.C.

1003{
1004 _mesh.setAxisymmetricCoordAxis(rz_coord_axis);
1005}
void setAxisymmetricCoordAxis(const MooseEnum &rz_coord_axis)
For axisymmetric simulations, set the symmetry coordinate axis.
Definition MooseMesh.C:4331

◆ setChainControlDataOutput()

void SubProblem::setChainControlDataOutput ( bool  set_output)
inlineinherited

Setter for debug chain control data output.

Definition at line 931 of file SubProblem.h.

931{ _show_chain_control_data = set_output; }
bool _show_chain_control_data
Whether to output a list of all the chain control data.

◆ setCheckResidualForNans()

void FEProblemBase::setCheckResidualForNans ( bool  check_residual_for_nans)
inlineinherited

Setter for residual NaN/Inf checking.

Definition at line 235 of file FEProblemBase.h.

236 {
237 _check_residual_for_nans = check_residual_for_nans;
238 }

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

2291{ _const_jacobian = state; }

Referenced by ExplicitEuler::preSolve(), ExplicitRK2::preSolve(), and ExplicitTVDRK2::preSolve().

◆ setCoordSystem()

void FEProblemBase::setCoordSystem ( const std::vector< SubdomainName > &  blocks,
const MultiMooseEnum &  coord_sys 
)
inherited

Definition at line 994 of file FEProblemBase.C.

996{
997 TIME_SECTION("setCoordSystem", 5, "Setting Coordinate System");
998 _mesh.setCoordSystem(blocks, coord_sys);
999}
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:4199

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

7241{
7243 {
7245 mooseError("Someone told us (the FEProblemBase) to trust the user coupling matrix, but we "
7246 "haven't been provided a coupling matrix!");
7247
7248 // We've been told to trust the user coupling matrix, so we're going to leave things alone
7249 return;
7250 }
7251
7252 _coupling = type;
7253}
bool _trust_user_coupling_matrix
Whether to trust the user coupling matrix no matter what.

Referenced by FEProblemBase::init(), and Moose::SlepcSupport::setEigenProblemSolverParams().

◆ setCouplingMatrix() [1/2]

void FEProblemBase::setCouplingMatrix ( libMesh::CouplingMatrix *  cm,
const unsigned int  nl_sys_num 
)
inherited

◆ setCouplingMatrix() [2/2]

void FEProblemBase::setCouplingMatrix ( std::unique_ptr< libMesh::CouplingMatrix >  cm,
const unsigned int  nl_sys_num 
)
inherited

Set custom coupling matrix.

Parameters
cmcoupling matrix to be set
nl_sys_numwhich nonlinear system we are setting the coupling matrix for

Referenced by MoosePreconditioner::setCouplingMatrix().

◆ setCurrentAlgebraicBndNodeRange()

void FEProblemBase::setCurrentAlgebraicBndNodeRange ( ConstBndNodeRange *  range)
inherited

Definition at line 10823 of file FEProblemBase.C.

10824{
10825 if (!range)
10826 {
10828 return;
10829 }
10830
10831 _current_algebraic_bnd_node_range = std::make_unique<ConstBndNodeRange>(*range);
10832}

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

10802{
10803 if (!range)
10804 {
10806 return;
10807 }
10808
10809 _current_algebraic_elem_range = std::make_unique<ConstElemRange>(*range);
10810}

◆ setCurrentAlgebraicNodeRange()

void FEProblemBase::setCurrentAlgebraicNodeRange ( libMesh::ConstNodeRange *  range)
inherited

Definition at line 10812 of file FEProblemBase.C.

10813{
10814 if (!range)
10815 {
10817 return;
10818 }
10819
10820 _current_algebraic_node_range = std::make_unique<ConstNodeRange>(*range);
10821}

◆ setCurrentBoundaryID()

void FEProblemBase::setCurrentBoundaryID ( BoundaryID  bid,
const THREAD_ID  tid 
)
overridevirtualinherited

sets the current boundary ID in assembly

Reimplemented from SubProblem.

Definition at line 10737 of file FEProblemBase.C.

10738{
10741 _displaced_problem->setCurrentBoundaryID(bid, tid);
10742}
virtual void setCurrentBoundaryID(BoundaryID bid, const THREAD_ID tid)
sets the current boundary ID in assembly
Definition SubProblem.C:781

◆ setCurrentExecuteOnFlag()

void FEProblemBase::setCurrentExecuteOnFlag ( const ExecFlagType &  flag)
inherited

Definition at line 5430 of file FEProblemBase.C.

5431{
5433}

Referenced by FEProblemBase::execute(), MFEMProblem::execute(), and FEProblemBase::outputStep().

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

10755{
10756 mooseAssert(sys_num < _linear_systems.size(),
10757 "System number greater than the number of linear systems");
10758 _current_linear_sys = _linear_systems[sys_num].get();
10760}
SolverSystem * _current_solver_sys
The current solver system.

Referenced by FEProblemBase::computeLinearSystemSys(), LinearSystem::computeLinearSystemTags(), and FEProblemBase::solveLinearSystem().

◆ setCurrentLowerDElem()

void FEProblemBase::setCurrentLowerDElem ( const Elem *const  lower_d_elem,
const THREAD_ID  tid 
)
overridevirtualinherited

Set the current lower dimensional element.

This can be null

Reimplemented from SubProblem.

Definition at line 10728 of file FEProblemBase.C.

10729{
10730 SubProblem::setCurrentLowerDElem(lower_d_elem, tid);
10732 _displaced_problem->setCurrentLowerDElem(
10733 lower_d_elem ? _displaced_mesh->elemPtr(lower_d_elem->id()) : nullptr, tid);
10734}
virtual void setCurrentLowerDElem(const Elem *const lower_d_elem, const THREAD_ID tid)
Set the current lower dimensional element.

◆ setCurrentlyComputingJacobian()

void SubProblem::setCurrentlyComputingJacobian ( const bool  currently_computing_jacobian)
inlineinherited

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

Definition at line 700 of file SubProblem.h.

701 {
702 _currently_computing_jacobian = currently_computing_jacobian;
703 }

Referenced by FEProblemBase::computeResidualAndJacobian(), and FEProblemBase::resetState().

◆ setCurrentlyComputingResidual()

void FEProblemBase::setCurrentlyComputingResidual ( bool  currently_computing_residual)
finalvirtualinherited

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

Reimplemented from SubProblem.

Definition at line 10404 of file FEProblemBase.C.

10405{
10407 _displaced_problem->setCurrentlyComputingResidual(currently_computing_residual);
10408 _currently_computing_residual = currently_computing_residual;
10409}

Referenced by FEProblemBase::computeResidualAndJacobian(), FEProblemBase::computeResidualTags(), NonlinearSystemBase::computeResidualTags(), and FEProblemBase::resetState().

◆ setCurrentlyComputingResidualAndJacobian()

void SubProblem::setCurrentlyComputingResidualAndJacobian ( bool  currently_computing_residual_and_jacobian)
inlineinherited

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

Definition at line 1489 of file SubProblem.h.

1491{
1492 _currently_computing_residual_and_jacobian = currently_computing_residual_and_jacobian;
1493}

Referenced by FEProblemBase::computeResidualAndJacobian(), and FEProblemBase::resetState().

◆ setCurrentNonlinearSystem()

void FEProblemBase::setCurrentNonlinearSystem ( const unsigned int  nl_sys_num)
inherited

◆ setCurrentResidualVectorTags()

void FEProblemBase::setCurrentResidualVectorTags ( const std::set< TagID > &  vector_tags)
inlineinherited

Set the current residual vector tag data structure based on the passed in tag IDs.

Definition at line 4000 of file FEProblemBase.h.

4001{
4003}

Referenced by FEProblemBase::computeResidualAndJacobian(), FEProblemBase::computeResidualTags(), and CrankNicolson::init().

◆ setCurrentSubdomainID()

void FEProblemBase::setCurrentSubdomainID ( const Elem *  elem,
const THREAD_ID  tid 
)
overridevirtualinherited

Implements SubProblem.

Definition at line 2176 of file FEProblemBase.C.

2177{
2178 SubdomainID did = elem->subdomain_id();
2179 for (const auto i : index_range(_solver_systems))
2180 {
2181 _assembly[tid][i]->setCurrentSubdomainID(did);
2182 if (_displaced_problem &&
2184 _displaced_problem->assembly(tid, i).setCurrentSubdomainID(did);
2185 }
2186}

Referenced by NonlinearSystemBase::constraintJacobians(), NonlinearSystemBase::constraintResiduals(), ElementalVariableValue::execute(), MultiAppVariableValueSamplePostprocessorTransfer::execute(), and ComputeInitialConditionThread::operator()().

◆ setEquationSystems()

void MFEMProblem::setEquationSystems ( )
inherited

Set all MFEM EquationSystems for this problem.

Definition at line 480 of file MFEMProblem.C.

481{
482 std::vector<MFEMWeakFormBase *> weak_forms;
483 theWarehouse().query().condition<AttribSystem>("MFEMWeakFormBase").queryInto(weak_forms);
484
485 // Add a default MFEMWeakForm if none has been added by the user.
486 if (weak_forms.empty())
487 weak_forms.push_back(addDefaultWeakForm().get());
488
489 for (auto & weak_form : weak_forms)
490 _problem_data.eqn_systems.Register(weak_form->name(), weak_form->createEquationSystem());
491}
virtual std::shared_ptr< MFEMWeakFormBase > addDefaultWeakForm()
Add default weak form if none has been added by the user.

◆ setErrorOnJacobianNonzeroReallocation()

void FEProblemBase::setErrorOnJacobianNonzeroReallocation ( bool  state)
inlineinherited

Definition at line 2459 of file FEProblemBase.h.

2460 {
2462 }

◆ setException()

void FEProblemBase::setException ( const std::string &  message)
virtualinherited

◆ setExecutionPrinting()

void FEProblemBase::setExecutionPrinting ( const ExecFlagEnum &  print_exec)
inlineinherited

Definition at line 3003 of file FEProblemBase.h.

3003{ _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 2990 of file FEProblemBase.h.

void setFailNextSystemConvergenceCheck()
Tell the problem that the system(s) cannot be considered converged next time convergence is checked.

Referenced by Terminator::execute().

◆ setFailNextSystemConvergenceCheck()

void FEProblemBase::setFailNextSystemConvergenceCheck ( )
inlineinherited

Tell the problem that the system(s) cannot be considered converged next time convergence is checked.

Definition at line 2992 of file FEProblemBase.h.

Referenced by FEProblemBase::setFailNextNonlinearConvergenceCheck().

◆ setFunctorOutput()

void SubProblem::setFunctorOutput ( bool  set_output)
inlineinherited

Setter for debug functor output.

Definition at line 929 of file SubProblem.h.

929{ _show_functors = set_output; }
bool _show_functors
Whether to output a list of the functors used and requested (currently only at initialSetup)

◆ setIgnoreZerosInJacobian()

void FEProblemBase::setIgnoreZerosInJacobian ( bool  state)
inlineinherited

Set whether the zeros in the Jacobian should be dropped from the sparsity pattern.

Definition at line 2482 of file FEProblemBase.h.

2482{ _ignore_zeros_in_jacobian = state; }

◆ setInputParametersFEProblem()

virtual void FEProblemBase::setInputParametersFEProblem ( InputParameters &  parameters)
inlinevirtualinherited

Reimplemented in FEProblem.

Definition at line 1046 of file FEProblemBase.h.

1047 {
1048 parameters.set<FEProblemBase *>("_fe_problem_base") = this;
1049 }

Referenced by FEProblem::setInputParametersFEProblem().

◆ setKernelCoverageCheck() [1/2]

void FEProblemBase::setKernelCoverageCheck ( bool  flag)
inlineinherited

Set flag to indicate whether kernel coverage checks should be performed.

This check makes sure that at least one kernel is active on all subdomains in the domain (default: true).

Definition at line 2303 of file FEProblemBase.h.

◆ setKernelCoverageCheck() [2/2]

void FEProblemBase::setKernelCoverageCheck ( CoverageCheckMode  mode)
inlineinherited

Set flag to indicate whether kernel coverage checks should be performed.

This check makes sure that at least one kernel is active on all subdomains in the domain (default: true).

Definition at line 2297 of file FEProblemBase.h.

2297{ _kernel_coverage_check = mode; }

◆ setLinearConvergenceNames()

void FEProblemBase::setLinearConvergenceNames ( const std::vector< ConvergenceName > &  convergence_names)
inherited

Sets the linear convergence object name(s) if there is one.

Definition at line 10572 of file FEProblemBase.C.

10573{
10574 if (convergence_names.size() != numLinearSystems())
10575 paramError("linear_convergence", "There must be one convergence object per linear system");
10576 _linear_convergence_names = convergence_names;
10577}

Referenced by FEProblemSolve::FEProblemSolve().

◆ setMaterialCoverageCheck() [1/2]

void FEProblemBase::setMaterialCoverageCheck ( bool  flag)
inlineinherited

Set flag to indicate whether material coverage checks should be performed.

This check makes sure that at least one material is active on all subdomains in the domain if any material is supplied. If no materials are supplied anywhere, a simulation is still considered OK as long as no properties are being requested anywhere.

Definition at line 2322 of file FEProblemBase.h.

◆ setMaterialCoverageCheck() [2/2]

void FEProblemBase::setMaterialCoverageCheck ( CoverageCheckMode  mode)
inlineinherited

Set flag to indicate whether material coverage checks should be performed.

This check makes sure that at least one material is active on all subdomains in the domain if any material is supplied. If no materials are supplied anywhere, a simulation is still considered OK as long as no properties are being requested anywhere.

Definition at line 2314 of file FEProblemBase.h.

2314{ _material_coverage_check = mode; }

◆ setMesh()

void MFEMProblem::setMesh ( )
inherited

Set the mesh used by MFEM.

Definition at line 109 of file MFEMProblem.C.

110{
111 auto pmesh = mesh().getMFEMParMeshPtr();
112 getProblemData().pmesh = pmesh;
113 getProblemData().comm = pmesh->GetComm();
114 getProblemData().num_procs = pmesh->GetNRanks();
115 getProblemData().myid = pmesh->GetMyRank();
116}
std::shared_ptr< mfem::ParMesh > getMFEMParMeshPtr()
Copy a shared_ptr to the mfem::ParMesh object.
Definition MFEMMesh.h:39
std::shared_ptr< mfem::ParMesh > pmesh

Referenced by MFEMProblem::MFEMProblem().

◆ setMultiAppFixedPointConvergenceName()

void FEProblemBase::setMultiAppFixedPointConvergenceName ( const ConvergenceName &  convergence_name)
inherited

Sets the MultiApp fixed point convergence object name if there is one.

Definition at line 10544 of file FEProblemBase.C.

10545{
10546 _multiapp_fixed_point_convergence_name = convergence_name;
10547}

Referenced by FixedPointSolve::FixedPointSolve().

◆ setNeedToAddDefaultMultiAppFixedPointConvergence()

void FEProblemBase::setNeedToAddDefaultMultiAppFixedPointConvergence ( )
inlineinherited

Sets _need_to_add_default_multiapp_fixed_point_convergence to true.

Definition at line 783 of file FEProblemBase.h.

Referenced by FixedPointSolve::FixedPointSolve().

◆ setNeedToAddDefaultNonlinearConvergence()

void FEProblemBase::setNeedToAddDefaultNonlinearConvergence ( )
inlineinherited

Sets _need_to_add_default_nonlinear_convergence to true.

Definition at line 778 of file FEProblemBase.h.

Referenced by FEProblemSolve::FEProblemSolve().

◆ setNeedToAddDefaultSteadyStateConvergence()

void FEProblemBase::setNeedToAddDefaultSteadyStateConvergence ( )
inlineinherited

Sets _need_to_add_default_steady_state_convergence to true.

Definition at line 788 of file FEProblemBase.h.

Referenced by TransientBase::TransientBase().

◆ setNeighborSubdomainID() [1/2]

void FEProblemBase::setNeighborSubdomainID ( const Elem *  elem,
const THREAD_ID  tid 
)
virtualinherited

Definition at line 2202 of file FEProblemBase.C.

2203{
2204 SubdomainID did = elem->subdomain_id();
2205 for (const auto i : index_range(_nl))
2206 {
2207 _assembly[tid][i]->setCurrentNeighborSubdomainID(did);
2208 if (_displaced_problem &&
2210 _displaced_problem->assembly(tid, i).setCurrentNeighborSubdomainID(did);
2211 }
2212}

◆ setNeighborSubdomainID() [2/2]

void FEProblemBase::setNeighborSubdomainID ( const Elem *  elem,
unsigned int  side,
const THREAD_ID  tid 
)
overridevirtualinherited

Implements SubProblem.

Definition at line 2189 of file FEProblemBase.C.

2190{
2191 SubdomainID did = elem->neighbor_ptr(side)->subdomain_id();
2192 for (const auto i : index_range(_nl))
2193 {
2194 _assembly[tid][i]->setCurrentNeighborSubdomainID(did);
2195 if (_displaced_problem &&
2197 _displaced_problem->assembly(tid, i).setCurrentNeighborSubdomainID(did);
2198 }
2199}

Referenced by NonlinearSystemBase::constraintJacobians(), NonlinearSystemBase::constraintResiduals(), NonlinearThread::onInterfaceWithHRefinementMismatch(), FEProblemBase::reinitNeighbor(), and NonlinearSystemBase::reinitNodeFace().

◆ setNonlinearConvergenceNames()

void FEProblemBase::setNonlinearConvergenceNames ( const std::vector< ConvergenceName > &  convergence_names)
inherited

Sets the nonlinear convergence object name(s) if there is one.

Definition at line 10531 of file FEProblemBase.C.

10532{
10533 if (convergence_names.size() != numNonlinearSystems())
10534 paramError("nonlinear_convergence",
10535 "There must be one convergence object per nonlinear system");
10536
10537 _nonlinear_convergence_names = convergence_names;
10538
10539 for (const auto i : make_range(numNonlinearSystems()))
10540 _nl[i]->setConvergenceName(convergence_names[i]);
10541}

Referenced by FEProblemSolve::FEProblemSolve().

◆ setNonlocalCouplingMatrix()

void FEProblemBase::setNonlocalCouplingMatrix ( )
inherited

Set custom coupling matrix for variables requiring nonlocal contribution.

Definition at line 7281 of file FEProblemBase.C.

7282{
7283 TIME_SECTION("setNonlocalCouplingMatrix", 5, "Setting Nonlocal Coupling Matrix");
7284
7285 if (_nl.size() > 1)
7286 mooseError("Nonlocal kernels are weirdly stored on the FEProblem so we don't currently support "
7287 "multiple nonlinear systems with nonlocal kernels.");
7288
7289 for (const auto nl_sys_num : index_range(_nl))
7290 {
7291 auto & nl = _nl[nl_sys_num];
7292 auto & nonlocal_cm = _nonlocal_cm[nl_sys_num];
7293 unsigned int n_vars = nl->nVariables();
7294 nonlocal_cm.resize(n_vars);
7295 const auto & vars = nl->getVariables(0);
7296 const auto & nonlocal_kernel = _nonlocal_kernels.getObjects();
7297 const auto & nonlocal_integrated_bc = _nonlocal_integrated_bcs.getObjects();
7298 for (const auto & ivar : vars)
7299 {
7300 for (const auto & kernel : nonlocal_kernel)
7301 {
7302 for (unsigned int i = ivar->number(); i < ivar->number() + ivar->count(); ++i)
7303 if (i == kernel->variable().number())
7304 for (const auto & jvar : vars)
7305 {
7306 const auto it = _var_dof_map.find(jvar->name());
7307 if (it != _var_dof_map.end())
7308 {
7309 unsigned int j = jvar->number();
7310 nonlocal_cm(i, j) = 1;
7311 }
7312 }
7313 }
7314 for (const auto & integrated_bc : nonlocal_integrated_bc)
7315 {
7316 for (unsigned int i = ivar->number(); i < ivar->number() + ivar->count(); ++i)
7317 if (i == integrated_bc->variable().number())
7318 for (const auto & jvar : vars)
7319 {
7320 const auto it = _var_dof_map.find(jvar->name());
7321 if (it != _var_dof_map.end())
7322 {
7323 unsigned int j = jvar->number();
7324 nonlocal_cm(i, j) = 1;
7325 }
7326 }
7327 }
7328 }
7329 }
7330}
std::map< std::string, std::vector< dof_id_type > > _var_dof_map
Definition SubProblem.h:685

◆ setParallelBarrierMessaging()

void FEProblemBase::setParallelBarrierMessaging ( bool  flag)
inlineinherited

Toggle parallel barrier messaging (defaults to on).

Definition at line 2330 of file FEProblemBase.h.

◆ setPostprocessorValueByName()

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

Set the value of a PostprocessorValue.

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

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

WARNING! This method should be used with caution. It exists to allow Transfers and other similar objects to modify Postprocessor values. It is not intended for general use.

Definition at line 5267 of file FEProblemBase.C.

5270{
5273}
void setReporterValue(const ReporterName &reporter_name, const T &value, const std::size_t time_index=0)
Method for setting Reporter values that already exist.

Referenced by PIDTransientControl::execute(), MultiAppPostprocessorTransfer::execute(), MFEMProblem::executeMFEMObjects(), PIDTransientControl::initialSetup(), FEProblemBase::joinAndFinalize(), PIDTransientControl::timestepSetup(), PicardSolve::transformPostprocessors(), SecantSolve::transformPostprocessors(), and SteffensenSolve::transformPostprocessors().

◆ setPreserveMatrixSparsityPattern()

void FEProblemBase::setPreserveMatrixSparsityPattern ( bool  preserve)
inherited

Set whether the sparsity pattern of the matrices being formed during the solve (usually the Jacobian) should be preserved.

This global setting can be retrieved by kernels, notably those using AD, to decide whether to take additional care to preserve the sparsity pattern

Definition at line 4364 of file FEProblemBase.C.

4365{
4366 if (_ignore_zeros_in_jacobian && preserve)
4368 "ignore_zeros_in_jacobian",
4369 "We likely cannot preserve the sparsity pattern if ignoring zeros in the Jacobian, which "
4370 "leads to removing those entries from the Jacobian sparsity pattern");
4372}
void paramWarning(const std::string &param, Args... args) const

◆ setProblemOperators()

void MFEMProblem::setProblemOperators ( )
inherited

Set all MFEM ProblemOperators to solve in this problem.

Definition at line 540 of file MFEMProblem.C.

541{
542 std::vector<MFEMProblemComposer *> problem_composers;
544 .query()
545 .condition<AttribSystem>("MFEMProblemComposer")
546 .queryInto(problem_composers);
547
548 // Add a default MFEMProblemComposer if none has been added by the user.
549 if (problem_composers.empty())
550 problem_composers.push_back(addDefaultProblemComposer().get());
551
552 for (auto & problem_composer : problem_composers)
553 _problem_operators.push_back(problem_composer->createProblemOperator(*this));
554
555 for (const auto & problem_operator : getProblemOperators())
556 problem_operator->Init();
557}
std::vector< std::shared_ptr< Moose::MFEM::ProblemOperatorBase > > & getProblemOperators()
Get vector of all ProblemOperators added to this problem.
virtual std::shared_ptr< MFEMProblemComposer > addDefaultProblemComposer()
Add default problem composer if none has been added by the user.

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

2336{
2337 _assembly[tid][_current_nl_sys->number()]->setResidual(
2338 residual,
2340 getVectorTag(_nl[_current_nl_sys->number()]->residualVectorTag()));
2342 _displaced_problem->setResidual(residual, tid);
2343}

Referenced by NonlinearSystemBase::constraintResiduals().

◆ setResidualNeighbor() [1/2]

virtual void SubProblem::setResidualNeighbor ( libMesh::NumericVector< libMesh::Number > &  residual,
const THREAD_ID  tid 
)
pure virtualinherited

◆ setResidualNeighbor() [2/2]

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

Definition at line 2346 of file FEProblemBase.C.

2347{
2348 _assembly[tid][_current_nl_sys->number()]->setResidualNeighbor(
2351 _displaced_problem->setResidualNeighbor(residual, tid);
2352}

◆ setResidualObjectParamsAndLog()

void FEProblemBase::setResidualObjectParamsAndLog ( const std::string &  ro_name,
const std::string &  name,
InputParameters &  parameters,
const unsigned int  nl_sys_num,
const std::string &  base_name,
bool &  reinit_displaced 
)
privateinherited

Set the subproblem and system parameters for residual objects and log their addition.

Parameters
ro_nameThe type of the residual object
nameThe name of the residual object
parametersThe residual object parameters
nl_sys_numThe nonlinear system that the residual object belongs to
base_nameThe base type of the residual object, e.g. Kernel, BoundaryCondition, etc.
reinit_displacedA data member indicating whether a geometric concept should be reinit'd for the displaced problem. Examples of valid data members to pass in are _reinit_displaced_elem and _reinit_displaced_face

Definition at line 3343 of file FEProblemBase.C.

3349{
3350 if (_displaced_problem && parameters.get<bool>("use_displaced_mesh"))
3351 {
3352 parameters.set<SubProblem *>("_subproblem") = _displaced_problem.get();
3353 parameters.set<SystemBase *>("_sys") = &_displaced_problem->solverSys(nl_sys_num);
3354 reinit_displaced = true;
3355 }
3356 else
3357 {
3358 if (_displaced_problem == nullptr && parameters.get<bool>("use_displaced_mesh"))
3359 {
3360 // We allow Kernels to request that they use_displaced_mesh,
3361 // but then be overridden when no displacements variables are
3362 // provided in the Mesh block. If that happened, update the value
3363 // of use_displaced_mesh appropriately for this Kernel.
3364 if (parameters.have_parameter<bool>("use_displaced_mesh"))
3365 parameters.set<bool>("use_displaced_mesh") = false;
3366 }
3367
3368 parameters.set<SubProblem *>("_subproblem") = this;
3369 parameters.set<SystemBase *>("_sys") = _nl[nl_sys_num].get();
3370 }
3371
3372 logAdd(base_name, name, ro_name, parameters);
3373}

Referenced by FEProblemBase::addBoundaryCondition(), FEProblemBase::addHDGKernel(), and FEProblemBase::addKernel().

◆ setRestartFile()

void FEProblemBase::setRestartFile ( const std::string &  file_name)
inherited

Communicate to the Resurector the name of the restart filer.

Parameters
file_nameThe file name for restarting from

Definition at line 10000 of file FEProblemBase.C.

10001{
10002 if (_app.isRecovering())
10003 {
10004 mooseInfo("Restart file ", file_name, " is NOT being used since we are performing recovery.");
10005 }
10006 else
10007 {
10008 _app.setRestart(true);
10010 mooseInfo("Using ", file_name, " for restart.");
10011 }
10012}
void mooseInfo(Args &&... args)
Emit an informational message with the given stringified, concatenated args.
Definition MooseError.h:401
void setRestart(bool value)
Sets the restart/recover flags.
Definition MooseApp.C:2888
void setRestartRecoverFileBase(const std::string &file_base)
mutator for recover_base (set by RecoverBaseAction)
Definition MooseApp.h:516
bool isRecovering() const
Whether or not this is a "recover" calculation.
Definition MooseApp.C:1678

Referenced by Executioner::Executioner(), Executioner::Executioner(), and FEProblemBase::FEProblemBase().

◆ setSNESMFReuseBase()

void FEProblemBase::setSNESMFReuseBase ( bool  reuse,
bool  set_by_user 
)
inlineinherited

If or not to reuse the base vector for matrix-free calculation.

Definition at line 2683 of file FEProblemBase.h.

2684 {
2686 }
bool _snesmf_reuse_base
If or not to resuse the base vector for matrix-free calculation.

Referenced by FEProblemSolve::FEProblemSolve().

◆ setSteadyStateConvergenceName()

void FEProblemBase::setSteadyStateConvergenceName ( const ConvergenceName &  convergence_name)
inherited

Sets the steady-state detection convergence object name if there is one.

Definition at line 10550 of file FEProblemBase.C.

10551{
10552 _steady_state_convergence_name = convergence_name;
10553}

Referenced by TransientBase::TransientBase().

◆ setUDotDotOldRequested()

virtual void FEProblemBase::setUDotDotOldRequested ( const bool  u_dotdot_old_requested)
inlinevirtualinherited

Set boolean flag to true to store old solution second time derivative.

Definition at line 2731 of file FEProblemBase.h.

2732 {
2733 _u_dotdot_old_requested = u_dotdot_old_requested;
2734 }
bool _u_dotdot_old_requested
Whether old solution second time derivative needs to be stored.

Referenced by CentralDifference::CentralDifference(), and NewmarkBeta::NewmarkBeta().

◆ setUDotDotRequested()

virtual void FEProblemBase::setUDotDotRequested ( const bool  u_dotdot_requested)
inlinevirtualinherited

Set boolean flag to true to store solution second time derivative.

Definition at line 2719 of file FEProblemBase.h.

2720 {
2721 _u_dotdot_requested = u_dotdot_requested;
2722 }
bool _u_dotdot_requested
Whether solution second time derivative needs to be stored.

Referenced by CentralDifference::CentralDifference(), and NewmarkBeta::NewmarkBeta().

◆ setUDotOldRequested()

virtual void FEProblemBase::setUDotOldRequested ( const bool  u_dot_old_requested)
inlinevirtualinherited

Set boolean flag to true to store old solution time derivative.

Definition at line 2725 of file FEProblemBase.h.

2726 {
2727 _u_dot_old_requested = u_dot_old_requested;
2728 }
bool _u_dot_old_requested
Whether old solution time derivative needs to be stored.

Referenced by CentralDifference::CentralDifference(), and NewmarkBeta::NewmarkBeta().

◆ setUDotRequested()

virtual void FEProblemBase::setUDotRequested ( const bool  u_dot_requested)
inlinevirtualinherited

Set boolean flag to true to store solution time derivative.

Definition at line 2716 of file FEProblemBase.h.

2716{ _u_dot_requested = u_dot_requested; }
bool _u_dot_requested
Whether solution time derivative needs to be stored.

Referenced by TimeIntegrator::TimeIntegrator().

◆ setupDampers()

void FEProblemBase::setupDampers ( )
inherited

Definition at line 6145 of file FEProblemBase.C.

6146{
6147 for (auto & nl : _nl)
6148 nl->setupDampers();
6149}

◆ setVariableAllDoFMap()

void FEProblemBase::setVariableAllDoFMap ( const std::vector< const MooseVariableFEBase * > &  moose_vars)
inherited

Definition at line 2084 of file FEProblemBase.C.

2085{
2086 for (unsigned int i = 0; i < moose_vars.size(); ++i)
2087 {
2088 VariableName var_name = moose_vars[i]->name();
2089 auto & sys = _solver_systems[moose_vars[i]->sys().number()];
2090 sys->setVariableGlobalDoFs(var_name);
2091 _var_dof_map[var_name] = sys->getVariableGlobalDoFs();
2092 }
2093}

Referenced by FEProblemBase::meshChanged().

◆ setVectorPostprocessorValueByName()

void FEProblemBase::setVectorPostprocessorValueByName ( const std::string &  object_name,
const std::string &  vector_name,
const VectorPostprocessorValue &  value,
std::size_t  t_index = 0 
)
inherited

Set the value of a VectorPostprocessor vector.

Parameters
object_nameThe name of the VPP object
vector_nameThe name of the declared vector
valueThe data to apply to the vector
t_indexFlag for getting current (0), old (1), or older (2) values

Definition at line 5293 of file FEProblemBase.C.

5297{
5299 VectorPostprocessorReporterName(object_name, vector_name), value, t_index);
5300}

◆ setVerboseProblem()

void FEProblemBase::setVerboseProblem ( bool  verbose)
inherited

Make the problem be verbose.

Definition at line 10720 of file FEProblemBase.C.

10721{
10722 _verbose_setup = verbose ? "true" : "false";
10723 _verbose_multiapps = verbose;
10724 _verbose_restore = verbose;
10725}

Referenced by PhysicsBase::initializePhysics().

◆ shouldPrintExecution()

bool FEProblemBase::shouldPrintExecution ( const THREAD_ID  tid) const
inherited

Check whether the problem should output execution orders at this time.

Definition at line 10662 of file FEProblemBase.C.

10663{
10664 // For now, only support printing from thread 0
10665 if (tid != 0)
10666 return false;
10667
10670 return true;
10671 else
10672 return false;
10673}
const ExecFlagType EXEC_ALWAYS
Definition Moose.C:54
bool isValueSet(const std::string &value) const
Methods for seeing if a value is set in the MultiMooseEnum.

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

◆ shouldSolve()

bool FEProblemBase::shouldSolve ( ) const
inlineinherited

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

9076{
9077 return false;
9078}

Referenced by FEProblemBase::computePostCheck(), and NonlinearSystem::solve().

◆ showFunctorRequestors()

void SubProblem::showFunctorRequestors ( ) const
privateinherited

Lists all functors and all the objects that requested them.

Definition at line 1264 of file SubProblem.C.

1265{
1266 for (const auto & [functor, requestors] : _functor_to_requestors)
1267 {
1268 _console << "[DBG] Requestors for wrapped functor "
1269 << std::regex_replace(functor, std::regex("wraps_"), "") << std::endl;
1270 _console << "[DBG] " << MooseUtils::join(requestors, " ") << std::endl;
1271 }
1272}

Referenced by SubProblem::initialSetup().

◆ showFunctors()

void SubProblem::showFunctors ( ) const
privateinherited

Lists all functors in the problem.

Definition at line 1252 of file SubProblem.C.

1253{
1254 _console << "[DBG] Wrapped functors found in Subproblem" << std::endl;
1255 std::string functor_names = "[DBG] ";
1256 for (const auto & functor_pair : _functors[0])
1257 functor_names += std::regex_replace(functor_pair.first, std::regex("wraps_"), "") + " ";
1258 if (functor_names.size())
1259 functor_names.pop_back();
1260 _console << functor_names << std::endl;
1261}

Referenced by SubProblem::initialSetup().

◆ showInvalidSolutionConsole()

bool FEProblemBase::showInvalidSolutionConsole ( ) const
inlineinherited

Whether or not to print out the invalid solutions summary table in console.

Definition at line 2499 of file FEProblemBase.h.

const bool _show_invalid_solution_console

Referenced by SolverSystem::checkInvalidSolution().

◆ sideUOInterfaceMatPropIntegrityCheck()

bool FEProblemBase::sideUOInterfaceMatPropIntegrityCheck ( ) const
inlineinherited
Returns
whether to perform an integrity check for side user objects consuming interface material properties

Definition at line 2850 of file FEProblemBase.h.

2851 {
2853 }
const bool _side_uo_interface_mat_prop_integrity_check
Whether to check that side user objects do not consume interface material properties.

Referenced by SideUserObject::initialSetup().

◆ sizeZeroes()

void FEProblemBase::sizeZeroes ( unsigned int  size,
const THREAD_ID  tid 
)
virtualinherited

Definition at line 2537 of file FEProblemBase.C.

2538{
2539 mooseDoOnce(mooseWarning(
2540 "This function is deprecated and no longer performs any function. Please do not call it."));
2541}

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

2697 {
2698 _skip_exception_check = skip_exception_check;
2699 }

Referenced by FEProblemSolve::FEProblemSolve().

◆ skipNextForwardSolutionCopyToOld()

void FEProblemBase::skipNextForwardSolutionCopyToOld ( )
inherited

Prevents the copy of the solution vector to the old solution vector in each system.

Old -> Older is still performed This is useful for MultiApps fixed point iterations

Definition at line 7807 of file FEProblemBase.C.

7808{
7809 for (auto & sys : _solver_systems)
7810 sys->skipNextSolutionToOldCopy();
7811 _aux->skipNextSolutionToOldCopy();
7812}

Referenced by FullSolveMultiApp::solveStep().

◆ solve()

void ExternalProblem::solve ( unsigned int  nl_sys_num = 0)
finaloverridevirtualinherited

Solve is implemented to providing syncing to/from the "transfer" mesh.

Reimplemented from FEProblemBase.

Definition at line 64 of file ExternalProblem.C.

65{
66 TIME_SECTION("solve", 1, "Solving", false)
67
69 if (shouldSolve())
72}
virtual void syncSolutions(Direction direction)=0
Method to transfer data to/from the external application to the associated transfer mesh.
virtual void externalSolve()=0
New interface for solving an External problem.
bool shouldSolve() const

◆ solveLinearSystem()

void FEProblemBase::solveLinearSystem ( const unsigned int  linear_sys_num,
const Moose::PetscSupport::PetscOptions *  po = nullptr 
)
virtualinherited

Build and solve a linear system.

Parameters
linear_sys_numThe number of the linear system (1,..,num. of lin. systems)
poThe petsc options for the solve, if not supplied, the defaults are used

Reimplemented in DumpObjectsProblem.

Definition at line 7724 of file FEProblemBase.C.

7726{
7727 TIME_SECTION("solve", 1, "Solving", false);
7728
7729 setCurrentLinearSystem(linear_sys_num);
7730
7731 const Moose::PetscSupport::PetscOptions & options = po ? *po : _petsc_options;
7732 auto & solver_params = _solver_params[numNonlinearSystems() + linear_sys_num];
7733
7734 // Set custom convergence criteria
7736
7737#if PETSC_RELEASE_LESS_THAN(3, 12, 0)
7738 LibmeshPetscCall(Moose::PetscSupport::petscSetOptions(
7739 options, solver_params)); // Make sure the PETSc options are setup for this app
7740#else
7741 // Now this database will be the default
7742 // Each app should have only one database
7743 if (!_app.isUltimateMaster())
7744 LibmeshPetscCall(PetscOptionsPush(_petsc_option_data_base));
7745
7746 // We did not add PETSc options to database yet
7748 {
7749 Moose::PetscSupport::petscSetOptions(options, solver_params, this);
7751 }
7752#endif
7753
7754 if (_solve)
7756
7757#if !PETSC_RELEASE_LESS_THAN(3, 12, 0)
7758 if (!_app.isUltimateMaster())
7759 LibmeshPetscCall(PetscOptionsPop());
7760#endif
7761}
std::vector< SolverParams > _solver_params
virtual void solve() override
Solve the system (using libMesh magic)
A struct for storing the various types of petsc options and values.
void petscSetOptions(const PetscOptions &po, const SolverParams &solver_params, FEProblemBase *const problem=nullptr)
A function for setting the PETSc options in PETSc from the options supplied to MOOSE.

Referenced by FEProblemSolve::solve().

◆ solverParams() [1/2]

SolverParams & FEProblemBase::solverParams ( unsigned int  solver_sys_num = 0)
inherited

Get the solver parameters.

Definition at line 10032 of file FEProblemBase.C.

10033{
10034 mooseAssert(solver_sys_num < numSolverSystems(),
10035 "Solver system number '" << solver_sys_num << "' is out of bounds. We have '"
10036 << numSolverSystems() << "' solver systems");
10037 return _solver_params[solver_sys_num];
10038}
virtual std::size_t numSolverSystems() const override

Referenced by NonlinearEigenSystem::attachPreconditioner(), SolverSystem::compute(), SlepcEigenSolverConfiguration::configure_solver(), EigenProblemSolve::EigenProblemSolve(), ExplicitTimeIntegrator::ExplicitTimeIntegrator(), FEProblemSolve::FEProblemSolve(), EigenProblem::init(), FEProblemBase::init(), ExplicitTimeIntegrator::init(), EigenProblemSolve::initialSetup(), EigenProblem::isNonlinearEigenvalueSolver(), Moose::SlepcSupport::mooseSlepcEigenFormFunctionA(), Moose::SlepcSupport::mooseSlepcEigenFormFunctionAB(), Moose::SlepcSupport::mooseSlepcEigenFormFunctionB(), Moose::SlepcSupport::mooseSlepcEigenFormJacobianA(), MooseStaticCondensationPreconditioner::MooseStaticCondensationPreconditioner(), ConsoleUtils::outputExecutionInformation(), PhysicsBasedPreconditioner::PhysicsBasedPreconditioner(), NonlinearSystem::residualAndJacobianTogether(), Moose::SlepcSupport::setEigenProblemSolverParams(), Moose::PetscSupport::setLineSearchFromParams(), Moose::PetscSupport::setMFFDTypeFromParams(), Moose::PetscSupport::setSinglePetscOption(), Moose::PetscSupport::setSolveTypeFromParams(), NonlinearSystemBase::shouldEvaluatePreSMOResidual(), SingleMatrixPreconditioner::SingleMatrixPreconditioner(), EigenProblem::solve(), FEProblemBase::solverParams(), FEProblemBase::solverTypeString(), EigenProblem::solverTypeString(), and Moose::SlepcSupport::storeSolveType().

◆ solverParams() [2/2]

const SolverParams & FEProblemBase::solverParams ( unsigned int  solver_sys_num = 0) const
inherited

const version

Definition at line 10041 of file FEProblemBase.C.

10042{
10043 return const_cast<FEProblemBase *>(this)->solverParams(solver_sys_num);
10044}

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

7533{
7534 std::istringstream ss(solver_sys_name);
7535 unsigned int solver_sys_num;
7536 if (!(ss >> solver_sys_num) || !ss.eof())
7537 {
7538 const auto & search = _solver_sys_name_to_num.find(solver_sys_name);
7539 if (search == _solver_sys_name_to_num.end())
7540 mooseError("The solver system number was requested for system '" + solver_sys_name,
7541 "' but this system does not exist in the Problem. Systems can be added to the "
7542 "problem using the 'nl_sys_names'/'linear_sys_names' parameter.\nSystems in the "
7543 "Problem: " +
7545 solver_sys_num = search->second;
7546 }
7547
7548 return solver_sys_num;
7549}
std::map< SolverSystemName, unsigned int > _solver_sys_name_to_num
Map connecting solver system names with their respective systems.

Referenced by FEProblemBase::addVariable(), FEProblemBase::getSystemBase(), PhysicsBase::initializePhysics(), MultiSystemSolveObject::MultiSystemSolveObject(), and DisplacedProblem::solverSysNum().

◆ solverSystemConverged()

bool FEProblemBase::solverSystemConverged ( const unsigned int  sys_num)
overridevirtualinherited
Returns
whether the given solver system sys_num is converged

Reimplemented from SubProblem.

Reimplemented in EigenProblem.

Definition at line 7764 of file FEProblemBase.C.

7765{
7766 if (_solve)
7767 return _solver_systems[sys_num]->converged();
7768 else
7769 return true;
7770}

◆ solverTypeString()

std::string MFEMProblem::solverTypeString ( unsigned int  solver_sys_num)
overridevirtualinherited

Return solver type as a human readable string.

Reimplemented from FEProblemBase.

Definition at line 905 of file MFEMProblem.C.

906{
907 mooseAssert(solver_sys_num == 0, "All mfem systems must use the same solver right now.");
908
909 std::vector<std::string> solvers;
910
911 if (const auto * ns = getProblemData().nonlinear_solver.get())
912 solvers.push_back(MooseUtils::prettyCppType(ns));
913
914 if (const auto * js = getProblemData().jacobian_solver.get())
915 {
916 solvers.push_back(MooseUtils::prettyCppType(js));
917 if (const std::string * pc = js->queryParam<MFEMSolverName>("preconditioner"))
918 solvers.push_back(MooseUtils::prettyCppType(
919 &getMFEMObject<Moose::MFEM::LinearSolverBase>("Moose::MFEM::SolverBase", *pc)));
920 }
921
922 return solvers.empty() ? "None" : MooseUtils::stringJoin(solvers);
923}
std::string prettyCppType(const std::string &cpp_type)
std::string stringJoin(const std::vector< std::string > &values, const std::string &separator=" ")
Concatenates value into a single string separated by separator.

◆ startedInitialSetup()

virtual bool FEProblemBase::startedInitialSetup ( )
inlinevirtualinherited

Returns true if we are in or beyond the initialSetup stage.

Definition at line 569 of file FEProblemBase.h.

569{ return _started_initial_setup; }
bool _started_initial_setup
At or beyond initialSteup stage.

Referenced by MaterialBase::checkExecutionStage(), MaterialPropertyInterface::checkExecutionStage(), and NEML2ModelExecutor::checkExecutionStage().

◆ storeBoundaryDelayedCheckMatProp()

void SubProblem::storeBoundaryDelayedCheckMatProp ( const std::string &  requestor,
BoundaryID  boundary_id,
const std::string &  name 
)
virtualinherited

Adds to a map based on boundary ids of material properties to validate.

Parameters
requestorThe MOOSE object name requesting the material property
boundary_idThe block id for the MaterialProperty
nameThe name of the property

Definition at line 607 of file SubProblem.C.

610{
611 _map_boundary_material_props_check[boundary_id].insert(std::make_pair(requestor, name));
612}

Referenced by MaterialPropertyInterface::checkMaterialProperty().

◆ storeBoundaryMatPropName()

void SubProblem::storeBoundaryMatPropName ( BoundaryID  boundary_id,
const std::string &  name 
)
virtualinherited

Adds the given material property to a storage map based on boundary ids.

This is method is called from within the Material class when the property is first registered.

Parameters
boundary_idThe block id for the MaterialProperty
nameThe name of the property

Definition at line 581 of file SubProblem.C.

582{
583 _map_boundary_material_props[boundary_id].insert(name);
584}

Referenced by MaterialBase::registerPropName().

◆ storeBoundaryZeroMatProp()

void SubProblem::storeBoundaryZeroMatProp ( BoundaryID  boundary_id,
const MaterialPropertyName &  name 
)
virtualinherited

Adds to a map based on boundary ids of material properties for which a zero value can be returned.

Thes properties are optional and will not trigger a missing material property error.

Parameters
boundary_idThe block id for the MaterialProperty
nameThe name of the property

Definition at line 593 of file SubProblem.C.

594{
595 _zero_boundary_material_props[boundary_id].insert(name);
596}

Referenced by MaterialBase::storeBoundaryZeroMatProp().

◆ storeSubdomainDelayedCheckMatProp()

void SubProblem::storeSubdomainDelayedCheckMatProp ( const std::string &  requestor,
SubdomainID  block_id,
const std::string &  name 
)
virtualinherited

Adds to a map based on block ids of material properties to validate.

Parameters
block_idThe block id for the MaterialProperty
nameThe name of the property

Definition at line 599 of file SubProblem.C.

602{
603 _map_block_material_props_check[block_id].insert(std::make_pair(requestor, name));
604}

Referenced by MaterialPropertyInterface::checkMaterialProperty().

◆ storeSubdomainMatPropName()

void SubProblem::storeSubdomainMatPropName ( SubdomainID  block_id,
const std::string &  name 
)
virtualinherited

Adds the given material property to a storage map based on block ids.

This is method is called from within the Material class when the property is first registered.

Parameters
block_idThe block id for the MaterialProperty
nameThe name of the property

Definition at line 575 of file SubProblem.C.

576{
577 _map_block_material_props[block_id].insert(name);
578}

Referenced by MaterialBase::registerPropName().

◆ storeSubdomainZeroMatProp()

void SubProblem::storeSubdomainZeroMatProp ( SubdomainID  block_id,
const MaterialPropertyName &  name 
)
virtualinherited

Adds to a map based on block ids of material properties for which a zero value can be returned.

Thes properties are optional and will not trigger a missing material property error.

Parameters
block_idThe block id for the MaterialProperty
nameThe name of the property

Definition at line 587 of file SubProblem.C.

588{
589 _zero_block_material_props[block_id].insert(name);
590}

Referenced by MaterialBase::storeSubdomainZeroMatProp().

◆ subdomainSetup()

void FEProblemBase::subdomainSetup ( SubdomainID  subdomain,
const THREAD_ID  tid 
)
virtualinherited

Definition at line 2878 of file FEProblemBase.C.

2879{
2880 _all_materials.subdomainSetup(subdomain, tid);
2881 // Call the subdomain methods of the output system, these are not threaded so only call it once
2882 if (tid == 0)
2884
2885 for (auto & nl : _nl)
2886 nl->subdomainSetup(subdomain, tid);
2887
2888 // FIXME: call displaced_problem->subdomainSetup() ?
2889 // When adding possibility with materials being evaluated on displaced mesh
2890}
virtual void subdomainSetup(THREAD_ID tid=0) const override
void subdomainSetup()
Calls the subdomainSetup function for each of the output objects.

Referenced by ThreadedFaceLoop< RangeType >::subdomainChanged(), ComputeDiracThread::subdomainChanged(), ComputeIndicatorThread::subdomainChanged(), ComputeMarkerThread::subdomainChanged(), ComputeMaterialsObjectThread::subdomainChanged(), ComputeUserObjectsThread::subdomainChanged(), and NonlinearThread::subdomainChanged().

◆ subspaceDim()

unsigned int FEProblemBase::subspaceDim ( const std::string &  prefix) const
inlineinherited

Dimension of the subspace spanned by vectors with a given prefix.

Parameters
prefixPrefix of the vectors spanning the subspace.

Definition at line 2372 of file FEProblemBase.h.

2373 {
2374 if (_subspace_dim.count(prefix))
2375 return _subspace_dim.find(prefix)->second;
2376 else
2377 return 0;
2378 }

Referenced by FEProblemBase::computeNearNullSpace(), FEProblemBase::computeNullSpace(), and FEProblemBase::computeTransposeNullSpace().

◆ swapBackMaterials()

void FEProblemBase::swapBackMaterials ( const THREAD_ID  tid)
virtualinherited

Definition at line 4778 of file FEProblemBase.C.

4779{
4780 auto && elem = _assembly[tid][0]->elem();
4782}
void swapBack(const Elem &elem, unsigned int side=0)
material properties for given element (and possible side)

Referenced by NodalPatchRecovery::compute(), LineMaterialSamplerBase< T >::execute(), ComputeElemAuxVarsThread< AuxKernelType >::onElement(), ComputeIndicatorThread::onElement(), ComputeMarkerThread::onElement(), ComputeUserObjectsThread::onElement(), and NonlinearThread::onElement().

◆ swapBackMaterialsFace()

void FEProblemBase::swapBackMaterialsFace ( const THREAD_ID  tid)
virtualinherited

◆ swapBackMaterialsNeighbor()

void FEProblemBase::swapBackMaterialsNeighbor ( const THREAD_ID  tid)
virtualinherited

Definition at line 4793 of file FEProblemBase.C.

4794{
4795 // NOTE: this will not work with h-adaptivity
4796 const Elem * neighbor = _assembly[tid][0]->neighbor();
4797 unsigned int neighbor_side =
4798 neighbor ? neighbor->which_neighbor_am_i(_assembly[tid][0]->elem()) : libMesh::invalid_uint;
4799
4800 if (!neighbor)
4801 {
4802 if (haveFV())
4803 {
4804 // If neighbor is null, then we're on the neighbor side of a mesh boundary, e.g. we're off
4805 // the mesh in ghost-land. If we're using the finite volume method, then variable values and
4806 // consequently material properties have well-defined values in this ghost region outside of
4807 // the mesh and we really do want to reinit our neighbor materials in this case. Since we're
4808 // off in ghost land it's safe to do swaps with `MaterialPropertyStorage` using the elem and
4809 // elem_side keys
4810 neighbor = _assembly[tid][0]->elem();
4811 neighbor_side = _assembly[tid][0]->side();
4812 mooseAssert(neighbor, "We should have an appropriate value for elem coming from Assembly");
4813 }
4814 else
4815 mooseError("neighbor is null in Assembly!");
4816 }
4817
4818 _neighbor_material_props.getMaterialData(tid).swapBack(*neighbor, neighbor_side);
4819}

Referenced by ComputeUserObjectsThread::onInterface(), NonlinearThread::onInterface(), NonlinearThread::onInterfaceWithHRefinementMismatch(), ComputeIndicatorThread::onInternalSide(), ComputeUserObjectsThread::onInternalSide(), NonlinearThread::onInternalSide(), and ComputeElemAuxBcsThread< AuxKernelType >::operator()().

◆ syncSolutions()

virtual void MFEMProblem::syncSolutions ( Direction  direction)
inlineoverridevirtualinherited

Method to transfer data to/from the external application to the associated transfer mesh.

Implements ExternalProblem.

Definition at line 52 of file MFEMProblem.h.

52{}

◆ systemBaseAuxiliary() [1/2]

const SystemBase & FEProblemBase::systemBaseAuxiliary ( ) const
overridevirtualinherited

Return the auxiliary system object as a base class reference.

Implements SubProblem.

Definition at line 10382 of file FEProblemBase.C.

10383{
10384 return *_aux;
10385}

Referenced by PhysicsBase::copyVariablesFromMesh(), and MFEMProblem::getAuxVariableNames().

◆ systemBaseAuxiliary() [2/2]

SystemBase & FEProblemBase::systemBaseAuxiliary ( )
overridevirtualinherited

Implements SubProblem.

Definition at line 10388 of file FEProblemBase.C.

10389{
10390 return *_aux;
10391}

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

10351{
10352 mooseAssert(sys_num < _linear_systems.size(),
10353 "System number greater than the number of linear systems");
10354 return *_linear_systems[sys_num];
10355}

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

10359{
10360 mooseAssert(sys_num < _linear_systems.size(),
10361 "System number greater than the number of linear systems");
10362 return *_linear_systems[sys_num];
10363}

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

10337{
10338 mooseAssert(sys_num < _nl.size(), "System number greater than the number of nonlinear systems");
10339 return *_nl[sys_num];
10340}

◆ systemBaseNonlinear() [2/2]

SystemBase & FEProblemBase::systemBaseNonlinear ( const unsigned int  sys_num)
overridevirtualinherited

Implements SubProblem.

Definition at line 10343 of file FEProblemBase.C.

10344{
10345 mooseAssert(sys_num < _nl.size(), "System number greater than the number of nonlinear systems");
10346 return *_nl[sys_num];
10347}

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

10367{
10368 mooseAssert(sys_num < _solver_systems.size(),
10369 "System number greater than the number of solver systems");
10370 return *_solver_systems[sys_num];
10371}

◆ systemBaseSolver() [2/2]

SystemBase & FEProblemBase::systemBaseSolver ( const unsigned int  sys_num)
overridevirtualinherited

Implements SubProblem.

Definition at line 10374 of file FEProblemBase.C.

10375{
10376 mooseAssert(sys_num < _solver_systems.size(),
10377 "System number greater than the number of solver systems");
10378 return *_solver_systems[sys_num];
10379}

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

7553{
7554 for (const auto & solver_sys : _solver_systems)
7555 if (solver_sys->hasVariable(variable_name))
7556 return solver_sys->number();
7557 mooseAssert(_aux, "Should have an auxiliary system");
7558 if (_aux->hasVariable(variable_name))
7559 return _aux->number();
7560
7561 mooseError("Variable '",
7562 variable_name,
7563 "' was not found in any solver (nonlinear/linear) or auxiliary system");
7564}

Referenced by FEProblemBase::projectFunctionOnCustomRange(), and ElementSubdomainModifierBase::restoreOverriddenDofValues().

◆ terminateSolve()

virtual void Problem::terminateSolve ( )
inlinevirtualinherited

Allow objects to request clean termination of the solve.

Definition at line 37 of file Problem.h.

37{ _termination_requested = true; };

Referenced by Terminator::execute(), WebServerControl::execute(), and TerminateChainControl::terminate().

◆ theWarehouse()

TheWarehouse & FEProblemBase::theWarehouse ( ) const
inlineinherited

Definition at line 2678 of file FEProblemBase.h.

2678{ return _app.theWarehouse(); }
TheWarehouse & theWarehouse()
Definition MooseApp.h:140

Referenced by NonlinearSystemBase::addBoundaryCondition(), NonlinearSystemBase::addDGKernel(), NonlinearSystemBase::addDiracKernel(), FEProblemBase::addFVGradientMethod(), FEProblemBase::addFVInterpolationMethod(), NonlinearSystemBase::addHDGKernel(), NonlinearSystemBase::addInterfaceKernel(), NonlinearSystemBase::addKernel(), NonlinearSystemBase::addNodalKernel(), FEProblemBase::addObject(), NonlinearSystemBase::addScalarKernel(), NonlinearSystemBase::addSplit(), FEProblemBase::addUserObject(), FEProblemBase::checkGradientMethods(), NonlinearSystemBase::checkKernelCoverage(), FEProblemBase::checkUserObjectJacobianRequirement(), FEProblemBase::checkUserObjects(), NonlinearSystemBase::computeJacobianInternal(), ComputeJacobianThread::computeOnInternalFace(), NonlinearSystemBase::computeResidualAndJacobianInternal(), NonlinearSystemBase::computeResidualInternal(), LinearSystem::containsTimeKernel(), FEProblemBase::customSetup(), ComputeResidualAndJacobianThread::determineObjectWarehouses(), ComputeResidualThread::determineObjectWarehouses(), MFEMProblem::executeMFEMObjects(), FEProblemBase::executeSamplers(), ComputeLinearFVElementalThread::fetchBlockSystemContributionObjects(), ComputeLinearFVFaceThread::fetchBlockSystemContributionObjects(), FEProblemBase::getDistribution(), FEProblemBase::getFVGradientMethod(), FEProblemBase::getFVInterpolationMethod(), NonlinearSystemBase::getFVSetupObjects(), FEProblemBase::getKokkosUserObject(), MFEMProblem::getMFEMObject(), FEProblemBase::getMortarUserObjects(), FEProblemBase::getPositionsObject(), FEProblemBase::getPostprocessorObjectByName(), FEProblemBase::getSampler(), CompositionDT::getTimeSteppers(), FEProblemBase::getUOQuery(), FEProblemBase::getUserObject(), FEProblemBase::getUserObjectBase(), FEProblemBase::getVectorPostprocessorObjectByName(), FEProblemBase::hasDistribution(), FEProblemBase::hasFVGradientMethod(), FEProblemBase::hasFVInterpolationMethod(), MFEMProblem::hasMFEMObject(), FEProblemBase::hasUserObject(), VectorPostprocessorInterface::hasVectorPostprocessorByName(), MFEMProblem::initialSetup(), BoundaryLinearFVFluxIntegral::initialSetup(), SideFVFluxBCIntegral::initialSetup(), LinearSystem::initialSetup(), ExplicitTimeIntegrator::initialSetup(), AdvancedOutput::initPostprocessorOrVectorPostprocessorLists(), FEProblemBase::needBoundaryMaterialOnSide(), FEProblemBase::needInterfaceMaterialOnSide(), FEProblemBase::needInternalNeighborSideMaterial(), JSONOutput::outputReporters(), BlockRestrictionDebugOutput::printBlockRestrictionGroups(), BlockRestrictionDebugOutput::printBlockRestrictionMap(), BlockRestrictionDebugOutput::printBoundaryRestrictionGroups(), MFEMProblem::setEquationSystems(), MFEMProblem::setProblemOperators(), ComputeLinearFVElementalThread::setupSystemContributionObjects(), ComputeLinearFVFaceThread::setupSystemContributionObjects(), and FEProblemBase::timestepSetup().

◆ time()

virtual Real & FEProblemBase::time ( ) const
inlinevirtualinherited

◆ timedSectionName()

std::string PerfGraphInterface::timedSectionName ( const std::string &  section_name) const
protectedinherited
Returns
The name of the timed section with the name section_name.

Optionally adds a prefix if one is defined.

Definition at line 55 of file PerfGraphInterface.C.

56{
57 return _prefix.empty() ? section_name : _prefix + "::" + section_name;
58}
const std::string _prefix
A prefix to use for all sections.

Referenced by PerfGraphInterface::registerTimedSection(), and PerfGraphInterface::registerTimedSection().

◆ timeOld()

virtual Real & FEProblemBase::timeOld ( ) const
inlinevirtualinherited

◆ timeOlder()

virtual Real & FEProblemBase::timeOlder ( ) const
inlinevirtualinherited

The time two steps back.

The solution keeps this state, so a multi-step integrator can ask for it, and a functor evaluated alongside that solution has to be able to ask for the time it belongs to. Only meaningful once two steps have been taken; before that it holds the start time, which is what timeOld() does at the first step too.

Definition at line 582 of file FEProblemBase.h.

582{ return _time_older; }

Referenced by FEProblemBase::getTimeFromStateArg().

◆ timeStep()

virtual int & FEProblemBase::timeStep ( ) const
inlinevirtualinherited

◆ timestepSetup()

void FEProblemBase::timestepSetup ( )
overridevirtualinherited

Reimplemented from SubProblem.

Definition at line 1877 of file FEProblemBase.C.

1878{
1880
1881 if (_t_step > 1 && _num_grid_steps)
1882 {
1883 libMesh::MeshRefinement mesh_refinement(_mesh);
1884 std::unique_ptr<libMesh::MeshRefinement> displaced_mesh_refinement(nullptr);
1885 if (_displaced_mesh)
1886 displaced_mesh_refinement = std::make_unique<libMesh::MeshRefinement>(*_displaced_mesh);
1887
1888 for (MooseIndex(_num_grid_steps) i = 0; i < _num_grid_steps; ++i)
1889 {
1891 // If the DisplacedProblem is active, undisplace the DisplacedMesh in preparation for
1892 // refinement. We can't safely refine the DisplacedMesh directly, since the Hilbert keys
1893 // computed on the inconsistenly-displaced Mesh are different on different processors,
1894 // leading to inconsistent Hilbert keys. We must do this before the undisplaced Mesh is
1895 // coarsensed, so that the element and node numbering is still consistent. We also have to
1896 // make sure this is done during every step of coarsening otherwise different partitions
1897 // will be generated for the reference and displaced meshes (even for replicated)
1898 _displaced_problem->undisplaceMesh();
1899
1900 mesh_refinement.uniformly_coarsen();
1901 if (_displaced_mesh)
1902 displaced_mesh_refinement->uniformly_coarsen();
1903
1904 // Mark this as an intermediate change because we do not yet want to reinit_systems. E.g. we
1905 // need things to happen in the following order for the undisplaced problem:
1906 // u1) EquationSystems::reinit_solutions. This will restrict the solution vectors and then
1907 // contract the mesh
1908 // u2) MooseMesh::meshChanged. This will update the node/side lists and other
1909 // things which needs to happen after the contraction
1910 // u3) GeometricSearchData::reinit. Once the node/side lists are updated we can perform our
1911 // geometric searches which will aid in determining sparsity patterns
1912 //
1913 // We do these things for the displaced problem (if it exists)
1914 // d1) EquationSystems::reinit. Restrict the displaced problem vector copies and then contract
1915 // the mesh. It's safe to do a full reinit with the displaced because there are no
1916 // matrices that sparsity pattern calculations will be conducted for
1917 // d2) MooseMesh::meshChanged. This will update the node/side lists and other
1918 // things which needs to happen after the contraction
1919 // d3) UpdateDisplacedMeshThread::operator(). Re-displace the mesh using the *displaced*
1920 // solution vector copy because we don't know the state of the reference solution vector.
1921 // It's safe to use the displaced copy because we are outside of a non-linear solve,
1922 // and there is no concern about differences between solution and current_local_solution
1923 // d4) GeometricSearchData::reinit. With the node/side lists updated and the mesh
1924 // re-displaced, we can perform our geometric searches, which will aid in determining the
1925 // sparsity pattern of the matrix held by the libMesh::ImplicitSystem held by the
1926 // NonlinearSystem held by this
1928 /*intermediate_change=*/true, /*contract_mesh=*/true, /*clean_refinement_flags=*/true);
1929 }
1930
1931 // u4) Now that all the geometric searches have been done (both undisplaced and displaced),
1932 // we're ready to update the sparsity pattern
1933 es().reinit_systems();
1934 }
1935
1937 if (_line_search)
1938 _line_search->timestepSetup();
1939
1940 // Random interface objects
1941 for (const auto & it : _random_data_objects)
1942 it.second->updateSeeds(EXEC_TIMESTEP_BEGIN);
1943
1944 unsigned int n_threads = numThreads();
1945 for (THREAD_ID tid = 0; tid < n_threads; tid++)
1946 {
1949 }
1950
1951#ifdef MOOSE_KOKKOS_ENABLED
1953#endif
1954
1955 _aux->timestepSetup();
1956 for (auto & sys : _solver_systems)
1957 sys->timestepSetup();
1958
1960 // timestepSetup for displaced systems
1961 _displaced_problem->timestepSetup();
1962
1963 for (THREAD_ID tid = 0; tid < n_threads; tid++)
1964 {
1968 }
1969
1970 std::vector<UserObject *> userobjs;
1971 theWarehouse().query().condition<AttribSystem>("UserObject").queryIntoUnsorted(userobjs);
1972 for (auto obj : userobjs)
1973 obj->timestepSetup();
1974
1975#ifdef MOOSE_KOKKOS_ENABLED
1976 {
1977 std::vector<UserObjectBase *> userobjs;
1978 theWarehouse().query().condition<AttribSystem>("KokkosUserObject").queryIntoUnsorted(userobjs);
1979 for (auto obj : userobjs)
1980 obj->timestepSetup();
1981 }
1982#endif
1983
1984 // Timestep setup of output objects
1986
1990}
virtual void timestepSetup(THREAD_ID tid=0) const override
virtual void timestepSetup(THREAD_ID tid=0) const
void timestepSetup()
Calls the timestepSetup function for each of the output objects.
virtual void timestepSetup()

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

◆ transient()

virtual void FEProblemBase::transient ( bool  trans)
inlinevirtualinherited

Definition at line 591 of file FEProblemBase.h.

591{ _transient = trans; }

Referenced by EigenExecutionerBase::EigenExecutionerBase(), and TransientBase::TransientBase().

◆ translateCaughtException()

void FEProblemBase::translateCaughtException ( const std::string &  calling_method)
privateinherited

Classify the exception currently being handled and register its message with setException(), or error if the exception cannot be recovered from.

Must be called from within a catch block. This does not communicate, so every rank must subsequently call checkExceptionAndStopSolve(). A MooseHandledException has already been communicated and is rethrown unchanged.

Definition at line 8370 of file FEProblemBase.C.

8371{
8372 auto create_exception_message =
8373 [&calling_method](const std::string & exception_type, const auto & exception)
8374 {
8375 return std::string("A " + exception_type + " was raised during FEProblemBase::" +
8376 calling_method + "\n" + std::string(exception.what()));
8377 };
8378
8379 try
8380 {
8381 throw;
8382 }
8383 catch (const MooseHandledException &)
8384 {
8385 // Already communicated to all processes and the solve has been stopped
8386 throw;
8387 }
8388 catch (const MooseException & e)
8389 {
8390 setException(create_exception_message("MooseException", e));
8391 }
8392 catch (const MetaPhysicL::LogicError & e)
8393 {
8395 }
8396 catch (const libMesh::PetscSolverException & e)
8397 {
8398 // One PETSc solver exception that we cannot currently recover from are new nonzero errors. In
8399 // particular I have observed the following scenario in a parallel test:
8400 // - Both processes throw because of a new nonzero during MOOSE's computeJacobianTags
8401 // - We potentially handle the exceptions nicely here
8402 // - When the matrix is closed in libMesh's libmesh_petsc_snes_solver, there is a new nonzero
8403 // throw which we do not catch here in MOOSE and the simulation terminates. This only appears
8404 // in parallel (and not all the time; a test I was examining threw with distributed mesh, but
8405 // not with replicated). In serial there are no new throws from libmesh_petsc_snes_solver.
8406 // So for uniformity of behavior across serial/parallel, we will choose to abort here and always
8407 // produce a non-zero exit code
8408 mooseError(create_exception_message("libMesh::PetscSolverException", e));
8409 }
8410 catch (const std::exception & e)
8411 {
8412 // This might be libMesh detecting a degenerate Jacobian or matrix
8413 if (strstr(e.what(), "Jacobian") || strstr(e.what(), "singular") ||
8414 strstr(e.what(), "det != 0"))
8415 setException(create_exception_message("libMesh DegenerateMap", e));
8416 else
8417 {
8418 const auto message = create_exception_message("std::exception", e);
8420 mooseError(message);
8421 else
8422 setException(message);
8423 }
8424 }
8425}
virtual void setException(const std::string &message)
Set an exception, which is stored at this point by toggling a member variable in this class,...
const bool _regard_general_exceptions_as_errors
If we catch an exception during residual/Jacobian evaluaton for which we don't have specific handling...
void translateMetaPhysicLError(const MetaPhysicL::LogicError &)
emit a relatively clear error message when we catch a MetaPhysicL logic error
Definition MooseError.C:153

Referenced by FEProblemBase::handleException(), and FEProblemBase::translateUserObjectExceptions().

◆ translateUserObjectExceptions()

void FEProblemBase::translateUserObjectExceptions ( const std::function< void()> &  work)
privateinherited

Execute work, user object computations local to this process, and register any exception it raises with translateCaughtException() instead of letting it propagate, so that this process does not skip communication entered by the other processes.

Every process must subsequently call checkExceptionAndStopSolve().

Definition at line 8435 of file FEProblemBase.C.

8436{
8437 try
8438 {
8439 work();
8440 }
8441 catch (...)
8442 {
8443 translateCaughtException("computeUserObjectsInternal");
8444 }
8445}

Referenced by FEProblemBase::computeUserObjectsInternal(), and FEProblemBase::joinAndFinalize().

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

7272{
7274 mooseError("Someone told us (the FEProblemBase) to trust the user coupling matrix, but we "
7275 "haven't been provided a coupling matrix!");
7276
7278}

Referenced by SingleMatrixPreconditioner::SingleMatrixPreconditioner().

◆ type()

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

Get the type of this class.

Returns
the name of the type of this class

Definition at line 93 of file MooseBase.h.

94 {
95 mooseAssert(_type.size(), "Empty type");
96 return _type;
97 }

Referenced by CreateProblemDefaultAction::act(), MaterialOutputAction::act(), SetupDebugAction::act(), FEProblemBase::addAuxArrayVariable(), FEProblemBase::addAuxScalarVariable(), FEProblemBase::addConvergence(), MFEMProblem::addDefaultProblemComposer(), MFEMProblem::addDefaultWeakForm(), FEProblemBase::addDistribution(), DistributedRectilinearMeshGenerator::addElement(), DistributedRectilinearMeshGenerator::addElement(), MooseApp::addExecutor(), MooseApp::addExecutorParams(), MFEMProblem::addFESpace(), MFEMProblem::addFESpaceHierarchy(), FEProblemBase::addFunction(), MFEMProblem::addFunction(), FEProblemBase::addMeshDivision(), MooseApp::addMeshGenerator(), MeshGenerator::addMeshSubgenerator(), MeshGenerator::addMeshSubgenerator(), MFEMProblem::addObject(), FEProblemBase::addObject(), DistributedRectilinearMeshGenerator::addPoint(), MFEMProblem::addPostprocessor(), FEProblemBase::addPredictor(), CreateDisplacedProblemAction::addProxyRelationshipManagers(), FEProblemBase::addReporter(), FEProblemBase::addSampler(), WebServerControl::addServerActionsInternal(), FEProblemBase::addTimeIntegrator(), MFEMProblem::addVectorPostprocessor(), SubProblem::addVectorTag(), DisplacedProblem::addVectorTag(), FEProblemBase::advanceMultiApps(), MooseApp::appendMeshGenerator(), AuxKernelBase::AuxKernelBase(), FEProblemBase::backupMultiApps(), BatchMeshGeneratorAction::BatchMeshGeneratorAction(), BoundaryPreservedMarker::BoundaryPreservedMarker(), DistributedRectilinearMeshGenerator::buildCube(), MooseMesh::buildHRefinementAndCoarseningMaps(), MooseMesh::buildLowerDMesh(), MooseMesh::buildPRefinementAndCoarseningMaps(), PhysicsBase::checkComponentType(), MeshGenerator::checkGetMesh(), MeshDiagnosticsGenerator::checkNonConformalMeshFromAdaptivity(), ActionComponent::checkRequiredTasks(), PhysicsBase::checkRequiredTasks(), FEProblemBase::checkUserObjectNameCollision(), MFEMMultiAppTransfer::checkValidTransferProblemTypes(), MeshInfo::CombinedInfos< ElemInfoMap, ElemInfoItems >::CombinedInfos(), ElemElemConstraint::computeElemNeighJacobian(), ArrayDGKernel::computeElemNeighJacobian(), DGKernel::computeElemNeighJacobian(), ADDGKernel::computeElemNeighJacobian(), ElemElemConstraint::computeElemNeighResidual(), ArrayDGKernel::computeElemNeighResidual(), DGKernel::computeElemNeighResidual(), ADDGKernel::computeElemNeighResidual(), ArrayDGLowerDKernel::computeLowerDJacobian(), DGLowerDKernel::computeLowerDJacobian(), ArrayLowerDIntegratedBC::computeLowerDJacobian(), LowerDIntegratedBC::computeLowerDJacobian(), ArrayLowerDIntegratedBC::computeLowerDOffDiagJacobian(), LowerDIntegratedBC::computeLowerDOffDiagJacobian(), ArrayHFEMDirichletBC::computeLowerDQpJacobian(), HFEMDirichletBC::computeLowerDQpJacobian(), ArrayHFEMDiffusion::computeLowerDQpJacobian(), HFEMDiffusion::computeLowerDQpJacobian(), ArrayLowerDIntegratedBC::computeLowerDQpOffDiagJacobian(), ArrayDGLowerDKernel::computeLowerDQpOffDiagJacobian(), ArrayHFEMDirichletBC::computeLowerDQpOffDiagJacobian(), HFEMDirichletBC::computeLowerDQpOffDiagJacobian(), FEProblemBase::computeMultiAppsDT(), ArrayDGKernel::computeOffDiagElemNeighJacobian(), DGKernel::computeOffDiagElemNeighJacobian(), ADDGKernel::computeOffDiagElemNeighJacobian(), ArrayDGLowerDKernel::computeOffDiagLowerDJacobian(), DGLowerDKernel::computeOffDiagLowerDJacobian(), ScalarKernel::computeQpJacobian(), CoupledTiedValueConstraint::computeQpJacobian(), EqualValueBoundaryConstraint::computeQpJacobian(), LinearNodalConstraint::computeQpJacobian(), TiedValueConstraint::computeQpJacobian(), DGConvection::computeQpJacobian(), ArrayDGDiffusion::computeQpJacobian(), DGDiffusion::computeQpJacobian(), InterfaceDiffusion::computeQpJacobian(), InterfaceReaction::computeQpJacobian(), CoupledTiedValueConstraint::computeQpOffDiagJacobian(), ArrayDGKernel::computeQpOffDiagJacobian(), HFEMTestJump::computeQpOffDiagJacobian(), HFEMTrialJump::computeQpOffDiagJacobian(), ScalarKernel::computeQpResidual(), CoupledTiedValueConstraint::computeQpResidual(), EqualValueBoundaryConstraint::computeQpResidual(), LinearNodalConstraint::computeQpResidual(), TiedValueConstraint::computeQpResidual(), DGConvection::computeQpResidual(), ADDGAdvection::computeQpResidual(), ADDGDiffusion::computeQpResidual(), DGDiffusion::computeQpResidual(), HFEMDiffusion::computeQpResidual(), HFEMTestJump::computeQpResidual(), HFEMTrialJump::computeQpResidual(), ADMatInterfaceReaction::computeQpResidual(), InterfaceDiffusion::computeQpResidual(), InterfaceReaction::computeQpResidual(), ArrayDGDiffusion::computeQpResidual(), ArrayHFEMDiffusion::computeQpResidual(), FEProblemBase::computeSystems(), FEProblemBase::computeUserObjectByName(), FEProblemBase::computeUserObjects(), FEProblemBase::computeUserObjectsInternal(), FEProblemBase::createQRules(), DisplacedProblem::createQRules(), MooseApp::createRecoverablePerfGraph(), MoveBoundaryNodesToCurveGenerator::curveGenerator(), MeshGenerator::declareMeshProperty(), DumpObjectsProblem::deduceNecessaryParameters(), DumpObjectsProblem::dumpObjectHelper(), FEProblemBase::duplicateVariableCheck(), FEProblemBase::execMultiAppTransfers(), SteadyBase::execute(), WebServerControl::execute(), ActionWarehouse::executeActionsWithAction(), FEProblemBase::finishMultiAppStep(), FVScalarLagrangeMultiplierInterface::FVScalarLagrangeMultiplierInterface(), SubdomainPerElementGenerator::generate(), PatternedMeshGenerator::generate(), MeshGenerator::generateInternal(), MeshGenerator::generateInternalCSG(), MultiAppTransfer::getAppInfo(), TransfiniteMeshGenerator::getEdge(), ElementGenerator::getElemType(), FEProblemBase::getMaterial(), FEProblemBase::getMaterialData(), FEProblemBase::getMaterialPropertyStorageConsumers(), MaterialOutputAction::getParams(), ReporterData::getReporterInfo(), MooseServer::getSyntaxMetadata(), FEProblemBase::getTransfers(), FEProblemBase::getUOQuery(), SubProblem::getVectorTags(), DisplacedProblem::getVectorTags(), EqualValueBoundaryConstraint::ghostPrimary(), CommonOutputAction::hasConsole(), FEProblemBase::hasMultiApps(), AdvancedOutput::hasOutput(), FEProblemBase::incrementMultiAppTStep(), TimeIntegrator::init(), AdvancedOutput::initAvailableLists(), FunctorPositions::initialize(), FunctorTimes::initialize(), LinearFVAdvection::initialSetup(), LinearFVAnisotropicDiffusion::initialSetup(), LinearFVDiffusion::initialSetup(), MultiAppConservativeTransfer::initialSetup(), ArrayDGDiffusion::initQpResidual(), AdvancedOutput::initShowHideLists(), RelationshipManager::isType(), FEProblemBase::logAdd(), MaterialFunctorConverterTempl< T >::MaterialFunctorConverterTempl(), MooseApp::MooseApp(), MooseObject::MooseObject(), SubProblem::numVectorTags(), DisplacedProblem::numVectorTags(), AdvancedOutput::output(), Console::output(), ConsoleUtils::outputExecutionInformation(), Output::outputStep(), SampledOutput::outputStep(), FEProblemBase::outputStep(), MooseServer::parseDocumentForDiagnostics(), PointInUnionCheckUO::PointInUnionCheckUO(), MooseMesh::prepare(), MFEMFunctorMaterial::processLiterals(), ProjectedStatefulMaterialStorageAction::processProperty(), MooseApp::recursivelyCreateExecutors(), SolutionInvalidInterface::registerInvalidSolutionInternal(), FEProblemBase::restoreMultiApps(), MeshRepairGenerator::separateSubdomainsByElementType(), FEProblemBase::setCoupling(), MooseApp::setupOptions(), ExplicitRK2::solve(), ExplicitTVDRK2::solve(), Reporter::store(), MooseBase::typeAndName(), AuxScalarKernel::uOld(), ScalarKernelBase::uOld(), DisplacedProblem::updateGeomSearch(), FEProblemBase::updateGeomSearch(), UserObjectInterface::userObjectType(), and AdvancedOutput::wantOutput().

◆ typeAndName()

std::string MooseBase::typeAndName ( ) const
inherited

Get the class's combined type and name; useful in error handling.

Returns
The type and name of this class in the form '<type()> "<name()>"'.

Definition at line 57 of file MooseBase.C.

58{
59 return type() + std::string(" \"") + name() + std::string("\"");
60}

Referenced by MaterialPropertyStorage::addProperty(), FEProblemBase::checkUserObjectNameCollision(), MeshGeneratorSystem::dataDrivenError(), ReporterContext< T >::finalize(), ReporterData::getReporterInfo(), MFEMSamplerBase::initialSetup(), MFEMVariableSamplerBase::initialSetup(), WebServerControl::outputMessage(), and Action::timedAct().

◆ uDotDotOldRequested()

virtual bool FEProblemBase::uDotDotOldRequested ( )
inlinevirtualinherited

Get boolean flag to check whether old solution second time derivative needs to be stored.

Definition at line 2754 of file FEProblemBase.h.

2755 {
2757 mooseError("FEProblemBase: When requesting old second time derivative of solution, current "
2758 "second time derivation of solution should also be stored. Please set "
2759 "`u_dotdot_requested` to true using setUDotDotRequested.");
2761 }

Referenced by SystemBase::addDotVectors().

◆ uDotDotRequested()

virtual bool FEProblemBase::uDotDotRequested ( )
inlinevirtualinherited

Get boolean flag to check whether solution second time derivative needs to be stored.

Definition at line 2740 of file FEProblemBase.h.

2740{ return _u_dotdot_requested; }

Referenced by SystemBase::addDotVectors(), and FEProblemBase::addTimeIntegrator().

◆ uDotOldRequested()

virtual bool FEProblemBase::uDotOldRequested ( )
inlinevirtualinherited

Get boolean flag to check whether old solution time derivative needs to be stored.

Definition at line 2743 of file FEProblemBase.h.

2744 {
2746 mooseError("FEProblemBase: When requesting old time derivative of solution, current time "
2747 "derivative of solution should also be stored. Please set `u_dot_requested` to "
2748 "true using setUDotRequested.");
2749
2750 return _u_dot_old_requested;
2751 }

Referenced by SystemBase::addDotVectors().

◆ uDotRequested()

virtual bool FEProblemBase::uDotRequested ( )
inlinevirtualinherited

Get boolean flag to check whether solution time derivative needs to be stored.

Definition at line 2737 of file FEProblemBase.h.

2737{ return _u_dot_requested; }

Referenced by SystemBase::addDotVectors().

◆ uniformRefine()

void FEProblemBase::uniformRefine ( )
inherited

uniformly refine the problem mesh(es).

This will also prolong the the solution, and in order for that to be safe, we can only perform one refinement at a time

Definition at line 10412 of file FEProblemBase.C.

10413{
10414 // ResetDisplacedMeshThread::onNode looks up the reference mesh by ID, so we need to make sure
10415 // we undisplace before adapting the reference mesh
10417 _displaced_problem->undisplaceMesh();
10418
10422
10424 /*intermediate_change=*/false, /*contract_mesh=*/true, /*clean_refinement_flags=*/true);
10425}
static void uniformRefine(MooseMesh *mesh, unsigned int level=libMesh::invalid_uint)
Performs uniform refinement of the passed Mesh object.
Definition Adaptivity.C:301

Referenced by FEProblemSolve::solve().

◆ uniqueName()

MooseObjectName MooseBase::uniqueName ( ) const
inherited
Returns
The unique name for accessing input parameters of this object in the InputParameterWarehouse

Definition at line 69 of file MooseBase.C.

70{
71 if (!_pars.have_parameter<std::string>(unique_name_param))
72 mooseError("uniqueName(): Object does not have a unique name");
73 return MooseObjectName(_pars.get<std::string>(unique_name_param));
74}
static const std::string unique_name_param
The name of the parameter that contains the unique object name.
Definition MooseBase.h:57

Referenced by MooseBase::connectControllableParams(), and Action::uniqueActionName().

◆ uniqueParameterName()

MooseObjectParameterName MooseBase::uniqueParameterName ( const std::string &  parameter_name) const
inherited
Returns
The unique parameter name of a valid parameter of this object for accessing parameter controls

Definition at line 63 of file MooseBase.C.

64{
65 return MooseObjectParameterName(getBase(), name(), parameter_name);
66}
const std::string & getBase() const
Definition MooseBase.h:147

◆ updateActiveObjects()

void FEProblemBase::updateActiveObjects ( )
virtualinherited

Update the active objects in the warehouses.

Reimplemented in DumpObjectsProblem.

Definition at line 6057 of file FEProblemBase.C.

6058{
6059 TIME_SECTION("updateActiveObjects", 5, "Updating Active Objects");
6060
6061 for (THREAD_ID tid = 0; tid < numThreads(); ++tid)
6062 {
6063 for (auto & nl : _nl)
6064 nl->updateActive(tid);
6065 _aux->updateActive(tid);
6072 }
6073
6081
6082#ifdef MOOSE_KOKKOS_ENABLED
6084#endif
6085}
void updateActive(THREAD_ID tid=0) override
Updates the active objects storage.
ExecuteMooseObjectWarehouse< Transfer > _transfers
Normal Transfers.
virtual void updateActive(THREAD_ID tid=0) override
Update the active status of Kernels.
virtual void updateActive(THREAD_ID tid=0) override
Update the active status of Kernels.

Referenced by MooseEigenSystem::eigenKernelOnCurrent(), MooseEigenSystem::eigenKernelOnOld(), and FixedPointSolve::solveStep().

◆ updateFESpaces()

void MFEMProblem::updateFESpaces ( )
inherited

Calls Update() on all FE spaces.

Definition at line 796 of file MFEMProblem.C.

797{
798 for (const auto & fe_space_pair : _problem_data.fespaces)
799 fe_space_pair.second->Update();
800}

Referenced by MFEMRefinementMarker::hRefine(), and MFEMProblem::rebalanceMesh().

◆ updateGeomSearch()

void FEProblemBase::updateGeomSearch ( GeometricSearchData::GeometricSearchType  type = GeometricSearchData::ALL)
overridevirtualinherited

Update this object's geometric search data as well as the displaced problem's if it exists.

Implements SubProblem.

Definition at line 9102 of file FEProblemBase.C.

9103{
9104 TIME_SECTION("updateGeometricSearch", 3, "Updating Geometric Search");
9105
9107
9109 _displaced_problem->updateGeomSearch(type);
9110}
void update(GeometricSearchType type=ALL)
Update all of the search objects.

Referenced by NonlinearSystemBase::augmentSparsity().

◆ updateGridFunctions()

void MFEMProblem::updateGridFunctions ( )
inherited

Calls Update() on all gridfunctions.

Definition at line 803 of file MFEMProblem.C.

804{
805 for (const auto & gridfunction_pair : _problem_data.gridfunctions)
806 gridfunction_pair.second->Update();
807}

Referenced by MFEMRefinementMarker::hRefine(), MFEMRefinementMarker::pRefine(), and MFEMProblem::rebalanceMesh().

◆ updateMaxQps()

void FEProblemBase::updateMaxQps ( )
privateinherited

Definition at line 7139 of file FEProblemBase.C.

7140{
7141 // Find the maximum number of quadrature points
7142 {
7143 MaxQpsThread mqt(*this);
7145 _max_qps = mqt.max();
7146
7147 // If we have more shape functions or more quadrature points on
7148 // another processor, then we may need to handle those elements
7149 // ourselves later after repartitioning.
7151 }
7152
7153 unsigned int max_qpts = getMaxQps();
7154 if (max_qpts > Moose::constMaxQpsPerElem)
7155 mooseError("Max quadrature points per element assumptions made in some code (e.g. Coupleable ",
7156 "and MaterialPropertyInterface classes) have been violated.\n",
7157 "Complain to Moose developers to have constMaxQpsPerElem increased from ",
7159 " to ",
7160 max_qpts);
7161 for (unsigned int tid = 0; tid < numThreads(); ++tid)
7162 {
7163 // the highest available order in libMesh is 43
7164 _scalar_zero[tid].resize(libMesh::FORTYTHIRD, 0);
7165 _zero[tid].resize(max_qpts, 0);
7166 _ad_zero[tid].resize(max_qpts, 0);
7167 _grad_zero[tid].resize(max_qpts, RealGradient(0.));
7168 _ad_grad_zero[tid].resize(max_qpts, ADRealGradient(0));
7169 _second_zero[tid].resize(max_qpts, RealTensor(0.));
7170 _ad_second_zero[tid].resize(max_qpts, ADRealTensorValue(0));
7171 _vector_zero[tid].resize(max_qpts, RealGradient(0.));
7172 _vector_curl_zero[tid].resize(max_qpts, RealGradient(0.));
7173 }
7174}
libMesh::TensorValue< ADReal > ADRealTensorValue
Definition MooseTypes.h:414
ADRealVectorValue ADRealGradient
Definition MooseTypes.h:412
std::vector< MooseArray< ADRealVectorValue > > _ad_grad_zero
std::vector< MooseArray< ADRealTensorValue > > _ad_second_zero
std::vector< MooseArray< ADReal > > _ad_zero
This class determines the maximum number of Quadrature Points and Shape Functions used for a given si...
constexpr std::size_t constMaxQpsPerElem
This is used for places where we initialize some qp-sized data structures that would end up being siz...
Definition MooseTypes.h:258

Referenced by FEProblemBase::bumpAllQRuleOrder(), FEProblemBase::bumpVolumeQRuleOrder(), and FEProblemBase::createQRules().

◆ updateMeshXFEM()

bool FEProblemBase::updateMeshXFEM ( )
virtualinherited

Update the mesh due to changing XFEM cuts.

Definition at line 9384 of file FEProblemBase.C.

9385{
9386 TIME_SECTION("updateMeshXFEM", 5, "Updating XFEM");
9387
9388 bool updated = false;
9389 if (haveXFEM())
9390 {
9391 if (_xfem->updateHeal())
9392 // XFEM exodiff tests rely on a given numbering because they cannot use map = true due to
9393 // having coincident elements. While conceptually speaking we do not need to contract the
9394 // mesh, we need its call to renumber_nodes_and_elements in order to preserve these tests
9396 /*intermediate_change=*/false, /*contract_mesh=*/true, /*clean_refinement_flags=*/false);
9397
9398 updated = _xfem->update(_time, _nl, *_aux);
9399 if (updated)
9400 {
9402 /*intermediate_change=*/false, /*contract_mesh=*/true, /*clean_refinement_flags=*/false);
9403 _xfem->initSolution(_nl, *_aux);
9405 _console << "\nXFEM update complete: Mesh modified" << std::endl;
9406 }
9407 else
9408 _console << "\nXFEM update complete: Mesh not modified" << std::endl;
9409 }
9410 return updated;
9411}
bool haveXFEM()
Find out whether the current analysis is using XFEM.
virtual void restoreSolutions()

Referenced by FixedPointSolve::solveStep().

◆ updateMortarMesh()

void FEProblemBase::updateMortarMesh ( )
virtualinherited

Definition at line 9113 of file FEProblemBase.C.

9114{
9115 TIME_SECTION("updateMortarMesh", 5, "Updating Mortar Mesh");
9116
9118
9119 // If any mortar interface's coverage changed, the DoF ghosting and sparsity that
9120 // AugmentSparsityOnInterface computed from the previous coverage are stale (see
9121 // reinitBecauseOfGhostingOrNewGeomObjects()'s mortar_changed parameter); refresh them now rather
9122 // than leaving that to the caller, since this may be called mid-solve where no other reinit
9123 // follows. Guard on _initialized: this is also called from init() itself, before es().init() has
9124 // run for the first time, and reinit()ing an EquationSystems that has never been init()ed is not
9125 // meaningful (init() immediately after will pick up whatever _mortar_data->update() just built).
9126 if (_mortar_data->update() && _initialized && !currentlyComputingResidual() &&
9128 reinitBecauseOfGhostingOrNewGeomObjects(/*mortar_changed=*/true);
9129}
const bool & currentlyComputingResidual() const
Returns true if the problem is in the process of computing the residual.
Definition SubProblem.h:731

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

◆ updateSolution()

bool FEProblemBase::updateSolution ( NumericVector< libMesh::Number > &  vec_solution,
NumericVector< libMesh::Number > &  ghosted_solution 
)
virtualinherited

Update the solution.

Parameters
vec_solutionLocal solution vector that gets modified by this method
ghosted_solutionGhosted solution vector
Returns
true if the solution was modified, false otherwise

Definition at line 9081 of file FEProblemBase.C.

9083{
9084 return false;
9085}

Referenced by FEProblemBase::computePostCheck().

◆ useHashTableMatrixAssembly()

bool FEProblemBase::useHashTableMatrixAssembly ( ) const
inlineinherited

Definition at line 3088 of file FEProblemBase.h.

const bool _use_hash_table_matrix_assembly
Whether to assemble matrices using hash tables instead of preallocating matrix memory.

Referenced by NonlinearSystemBase::addConstraint().

◆ useSNESMFReuseBase()

bool FEProblemBase::useSNESMFReuseBase ( )
inlineinherited

Return a flag that indicates if we are reusing the vector base.

Definition at line 2691 of file FEProblemBase.h.

2691{ return _snesmf_reuse_base; }

Referenced by NonlinearSystem::potentiallySetupFiniteDifferencing().

◆ validateVariableNumericType()

void MFEMProblem::validateVariableNumericType ( const std::string &  var_type,
const std::string &  var_name 
) const
protectedinherited

Verify that a primary variable's numeric type matches the problem's equation system.

Definition at line 298 of file MFEMProblem.C.

300{
301 const bool variable_is_complex = var_type == "MFEMComplexVariable";
302 const bool problem_is_complex = _num_type == NumericType::COMPLEX;
303 if (variable_is_complex != problem_is_complex)
304 paramError("numeric_type",
305 "The problem numeric type does not match primary MFEM variable '",
306 var_name,
307 "', which is ",
308 variable_is_complex ? "complex." : "real.");
309}

Referenced by addVariable(), and MFEMProblem::addVariable().

◆ validParams()

InputParameters MFEMEigenproblem::validParams ( )
static

Definition at line 20 of file MFEMEigenproblem.C.

21{
23 params.addClassDescription("Problem type for building and solving a finite element eigenproblem "
24 "using the MFEM finite element library.");
25 params.addParam<int>("num_modes", 1, "Set the number of lowest eigenmodes to compute.");
26 params.addParam<std::string>(
27 "mode_separator",
28 "_",
29 "Separator string inserted between a variable name and its eigenmode index when "
30 "registering the gridfunction that stores the corresponding eigenvector.");
31 params.addParam<MFEMScalarCoefficientName>(
32 "rhs_coefficient",
33 "1.",
34 "Name of the coefficient to scale the right-hand side of the eigenproblem equation by.");
35 params.addParam<MFEMMatrixCoefficientName>("rhs_matrix_coefficient",
36 "Name of the matrix coefficient to scale the "
37 "right-hand side of the eigenproblem equation by.");
38
39 return params;
40}
void addParam(const std::string &name, const S &value, const std::string &doc_string)
These methods add an optional parameter and a documentation string to the InputParameters object.
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.
static InputParameters validParams()
Return the input parameters used to construct an MFEM problem.
Definition MFEMProblem.C:62

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

129{
130 mooseAssert(verifyVectorTags(), "Vector tag storage invalid");
131
132 const auto tag_name_upper = MooseUtils::toUpper(tag_name);
133 for (const auto & vector_tag : _vector_tags)
134 if (vector_tag._name == tag_name_upper)
135 return true;
136
137 return false;
138}

◆ vectorTagName()

TagName SubProblem::vectorTagName ( const TagID  tag) const
virtualinherited

Retrieve the name associated with a TagID.

Reimplemented in DisplacedProblem.

Definition at line 213 of file SubProblem.C.

214{
215 mooseAssert(verifyVectorTags(), "Vector tag storage invalid");
216 if (!vectorTagExists(tag_id))
217 mooseError("Vector tag with ID ", tag_id, " does not exist");
218
219 return _vector_tags[tag_id]._name;
220}

Referenced by SystemBase::addVector(), SystemBase::closeTaggedVector(), NonlinearSystemBase::getResidualNonTimeVector(), NonlinearSystemBase::getResidualTimeVector(), SystemBase::removeVector(), NonlinearSystemBase::residualGhosted(), DisplacedProblem::vectorTagName(), and SystemBase::zeroTaggedVector().

◆ vectorTagNotZeroed()

bool SubProblem::vectorTagNotZeroed ( const TagID  tag) const
inherited

Checks if a vector tag is in the list of vectors that will not be zeroed when other tagged vectors are.

Parameters
tagthe TagID of the vector that is currently being checked
Returns
false if the tag is not within the set of vectors that are intended to not be zero or if the set is empty. returns true otherwise

Definition at line 147 of file SubProblem.C.

148{
149 return _not_zeroed_tagged_vectors.count(tag);
150}

Referenced by SystemBase::zeroTaggedVector().

◆ vectorTagType()

Moose::VectorTagType SubProblem::vectorTagType ( const TagID  tag_id) const
virtualinherited

Reimplemented in DisplacedProblem.

Definition at line 223 of file SubProblem.C.

224{
225 mooseAssert(verifyVectorTags(), "Vector tag storage invalid");
226 if (!vectorTagExists(tag_id))
227 mooseError("Vector tag with ID ", tag_id, " does not exist");
228
229 return _vector_tags[tag_id]._type;
230}

Referenced by MooseVariableScalar::reinit(), TaggingInterface::TaggingInterface(), TagVectorAux::TagVectorAux(), and DisplacedProblem::vectorTagType().

◆ verboseMultiApps()

bool FEProblemBase::verboseMultiApps ( ) const
inlineinherited

Whether or not to use verbose printing for MultiApps.

Definition at line 2338 of file FEProblemBase.h.

2338{ return _verbose_multiapps; }

Referenced by MultiApp::backup(), MultiApp::createApp(), MultiApp::restore(), FullSolveMultiApp::showStatusMessage(), and TransientMultiApp::solveStep().

◆ verifyVectorTags()

bool SubProblem::verifyVectorTags ( ) const
protectedinherited

Verify the integrity of _vector_tags and _typed_vector_tags.

Definition at line 233 of file SubProblem.C.

234{
235 for (TagID tag_id = 0; tag_id < _vector_tags.size(); ++tag_id)
236 {
237 const auto & vector_tag = _vector_tags[tag_id];
238
239 if (vector_tag._id != tag_id)
240 mooseError("Vector tag ", vector_tag._id, " id mismatch in _vector_tags");
241 if (vector_tag._type == Moose::VECTOR_TAG_ANY)
242 mooseError("Vector tag '", vector_tag._name, "' has type VECTOR_TAG_ANY");
243
244 const auto search = _vector_tags_name_map.find(vector_tag._name);
245 if (search == _vector_tags_name_map.end())
246 mooseError("Vector tag ", vector_tag._id, " is not in _vector_tags_name_map");
247 else if (search->second != tag_id)
248 mooseError("Vector tag ", vector_tag._id, " has incorrect id in _vector_tags_name_map");
249
250 unsigned int found_in_type = 0;
251 for (TagTypeID tag_type_id = 0; tag_type_id < _typed_vector_tags[vector_tag._type].size();
252 ++tag_type_id)
253 {
254 const auto & vector_tag_type = _typed_vector_tags[vector_tag._type][tag_type_id];
255 if (vector_tag_type == vector_tag)
256 {
257 ++found_in_type;
258 if (vector_tag_type._type_id != tag_type_id)
259 mooseError("Type ID for Vector tag ", tag_id, " is incorrect");
260 }
261 }
262
263 if (found_in_type == 0)
264 mooseError("Vector tag ", tag_id, " not found in _typed_vector_tags");
265 if (found_in_type > 1)
266 mooseError("Vector tag ", tag_id, " found multiple times in _typed_vector_tags");
267 }
268
269 unsigned int num_typed_vector_tags = 0;
270 for (const auto & typed_vector_tags : _typed_vector_tags)
271 num_typed_vector_tags += typed_vector_tags.size();
272 if (num_typed_vector_tags != _vector_tags.size())
273 mooseError("Size mismatch between _vector_tags and _typed_vector_tags");
274 if (_vector_tags_name_map.size() != _vector_tags.size())
275 mooseError("Size mismatch between _vector_tags and _vector_tags_name_map");
276
277 return true;
278}

Referenced by SubProblem::addVectorTag(), SubProblem::getVectorTag(), SubProblem::getVectorTagID(), SubProblem::getVectorTags(), SubProblem::getVectorTags(), SubProblem::numVectorTags(), SubProblem::vectorTagExists(), SubProblem::vectorTagName(), and SubProblem::vectorTagType().

Member Data Documentation

◆ _action_factory

ActionFactory& ParallelParamObject::_action_factory
protectedinherited

◆ _active_elemental_moose_variables

std::vector<std::set<MooseVariableFieldBase *> > SubProblem::_active_elemental_moose_variables
protectedinherited

This is the set of MooseVariableFieldBase that will actually get reinited by a call to reinit(elem)

Definition at line 1076 of file SubProblem.h.

Referenced by SubProblem::clearActiveElementalMooseVariables(), SubProblem::getActiveElementalMooseVariables(), SubProblem::setActiveElementalMooseVariables(), and SubProblem::SubProblem().

◆ _active_fe_var_coupleable_matrix_tags

std::vector<std::set<TagID> > SubProblem::_active_fe_var_coupleable_matrix_tags
protectedinherited

◆ _active_fe_var_coupleable_vector_tags

std::vector<std::set<TagID> > SubProblem::_active_fe_var_coupleable_vector_tags
protectedinherited

◆ _active_sc_var_coupleable_matrix_tags

std::vector<std::set<TagID> > SubProblem::_active_sc_var_coupleable_matrix_tags
protectedinherited

◆ _active_sc_var_coupleable_vector_tags

std::vector<std::set<TagID> > SubProblem::_active_sc_var_coupleable_vector_tags
protectedinherited

◆ _ad_grad_zero

std::vector<MooseArray<ADRealVectorValue> > FEProblemBase::_ad_grad_zero
inherited

◆ _ad_second_zero

std::vector<MooseArray<ADRealTensorValue> > FEProblemBase::_ad_second_zero
inherited

◆ _ad_zero

std::vector<MooseArray<ADReal> > FEProblemBase::_ad_zero
inherited

◆ _adaptivity

Adaptivity FEProblemBase::_adaptivity
protectedinherited

◆ _all_materials

MaterialWarehouse FEProblemBase::_all_materials
protectedinherited

◆ _allow_ics_during_restart

const bool FEProblemBase::_allow_ics_during_restart
privateinherited

Definition at line 3717 of file FEProblemBase.h.

Referenced by FEProblemBase::checkICRestartError().

◆ _allow_invalid_solution

const bool FEProblemBase::_allow_invalid_solution
privateinherited

Definition at line 3720 of file FEProblemBase.h.

Referenced by FEProblemBase::allowInvalidSolution().

◆ _app

MooseApp& MooseBase::_app
protectedinherited

The MOOSE application this is associated with.

Definition at line 375 of file MooseBase.h.

Referenced by AB2PredictorCorrector::AB2PredictorCorrector(), FEProblemBase::acceptInvalidSolution(), FEProblemBase::addAnyRedistributers(), MeshGenerator::addChildMeshGenerator(), FEProblemBase::addMaterialHelper(), MeshGenerator::addMeshSubgenerator(), MeshGenerator::addMeshSubgenerator(), FEProblemBase::addOutput(), MeshGenerator::addParentMeshGenerator(), FEProblemBase::allowOutput(), AStableDirk4::AStableDirk4(), FileMesh::buildMesh(), MooseMesh::buildTypedMesh(), MooseMesh::cacheFaceInfoVariableOwnership(), MooseMesh::cacheFVElementalDoFs(), DefaultNonlinearConvergence::checkConvergence(), MeshGenerator::checkGetMesh(), FEProblemBase::checkICRestartError(), FEProblemBase::checkProblemIntegrity(), LibmeshPartitioner::clone(), BlockWeightedPartitioner::clone(), CopyMeshPartitioner::clone(), GridPartitioner::clone(), HierarchicalGridPartitioner::clone(), PetscExternalPartitioner::clone(), RandomPartitioner::clone(), SingleRankPartitioner::clone(), ElementPointNeighborLayers::clone(), ElementSideNeighborLayers::clone(), GhostAllPointNeighbors::clone(), GhostBoundary::clone(), GhostEverything::clone(), GhostHigherDLowerDPointNeighbors::clone(), GhostLowerDElems::clone(), GhostPrimaryFace::clone(), ProxyRelationshipManager::clone(), RedistributeProperties::clone(), SampledOutput::cloneMesh(), FEProblemBase::computeJacobianSys(), FEProblemBase::computeJacobianTags(), FEProblemBase::computeLinearSystemTags(), FEProblemBase::computeResidualAndJacobian(), FEProblemBase::computeResidualSys(), FEProblemBase::computeResidualTags(), Console::Console(), TimeStepper::constrainStep(), Control::Control(), CopyMeshPartitioner::CopyMeshPartitioner(), MultiApp::createApp(), MultiApp::createApps(), MoveBoundaryNodesToCurveGenerator::curveGenerator(), FEProblemBase::customSetup(), MeshGenerator::declareMeshProperty(), MeshGenerator::declareNullMeshName(), MooseMesh::determineUseDistributedMesh(), DumpObjectsProblem::dumpObjectHelper(), DumpObjectsProblem::DumpObjectsProblem(), DumpObjectsProblem::dumpVariableHelper(), EigenExecutionerBase::EigenExecutionerBase(), EigenKernel::EigenKernel(), PIDTransientControl::execute(), Eigenvalue::execute(), InversePowerMethod::execute(), NonlinearEigen::execute(), SteadyBase::execute(), TransientBase::execute(), MFEMSteady::execute(), PseudoTimestep::execute(), IterationInfo::execute(), EigenProblem::execute(), Executioner::Executioner(), Executioner::Executioner(), ExtraIDIntegralReporter::ExtraIDIntegralReporter(), FEProblemBase::FEProblemBase(), FileOutput::FileOutput(), TorchAssembly::finalize(), ChangeOverFixedPointPostprocessor::finalize(), RadialAverage::finalize(), FixedPointSolve::FixedPointSolve(), FEProblemBase::forceOutput(), FullSolveMultiApp::FullSolveMultiApp(), FunctorSmootherTempl< T >::FunctorSmootherTempl(), FVAdvection::FVAdvection(), FileMeshGenerator::generate(), MeshGenerator::generateInternal(), MeshGenerator::generateInternalCSG(), MeshGenerator::getCSGBaseByName(), FEProblemBase::getExecutor(), MeshGenerator::getMeshByName(), NumFixedPointIterations::getValue(), NumRelationshipManagers::getValue(), GhostingUserObject::GhostingUserObject(), MooseMesh::init(), Eigenvalue::init(), InversePowerMethod::init(), NonlinearEigen::init(), TransientBase::init(), MFEMMesh::init(), FEProblemBase::init(), CompositionDT::init(), SubProblem::initialSetup(), PIDTransientControl::initialSetup(), RealFunctionControl::initialSetup(), TimePeriod::initialSetup(), EigenProblemSolve::initialSetup(), FEProblemSolve::initialSetup(), Console::initialSetup(), FEProblemBase::initialSetup(), BoundaryMeshBuilder::initialSetup(), AdvancedOutput::initOutputList(), FEProblemBase::initPetscOutputAndSomeSolverSettings(), EigenProblem::initPetscOutputAndSomeSolverSettings(), AdvancedOutput::initPostprocessorOrVectorPostprocessorLists(), FEProblemBase::meshChanged(), MeshGenerator::MeshGenerator(), MFEMProblemSolve::MFEMProblemSolve(), MooseMesh::MooseMesh(), MooseMesh::MooseMesh(), MooseObject::MooseObject(), MultiAppGeneralFieldTransfer::MultiAppGeneralFieldTransfer(), EigenExecutionerBase::normalizeSolution(), NumFailedTimeSteps::NumFailedTimeSteps(), Checkpoint::output(), Exodus::output(), Nemesis::output(), PerfGraphOutput::output(), Tecplot::output(), MortarNodalGeometryOutput::output(), ControlOutput::outputActiveObjects(), ControlOutput::outputChangedControls(), ControlOutput::outputControls(), Exodus::outputEmptyTimestep(), Console::outputInput(), Exodus::outputInput(), Exodus::outputNodalVariables(), JSONOutput::outputReporters(), Output::outputStep(), SampledOutput::outputStep(), FEProblemBase::outputStep(), Console::outputSystemInformation(), JSONOutput::outputSystemInformation(), OverlayMeshGenerator::OverlayMeshGenerator(), MultiApp::parentOutputPositionChanged(), TransientBase::preExecute(), FEProblemBase::projectSolution(), AnnularMesh::safeClone(), ConcentricCircleMesh::safeClone(), FileMesh::safeClone(), GeneratedMesh::safeClone(), ImageMesh::safeClone(), MeshGeneratorMesh::safeClone(), PatternedMesh::safeClone(), RinglebMesh::safeClone(), SpiralAnnularMesh::safeClone(), StitchedMesh::safeClone(), TiledMesh::safeClone(), MFEMFileMesh::safeClone(), MFEMMeshGeneratorMesh::safeClone(), MultiApp::setAppOutputFileBase(), FileOutput::setFileBaseInternal(), MeshGenerator::setMeshProperty(), MeshGenerator::setMeshPropertyHelper(), FEProblemBase::setRestartFile(), TransientMultiApp::setupApp(), TimeSequenceStepperBase::setupSequence(), TransientBase::setupTimeIntegrator(), Output::setWallTimeIntervalFromCommandLineParam(), SideSetExtruderGenerator::SideSetExtruderGenerator(), SolutionInvalidityReporter::SolutionInvalidityReporter(), FixedPointSolve::solve(), ActuallyExplicitEuler::solve(), FEProblemBase::solve(), EigenProblem::solve(), FEProblemBase::solveLinearSystem(), PetscOutput::solveSetup(), FixedPointSolve::solveStep(), TransientMultiApp::solveStep(), FEProblemBase::subdomainSetup(), FEProblemBase::theWarehouse(), TimeExtremeValue::TimeExtremeValue(), TimeIntegratedPostprocessor::TimeIntegratedPostprocessor(), TimeIntervalTimes::TimeIntervalTimes(), TimePeriod::TimePeriod(), SubProblem::timestepSetup(), PIDTransientControl::timestepSetup(), FEProblemBase::timestepSetup(), TransientBase::TransientBase(), MooseMesh::update(), TorchFEInterpolation::updateDofMap(), TorchFEInterpolation::updateGradPhi(), TorchFEInterpolation::updateInterpolations(), FEProblemBase::updateMortarMesh(), TorchFEInterpolation::updatePhi(), Console::write(), XYQuadrilateralMeshFromBoundaryCurve::XYQuadrilateralMeshFromBoundaryCurve(), and FEProblemBase::~FEProblemBase().

◆ _assembly

std::vector<std::vector<std::unique_ptr<Assembly> > > FEProblemBase::_assembly
protectedinherited

The Assembly objects.

The first index corresponds to the thread ID and the second index corresponds to the nonlinear system number

Definition at line 3284 of file FEProblemBase.h.

Referenced by FEProblemBase::addCachedResidualDirectly(), FEProblemBase::addJacobian(), FEProblemBase::addJacobianBlockTags(), FEProblemBase::addJacobianLowerD(), FEProblemBase::addJacobianNeighbor(), FEProblemBase::addJacobianNeighborLowerD(), FEProblemBase::addJacobianOffDiagScalar(), FEProblemBase::addJacobianScalar(), FEProblemBase::addResidual(), FEProblemBase::addResidualLower(), FEProblemBase::addResidualNeighbor(), FEProblemBase::addResidualScalar(), FEProblemBase::assembly(), FEProblemBase::assembly(), FEProblemBase::bumpAllQRuleOrder(), FEProblemBase::bumpVolumeQRuleOrder(), FEProblemBase::couplingEntries(), FEProblemBase::createQRules(), FEProblemBase::fieldScalarCouplingEntries(), FEProblemBase::init(), FEProblemBase::initElementStatefulProps(), FEProblemBase::initXFEM(), FEProblemBase::meshChanged(), FEProblemBase::newAssemblyArray(), FEProblemBase::nonlocalCouplingEntries(), FEProblemBase::prepare(), FEProblemBase::prepare(), FEProblemBase::prepareAssembly(), FEProblemBase::prepareAssemblyNeighbor(), FEProblemBase::prepareFaceShapes(), FEProblemBase::prepareNeighborShapes(), FEProblemBase::prepareShapes(), FEProblemBase::reinitDirac(), FEProblemBase::reinitElemFace(), FEProblemBase::reinitElemNeighborAndLowerD(), FEProblemBase::reinitElemPhys(), FEProblemBase::reinitMaterials(), FEProblemBase::reinitMaterialsBoundary(), FEProblemBase::reinitMaterialsFace(), FEProblemBase::reinitMaterialsFaceOnBoundary(), FEProblemBase::reinitMaterialsInterface(), FEProblemBase::reinitMaterialsNeighbor(), FEProblemBase::reinitNeighbor(), FEProblemBase::reinitNeighborPhys(), FEProblemBase::reinitNeighborPhys(), FEProblemBase::reinitNode(), FEProblemBase::reinitNodeFace(), FEProblemBase::reinitOffDiagScalars(), FEProblemBase::reinitScalars(), FEProblemBase::setCurrentSubdomainID(), FEProblemBase::setNeighborSubdomainID(), FEProblemBase::setNeighborSubdomainID(), FEProblemBase::setResidual(), FEProblemBase::setResidualNeighbor(), FEProblemBase::swapBackMaterials(), FEProblemBase::swapBackMaterialsFace(), and FEProblemBase::swapBackMaterialsNeighbor().

◆ _assembly_level

mfem::AssemblyLevel MFEMProblem::_assembly_level {mfem::AssemblyLevel::LEGACY}
protectedinherited

Default assembly level to use for EquationSystem assembly.

Defaults to the same level as the assembly_level parameter shared by the MFEM executioners, so that the value is well-defined even if no MFEM executioner is in use.

Definition at line 490 of file MFEMProblem.h.

490{mfem::AssemblyLevel::LEGACY};

Referenced by MFEMProblem::assemblyLevel(), and MFEMProblem::setAssemblyLevel().

◆ _aux

std::shared_ptr<AuxiliarySystem> FEProblemBase::_aux
protectedinherited

The auxiliary system.

Definition at line 3267 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::createTagMatrices(), 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::getSystemBase(), FEProblemBase::getSystemBase(), FEProblemBase::getVariable(), FEProblemBase::getVariableNames(), FEProblemBase::getVectorVariable(), FEProblemBase::hasScalarVariable(), FEProblemBase::hasSolutionState(), FEProblemBase::hasVariable(), FEProblemBase::init(), FEProblemBase::meshChanged(), FEProblemBase::needBoundaryMaterialOnSide(), FEProblemBase::needSolutionState(), FEProblemBase::outputStep(), FEProblemBase::prepare(), FEProblemBase::prepare(), FEProblemBase::prepareFace(), FEProblemBase::projectInitialConditionOnCustomRange(), FEProblemBase::projectSolution(), FEProblemBase::reinitDirac(), FEProblemBase::reinitElem(), FEProblemBase::reinitElemFace(), FEProblemBase::reinitElemPhys(), FEProblemBase::reinitNeighbor(), FEProblemBase::reinitNeighborPhys(), FEProblemBase::reinitNeighborPhys(), FEProblemBase::reinitNode(), FEProblemBase::reinitNodeFace(), FEProblemBase::reinitScalars(), FEProblemBase::restoreOldSolutions(), FEProblemBase::restoreSolutions(), FEProblemBase::saveOldSolutions(), FEProblemBase::setAuxKernelParamsAndLog(), FEProblemBase::skipNextForwardSolutionCopyToOld(), FEProblemBase::systemBaseAuxiliary(), FEProblemBase::systemBaseAuxiliary(), FEProblemBase::systemNumForVariable(), FEProblemBase::timestepSetup(), FEProblemBase::updateActiveObjects(), and FEProblemBase::updateMeshXFEM().

◆ _aux_evaluable_local_elem_range

std::unique_ptr<libMesh::ConstElemRange> FEProblemBase::_aux_evaluable_local_elem_range
protectedinherited

Definition at line 3598 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 3378 of file FEProblemBase.h.

Referenced by FEProblemBase::FEProblemBase(), and FEProblemBase::needInternalNeighborSideMaterial().

◆ _bnd_mat_side_cache

std::vector<std::unordered_map<BoundaryID, bool> > FEProblemBase::_bnd_mat_side_cache
protectedinherited

Cache for calculating materials on side.

Definition at line 3381 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 3523 of file FEProblemBase.h.

◆ _boundary_restricted_node_integrity_check

const bool FEProblemBase::_boundary_restricted_node_integrity_check
protectedinherited

whether to perform checking of boundary restricted nodal object variable dependencies, e.g.

whether the variable dependencies are defined on the selected boundaries

Definition at line 3519 of file FEProblemBase.h.

◆ _calculate_jacobian_in_uo

bool FEProblemBase::_calculate_jacobian_in_uo
protectedinherited

◆ _check_residual_for_nans

bool FEProblemBase::_check_residual_for_nans
protectedinherited

Whether to check the residual for NaN or Inf values.

Definition at line 3549 of file FEProblemBase.h.

Referenced by FEProblemBase::checkResidualForNans(), and FEProblemBase::setCheckResidualForNans().

◆ _checking_uo_aux_state

bool FEProblemBase::_checking_uo_aux_state = false
privateinherited

Flag used to indicate whether we are doing the uo/aux state check in execute.

Definition at line 3766 of file FEProblemBase.h.

Referenced by FEProblemBase::checkingUOAuxState(), and FEProblemBase::execute().

◆ _cli_option_found

bool Problem::_cli_option_found
protectedinherited

True if the CLI option is found.

Definition at line 52 of file Problem.h.

Referenced by Problem::_setCLIOption().

◆ _cm

std::vector<std::unique_ptr<libMesh::CouplingMatrix> > FEProblemBase::_cm
protectedinherited

Coupling matrix for variables.

Definition at line 3270 of file FEProblemBase.h.

Referenced by FEProblemBase::areCoupled(), FEProblemBase::couplingMatrix(), FEProblemBase::FEProblemBase(), and FEProblemBase::init().

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

Referenced by SubProblem::computingNonlinearResid(), FEProblemBase::computingNonlinearResid(), and SubProblem::computingNonlinearResid().

◆ _computing_scaling_jacobian

bool FEProblemBase::_computing_scaling_jacobian = false
privateinherited

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

Definition at line 3760 of file FEProblemBase.h.

Referenced by FEProblemBase::computingScalingJacobian(), and FEProblemBase::computingScalingJacobian().

◆ _computing_scaling_residual

bool FEProblemBase::_computing_scaling_residual = false
privateinherited

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

Definition at line 3763 of file FEProblemBase.h.

Referenced by FEProblemBase::computingScalingResidual(), and FEProblemBase::computingScalingResidual().

◆ _console

const ConsoleStream ConsoleStreamInterface::_console
inherited

An instance of helper class to write streams to the Console objects.

Definition at line 31 of file ConsoleStreamInterface.h.

Referenced by IterationAdaptiveDT::acceptStep(), MaterialOutputAction::act(), MeshOnlyAction::act(), SetupDebugAction::act(), FEProblemBase::adaptMesh(), Adaptivity::adaptMesh(), PerfGraph::addToExecutionList(), SimplePredictor::apply(), SystemBase::applyScalingFactors(), MultiApp::backup(), FEProblemBase::backupMultiApps(), CoarsenedPiecewiseLinear::buildCoarsenedGrid(), DefaultSteadyStateConvergence::checkConvergence(), MeshDiagnosticsGenerator::checkElementOverlap(), MeshDiagnosticsGenerator::checkElementTypes(), MeshDiagnosticsGenerator::checkElementVolumes(), FEProblemBase::checkExceptionAndStopSolve(), SolverSystem::checkInvalidSolution(), MeshDiagnosticsGenerator::checkLocalJacobians(), MeshDiagnosticsGenerator::checkNonConformalMesh(), MeshDiagnosticsGenerator::checkNonConformalMeshFromAdaptivity(), MeshDiagnosticsGenerator::checkNonConformingFaces(), MeshDiagnosticsGenerator::checkNonMatchingEdges(), MeshDiagnosticsGenerator::checkNonPlanarSides(), MeshDiagnosticsGenerator::checkPolygons(), FEProblemBase::checkProblemIntegrity(), ReferenceResidualConvergence::checkResidualConvergence(), MeshDiagnosticsGenerator::checkSidesetsOrientation(), MeshDiagnosticsGenerator::checkWatertightNodesets(), MeshDiagnosticsGenerator::checkWatertightSidesets(), CoarsenSurfaceMeshAlongSidesetGenerator::coarsenAlongSidesets(), IterationAdaptiveDT::computeAdaptiveDT(), TransientBase::computeConstrainedDT(), DefaultMultiAppFixedPointConvergence::computeCustomConvergencePostprocessor(), NonlinearSystemBase::computeDamping(), FixedPointIterationAdaptiveDT::computeDT(), IterationAdaptiveDT::computeDT(), IterationAdaptiveDT::computeFailedDT(), IterationAdaptiveDT::computeInitialDT(), IterationAdaptiveDT::computeInterpolationDT(), FEProblemBase::computeLinearSystemTags(), LinearSystem::computeLinearSystemTags(), NonlinearSystemBase::computeScaling(), Problem::console(), TimeStepper::constrainStep(), IterationAdaptiveDT::constrainStep(), MultiApp::createApp(), FEProblemBase::execMultiApps(), FEProblemBase::execMultiAppTransfers(), Eigenvalue::execute(), SteadyBase::execute(), MFEMSteady::execute(), MessageFromInput::execute(), ActionWarehouse::executeActionsWithAction(), ActionWarehouse::executeAllActions(), MeshGeneratorSystem::executeMeshGenerators(), SidesetAroundSubdomainUpdater::finalize(), ElementQualityChecker::finalize(), FEProblemBase::finishMultiAppStep(), MeshRepairGenerator::fixOverlappingNodes(), SurfaceSubdomainsDelaunayRemesher::General2DDelaunay(), CoarsenBlockGenerator::generate(), CoarsenSurfaceMeshAlongSidesetGenerator::generate(), OrientSurfaceMeshGenerator::generate(), PolyLineMeshFollowingNodeSetGenerator::generate(), StitchMeshGenerator::generate(), MeshGenerator::generateInternal(), VariableCondensationPreconditioner::getDofToCondense(), InversePowerMethod::init(), NonlinearEigen::init(), FEProblemBase::initialAdaptMesh(), SubProblem::initialSetup(), EigenExecutionerBase::inversePowerIteration(), FEProblemBase::joinAndFinalize(), TransientBase::keepGoing(), IterationAdaptiveDT::limitDTByFunction(), IterationAdaptiveDT::limitDTToPostprocessorValue(), FEProblemBase::logAdd(), EigenExecutionerBase::makeBXConsistent(), Console::meshChanged(), SurfaceDelaunayGeneratorBase::meshNormalDeviation2D(), MooseBase::mooseDeprecated(), MooseBase::mooseDeprecatedNoTrace(), MooseBase::mooseInfo(), MooseBase::mooseWarning(), MooseBase::mooseWarningNonPrefixed(), NEML2Action::NEML2Action(), ReferenceResidualConvergence::nonlinearConvergenceSetup(), Console::output(), DOFMapOutput::output(), MaterialPropertyDebugOutput::output(), PerfGraphOutput::output(), ReporterDebugOutput::output(), SolutionInvalidityOutput::output(), VariableResidualNormsDebugOutput::output(), ControlOutput::outputActiveObjects(), ControlOutput::outputChangedControls(), ControlOutput::outputControls(), Console::outputInput(), WebServerControl::outputMessage(), Console::outputPostprocessors(), PseudoTimestep::outputPseudoTimestep(), Console::outputReporters(), DefaultMultiAppFixedPointConvergence::outputResidualNorm(), Console::outputScalarVariables(), Console::outputSystemInformation(), FEProblemBase::possiblyRebuildGeomSearchPatches(), EigenExecutionerBase::postExecute(), AB2PredictorCorrector::postSolve(), DefaultMultiAppFixedPointConvergence::preLoop(), ActionWarehouse::printActionDependencySets(), BlockRestrictionDebugOutput::printBlockRestrictionGroups(), BlockRestrictionDebugOutput::printBlockRestrictionMap(), BlockRestrictionDebugOutput::printBoundaryRestrictionGroups(), SolutionInvalidity::printDebug(), EigenExecutionerBase::printEigenvalue(), PicardSolve::printFixedPointConvergenceHistory(), SecantSolve::printFixedPointConvergenceHistory(), SteffensenSolve::printFixedPointConvergenceHistory(), FixedPointSolve::printFixedPointConvergenceReason(), PerfGraphLivePrint::printLiveMessage(), MaterialPropertyDebugOutput::printMaterialMap(), PerfGraphLivePrint::printStats(), NEML2Action::printSummary(), AutomaticMortarGeneration::projectPrimaryNodesSinglePair(), AutomaticMortarGeneration::projectSecondaryNodesSinglePair(), CoarsenBlockGenerator::recursiveCoarsen(), SolutionTimeAdaptiveDT::rejectStep(), MultiApp::restore(), FEProblemBase::restoreMultiApps(), FEProblemBase::restoreSolutions(), NonlinearSystemBase::setInitialSolution(), MooseApp::setupOptions(), Checkpoint::shouldOutput(), SubProblem::showFunctorRequestors(), SubProblem::showFunctors(), FullSolveMultiApp::showStatusMessage(), FEProblemSolve::solve(), FixedPointSolve::solve(), LinearSystem::solve(), NonlinearSystem::solve(), AStableDirk4::solve(), ExplicitRK2::solve(), ExplicitTVDRK2::solve(), ImplicitMidpoint::solve(), LStableDirk2::solve(), LStableDirk3::solve(), LStableDirk4::solve(), EigenProblem::solve(), FixedPointSolve::solveStep(), TransientMultiApp::solveStep(), MeshRepairGenerator::splitNonConvexPolygons(), PerfGraphLivePrint::start(), WebServerControl::startServer(), AB2PredictorCorrector::step(), NonlinearEigen::takeStep(), TransientBase::takeStep(), MFEMTransient::takeStep(), TerminateChainControl::terminate(), SubProblem::timestepSetup(), FEProblemBase::updateMeshXFEM(), Convergence::verboseOutput(), Console::writeTimestepInformation(), Console::writeVariableNorms(), and FEProblemBase::~FEProblemBase().

◆ _const_jacobian

bool FEProblemBase::_const_jacobian
protectedinherited

◆ _constant_null_space_vars

const std::vector<VariableName> FEProblemBase::_constant_null_space_vars
protectedinherited

Variables whose constant fields span part of the Jacobian nullspace.

Definition at line 3612 of file FEProblemBase.h.

Referenced by FEProblemBase::computeNullSpace().

◆ _constant_transpose_null_space_vars

const std::vector<VariableName> FEProblemBase::_constant_transpose_null_space_vars
protectedinherited

Variables whose constant fields span part of the Jacobian transpose nullspace.

Definition at line 3614 of file FEProblemBase.h.

Referenced by FEProblemBase::computeTransposeNullSpace().

◆ _consumed_material_properties

std::map<MooseObjectName, std::set<std::string> > SubProblem::_consumed_material_properties
privateinherited

◆ _control_warehouse

ExecuteMooseObjectWarehouse<Control> FEProblemBase::_control_warehouse
protectedinherited

◆ _convergences

MooseObjectWarehouse<Convergence> FEProblemBase::_convergences
protectedinherited

◆ _coupling

Moose::CouplingType FEProblemBase::_coupling
protectedinherited

◆ _current_algebraic_bnd_node_range

std::unique_ptr<ConstBndNodeRange> FEProblemBase::_current_algebraic_bnd_node_range
protectedinherited

◆ _current_algebraic_elem_range

std::unique_ptr<libMesh::ConstElemRange> FEProblemBase::_current_algebraic_elem_range
protectedinherited

◆ _current_algebraic_node_range

std::unique_ptr<libMesh::ConstNodeRange> FEProblemBase::_current_algebraic_node_range
protectedinherited

◆ _current_execute_on_flag

ExecFlagType FEProblemBase::_current_execute_on_flag
protectedinherited

◆ _current_ic_state

unsigned short FEProblemBase::_current_ic_state
protectedinherited

Definition at line 3609 of file FEProblemBase.h.

Referenced by FEProblemBase::getCurrentICState().

◆ _current_linear_sys

LinearSystem* FEProblemBase::_current_linear_sys
protectedinherited

◆ _current_nl_sys

NonlinearSystemBase* FEProblemBase::_current_nl_sys
protectedinherited

The current nonlinear system that we are solving.

Definition at line 3249 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::appendConstantModes(), FEProblemBase::checkExceptionAndStopSolve(), FEProblemBase::computeBounds(), FEProblemBase::computeDamping(), FEProblemBase::computeJacobianBlock(), FEProblemBase::computeJacobianBlocks(), EigenProblem::computeJacobianBlocks(), FEProblemBase::computeJacobianInternal(), FEProblemBase::computeJacobianTag(), FEProblemBase::computeJacobianTags(), FEProblemBase::computeNearNullSpace(), FEProblemBase::computeNullSpace(), FEProblemBase::computePostCheck(), FEProblemBase::computeResidualAndJacobian(), FEProblemBase::computeResidualInternal(), FEProblemBase::computeResidualL2Norm(), FEProblemBase::computeResidualTag(), FEProblemBase::computeResidualTags(), FEProblemBase::computeResidualType(), FEProblemBase::computeTransposeNullSpace(), FEProblemBase::currentNonlinearSystem(), FEProblemBase::currentNonlinearSystem(), EigenProblem::doFreeNonlinearPowerIterations(), EigenProblem::EigenProblem(), FEProblemBase::prepare(), FEProblemBase::prepareAssembly(), FEProblemBase::prepareAssemblyNeighbor(), FEProblemBase::prepareFaceShapes(), FEProblemBase::prepareNeighborShapes(), FEProblemBase::prepareShapes(), FEProblemBase::reinitDirac(), FEProblemBase::reinitNeighborPhys(), FEProblemBase::reinitNeighborPhys(), FEProblemBase::reinitOffDiagScalars(), FEProblemBase::setCurrentNonlinearSystem(), FEProblemBase::setResidual(), FEProblemBase::setResidualNeighbor(), FEProblemBase::solve(), and EigenProblem::solve().

◆ _current_residual_vector_tags

std::vector<VectorTag> FEProblemBase::_current_residual_vector_tags
privateinherited

A data member to store the residual vector tag(s) passed into computeResidualTag(s).

This data member will be used when APIs like cacheResidual, addCachedResiduals, etc. are called

Definition at line 3777 of file FEProblemBase.h.

Referenced by FEProblemBase::clearCurrentResidualVectorTags(), FEProblemBase::currentResidualVectorTags(), and FEProblemBase::setCurrentResidualVectorTags().

◆ _current_solver_sys

SolverSystem* FEProblemBase::_current_solver_sys
protectedinherited

The current solver system.

Definition at line 3252 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 1100 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 1091 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 3450 of file FEProblemBase.h.

Referenced by FEProblemBase::adaptMesh(), FEProblemBase::addAnyRedistributers(), FEProblemBase::addAuxArrayVariable(), 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::backupGeometricSearchState(), FEProblemBase::bumpAllQRuleOrder(), FEProblemBase::bumpVolumeQRuleOrder(), FEProblemBase::cacheJacobian(), FEProblemBase::cacheJacobianNeighbor(), FEProblemBase::cacheResidual(), FEProblemBase::cacheResidualNeighbor(), FEProblemBase::checkDisplacementOrders(), FEProblemBase::clearActiveElementalMooseVariables(), FEProblemBase::clearActiveFEVariableCoupleableMatrixTags(), FEProblemBase::clearActiveFEVariableCoupleableVectorTags(), FEProblemBase::clearActiveScalarVariableCoupleableMatrixTags(), FEProblemBase::clearActiveScalarVariableCoupleableVectorTags(), FEProblemBase::clearDiracInfo(), FEProblemBase::computeJacobianBlocks(), EigenProblem::computeJacobianBlocks(), FEProblemBase::computeJacobianTags(), FEProblemBase::computeResidualAndJacobian(), FEProblemBase::computeResidualTags(), FEProblemBase::computeUserObjectsInternal(), FEProblemBase::computingNonlinearResid(), FEProblemBase::createMortarInterface(), FEProblemBase::createQRules(), FEProblemBase::customSetup(), FEProblemBase::execute(), FEProblemBase::getDiracElements(), FEProblemBase::getDisplacedProblem(), FEProblemBase::getDisplacedProblem(), FEProblemBase::getMortarUserObjects(), FEProblemBase::ghostGhostedBoundaries(), FEProblemBase::haveADObjects(), FEProblemBase::haveDisplaced(), FEProblemBase::init(), FEProblemBase::initXFEM(), FEProblemBase::jacobianSetup(), FEProblemBase::mesh(), FEProblemBase::mesh(), FEProblemBase::meshChanged(), FEProblemBase::outputStep(), FEProblemBase::possiblyRebuildGeomSearchPatches(), FEProblemBase::prepare(), FEProblemBase::prepare(), FEProblemBase::prepareAssembly(), FEProblemBase::prepareAssemblyNeighbor(), FEProblemBase::prepareFace(), FEProblemBase::reinitBecauseOfGhostingOrNewGeomObjects(), FEProblemBase::reinitDirac(), FEProblemBase::reinitElem(), FEProblemBase::reinitElemFace(), FEProblemBase::reinitElemFaceRef(), FEProblemBase::reinitElemNeighborAndLowerD(), FEProblemBase::reinitLowerDElem(), FEProblemBase::reinitNeighbor(), FEProblemBase::reinitNeighborFaceRef(), FEProblemBase::reinitNode(), FEProblemBase::reinitNodeFace(), FEProblemBase::reinitOffDiagScalars(), FEProblemBase::reinitScalars(), FEProblemBase::resetState(), FEProblemBase::residualSetup(), FEProblemBase::restoreGeometricSearchState(), FEProblemBase::restoreSolutions(), FEProblemBase::setActiveElementalMooseVariables(), FEProblemBase::setActiveFEVariableCoupleableMatrixTags(), FEProblemBase::setActiveFEVariableCoupleableVectorTags(), FEProblemBase::setActiveScalarVariableCoupleableMatrixTags(), FEProblemBase::setActiveScalarVariableCoupleableVectorTags(), FEProblemBase::setAuxKernelParamsAndLog(), FEProblemBase::setCurrentBoundaryID(), FEProblemBase::setCurrentLowerDElem(), FEProblemBase::setCurrentlyComputingResidual(), FEProblemBase::setCurrentSubdomainID(), FEProblemBase::setNeighborSubdomainID(), FEProblemBase::setNeighborSubdomainID(), FEProblemBase::setResidual(), FEProblemBase::setResidualNeighbor(), FEProblemBase::setResidualObjectParamsAndLog(), FEProblemBase::solve(), EigenProblem::solve(), FEProblemBase::timestepSetup(), FEProblemBase::uniformRefine(), and FEProblemBase::updateGeomSearch().

◆ _dt

Real& FEProblemBase::_dt
protectedinherited

◆ _dt_old

Real& FEProblemBase::_dt_old
protectedinherited

Definition at line 3209 of file FEProblemBase.h.

Referenced by FEProblemBase::dtOld(), and FEProblemBase::FEProblemBase().

◆ _enabled

const bool& MooseObject::_enabled
protectedinherited

Reference to the "enable" InputParameters, used by Controls for toggling on/off MooseObjects.

Definition at line 71 of file MooseObject.h.

Referenced by MooseObject::enabled().

◆ _error_on_jacobian_nonzero_reallocation

bool FEProblemBase::_error_on_jacobian_nonzero_reallocation
privateinherited

Whether to error when the Jacobian is re-allocated, usually because the sparsity pattern changed.

Definition at line 3705 of file FEProblemBase.h.

Referenced by FEProblemBase::errorOnJacobianNonzeroReallocation(), and FEProblemBase::setErrorOnJacobianNonzeroReallocation().

◆ _evaluable_local_elem_range

std::unique_ptr<libMesh::ConstElemRange> FEProblemBase::_evaluable_local_elem_range
protectedinherited

◆ _exception_message

std::string FEProblemBase::_exception_message
protectedinherited

The error message to go with an exception.

Definition at line 3577 of file FEProblemBase.h.

Referenced by FEProblemBase::checkExceptionAndStopSolve(), and FEProblemBase::setException().

◆ _factory

Factory& SubProblem::_factory
protectedinherited

◆ _fail_next_system_convergence_check

bool FEProblemBase::_fail_next_system_convergence_check
privateinherited

◆ _fe_matrix_tags

std::set<TagID> FEProblemBase::_fe_matrix_tags
protectedinherited

◆ _fe_vector_tags

std::set<TagID> FEProblemBase::_fe_vector_tags
protectedinherited

◆ _force_restart

const bool FEProblemBase::_force_restart
privateinherited

Definition at line 3716 of file FEProblemBase.h.

◆ _from_multi_app_transfers

ExecuteMooseObjectWarehouse<Transfer> FEProblemBase::_from_multi_app_transfers
protectedinherited

◆ _functions

MooseObjectWarehouse<Function> FEProblemBase::_functions
protectedinherited

◆ _functor_to_request_info

std::vector<std::multimap<std::string, std::pair<bool, bool> > > SubProblem::_functor_to_request_info
privateinherited

A multimap (for each thread) from unfilled functor requests to whether the requests were for AD functors and whether the requestor was an AD object.

Definition at line 1162 of file SubProblem.h.

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

◆ _functor_to_requestors

std::map<std::string, std::set<std::string> > SubProblem::_functor_to_requestors
privateinherited

The requestors of functors where the key is the prop name and the value is a set of names of requestors.

Definition at line 1158 of file SubProblem.h.

Referenced by SubProblem::getFunctor(), SubProblem::initialSetup(), and SubProblem::showFunctorRequestors().

◆ _functors

std::vector<std::multimap<std::string, std::tuple<TrueFunctorIs, std::unique_ptr<Moose::FunctorEnvelopeBase>, std::unique_ptr<Moose::FunctorEnvelopeBase> > > > SubProblem::_functors
privateinherited

A container holding pointers to all the functors in our problem.

We hold a tuple where the zeroth item in the tuple is an enumerator that describes what type of functor the "true" functor is (either NONAD or AD), the first item in the tuple is the non-AD version of the functor, and the second item in the tuple is the AD version of the functor

Definition at line 1145 of file SubProblem.h.

Referenced by SubProblem::addFunctor(), SubProblem::getFunctor(), SubProblem::hasFunctor(), SubProblem::hasFunctorWithType(), SubProblem::initialSetup(), SubProblem::showFunctors(), and SubProblem::SubProblem().

◆ _fv_bcs_integrity_check

bool FEProblemBase::_fv_bcs_integrity_check
protectedinherited

Whether to check overlapping Dirichlet and Flux BCs and/or multiple DirichletBCs per sideset.

Definition at line 3536 of file FEProblemBase.h.

Referenced by FEProblemBase::fvBCsIntegrityCheck(), and FEProblemBase::fvBCsIntegrityCheck().

◆ _fv_face_integrity_check

const bool FEProblemBase::_fv_face_integrity_check
protectedinherited

Whether to check FV boundary and interface objects against the faces on which they execute.

Definition at line 3539 of file FEProblemBase.h.

◆ _fv_ics

FVInitialConditionWarehouse FEProblemBase::_fv_ics
protectedinherited

◆ _geometric_search_data

GeometricSearchData FEProblemBase::_geometric_search_data
protectedinherited

◆ _ghosted_elems

std::set<dof_id_type> SubProblem::_ghosted_elems
protectedinherited

◆ _grad_phi_zero

std::vector<VariablePhiGradient> FEProblemBase::_grad_phi_zero
inherited

◆ _grad_zero

std::vector<VariableGradient> FEProblemBase::_grad_zero
inherited

◆ _has_active_elemental_moose_variables

std::vector<unsigned int> SubProblem::_has_active_elemental_moose_variables
protectedinherited

Whether or not there is currently a list of active elemental moose variables.

Definition at line 1080 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 3468 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 3465 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 3562 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 3480 of file FEProblemBase.h.

Referenced by FEProblemBase::meshChanged().

◆ _has_internal_edge_residual_objects

bool FEProblemBase::_has_internal_edge_residual_objects
privateinherited

Whether the problem has dgkernels or interface kernels.

Definition at line 3728 of file FEProblemBase.h.

Referenced by FEProblemBase::addDGKernel(), FEProblemBase::addInterfaceKernel(), and FEProblemBase::hasNeighborCoupling().

◆ _has_jacobian

bool FEProblemBase::_has_jacobian
protectedinherited

Indicates if the Jacobian was computed.

Definition at line 3486 of file FEProblemBase.h.

Referenced by FEProblemBase::computeJacobianTags(), FEProblemBase::hasJacobian(), FEProblemBase::meshChanged(), and FEProblemBase::prepare().

◆ _has_kokkos_objects

bool FEProblemBase::_has_kokkos_objects = false
privateinherited

Whether we have any Kokkos objects.

Definition at line 3794 of file FEProblemBase.h.

Referenced by FEProblemBase::hasKokkosObjects(), FEProblemBase::init(), and FEProblemBase::initElementStatefulProps().

◆ _has_kokkos_residual_objects

bool FEProblemBase::_has_kokkos_residual_objects = false
privateinherited

Whether we have any Kokkos residual objects.

Definition at line 3797 of file FEProblemBase.h.

Referenced by FEProblemBase::hasKokkosResidualObjects().

◆ _has_mortar

bool FEProblemBase::_has_mortar
privateinherited

Whether the simulation requires mortar coupling.

Definition at line 3750 of file FEProblemBase.h.

Referenced by FEProblemBase::createMortarInterface(), and FEProblemBase::hasMortarCoupling().

◆ _has_nonlocal_coupling

bool FEProblemBase::_has_nonlocal_coupling
protectedinherited

◆ _has_time_integrator

bool FEProblemBase::_has_time_integrator
protectedinherited

Indicates whether or not this executioner has a time integrator (during setup)

Definition at line 3559 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 1115 of file SubProblem.h.

Referenced by SubProblem::haveADObjects(), SubProblem::haveADObjects(), DisplacedProblem::haveADObjects(), and FEProblemBase::haveADObjects().

◆ _have_fv

bool FEProblemBase::_have_fv = false
privateinherited

Whether we are performing some calculations with finite volume discretizations.

Definition at line 3780 of file FEProblemBase.h.

Referenced by FEProblemBase::haveFV(), and FEProblemBase::needFV().

◆ _ics

InitialConditionWarehouse FEProblemBase::_ics
protectedinherited

Initial condition storage

Definition at line 3313 of file FEProblemBase.h.

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

◆ _identify_variable_groups_in_nl

const bool FEProblemBase::_identify_variable_groups_in_nl
privateinherited

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

Definition at line 3772 of file FEProblemBase.h.

Referenced by FEProblemBase::identifyVariableGroupsInNL().

◆ _ignore_zeros_in_jacobian

bool FEProblemBase::_ignore_zeros_in_jacobian
privateinherited

Whether to ignore zeros in the Jacobian, thereby leading to a reduced sparsity pattern.

Definition at line 3712 of file FEProblemBase.h.

Referenced by FEProblemBase::ignoreZerosInJacobian(), FEProblemBase::setIgnoreZerosInJacobian(), and FEProblemBase::setPreserveMatrixSparsityPattern().

◆ _immediately_print_invalid_solution

const bool& FEProblemBase::_immediately_print_invalid_solution
privateinherited

Definition at line 3722 of file FEProblemBase.h.

Referenced by FEProblemBase::immediatelyPrintInvalidSolution().

◆ _indicators

MooseObjectWarehouse<Indicator> FEProblemBase::_indicators
protectedinherited

◆ _initialized

bool FEProblemBase::_initialized
protectedinherited

◆ _input_file_saved

bool FEProblemBase::_input_file_saved
protectedinherited

whether input file has been written

Definition at line 3462 of file FEProblemBase.h.

◆ _interface_kernel_integrity_check

const bool FEProblemBase::_interface_kernel_integrity_check
protectedinherited

Whether to check that interface kernel variables match the orientation of their boundaries.

Definition at line 3526 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 3384 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 3592 of file FEProblemBase.h.

Referenced by FEProblemBase::FEProblemBase(), FEProblemBase::petscOptionsInserted(), FEProblemBase::solve(), and FEProblemBase::solveLinearSystem().

◆ _kernel_coverage_blocks

std::vector<SubdomainName> FEProblemBase::_kernel_coverage_blocks
protectedinherited

◆ _kernel_coverage_check

CoverageCheckMode FEProblemBase::_kernel_coverage_check
protectedinherited

Determines whether and which subdomains are to be checked to ensure that they have an active kernel.

Definition at line 3514 of file FEProblemBase.h.

Referenced by FEProblemBase::checkProblemIntegrity(), FEProblemBase::FEProblemBase(), FEProblemBase::setKernelCoverageCheck(), and FEProblemBase::setKernelCoverageCheck().

◆ _kokkos_assembly

Moose::Kokkos::Assembly FEProblemBase::_kokkos_assembly
protectedinherited

◆ _kokkos_bnd_material_props

Moose::Kokkos::MaterialPropertyStorage& FEProblemBase::_kokkos_bnd_material_props
protectedinherited

◆ _kokkos_fe_systems

Moose::Kokkos::Array<Moose::Kokkos::FESystem> FEProblemBase::_kokkos_fe_systems
protectedinherited

FESystem array - sparsely populated (only slots for systems needing a Kokkos::FESystem)

Definition at line 3276 of file FEProblemBase.h.

Referenced by FEProblemBase::getKokkosFESystems(), and FEProblemBase::getKokkosFESystems().

◆ _kokkos_functions

MooseObjectWarehouse<Moose::FunctionBase> FEProblemBase::_kokkos_functions
protectedinherited

◆ _kokkos_material_props

Moose::Kokkos::MaterialPropertyStorage& FEProblemBase::_kokkos_material_props
protectedinherited

◆ _kokkos_materials

MaterialWarehouse FEProblemBase::_kokkos_materials
protectedinherited

◆ _kokkos_mesh_initialization_hooks

std::vector<std::function<void()> > FEProblemBase::_kokkos_mesh_initialization_hooks
privateinherited

Container holding hooks for functions that need to be called after Kokkos mesh initialization.

Definition at line 3800 of file FEProblemBase.h.

Referenced by FEProblemBase::addKokkosMeshInitializationHook().

◆ _kokkos_neighbor_material_props

Moose::Kokkos::MaterialPropertyStorage& FEProblemBase::_kokkos_neighbor_material_props
protectedinherited

◆ _kokkos_systems

Moose::Kokkos::Array<Moose::Kokkos::System> FEProblemBase::_kokkos_systems
protectedinherited

System array - sparsely populated (only slots for systems needing a Kokkos::System)

Definition at line 3274 of file FEProblemBase.h.

Referenced by FEProblemBase::getKokkosSystems(), and FEProblemBase::getKokkosSystems().

◆ _line_search

std::shared_ptr<LineSearch> FEProblemBase::_line_search
protectedinherited

◆ _linear_convergence_names

std::optional<std::vector<ConvergenceName> > FEProblemBase::_linear_convergence_names
protectedinherited

Linear system(s) convergence name(s) (if any)

Definition at line 3184 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 3198 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 3228 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 3195 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 1053 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 1071 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 1056 of file SubProblem.h.

Referenced by SubProblem::checkBoundaryMatProps(), SubProblem::getMaterialPropertyBoundaryIDs(), SubProblem::hasBoundaryMaterialProperty(), and SubProblem::storeBoundaryMatPropName().

◆ _map_boundary_material_props_check

std::map<BoundaryID, std::multimap<std::string, std::string> > SubProblem::_map_boundary_material_props_check
protectedinherited

◆ _markers

MooseObjectWarehouse<Marker> FEProblemBase::_markers
protectedinherited

◆ _material_coverage_blocks

std::vector<SubdomainName> FEProblemBase::_material_coverage_blocks
protectedinherited

◆ _material_coverage_check

CoverageCheckMode FEProblemBase::_material_coverage_check
protectedinherited

Determines whether and which subdomains are to be checked to ensure that they have an active material.

Definition at line 3532 of file FEProblemBase.h.

Referenced by FEProblemBase::checkProblemIntegrity(), FEProblemBase::FEProblemBase(), FEProblemBase::setMaterialCoverageCheck(), and FEProblemBase::setMaterialCoverageCheck().

◆ _material_dependency_check

const bool FEProblemBase::_material_dependency_check
protectedinherited

Determines whether a check to verify material dependencies on every subdomain.

Definition at line 3542 of file FEProblemBase.h.

Referenced by FEProblemBase::checkProblemIntegrity().

◆ _material_prop_registry

MaterialPropertyRegistry FEProblemBase::_material_prop_registry
protectedinherited

◆ _material_property_requested

std::set<std::string> SubProblem::_material_property_requested
protectedinherited

set containing all material property names that have been requested by getMaterialProperty*

Definition at line 1063 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 1045 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 3553 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 3556 of file FEProblemBase.h.

Referenced by FEProblemBase::addAuxScalarVariable(), and FEProblemBase::getMaxScalarOrder().

◆ _mesh

MooseMesh& FEProblemBase::_mesh
protectedinherited

◆ _mesh_divisions

MooseObjectWarehouse<MeshDivision> FEProblemBase::_mesh_divisions
protectedinherited

Warehouse to store mesh divisions NOTE: this could probably be moved to the MooseMesh instead of the Problem Time (and people's uses) will tell where this fits best.

Definition at line 3293 of file FEProblemBase.h.

Referenced by FEProblemBase::addMeshDivision(), and FEProblemBase::getMeshDivision().

◆ _metaname

const RestartableDataMapName Restartable::_metaname
privateinherited

Restartable metadata name.

Definition at line 247 of file Restartable.h.

Referenced by Restartable::registerRestartableDataOnApp().

◆ _mfem_solver_definitions

std::map<std::string, MFEMSolverDefinition> MFEMProblem::_mfem_solver_definitions
protectedinherited

Solver definitions recorded by AddMFEMSolverAction before the dependency resolver constructs them.

Each key is the user-provided solver object name, which corresponds to a child block name under [Solvers]. Solver parameters of type MFEMSolverName refer to these same keys when declaring dependencies between solver objects.

Definition at line 471 of file MFEMProblem.h.

Referenced by MFEMProblem::addMFEMSolver(), and MFEMProblem::resolveMFEMSolvers().

◆ _mortar_data

std::unique_ptr<MortarInterfaceWarehouse> FEProblemBase::_mortar_data
protectedinherited

◆ _multi_apps

ExecuteMooseObjectWarehouse<MultiApp> FEProblemBase::_multi_apps
protectedinherited

◆ _multiapp_fixed_point_convergence_name

std::optional<ConvergenceName> FEProblemBase::_multiapp_fixed_point_convergence_name
protectedinherited

◆ _name

const std::string& MooseBase::_name
protectedinherited

The name of this class.

Definition at line 381 of file MooseBase.h.

Referenced by AddFieldSplitAction::act(), AddBCAction::act(), AddConstraintAction::act(), AddControlAction::act(), AddConvergenceAction::act(), AddCorrectorAction::act(), AddDamperAction::act(), AddDGKernelAction::act(), AddDiracKernelAction::act(), AddDistributionAction::act(), AddFunctionAction::act(), AddFunctorMaterialAction::act(), AddFVBCAction::act(), AddFVGradientMethodAction::act(), AddFVInitialConditionAction::act(), AddFVInterfaceKernelAction::act(), AddFVInterpolationMethodAction::act(), AddFVKernelAction::act(), AddHDGKernelAction::act(), AddIndicatorAction::act(), AddInitialConditionAction::act(), AddInterfaceKernelAction::act(), AddKernelAction::act(), AddLinearFVBCAction::act(), AddLinearFVKernelAction::act(), AddMarkerAction::act(), AddMaterialAction::act(), AddMeshDivisionAction::act(), AddMeshGeneratorAction::act(), AddMeshModifiersAction::act(), AddMultiAppAction::act(), AddNodalKernelAction::act(), AddOutputAction::act(), AddPositionsAction::act(), AddPostprocessorAction::act(), AddReporterAction::act(), AddSamplerAction::act(), AddScalarKernelAction::act(), AddTimesAction::act(), AddTimeStepperAction::act(), AddTransferAction::act(), AddUserObjectAction::act(), AddVectorPostprocessorAction::act(), PartitionerAction::act(), ReadExecutorParamsAction::act(), SetupPreconditionerAction::act(), SetupTimeIntegratorAction::act(), AddMFEMComplexBCComponentAction::act(), AddMFEMComplexKernelComponentAction::act(), AddMFEMFESpaceAction::act(), AddMFEMFESpaceHierarchyAction::act(), AddMFEMProblemComposerAction::act(), AddMFEMSolverAction::act(), AddMFEMSubMeshAction::act(), AddMFEMWeakFormAction::act(), ADPiecewiseLinearInterpolationMaterial::ADPiecewiseLinearInterpolationMaterial(), BatchMeshGeneratorAction::BatchMeshGeneratorAction(), PiecewiseLinearBase::buildInterpolation(), CombinerGenerator::CombinerGenerator(), Executor::Executor(), ExtraIDIntegralReporter::ExtraIDIntegralReporter(), MultiApp::fillPositions(), CentroidMultiApp::fillPositions(), QuadraturePointMultiApp::fillPositions(), FunctionDT::FunctionDT(), FillBetweenCurvesGenerator::generate(), FillBetweenPointVectorsGenerator::generate(), FillBetweenSidesetsGenerator::generate(), MooseBase::MooseBase(), MooseBase::name(), ReferenceResidualConvergence::nonlinearConvergenceSetup(), ParsedFunctorMaterialTempl< is_ad >::ParsedFunctorMaterialTempl(), PiecewiseBilinear::PiecewiseBilinear(), PiecewiseLinearInterpolationMaterial::PiecewiseLinearInterpolationMaterial(), PiecewiseBase::setData(), and AddVariableAction::varName().

◆ _need_to_add_default_multiapp_fixed_point_convergence

bool FEProblemBase::_need_to_add_default_multiapp_fixed_point_convergence
protectedinherited

Flag that the problem needs to add the default fixed point convergence.

Definition at line 3214 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 3212 of file FEProblemBase.h.

Referenced by FEProblemBase::needToAddDefaultNonlinearConvergence(), and FEProblemBase::setNeedToAddDefaultNonlinearConvergence().

◆ _need_to_add_default_steady_state_convergence

bool FEProblemBase::_need_to_add_default_steady_state_convergence
protectedinherited

Flag that the problem needs to add the default steady convergence.

Definition at line 3216 of file FEProblemBase.h.

Referenced by FEProblemBase::needToAddDefaultSteadyStateConvergence(), and FEProblemBase::setNeedToAddDefaultSteadyStateConvergence().

◆ _needs_old_newton_iter

bool FEProblemBase::_needs_old_newton_iter
protectedinherited

Indicates that we need to compute variable values for previous Newton iteration.

Definition at line 3489 of file FEProblemBase.h.

◆ _neighbor_material_props

MaterialPropertyStorage& FEProblemBase::_neighbor_material_props
protectedinherited

◆ _nl

std::vector<std::shared_ptr<NonlinearSystemBase> > FEProblemBase::_nl
protectedinherited

The nonlinear systems.

Definition at line 3243 of file FEProblemBase.h.

Referenced by FEProblemBase::addBoundaryCondition(), FEProblemBase::addConstraint(), FEProblemBase::addDamper(), FEProblemBase::addDGKernel(), FEProblemBase::addDiracKernel(), FEProblemBase::addHDGKernel(), FEProblemBase::addInterfaceKernel(), FEProblemBase::addKernel(), FEProblemBase::addNodalKernel(), FEProblemBase::addPredictor(), FEProblemBase::addScalarKernel(), FEProblemBase::addTimeIntegrator(), FEProblemBase::bumpAllQRuleOrder(), FEProblemBase::bumpVolumeQRuleOrder(), FEProblemBase::checkNonlocalCoupling(), FEProblemBase::checkProblemIntegrity(), FEProblemBase::computeResidualL2Norm(), FEProblemBase::computingPreSMOResidual(), FEProblemBase::currentNlSysNum(), FEProblemBase::customSetup(), DumpObjectsProblem::DumpObjectsProblem(), ExternalProblem::ExternalProblem(), FEProblemBase::finalNonlinearResidual(), FEProblemBase::getNonlinearEvaluableElementRange(), FEProblemBase::getNonlinearSystem(), FEProblemBase::getNonlinearSystemBase(), FEProblemBase::getNonlinearSystemBase(), FEProblemBase::init(), FEProblemBase::initXFEM(), FEProblemBase::jacobianSetup(), FEProblemBase::meshChanged(), FEProblemBase::needBoundaryMaterialOnSide(), FEProblemBase::needInterfaceMaterialOnSide(), FEProblemBase::needInternalNeighborSideMaterial(), FEProblemBase::nLinearIterations(), FEProblemBase::nNonlinearIterations(), FEProblemBase::onTimestepBegin(), FEProblemBase::prepare(), FEProblemBase::prepareFace(), FEProblemBase::projectInitialConditionOnCustomRange(), FEProblemBase::projectSolution(), FEProblemBase::reinitDirac(), FEProblemBase::reinitNeighbor(), FEProblemBase::reinitNeighborPhys(), FEProblemBase::reinitNeighborPhys(), FEProblemBase::reinitNode(), FEProblemBase::reinitNodeFace(), FEProblemBase::reinitScalars(), FEProblemBase::residualSetup(), FEProblemBase::setCurrentNonlinearSystem(), FEProblemBase::setNeighborSubdomainID(), FEProblemBase::setNeighborSubdomainID(), FEProblemBase::setNonlinearConvergenceNames(), FEProblemBase::setNonlocalCouplingMatrix(), FEProblemBase::setResidual(), FEProblemBase::setResidualObjectParamsAndLog(), FEProblemBase::setupDampers(), FEProblemBase::subdomainSetup(), FEProblemBase::systemBaseNonlinear(), FEProblemBase::systemBaseNonlinear(), FEProblemBase::updateActiveObjects(), and FEProblemBase::updateMeshXFEM().

◆ _nl_evaluable_local_elem_range

std::unique_ptr<libMesh::ConstElemRange> FEProblemBase::_nl_evaluable_local_elem_range
protectedinherited

◆ _nl_sys_name_to_num

std::map<NonlinearSystemName, unsigned int> FEProblemBase::_nl_sys_name_to_num
protectedinherited

Map from nonlinear system name to number.

Definition at line 3246 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 3182 of file FEProblemBase.h.

Referenced by FEProblemBase::getNonlinearConvergenceNames(), and FEProblemBase::setNonlinearConvergenceNames().

◆ _nonlocal_cm

std::vector<libMesh::CouplingMatrix> FEProblemBase::_nonlocal_cm
privateinherited

◆ _nonlocal_integrated_bcs

MooseObjectWarehouse<IntegratedBCBase> FEProblemBase::_nonlocal_integrated_bcs
protectedinherited

◆ _nonlocal_kernels

MooseObjectWarehouse<KernelBase> FEProblemBase::_nonlocal_kernels
protectedinherited

◆ _not_zeroed_tagged_vectors

std::unordered_set<TagID> SubProblem::_not_zeroed_tagged_vectors
protectedinherited

the list of vector tags that will not be zeroed when all other tags are

Definition at line 1118 of file SubProblem.h.

Referenced by SubProblem::addNotZeroedVectorTag(), FEProblemBase::restoreSolutions(), and SubProblem::vectorTagNotZeroed().

◆ _notify_when_mesh_changes

std::vector<MeshChangedInterface *> FEProblemBase::_notify_when_mesh_changes
protectedinherited

Objects to be notified when the mesh changes.

Definition at line 3387 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 3390 of file FEProblemBase.h.

Referenced by FEProblemBase::meshDisplaced(), and FEProblemBase::notifyWhenMeshDisplaces().

◆ _num_concurrent_multiapps

const unsigned int FEProblemBase::_num_concurrent_multiapps
protectedinherited

Number of concurrent applications being solved at the same time.

Definition at line 3372 of file FEProblemBase.h.

Referenced by FEProblemBase::execMultiApps(), FEProblemBase::numConcurrentMultiApps(), and FEProblemBase::partitionConcurrentMultiApps().

◆ _num_grid_steps

unsigned int FEProblemBase::_num_grid_steps
privateinherited

◆ _num_linear_sys

const std::size_t FEProblemBase::_num_linear_sys
protectedinherited

◆ _num_nl_sys

const std::size_t FEProblemBase::_num_nl_sys
protectedinherited

◆ _num_type

NumericType MFEMProblem::_num_type
protectedinherited

The numeric representation currently active for this problem.

Definition at line 463 of file MFEMProblem.h.

Referenced by MFEMProblem::getNumericType(), MFEMEigenproblem(), and MFEMProblem::validateVariableNumericType().

◆ _parallel_barrier_messaging

bool FEProblemBase::_parallel_barrier_messaging
protectedinherited

◆ _parent

const ParallelParamObject& DataFileInterface::_parent
privateinherited

◆ _pars

const InputParameters& MooseBase::_pars
protectedinherited

The object's parameters.

Definition at line 384 of file MooseBase.h.

Referenced by AddAuxKernelAction::act(), AddFVICAction::act(), AddICAction::act(), CommonOutputAction::act(), ComposeTimeStepperAction::act(), CreateProblemAction::act(), CreateProblemDefaultAction::act(), SetupDebugAction::act(), SetupMeshAction::act(), AddMFEMComplexBCComponentAction::act(), AddMFEMComplexKernelComponentAction::act(), FunctorMaterial::addFunctorPropertyByBlocks(), PNGOutput::calculateRescalingValues(), MooseBase::callMooseError(), MooseBase::connectControllableParams(), Console::Console(), MooseApp::copyInputs(), MaterialBase::declareADProperty(), Moose::Kokkos::MaterialBase::declareKokkosOnDemandProperty(), Moose::Kokkos::MaterialBase::declareKokkosProperty(), MaterialBase::declareProperty(), FEProblemSolve::FEProblemSolve(), FileMeshGenerator::generate(), MooseBase::getBase(), MooseBase::getCheckedPointerParam(), MaterialBase::getGenericZeroMaterialProperty(), MooseBase::getHitNode(), MeshGenerator::getMeshGeneratorNameFromParam(), MeshGenerator::getMeshGeneratorNamesFromParam(), MooseBase::getParam(), MooseBase::getParam(), MooseBase::hasBase(), MeshGenerator::hasGenerateCSG(), MeshGenerator::hasGenerateData(), AddVariableAction::init(), AdvancedOutput::initExecutionTypes(), EigenProblemSolve::initialSetup(), Console::initialSetup(), MooseBase::isParamSetByUser(), MooseBase::isParamValid(), MultiApp::keepSolutionDuringRestore(), MooseBase::messagePrefix(), MooseApp::MooseApp(), MooseBase::MooseBase(), MultiSystemSolveObject::MultiSystemSolveObject(), MooseApp::outputMachineReadableData(), MooseBase::paramError(), MooseBase::parameters(), MooseBase::paramInfo(), MooseBase::paramWarning(), MooseMesh::prepare(), MooseBase::queryParam(), MooseMesh::setCoordSystem(), MooseMesh::setPartitionerHelper(), SetupMeshAction::setupMesh(), TransientBase::setupTimeIntegrator(), MooseApp::showInputs(), and MooseBase::uniqueName().

◆ _pbblf_functors

std::vector<std::map<std::string, std::unique_ptr<Moose::FunctorAbstract> > > SubProblem::_pbblf_functors
privateinherited

◆ _petsc_option_data_base

PetscOptions FEProblemBase::_petsc_option_data_base
protectedinherited

◆ _petsc_options

Moose::PetscSupport::PetscOptions FEProblemBase::_petsc_options
protectedinherited

PETSc option storage.

Definition at line 3586 of file FEProblemBase.h.

Referenced by FEProblemBase::getPetscOptions(), FEProblemBase::solve(), and FEProblemBase::solveLinearSystem().

◆ _pg_moose_app

MooseApp& PerfGraphInterface::_pg_moose_app
protectedinherited

The MooseApp that owns the PerfGraph.

Definition at line 135 of file PerfGraphInterface.h.

Referenced by PerfGraphInterface::perfGraph().

◆ _phi_zero

std::vector<VariablePhiValue> FEProblemBase::_phi_zero
inherited

◆ _point_zero

std::vector<Point> FEProblemBase::_point_zero
inherited

Definition at line 2628 of file FEProblemBase.h.

Referenced by FEProblemBase::FEProblemBase().

◆ _prefix

const std::string PerfGraphInterface::_prefix
protectedinherited

A prefix to use for all sections.

Definition at line 138 of file PerfGraphInterface.h.

Referenced by PerfGraphInterface::timedSectionName().

◆ _preserve_matrix_sparsity_pattern

bool FEProblemBase::_preserve_matrix_sparsity_pattern
privateinherited

Whether to preserve the system matrix / Jacobian sparsity pattern, using 0-valued entries usually.

Definition at line 3714 of file FEProblemBase.h.

Referenced by FEProblemBase::preserveMatrixSparsityPattern(), and FEProblemBase::setPreserveMatrixSparsityPattern().

◆ _previous_multiapp_fp_aux_solution_required

bool FEProblemBase::_previous_multiapp_fp_aux_solution_required
protectedinherited

Indicates we need to save the previous multiapp fixed-point iteration auxiliary variable values.

Definition at line 3496 of file FEProblemBase.h.

Referenced by FEProblemBase::needsPreviousMultiAppFixedPointIterationAuxiliary(), and FEProblemBase::needsPreviousMultiAppFixedPointIterationAuxiliary().

◆ _previous_multiapp_fp_nl_solution_required

std::vector<bool> FEProblemBase::_previous_multiapp_fp_nl_solution_required
protectedinherited

Indicates we need to save the previous multiapp fixed-point iteration solver variable values.

Definition at line 3494 of file FEProblemBase.h.

Referenced by FEProblemBase::needsPreviousMultiAppFixedPointIterationSolution(), and FEProblemBase::needsPreviousMultiAppFixedPointIterationSolution().

◆ _previous_multisystem_fp_aux_solution_required

bool FEProblemBase::_previous_multisystem_fp_aux_solution_required
protectedinherited

Indicates we need to save the previous multi-system fixed-point iteration auxiliary variable values.

Definition at line 3500 of file FEProblemBase.h.

Referenced by FEProblemBase::needsPreviousMultiSystemFixedPointIterationAuxiliary(), and FEProblemBase::needsPreviousMultiSystemFixedPointIterationAuxiliary().

◆ _previous_multisystem_fp_nl_solution_required

std::vector<bool> FEProblemBase::_previous_multisystem_fp_nl_solution_required
protectedinherited

Indicates we need to save the previous multi-system fixed-point iteration solver variable values.

Definition at line 3498 of file FEProblemBase.h.

Referenced by FEProblemBase::needsPreviousMultiSystemFixedPointIterationSolution(), and FEProblemBase::needsPreviousMultiSystemFixedPointIterationSolution().

◆ _previous_nl_solution_required

bool FEProblemBase::_previous_nl_solution_required
protectedinherited

Indicates we need to save the previous NL iteration variable values.

Definition at line 3492 of file FEProblemBase.h.

Referenced by FEProblemBase::createTagSolutions().

◆ _print_execution_on

ExecFlagEnum FEProblemBase::_print_execution_on
privateinherited

When to print the execution of loops.

Definition at line 3769 of file FEProblemBase.h.

Referenced by FEProblemBase::setExecutionPrinting(), and FEProblemBase::shouldPrintExecution().

◆ _problem_composer

std::shared_ptr<MFEMProblemComposer> MFEMProblem::_problem_composer
protectedinherited

The problem operator builders for this mfem problem.

Definition at line 479 of file MFEMProblem.h.

Referenced by MFEMProblem::addProblemComposer().

◆ _problem_data

MFEMProblemData MFEMProblem::_problem_data
protectedinherited

◆ _problem_operators

std::vector<std::shared_ptr<Moose::MFEM::ProblemOperatorBase> > MFEMProblem::_problem_operators
protectedinherited

Vector of MFEM problem operators executed in this problem.

Definition at line 483 of file MFEMProblem.h.

Referenced by MFEMProblem::getProblemOperators(), and MFEMProblem::setProblemOperators().

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

Referenced by FEProblemBase::FEProblemBase().

◆ _regard_general_exceptions_as_errors

const bool FEProblemBase::_regard_general_exceptions_as_errors
privateinherited

If we catch an exception during residual/Jacobian evaluaton for which we don't have specific handling, immediately error instead of allowing the time step to be cut.

Definition at line 3784 of file FEProblemBase.h.

Referenced by FEProblemBase::translateCaughtException().

◆ _reinit_displaced_elem

bool FEProblemBase::_reinit_displaced_elem
protectedinherited

◆ _reinit_displaced_face

bool FEProblemBase::_reinit_displaced_face
protectedinherited

◆ _reinit_displaced_neighbor

bool FEProblemBase::_reinit_displaced_neighbor
protectedinherited

◆ _reporter_data

ReporterData FEProblemBase::_reporter_data
protectedinherited

◆ _req

Restartable::ManagedValue<RestartableEquationSystems> FEProblemBase::_req
privateinherited

The EquationSystems object, wrapped for restart.

Definition at line 3135 of file FEProblemBase.h.

Referenced by FEProblemBase::es(), and FEProblemBase::getRestartableEquationSystems().

◆ _requires_nonlocal_coupling

bool FEProblemBase::_requires_nonlocal_coupling
privateinherited

◆ _restartable_app

MooseApp& Restartable::_restartable_app
protectedinherited

Reference to the application.

Definition at line 234 of file Restartable.h.

Referenced by Restartable::registerRestartableDataOnApp(), and Restartable::registerRestartableNameWithFilterOnApp().

◆ _restartable_name

std::string Restartable::_restartable_name
privateinherited

The name of the object.

Definition at line 250 of file Restartable.h.

Referenced by Restartable::declareRestartableDataWithObjectNameWithContext(), and Restartable::restartableName().

◆ _restartable_read_only

const bool Restartable::_restartable_read_only
protectedinherited

Flag for toggling read only status (see ReporterData)

Definition at line 243 of file Restartable.h.

Referenced by Restartable::registerRestartableDataOnApp().

◆ _restartable_system_name

const std::string Restartable::_restartable_system_name
protectedinherited

The system name this object is in.

Definition at line 237 of file Restartable.h.

Referenced by Restartable::restartableName().

◆ _restartable_tid

const THREAD_ID Restartable::_restartable_tid
protectedinherited

The thread ID for this object.

Definition at line 240 of file Restartable.h.

Referenced by Restartable::declareRestartableDataHelper().

◆ _restore_original_nonzero_pattern

const bool FEProblemBase::_restore_original_nonzero_pattern
privateinherited

Whether we should restore the original nonzero pattern for every Jacobian evaluation.

This option is useful if the sparsity pattern is constantly changing and you are using hash table assembly or if you wish to continually restore the matrix to the originally preallocated sparsity pattern computed by relationship managers.

Definition at line 3710 of file FEProblemBase.h.

Referenced by FEProblemBase::computeJacobianTags(), and FEProblemBase::restoreOriginalNonzeroPattern().

◆ _root_alg_gf_to_sys_clones

std::unordered_map<libMesh::GhostingFunctor *, std::vector<std::shared_ptr<libMesh::GhostingFunctor> > > SubProblem::_root_alg_gf_to_sys_clones
privateinherited

A map from a root algebraic ghosting functor, e.g.

the ghosting functor passed into removeAlgebraicGhostingFunctor, to its clones in other systems, e.g. systems other than system 0

Definition at line 1196 of file SubProblem.h.

Referenced by SubProblem::cloneAlgebraicGhostingFunctor(), and SubProblem::removeAlgebraicGhostingFunctor().

◆ _root_coupling_gf_to_sys_clones

std::unordered_map<libMesh::GhostingFunctor *, std::vector<std::shared_ptr<libMesh::GhostingFunctor> > > SubProblem::_root_coupling_gf_to_sys_clones
privateinherited

A map from a root coupling ghosting functor, e.g.

the ghosting functor passed into removeCouplingGhostingFunctor, to its clones in other systems, e.g. systems other than system 0

Definition at line 1203 of file SubProblem.h.

Referenced by SubProblem::cloneCouplingGhostingFunctor(), and SubProblem::removeCouplingGhostingFunctor().

◆ _safe_access_tagged_matrices

bool SubProblem::_safe_access_tagged_matrices
protectedinherited

◆ _safe_access_tagged_vectors

bool SubProblem::_safe_access_tagged_vectors
protectedinherited

◆ _scalar_ics

ScalarInitialConditionWarehouse FEProblemBase::_scalar_ics
protectedinherited

◆ _scalar_zero

std::vector<VariableValue> FEProblemBase::_scalar_zero
inherited

◆ _second_phi_zero

std::vector<VariablePhiSecond> FEProblemBase::_second_phi_zero
inherited

◆ _second_zero

std::vector<VariableSecond> FEProblemBase::_second_zero
inherited

◆ _show_chain_control_data

bool SubProblem::_show_chain_control_data
privateinherited

Whether to output a list of all the chain control data.

Definition at line 1168 of file SubProblem.h.

Referenced by SubProblem::initialSetup(), SubProblem::setChainControlDataOutput(), and SubProblem::timestepSetup().

◆ _show_functors

bool SubProblem::_show_functors
privateinherited

Whether to output a list of the functors used and requested (currently only at initialSetup)

Definition at line 1165 of file SubProblem.h.

Referenced by SubProblem::initialSetup(), and SubProblem::setFunctorOutput().

◆ _show_invalid_solution_console

const bool FEProblemBase::_show_invalid_solution_console
privateinherited

Definition at line 3721 of file FEProblemBase.h.

Referenced by FEProblemBase::showInvalidSolutionConsole().

◆ _si_moose_base

const MooseBase& SolutionInvalidInterface::_si_moose_base
privateinherited

◆ _si_problem

const FEProblemBase* SolutionInvalidInterface::_si_problem
privateinherited

A pointer to FEProblem base.

Definition at line 114 of file SolutionInvalidInterface.h.

Referenced by SolutionInvalidInterface::flagInvalidSolutionInternal().

◆ _side_uo_interface_mat_prop_integrity_check

const bool FEProblemBase::_side_uo_interface_mat_prop_integrity_check
protectedinherited

Whether to check that side user objects do not consume interface material properties.

Definition at line 3529 of file FEProblemBase.h.

Referenced by FEProblemBase::sideUOInterfaceMatPropIntegrityCheck().

◆ _skip_exception_check

bool FEProblemBase::_skip_exception_check
protectedinherited

If or not skip 'exception and stop solve'.

Definition at line 3474 of file FEProblemBase.h.

Referenced by FEProblemBase::checkExceptionAndStopSolve(), FEProblemBase::initialSetup(), and FEProblemBase::skipExceptionCheck().

◆ _skip_nl_system_check

const bool FEProblemBase::_skip_nl_system_check
privateinherited

Definition at line 3718 of file FEProblemBase.h.

Referenced by FEProblemBase::checkProblemIntegrity(), and FEProblemBase::init().

◆ _snesmf_reuse_base

bool FEProblemBase::_snesmf_reuse_base
protectedinherited

If or not to resuse the base vector for matrix-free calculation.

Definition at line 3471 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 3477 of file FEProblemBase.h.

Referenced by FEProblemBase::isSNESMFReuseBaseSetbyUser(), and FEProblemBase::setSNESMFReuseBase().

◆ _solution_state_data

Moose::MFEM::SolutionState& MFEMProblem::_solution_state_data
protectedinherited

Restartable MFEM solution state associated with this problem.

Definition at line 474 of file MFEMProblem.h.

◆ _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 3261 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 3255 of file FEProblemBase.h.

Referenced by FEProblemBase::addObjectParamsHelper(), FEProblemBase::addTimeIntegrator(), FEProblemBase::addVariable(), FEProblemBase::advanceState(), FEProblemBase::computeSystems(), FEProblemBase::copySolutionsBackwards(), FEProblemBase::createQRules(), FEProblemBase::createTagMatrices(), 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::getSolverSystem(), FEProblemBase::getStandardVariable(), FEProblemBase::getSystem(), FEProblemBase::getSystemBase(), FEProblemBase::getSystemBase(), FEProblemBase::getVariable(), FEProblemBase::getVariableNames(), FEProblemBase::getVectorVariable(), FEProblemBase::hasScalarVariable(), FEProblemBase::hasSolutionState(), FEProblemBase::hasSolverVariable(), FEProblemBase::hasVariable(), FEProblem::init(), FEProblemBase::init(), FEProblemBase::meshChanged(), FEProblemBase::needSolutionState(), FEProblemBase::outputStep(), FEProblemBase::prepare(), FEProblemBase::projectSolution(), FEProblemBase::reinitElem(), FEProblemBase::reinitElemFace(), FEProblemBase::reinitElemPhys(), FEProblemBase::restoreOldSolutions(), FEProblemBase::restoreSolutions(), FEProblemBase::saveOldSolutions(), FEProblemBase::setAuxKernelParamsAndLog(), FEProblemBase::setCurrentSubdomainID(), Moose::PetscSupport::setSinglePetscOption(), FEProblemBase::setVariableAllDoFMap(), FEProblemBase::skipNextForwardSolutionCopyToOld(), FEProblemBase::solverSystemConverged(), FEProblemBase::systemBaseSolver(), FEProblemBase::systemBaseSolver(), FEProblemBase::systemNumForVariable(), and FEProblemBase::timestepSetup().

◆ _solver_var_to_sys_num

std::map<SolverVariableName, unsigned int> FEProblemBase::_solver_var_to_sys_num
protectedinherited

Map connecting variable names with their respective solver systems.

Definition at line 3258 of file FEProblemBase.h.

Referenced by FEProblemBase::addVariable(), and FEProblemBase::determineSolverSystem().

◆ _started_initial_setup

bool FEProblemBase::_started_initial_setup
privateinherited

At or beyond initialSteup stage.

Definition at line 3725 of file FEProblemBase.h.

Referenced by FEProblemBase::initialSetup(), and FEProblemBase::startedInitialSetup().

◆ _steady_state_convergence_name

std::optional<ConvergenceName> FEProblemBase::_steady_state_convergence_name
protectedinherited

◆ _subspace_dim

std::map<std::string, unsigned int> FEProblemBase::_subspace_dim
protectedinherited

Dimension of the subspace spanned by the vectors with a given prefix.

Definition at line 3280 of file FEProblemBase.h.

Referenced by FEProblemBase::initNullSpaceVectors(), and FEProblemBase::subspaceDim().

◆ _t_step

int& FEProblemBase::_t_step
protectedinherited

◆ _termination_requested

bool Problem::_termination_requested
protectedinherited

True if termination of the solve has been requested.

Definition at line 58 of file Problem.h.

Referenced by Problem::isSolveTerminationRequested(), and Problem::terminateSolve().

◆ _time

Real& FEProblemBase::_time
protectedinherited

◆ _time_old

Real& FEProblemBase::_time_old
protectedinherited

Definition at line 3205 of file FEProblemBase.h.

Referenced by FEProblemBase::FEProblemBase(), and FEProblemBase::timeOld().

◆ _time_older

Real& FEProblemBase::_time_older
protectedinherited

Definition at line 3206 of file FEProblemBase.h.

Referenced by FEProblemBase::FEProblemBase(), and FEProblemBase::timeOlder().

◆ _to_multi_app_transfers

ExecuteMooseObjectWarehouse<Transfer> FEProblemBase::_to_multi_app_transfers
protectedinherited

◆ _transfers

ExecuteMooseObjectWarehouse<Transfer> FEProblemBase::_transfers
protectedinherited

Normal Transfers.

Definition at line 3360 of file FEProblemBase.h.

Referenced by FEProblemBase::addTransfer(), and FEProblemBase::updateActiveObjects().

◆ _transient

bool FEProblemBase::_transient
protectedinherited

Definition at line 3203 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 3357 of file FEProblemBase.h.

Referenced by FEProblemBase::addMultiApp(), FEProblemBase::computeMultiAppsDT(), and FEProblemBase::updateActiveObjects().

◆ _trust_user_coupling_matrix

bool FEProblemBase::_trust_user_coupling_matrix = false
privateinherited

Whether to trust the user coupling matrix no matter what.

See https://github.com/idaholab/moose/issues/16395 for detailed background

Definition at line 3757 of file FEProblemBase.h.

Referenced by FEProblemBase::setCoupling(), and FEProblemBase::trustUserCouplingMatrix().

◆ _type

const std::string& MooseBase::_type
protectedinherited

◆ _typed_vector_tags

std::vector<std::vector<VectorTag> > SubProblem::_typed_vector_tags
privateinherited

The vector tags associated with each VectorTagType This is kept separate from _vector_tags for quick access into typed vector tags in places where we don't want to build a new vector every call (like in residual evaluation)

Definition at line 1178 of file SubProblem.h.

Referenced by SubProblem::addVectorTag(), SubProblem::getVectorTags(), and SubProblem::verifyVectorTags().

◆ _u_dot_old_requested

bool FEProblemBase::_u_dot_old_requested
privateinherited

Whether old solution time derivative needs to be stored.

Definition at line 3737 of file FEProblemBase.h.

Referenced by FEProblemBase::setUDotOldRequested(), and FEProblemBase::uDotOldRequested().

◆ _u_dot_requested

bool FEProblemBase::_u_dot_requested
privateinherited

Whether solution time derivative needs to be stored.

Definition at line 3731 of file FEProblemBase.h.

Referenced by FEProblemBase::setUDotRequested(), FEProblemBase::uDotOldRequested(), and FEProblemBase::uDotRequested().

◆ _u_dotdot_old_requested

bool FEProblemBase::_u_dotdot_old_requested
privateinherited

Whether old solution second time derivative needs to be stored.

Definition at line 3740 of file FEProblemBase.h.

Referenced by FEProblemBase::setUDotDotOldRequested(), and FEProblemBase::uDotDotOldRequested().

◆ _u_dotdot_requested

bool FEProblemBase::_u_dotdot_requested
privateinherited

Whether solution second time derivative needs to be stored.

Definition at line 3734 of file FEProblemBase.h.

Referenced by FEProblemBase::setUDotDotRequested(), FEProblemBase::uDotDotOldRequested(), and FEProblemBase::uDotDotRequested().

◆ _uo_aux_state_check

const bool FEProblemBase::_uo_aux_state_check
protectedinherited

Whether or not checking the state of uo/aux evaluation.

Definition at line 3545 of file FEProblemBase.h.

Referenced by FEProblemBase::execute(), and FEProblemBase::hasUOAuxStateCheck().

◆ _uo_jacobian_moose_vars

std::vector<std::vector<const MooseVariableFEBase *> > FEProblemBase::_uo_jacobian_moose_vars
protectedinherited

◆ _use_hash_table_matrix_assembly

const bool FEProblemBase::_use_hash_table_matrix_assembly
protectedinherited

Whether to assemble matrices using hash tables instead of preallocating matrix memory.

This can be a good option if the sparsity pattern changes throughout the course of the simulation

Definition at line 3618 of file FEProblemBase.h.

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

◆ _using_ad_mat_props

bool FEProblemBase::_using_ad_mat_props
protectedinherited

Automatic differentiaion (AD) flag which indicates whether any consumer has requested an AD material property or whether any suppier has declared an AD material property.

Definition at line 3606 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 3234 of file FEProblemBase.h.

◆ _var_dof_map

std::map<std::string, std::vector<dof_id_type> > SubProblem::_var_dof_map
inherited

◆ _vector_curl_zero

std::vector<VectorVariableCurl> FEProblemBase::_vector_curl_zero
inherited

◆ _vector_tags

std::vector<VectorTag> SubProblem::_vector_tags
privateinherited

◆ _vector_tags_name_map

std::map<TagName, TagID> SubProblem::_vector_tags_name_map
privateinherited

Map of vector tag TagName to TagID.

Definition at line 1181 of file SubProblem.h.

Referenced by SubProblem::addVectorTag(), SubProblem::getVectorTagID(), and SubProblem::verifyVectorTags().

◆ _vector_zero

std::vector<VectorVariableValue> FEProblemBase::_vector_zero
inherited

◆ _verbose_multiapps

bool FEProblemBase::_verbose_multiapps
protectedinherited

◆ _verbose_restore

bool FEProblemBase::_verbose_restore
protectedinherited

Whether or not to be verbose on solution restoration post a failed time step.

Definition at line 3574 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 3568 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 3446 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 1059 of file SubProblem.h.

Referenced by SubProblem::checkBlockMatProps(), FEProblemBase::checkDependMaterialsHelper(), and SubProblem::storeSubdomainZeroMatProp().

◆ _zero_boundary_material_props

std::map<BoundaryID, std::set<MaterialPropertyName> > SubProblem::_zero_boundary_material_props
protectedinherited

◆ app_param

const std::string MooseBase::app_param = "_moose_app"
staticinherited

◆ kokkos_object_param

const std::string MooseBase::kokkos_object_param = "_kokkos_object"
staticinherited

The name of the parameter that indicates an object is a Kokkos functor.

Definition at line 64 of file MooseBase.h.

Referenced by InputParameters::isKokkosObject().

◆ moose_base_param

const std::string MooseBase::moose_base_param = "_moose_base"
staticinherited

The name of the parameter that contains the moose system base.

Definition at line 61 of file MooseBase.h.

Referenced by InputParameters::getBase(), InputParameters::hasBase(), and InputParameters::registerBase().

◆ name_param

const std::string MooseBase::name_param = "_object_name"
staticinherited

◆ type_param

const std::string MooseBase::type_param = "_type"
staticinherited

◆ unique_name_param

const std::string MooseBase::unique_name_param = "_unique_name"
staticinherited

The name of the parameter that contains the unique object name.

Definition at line 57 of file MooseBase.h.

Referenced by InputParameterWarehouse::addInputParameters(), AppFactory::create(), InputParameterWarehouse::removeInputParameters(), MooseBase::uniqueName(), and MooseBase::validParams().

◆ usingCombinedWarningSolutionWarnings

MooseObject::usingCombinedWarningSolutionWarnings
inherited

Definition at line 67 of file MooseObject.h.


The documentation for this class was generated from the following files: