www.mooseframework.org
Public Member Functions | Protected Attributes | List of all members
DisplacedSystem Class Reference

#include <DisplacedSystem.h>

Inheritance diagram for DisplacedSystem:
[legend]

Public Member Functions

 DisplacedSystem (DisplacedProblem &problem, SystemBase &undisplaced_system, const std::string &name, Moose::VarKindType var_kind)
 
virtual ~DisplacedSystem ()
 
virtual void init () override
 Initialize the system. More...
 
virtual NumericVector< Number > & getVector (TagID tag_id) override
 Get a raw NumericVector. More...
 
virtual TagID timeVectorTag () override
 Ideally, we should not need this API. More...
 
virtual TagID nonTimeVectorTag () override
 
virtual void associateVectorToTag (NumericVector< Number > &vec, TagID tag) override
 Associate a vector for a given tag. More...
 
virtual void disassociateVectorFromTag (NumericVector< Number > &vec, TagID tag) override
 Associate a vector for a given tag. More...
 
virtual void disassociateAllTaggedVectors () override
 Disassociate all vectors, and then hasVector() will return false. More...
 
virtual void associateMatrixToTag (SparseMatrix< Number > &matrix, TagID tag) override
 associate a matirx to a tag More...
 
virtual void disassociateMatrixFromTag (SparseMatrix< Number > &matrix, TagID tag) override
 disassociate a matirx from a tag More...
 
virtual void disassociateAllTaggedMatrices () override
 Clear all tagged matrices. More...
 
virtual NumericVector< Number > & getVector (const std::string &name) override
 Get a raw NumericVector. More...
 
virtual NumericVector< Number > & serializedSolution () override
 Returns a reference to a serialized version of the solution vector for this subproblem. More...
 
virtual const NumericVector< Number > *& currentSolution () override
 The solution vector that is currently being operated on. More...
 
virtual NumericVector< Number > & solution () override
 
virtual NumericVector< Number > * solutionUDot () override
 
virtual NumericVector< Number > * solutionUDotDot () override
 
virtual Number & duDotDu () override
 
virtual Number & duDotDotDu () override
 
virtual NumericVector< Number > & residualCopy () override
 Return the residual copy from the NonlinearSystem. More...
 
virtual NumericVector< Number > & residualGhosted () override
 
virtual void augmentSendList (std::vector< dof_id_type > &send_list) override
 Will modify the send_list to add all of the extra ghosted dofs for this system. More...
 
virtual void augmentSparsity (SparsityPattern::Graph &, std::vector< dof_id_type > &, std::vector< dof_id_type > &) override
 This is an empty function since the displaced system doesn't have a matrix! All sparsity pattern modification will be taken care of by the undisplaced system directly. More...
 
virtual void addVariableToZeroOnResidual (std::string var_name) override
 Adds this variable to the list of variables to be zeroed during each residual evaluation. More...
 
virtual void addVariableToZeroOnJacobian (std::string var_name) override
 Adds this variable to the list of variables to be zeroed during each jacobian evaluation. More...
 
virtual void zeroVariables (std::vector< std::string > &vars_to_be_zeroed) override
 Zero out the solution for the list of variables passed in. More...
 
virtual bool hasVector (TagID tag_id) override
 Check if the tagged vector exists in the system. More...
 
virtual bool hasMatrix (TagID tag_id) override
 Check if the tagged matrix exists in the system. More...
 
virtual SparseMatrix< Number > & getMatrix (TagID tag) override
 Get a raw SparseMatrix. More...
 
virtual NumericVector< Number > & solutionOld () override
 
virtual NumericVector< Number > & solutionOlder () override
 
virtual NumericVector< Number > * solutionUDotOld () override
 
virtual NumericVector< Number > * solutionUDotDotOld () override
 
virtual NumericVector< Number > * solutionPreviousNewton () override
 
virtual TransientExplicitSystem & sys ()
 
virtual System & system () override
 Get the reference to the libMesh system. More...
 
virtual const System & system () const override
 
void addTimeIntegrator (std::shared_ptr< TimeIntegrator > ti) override
 
virtual void addTimeIntegrator (const std::string &, const std::string &, InputParameters)
 
virtual void addTimeIntegrator (std::shared_ptr< TimeIntegrator >)
 
virtual unsigned int number () const
 Gets the number of this system. More...
 
virtual MooseMeshmesh ()
 
virtual SubProblemsubproblem ()
 
virtual DofMap & dofMap ()
 Gets the dof map. More...
 
virtual void initializeObjects ()
 Called only once, just before the solve begins so objects can do some precalculations. More...
 
virtual void addExtraVectors ()
 Method called during initialSetup to add extra system vector if they are required by the simulation. More...
 
virtual void update ()
 Update the system (doing libMesh magic) More...
 
virtual void solve ()
 Solve the system (using libMesh magic) More...
 
virtual void copyOldSolutions ()
 Shifts the solutions backwards in time. More...
 
virtual void restoreSolutions ()
 Restore current solutions (call after your solve failed) More...
 
virtual void saveOldSolutions ()
 Save the old and older solutions. More...
 
virtual void restoreOldSolutions ()
 Restore the old and older solutions when the saved solutions present. More...
 
bool hasVector (const std::string &tag_name) const
 Check if the named vector exists in the system. More...
 
virtual TagID timeMatrixTag ()
 Return the Matrix Tag ID for Time. More...
 
virtual TagID systemMatrixTag ()
 Return the Matrix Tag ID for System. More...
 
virtual TagID residualVectorTag ()
 
virtual void activeAllMatrixTags ()
 Make all exsiting matrices ative. More...
 
virtual void activeMatrixTag (TagID tag)
 Active a matrix for tag. More...
 
virtual bool matrixTagActive (TagID tag)
 If or not a matrix tag is active. More...
 
virtual void deactiveMatrixTag (TagID tag)
 deactive a matrix for tag More...
 
virtual void deactiveAllMatrixTags ()
 Make matrices inactive. More...
 
void closeTaggedMatrices (const std::set< TagID > &tags)
 Close all matrices associated the tags. More...
 
virtual void addVariable (const std::string &var_name, const FEType &type, Real scale_factor, const std::set< SubdomainID > *const active_subdomains=NULL)
 Adds a variable to the system. More...
 
virtual bool isScalarVariable (unsigned int var_name) const
 
MooseVariableFEBasegetVariable (THREAD_ID tid, const std::string &var_name)
 Gets a reference to a variable of with specified name. More...
 
MooseVariableFEBasegetVariable (THREAD_ID tid, unsigned int var_number)
 Gets a reference to a variable with specified number. More...
 
template<typename T >
MooseVariableFE< T > & getFieldVariable (THREAD_ID tid, const std::string &var_name)
 Gets a reference to a variable of with specified name. More...
 
template<typename T >
MooseVariableFE< T > & getFieldVariable (THREAD_ID tid, unsigned int var_number)
 Gets a reference to a variable with specified number. More...
 
virtual MooseVariableScalargetScalarVariable (THREAD_ID tid, const std::string &var_name)
 Gets a reference to a scalar variable with specified number. More...
 
virtual MooseVariableScalargetScalarVariable (THREAD_ID tid, unsigned int var_number)
 Gets a reference to a variable with specified number. More...
 
virtual const std::set< SubdomainID > * getVariableBlocks (unsigned int var_number)
 Get the block where a variable of this system is defined. More...
 
virtual unsigned int nVariables () const
 Get the number of variables in this system. More...
 
size_t getMaxVarNDofsPerElem ()
 Gets the maximum number of dofs used by any one variable on any one element. More...
 
size_t getMaxVarNDofsPerNode ()
 Gets the maximum number of dofs used by any one variable on any one node. More...
 
void assignMaxVarNDofsPerElem (const size_t &max_dofs)
 assign the maximum element dofs More...
 
void assignMaxVarNDofsPerNode (const size_t &max_dofs)
 assign the maximum node dofs More...
 
virtual void zeroVariablesForResidual ()
 Zero out the solution for the variables that were registered as needing to have their solutions zeroed on out on residual evaluation by a call to addVariableToZeroOnResidual() More...
 
virtual void zeroVariablesForJacobian ()
 Zero out the solution for the variables that were registered as needing to have their solutions zeroed on out on Jacobian evaluation by a call to addVariableToZeroOnResidual() More...
 
virtual Order getMinQuadratureOrder ()
 Get minimal quadrature order needed for integrating variables in this system. More...
 
virtual void prepare (THREAD_ID tid)
 Prepare the system for use. More...
 
virtual void prepareFace (THREAD_ID tid, bool resize_data)
 Prepare the system for use on sides. More...
 
virtual void prepareNeighbor (THREAD_ID tid)
 Prepare the system for use. More...
 
virtual void reinitElem (const Elem *elem, THREAD_ID tid)
 Reinit an element assembly info. More...
 
virtual void reinitElemFace (const Elem *elem, unsigned int side, BoundaryID bnd_id, THREAD_ID tid)
 Reinit assembly info for a side of an element. More...
 
virtual void reinitNeighborFace (const Elem *elem, unsigned int side, BoundaryID bnd_id, THREAD_ID tid)
 Compute the values of the variables at all the current points. More...
 
virtual void reinitNeighbor (const Elem *elem, THREAD_ID tid)
 Compute the values of the variables at all the current points. More...
 
virtual void reinitNode (const Node *node, THREAD_ID tid)
 Reinit nodal assembly info. More...
 
virtual void reinitNodeFace (const Node *node, BoundaryID bnd_id, THREAD_ID tid)
 Reinit nodal assembly info on a face. More...
 
virtual void reinitNodes (const std::vector< dof_id_type > &nodes, THREAD_ID tid)
 Reinit variables at a set of nodes. More...
 
virtual void reinitNodesNeighbor (const std::vector< dof_id_type > &nodes, THREAD_ID tid)
 Reinit variables at a set of neighbor nodes. More...
 
virtual void reinitScalars (THREAD_ID tid)
 Reinit scalar varaibles. More...
 
virtual void addVariableToCopy (const std::string &dest_name, const std::string &source_name, const std::string &timestep)
 Add info about variable that will be copied. More...
 
const std::vector< MooseVariableFEBase * > & getVariables (THREAD_ID tid)
 
const std::vector< MooseVariableScalar * > & getScalarVariables (THREAD_ID tid)
 
const std::set< SubdomainID > & getSubdomainsForVar (unsigned int var_number) const
 
virtual void removeVector (const std::string &name)
 Remove a vector from the system with the given name. More...
 
virtual void removeVector (TagID tag_id)
 Remove a solution length vector from the system with the specified TagID. More...
 
virtual NumericVector< Number > & addVector (const std::string &vector_name, const bool project, const ParallelType type)
 Adds a solution length vector to the system. More...
 
NumericVector< Number > & addVector (TagID tag, const bool project, const ParallelType type)
 Adds a solution length vector to the system with the specified TagID. More...
 
virtual void closeTaggedVectors (const std::set< TagID > &tags)
 Close all vectors for given tags. More...
 
virtual void zeroTaggedVectors (const std::set< TagID > &tags)
 Zero all vectors for given tags. More...
 
virtual SparseMatrix< Number > & addMatrix (TagID)
 Adds a jacobian sized vector. More...
 
virtual void removeMatrix (TagID)
 Removes a jacobian sized vector. More...
 
virtual const std::string & name () const
 
virtual void addScalarVariable (const std::string &var_name, Order order, Real scale_factor, const std::set< SubdomainID > *const active_subdomains=NULL)
 Adds a scalar variable. More...
 
const std::vector< VariableName > & getVariableNames () const
 
virtual void computeVariables (const NumericVector< Number > &)
 
void copyVars (ExodusII_IO &io)
 
virtual void copySolutionsBackwards ()
 Copy current solution into old and older. More...
 
virtual void addTimeIntegrator (const std::string &, const std::string &, InputParameters)
 
TimeIntegratorgetTimeIntegrator ()
 
