https://mooseframework.inl.gov
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 
10 #include "ComputeBeamResultants.h"
11 
12 registerMooseObject("SolidMechanicsApp", ComputeBeamResultants);
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 
37 void
39 {
40  _force[_qp].zero();
41  _moment[_qp].zero();
42 }
43 
44 void
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 }
ComputeBeamResultants(const InputParameters &parameters)
const MaterialProperty< RealVectorValue > & _material_stiffness
Material stiffness vector that relates displacement strain increment to force increment.
const MaterialProperty< RankTwoTensor > & _total_rotation
Rotational transformation from global to current beam local coordinate system.
ComputeBeamResultants computes forces and moments using elasticity.
registerMooseObject("SolidMechanicsApp", ComputeBeamResultants)
unsigned int _qp
virtual void initQpStatefulProperties() override
static InputParameters validParams()
const MaterialProperty< RealVectorValue > & _material_flexure
Material flexure vector that relates rotational strain increment to moment increment.
virtual void computeQpProperties() override
const MaterialProperty< RealVectorValue > & _rot_strain_increment
Mechanical rotational strain increment in beam local coordinate system.
MaterialProperty< RealVectorValue > & _moment
Current moment vector in global coordinate system.
void addClassDescription(const std::string &doc_string)
const MaterialProperty< RealVectorValue > & _moment_old
Old force vector in global coordinate system.
const MaterialProperty< RealVectorValue > & _disp_strain_increment
Mechanical displacement strain increment in beam local coordinate system.
static InputParameters validParams()
const MaterialProperty< RealVectorValue > & _force_old
Old force vector in global coordinate system.
MaterialProperty< RealVectorValue > & _force
Current force vector in global coordinate system.