15 _sys(fe_problem.currentNonlinearSystem()),
16 _aux_sys(&_fe_problem.getAuxiliarySystem()),
17 _variables(uel_uo.getVariables()),
18 _aux_variables(uel_uo.getAuxVariables()),
20 _uel(uel_uo.getPlugin()),
21 _statev_copy(uel_uo._nstatev)
36 _variables(
x._variables),
37 _aux_variables(
x._aux_variables),
41 _statev_copy(_uel_uo._nstatev)
59 int nnode = elem->n_nodes();
71 mooseError(
"Scaling factors other than unity are not yet supported");
73 mooseError(
"All coupled variables must be full order lagrangian");
114 mooseError(
"All auxiliary variables must be full order Lagrangian");
142 if (do_residual && do_jacobian)
144 else if (!do_residual && do_jacobian)
146 else if (do_residual && !do_jacobian)
167 std::vector<Real> times{time - dt, time - dt};
169 std::array<Real, 8> energy;
170 int jelem = elem->id() + 1;
173 int npredf = nvar_aux;
183 std::copy(statev_old.begin(), statev_old.end(),
_statev_copy.begin());
UELThread(FEProblemBase &fe_problem, AbaqusUserElement &uel_uo)
std::array< std::map< dof_id_type, std::vector< Real > >, 2 > _statev
virtual Real & time() const
bool hasVector(const std::string &tag_name) const
TagID systemMatrixTag() const override
virtual void subdomainChanged() override final
virtual void get(const std::vector< numeric_index_type > &index, Number *values) const
void mooseError(Args &&... args)
std::vector< Real > _all_udotdot_dof_values
std::vector< Real > _statev_copy
state variable copy
int _nstatev
stateful data
FEProblemBase & _fe_problem
std::vector< dof_id_type > _var_dof_indices
dof indices of all coupled variables
std::vector< Real > _all_aux_var_dof_increments
void addResiduals(Assembly &assembly, const Residuals &residuals, const Indices &dof_indices, Real scaling_factor)
const NumericVector< Number > *const & currentSolution() const override
std::vector< Real > _aux_var_values_to_uel
virtual bool hasMatrix(TagID tag) const
std::vector< dof_id_type > _aux_var_dof_indices
StoredRange< MeshBase::const_element_iterator, const Elem *> ConstElemRange
virtual Assembly & assembly(const THREAD_ID tid, const unsigned int sys_num) override
std::vector< Real > _coords
void addJacobian(Assembly &assembly, const Residuals &residuals, const Indices &dof_indices, Real scaling_factor)
std::vector< Real > _all_udot_dof_values
std::size_t _statev_index_current
std::vector< Real > _all_dof_increments
DenseMatrix< Real > _local_ke
DenseVector< Real > _local_re
virtual const NumericVector< Number > *const & currentSolution() const override final
const std::vector< double > x
std::vector< dof_id_type > _all_dof_indices
virtual NumericVector< Number > * solutionUDot()
std::vector< Real > _all_aux_var_dof_values
unsigned int number() const
std::vector< Real > & get_values()
TagID residualVectorTag() const override
std::vector< Real > _props
props
AbaqusUserElement & _uel_uo
reference to the userobject (to access parameters)
This user-object is a testbed for implementing a custom element.
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
const AbaqusUserElement::uel_t & _uel
have a reference to the UEL plugin here
NonlinearSystemBase & _sys
Current nonlinear system.
const int _jtype
Abaqus element type.
const std::vector< const MooseVariableFieldBase * > & _aux_variables
void resize(const unsigned int new_m, const unsigned int new_n)
IntRange< T > make_range(T beg, T end)
std::vector< Real > _all_dof_values
static const std::complex< double > j(0, 1)
Complex number "j" (also known as "i")
std::size_t _statev_index_old
std::vector< dof_id_type > _all_aux_var_dof_indices
NumericVector< Number > & solutionOld()
virtual Real & dt() const
AuxiliarySystem * _aux_sys
Auxiliary system object.
auto index_range(const T &sizable)
const std::vector< const MooseVariableFieldBase * > & _variables
virtual void onElement(const Elem *elem) override final
Fortran array memory layout: (1,1), (2,1) (3,1) (1,2) (2,2) (3,2) (1,3) (2,3) (3,3) C++ array memory ...
std::array< int, 5 > _lflags
parameters for the UEL plugin
const unsigned int _dim
The dimension of the mesh, e.g. 3 for hexes and tets, 2 for quads and tris.