std::shared_ptr< TimeIntegratorgetSharedTimeIntegrator ()
 
virtual bool hasVariable (const std::string &var_name) const
 Query a system for a variable. More...
 
virtual bool hasScalarVariable (const std::string &var_name) const
 

Protected Attributes

SystemBase_undisplaced_system
 
TransientExplicitSystem & _sys
 
SubProblem_subproblem
 
MooseApp_app
 
Factory_factory
 
MooseMesh_mesh
 
std::string _name
 The name of this system. More...
 
std::vector< VariableWarehouse_vars
 Variable warehouses (one for each thread) More...
 
std::map< unsigned int, std::set< SubdomainID > > _var_map
 Map of variables (variable id -> array of subdomains where it lives) More...
 
std::vector< std::string > _vars_to_be_zeroed_on_residual
 
std::vector< std::string > _vars_to_be_zeroed_on_jacobian
 
Real _du_dot_du
 
Real _du_dotdot_du
 
std::vector< NumericVector< Number > * > _tagged_vectors
 Tagged vectors (pointer) More...
 
std::vector< SparseMatrix< Number > * > _tagged_matrices
 Tagged matrices (pointer) More...
 
std::vector< bool > _matrix_tag_active_flags
 Active flags for tagged matrices. More...
 
NumericVector< Real > * _saved_old
 
NumericVector< Real > * _saved_older
 
NumericVector< Real > * _saved_dot_old
 
NumericVector< Real > * _saved_dotdot_old
 
Moose::VarKindType _var_kind
 default kind of variables in this system More...
 
std::vector< VarCopyInfo_var_to_copy
 
size_t _max_var_n_dofs_per_elem
 Maximum number of dofs for any one variable on any one element. More...
 
size_t _max_var_n_dofs_per_node
 Maximum number of dofs for any one variable on any one node. More...
 
std::shared_ptr< TimeIntegrator_time_integrator
 Time integrator. More...
 

Detailed Description

Definition at line 25 of file DisplacedSystem.h.

Constructor & Destructor Documentation

◆ DisplacedSystem()

DisplacedSystem::DisplacedSystem ( DisplacedProblem problem,
SystemBase undisplaced_system,
const std::string &  name,
Moose::VarKindType  var_kind 
)

Definition at line 16 of file DisplacedSystem.C.

20  : SystemBase(problem, name, var_kind),
21  _undisplaced_system(undisplaced_system),
22  _sys(problem.es().add_system<TransientExplicitSystem>(name))
23 {
24 }
TransientExplicitSystem & _sys
virtual EquationSystems & es() override
virtual const std::string & name() const
Definition: SystemBase.C:1049
SystemBase & _undisplaced_system
TransientSystem< ExplicitSystem > TransientExplicitSystem
SystemBase(SubProblem &subproblem, const std::string &name, Moose::VarKindType var_kind)
Definition: SystemBase.C:82

◆ ~DisplacedSystem()

DisplacedSystem::~DisplacedSystem ( )
virtual

Definition at line 26 of file DisplacedSystem.C.

26 {}

Member Function Documentation

◆ activeAllMatrixTags()

void SystemBase::activeAllMatrixTags ( )
virtualinherited

Make all exsiting matrices ative.

Definition at line 865 of file SystemBase.C.

Referenced by NonlinearSystemBase::computeJacobianInternal(), and NonlinearSystemBase::computeResidualTags().

866 {
867  auto num_matrix_tags = _subproblem.numMatrixTags();
868 
869  _matrix_tag_active_flags.resize(num_matrix_tags);
870 
871  for (decltype(num_matrix_tags) tag = 0; tag < num_matrix_tags; tag++)
872  if (hasMatrix(tag))
873  _matrix_tag_active_flags[tag] = true;
874  else
875  _matrix_tag_active_flags[tag] = false;
876 }
virtual bool hasMatrix(TagID tag)
Check if the tagged matrix exists in the system.
Definition: SystemBase.C:781
std::vector< bool > _matrix_tag_active_flags
Active flags for tagged matrices.
Definition: SystemBase.h:719
SubProblem & _subproblem
Definition: SystemBase.h:694
virtual unsigned int numMatrixTags()
The total number of tags.
Definition: SubProblem.h:157

◆ activeMatrixTag()

void SystemBase::activeMatrixTag ( TagID  tag)
virtualinherited

Active a matrix for tag.

Definition at line 830 of file SystemBase.C.

831 {
832  mooseAssert(_subproblem.matrixTagExists(tag),
833  "Cannot active Matrix with matrix_tag : " << tag << "that does not exist");
834 
835  if (_matrix_tag_active_flags.size() < tag + 1)
836  _matrix_tag_active_flags.resize(tag + 1);
837 
838  _matrix_tag_active_flags[tag] = true;
839 }
virtual bool matrixTagExists(const TagName &tag_name)
Check to see if a particular Tag exists.
Definition: SubProblem.C:128
std::vector< bool > _matrix_tag_active_flags
Active flags for tagged matrices.
Definition: SystemBase.h:719
SubProblem & _subproblem
Definition: SystemBase.h:694

◆ addExtraVectors()

void SystemBase::addExtraVectors ( )
virtualinherited

Method called during initialSetup to add extra system vector if they are required by the simulation.

Reimplemented in NonlinearSystemBase, and AuxiliarySystem.

Definition at line 976 of file SystemBase.C.

977 {
978 }

◆ addMatrix()

virtual SparseMatrix<Number>& SystemBase::addMatrix ( TagID  )
inlinevirtualinherited

Adds a jacobian sized vector.

Parameters
tag_nameThe name of the tag

Reimplemented in NonlinearSystem.

Definition at line 642 of file SystemBase.h.

643  {
644  mooseError("Adding a matrix is not supported for this type of system!");
645  }
void mooseError(Args &&... args)
Emit an error message with the given stringified, concatenated args and terminate the application...
Definition: MooseError.h:208

◆ addScalarVariable()

void SystemBase::addScalarVariable ( const std::string &  var_name,
Order  order,
Real  scale_factor,
const std::set< SubdomainID > *const  active_subdomains = NULL 
)
virtualinherited

Adds a scalar variable.

Parameters
var_nameThe name of the variable
orderThe order of the variable
scale_factorThe scaling factor to be used with this scalar variable

Definition at line 628 of file SystemBase.C.

Referenced by DisplacedProblem::addAuxScalarVariable(), and DisplacedProblem::addScalarVariable().

632 {
633  FEType type(order, SCALAR);
634  unsigned int var_num = system().add_variable(var_name, type, active_subdomains);
635  for (THREAD_ID tid = 0; tid < libMesh::n_threads(); tid++)
636  {
637  // FIXME: we cannot refer fetype in libMesh at this point, so we will just make a copy in
638  // MooseVariableBase.
639  MooseVariableScalar * var =
640  new MooseVariableScalar(var_num, type, *this, _subproblem.assembly(tid), _var_kind, tid);
641  var->scalingFactor(scale_factor);
642  _vars[tid].add(var_name, var);
643  }
644  if (active_subdomains == nullptr)
645  _var_map[var_num] = std::set<SubdomainID>();
646  else
647  for (const auto subdomain_id : *active_subdomains)
648  _var_map[var_num].insert(subdomain_id);
649 }
virtual Assembly & assembly(THREAD_ID tid)=0
SubProblem & _subproblem
Definition: SystemBase.h:694
Moose::VarKindType _var_kind
default kind of variables in this system
Definition: SystemBase.h:730
virtual System & system()=0
Get the reference to the libMesh system.
std::map< unsigned int, std::set< SubdomainID > > _var_map
Map of variables (variable id -> array of subdomains where it lives)
Definition: SystemBase.h:706
std::vector< VariableWarehouse > _vars
Variable warehouses (one for each thread)
Definition: SystemBase.h:704
MatType type
Class for scalar variables (they are different).
unsigned int THREAD_ID
Definition: MooseTypes.h:162
void scalingFactor(Real factor)
Set the scaling factor for this variable.

◆ addTimeIntegrator() [1/4]

virtual void SystemBase::addTimeIntegrator
inline

Definition at line 681 of file SystemBase.h.

684  {
685  }

◆ addTimeIntegrator() [2/4]

virtual void SystemBase::addTimeIntegrator
inline

Definition at line 687 of file SystemBase.h.

687 {}

◆ addTimeIntegrator() [3/4]

void DisplacedSystem::addTimeIntegrator ( std::shared_ptr< TimeIntegrator ti)
overridevirtual

Reimplemented from SystemBase.

Definition at line 43 of file DisplacedSystem.C.

Referenced by DisplacedProblem::DisplacedProblem().

44 {
45  _time_integrator = ti;
46 }
std::shared_ptr< TimeIntegrator > _time_integrator
Time integrator.
Definition: SystemBase.h:741

◆ addTimeIntegrator() [4/4]

virtual void SystemBase::addTimeIntegrator ( const std::string &  ,
const std::string &  ,
InputParameters   
)
inlinevirtualinherited

Reimplemented in NonlinearSystemBase, and AuxiliarySystem.

Definition at line 681 of file SystemBase.h.

684  {
685  }

◆ addVariable()

void SystemBase::addVariable ( const std::string &  var_name,
const FEType &  type,
Real  scale_factor,
const std::set< SubdomainID > *const  active_subdomains = NULL 
)
virtualinherited

Adds a variable to the system.

Parameters
var_namename of the variable
typeFE type of the variable
scale_factorthe scaling factor for the variable
active_subdomainsa list of subdomain ids this variable is active on

Reimplemented in AuxiliarySystem.

Definition at line 597 of file SystemBase.C.

Referenced by DisplacedProblem::addAuxVariable(), AuxiliarySystem::addVariable(), and DisplacedProblem::addVariable().

601 {
602  unsigned int var_num = system().add_variable(var_name, type, active_subdomains);
603  for (THREAD_ID tid = 0; tid < libMesh::n_threads(); tid++)
604  {
605  // FIXME: we cannot refer fetype in libMesh at this point, so we will just make a copy in
606  // MooseVariableBase.
607  MooseVariableBase * var;
608  if (type == FEType(0, MONOMIAL))
609  var = new MooseVariableConstMonomial(
610  var_num, type, *this, _subproblem.assembly(tid), _var_kind, tid);
611  else if (type == FEType(FIRST, NEDELEC_ONE) || type.family == LAGRANGE_VEC)
612  var =
613  new VectorMooseVariable(var_num, type, *this, _subproblem.assembly(tid), _var_kind, tid);
614  else
615  var = new MooseVariable(var_num, type, *this, _subproblem.assembly(tid), _var_kind, tid);
616 
617  var->scalingFactor(scale_factor);
618  _vars[tid].add(var_name, var);
619  }
620  if (active_subdomains == nullptr)
621  _var_map[var_num] = std::set<SubdomainID>();
622  else
623  for (const auto subdomain_id : *active_subdomains)
624  _var_map[var_num].insert(subdomain_id);
625 }
virtual Assembly & assembly(THREAD_ID tid)=0
MooseVariableFE< Real > MooseVariable
Definition: Adaptivity.h:30
SubProblem & _subproblem
Definition: SystemBase.h:694
Moose::VarKindType _var_kind
default kind of variables in this system
Definition: SystemBase.h:730
virtual System & system()=0
Get the reference to the libMesh system.
std::map< unsigned int, std::set< SubdomainID > > _var_map
Map of variables (variable id -> array of subdomains where it lives)
Definition: SystemBase.h:706
std::vector< VariableWarehouse > _vars
Variable warehouses (one for each thread)
Definition: SystemBase.h:704
MatType type
MooseVariableFE< VectorValue< Real > > VectorMooseVariable
Definition: Adaptivity.h:32
unsigned int THREAD_ID
Definition: MooseTypes.h:162
void scalingFactor(Real factor)
Set the scaling factor for this variable.

◆ addVariableToCopy()

void SystemBase::addVariableToCopy ( const std::string &  dest_name,
const std::string &  source_name,
const std::string &  timestep 
)
virtualinherited

