www.mooseframework.org
SystemBase.h
Go to the documentation of this file.
1 //* This file is part of the MOOSE framework
2 //* https://www.mooseframework.org
3 //*
4 //* All rights reserved, see COPYRIGHT for full restrictions
5 //* https://github.com/idaholab/moose/blob/master/COPYRIGHT
6 //*
7 //* Licensed under LGPL 2.1, please see LICENSE for details
8 //* https://www.gnu.org/licenses/lgpl-2.1.html
9 
10 #pragma once
11 
12 #include <vector>
13 
14 #include "DataIO.h"
15 #include "MooseTypes.h"
16 #include "VariableWarehouse.h"
17 #include "InputParameters.h"
19 #include "MooseVariableBase.h"
20 
21 // libMesh
22 #include "libmesh/exodusII_io.h"
23 #include "libmesh/parallel_object.h"
24 #include "libmesh/numeric_vector.h"
25 #include "libmesh/sparse_matrix.h"
26 
27 // Forward declarations
28 class Factory;
29 class MooseApp;
31 template <typename>
35 class MooseMesh;
36 class SubProblem;
37 class SystemBase;
38 class TimeIntegrator;
39 class InputParameters;
40 
41 // libMesh forward declarations
42 namespace libMesh
43 {
44 class System;
45 class DofMap;
46 class FEType;
47 }
48 
52 void extraSendList(std::vector<dof_id_type> & send_list, void * context);
53 
57 void extraSparsity(SparsityPattern::Graph & sparsity,
58  std::vector<dof_id_type> & n_nz,
59  std::vector<dof_id_type> & n_oz,
60  void * context);
61 
65 template <>
66 void dataStore(std::ostream & stream, SystemBase & system_base, void * context);
67 
71 template <>
72 void dataLoad(std::istream & stream, SystemBase & system_base, void * context);
73 
78 {
79  VarCopyInfo(const std::string & dest_name,
80  const std::string & source_name,
81  const std::string & timestep)
82  : _dest_name(dest_name), _source_name(source_name), _timestep(timestep)
83  {
84  }
85 
86  std::string _dest_name;
87  std::string _source_name;
88  std::string _timestep;
89 };
90 
95 class SystemBase : public libMesh::ParallelObject
96 {
97 public:
98  SystemBase(SubProblem & subproblem, const std::string & name, Moose::VarKindType var_kind);
99  virtual ~SystemBase() {}
100 
105  virtual unsigned int number() const;
106  virtual MooseMesh & mesh() { return _mesh; }
107  virtual const MooseMesh & mesh() const { return _mesh; }
108  virtual SubProblem & subproblem() { return _subproblem; }
109  virtual const SubProblem & subproblem() const { return _subproblem; }
110 
116  void applyScalingFactors(const std::vector<Real> & inverse_scaling_factors);
117 
122 
126  void computingScalingJacobian(bool computing_scaling_jacobian)
127  {
128  _computing_scaling_jacobian = computing_scaling_jacobian;
129  }
130 
135 
139  void computingScalingResidual(bool computing_scaling_residual)
140  {
141  _computing_scaling_residual = computing_scaling_residual;
142  }
143 
147  virtual DofMap & dofMap();
148 
152  virtual const DofMap & dofMap() const;
153 
157  virtual System & system() = 0;
158  virtual const System & system() const = 0;
159 
163  virtual void init(){};
164 
168  virtual void initializeObjects(){};
169 
174  virtual void addExtraVectors();
175 
179  virtual void update();
180 
184  virtual void solve();
185 
186  virtual void copyOldSolutions();
187  virtual void restoreSolutions();
188 
193  virtual const NumericVector<Number> * const & currentSolution() const = 0;
194 
195  virtual NumericVector<Number> & solution() = 0;
196  virtual NumericVector<Number> & solutionOld() = 0;
197  virtual NumericVector<Number> & solutionOlder() = 0;
198  virtual NumericVector<Number> * solutionPreviousNewton() = 0;
199  virtual const NumericVector<Number> & solution() const = 0;
200  virtual const NumericVector<Number> & solutionOld() const = 0;
201  virtual const NumericVector<Number> & solutionOlder() const = 0;
202  virtual const NumericVector<Number> * solutionPreviousNewton() const = 0;
203 
204  virtual Number & duDotDu() { return _du_dot_du; }
205  virtual Number & duDotDotDu() { return _du_dotdot_du; }
206  virtual const Number & duDotDu() const { return _du_dot_du; }
207  virtual const Number & duDotDotDu() const { return _du_dotdot_du; }
208 
209  // non-const getters
210  virtual NumericVector<Number> * solutionUDot() = 0;
211  virtual NumericVector<Number> * solutionUDotOld() = 0;
212  virtual NumericVector<Number> * solutionUDotDot() = 0;
213  virtual NumericVector<Number> * solutionUDotDotOld() = 0;
214  // const getters
215  virtual const NumericVector<Number> * solutionUDot() const = 0;
216  virtual const NumericVector<Number> * solutionUDotOld() const = 0;
217  virtual const NumericVector<Number> * solutionUDotDot() const = 0;
218  virtual const NumericVector<Number> * solutionUDotDotOld() const = 0;
219 
220  virtual void saveOldSolutions();
221  virtual void restoreOldSolutions();
222 
226  bool hasVector(const std::string & tag_name) const;
227 
231  virtual bool hasVector(TagID tag_id) const;
232 
239  virtual TagID timeVectorTag();
240 
244  virtual TagID timeMatrixTag();
245 
249  virtual TagID systemMatrixTag();
250 
251  /*
252  * Return TagID for nontime
253  */
254  virtual TagID nonTimeVectorTag();
255 
256  /*
257  * Return TagID for nontime
258  */
259  virtual TagID residualVectorTag();
260 
264  virtual NumericVector<Number> & getVector(const std::string & name);
265 
269  virtual NumericVector<Number> & getVector(TagID tag);
270 
274  virtual const NumericVector<Number> & getVector(TagID tag) const;
275 
279  virtual void associateVectorToTag(NumericVector<Number> & vec, TagID tag);
280 
284  virtual void disassociateVectorFromTag(NumericVector<Number> & vec, TagID tag);
285 
289  virtual void disassociateAllTaggedVectors();
290 
294  virtual bool hasMatrix(TagID tag) const;
295 
299  virtual SparseMatrix<Number> & getMatrix(TagID tag);
300 
304  virtual const SparseMatrix<Number> & getMatrix(TagID tag) const;
305 
309  virtual void activeAllMatrixTags();
310 
314  virtual void activeMatrixTag(TagID tag);
315 
319  virtual bool matrixTagActive(TagID tag) const;
320 
324  virtual void deactiveMatrixTag(TagID tag);
325 
329  virtual void deactiveAllMatrixTags();
330 
334  void closeTaggedMatrices(const std::set<TagID> & tags);
335 
339  virtual void associateMatrixToTag(SparseMatrix<Number> & matrix, TagID tag);
340 
344  virtual void disassociateMatrixFromTag(SparseMatrix<Number> & matrix, TagID tag);
345 
349  virtual void disassociateAllTaggedMatrices();
350 
354  virtual NumericVector<Number> & serializedSolution() = 0;
355 
356  virtual NumericVector<Number> & residualCopy()
357  {
358  mooseError("This system does not support getting a copy of the residual");
359  }
360  virtual NumericVector<Number> & residualGhosted()
361  {
362  mooseError("This system does not support getting a ghosted copy of the residual");
363  }
364 
368  virtual void augmentSendList(std::vector<dof_id_type> & send_list);
369 
373  virtual void augmentSparsity(SparsityPattern::Graph & sparsity,
374  std::vector<dof_id_type> & n_nz,
375  std::vector<dof_id_type> & n_oz) = 0;
376 
383  virtual void addVariable(const std::string & var_type,
384  const std::string & var_name,
385  InputParameters & parameters);
386 
390  virtual bool isArrayVariable(const std::string & var_name) const;
391 
393 
399  virtual bool hasVariable(const std::string & var_name) const;
400  virtual bool hasScalarVariable(const std::string & var_name) const;
402 
403  virtual bool isScalarVariable(unsigned int var_name) const;
404 
412  MooseVariableFEBase & getVariable(THREAD_ID tid, const std::string & var_name);
413 
421  MooseVariableFEBase & getVariable(THREAD_ID tid, unsigned int var_number);
422 
430  template <typename T>
431  MooseVariableFE<T> & getFieldVariable(THREAD_ID tid, const std::string & var_name);
432 
440  template <typename T>
441  MooseVariableFE<T> & getFieldVariable(THREAD_ID tid, unsigned int var_number);
442 
450  virtual MooseVariableScalar & getScalarVariable(THREAD_ID tid, const std::string & var_name);
451 
459  virtual MooseVariableScalar & getScalarVariable(THREAD_ID tid, unsigned int var_number);
460 
467  virtual const std::set<SubdomainID> * getVariableBlocks(unsigned int var_number);
468 
473  virtual unsigned int nVariables() const;
474 
480  std::size_t getMaxVarNDofsPerElem() const { return _max_var_n_dofs_per_elem; }
481 
487  std::size_t getMaxVarNDofsPerNode() const { return _max_var_n_dofs_per_node; }
488 
492  void assignMaxVarNDofsPerElem(std::size_t max_dofs) { _max_var_n_dofs_per_elem = max_dofs; }
493 
497  void assignMaxVarNDofsPerNode(std::size_t max_dofs) { _max_var_n_dofs_per_node = max_dofs; }
498 
503  virtual void addVariableToZeroOnResidual(std::string var_name);
504 
509  virtual void addVariableToZeroOnJacobian(std::string var_name);
510 
517  virtual void zeroVariables(std::vector<std::string> & vars_to_be_zeroed);
518 
523  virtual void zeroVariablesForResidual();
524 
529  virtual void zeroVariablesForJacobian();
530 
535  virtual Order getMinQuadratureOrder();
536 
541  virtual void prepare(THREAD_ID tid);
542 
552  virtual void prepareFace(THREAD_ID tid, bool resize_data);
553 
558  virtual void prepareNeighbor(THREAD_ID tid);
559 
564  virtual void prepareLowerD(THREAD_ID tid);
565 
571  virtual void reinitElem(const Elem * elem, THREAD_ID tid);
572 
580  virtual void
581  reinitElemFace(const Elem * elem, unsigned int side, BoundaryID bnd_id, THREAD_ID tid);
582 
586  virtual void
587  reinitNeighborFace(const Elem * elem, unsigned int side, BoundaryID bnd_id, THREAD_ID tid);
588 
592  virtual void reinitNeighbor(const Elem * elem, THREAD_ID tid);
593 
597  virtual void reinitLowerD(THREAD_ID tid);
598 
604  virtual void reinitNode(const Node * node, THREAD_ID tid);
605 
612  virtual void reinitNodeFace(const Node * node, BoundaryID bnd_id, THREAD_ID tid);
613 
619  virtual void reinitNodes(const std::vector<dof_id_type> & nodes, THREAD_ID tid);
620 
626  virtual void reinitNodesNeighbor(const std::vector<dof_id_type> & nodes, THREAD_ID tid);
627 
634  virtual void reinitScalars(THREAD_ID tid, bool reinit_for_derivative_reordering = false);
635 
645  virtual void addVariableToCopy(const std::string & dest_name,
646  const std::string & source_name,
647  const std::string & timestep);
648 
649  const std::vector<MooseVariableFEBase *> & getVariables(THREAD_ID tid)
650  {
651  return _vars[tid].fieldVariables();
652  }
653 
654  const std::vector<MooseVariableScalar *> & getScalarVariables(THREAD_ID tid)
655  {
656  return _vars[tid].scalars();
657  }
658 
659  const std::set<SubdomainID> & getSubdomainsForVar(unsigned int var_number) const
660  {
661  return _var_map.at(var_number);
662  }
663 
667  virtual void removeVector(const std::string & name);
668 
682  virtual NumericVector<Number> &
683  addVector(const std::string & vector_name, const bool project, const ParallelType type);
684 
698  NumericVector<Number> & addVector(TagID tag, const bool project, const ParallelType type);
699 
703  virtual void closeTaggedVectors(const std::set<TagID> & tags);
704 
708  virtual void zeroTaggedVectors(const std::set<TagID> & tags);
709 
715  virtual void removeVector(TagID tag_id);
716 
722  virtual SparseMatrix<Number> & addMatrix(TagID /* tag */)
723  {
724  mooseError("Adding a matrix is not supported for this type of system!");
725  }
726 
732  virtual void removeMatrix(TagID /* tag */)
733  {
734  mooseError("Removing a matrix is not supported for this type of system!");
735  }
736 
737  virtual const std::string & name() const;
738 
739  const std::vector<VariableName> & getVariableNames() const { return _vars[0].names(); }
740 
744  unsigned int getMaxVariableNumber() const { return _max_var_number; }
745 
746  virtual void computeVariables(const NumericVector<Number> & /*soln*/) {}
747 
748  void copyVars(ExodusII_IO & io);
749 
753  virtual void copySolutionsBackwards();
754 
755  virtual void addTimeIntegrator(const std::string & /*type*/,
756  const std::string & /*name*/,
757  InputParameters & /*parameters*/)
758  {
759  }
760 
761  virtual void addTimeIntegrator(std::shared_ptr<TimeIntegrator> /*ti*/) {}
762 
764  const TimeIntegrator * getTimeIntegrator() const { return _time_integrator.get(); }
765 
766  std::shared_ptr<TimeIntegrator> getSharedTimeIntegrator() { return _time_integrator; }
767 
768 protected:
770 
773 
776  std::string _name;
777 
779  std::vector<VariableWarehouse> _vars;
781  std::map<unsigned int, std::set<SubdomainID>> _var_map;
783  unsigned int _max_var_number;
784 
785  std::vector<std::string> _vars_to_be_zeroed_on_residual;
786  std::vector<std::string> _vars_to_be_zeroed_on_jacobian;
787 
790 
792  std::vector<NumericVector<Number> *> _tagged_vectors;
794  std::vector<SparseMatrix<Number> *> _tagged_matrices;
796  std::vector<bool> _matrix_tag_active_flags;
797 
798  // Used for saving old solutions so that they wont be accidentally changed
799  NumericVector<Real> * _saved_old;
800  NumericVector<Real> * _saved_older;
801 
802  // Used for saving old u_dot and u_dotdot so that they wont be accidentally changed
803  NumericVector<Real> * _saved_dot_old;
804  NumericVector<Real> * _saved_dotdot_old;
805 
808 
809  std::vector<VarCopyInfo> _var_to_copy;
810 
813 
816 
818  std::shared_ptr<TimeIntegrator> _time_integrator;
819 
821  std::vector<std::vector<MooseVariableFEBase *>> _numbered_vars;
822 
825 
828 
831 };
832 
833 #define PARALLEL_TRY
834 
835 #define PARALLEL_CATCH _fe_problem.checkExceptionAndStopSolve();
VarCopyInfo::_dest_name
std::string _dest_name
Definition: SystemBase.h:86
MooseVariableFEBase
Definition: MooseVariableFEBase.h:27
SystemBase::getMatrix
virtual SparseMatrix< Number > & getMatrix(TagID tag)
Get a raw SparseMatrix.
Definition: SystemBase.C:858
SystemBase::addVariableToCopy
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.
Definition: SystemBase.C:991
SystemBase::addVector
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:543
DataIO.h
SystemBase::mesh
virtual MooseMesh & mesh()
Definition: SystemBase.h:106
type
MatType type
Definition: PetscDMMoose.C:1477
SystemBase::getVariable
MooseVariableFEBase & getVariable(THREAD_ID tid, const std::string &var_name)
Gets a reference to a variable of with specified name.
Definition: SystemBase.C:109
SystemBase::_du_dot_du
Real _du_dot_du
Definition: SystemBase.h:788
THREAD_ID
unsigned int THREAD_ID
Definition: MooseTypes.h:196
SystemBase::reinitNode
virtual void reinitNode(const Node *node, THREAD_ID tid)
Reinit nodal assembly info.
Definition: SystemBase.C:377
SystemBase::_saved_dotdot_old
NumericVector< Real > * _saved_dotdot_old
Definition: SystemBase.h:804
SystemBase::activeMatrixTag
virtual void activeMatrixTag(TagID tag)
Active a matrix for tag.
Definition: SystemBase.C:909
SystemBase::residualVectorTag
virtual TagID residualVectorTag()
Definition: SystemBase.C:782
SystemBase::closeTaggedMatrices
void closeTaggedMatrices(const std::set< TagID > &tags)
Close all matrices associated the tags.
Definition: SystemBase.C:874
SystemBase::_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:812
SystemBase::_variable_warehouse
MooseObjectWarehouseBase< MooseVariableBase > _variable_warehouse
Storage for MooseVariable objects.
Definition: SystemBase.h:824
SystemBase::duDotDu
virtual const Number & duDotDu() const
Definition: SystemBase.h:206
SystemBase::nonTimeVectorTag
virtual TagID nonTimeVectorTag()
Definition: SystemBase.C:775
SystemBase::removeVector
virtual void removeVector(const std::string &name)
Remove a vector from the system with the given name.
Definition: SystemBase.C:1129
MooseVariableScalar
Class for scalar variables (they are different).
Definition: MooseVariableScalar.h:30
SystemBase::solutionPreviousNewton
virtual NumericVector< Number > * solutionPreviousNewton()=0
SystemBase::duDotDotDu
virtual const Number & duDotDotDu() const
Definition: SystemBase.h:207
SystemBase::_computing_scaling_jacobian
bool _computing_scaling_jacobian
Flag used to indicate whether we are computing the scaling Jacobian.
Definition: SystemBase.h:827
SystemBase::_factory
Factory & _factory
Definition: SystemBase.h:772
SystemBase::update
virtual void update()
Update the system (doing libMesh magic)
Definition: SystemBase.C:1067
SystemBase::hasVector
bool hasVector(const std::string &tag_name) const
Check if the named vector exists in the system.
Definition: SystemBase.C:748
SystemBase::_tagged_vectors
std::vector< NumericVector< Number > * > _tagged_vectors
Tagged vectors (pointer)
Definition: SystemBase.h:792
SystemBase::addVariableToZeroOnJacobian
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:183
SystemBase::~SystemBase
virtual ~SystemBase()
Definition: SystemBase.h:99
SystemBase::dofMap
virtual DofMap & dofMap()
Gets writeable reference to the dof map.
Definition: SystemBase.C:979
libMesh
The following methods are specializations for using the libMesh::Parallel::packed_range_* routines fo...
Definition: AddPeriodicBCAction.h:16
SystemBase::getMinQuadratureOrder
virtual Order getMinQuadratureOrder()
Get minimal quadrature order needed for integrating variables in this system.
Definition: SystemBase.C:232
SystemBase::_tagged_matrices
std::vector< SparseMatrix< Number > * > _tagged_matrices
Tagged matrices (pointer)
Definition: SystemBase.h:794
SystemBase::reinitNodes
virtual void reinitNodes(const std::vector< dof_id_type > &nodes, THREAD_ID tid)
Reinit variables at a set of nodes.
Definition: SystemBase.C:401
SystemBase::_saved_older
NumericVector< Real > * _saved_older
Definition: SystemBase.h:800
SystemBase::duDotDotDu
virtual Number & duDotDotDu()
Definition: SystemBase.h:205
SystemBase::getVariables
const std::vector< MooseVariableFEBase * > & getVariables(THREAD_ID tid)
Definition: SystemBase.h:649
SystemBase::getScalarVariables
const std::vector< MooseVariableScalar * > & getScalarVariables(THREAD_ID tid)
Definition: SystemBase.h:654
SystemBase::copyOldSolutions
virtual void copyOldSolutions()
Shifts the solutions backwards in time.
Definition: SystemBase.C:1099
SystemBase::disassociateAllTaggedVectors
virtual void disassociateAllTaggedVectors()
Disassociate all vectors, and then hasVector() will return false.
Definition: SystemBase.C:845
SystemBase::deactiveMatrixTag
virtual void deactiveMatrixTag(TagID tag)
deactive a matrix for tag
Definition: SystemBase.C:921
TagID
unsigned int TagID
Definition: MooseTypes.h:197
SystemBase::computingScalingResidual
void computingScalingResidual(bool computing_scaling_residual)
Setter for whether we're computing the scaling residual.
Definition: SystemBase.h:139
SystemBase::removeMatrix
virtual void removeMatrix(TagID)
Removes a jacobian sized vector.
Definition: SystemBase.h:732
SystemBase::system
virtual System & system()=0
Get the reference to the libMesh system.
SystemBase::solutionUDotDotOld
virtual NumericVector< Number > * solutionUDotDotOld()=0
TimeIntegrator
Base class for time integrators.
Definition: TimeIntegrator.h:43
SystemBase::reinitElemFace
virtual void reinitElemFace(const Elem *elem, unsigned int side, BoundaryID bnd_id, THREAD_ID tid)
Reinit assembly info for a side of an element.
Definition: SystemBase.C:339
SystemBase::reinitNeighbor
virtual void reinitNeighbor(const Elem *elem, THREAD_ID tid)
Compute the values of the variables at all the current points.
Definition: SystemBase.C:361
MooseObjectWarehouseBase< MooseVariableBase >
SystemBase::nVariables
virtual unsigned int nVariables() const
Get the number of variables in this system.
Definition: SystemBase.C:734
SystemBase::residualGhosted
virtual NumericVector< Number > & residualGhosted()
Definition: SystemBase.h:360
VarCopyInfo
Information about variables that will be copied.
Definition: SystemBase.h:77
SystemBase::matrixTagActive
virtual bool matrixTagActive(TagID tag) const
If or not a matrix tag is active.
Definition: SystemBase.C:958
SystemBase::hasMatrix
virtual bool hasMatrix(TagID tag) const
Check if the tagged matrix exists in the system.
Definition: SystemBase.C:852
SystemBase::_vars_to_be_zeroed_on_residual
std::vector< std::string > _vars_to_be_zeroed_on_residual
Definition: SystemBase.h:785
SystemBase::_var_to_copy
std::vector< VarCopyInfo > _var_to_copy
Definition: SystemBase.h:809
SystemBase::getScalarVariable
virtual MooseVariableScalar & getScalarVariable(THREAD_ID tid, const std::string &var_name)
Gets a reference to a scalar variable with specified number.
Definition: SystemBase.C:142
VectorMooseVariable
MooseVariableFE< VectorValue< Real > > VectorMooseVariable
Definition: SystemBase.h:34
SystemBase::timeMatrixTag
virtual TagID timeMatrixTag()
Return the Matrix Tag ID for Time.
Definition: SystemBase.C:761
SystemBase::disassociateVectorFromTag
virtual void disassociateVectorFromTag(NumericVector< Number > &vec, TagID tag)
Associate a vector for a given tag.
Definition: SystemBase.C:831
VarCopyInfo::_timestep
std::string _timestep
Definition: SystemBase.h:88
SystemBase::systemMatrixTag
virtual TagID systemMatrixTag()
Return the Matrix Tag ID for System.
Definition: SystemBase.C:768
SystemBase::reinitNodesNeighbor
virtual void reinitNodesNeighbor(const std::vector< dof_id_type > &nodes, THREAD_ID tid)
Reinit variables at a set of neighbor nodes.
Definition: SystemBase.C:412
SystemBase::getTimeIntegrator
const TimeIntegrator * getTimeIntegrator() const
Definition: SystemBase.h:764
SystemBase::zeroTaggedVectors
virtual void zeroTaggedVectors(const std::set< TagID > &tags)
Zero all vectors for given tags.
Definition: SystemBase.C:587
SystemBase::SystemBase
SystemBase(SubProblem &subproblem, const std::string &name, Moose::VarKindType var_kind)
Definition: SystemBase.C:83
SystemBase::_du_dotdot_du
Real _du_dotdot_du
Definition: SystemBase.h:789
SystemBase::_mesh
MooseMesh & _mesh
Definition: SystemBase.h:774
SystemBase::addVariable
virtual void addVariable(const std::string &var_type, const std::string &var_name, InputParameters &parameters)
Canonical method for adding a variable.
Definition: SystemBase.C:614
SystemBase::subproblem
virtual const SubProblem & subproblem() const
Definition: SystemBase.h:109
mooseError
void mooseError(Args &&... args)
Emit an error message with the given stringified, concatenated args and terminate the application.
Definition: MooseError.h:210
SystemBase::assignMaxVarNDofsPerNode
void assignMaxVarNDofsPerNode(std::size_t max_dofs)
assign the maximum node dofs
Definition: SystemBase.h:497
SystemBase::augmentSparsity
virtual void augmentSparsity(SparsityPattern::Graph &sparsity, std::vector< dof_id_type > &n_nz, std::vector< dof_id_type > &n_oz)=0
Will modify the sparsity pattern to add logical geometric connections.
InputParameters
The main MOOSE class responsible for handling user-defined parameters in almost every MOOSE system.
Definition: InputParameters.h:53
SystemBase::timeVectorTag
virtual TagID timeVectorTag()
Ideally, we should not need this API.
Definition: SystemBase.C:754
SystemBase::_name
std::string _name
The name of this system.
Definition: SystemBase.h:776
SystemBase::solution
virtual NumericVector< Number > & solution()=0
SystemBase::solutionOlder
virtual NumericVector< Number > & solutionOlder()=0
SystemBase::solutionOld
virtual NumericVector< Number > & solutionOld()=0
SystemBase::isArrayVariable
virtual bool isArrayVariable(const std::string &var_name) const
If a variable is an array variable.
Definition: SystemBase.C:707
extraSparsity
void extraSparsity(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:40
SystemBase::getSharedTimeIntegrator
std::shared_ptr< TimeIntegrator > getSharedTimeIntegrator()
Definition: SystemBase.h:766
SystemBase::_saved_dot_old
NumericVector< Real > * _saved_dot_old
Definition: SystemBase.h:803
SystemBase::subproblem
virtual SubProblem & subproblem()
Definition: SystemBase.h:108
VariableWarehouse.h
SystemBase::_numbered_vars
std::vector< std::vector< MooseVariableFEBase * > > _numbered_vars
Map variable number to its pointer.
Definition: SystemBase.h:821
SystemBase::addMatrix
virtual SparseMatrix< Number > & addMatrix(TagID)
Adds a jacobian sized vector.
Definition: SystemBase.h:722
SubProblem
Generic class for solving transient nonlinear problems.
Definition: SubProblem.h:62
SystemBase::zeroVariablesForResidual
virtual void zeroVariablesForResidual()
Zero out the solution for the variables that were registered as needing to have their solutions zeroe...
Definition: SystemBase.C:220
SystemBase::residualCopy
virtual NumericVector< Number > & residualCopy()
Definition: SystemBase.h:356
SystemBase::solutionUDotDot
virtual NumericVector< Number > * solutionUDotDot()=0
SystemBase::_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:815
SystemBase::addVariableToZeroOnResidual
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:171
SystemBase::prepareLowerD
virtual void prepareLowerD(THREAD_ID tid)
Prepare the system for use for lower dimensional elements.
Definition: SystemBase.C:311
n_nz
const std::vector< numeric_index_type > & n_nz
Definition: PetscDMMoose.C:1521
InputParameters.h
SystemBase::_subproblem
SubProblem & _subproblem
Definition: SystemBase.h:769
SystemBase::init
virtual void init()
Initialize the system.
Definition: SystemBase.h:163
SystemBase::disassociateAllTaggedMatrices
virtual void disassociateAllTaggedMatrices()
Clear all tagged matrices.
Definition: SystemBase.C:966
VarCopyInfo::_source_name
std::string _source_name
Definition: SystemBase.h:87
SystemBase::computingScalingJacobian
bool computingScalingJacobian() const
Whether we are computing an initial Jacobian for automatic variable scaling.
Definition: SystemBase.h:121
SystemBase::_vars_to_be_zeroed_on_jacobian
std::vector< std::string > _vars_to_be_zeroed_on_jacobian
Definition: SystemBase.h:786
SystemBase::getVariableNames
const std::vector< VariableName > & getVariableNames() const
Definition: SystemBase.h:739
SystemBase::hasScalarVariable
virtual bool hasScalarVariable(const std::string &var_name) const
Definition: SystemBase.C:719
SystemBase::disassociateMatrixFromTag
virtual void disassociateMatrixFromTag(SparseMatrix< Number > &matrix, TagID tag)
disassociate a matirx from a tag
Definition: SystemBase.C:894
SystemBase::deactiveAllMatrixTags
virtual void deactiveAllMatrixTags()
Make matrices inactive.
Definition: SystemBase.C:933
SystemBase::serializedSolution
virtual NumericVector< Number > & serializedSolution()=0
Returns a reference to a serialized version of the solution vector for this subproblem.
SystemBase::duDotDu
virtual Number & duDotDu()
Definition: SystemBase.h:204
SystemBase::prepareNeighbor
virtual void prepareNeighbor(THREAD_ID tid)
Prepare the system for use.
Definition: SystemBase.C:303
SystemBase::prepareFace
virtual void prepareFace(THREAD_ID tid, bool resize_data)
Prepare the system for use on sides.
Definition: SystemBase.C:270
SystemBase::restoreSolutions
virtual void restoreSolutions()
Restore current solutions (call after your solve failed)
Definition: SystemBase.C:1115
BoundaryID
boundary_id_type BoundaryID
Definition: AutomaticMortarGeneration.h:47
SystemBase::isScalarVariable
virtual bool isScalarVariable(unsigned int var_name) const
Definition: SystemBase.C:728
SystemBase::number
virtual unsigned int number() const
Gets the number of this system.
Definition: SystemBase.C:973
SystemBase::activeAllMatrixTags
virtual void activeAllMatrixTags()
Make all exsiting matrices ative.
Definition: SystemBase.C:944
SystemBase::getMaxVarNDofsPerNode
std::size_t getMaxVarNDofsPerNode() const
Gets the maximum number of dofs used by any one variable on any one node.
Definition: SystemBase.h:487
Factory
Generic factory class for build all sorts of objects.
Definition: Factory.h:153
SystemBase::_computing_scaling_residual
bool _computing_scaling_residual
Flag used to indicate whether we are computing the scaling Residual.
Definition: SystemBase.h:830
SystemBase::_saved_old
NumericVector< Real > * _saved_old
Definition: SystemBase.h:799
SystemBase::getVector
virtual NumericVector< Number > & getVector(const std::string &name)
Get a raw NumericVector.
Definition: SystemBase.C:798
SystemBase::closeTaggedVectors
virtual void closeTaggedVectors(const std::set< TagID > &tags)
Close all vectors for given tags.
Definition: SystemBase.C:577
SystemBase::getMaxVarNDofsPerElem
std::size_t getMaxVarNDofsPerElem() const
Gets the maximum number of dofs used by any one variable on any one element.
Definition: SystemBase.h:480
SystemBase::_time_integrator
std::shared_ptr< TimeIntegrator > _time_integrator
Time integrator.
Definition: SystemBase.h:818
SystemBase::_var_kind
Moose::VarKindType _var_kind
default kind of variables in this system
Definition: SystemBase.h:807
SystemBase::_app
MooseApp & _app
Definition: SystemBase.h:771
SystemBase::zeroVariables
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:195
SystemBase::restoreOldSolutions
virtual void restoreOldSolutions()
Restore the old and older solutions when the saved solutions present.
Definition: SystemBase.C:514
SystemBase::mesh
virtual const MooseMesh & mesh() const
Definition: SystemBase.h:107
SystemBase::prepare
virtual void prepare(THREAD_ID tid)
Prepare the system for use.
Definition: SystemBase.C:247
SystemBase::assignMaxVarNDofsPerElem
void assignMaxVarNDofsPerElem(std::size_t max_dofs)
assign the maximum element dofs
Definition: SystemBase.h:492
SystemBase::getSubdomainsForVar
const std::set< SubdomainID > & getSubdomainsForVar(unsigned int var_number) const
Definition: SystemBase.h:659
SystemBase::solve
virtual void solve()
Solve the system (using libMesh magic)
Definition: SystemBase.C:1073
SystemBase::saveOldSolutions
virtual void saveOldSolutions()
Save the old and older solutions.
Definition: SystemBase.C:489
SystemBase::_vars
std::vector< VariableWarehouse > _vars
Variable warehouses (one for each thread)
Definition: SystemBase.h:779
SystemBase::reinitNodeFace
virtual void reinitNodeFace(const Node *node, BoundaryID bnd_id, THREAD_ID tid)
Reinit nodal assembly info on a face.
Definition: SystemBase.C:389
SystemBase::zeroVariablesForJacobian
virtual void zeroVariablesForJacobian()
Zero out the solution for the variables that were registered as needing to have their solutions zeroe...
Definition: SystemBase.C:226
dataLoad
void dataLoad(std::istream &stream, SystemBase &system_base, void *context)
IO Methods for restart, backup and restore.
Definition: SystemBase.C:67
SystemBase::computeVariables
virtual void computeVariables(const NumericVector< Number > &)
Definition: SystemBase.h:746
dataStore
void dataStore(std::ostream &stream, SystemBase &system_base, void *context)
IO Methods for restart, backup and restore.
Definition: SystemBase.C:51
Moose::VarKindType
VarKindType
Framework-wide stuff.
Definition: MooseTypes.h:606
SystemBase::_matrix_tag_active_flags
std::vector< bool > _matrix_tag_active_flags
Active flags for tagged matrices.
Definition: SystemBase.h:796
SystemBase::getVariableBlocks
virtual const std::set< SubdomainID > * getVariableBlocks(unsigned int var_number)
Get the block where a variable of this system is defined.
Definition: SystemBase.C:161
SystemBase::copySolutionsBackwards
virtual void copySolutionsBackwards()
Copy current solution into old and older.
Definition: SystemBase.C:1082
SystemBase::name
virtual const std::string & name() const
Definition: SystemBase.C:1135
SystemBase::augmentSendList
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:431
SystemBase::getFieldVariable
MooseVariableFE< T > & getFieldVariable(THREAD_ID tid, const std::string &var_name)
Gets a reference to a variable of with specified name.
Definition: SystemBase.C:129
SystemBase
Base class for a system (of equations)
Definition: SystemBase.h:95
MooseMesh
MooseMesh wraps a libMesh::Mesh object and enhances its capabilities by caching additional data and s...
Definition: MooseMesh.h:74
MooseVariableBase.h
SystemBase::associateMatrixToTag
virtual void associateMatrixToTag(SparseMatrix< Number > &matrix, TagID tag)
associate a matirx to a tag
Definition: SystemBase.C:882
MooseApp
Base class for MOOSE-based applications.
Definition: MooseApp.h:61
MooseVariable
MooseVariableFE< Real > MooseVariable
Definition: SystemBase.h:32
SystemBase::_max_var_number
unsigned int _max_var_number
Maximum variable number.
Definition: SystemBase.h:783
SystemBase::addTimeIntegrator
virtual void addTimeIntegrator(const std::string &, const std::string &, InputParameters &)
Definition: SystemBase.h:755
SystemBase::reinitNeighborFace
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.
Definition: SystemBase.C:350
VarCopyInfo::VarCopyInfo
VarCopyInfo(const std::string &dest_name, const std::string &source_name, const std::string &timestep)
Definition: SystemBase.h:79
SystemBase::addTimeIntegrator
virtual void addTimeIntegrator(std::shared_ptr< TimeIntegrator >)
Definition: SystemBase.h:761
SystemBase::getMaxVariableNumber
unsigned int getMaxVariableNumber() const
Returns the maximum number of all variables on the system.
Definition: SystemBase.h:744
SystemBase::copyVars
void copyVars(ExodusII_IO &io)
Definition: SystemBase.C:999
SystemBase::associateVectorToTag
virtual void associateVectorToTag(NumericVector< Number > &vec, TagID tag)
Associate a vector for a given tag.
Definition: SystemBase.C:820
SystemBase::reinitScalars
virtual void reinitScalars(THREAD_ID tid, bool reinit_for_derivative_reordering=false)
Reinit scalar varaibles.
Definition: SystemBase.C:423
SystemBase::hasVariable
virtual bool hasVariable(const std::string &var_name) const
Query a system for a variable.
Definition: SystemBase.C:694
MooseTypes.h
SystemBase::currentSolution
virtual const NumericVector< Number > *const & currentSolution() const =0
The solution vector that is currently being operated on.
SystemBase::computingScalingJacobian
void computingScalingJacobian(bool computing_scaling_jacobian)
Setter for whether we're computing the scaling jacobian.
Definition: SystemBase.h:126
SystemBase::computingScalingResidual
bool computingScalingResidual() const
Whether we are computing an initial Residual for automatic variable scaling.
Definition: SystemBase.h:134
SystemBase::_var_map
std::map< unsigned int, std::set< SubdomainID > > _var_map
Map of variables (variable id -> array of subdomains where it lives)
Definition: SystemBase.h:781
SystemBase::reinitLowerD
virtual void reinitLowerD(THREAD_ID tid)
Compute the values of the variables on the lower dimensional element.
Definition: SystemBase.C:369
SystemBase::initializeObjects
virtual void initializeObjects()
Called only once, just before the solve begins so objects can do some precalculations.
Definition: SystemBase.h:168
SystemBase::reinitElem
virtual void reinitElem(const Elem *elem, THREAD_ID tid)
Reinit an element assembly info.
Definition: SystemBase.C:319
SystemBase::solutionUDot
virtual NumericVector< Number > * solutionUDot()=0
SystemBase::solutionUDotOld
virtual NumericVector< Number > * solutionUDotOld()=0
MooseVariableFE
Class for stuff related to variables.
Definition: Adaptivity.h:31
extraSendList
void extraSendList(std::vector< dof_id_type > &send_list, void *context)
///< Type of coordinate system
Definition: SystemBase.C:32
SystemBase::addExtraVectors
virtual void addExtraVectors()
Method called during initialSetup to add extra system vector if they are required by the simulation.
Definition: SystemBase.C:1062
SystemBase::getTimeIntegrator
TimeIntegrator * getTimeIntegrator()
Definition: SystemBase.h:763
MooseObjectWarehouseBase.h
SystemBase::applyScalingFactors
void applyScalingFactors(const std::vector< Real > &inverse_scaling_factors)
Applies scaling factors to the system's variables.
Definition: SystemBase.C:1141
n_oz
const std::vector< numeric_index_type > & n_oz
Definition: PetscDMMoose.C:1522