https://mooseframework.inl.gov
Loading...
Searching...
No Matches
ComputeBeamResultants.C
Go to the documentation of this file.
1//* This file is part of the MOOSE framework
2//* https://mooseframework.inl.gov
3//*
4//* All rights reserved, see COPYRIGHT for full restrictions
5//* https://github.com/idaholab/moose/blob/master/COPYRIGHT
6//*
7//* Licensed under LGPL 2.1, please see LICENSE for details
8//* https://www.gnu.org/licenses/lgpl-2.1.html
9
11
13
16{
18 params.addClassDescription("Compute forces and moments using elasticity");
19 return params;
20}
21
23 : Material(parameters),
24 _disp_strain_increment(
25 getMaterialPropertyByName<RealVectorValue>("mech_disp_strain_increment")),
26 _rot_strain_increment(getMaterialPropertyByName<RealVectorValue>("mech_rot_strain_increment")),
27 _material_stiffness(getMaterialPropertyByName<RealVectorValue>("material_stiffness")),
28 _material_flexure(getMaterialPropertyByName<RealVectorValue>("material_flexure")),
29 _total_rotation(getMaterialPropertyByName<RankTwoTensor>("total_rotation")),
30 _force(declareProperty<RealVectorValue>("forces")),
31 _moment(declareProperty<RealVectorValue>("moments")),
32 _force_old(getMaterialPropertyOld<RealVectorValue>("forces")),
33 _moment_old(getMaterialPropertyOld<RealVectorValue>("moments"))
34{
35}
36
37void
43
44void
46{
47 // force = R^T * _material_stiffness * strain_increment + force_old
48 RealVectorValue force_increment;
49 force_increment(0) = _material_stiffness[_qp](0) * _disp_strain_increment[_qp](0);
50 force_increment(1) = _material_stiffness[_qp](1) * _disp_strain_increment[_qp](1);
51 force_increment(2) = _material_stiffness[_qp](2) * _disp_strain_increment[_qp](2);
52
53 _force[_qp] = _total_rotation[0].transpose() * force_increment + _force_old[_qp];
54
55 // moment = R^T * _material_flexure * rotation_increment + moment_old
56 RealVectorValue moment_increment;
57 moment_increment(0) = _material_flexure[_qp](0) * _rot_strain_increment[_qp](0);
58 moment_increment(1) = _material_flexure[_qp](1) * _rot_strain_increment[_qp](1);
59 moment_increment(2) = _material_flexure[_qp](2) * _rot_strain_increment[_qp](2);
60
61 _moment[_qp] = _total_rotation[0].transpose() * moment_increment + _moment_old[_qp];
62}
registerMooseObject("SolidMechanicsApp", ComputeBeamResultants)
ComputeBeamResultants computes forces and moments using elasticity.
const MaterialProperty< RealVectorValue > & _disp_strain_increment
Mechanical displacement strain increment in beam local coordinate system.
virtual void initQpStatefulProperties() override
const MaterialProperty< RankTwoTensor > & _total_rotation
Rotational transformation from global to current beam local coordinate system.
ComputeBeamResultants(const InputParameters &parameters)
const MaterialProperty< RealVectorValue > & _moment_old
Old force vector in global coordinate system.
const MaterialProperty< RealVectorValue > & _rot_strain_increment
Mechanical rotational strain increment in beam local coordinate system.
const MaterialProperty< RealVectorValue > & _material_stiffness
Material stiffness vector that relates displacement strain increment to force increment.
MaterialProperty< RealVectorValue > & _force
Current force vector in global coordinate system.
static InputParameters validParams()
const MaterialProperty< RealVectorValue > & _force_old
Old force vector in global coordinate system.
virtual void computeQpProperties() override
const MaterialProperty< RealVectorValue > & _material_flexure
Material flexure vector that relates rotational strain increment to moment increment.
MaterialProperty< RealVectorValue > & _moment
Current moment vector in global coordinate system.
void addClassDescription(const std::string &doc_string)
unsigned int _qp
static InputParameters validParams()