Add info about variable that will be copied.

Parameters
dest_nameName of the nodal variable being used for copying into (name is from the exodusII file)
source_nameName of the nodal variable being used for copying from (name is from the exodusII file)
timestepTimestep in the file being used

Definition at line 906 of file SystemBase.C.

909 {
910  _var_to_copy.push_back(VarCopyInfo(dest_name, source_name, timestep));
911 }
std::vector< VarCopyInfo > _var_to_copy
Definition: SystemBase.h:732
Information about variables that will be copied.
Definition: SystemBase.h:75

◆ addVariableToZeroOnJacobian()

virtual void DisplacedSystem::addVariableToZeroOnJacobian ( std::string  var_name)
inlineoverridevirtual

Adds this variable to the list of variables to be zeroed during each jacobian evaluation.

Parameters
var_nameThe name of the variable to be zeroed.

Reimplemented from SystemBase.

Definition at line 143 of file DisplacedSystem.h.

144  {
146  }
SystemBase & _undisplaced_system
virtual void addVariableToZeroOnJacobian(std::string var_name)
Adds this variable to the list of variables to be zeroed during each Jacobian evaluation.
Definition: SystemBase.C:184

◆ addVariableToZeroOnResidual()

virtual void DisplacedSystem::addVariableToZeroOnResidual ( std::string  var_name)
inlineoverridevirtual

Adds this variable to the list of variables to be zeroed during each residual evaluation.

Parameters
var_nameThe name of the variable to be zeroed.

Reimplemented from SystemBase.

Definition at line 134 of file DisplacedSystem.h.

135  {
137  }
SystemBase & _undisplaced_system
virtual void addVariableToZeroOnResidual(std::string var_name)
Adds this variable to the list of variables to be zeroed during each residual evaluation.
Definition: SystemBase.C:178

◆ addVector() [1/2]

NumericVector< Number > & SystemBase::addVector ( const std::string &  vector_name,
const bool  project,
const ParallelType  type 
)
virtualinherited

Adds a solution length vector to the system.

Parameters
vector_nameThe name of the vector.
projectWhether or not to project this vector when doing mesh refinement. If the vector is just going to be recomputed then there is no need to project it.
typeWhat type of parallel vector. This is usually either PARALLEL or GHOSTED. GHOSTED is needed if you are going to be accessing off-processor entries. The ghosting pattern is the same as the solution vector.

Reimplemented in AuxiliarySystem.

Definition at line 526 of file SystemBase.C.

Referenced by ActuallyExplicitEuler::ActuallyExplicitEuler(), NonlinearSystemBase::addDotVectors(), NonlinearSystemBase::addExtraVectors(), AStableDirk4::AStableDirk4(), MultiApp::createApp(), NonlinearSystemBase::getResidualNonTimeVector(), NonlinearSystemBase::getResidualTimeVector(), FEProblemBase::initNullSpaceVectors(), LStableDirk3::LStableDirk3(), LStableDirk4::LStableDirk4(), PicardSolve::PicardSolve(), NonlinearSystemBase::residualGhosted(), and SystemBase::saveOldSolutions().

527 {
528  if (hasVector(vector_name))
529  return getVector(vector_name);
530 
531  NumericVector<Number> & vec = system().add_vector(vector_name, project, type);
532  return vec;
533 }
bool hasVector(const std::string &tag_name) const
Check if the named vector exists in the system.
Definition: SystemBase.C:685
virtual System & system()=0
Get the reference to the libMesh system.
MatType type
virtual NumericVector< Number > & getVector(const std::string &name)
Get a raw NumericVector.
Definition: SystemBase.C:735

◆ addVector() [2/2]

NumericVector< Number > & SystemBase::addVector ( TagID  tag,
const bool  project,
const ParallelType  type 
)
inherited

Adds a solution length vector to the system with the specified TagID.

Parameters
tag_nameThe name of the tag
projectWhether or not to project this vector when doing mesh refinement. If the vector is just going to be recomputed then there is no need to project it.
typeWhat type of parallel vector. This is usually either PARALLEL or GHOSTED. GHOSTED is needed if you are going to be accessing off-processor entries. The ghosting pattern is the same as the solution vector.

Definition at line 536 of file SystemBase.C.

537 {
538  if (!_subproblem.vectorTagExists(tag))
539  mooseError("Cannot add a tagged vector with vector_tag, ",
540  tag,
541  ", that tag does not exist in System ",
542  name());
543 
544  if (hasVector(tag))
545  return getVector(tag);
546 
547  auto vector_name = _subproblem.vectorTagName(tag);
548 
549  NumericVector<Number> & vec = system().add_vector(vector_name, project, type);
550 
551  if (_tagged_vectors.size() < tag + 1)
552  _tagged_vectors.resize(tag + 1);
553 
554  _tagged_vectors[tag] = &vec;
555 
556  return vec;
557 }
virtual TagName vectorTagName(TagID tag)
Retrieve the name associated with a TagID.
Definition: SubProblem.C:105
bool hasVector(const std::string &tag_name) const
Check if the named vector exists in the system.
Definition: SystemBase.C:685
void mooseError(Args &&... args)
Emit an error message with the given stringified, concatenated args and terminate the application...
Definition: MooseError.h:208
virtual const std::string & name() const
Definition: SystemBase.C:1049
SubProblem & _subproblem
Definition: SystemBase.h:694
virtual bool vectorTagExists(TagID tag)
Check to see if a particular Tag exists.
Definition: SubProblem.h:112
virtual System & system()=0
Get the reference to the libMesh system.
MatType type
std::vector< NumericVector< Number > * > _tagged_vectors
Tagged vectors (pointer)
Definition: SystemBase.h:715
virtual NumericVector< Number > & getVector(const std::string &name)
Get a raw NumericVector.
Definition: SystemBase.C:735

◆ assignMaxVarNDofsPerElem()

void SystemBase::assignMaxVarNDofsPerElem ( const size_t &  max_dofs)
inlineinherited

assign the maximum element dofs

Definition at line 425 of file SystemBase.h.

425 { _max_var_n_dofs_per_elem = max_dofs; }
size_t _max_var_n_dofs_per_elem
Maximum number of dofs for any one variable on any one element.
Definition: SystemBase.h:735

◆ assignMaxVarNDofsPerNode()

void SystemBase::assignMaxVarNDofsPerNode ( const size_t &  max_dofs)
inlineinherited

assign the maximum node dofs

Definition at line 430 of file SystemBase.h.

430 { _max_var_n_dofs_per_node = max_dofs; }
size_t _max_var_n_dofs_per_node
Maximum number of dofs for any one variable on any one node.
Definition: SystemBase.h:738

◆ associateMatrixToTag()

virtual void DisplacedSystem::associateMatrixToTag ( SparseMatrix< Number > &  matrix,
TagID  tag 
)
inlineoverridevirtual

associate a matirx to a tag

Reimplemented from SystemBase.

Definition at line 60 of file DisplacedSystem.h.

61  {
63  }
SystemBase & _undisplaced_system
virtual void associateMatrixToTag(SparseMatrix< Number > &matrix, TagID tag)
associate a matirx to a tag
Definition: SystemBase.C:803

◆ associateVectorToTag()

virtual void DisplacedSystem::associateVectorToTag ( NumericVector< Number > &  vec,
TagID  tag 
)
inlineoverridevirtual

Associate a vector for a given tag.

Reimplemented from SystemBase.

Definition at line 45 of file DisplacedSystem.h.

46  {
48  }
virtual void associateVectorToTag(NumericVector< Number > &vec, TagID tag)
Associate a vector for a given tag.
Definition: SystemBase.C:749
SystemBase & _undisplaced_system

◆ augmentSendList()

virtual void DisplacedSystem::augmentSendList ( std::vector< dof_id_type > &  send_list)
inlineoverridevirtual

Will modify the send_list to add all of the extra ghosted dofs for this system.

Reimplemented from SystemBase.

Definition at line 115 of file DisplacedSystem.h.

116  {
118  }
SystemBase & _undisplaced_system
virtual void augmentSendList(std::vector< dof_id_type > &send_list)
Will modify the send_list to add all of the extra ghosted dofs for this system.
Definition: SystemBase.C:414

◆ augmentSparsity()

virtual void DisplacedSystem::augmentSparsity ( SparsityPattern::Graph &  ,
std::vector< dof_id_type > &  ,
std::vector< dof_id_type > &   
)
inlineoverridevirtual

This is an empty function since the displaced system doesn't have a matrix! All sparsity pattern modification will be taken care of by the undisplaced system directly.

Implements SystemBase.

Definition at line 124 of file DisplacedSystem.h.

127  {
128  }

◆ closeTaggedMatrices()

void SystemBase::closeTaggedMatrices ( const std::set< TagID > &  tags)
inherited

Close all matrices associated the tags.

Definition at line 795 of file SystemBase.C.

Referenced by NonlinearSystemBase::computeJacobianInternal().

796 {
797  for (auto tag : tags)
798  if (hasMatrix(tag))
799  getMatrix(tag).close();
800 }
virtual bool hasMatrix(TagID tag)
Check if the tagged matrix exists in the system.
Definition: SystemBase.C:781
virtual SparseMatrix< Number > & getMatrix(TagID tag)
Get a raw SparseMatrix.
Definition: SystemBase.C:787

◆ closeTaggedVectors()

void SystemBase::closeTaggedVectors ( const std::set< TagID > &  tags)
virtualinherited

Close all vectors for given tags.

Definition at line 560 of file SystemBase.C.

Referenced by NonlinearSystemBase::computeResidualTags().

561 {
562  for (auto & tag : tags)
563  {
564  mooseAssert(_subproblem.vectorTagExists(tag), "Tag: " << tag << " does not exsit");
565  getVector(tag).close();
566  }
567 }
SubProblem & _subproblem
Definition: SystemBase.h:694
virtual bool vectorTagExists(TagID tag)
Check to see if a particular Tag exists.
Definition: SubProblem.h:112
virtual NumericVector< Number > & getVector(const std::string &name)
Get a raw NumericVector.
Definition: SystemBase.C:735

◆ computeVariables()

virtual void SystemBase::computeVariables ( const NumericVector< Number > &  )
inlinevirtualinherited

Definition at line 672 of file SystemBase.h.

672 {}

◆ copyOldSolutions()

void SystemBase::copyOldSolutions ( )
virtualinherited

Shifts the solutions backwards in time.

Definition at line 1013 of file SystemBase.C.

Referenced by EigenExecutionerBase::inversePowerIteration().

1014 {
1015  solutionOlder() = solutionOld();
1017  if (solutionUDotOld())
1018  *solutionUDotOld() = *solutionUDot();
1019  if (solutionUDotDotOld())
1021  if (solutionPreviousNewton())
1023 }
virtual NumericVector< Number > * solutionUDot()=0
virtual NumericVector< Number > & solutionOld()=0
virtual NumericVector< Number > * solutionUDotDotOld()=0
virtual NumericVector< Number > * solutionPreviousNewton()=0
virtual NumericVector< Number > & solutionOlder()=0
virtual NumericVector< Number > * solutionUDotOld()=0
virtual NumericVector< Number > * solutionUDotDot()=0
virtual const NumericVector< Number > *& currentSolution()=0
The solution vector that is currently being operated on.

◆ copySolutionsBackwards()

void SystemBase::copySolutionsBackwards ( )
virtualinherited

Copy current solution into old and older.

Definition at line 996 of file SystemBase.C.

997 {
998  system().update();
1001  if (solutionUDotOld())
1002  *solutionUDotOld() = *solutionUDot();
1003  if (solutionUDotDotOld())
1005  if (solutionPreviousNewton())
1007 }
virtual NumericVector< Number > * solutionUDot()=0
virtual NumericVector< Number > & solutionOld()=0
virtual NumericVector< Number > * solutionUDotDotOld()=0
virtual NumericVector< Number > * solutionPreviousNewton()=0
virtual System & system()=0
Get the reference to the libMesh system.
virtual NumericVector< Number > & solutionOlder()=0
virtual NumericVector< Number > * solutionUDotOld()=0
virtual NumericVector< Number > * solutionUDotDot()=0
virtual const NumericVector< Number > *& currentSolution()=0
The solution vector that is currently being operated on.

