www.mooseframework.org
DisplacedProblem.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 "SubProblem.h"
13 #include "DisplacedSystem.h"
14 #include "GeometricSearchData.h"
15 
16 // libMesh
17 #include "libmesh/equation_systems.h"
18 #include "libmesh/enum_quadrature_type.h"
19 
20 // Forward declarations
22 class AssemblyData;
23 class MooseMesh;
24 class Assembly;
25 class FEProblemBase;
26 class LineSearch;
27 
28 // libMesh forward declarations
29 namespace libMesh
30 {
31 template <typename T>
32 class NumericVector;
33 }
34 
36 {
37 public:
39 
42 
45 
46  virtual EquationSystems & es() override { return _eq; }
47  virtual MooseMesh & mesh() override { return _mesh; }
48  virtual const MooseMesh & mesh() const override { return _mesh; }
49  const MooseMesh & mesh(bool libmesh_dbg_var(use_displaced)) const override
50  {
51  mooseAssert(use_displaced, "An undisplaced mesh was queried from the displaced problem");
52  return mesh();
53  }
54  MooseMesh & refMesh();
55 
56  DisplacedSystem & solverSys(const unsigned int sys_num);
58 
59  virtual const SystemBase & systemBaseNonlinear(const unsigned int sys_num) const override;
60  virtual SystemBase & systemBaseNonlinear(const unsigned int sys_num) override;
61 
62  virtual const SystemBase & systemBaseLinear(const unsigned int sys_num) const override;
63  virtual SystemBase & systemBaseLinear(const unsigned int sys_num) override;
64 
65  virtual const SystemBase & systemBaseAuxiliary() const override { return *_displaced_aux; }
66  virtual SystemBase & systemBaseAuxiliary() override { return *_displaced_aux; }
67 
68  // Return a constant reference to the vector of variable names.
69  const std::vector<std::string> & getDisplacementVarNames() const { return _displacements; }
70 
71  virtual void createQRules(QuadratureType type,
72  Order order,
73  Order volume_order,
74  Order face_order,
75  SubdomainID block,
76  bool allow_negative_qweights = true);
77 
78  void bumpVolumeQRuleOrder(Order order, SubdomainID block);
79  void bumpAllQRuleOrder(Order order, SubdomainID block);
80 
81  virtual void init() override;
82  virtual bool nlConverged(const unsigned int nl_sys_num) override;
83  virtual unsigned int nlSysNum(const NonlinearSystemName & nl_sys_name) const override;
84  virtual unsigned int linearSysNum(const LinearSystemName & sys_name) const override;
85  virtual unsigned int solverSysNum(const SolverSystemName & sys_name) const override;
86 
90  virtual void saveOldSolutions();
91 
95  virtual void restoreOldSolutions();
96 
100  virtual void syncSolutions();
101 
107  virtual void syncSolutions(const std::map<unsigned int, const NumericVector<Number> *> & nl_solns,
108  const NumericVector<Number> & aux_soln);
109 
121  virtual void updateMesh(bool mesh_changing = false);
122 
127  virtual void updateMesh(const std::map<unsigned int, const NumericVector<Number> *> & nl_soln,
128  const NumericVector<Number> & aux_soln);
129 
130  virtual TagID addVectorTag(const TagName & tag_name,
132  virtual const VectorTag & getVectorTag(const TagID tag_id) const override;
133  virtual TagID getVectorTagID(const TagName & tag_name) const override;
134  virtual TagName vectorTagName(const TagID tag_id) const override;
135  virtual bool vectorTagExists(const TagID tag_id) const override;
136  virtual bool vectorTagExists(const TagName & tag_name) const override;
137  virtual unsigned int
139  virtual const std::vector<VectorTag> &
141  virtual Moose::VectorTagType vectorTagType(const TagID tag_id) const override;
142 
143  virtual TagID addMatrixTag(TagName tag_name) override;
144  virtual TagID getMatrixTagID(const TagName & tag_name) const override;
145  virtual TagName matrixTagName(TagID tag) override;
146  virtual bool matrixTagExists(const TagName & tag_name) const override;
147  virtual bool matrixTagExists(TagID tag_id) const override;
148  virtual unsigned int numMatrixTags() const override;
149  virtual bool safeAccessTaggedMatrices() const override;
150  virtual bool safeAccessTaggedVectors() const override;
151 
152  virtual bool isTransient() const override;
153 
154  // Variables /////
155  virtual bool hasVariable(const std::string & var_name) const override;
157  virtual const MooseVariableFieldBase &
158  getVariable(const THREAD_ID tid,
159  const std::string & var_name,
161  Moose::VarFieldType expected_var_field_type =
162  Moose::VarFieldType::VAR_FIELD_ANY) const override;
163  virtual MooseVariable & getStandardVariable(const THREAD_ID tid,
164  const std::string & var_name) override;
166  const std::string & var_name) override;
167  virtual VectorMooseVariable & getVectorVariable(const THREAD_ID tid,
168  const std::string & var_name) override;
169  virtual ArrayMooseVariable & getArrayVariable(const THREAD_ID tid,
170  const std::string & var_name) override;
171  virtual bool hasScalarVariable(const std::string & var_name) const override;
172  virtual MooseVariableScalar & getScalarVariable(const THREAD_ID tid,
173  const std::string & var_name) override;
174  virtual System & getSystem(const std::string & var_name) override;
175 
176  virtual void addVariable(const std::string & var_type,
177  const std::string & name,
179  unsigned int nl_system_number);
180  virtual void addAuxVariable(const std::string & var_type,
181  const std::string & name,
183  //
184  // Adaptivity /////
185  virtual void initAdaptivity();
186  virtual void meshChanged() override;
187 
188  // reinit /////
189  virtual void prepare(const Elem * elem, const THREAD_ID tid) override;
190  virtual void prepareNonlocal(const THREAD_ID tid);
191  virtual void prepareFace(const Elem * elem, const THREAD_ID tid) override;
192  virtual void prepare(const Elem * elem,
193  unsigned int ivar,
194  unsigned int jvar,
195  const std::vector<dof_id_type> & dof_indices,
196  const THREAD_ID tid) override;
197  virtual void setCurrentSubdomainID(const Elem * elem, const THREAD_ID tid) override;
198  virtual void
199  setNeighborSubdomainID(const Elem * elem, unsigned int side, const THREAD_ID tid) override;
200  virtual void prepareBlockNonlocal(unsigned int ivar,
201  unsigned int jvar,
202  const std::vector<dof_id_type> & idof_indices,
203  const std::vector<dof_id_type> & jdof_indices,
204  const THREAD_ID tid);
205  virtual void prepareAssembly(const THREAD_ID tid) override;
206  virtual void prepareAssemblyNeighbor(const THREAD_ID tid);
207 
208  virtual bool reinitDirac(const Elem * elem, const THREAD_ID tid) override;
209 
210  virtual void reinitElem(const Elem * elem, const THREAD_ID tid) override;
211  virtual void reinitElemPhys(const Elem * elem,
212  const std::vector<Point> & phys_points_in_elem,
213  const THREAD_ID tid) override;
214  virtual void reinitElemFace(const Elem * elem,
215  unsigned int side,
216  BoundaryID bnd_id,
217  const THREAD_ID tid) override;
218  virtual void reinitNode(const Node * node, const THREAD_ID tid) override;
219  virtual void reinitNodeFace(const Node * node, BoundaryID bnd_id, const THREAD_ID tid) override;
220  virtual void reinitNodes(const std::vector<dof_id_type> & nodes, const THREAD_ID tid) override;
221  virtual void reinitNodesNeighbor(const std::vector<dof_id_type> & nodes,
222  const THREAD_ID tid) override;
223  virtual void reinitNeighbor(const Elem * elem, unsigned int side, const THREAD_ID tid) override;
224 
234  void reinitNeighbor(const Elem * elem,
235  unsigned int side,
236  const THREAD_ID tid,
237  const std::vector<Point> * neighbor_reference_points);
238 
239  virtual void reinitNeighborPhys(const Elem * neighbor,
240  unsigned int neighbor_side,
241  const std::vector<Point> & physical_points,
242  const THREAD_ID tid) override;
243  virtual void reinitNeighborPhys(const Elem * neighbor,
244  const std::vector<Point> & physical_points,
245  const THREAD_ID tid) override;
246  virtual void
247  reinitElemNeighborAndLowerD(const Elem * elem, unsigned int side, const THREAD_ID tid) override;
248  virtual void reinitScalars(const THREAD_ID tid,
249  bool reinit_for_derivative_reordering = false) override;
250  virtual void reinitOffDiagScalars(const THREAD_ID tid) override;
251 
253  virtual void getDiracElements(std::set<const Elem *> & elems) override;
254  virtual void clearDiracInfo() override;
255 
256  virtual void addResidual(const THREAD_ID tid) override;
257  virtual void addResidualNeighbor(const THREAD_ID tid) override;
258  virtual void addResidualLower(const THREAD_ID tid) override;
259 
260  virtual void addCachedResidualDirectly(NumericVector<Number> & residual, const THREAD_ID tid);
261 
262  virtual void setResidual(NumericVector<Number> & residual, const THREAD_ID tid) override;
263  virtual void setResidualNeighbor(NumericVector<Number> & residual, const THREAD_ID tid) override;
264 
265  virtual void addJacobian(const THREAD_ID tid) override;
266  virtual void addJacobianNonlocal(const THREAD_ID tid);
267  virtual void addJacobianNeighbor(const THREAD_ID tid) override;
268  virtual void addJacobianNeighborLowerD(const THREAD_ID tid) override;
269  virtual void addJacobianLowerD(const THREAD_ID tid) override;
270  virtual void addJacobianBlockTags(SparseMatrix<Number> & jacobian,
271  unsigned int ivar,
272  unsigned int jvar,
273  const DofMap & dof_map,
274  std::vector<dof_id_type> & dof_indices,
275  const std::set<TagID> & tags,
276  const THREAD_ID tid);
278  unsigned int ivar,
279  unsigned int jvar,
280  const DofMap & dof_map,
281  const std::vector<dof_id_type> & idof_indices,
282  const std::vector<dof_id_type> & jdof_indices,
283  const std::set<TagID> & tags,
284  const THREAD_ID tid);
285  virtual void addJacobianNeighbor(SparseMatrix<Number> & jacobian,
286  unsigned int ivar,
287  unsigned int jvar,
288  const DofMap & dof_map,
289  std::vector<dof_id_type> & dof_indices,
290  std::vector<dof_id_type> & neighbor_dof_indices,
291  const std::set<TagID> & tags,
292  const THREAD_ID tid) override;
293 
294  virtual void cacheJacobianNonlocal(const THREAD_ID tid);
295 
296  virtual void prepareShapes(unsigned int var, const THREAD_ID tid) override;
297  virtual void prepareFaceShapes(unsigned int var, const THREAD_ID tid) override;
298  virtual void prepareNeighborShapes(unsigned int var, const THREAD_ID tid) override;
299 
300  virtual Assembly & assembly(const THREAD_ID tid, const unsigned int sys_num) override;
301  virtual const Assembly & assembly(const THREAD_ID tid, const unsigned int sys_num) const override;
302 
303  // Geom Search /////
304  virtual void updateGeomSearch(
307 
308  virtual bool computingPreSMOResidual(const unsigned int nl_sys_num) const override;
309 
310  virtual void onTimestepBegin() override;
311  virtual void onTimestepEnd() override;
312 
317  virtual std::set<dof_id_type> & ghostedElems() override;
318 
322  virtual void addGhostedElem(dof_id_type elem_id) override;
323 
328  virtual void addGhostedBoundary(BoundaryID boundary_id) override;
329 
333  virtual void ghostGhostedBoundaries() override;
334 
339  void undisplaceMesh();
340 
341  virtual LineSearch * getLineSearch() override;
342 
343  virtual const CouplingMatrix * couplingMatrix(const unsigned int nl_sys_num) const override;
344 
345  virtual bool haveDisplaced() const override final { return true; }
346 
347  virtual bool computingScalingJacobian() const override final;
348 
349  virtual bool computingScalingResidual() const override final;
350 
351  virtual void initialSetup() override;
352  virtual void timestepSetup() override;
353  virtual void customSetup(const ExecFlagType & exec_type) override;
354  virtual void residualSetup() override;
355  virtual void jacobianSetup() override;
356 
357  using SubProblem::haveADObjects;
358  virtual void haveADObjects(bool have_ad_objects) override;
359 
360  virtual std::size_t numNonlinearSystems() const override;
361 
362  virtual std::size_t numLinearSystems() const override;
363 
364  virtual std::size_t numSolverSystems() const override;
365 
366  virtual unsigned int currentNlSysNum() const override;
367 
368  virtual unsigned int currentLinearSysNum() const override;
369 
370  virtual const std::vector<VectorTag> & currentResidualVectorTags() const override;
371 
372  virtual void needFV() override;
373  virtual bool haveFV() const override;
374 
375  virtual bool hasNonlocalCoupling() const override;
376 
377 protected:
380  EquationSystems _eq;
383  std::vector<std::string> _displacements;
384 
387 
389  std::vector<const NumericVector<Number> *> _nl_solution;
390 
392  const NumericVector<Number> * _aux_solution;
393 
394  std::vector<std::vector<std::unique_ptr<Assembly>>> _assembly;
395 
397 
398 private:
399  virtual std::pair<bool, unsigned int>
400  determineSolverSystem(const std::string & var_name,
401  bool error_if_not_found = false) const override;
402 
404  friend class Restartable;
405 };
406 
407 inline DisplacedSystem &
408 DisplacedProblem::solverSys(const unsigned int sys_num)
409 {
410  mooseAssert(sys_num < _displaced_solver_systems.size(),
411  "System number greater than the number of nonlinear systems");
412  return *_displaced_solver_systems[sys_num];
413 }
414 
415 inline const SystemBase &
416 DisplacedProblem::systemBaseNonlinear(const unsigned int sys_num) const
417 {
418  mooseAssert(sys_num < _displaced_solver_systems.size(),
419  "System number greater than the number of nonlinear systems");
420  return *_displaced_solver_systems[sys_num];
421 }
422 
423 inline SystemBase &
424 DisplacedProblem::systemBaseNonlinear(const unsigned int sys_num)
425 {
426  mooseAssert(sys_num < _displaced_solver_systems.size(),
427  "System number greater than the number of nonlinear systems");
428  return *_displaced_solver_systems[sys_num];
429 }
430 
431 inline const SystemBase &
432 DisplacedProblem::systemBaseLinear(const unsigned int /*sys_num*/) const
433 {
434  mooseError("Linear systems are not supported for displaced problems yet.");
435 }
436 
437 inline SystemBase &
438 DisplacedProblem::systemBaseLinear(const unsigned int /*sys_num*/)
439 {
440  mooseError("Linear systems are not supported for displaced problems yet.");
441 }
virtual LineSearch * getLineSearch() override
virtual MooseMesh & mesh() override
VarFieldType
Definition: MooseTypes.h:634
GeometricSearchData _geometric_search_data
virtual void reinitNodesNeighbor(const std::vector< dof_id_type > &nodes, const THREAD_ID tid) override
virtual void addGhostedElem(dof_id_type elem_id) override
Will make sure that all dofs connected to elem_id are ghosted to this processor.
virtual System & getSystem(const std::string &var_name) override
Returns the equation system containing the variable provided.
virtual void reinitNode(const Node *node, const THREAD_ID tid) override
Order
A class for creating restricted objects.
Definition: Restartable.h:28
virtual GeometricSearchData & geomSearchData() override
virtual void saveOldSolutions()
Allocate vectors and save old solutions into them.
void undisplaceMesh()
Resets the displaced mesh to the reference mesh.
Keeps track of stuff related to assembling.
Definition: Assembly.h:93
Class for stuff related to variables.
Definition: Adaptivity.h:31
virtual void addAuxVariable(const std::string &var_type, const std::string &name, InputParameters &parameters)
unsigned int TagID
Definition: MooseTypes.h:199
virtual MooseVariableFieldBase & getActualFieldVariable(const THREAD_ID tid, const std::string &var_name) override
Returns the variable reference for requested MooseVariableField which may be in any system...
void addJacobianBlockNonlocal(SparseMatrix< Number > &jacobian, unsigned int ivar, unsigned int jvar, const DofMap &dof_map, const std::vector< dof_id_type > &idof_indices, const std::vector< dof_id_type > &jdof_indices, const std::set< TagID > &tags, const THREAD_ID tid)
virtual void residualSetup() override
virtual void initAdaptivity()
virtual const SystemBase & systemBaseLinear(const unsigned int sys_num) const override
Return the linear system object as a base class reference given the system number.
void bumpAllQRuleOrder(Order order, SubdomainID block)
virtual void initialSetup() override
virtual bool computingPreSMOResidual(const unsigned int nl_sys_num) const override
Returns true if the problem is in the process of computing it&#39;s initial residual. ...
virtual void addJacobianNeighborLowerD(const THREAD_ID tid) override
virtual TagID addVectorTag(const TagName &tag_name, const Moose::VectorTagType type=Moose::VECTOR_TAG_RESIDUAL) override
Create a Tag.
virtual void prepareShapes(unsigned int var, const THREAD_ID tid) override
FEProblemBase & _mproblem
virtual unsigned int currentLinearSysNum() const override
virtual void prepareNeighborShapes(unsigned int var, const THREAD_ID tid) override
virtual void createQRules(QuadratureType type, Order order, Order volume_order, Order face_order, SubdomainID block, bool allow_negative_qweights=true)
virtual void reinitNodes(const std::vector< dof_id_type > &nodes, const THREAD_ID tid) override
virtual EquationSystems & es() override
virtual bool haveFV() const override
returns true if this problem includes/needs finite volume functionality.
virtual bool safeAccessTaggedMatrices() const override
Is it safe to access the tagged matrices.
virtual bool hasScalarVariable(const std::string &var_name) const override
Returns a Boolean indicating whether any system contains a variable with the name provided...
virtual void prepareAssemblyNeighbor(const THREAD_ID tid)
virtual void addGhostedBoundary(BoundaryID boundary_id) override
Will make sure that all necessary elements from boundary_id are ghosted to this processor.
The main MOOSE class responsible for handling user-defined parameters in almost every MOOSE system...
QuadratureType
virtual TagName vectorTagName(const TagID tag_id) const override
Retrieve the name associated with a TagID.
This class provides an interface for common operations on field variables of both FE and FV types wit...
virtual void addJacobianLowerD(const THREAD_ID tid) override
virtual TagID getMatrixTagID(const TagName &tag_name) const override
Get a TagID from a TagName.
virtual void timestepSetup() override
The following methods are specializations for using the libMesh::Parallel::packed_range_* routines fo...
Base class for a system (of equations)
Definition: SystemBase.h:85
const MooseMesh & mesh(bool libmesh_dbg_var(use_displaced)) const override
virtual unsigned int numVectorTags(const Moose::VectorTagType type=Moose::VECTOR_TAG_ANY) const override
The total number of tags, which can be limited to the tag type.
virtual const MooseMesh & mesh() const override
virtual unsigned int nlSysNum(const NonlinearSystemName &nl_sys_name) const override
Specialization of SubProblem for solving nonlinear equations plus auxiliary equations.
virtual std::size_t numSolverSystems() const override
virtual void onTimestepBegin() override
virtual const std::string & name() const
Get the name of the class.
Definition: MooseBase.h:57
virtual Assembly & assembly(const THREAD_ID tid, const unsigned int sys_num) override
std::vector< std::unique_ptr< DisplacedSystem > > _displaced_solver_systems
virtual void syncSolutions()
Copy the solutions on the undisplaced systems to the displaced systems.
virtual void prepareBlockNonlocal(unsigned int ivar, unsigned int jvar, const std::vector< dof_id_type > &idof_indices, const std::vector< dof_id_type > &jdof_indices, const THREAD_ID tid)
virtual std::set< dof_id_type > & ghostedElems() override
Return the list of elements that should have their DoFs ghosted to this processor.
virtual void reinitElemPhys(const Elem *elem, const std::vector< Point > &phys_points_in_elem, const THREAD_ID tid) override
virtual void meshChanged() override
virtual MooseVariable & getStandardVariable(const THREAD_ID tid, const std::string &var_name) override
Returns the variable reference for requested MooseVariable which may be in any system.
virtual MooseVariableScalar & getScalarVariable(const THREAD_ID tid, const std::string &var_name) override
Returns the scalar variable reference from whichever system contains it.
std::vector< std::vector< std::unique_ptr< Assembly > > > _assembly
DisplacedProblem(DisplacedProblem &&)=delete
virtual const SystemBase & systemBaseAuxiliary() const override
Return the auxiliary system object as a base class reference.
virtual const SystemBase & systemBaseNonlinear(const unsigned int sys_num) const override
Return the nonlinear system object as a base class reference given the system number.
EquationSystems _eq
virtual unsigned int currentNlSysNum() const override
std::vector< const NumericVector< Number > * > _nl_solution
The nonlinear system solutions.
virtual std::pair< bool, unsigned int > determineSolverSystem(const std::string &var_name, bool error_if_not_found=false) const override
MooseMesh & _ref_mesh
reference mesh
virtual bool computingScalingResidual() const override final
Getter for whether we&#39;re computing the scaling residual.
std::unique_ptr< DisplacedSystem > _displaced_aux
virtual void addJacobian(const THREAD_ID tid) override
virtual void setResidual(NumericVector< Number > &residual, const THREAD_ID tid) override
boundary_id_type BoundaryID
virtual void clearDiracInfo() override
Gets called before Dirac Kernels are asked to add the points they are supposed to be evaluated in...
VarKindType
Framework-wide stuff.
Definition: MooseTypes.h:627
virtual void reinitNeighbor(const Elem *elem, unsigned int side, const THREAD_ID tid) override
virtual void restoreOldSolutions()
Restore old solutions from the backup vectors and deallocate them.
virtual const std::vector< VectorTag > & getVectorTags(const Moose::VectorTagType type=Moose::VECTOR_TAG_ANY) const override
Return all vector tags, where a tag is represented by a map from name to ID.
virtual void setResidualNeighbor(NumericVector< Number > &residual, const THREAD_ID tid) override
MooseMesh wraps a libMesh::Mesh object and enhances its capabilities by caching additional data and s...
Definition: MooseMesh.h:88
virtual unsigned int solverSysNum(const SolverSystemName &sys_name) const override
const std::string & type() const
Get the type of this class.
Definition: MooseBase.h:51
virtual bool hasVariable(const std::string &var_name) const override
Whether or not this problem has the variable.
virtual void addVariable(const std::string &var_type, const std::string &name, InputParameters &parameters, unsigned int nl_system_number)
virtual Moose::VectorTagType vectorTagType(const TagID tag_id) const override
virtual void reinitOffDiagScalars(const THREAD_ID tid) override
std::vector< std::string > _displacements
virtual const VectorTag & getVectorTag(const TagID tag_id) const override
Get a VectorTag from a TagID.
subdomain_id_type SubdomainID
virtual const MooseVariableFieldBase & getVariable(const THREAD_ID tid, const std::string &var_name, Moose::VarKindType expected_var_type=Moose::VarKindType::VAR_ANY, Moose::VarFieldType expected_var_field_type=Moose::VarFieldType::VAR_FIELD_ANY) const =0
Returns the variable reference for requested variable which must be of the expected_var_type (Nonline...
virtual void addJacobianBlockTags(SparseMatrix< Number > &jacobian, unsigned int ivar, unsigned int jvar, const DofMap &dof_map, std::vector< dof_id_type > &dof_indices, const std::set< TagID > &tags, const THREAD_ID tid)
const NumericVector< Number > * _aux_solution
The auxiliary system solution.
virtual void addResidualLower(const THREAD_ID tid) override
bool haveADObjects() const
Method for reading wehther we have any ad objects.
Definition: SubProblem.h:741
virtual bool isTransient() const override
DisplacedSystem & solverSys(const unsigned int sys_num)
GeometricSearchType
Used to select groups of geometric search objects to update.
VectorTagType
Definition: MooseTypes.h:891
virtual void onTimestepEnd() override
virtual std::size_t numNonlinearSystems() const override
virtual void reinitElem(const Elem *elem, const THREAD_ID tid) override
virtual void addCachedResidualDirectly(NumericVector< Number > &residual, const THREAD_ID tid)
virtual void reinitElemFace(const Elem *elem, unsigned int side, BoundaryID bnd_id, const THREAD_ID tid) override
virtual const MooseVariableFieldBase & getVariable(const THREAD_ID tid, const std::string &var_name, Moose::VarKindType expected_var_type=Moose::VarKindType::VAR_ANY, Moose::VarFieldType expected_var_field_type=Moose::VarFieldType::VAR_FIELD_ANY) const override
Returns the variable reference for requested variable which must be of the expected_var_type (Nonline...
virtual void customSetup(const ExecFlagType &exec_type) override
virtual TagName matrixTagName(TagID tag) override
Retrieve the name associated with a TagID.
const std::vector< std::string > & getDisplacementVarNames() const
virtual void reinitNodeFace(const Node *node, BoundaryID bnd_id, const THREAD_ID tid) override
virtual void prepareAssembly(const THREAD_ID tid) override
Generic class for solving transient nonlinear problems.
Definition: SubProblem.h:75
virtual void reinitNeighborPhys(const Elem *neighbor, unsigned int neighbor_side, const std::vector< Point > &physical_points, const THREAD_ID tid) override
virtual VectorMooseVariable & getVectorVariable(const THREAD_ID tid, const std::string &var_name) override
Returns the variable reference for requested VectorMooseVariable which may be in any system...
Class for containing MooseEnum item information.
Definition: MooseEnumItem.h:18
virtual SystemBase & systemBaseAuxiliary() override
virtual bool matrixTagExists(const TagName &tag_name) const override
Check to see if a particular Tag exists.
virtual bool haveDisplaced() const override final
Whether we have a displaced problem in our simulation.
virtual bool computingScalingJacobian() const override final
Getter for whether we&#39;re computing the scaling jacobian.
virtual TagID addMatrixTag(TagName tag_name) override
Create a Tag.
virtual void addResidualNeighbor(const THREAD_ID tid) override
virtual void addResidual(const THREAD_ID tid) override
virtual const std::vector< VectorTag > & currentResidualVectorTags() const override
Return the residual vector tags we are currently computing.
DisplacedSystem & auxSys()
virtual void cacheJacobianNonlocal(const THREAD_ID tid)
Class for scalar variables (they are different).
virtual unsigned int linearSysNum(const LinearSystemName &sys_name) const override
void mooseError(Args &&... args) const
Emits an error prefixed with object name and type.
virtual std::size_t numLinearSystems() const override
virtual void setCurrentSubdomainID(const Elem *elem, const THREAD_ID tid) override
const InputParameters & parameters() const
Get the parameters of the object.
virtual void prepareFaceShapes(unsigned int var, const THREAD_ID tid) override
virtual unsigned int numMatrixTags() const override
The total number of tags.
virtual void updateGeomSearch(GeometricSearchData::GeometricSearchType type=GeometricSearchData::ALL) override
virtual void reinitElemNeighborAndLowerD(const Elem *elem, unsigned int side, const THREAD_ID tid) override
MooseMesh & refMesh()
virtual bool reinitDirac(const Elem *elem, const THREAD_ID tid) override
Returns true if the Problem has Dirac kernels it needs to compute on elem.
virtual void setNeighborSubdomainID(const Elem *elem, unsigned int side, const THREAD_ID tid) override
virtual ArrayMooseVariable & getArrayVariable(const THREAD_ID tid, const std::string &var_name) override
Returns the variable reference for requested ArrayMooseVariable which may be in any system...
virtual void addJacobianNonlocal(const THREAD_ID tid)
virtual void reinitScalars(const THREAD_ID tid, bool reinit_for_derivative_reordering=false) override
fills the VariableValue arrays for scalar variables from the solution vector
virtual void updateMesh(bool mesh_changing=false)
Copy the solutions on the undisplaced systems to the displaced systems and reinitialize the geometry ...
virtual bool safeAccessTaggedVectors() const override
Is it safe to access the tagged vectors.
virtual void getDiracElements(std::set< const Elem *> &elems) override
Fills "elems" with the elements that should be looped over for Dirac Kernels.
Real Number
Storage for all of the information pretaining to a vector tag.
Definition: VectorTag.h:15
virtual void jacobianSetup() override
DisplacedProblem & operator=(DisplacedProblem &&)=delete
virtual void prepareNonlocal(const THREAD_ID tid)
virtual void needFV() override
marks this problem as including/needing finite volume functionality.
virtual void prepareFace(const Elem *elem, const THREAD_ID tid) override
virtual void prepare(const Elem *elem, const THREAD_ID tid) override
virtual TagID getVectorTagID(const TagName &tag_name) const override
Get a TagID from a TagName.
virtual bool hasNonlocalCoupling() const override
Whether the simulation has nonlocal coupling which should be accounted for in the Jacobian...
virtual const CouplingMatrix * couplingMatrix(const unsigned int nl_sys_num) const override
The coupling matrix defining what blocks exist in the preconditioning matrix.
virtual bool vectorTagExists(const TagID tag_id) const override
Check to see if a particular Tag exists.
virtual bool nlConverged(const unsigned int nl_sys_num) override
static InputParameters validParams()
unsigned int THREAD_ID
Definition: MooseTypes.h:198
uint8_t dof_id_type
void bumpVolumeQRuleOrder(Order order, SubdomainID block)
virtual void init() override
virtual void addJacobianNeighbor(const THREAD_ID tid) override
virtual void ghostGhostedBoundaries() override
Causes the boundaries added using addGhostedBoundary to actually be ghosted.