23 #include "libmesh/numeric_vector.h" 24 #include "libmesh/fe_interface.h" 25 #include "libmesh/mesh_base.h" 34 "A Problem object for providing access to the displaced finite element " 35 "mesh and associated variables.");
43 _mproblem(parameters.have_parameter<
FEProblemBase *>(
"_fe_problem_base")
48 _ref_mesh(_mproblem.
mesh()),
49 _displacements(getParam<
std::vector<
std::string>>(
"displacements")),
50 _geometric_search_data(*this, _mesh)
63 std::to_string(nl_sys_num),
67 for (
unsigned int i = 0; i <
n_threads; ++i)
68 _assembly[i].emplace_back(std::make_unique<Assembly>(*displaced_nl, i));
70 displaced_nl->addTimeIntegrator(
76 std::make_unique<DisplacedSystem>(*
this,
106 std::set<dof_id_type> &
118 const bool allow_negative_qweights)
123 type, order, volume_order, face_order, block, allow_negative_qweights);
152 std::vector<std::pair<unsigned int, unsigned short>> disp_numbers_and_directions;
156 const auto & disp_variable =
getVariable(tid, disp_string);
157 if (disp_variable.sys().number() == nl_sys_num)
158 disp_numbers_and_directions.push_back(
159 std::make_pair(disp_variable.number(), cast_int<unsigned short>(direction)));
161 _assembly[tid][nl_sys_num]->assignDisplacements(std::move(disp_numbers_and_directions));
167 nl->dofMap().attach_extra_send_list_function(&
extraSendList, nl.get());
175 TIME_SECTION(
"eq::init", 2,
"Initializing Displaced Equation System");
199 displaced_nl->saveOldSolutions();
207 displaced_nl->restoreOldSolutions();
214 TIME_SECTION(
"syncSolutions", 5,
"Syncing Displaced Solutions");
219 mooseAssert(nl_sys_num == displaced_nl->number(),
220 "We should have designed things such that the nl system numbers make their system " 221 "numbering in the EquationSystems object");
222 (*displaced_nl->sys().solution) =
234 TIME_SECTION(
"syncSolutions", 5,
"Syncing Displaced Solutions");
236 for (
const auto [nl_sys_num, nl_soln] : nl_solns)
247 TIME_SECTION(
"updateMesh", 3,
"Updating Displaced Mesh");
279 Threads::parallel_reduce(node_range, udmt);
288 disp_nl->update(
false);
322 TIME_SECTION(
"updateMesh", 3,
"Updating Displaced Mesh");
338 Threads::parallel_reduce(node_range, udmt);
405 const std::vector<VectorTag> &
457 if (nl->hasVariable(var_name))
467 const std::string & var_name,
479 if (nl->hasVariable(var_name))
480 return nl->getFieldVariable<
Real>(tid, var_name);
484 mooseError(
"No variable with name '" + var_name +
"'");
491 if (nl->hasVariable(var_name))
492 return nl->getActualFieldVariable<
Real>(tid, var_name);
496 mooseError(
"No variable with name '" + var_name +
"'");
503 if (nl->hasVariable(var_name))
508 mooseError(
"No variable with name '" + var_name +
"'");
515 if (nl->hasVariable(var_name))
520 mooseError(
"No variable with name '" + var_name +
"'");
527 if (nl->hasScalarVariable(var_name))
539 if (nl->hasScalarVariable(var_name))
540 return nl->getScalarVariable(tid, var_name);
544 mooseError(
"No variable with name '" + var_name +
"'");
552 auto & sys =
_eq.get_system(sys_num);
553 if (sys.has_variable(var_name))
557 mooseError(
"Unable to find a system containing the variable " + var_name);
562 const std::string & name,
564 const unsigned int nl_system_number)
571 const std::string & name,
588 _assembly[tid][nl_sys_num]->reinit(elem);
593 _assembly[tid][nl_sys_num]->prepareJacobianBlock();
594 _assembly[tid][nl_sys_num]->prepareResidual();
610 nl->prepareFace(tid,
true);
618 const std::vector<dof_id_type> & dof_indices,
623 _assembly[tid][nl_sys_num]->reinit(elem);
641 SubdomainID did = elem->neighbor_ptr(side)->subdomain_id();
649 const std::vector<dof_id_type> & idof_indices,
650 const std::vector<dof_id_type> & jdof_indices,
673 unsigned int n_points = points.size();
679 _assembly[tid][nl_sys_num]->reinitAtPhysical(elem, points);
696 nl->reinitElem(elem, tid);
702 const std::vector<Point> & phys_points_in_elem,
706 "Are you calling this method with a undisplaced mesh element?");
710 _assembly[tid][nl_sys_num]->reinitAtPhysical(elem, phys_points_in_elem);
727 _assembly[tid][nl_sys_num]->reinit(elem, side);
728 _displaced_nl[nl_sys_num]->reinitElemFace(elem, side, bnd_id, tid);
738 _assembly[tid][nl_sys_num]->reinit(node);
749 _assembly[tid][nl_sys_num]->reinit(node);
750 _displaced_nl[nl_sys_num]->reinitNodeFace(node, bnd_id, tid);
759 nl->reinitNodes(nodes, tid);
767 nl->reinitNodesNeighbor(nodes, tid);
781 const std::vector<Point> * neighbor_reference_points)
785 const Elem * neighbor = elem->neighbor_ptr(side);
786 unsigned int neighbor_side = neighbor->which_neighbor_am_i(elem);
790 _assembly[tid][nl_sys_num]->reinitElemAndNeighbor(
791 elem, side, neighbor, neighbor_side, neighbor_reference_points);
794 _assembly[tid][nl_sys_num]->prepareNeighbor();
801 nl->reinitElemFace(elem, side, bnd_id, tid);
802 nl->reinitNeighborFace(neighbor, neighbor_side, bnd_id, tid);
805 _displaced_aux->reinitNeighborFace(neighbor, neighbor_side, bnd_id, tid);
810 unsigned int neighbor_side,
811 const std::vector<Point> & physical_points,
815 "Are you calling this method with a undisplaced mesh element?");
820 _assembly[tid][nl_sys_num]->reinitNeighborAtPhysical(neighbor, neighbor_side, physical_points);
831 nl->reinitNeighborFace(neighbor, neighbor_side, 0, tid);
832 _displaced_aux->reinitNeighborFace(neighbor, neighbor_side, 0, tid);
837 const std::vector<Point> & physical_points,
841 "Are you calling this method with a undisplaced mesh element?");
846 _assembly[tid][nl_sys_num]->reinitNeighborAtPhysical(neighbor, physical_points);
857 nl->reinitNeighbor(neighbor, tid);
877 if (lower_d_elem_neighbor &&
881 std::vector<Point> reference_points;
882 FEInterface::inverse_map(
883 lower_d_elem_neighbor->dim(), FEType(), lower_d_elem_neighbor, qps, reference_points);
891 bool reinit_for_derivative_reordering )
894 nl->reinitScalars(tid, reinit_for_derivative_reordering);
895 _displaced_aux->reinitScalars(tid, reinit_for_derivative_reordering);
1017 const DofMap & dof_map,
1018 std::vector<dof_id_type> & dof_indices,
1019 const std::set<TagID> & tags,
1030 const DofMap & dof_map,
1031 const std::vector<dof_id_type> & idof_indices,
1032 const std::vector<dof_id_type> & jdof_indices,
1033 const std::set<TagID> & tags,
1044 const DofMap & dof_map,
1045 std::vector<dof_id_type> & dof_indices,
1046 std::vector<dof_id_type> & neighbor_dof_indices,
1047 const std::set<TagID> & tags,
1055 neighbor_dof_indices,
1081 TIME_SECTION(
"updateGeometricSearch", 3,
"Updating Displaced GeometricSearch");
1186 Threads::parallel_reduce(node_range, rdmt);
1195 const CouplingMatrix *
1229 nl->timestepSetup();
1239 nl->customSetup(exec_type);
1249 nl->residualSetup();
1259 nl->jacobianSetup();
1267 _mproblem.SubProblem::haveADObjects(have_ad_objects);
1270 std::pair<bool, unsigned int>
1272 const bool error_if_not_found)
const 1280 mooseAssert(tid <
_assembly.size(),
"Assembly objects not initialized");
1281 mooseAssert(nl_sys_num <
_assembly[tid].size(),
1282 "Nonlinear system number larger than the assembly container size");
1289 mooseAssert(tid <
_assembly.size(),
"Assembly objects not initialized");
1290 mooseAssert(nl_sys_num <
_assembly[tid].size(),
1291 "Nonlinear system number larger than the assembly container size");
1301 const std::vector<VectorTag> &
LineSearch * getLineSearch() override
virtual void update(bool update_libmesh_system=true)
Update the system (doing libMesh magic)
GeometricSearchData _geometric_search_data
virtual TagID getVectorTagID(const TagName &tag_name) const
Get a TagID from a TagName.
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.
bool _have_ad_objects
AD flag indicating whether any AD objects have been added.
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
MooseVariableFieldBase & getVariableHelper(const THREAD_ID tid, const std::string &var_name, Moose::VarKindType expected_var_type, Moose::VarFieldType expected_var_field_type, const std::vector< T > &nls, const SystemBase &aux) const
Helper function called by getVariable that handles the logic for checking whether Variables of the re...
virtual void addGhostedElem(dof_id_type elem_id) override
Will make sure that all dofs connected to elem_id are ghosted to this processor.
virtual void saveOldSolutions()
Allocate vectors and save old solutions into them.
virtual const char * what() const
Get out the error message.
void undisplaceMesh()
Resets the displaced mesh to the reference mesh.
virtual void reinitLowerDElem(const Elem *lower_d_elem, const THREAD_ID tid, const std::vector< Point > *const pts=nullptr, const std::vector< Real > *const weights=nullptr)
virtual bool hasNonlocalCoupling() const override
Whether the simulation has nonlocal coupling which should be accounted for in the Jacobian...
virtual void checkExceptionAndStopSolve(bool print_message=true)
Check to see if an exception has occurred on any processor and, if possible, force the solve to fail...
virtual bool converged(const unsigned int nl_sys_num)
Eventually we want to convert this virtual over to taking a nonlinear system number argument...
Keeps track of stuff related to assembling.
Class for stuff related to variables.
void setCoordData(const MooseMesh &other_mesh)
Set the coordinate system data to that of other_mesh.
virtual void addAuxVariable(const std::string &var_type, const std::string &name, InputParameters ¶meters)
virtual std::size_t numNonlinearSystems() const override
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...
virtual bool haveFV() const override
returns true if this problem includes/needs finite volume functionality.
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)
void residualSetup() override
Specialization of SubProblem for solving nonlinear equations plus auxiliary equations.
virtual void initAdaptivity()
void bumpAllQRuleOrder(Order order, SubdomainID block)
virtual bool safeAccessTaggedVectors() const
Is it safe to access the tagged vectors.
void initialSetup() override
virtual void addJacobianNeighborLowerD(const THREAD_ID tid) override
virtual void needFV() override
marks this problem as including/needing finite volume functionality.
virtual TagID addVectorTag(const TagName &tag_name, const Moose::VectorTagType type=Moose::VECTOR_TAG_RESIDUAL) override
Create a Tag.
const Elem * getLowerDElem(const Elem *, unsigned short int) const
Returns a const pointer to a lower dimensional element that corresponds to a side of a higher dimensi...
virtual void prepareShapes(unsigned int var, const THREAD_ID tid) override
FEProblemBase & _mproblem
virtual TagID addVectorTag(const TagName &tag_name, const Moose::VectorTagType type=Moose::VECTOR_TAG_RESIDUAL)
Create a Tag.
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 void residualSetup()
virtual void setException(const std::string &message)
Set an exception, which is stored at this point by toggling a member variable in this class...
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...
const NumericVector< Number > *const & currentSolution() const override
The solution vector that is currently being operated on.
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.
virtual const std::vector< VectorTag > & currentResidualVectorTags() const override
Return the residual vector tags we are currently computing.
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 jacobianSetup()
void timestepSetup() override
void computingScalingJacobian(bool computing_scaling_jacobian)
Setter for whether we're computing the scaling jacobian.
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 unsigned int nlSysNum(const NonlinearSystemName &nl_sys_name) const override
Specialization of SubProblem for solving nonlinear equations plus auxiliary equations.
registerMooseObject("MooseApp", DisplacedProblem)
virtual void onTimestepBegin() override
virtual const std::string & name() const
Get the name of the class.
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 Elem * queryElemPtr(const dof_id_type i)
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 std::string & name() const
virtual void customSetup(const ExecFlagType &exec_type)
bool automaticScaling() const
Automatic scaling getter.
bool hasJacobian() const
Returns _has_jacobian.
unsigned int currentNlSysNum() const override
MultiPointMap & getPoints()
Returns a writeable reference to the _points container.
void clearQuadratureNodes()
Clear out any existing quadrature nodes.
MeshBase & getMesh()
Accessor for the underlying libMesh Mesh object.
std::vector< const NumericVector< Number > * > _nl_solution
The nonlinear system solutions.
MooseMesh & _ref_mesh
reference mesh
bool computingScalingResidual() const override final
Getter for whether we're computing the scaling residual.
virtual TagID getMatrixTagID(const TagName &tag_name) const
Get a TagID from a TagName.
void extraSendList(std::vector< dof_id_type > &send_list, void *context)
///< Type of coordinate system
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...
bool constJacobian() const
Returns _const_jacobian (whether a MOOSE object has specified that the Jacobian is the same as the pr...
VarKindType
Framework-wide stuff.
virtual void reinitNeighbor(const Elem *elem, unsigned int side, const THREAD_ID tid) override
void computingScalingResidual(bool computing_scaling_residual)
Setter for whether we're computing the scaling residual.
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 TagID addMatrixTag(TagName tag_name)
Create a Tag.
virtual void setResidualNeighbor(NumericVector< Number > &residual, const THREAD_ID tid) override
virtual Moose::VectorTagType vectorTagType(const TagID tag_id) const
MooseMesh wraps a libMesh::Mesh object and enhances its capabilities by caching additional data and s...
virtual unsigned int currentNlSysNum() const override
Assembly & assembly(const THREAD_ID tid, const unsigned int nl_sys_num) override
const std::string & type() const
Get the type of this class.
virtual bool hasVariable(const std::string &var_name) const override
Whether or not this problem has the variable.
void reinit()
Completely redo all geometric search objects.
std::vector< VectorTag > getVectorTags(const std::set< TagID > &tag_ids) const
virtual void addVariable(const std::string &var_type, const std::string &name, InputParameters ¶meters, unsigned int nl_system_number)
virtual Moose::VectorTagType vectorTagType(const TagID tag_id) const override
virtual void reinitOffDiagScalars(const THREAD_ID tid) override
LineSearch * getLineSearch() override
getter for the MOOSE line search
virtual std::set< dof_id_type > & ghostedElems()
Return the list of elements that should have their DoFs ghosted to this processor.
std::vector< std::string > _displacements
std::pair< bool, unsigned int > determineNonlinearSystem(const std::string &var_name, bool error_if_not_found=false) const override
virtual bool vectorTagExists(const TagID tag_id) const
Check to see if a particular Tag exists.
NonlinearSystemBase & getNonlinearSystemBase(const unsigned int sys_num)
virtual const VectorTag & getVectorTag(const TagID tag_id) const override
Get a VectorTag from a TagID.
void clearPoints()
Remove all of the current points and elements.
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
AuxiliarySystem & getAuxiliarySystem()
bool haveADObjects() const
Method for reading wehther we have any ad objects.
virtual bool isTransient() const override
GeometricSearchType
Used to select groups of geometric search objects to update.
virtual void onTimestepEnd() override
std::vector< std::unique_ptr< DisplacedSystem > > _displaced_nl
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 void timestepSetup()
virtual unsigned int numMatrixTags() const
The total number of tags.
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...
void customSetup(const ExecFlagType &exec_type) override
virtual TagName matrixTagName(TagID tag) override
Retrieve the name associated with a TagID.
virtual void reinitNodeFace(const Node *node, BoundaryID bnd_id, const THREAD_ID tid) override
Provides a way for users to bail out of the current solve.
void setCurrentSubdomainID(SubdomainID i)
set the current subdomain ID
virtual void initialSetup()
virtual void prepareAssembly(const THREAD_ID tid) override
std::shared_ptr< TimeIntegrator > getSharedTimeIntegrator()
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
Generic class for solving transient nonlinear problems.
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...
virtual bool computingInitialResidual(const unsigned int nl_sys_num) const override
Returns true if the problem is in the process of computing it's initial residual. ...
Class for containing MooseEnum item information.
const CouplingMatrix * couplingMatrix(const unsigned int nl_sys_num) const override
The coupling matrix defining what blocks exist in the preconditioning matrix.
virtual bool matrixTagExists(const TagName &tag_name) const override
Check to see if a particular Tag exists.
bool computingScalingJacobian() const override final
Getter for whether we're computing the scaling jacobian.
virtual TagID addMatrixTag(TagName tag_name) override
Create a Tag.
const SubdomainID INTERNAL_SIDE_LOWERD_ID
virtual void addResidualNeighbor(const THREAD_ID tid) override
std::pair< bool, unsigned int > determineNonlinearSystem(const std::string &var_name, bool error_if_not_found=false) const override
Determine what nonlinear system the provided variable name lies in.
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.
virtual void cacheJacobianNonlocal(const THREAD_ID tid)
void update(GeometricSearchType type=ALL)
Update all of the search objects.
Class for scalar variables (they are different).
IntRange< T > make_range(T beg, T end)
void mooseError(Args &&... args) const
Emits an error prefixed with object name and type.
virtual unsigned int numVectorTags(const Moose::VectorTagType type=Moose::VECTOR_TAG_ANY) const
The total number of tags, which can be limited to the tag type.
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 bool computingInitialResidual(const unsigned int nl_sys_num) const override
Returns true if the problem is in the process of computing it's initial residual. ...
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
Eigen::Matrix< Real, Eigen::Dynamic, 1 > RealEigenVector
std::set< const Elem * > & getElements()
Returns a writeable reference to the _elements container.
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 TagName vectorTagName(const TagID tag) const
Retrieve the name associated with a TagID.
virtual void setNeighborSubdomainID(const Elem *elem, unsigned int side, const THREAD_ID tid) override
static InputParameters validParams()
void automaticScaling(bool automatic_scaling) override
Automatic scaling setter.
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 bool isTransient() const override
virtual void reinitScalars(const THREAD_ID tid, bool reinit_for_derivative_reordering=false) override
fills the VariableValue arrays for scalar variables from the solution vector
virtual bool safeAccessTaggedMatrices() const
Is it safe to access the tagged matrices.
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.
Storage for all of the information pretaining to a vector tag.
DiracKernelInfo _dirac_kernel_info
nonlocal coupling matrix;
void jacobianSetup() override
StoredRange< MeshBase::node_iterator, Node *> NodeRange
void setCurrentNeighborSubdomainID(SubdomainID i)
set the current subdomain ID
virtual void addGhostedBoundary(BoundaryID boundary_id) override
Will make sure that all necessary elements from boundary_id are ghosted to this processor.
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 const VectorTag & getVectorTag(const TagID tag_id) const
Get a VectorTag from a TagID.
void updatePointLocator(const MooseMesh &mesh)
Called during FEProblemBase::meshChanged() to update the PointLocator object used by the DiracKernels...
auto index_range(const T &sizable)
virtual bool hasNonlocalCoupling() const override
Whether the simulation has nonlocal coupling which should be accounted for in the Jacobian...
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 unsigned int nlSysNum(const NonlinearSystemName &nl_sys_name) const override
virtual bool nlConverged(const unsigned int nl_sys_num) override
virtual bool matrixTagExists(const TagName &tag_name) const
Check to see if a particular Tag exists.
virtual TagName matrixTagName(TagID tag)
Retrieve the name associated with a TagID.
void meshChanged()
Declares that the MooseMesh has changed, invalidates cached data and rebuilds caches.
static InputParameters validParams()
virtual void ghostGhostedBoundaries() override
Causes the boundaries added using addGhostedBoundary to actually be ghosted.
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.
void setupFiniteVolumeMeshData() const
Sets up the additional data needed for finite volume computations.
Key structure for APIs manipulating global vectors/matrices.