◆ copyVars()

void SystemBase::copyVars ( ExodusII_IO &  io)
inherited

Definition at line 914 of file SystemBase.C.

915 {
916  int n_steps = io.get_num_time_steps();
917 
918  bool did_copy = false;
919  for (const auto & vci : _var_to_copy)
920  {
921  int timestep = -1;
922 
923  if (vci._timestep == "LATEST")
924  // Use the last time step in the file from which to retrieve the solution
925  timestep = n_steps;
926  else
927  {
928  timestep = MooseUtils::convert<int>(vci._timestep);
929  if (timestep > n_steps)
930  mooseError("Invalid value passed as \"initial_from_file_timestep\". Expected \"LATEST\" or "
931  "a valid integer between 1 and ",
932  n_steps,
933  " inclusive, received ",
934  vci._timestep);
935  }
936 
937  did_copy = true;
938 
939  if (hasVariable(vci._dest_name))
940  {
941  if (getVariable(0, vci._dest_name).isNodal())
942  io.copy_nodal_solution(system(), vci._dest_name, vci._source_name, timestep);
943 
944  else
945  io.copy_elemental_solution(system(), vci._dest_name, vci._source_name, timestep);
946  }
947  else if (hasScalarVariable(vci._dest_name))
948  {
949  auto rank = comm().rank();
950  auto size = comm().size();
951 
952  // Read solution on rank 0 only and send data to rank "size - 1" where scalar DOFs are stored
953  std::vector<Real> global_values;
954  if (rank == 0)
955  {
956  // Read the scalar value then set that value in the current solution
957  io.read_global_variable({vci._source_name}, timestep, global_values);
958  if (size > 1)
959  comm().send(size - 1, global_values);
960  }
961  if (rank == size - 1)
962  {
963  if (size > 1)
964  comm().receive(0, global_values);
965  const unsigned int var_num = system().variable_number(vci._dest_name);
966  system().solution->set(var_num, global_values[0]);
967  }
968  }
969  }
970 
971  if (did_copy)
972  solution().close();
973 }
void mooseError(Args &&... args)
Emit an error message with the given stringified, concatenated args and terminate the application...
Definition: MooseError.h:208
MooseVariableFEBase & getVariable(THREAD_ID tid, const std::string &var_name)
Gets a reference to a variable of with specified name.
Definition: SystemBase.C:105
virtual bool isNodal() const =0
Is this variable nodal.
std::vector< VarCopyInfo > _var_to_copy
Definition: SystemBase.h:732
int convert< int >(const std::string &str, bool throw_on_failure)
Definition: MooseUtils.C:658
virtual System & system()=0
Get the reference to the libMesh system.
virtual bool hasVariable(const std::string &var_name) const
Query a system for a variable.
Definition: SystemBase.C:652
MPI_Comm comm
virtual NumericVector< Number > & solution()=0
virtual bool hasScalarVariable(const std::string &var_name) const
Definition: SystemBase.C:661

◆ currentSolution()

virtual const NumericVector<Number>*& DisplacedSystem::currentSolution ( )
inlineoverridevirtual

The solution vector that is currently being operated on.

This is typically a ghosted vector that comes in from the Nonlinear solver.

Implements SystemBase.

Definition at line 82 of file DisplacedSystem.h.

83  {
85  }
SystemBase & _undisplaced_system
virtual const NumericVector< Number > *& currentSolution()=0
The solution vector that is currently being operated on.

◆ deactiveAllMatrixTags()

void SystemBase::deactiveAllMatrixTags ( )
virtualinherited

Make matrices inactive.

Definition at line 854 of file SystemBase.C.

Referenced by NonlinearSystemBase::computeResidualTags(), and NonlinearSystemBase::setInitialSolution().

855 {
856  auto num_matrix_tags = _subproblem.numMatrixTags();
857 
858  _matrix_tag_active_flags.resize(num_matrix_tags);
859 
860  for (decltype(num_matrix_tags) tag = 0; tag < num_matrix_tags; tag++)
861  _matrix_tag_active_flags[tag] = false;
862 }
std::vector< bool > _matrix_tag_active_flags
Active flags for tagged matrices.
Definition: SystemBase.h:719
SubProblem & _subproblem
Definition: SystemBase.h:694
virtual unsigned int numMatrixTags()
The total number of tags.
Definition: SubProblem.h:157

◆ deactiveMatrixTag()

void SystemBase::deactiveMatrixTag ( TagID  tag)
virtualinherited

deactive a matrix for tag

Definition at line 842 of file SystemBase.C.

843 {
844  mooseAssert(_subproblem.matrixTagExists(tag),
845  "Cannot deactivate Matrix with matrix_tag : " << tag << "that does not exist");
846 
847  if (_matrix_tag_active_flags.size() < tag + 1)
848  _matrix_tag_active_flags.resize(tag + 1);
849 
850  _matrix_tag_active_flags[tag] = false;
851 }
virtual bool matrixTagExists(const TagName &tag_name)
Check to see if a particular Tag exists.
Definition: SubProblem.C:128
std::vector< bool > _matrix_tag_active_flags
Active flags for tagged matrices.
Definition: SystemBase.h:719
SubProblem & _subproblem
Definition: SystemBase.h:694

◆ disassociateAllTaggedMatrices()

virtual void DisplacedSystem::disassociateAllTaggedMatrices ( )
inlineoverridevirtual

Clear all tagged matrices.

Reimplemented from SystemBase.

Definition at line 70 of file DisplacedSystem.h.

71  {
73  }
virtual void disassociateAllTaggedMatrices()
Clear all tagged matrices.
Definition: SystemBase.C:887
SystemBase & _undisplaced_system

◆ disassociateAllTaggedVectors()

virtual void DisplacedSystem::disassociateAllTaggedVectors ( )
inlineoverridevirtual

Disassociate all vectors, and then hasVector() will return false.

Reimplemented from SystemBase.

Definition at line 55 of file DisplacedSystem.h.

56  {
58  }
virtual void disassociateAllTaggedVectors()
Disassociate all vectors, and then hasVector() will return false.
Definition: SystemBase.C:774
SystemBase & _undisplaced_system

◆ disassociateMatrixFromTag()

virtual void DisplacedSystem::disassociateMatrixFromTag ( SparseMatrix< Number > &  matrix,
TagID  tag 
)
inlineoverridevirtual

disassociate a matirx from a tag

Reimplemented from SystemBase.

Definition at line 65 of file DisplacedSystem.h.

66  {
68  }
SystemBase & _undisplaced_system
virtual void disassociateMatrixFromTag(SparseMatrix< Number > &matrix, TagID tag)
disassociate a matirx from a tag
Definition: SystemBase.C:815

◆ disassociateVectorFromTag()

virtual void DisplacedSystem::disassociateVectorFromTag ( NumericVector< Number > &  vec,
TagID  tag 
)
inlineoverridevirtual

Associate a vector for a given tag.

Reimplemented from SystemBase.

Definition at line 50 of file DisplacedSystem.h.

51  {
53  }
virtual void disassociateVectorFromTag(NumericVector< Number > &vec, TagID tag)
Associate a vector for a given tag.
Definition: SystemBase.C:760
SystemBase & _undisplaced_system

◆ dofMap()

DofMap & SystemBase::dofMap ( )
virtualinherited

◆ duDotDotDu()

virtual Number& DisplacedSystem::duDotDotDu ( )
inlineoverridevirtual

Reimplemented from SystemBase.

Definition at line 100 of file DisplacedSystem.h.

100 { return _undisplaced_system.duDotDotDu(); }
virtual Number & duDotDotDu()
Definition: SystemBase.h:159
SystemBase & _undisplaced_system

◆ duDotDu()

virtual Number& DisplacedSystem::duDotDu ( )
inlineoverridevirtual

Reimplemented from SystemBase.

Definition at line 99 of file DisplacedSystem.h.

99 { return _undisplaced_system.duDotDu(); }
virtual Number & duDotDu()
Definition: SystemBase.h:158
SystemBase & _undisplaced_system

◆ getFieldVariable() [1/2]

template<typename T >
MooseVariableFE< T > & SystemBase::getFieldVariable ( THREAD_ID  tid,
const std::string &  var_name 
)
inherited

Gets a reference to a variable of with specified name.

Parameters
tidThread id
var_namevariable name
Returns
reference the variable (class)

Definition at line 136 of file SystemBase.C.

Referenced by Assembly::copyFaceShapes(), Assembly::copyNeighborShapes(), Assembly::copyShapes(), DisplacedProblem::getStandardVariable(), and DisplacedProblem::getVectorVariable().

137 {
138  return *_vars[tid].getFieldVariable<T>(var_name);
139 }
std::vector< VariableWarehouse > _vars
Variable warehouses (one for each thread)
Definition: SystemBase.h:704

◆ getFieldVariable() [2/2]

template<typename T >
MooseVariableFE< T > & SystemBase::getFieldVariable ( THREAD_ID  tid,
unsigned int  var_number 
)
inherited

Gets a reference to a variable with specified number.

Parameters
tidThread id
var_numberlibMesh variable number
Returns
reference the variable (class)

Definition at line 143 of file SystemBase.C.

144 {
145  return *_vars[tid].getFieldVariable<T>(var_number);
146 }
std::vector< VariableWarehouse > _vars
Variable warehouses (one for each thread)
Definition: SystemBase.h:704

◆ getMatrix()

virtual SparseMatrix<Number>& DisplacedSystem::getMatrix ( TagID  tag)
inlineoverridevirtual

Get a raw SparseMatrix.

Reimplemented from SystemBase.

Definition at line 160 of file DisplacedSystem.h.

161  {
162  return _undisplaced_system.getMatrix(tag);
163  }
SystemBase & _undisplaced_system
virtual SparseMatrix< Number > & getMatrix(TagID tag)
Get a raw SparseMatrix.
Definition: SystemBase.C:787

◆ getMaxVarNDofsPerElem()

size_t SystemBase::getMaxVarNDofsPerElem ( )
inlineinherited

Gets the maximum number of dofs used by any one variable on any one element.

Returns
The max

Definition at line 413 of file SystemBase.h.

Referenced by Assembly::computeAffineMapAD(), Assembly::computeFaceMap(), and Assembly::computeSinglePointMapAD().

413 { return _max_var_n_dofs_per_elem; }
size_t _max_var_n_dofs_per_elem
Maximum number of dofs for any one variable on any one element.
Definition: SystemBase.h:735

◆ getMaxVarNDofsPerNode()

size_t SystemBase::getMaxVarNDofsPerNode ( )
inlineinherited

Gets the maximum number of dofs used by any one variable on any one node.

Returns
The max

Definition at line 420 of file SystemBase.h.

420 { return _max_var_n_dofs_per_node; }
size_t _max_var_n_dofs_per_node
Maximum number of dofs for any one variable on any one node.
Definition: SystemBase.h:738

◆ getMinQuadratureOrder()

Order SystemBase::getMinQuadratureOrder ( )
virtualinherited

Get minimal quadrature order needed for integrating variables in this system.

Returns
The minimal order of quadrature

Reimplemented in AuxiliarySystem.

Definition at line 227 of file SystemBase.C.

228 {
229  Order order = CONSTANT;
230  const std::vector<MooseVariableFEBase *> & vars = _vars[0].fieldVariables();
231  for (const auto & var : vars)
232  {
233  FEType fe_type = var->feType();
234  if (fe_type.default_quadrature_order() > order)
235  order = fe_type.default_quadrature_order();
236  }
237 
238  return order;
239 }
std::vector< VariableWarehouse > _vars
Variable warehouses (one for each thread)
Definition: SystemBase.h:704

