12#include "libmesh/quadrature.h"
13#include "libmesh/utility.h"
14#include "libmesh/enum_quadrature_type.h"
15#include "libmesh/fe_type.h"
16#include "libmesh/string_to_enum.h"
17#include "libmesh/quadrature_gauss.h"
26 "Computes the local forces, bending moments and shear forces acting on shell elements");
27 params.
addParam<std::string>(
"base_name",
"Mechanical property base name");
30 "Thickness of the shell. Can be supplied as either a number or a variable name.");
32 "Quadrature order in out of plane direction");
34 "axial_force_0 axial_force_1 normal_force bending_moment_0 bending_moment_1 "
35 "bending_moment_01 shear_force_01 shear_force_02 shear_force_12");
39 "The stress resultant type to output, calculated on the shell element.");
46 _base_name(isParamValid(
"base_name") ? getParam<
std::string>(
"base_name") +
"_" :
""),
47 _thickness(coupledValue(
"thickness")),
51 1, Utility::string_to_enum<Order>(getParam<std::string>(
"through_thickness_order")));
56 for (
const auto t : index_range(
_t_points))
58 _base_name +
"local_stress_t_points_" + std::to_string(t));
64 Real _shell_resultant = 0.0;
69 for (
unsigned int i = 0; i <
_t_points.size(); ++i)
77 for (
unsigned int i = 0; i <
_t_points.size(); ++i)
85 for (
unsigned int i = 0; i <
_t_points.size(); ++i)
93 for (
unsigned int i = 0; i <
_t_points.size(); ++i)
101 for (
unsigned int i = 0; i <
_t_points.size(); ++i)
109 for (
unsigned int i = 0; i <
_t_points.size(); ++i)
117 for (
unsigned int i = 0; i <
_t_points.size(); ++i)
125 for (
unsigned int i = 0; i <
_t_points.size(); ++i)
133 for (
unsigned int i = 0; i <
_t_points.size(); ++i)
141 return _shell_resultant;
registerMooseObject("SolidMechanicsApp", ShellResultantsAux)
static InputParameters validParams()
static InputParameters validParams()
std::unique_ptr< QGauss > _t_qrule
Quadrature rule in the out of plane direction.
virtual Real computeValue()
ShellResultantsAux(const InputParameters ¶meters)
std::vector< Point > _t_points
Quadrature points and weights in the out of plane direction in isoparametric coordinate system.
enum ShellResultantsAux::ResultantType _resultant
const std::string _base_name
Base name of the material system used to calculate the elastic energy.
std::vector< const MaterialProperty< RankTwoTensor > * > _local_stress_t_points
The local stress tensor.
const VariableValue & _thickness
Coupled variable for the shell thickness.
std::vector< Real > _t_weights