25 "Central difference time integrator using NEML2 material models and kernels.");
27 "assembly",
"The NEML2Assembly object to use to provide assembly information");
29 "fe",
"The NEML2FEInterpolation object to use to couple variables");
48 std::unordered_set<BoundaryID> bnds;
49 for (
const auto & ibc : ibcs.getObjects())
50 bnds.insert(ibc->boundaryIDs().begin(), ibc->boundaryIDs().end());
54 mooseInfo(
"Dectected BCs on ", bnds.size(),
" boundaries.");
57 std::unordered_set<const Elem *> unique_elems;
60 if (bnds.find((*it)->_bnd_id) != bnds.end())
61 unique_elems.insert((*it)->_elem);
registerMooseObject("SolidMechanicsApp", NEML2CentralDifference)
Implements a form of the central difference time integrator that calculates acceleration directly fro...
virtual void postSolve() override
virtual void meshChanged() override
virtual void evaluateRHSResidual()
Evaluate the RHS residual.
static InputParameters validParams()
virtual void initialSetup() override
T & getUserObject(const std::string &name, unsigned int tid=0) const
void setCurrentAlgebraicNodeRange(libMesh::ConstNodeRange *range)
void setCurrentAlgebraicElementRange(libMesh::ConstElemRange *range)
virtual MooseMesh & mesh() override
void mooseInfo(Args &&... args) const
virtual bnd_elem_iterator bndElemsBegin()
virtual bnd_elem_iterator bndElemsEnd()
NEML2Assembly * _neml2_assembly
The assembly object with cached assembly information.
void meshChanged() override
void initialSetup() override
NEML2FEInterpolation * _fe
The FE interface for getting variable values/gradients interpolated onto the finite element space.
void evaluateRHSResidual() override
Evaluate the RHS residual.
static InputParameters validParams()
NEML2CentralDifference(const InputParameters ¶meters)
std::vector< const Node * > _no_node
Empty node vector to help zero out the algebraic range.
bool _boundary_elems_dirty
Whether the cached boundary element list needs rebuilding.
void postSolve() override
std::vector< const Elem * > _boundary_elems
Empty element vector to help zero out the algebraic range.
void rebuildBoundaryElementList()
void invalidateInterpolations()
bool contextUpToDate() const
MooseObjectTagWarehouse< IntegratedBCBase > & getIntegratedBCWarehouse()
NonlinearSystemBase * _nl
FEProblemBase & _fe_problem