◆ getScalarVariable() [1/2]

MooseVariableScalar & SystemBase::getScalarVariable ( THREAD_ID  tid,
const std::string &  var_name 
)
virtualinherited

Gets a reference to a scalar variable with specified number.

Parameters
tidThread id
var_nameA string which is the name of the variable to get.
Returns
reference the variable (class)

Definition at line 149 of file SystemBase.C.

Referenced by Assembly::addJacobianOffDiagScalar(), IntegratedBC::computeJacobianBlockScalar(), VectorIntegratedBC::computeJacobianBlockScalar(), ODEKernel::computeOffDiagJacobian(), VectorKernel::computeOffDiagJacobianScalar(), Kernel::computeOffDiagJacobianScalar(), DisplacedProblem::getScalarVariable(), and Assembly::init().

150 {
151  MooseVariableScalar * var = dynamic_cast<MooseVariableScalar *>(_vars[tid].getVariable(var_name));
152  if (!var)
153  mooseError("Scalar variable '" + var_name + "' does not exist in this system");
154  return *var;
155 }
void mooseError(Args &&... args)
Emit an error message with the given stringified, concatenated args and terminate the application...
Definition: MooseError.h:208
std::vector< VariableWarehouse > _vars
Variable warehouses (one for each thread)
Definition: SystemBase.h:704
Class for scalar variables (they are different).

◆ getScalarVariable() [2/2]

MooseVariableScalar & SystemBase::getScalarVariable ( THREAD_ID  tid,
unsigned int  var_number 
)
virtualinherited

Gets a reference to a variable with specified number.

Parameters
tidThread id
var_numberlibMesh variable number
Returns
reference the variable (class)

Definition at line 158 of file SystemBase.C.

159 {
160  MooseVariableScalar * var =
161  dynamic_cast<MooseVariableScalar *>(_vars[tid].getVariable(var_number));
162  if (!var)
163  mooseError("variable #" + Moose::stringify(var_number) + " does not exist in this system");
164  return *var;
165 }
void mooseError(Args &&... args)
Emit an error message with the given stringified, concatenated args and terminate the application...
Definition: MooseError.h:208
std::string stringify(const T &t)
conversion to string
Definition: Conversion.h:61
std::vector< VariableWarehouse > _vars
Variable warehouses (one for each thread)
Definition: SystemBase.h:704
Class for scalar variables (they are different).

◆ getScalarVariables()

const std::vector<MooseVariableScalar *>& SystemBase::getScalarVariables ( THREAD_ID  tid)
inlineinherited

◆ getSharedTimeIntegrator()

std::shared_ptr<TimeIntegrator> SystemBase::getSharedTimeIntegrator ( )
inlineinherited

Definition at line 691 of file SystemBase.h.

Referenced by DisplacedProblem::DisplacedProblem().

691 { return _time_integrator; }
std::shared_ptr< TimeIntegrator > _time_integrator
Time integrator.
Definition: SystemBase.h:741

◆ getSubdomainsForVar()

const std::set<SubdomainID>& SystemBase::getSubdomainsForVar ( unsigned int  var_number) const
inlineinherited

Definition at line 579 of file SystemBase.h.

580  {
581  return _var_map.at(var_number);
582  }
std::map< unsigned int, std::set< SubdomainID > > _var_map
Map of variables (variable id -> array of subdomains where it lives)
Definition: SystemBase.h:706

◆ getTimeIntegrator()

TimeIntegrator* SystemBase::getTimeIntegrator ( )
inlineinherited

Definition at line 689 of file SystemBase.h.

Referenced by DT2::computeDT(), Transient::endStep(), AB2PredictorCorrector::estimateTimeError(), MooseVariableFE< Real >::MooseVariableFE(), and Transient::preExecute().

689 { return _time_integrator.get(); }
std::shared_ptr< TimeIntegrator > _time_integrator
Time integrator.
Definition: SystemBase.h:741

◆ getVariable() [1/2]

MooseVariableFEBase & SystemBase::getVariable ( THREAD_ID  tid,
const std::string &  var_name 
)
inherited

Gets a reference to a variable of with specified name.

Parameters
tidThread id
var_namevariable name
Returns
reference the variable (class)

Definition at line 105 of file SystemBase.C.

Referenced by Assembly::addJacobianBlock(), Assembly::addJacobianBlockNonlocal(), Assembly::addJacobianNeighbor(), NonlocalIntegratedBC::computeJacobianBlock(), NonlocalIntegratedBC::computeNonlocalOffDiagJacobian(), NonlocalKernel::computeNonlocalOffDiagJacobian(), SystemBase::copyVars(), FieldSplitPreconditioner::FieldSplitPreconditioner(), FiniteDifferencePreconditioner::FiniteDifferencePreconditioner(), EqualValueEmbeddedConstraint::getConnectedDofIndices(), NodeElemConstraint::getConnectedDofIndices(), NodeFaceConstraint::getConnectedDofIndices(), Marker::getMarkerValue(), SubProblem::getVariableHelper(), Assembly::init(), NodalNormalsPreprocessor::initialize(), Assembly::initNonlocalCoupling(), PhysicsBasedPreconditioner::PhysicsBasedPreconditioner(), AddPeriodicBCAction::setPeriodicVars(), SingleMatrixPreconditioner::SingleMatrixPreconditioner(), and UpdateErrorVectorsThread::UpdateErrorVectorsThread().

106 {
107  MooseVariableFEBase * var = dynamic_cast<MooseVariableFEBase *>(_vars[tid].getVariable(var_name));
108  if (!var)
109  {
110  std::stringstream errMsg;
111  errMsg << "Variable '" << var_name << "' does not exist in this system" << std::endl;
112  throw std::runtime_error(errMsg.str().c_str());
113  // mooseError("Variable '" + var_name + "' does not exist in this system");
114  }
115  return *var;
116 }
std::vector< VariableWarehouse > _vars
Variable warehouses (one for each thread)
Definition: SystemBase.h:704

◆ getVariable() [2/2]

MooseVariableFEBase & SystemBase::getVariable ( THREAD_ID  tid,
unsigned int  var_number 
)
inherited

Gets a reference to a variable with specified number.

Parameters
tidThread id
var_numberlibMesh variable number
Returns
reference the variable (class)

Definition at line 119 of file SystemBase.C.

120 {
121  MooseVariableFEBase * var =
122  dynamic_cast<MooseVariableFEBase *>(_vars[tid].getVariable(var_number));
123  if (!var)
124  {
125  std::stringstream errMsg;
126  errMsg << "Variable '" << Moose::stringify(var_number) << "' does not exist in this system"
127  << std::endl;
128  throw std::runtime_error(errMsg.str().c_str());
129  // mooseError("variable #" + Moose::stringify(var_number) + " does not exist in this system");
130  }
131  return *var;
132 }
std::string stringify(const T &t)
conversion to string
Definition: Conversion.h:61
std::vector< VariableWarehouse > _vars
Variable warehouses (one for each thread)
Definition: SystemBase.h:704

◆ getVariableBlocks()

const std::set< SubdomainID > * SystemBase::getVariableBlocks ( unsigned int  var_number)
virtualinherited

Get the block where a variable of this system is defined.

Parameters
var_numberThe number of the variable
Returns
the set of subdomain ids where the variable is active (defined)

Definition at line 168 of file SystemBase.C.

Referenced by PhysicsBasedPreconditioner::addSystem().

169 {
170  mooseAssert(_var_map.find(var_number) != _var_map.end(), "Variable does not exist.");
171  if (_var_map[var_number].empty())
172  return nullptr;
173  else
174  return &_var_map[var_number];
175 }
std::map< unsigned int, std::set< SubdomainID > > _var_map
Map of variables (variable id -> array of subdomains where it lives)
Definition: SystemBase.h:706

◆ getVariableNames()

const std::vector<VariableName>& SystemBase::getVariableNames ( ) const
inlineinherited

Definition at line 670 of file SystemBase.h.

Referenced by MooseEigenSystem::buildSystemDoFIndices(), NonlinearSystemBase::checkKernelCoverage(), and AddPeriodicBCAction::setPeriodicVars().

670 { return _vars[0].names(); }
std::vector< VariableWarehouse > _vars
Variable warehouses (one for each thread)
Definition: SystemBase.h:704

◆ getVariables()

const std::vector<MooseVariableFEBase *>& SystemBase::getVariables ( THREAD_ID  tid)
inlineinherited

◆ getVector() [1/2]

virtual NumericVector<Number>& DisplacedSystem::getVector ( TagID  tag)
inlineoverridevirtual

Get a raw NumericVector.

Reimplemented from SystemBase.

Definition at line 36 of file DisplacedSystem.h.

37  {
38  return _undisplaced_system.getVector(tag_id);
39  }
SystemBase & _undisplaced_system
virtual NumericVector< Number > & getVector(const std::string &name)
Get a raw NumericVector.
Definition: SystemBase.C:735

◆ getVector() [2/2]

NumericVector< Number > & DisplacedSystem::getVector ( const std::string &  name)
overridevirtual

Get a raw NumericVector.

Get a raw NumericVector with the given name.

Reimplemented from SystemBase.

Definition at line 34 of file DisplacedSystem.C.

35 {
36  if (_sys.have_vector(name))
37  return _sys.get_vector(name);
38  else
40 }
TransientExplicitSystem & _sys
virtual const std::string & name() const
Definition: SystemBase.C:1049
SystemBase & _undisplaced_system
virtual NumericVector< Number > & getVector(const std::string &name)
Get a raw NumericVector.
Definition: SystemBase.C:735

◆ hasMatrix()

virtual bool DisplacedSystem::hasMatrix ( TagID  tag)
inlineoverridevirtual

Check if the tagged matrix exists in the system.

Reimplemented from SystemBase.

Definition at line 158 of file DisplacedSystem.h.

158 { return _undisplaced_system.hasMatrix(tag_id); }
virtual bool hasMatrix(TagID tag)
Check if the tagged matrix exists in the system.
Definition: SystemBase.C:781
SystemBase & _undisplaced_system

◆ hasScalarVariable()

bool SystemBase::hasScalarVariable ( const std::string &  var_name) const
virtualinherited

Definition at line 661 of file SystemBase.C.

Referenced by ComputeFullJacobianThread::computeFaceJacobian(), ComputeFullJacobianThread::computeJacobian(), SystemBase::copyVars(), DisplacedProblem::getScalarVariable(), DisplacedProblem::hasScalarVariable(), and AddPeriodicBCAction::setPeriodicVars().

662 {
663  if (system().has_variable(var_name))
664  return system().variable_type(var_name).family == SCALAR;
665  else
666  return false;
667 }
virtual System & system()=0
Get the reference to the libMesh system.

◆ hasVariable()

bool SystemBase::hasVariable ( const std::string &  var_name) const
virtualinherited

Query a system for a variable.

Parameters
var_namename of the variable
Returns
true if the variable exists

Definition at line 652 of file SystemBase.C.

Referenced by ADKernelTempl< T, compute_stage >::ADKernelTempl(), SystemBase::copyVars(), DGKernelBase::DGKernelBase(), FEProblemBase::duplicateVariableCheck(), DisplacedProblem::getStandardVariable(), DisplacedProblem::getSystem(), SubProblem::getVariableHelper(), DisplacedProblem::getVectorVariable(), DisplacedProblem::hasVariable(), InterfaceKernel::InterfaceKernel(), and Kernel::Kernel().

653 {
654  if (system().has_variable(var_name))
655  return system().variable_type(var_name).family != SCALAR;
656  else
657  return false;
658 }
virtual System & system()=0
Get the reference to the libMesh system.

◆ hasVector() [1/2]

virtual bool DisplacedSystem::hasVector ( TagID  tag_id)
inlineoverridevirtual

Check if the tagged vector exists in the system.

Reimplemented from SystemBase.

Definition at line 156 of file DisplacedSystem.h.

