18 #include "libmesh/quadrature.h" 24 params.
addParam<std::string>(
"base_name",
25 "Optional parameter that allows the user to define " 26 "multiple mechanics material systems on the same " 27 "block, i.e. for multiple phases");
30 "The displacements appropriate for the simulation geometry and coordinate system");
31 params.
addCoupledVar(
"youngs_modulus",
"Variable containing Young's modulus");
37 _base_name(isParamValid(
"base_name") ? getParam<
std::string>(
"base_name") +
"_" :
""),
38 _youngs_modulus(coupledValue(
"youngs_modulus")),
39 _total_stretch(declareProperty<
Real>(_base_name +
"total_stretch")),
40 _elastic_stretch(declareProperty<
Real>(_base_name +
"elastic_stretch")),
41 _axial_stress(declareProperty<
Real>(_base_name +
"axial_stress")),
42 _e_over_l(declareProperty<
Real>(_base_name +
"e_over_l"))
44 const std::vector<VariableName> & nl_vnames(
getParam<std::vector<VariableName>>(
"displacements"));
48 for (
unsigned int i = 0; i <
_ndisp; ++i)
64 mooseAssert(
_current_elem->n_nodes() == 2,
"Truss element needs to have exactly two nodes.");
67 std::vector<const Node *> node;
68 for (
unsigned int i = 0; i < 2; ++i)
73 for (
unsigned int i = 0; i <
_ndisp; ++i)
74 dxyz(i) = (*node[1])(i) - (*node[0])(i);
81 std::vector<Real> disp0, disp1;
82 for (
unsigned int i = 0; i <
_ndisp; ++i)
84 disp0.push_back(sol(node[0]->dof_number(nonlinear_sys.
number(),
_disp_var[i]->number(), 0)));
85 disp1.push_back(sol(node[1]->dof_number(nonlinear_sys.
number(),
_disp_var[i]->number(), 0)));
89 for (
unsigned int i = 0; i <
_ndisp; ++i)
90 dxyz(i) += disp1[i] - disp0[i];
FEProblemBase & _fe_problem
const QBase *const & _qrule
auto norm() const -> decltype(std::norm(Real()))
TrussMaterial(const InputParameters ¶meters)
std::vector< MooseVariable * > _disp_var
MaterialProperty< Real > & _total_stretch
const VariableValue & _youngs_modulus
unsigned int _ndisp
Number of displacement variables.
MaterialProperty< Real > & _elastic_stretch
virtual const NumericVector< Number > *const & currentSolution() const override final
static InputParameters validParams()
virtual void computeQpStrain()=0
const T & getParam(const std::string &name) const
NonlinearSystemBase & getNonlinearSystemBase(const unsigned int sys_num)
unsigned int number() const
MaterialProperty< Real > & _e_over_l
virtual void computeProperties()
virtual MooseVariable & getStandardVariable(const THREAD_ID tid, const std::string &var_name) override
static InputParameters validParams()
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
MaterialProperty< Real > & _axial_stress
virtual void initQpStatefulProperties()
virtual void computeQpStress()=0
const Elem *const & _current_elem