156 { return _undisplaced_system.hasVector(tag_id); }
bool hasVector(const std::string &tag_name) const
Check if the named vector exists in the system.
Definition: SystemBase.C:685
SystemBase & _undisplaced_system

◆ hasVector() [2/2]

bool SystemBase::hasVector ( const std::string &  tag_name) const
inherited

◆ init()

void DisplacedSystem::init ( )
overridevirtual

Initialize the system.

Reimplemented from SystemBase.

Definition at line 29 of file DisplacedSystem.C.

Referenced by DisplacedProblem::init().

30 {
31 }

◆ initializeObjects()

virtual void SystemBase::initializeObjects ( )
inlinevirtualinherited

Called only once, just before the solve begins so objects can do some precalculations.

Definition at line 126 of file SystemBase.h.

126 {};

◆ isScalarVariable()

bool SystemBase::isScalarVariable ( unsigned int  var_name) const
virtualinherited

Definition at line 670 of file SystemBase.C.

Referenced by ODEKernel::computeOffDiagJacobian(), Assembly::init(), and Assembly::initNonlocalCoupling().

671 {
672  return (system().variable(var_num).type().family == SCALAR);
673 }
virtual System & system()=0
Get the reference to the libMesh system.
MatType type

◆ matrixTagActive()

bool SystemBase::matrixTagActive ( TagID  tag)
virtualinherited

If or not a matrix tag is active.

Definition at line 879 of file SystemBase.C.

880 {
881  mooseAssert(_subproblem.matrixTagExists(tag), "Matrix tag " << tag << " does not exist");
882 
883  return tag < _matrix_tag_active_flags.size() && _matrix_tag_active_flags[tag];
884 }
virtual bool matrixTagExists(const TagName &tag_name)
Check to see if a particular Tag exists.
Definition: SubProblem.C:128
std::vector< bool > _matrix_tag_active_flags
Active flags for tagged matrices.
Definition: SystemBase.h:719
SubProblem & _subproblem
Definition: SystemBase.h:694

◆ mesh()

virtual MooseMesh& SystemBase::mesh ( )
inlinevirtualinherited

◆ name()

const std::string & SystemBase::name ( ) const
virtualinherited

◆ nonTimeVectorTag()

virtual TagID DisplacedSystem::nonTimeVectorTag ( )
inlineoverridevirtual

Reimplemented from SystemBase.

Definition at line 43 of file DisplacedSystem.h.

Referenced by DisplacedProblem::addCachedResidualDirectly().

virtual TagID nonTimeVectorTag()
Definition: SystemBase.C:712
SystemBase & _undisplaced_system

◆ number()

unsigned int SystemBase::number ( ) const
virtualinherited

◆ nVariables()

unsigned int SystemBase::nVariables ( ) const
virtualinherited

Get the number of variables in this system.

Returns
the number of variables

Definition at line 676 of file SystemBase.C.

Referenced by FieldSplitPreconditioner::FieldSplitPreconditioner(), FiniteDifferencePreconditioner::FiniteDifferencePreconditioner(), NonlinearSystemBase::getNodeDofs(), Assembly::init(), MaxVarNDofsPerElem::onElement(), MaxVarNDofsPerNode::onNode(), PhysicsBasedPreconditioner::PhysicsBasedPreconditioner(), and SingleMatrixPreconditioner::SingleMatrixPreconditioner().

677 {
678  return _vars[0].names().size();
679 }
std::vector< VariableWarehouse > _vars
Variable warehouses (one for each thread)
Definition: SystemBase.h:704

◆ prepare()

void SystemBase::prepare ( THREAD_ID  tid)
virtualinherited

Prepare the system for use.

Parameters
tidID of the thread

Definition at line 242 of file SystemBase.C.

Referenced by DisplacedProblem::prepare(), DisplacedProblem::reinitDirac(), and DisplacedProblem::reinitElemPhys().

243 {
245  {
246  const std::set<MooseVariableFEBase *> & active_elemental_moose_variables =
248  const std::vector<MooseVariableFEBase *> & vars = _vars[tid].fieldVariables();
249  for (const auto & var : vars)
250  var->clearDofIndices();
251 
252  for (const auto & var : active_elemental_moose_variables)
253  if (&(var->sys()) == this)
254  var->prepare();
255  }
256  else
257  {
258  const std::vector<MooseVariableFEBase *> & vars = _vars[tid].fieldVariables();
259  for (const auto & var : vars)
260  var->prepare();
261  }
262 }
virtual bool hasActiveElementalMooseVariables(THREAD_ID tid) const
Whether or not a list of active elemental moose variables has been set.
Definition: SubProblem.C:252
virtual const std::set< MooseVariableFEBase * > & getActiveElementalMooseVariables(THREAD_ID tid) const
Get the MOOSE variables to be reinited on each element.
Definition: SubProblem.C:246
SubProblem & _subproblem
Definition: SystemBase.h:694
std::vector< VariableWarehouse > _vars
Variable warehouses (one for each thread)
Definition: SystemBase.h:704

◆ prepareFace()

void SystemBase::prepareFace ( THREAD_ID  tid,
bool  resize_data 
)
virtualinherited

Prepare the system for use on sides.

This will try to reuse the preparation done on the element.

Parameters
tidID of the thread
resize_dataPass True if this system needs to resize residual and jacobian datastructures based on preparing this face

Definition at line 265 of file SystemBase.C.

Referenced by DisplacedProblem::prepareFace().

266 {
267  // We only need to do something if the element prepare was restricted
269  {
270  const std::set<MooseVariableFEBase *> & active_elemental_moose_variables =
272 
273  std::vector<MooseVariableFEBase *> newly_prepared_vars;
274 
275  const std::vector<MooseVariableFEBase *> & vars = _vars[tid].fieldVariables();
276  for (const auto & var : vars)
277  {
278  // If it wasn't in the active list, we need to prepare it
279  if (&(var->sys()) == this && !active_elemental_moose_variables.count(var))
280  {
281  var->prepare();
282  newly_prepared_vars.push_back(var);
283  }
284  }
285 
286  // Make sure to resize the residual and jacobian datastructures for all the new variables
287  if (resize_data)
288  for (const auto var_ptr : newly_prepared_vars)
289  {
290  _subproblem.assembly(tid).prepareVariable(var_ptr);
293  }
294  }
295 }
virtual bool hasActiveElementalMooseVariables(THREAD_ID tid) const
Whether or not a list of active elemental moose variables has been set.
Definition: SubProblem.C:252
virtual Assembly & assembly(THREAD_ID tid)=0
virtual const std::set< MooseVariableFEBase * > & getActiveElementalMooseVariables(THREAD_ID tid) const
Get the MOOSE variables to be reinited on each element.
Definition: SubProblem.C:246
void prepareVariableNonlocal(MooseVariableFEBase *var)
Definition: Assembly.C:2004
SubProblem & _subproblem
Definition: SystemBase.h:694
virtual bool checkNonlocalCouplingRequirement()
Definition: SubProblem.h:69
void prepareVariable(MooseVariableFEBase *var)
Used for preparing the dense residual and jacobian blocks for one particular variable.
Definition: Assembly.C:1975
std::vector< VariableWarehouse > _vars
Variable warehouses (one for each thread)
Definition: SystemBase.h:704

◆ prepareNeighbor()

void SystemBase::prepareNeighbor ( THREAD_ID  tid)
virtualinherited

Prepare the system for use.

Parameters
tidID of the thread

Definition at line 298 of file SystemBase.C.

Referenced by DisplacedProblem::reinitNeighbor(), and DisplacedProblem::reinitNeighborPhys().

299 {
300  const std::vector<MooseVariableFEBase *> & vars = _vars[tid].fieldVariables();
301  for (const auto & var : vars)
302  var->prepareNeighbor();
303 }
std::vector< VariableWarehouse > _vars
Variable warehouses (one for each thread)
Definition: SystemBase.h:704

◆ reinitElem()

void SystemBase::reinitElem ( const Elem *  elem,
THREAD_ID  tid 
)
virtualinherited

Reinit an element assembly info.

Parameters
elemWhich element we are reinitializing for
tidID of the thread

Reimplemented in AuxiliarySystem.

Definition at line 306 of file SystemBase.C.

Referenced by DisplacedProblem::reinitElem().

307 {
308 
310  {
311  const std::set<MooseVariableFEBase *> & active_elemental_moose_variables =
313  for (const auto & var : active_elemental_moose_variables)
314  if (&(var->sys()) == this)
315  var->computeElemValues();
316  }
317  else
318  {
319  const std::vector<MooseVariableFEBase *> & vars = _vars[tid].fieldVariables();
320  for (const auto & var : vars)
321  var->computeElemValues();
322  }
323 }
virtual bool hasActiveElementalMooseVariables(THREAD_ID tid) const
Whether or not a list of active elemental moose variables has been set.
Definition: SubProblem.C:252
virtual const std::set< MooseVariableFEBase * > & getActiveElementalMooseVariables(THREAD_ID tid) const
Get the MOOSE variables to be reinited on each element.
Definition: SubProblem.C:246
SubProblem & _subproblem
Definition: SystemBase.h:694
std::vector< VariableWarehouse > _vars
Variable warehouses (one for each thread)
Definition: SystemBase.h:704

◆ reinitElemFace()

void SystemBase::reinitElemFace ( const Elem *  elem,
unsigned int  side,
BoundaryID  bnd_id,
THREAD_ID  tid 
)
virtualinherited

Reinit assembly info for a side of an element.

Parameters
elemThe element
sideSide of of the element
bnd_idBoundary id on that side
tidThread ID

Reimplemented in AuxiliarySystem.

Definition at line 326 of file SystemBase.C.

Referenced by DisplacedProblem::reinitElemFace(), and DisplacedProblem::reinitNeighbor().

330 {
331  const std::vector<MooseVariableFEBase *> & vars = _vars[tid].fieldVariables();
332  for (const auto & var : vars)
333  var->computeElemValuesFace();
334 }
std::vector< VariableWarehouse > _vars
Variable warehouses (one for each thread)
Definition: SystemBase.h:704

◆ reinitNeighbor()

void SystemBase::reinitNeighbor ( const Elem *  elem,
THREAD_ID  tid 
)
virtualinherited

Compute the values of the variables at all the current points.

Definition at line 348 of file SystemBase.C.

Referenced by DisplacedProblem::reinitNeighborPhys().

349 {
350  const std::vector<MooseVariableFEBase *> & vars = _vars[tid].fieldVariables();
351  for (const auto & var : vars)
352  var->computeNeighborValues();
353 }
std::vector< VariableWarehouse > _vars
Variable warehouses (one for each thread)
Definition: SystemBase.h:704

◆ reinitNeighborFace()

void SystemBase::reinitNeighborFace ( const Elem *  elem,
unsigned int  side,
BoundaryID  bnd_id,
THREAD_ID  tid 
)
virtualinherited

Compute the values of the variables at all the current points.

Definition at line 337 of file SystemBase.C.

Referenced by DisplacedProblem::reinitNeighbor(), and DisplacedProblem::reinitNeighborPhys().

341 {
342  const std::vector<MooseVariableFEBase *> & vars = _vars[tid].fieldVariables();
343  for (const auto & var : vars)
344  var->computeNeighborValuesFace();
345 }
std::vector< VariableWarehouse > _vars
Variable warehouses (one for each thread)
Definition: SystemBase.h:704

◆ reinitNode()

void SystemBase::reinitNode ( const Node *  node,
THREAD_ID  tid 
)
virtualinherited

Reinit nodal assembly info.

Parameters
nodeNode to reinit for
tidThread ID

Definition at line 356 of file SystemBase.C.

Referenced by DisplacedProblem::reinitNode().

357 {
358  const std::vector<MooseVariableFEBase *> & vars = _vars[tid].fieldVariables();
359  for (const auto & var : vars)
360  {
361  if (var->isNodal())
362  {
363  var->reinitNode();
364  var->computeNodalValues();
365  }
366  }
367 }
std::vector< VariableWarehouse > _vars
Variable warehouses (one for each thread)
Definition: SystemBase.h:704

◆ reinitNodeFace()

void SystemBase::reinitNodeFace ( const Node *  node,
BoundaryID  bnd_id,
THREAD_ID  tid 
)
virtualinherited

Reinit nodal assembly info on a face.

Parameters
nodeNode to reinit
bnd_idBoundary ID
tidThread ID

Definition at line 370 of file SystemBase.C.

Referenced by DisplacedProblem::reinitNodeFace().

371 {
372  const std::vector<MooseVariableFEBase *> & vars = _vars[tid].fieldVariables();
373  for (const auto & var : vars)
374  {
375  if (var->isNodal())
376  {
377  var->reinitNode();
378  var->computeNodalValues();
379  }
380  }
381 }
std::vector< VariableWarehouse > _vars
Variable warehouses (one for each thread)
Definition: SystemBase.h:704

◆ reinitNodes()

void SystemBase::reinitNodes ( const std::vector< dof_id_type > &  nodes,
THREAD_ID  tid 
)
virtualinherited

Reinit variables at a set of nodes.

Parameters
nodesList of node ids to reinit
tidThread ID

Definition at line 384 of file SystemBase.C.

Referenced by DisplacedProblem::reinitNodes().

385 {
386  const std::vector<MooseVariableFEBase *> & vars = _vars[tid].fieldVariables();
387  for (const auto & var : vars)
388  {
389  var->reinitNodes(nodes);
390  var->computeNodalValues();
391  }
392 }
std::vector< VariableWarehouse > _vars
Variable warehouses (one for each thread)
Definition: SystemBase.h:704

◆ reinitNodesNeighbor()

void SystemBase::reinitNodesNeighbor ( const std::vector< dof_id_type > &  nodes,
THREAD_ID  tid 
)
virtualinherited

Reinit variables at a set of neighbor nodes.

Parameters
nodesList of node ids to reinit
tidThread ID

Definition at line 395 of file SystemBase.C.

Referenced by DisplacedProblem::reinitNodesNeighbor().

396 {
397  const std::vector<MooseVariableFEBase *> & vars = _vars[tid].fieldVariables();
398  for (const auto & var : vars)
399  {
400  var->reinitNodesNeighbor(nodes);
401  var->computeNodalNeighborValues();
402  }
403 }
std::vector< VariableWarehouse > _vars
Variable warehouses (one for each thread)
Definition: SystemBase.h:704

◆ reinitScalars()

void SystemBase::reinitScalars ( THREAD_ID  tid)
virtualinherited

Reinit scalar varaibles.

Parameters
tidThread ID

Definition at line 406 of file SystemBase.C.

Referenced by DisplacedProblem::reinitScalars().

407 {
408  const std::vector<MooseVariableScalar *> & vars = _vars[tid].scalars();
409  for (const auto & var : vars)
410  var->reinit();
411 }
std::vector< VariableWarehouse > _vars
Variable warehouses (one for each thread)
Definition: SystemBase.h:704

◆ removeMatrix()

virtual void SystemBase::removeMatrix ( TagID  )
inlinevirtualinherited

Removes a jacobian sized vector.

Parameters
tag_nameThe name of the tag

Definition at line 652 of file SystemBase.h.

653  {
654  mooseError("Removing a matrix is not supported for this type of system!");
655  }
void mooseError(Args &&... args)
Emit an error message with the given stringified, concatenated args and terminate the application...
Definition: MooseError.h:208

◆ removeVector() [1/2]

void SystemBase::removeVector ( const std::string &  name)
virtualinherited

Remove a vector from the system with the given name.

Definition at line 1043 of file SystemBase.C.

Referenced by SystemBase::restoreOldSolutions().

1044 {
1045  system().remove_vector(name);
1046 }
virtual const std::string & name() const
Definition: SystemBase.C:1049
virtual System & system()=0
Get the reference to the libMesh system.

◆ removeVector() [2/2]

void SystemBase::removeVector ( TagID  tag_id)
virtualinherited

Remove a solution length vector from the system with the specified TagID.

Parameters
tag_idTag ID

Definition at line 580 of file SystemBase.C.

581 {
582  if (!_subproblem.vectorTagExists(tag_id))
583  mooseError("Cannot remove an unexisting tag or its associated vector, ",
584  tag_id,
585  ", that tag does not exist in System ",
586  name());
587 
588  if (hasVector(tag_id))
589  {
590  auto vector_name = _subproblem.vectorTagName(tag_id);
591  system().remove_vector(vector_name);
592  _tagged_vectors[tag_id] = nullptr;
593  }
594 }
virtual TagName vectorTagName(TagID tag)
Retrieve the name associated with a TagID.
Definition: SubProblem.C:105
bool hasVector(const std::string &tag_name) const
Check if the named vector exists in the system.
Definition: SystemBase.C:685
void mooseError(Args &&... args)
Emit an error message with the given stringified, concatenated args and terminate the application...
Definition: MooseError.h:208
virtual const std::string & name() const
Definition: SystemBase.C:1049
SubProblem & _subproblem
Definition: SystemBase.h:694
virtual bool vectorTagExists(TagID tag)
Check to see if a particular Tag exists.
Definition: SubProblem.h:112
virtual System & system()=0
Get the reference to the libMesh system.
std::vector< NumericVector< Number > * > _tagged_vectors
Tagged vectors (pointer)
Definition: SystemBase.h:715

◆ residualCopy()

virtual NumericVector<Number>& DisplacedSystem::residualCopy ( )
inlineoverridevirtual

Return the residual copy from the NonlinearSystem.

Returns
Residual copy

Reimplemented from SystemBase.

Definition at line 106 of file DisplacedSystem.h.

107  {
109  }
virtual NumericVector< Number > & residualCopy()
Definition: SystemBase.h:291
SystemBase & _undisplaced_system

◆ residualGhosted()

virtual NumericVector<Number>& DisplacedSystem::residualGhosted ( )
inlineoverridevirtual

Reimplemented from SystemBase.

Definition at line 110 of file DisplacedSystem.h.

111  {
113  }
SystemBase & _undisplaced_system
virtual NumericVector< Number > & residualGhosted()
Definition: SystemBase.h:295

◆ residualVectorTag()

TagID SystemBase::residualVectorTag ( )
virtualinherited

Reimplemented in NonlinearSystemBase.

Definition at line 719 of file SystemBase.C.

720 {
721  mooseError("Not implemented yet");
722  return 0;
723 }
void mooseError(Args &&... args)
Emit an error message with the given stringified, concatenated args and terminate the application...
Definition: MooseError.h:208

◆ restoreOldSolutions()

void SystemBase::restoreOldSolutions ( )
virtualinherited

Restore the old and older solutions when the saved solutions present.

Definition at line 497 of file SystemBase.C.

Referenced by DisplacedProblem::restoreOldSolutions().

498 {
499  if (_saved_old)
500  {
501  solutionOld() = *_saved_old;
502  removeVector("save_solution_old");
503  _saved_old = nullptr;
504  }
505  if (_saved_older)
506  {
508  removeVector("save_solution_older");
509  _saved_older = nullptr;
510  }
512  {
514  removeVector("save_solution_dot_old");
515  _saved_dot_old = NULL;
516  }
518  {
520  removeVector("save_solution_dotdot_old");
521  _saved_dotdot_old = NULL;
522  }
523 }
virtual NumericVector< Number > & solutionOld()=0
virtual NumericVector< Number > * solutionUDotDotOld()=0
NumericVector< Real > * _saved_older
Definition: SystemBase.h:723
NumericVector< Real > * _saved_dot_old
Definition: SystemBase.h:726
virtual void removeVector(const std::string &name)
Remove a vector from the system with the given name.
Definition: SystemBase.C:1043
NumericVector< Real > * _saved_old
Definition: SystemBase.h:722
virtual NumericVector< Number > & solutionOlder()=0
NumericVector< Real > * _saved_dotdot_old
Definition: SystemBase.h:727
virtual NumericVector< Number > * solutionUDotOld()=0

◆ restoreSolutions()

void SystemBase::restoreSolutions ( )
virtualinherited

Restore current solutions (call after your solve failed)

Reimplemented in NonlinearSystemBase.

Definition at line 1029 of file SystemBase.C.

Referenced by NonlinearSystemBase::restoreSolutions().

1030 {
1031  *(const_cast<NumericVector<Number> *&>(currentSolution())) = solutionOld();
1032  solution() = solutionOld();
1033  if (solutionUDotOld())
1034  *solutionUDot() = *solutionUDotOld();
1035  if (solutionUDotDotOld())
1037  if (solutionPreviousNewton())
1039  system().update();
1040 }
virtual NumericVector< Number > * solutionUDot()=0
virtual NumericVector< Number > & solutionOld()=0
virtual NumericVector< Number > * solutionUDotDotOld()=0
virtual NumericVector< Number > * solutionPreviousNewton()=0
virtual System & system()=0
Get the reference to the libMesh system.
virtual NumericVector< Number > & solution()=0
virtual NumericVector< Number > * solutionUDotOld()=0
virtual NumericVector< Number > * solutionUDotDot()=0
virtual const NumericVector< Number > *& currentSolution()=0
The solution vector that is currently being operated on.

◆ saveOldSolutions()

void SystemBase::saveOldSolutions ( )
virtualinherited

Save the old and older solutions.

Definition at line 472 of file SystemBase.C.

Referenced by DisplacedProblem::saveOldSolutions().

473 {
474  if (!_saved_old)
475  _saved_old = &addVector("save_solution_old", false, PARALLEL);
476  if (!_saved_older)
477  _saved_older = &addVector("save_solution_older", false, PARALLEL);
479  _saved_dot_old = &addVector("save_solution_dot_old", false, PARALLEL);
481  _saved_dotdot_old = &addVector("save_solution_dotdot_old", false, PARALLEL);
482 
483  *_saved_old = solutionOld();
485 
486  if (solutionUDotOld())
488 
489  if (solutionUDotDotOld())
491 }
virtual NumericVector< Number > & addVector(const std::string &vector_name, const bool project, const ParallelType type)
Adds a solution length vector to the system.
Definition: SystemBase.C:526
virtual NumericVector< Number > & solutionOld()=0
virtual NumericVector< Number > * solutionUDotDotOld()=0
NumericVector< Real > * _saved_older
Definition: SystemBase.h:723
NumericVector< Real > * _saved_dot_old
Definition: SystemBase.h:726
NumericVector< Real > * _saved_old
Definition: SystemBase.h:722
virtual NumericVector< Number > & solutionOlder()=0
NumericVector< Real > * _saved_dotdot_old
Definition: SystemBase.h:727
virtual NumericVector< Number > * solutionUDotOld()=0

◆ serializedSolution()

virtual NumericVector<Number>& DisplacedSystem::serializedSolution ( )
inlineoverridevirtual

Returns a reference to a serialized version of the solution vector for this subproblem.

Implements SystemBase.

Definition at line 77 of file DisplacedSystem.h.

78  {
80  }
SystemBase & _undisplaced_system
virtual NumericVector< Number > & serializedSolution()=0
Returns a reference to a serialized version of the solution vector for this subproblem.

◆ solution()

virtual NumericVector<Number>& DisplacedSystem::solution ( )
inlineoverridevirtual

Implements SystemBase.

Definition at line 87 of file DisplacedSystem.h.

87 { return _undisplaced_system.solution(); }
SystemBase & _undisplaced_system
virtual NumericVector< Number > & solution()=0

◆ solutionOld()

NumericVector< Number > & DisplacedSystem::solutionOld ( )
overridevirtual

Implements SystemBase.

Definition at line 49 of file DisplacedSystem.C.

50 {
51  return *_sys.old_local_solution;
52 }
TransientExplicitSystem & _sys

◆ solutionOlder()

NumericVector< Number > & DisplacedSystem::solutionOlder ( )
overridevirtual

Implements SystemBase.

Definition at line 55 of file DisplacedSystem.C.

56 {
57  return *_sys.older_local_solution;
58 }
TransientExplicitSystem & _sys

◆ solutionPreviousNewton()

virtual NumericVector<Number>* DisplacedSystem::solutionPreviousNewton ( )
inlineoverridevirtual

Implements SystemBase.

Definition at line 179 of file DisplacedSystem.h.

179 { return NULL; }

◆ solutionUDot()

virtual NumericVector<Number>* DisplacedSystem::solutionUDot ( )
inlineoverridevirtual

Implements SystemBase.

Definition at line 89 of file DisplacedSystem.h.

90  {
92  }
virtual NumericVector< Number > * solutionUDot()=0
SystemBase & _undisplaced_system

◆ solutionUDotDot()

virtual NumericVector<Number>* DisplacedSystem::solutionUDotDot ( )
inlineoverridevirtual

Implements SystemBase.

Definition at line 94 of file DisplacedSystem.h.

95  {
97  }
SystemBase & _undisplaced_system
virtual NumericVector< Number > * solutionUDotDot()=0

◆ solutionUDotDotOld()

virtual NumericVector<Number>* DisplacedSystem::solutionUDotDotOld ( )
inlineoverridevirtual

Implements SystemBase.

Definition at line 174 of file DisplacedSystem.h.

175  {
177  }
virtual NumericVector< Number > * solutionUDotDotOld()=0
SystemBase & _undisplaced_system

◆ solutionUDotOld()

virtual NumericVector<Number>* DisplacedSystem::solutionUDotOld ( )
inlineoverridevirtual

Implements SystemBase.

Definition at line 169 of file DisplacedSystem.h.

170  {
172  }
SystemBase & _undisplaced_system
virtual NumericVector< Number > * solutionUDotOld()=0

◆ solve()

void SystemBase::solve ( )
virtualinherited

Solve the system (using libMesh magic)

Reimplemented in NonlinearSystemBase, NonlinearEigenSystem, DumpObjectsNonlinearSystem, and NonlinearSystem.

Definition at line 987 of file SystemBase.C.

988 {
989  system().solve();
990 }
virtual System & system()=0
Get the reference to the libMesh system.

◆ subproblem()

virtual SubProblem& SystemBase::subproblem ( )
inlinevirtualinherited

◆ sys()

virtual TransientExplicitSystem& DisplacedSystem::sys ( )
inlinevirtual

Definition at line 181 of file DisplacedSystem.h.

Referenced by UpdateDisplacedMeshThread::init(), and DisplacedProblem::syncSolutions().

181 { return _sys; }
TransientExplicitSystem & _sys

◆ system() [1/2]

System & DisplacedSystem::system ( )
overridevirtual

Get the reference to the libMesh system.

Implements SystemBase.

Definition at line 61 of file DisplacedSystem.C.

Referenced by DisplacedProblem::getSystem().

62 {
63  return _sys;
64 }
TransientExplicitSystem & _sys

◆ system() [2/2]

const System & DisplacedSystem::system ( ) const
overridevirtual

Implements SystemBase.

Definition at line 67 of file DisplacedSystem.C.

68 {
69  return _sys;
70 }
TransientExplicitSystem & _sys

◆ systemMatrixTag()

TagID SystemBase::systemMatrixTag ( )
virtualinherited

Return the Matrix Tag ID for System.

Reimplemented in NonlinearSystemBase.

Definition at line 705 of file SystemBase.C.

706 {
707  mooseError("Not implemented yet");
708  return 0;
709 }
void mooseError(Args &&... args)
Emit an error message with the given stringified, concatenated args and terminate the application...
Definition: MooseError.h:208

◆ timeMatrixTag()

TagID SystemBase::timeMatrixTag ( )
virtualinherited

Return the Matrix Tag ID for Time.

Definition at line 698 of file SystemBase.C.

699 {
700  mooseError("Not implemented yet");
701  return 0;
702 }
void mooseError(Args &&... args)
Emit an error message with the given stringified, concatenated args and terminate the application...
Definition: MooseError.h:208

◆ timeVectorTag()

virtual TagID DisplacedSystem::timeVectorTag ( )
inlineoverridevirtual

Ideally, we should not need this API.

There exists a really bad API "addCachedResidualDirectly " in FEProblem and DisplacedProblem This API should go away once addCachedResidualDirectly is removed in the future Return Tag ID for Time

Reimplemented from SystemBase.

Definition at line 41 of file DisplacedSystem.h.

Referenced by DisplacedProblem::addCachedResidualDirectly().

virtual TagID timeVectorTag()
Ideally, we should not need this API.
Definition: SystemBase.C:691
SystemBase & _undisplaced_system

◆ update()

void SystemBase::update ( )
virtualinherited

◆ zeroTaggedVectors()

void SystemBase::zeroTaggedVectors ( const std::set< TagID > &  tags)
virtualinherited

Zero all vectors for given tags.

Definition at line 570 of file SystemBase.C.

Referenced by NonlinearSystemBase::computeResidualTags().

571 {
572  for (auto & tag : tags)
573  {
574  mooseAssert(_subproblem.vectorTagExists(tag), "Tag: " << tag << " does not exsit");
575  getVector(tag).zero();
576  }
577 }
SubProblem & _subproblem
Definition: SystemBase.h:694
virtual bool vectorTagExists(TagID tag)
Check to see if a particular Tag exists.
Definition: SubProblem.h:112
virtual NumericVector< Number > & getVector(const std::string &name)
Get a raw NumericVector.
Definition: SystemBase.C:735

◆ zeroVariables()

virtual void DisplacedSystem::zeroVariables ( std::vector< std::string > &  vars_to_be_zeroed)
inlineoverridevirtual

Zero out the solution for the list of variables passed in.

Reimplemented from SystemBase.

Definition at line 151 of file DisplacedSystem.h.

152  {
153  _undisplaced_system.zeroVariables(vars_to_be_zeroed);
154  }
SystemBase & _undisplaced_system
virtual void zeroVariables(std::vector< std::string > &vars_to_be_zeroed)
Zero out the solution for the list of variables passed in.
Definition: SystemBase.C:190

◆ zeroVariablesForJacobian()

void SystemBase::zeroVariablesForJacobian ( )
virtualinherited

Zero out the solution for the variables that were registered as needing to have their solutions zeroed on out on Jacobian evaluation by a call to addVariableToZeroOnResidual()

Definition at line 221 of file SystemBase.C.

222 {
224 }
std::vector< std::string > _vars_to_be_zeroed_on_jacobian
Definition: SystemBase.h:709
virtual void zeroVariables(std::vector< std::string > &vars_to_be_zeroed)
Zero out the solution for the list of variables passed in.
Definition: SystemBase.C:190

◆ zeroVariablesForResidual()

void SystemBase::zeroVariablesForResidual ( )
virtualinherited

Zero out the solution for the variables that were registered as needing to have their solutions zeroed on out on residual evaluation by a call to addVariableToZeroOnResidual()

Definition at line 215 of file SystemBase.C.

216 {
218 }
std::vector< std::string > _vars_to_be_zeroed_on_residual
Definition: SystemBase.h:708
virtual void zeroVariables(std::vector< std::string > &vars_to_be_zeroed)
Zero out the solution for the list of variables passed in.
Definition: SystemBase.C:190

Member Data Documentation

◆ _app

MooseApp& SystemBase::_app
protectedinherited

◆ _du_dot_du

Real SystemBase::_du_dot_du
protectedinherited

Definition at line 711 of file SystemBase.h.

Referenced by SystemBase::duDotDu().

◆ _du_dotdot_du

Real SystemBase::_du_dotdot_du
protectedinherited

Definition at line 712 of file SystemBase.h.

Referenced by SystemBase::duDotDotDu().

◆ _factory

Factory& SystemBase::_factory
protectedinherited

◆ _matrix_tag_active_flags

std::vector<bool> SystemBase::_matrix_tag_active_flags
protectedinherited

◆ _max_var_n_dofs_per_elem

size_t SystemBase::_max_var_n_dofs_per_elem
protectedinherited

Maximum number of dofs for any one variable on any one element.

Definition at line 735 of file SystemBase.h.

Referenced by SystemBase::assignMaxVarNDofsPerElem(), SystemBase::getMaxVarNDofsPerElem(), and NonlinearSystemBase::init().

◆ _max_var_n_dofs_per_node

size_t SystemBase::_max_var_n_dofs_per_node
protectedinherited

Maximum number of dofs for any one variable on any one node.

Definition at line 738 of file SystemBase.h.

Referenced by SystemBase::assignMaxVarNDofsPerNode(), SystemBase::getMaxVarNDofsPerNode(), and NonlinearSystemBase::init().

◆ _mesh

MooseMesh& SystemBase::_mesh
protectedinherited

◆ _name

std::string SystemBase::_name
protectedinherited

The name of this system.

Definition at line 701 of file SystemBase.h.

◆ _saved_dot_old

NumericVector<Real>* SystemBase::_saved_dot_old
protectedinherited

Definition at line 726 of file SystemBase.h.

Referenced by SystemBase::restoreOldSolutions(), and SystemBase::saveOldSolutions().

◆ _saved_dotdot_old

NumericVector<Real>* SystemBase::_saved_dotdot_old
protectedinherited

Definition at line 727 of file SystemBase.h.

Referenced by SystemBase::restoreOldSolutions(), and SystemBase::saveOldSolutions().

◆ _saved_old

NumericVector<Real>* SystemBase::_saved_old
protectedinherited

Definition at line 722 of file SystemBase.h.

Referenced by SystemBase::restoreOldSolutions(), and SystemBase::saveOldSolutions().

◆ _saved_older

NumericVector<Real>* SystemBase::_saved_older
protectedinherited

Definition at line 723 of file SystemBase.h.

Referenced by SystemBase::restoreOldSolutions(), and SystemBase::saveOldSolutions().

◆ _subproblem

SubProblem& SystemBase::_subproblem
protectedinherited

◆ _sys

TransientExplicitSystem& DisplacedSystem::_sys
protected

Definition at line 191 of file DisplacedSystem.h.

Referenced by getVector(), solutionOld(), solutionOlder(), sys(), and system().

◆ _tagged_matrices

std::vector<SparseMatrix<Number> *> SystemBase::_tagged_matrices
protectedinherited

◆ _tagged_vectors

std::vector<NumericVector<Number> *> SystemBase::_tagged_vectors
protectedinherited

◆ _time_integrator

std::shared_ptr<TimeIntegrator> SystemBase::_time_integrator
protectedinherited

◆ _undisplaced_system

SystemBase& DisplacedSystem::_undisplaced_system
protected

◆ _var_kind

Moose::VarKindType SystemBase::_var_kind
protectedinherited

default kind of variables in this system

Definition at line 730 of file SystemBase.h.

Referenced by SystemBase::addScalarVariable(), and SystemBase::addVariable().

◆ _var_map

std::map<unsigned int, std::set<SubdomainID> > SystemBase::_var_map
protectedinherited

Map of variables (variable id -> array of subdomains where it lives)

Definition at line 706 of file SystemBase.h.

Referenced by SystemBase::addScalarVariable(), SystemBase::addVariable(), SystemBase::getSubdomainsForVar(), and SystemBase::getVariableBlocks().

◆ _var_to_copy

std::vector<VarCopyInfo> SystemBase::_var_to_copy
protectedinherited

Definition at line 732 of file SystemBase.h.

Referenced by SystemBase::addVariableToCopy(), and SystemBase::copyVars().

◆ _vars

std::vector<VariableWarehouse> SystemBase::_vars
protectedinherited

◆ _vars_to_be_zeroed_on_jacobian

std::vector<std::string> SystemBase::_vars_to_be_zeroed_on_jacobian
protectedinherited

◆ _vars_to_be_zeroed_on_residual

std::vector<std::string> SystemBase::_vars_to_be_zeroed_on_residual
protectedinherited

The documentation for this class was generated from the following files: