Line data Source code
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 : 14 : InputParameters 15 1360 : ComputeBeamResultants::validParams() 16 : { 17 1360 : InputParameters params = Material::validParams(); 18 1360 : params.addClassDescription("Compute forces and moments using elasticity"); 19 1360 : return params; 20 0 : } 21 : 22 1014 : ComputeBeamResultants::ComputeBeamResultants(const InputParameters & parameters) 23 : : Material(parameters), 24 1014 : _disp_strain_increment( 25 2028 : getMaterialPropertyByName<RealVectorValue>("mech_disp_strain_increment")), 26 2028 : _rot_strain_increment(getMaterialPropertyByName<RealVectorValue>("mech_rot_strain_increment")), 27 2028 : _material_stiffness(getMaterialPropertyByName<RealVectorValue>("material_stiffness")), 28 2028 : _material_flexure(getMaterialPropertyByName<RealVectorValue>("material_flexure")), 29 2028 : _total_rotation(getMaterialPropertyByName<RankTwoTensor>("total_rotation")), 30 1014 : _force(declareProperty<RealVectorValue>("forces")), 31 1014 : _moment(declareProperty<RealVectorValue>("moments")), 32 2028 : _force_old(getMaterialPropertyOld<RealVectorValue>("forces")), 33 3042 : _moment_old(getMaterialPropertyOld<RealVectorValue>("moments")) 34 : { 35 1014 : } 36 : 37 : void 38 7760 : ComputeBeamResultants::initQpStatefulProperties() 39 : { 40 7760 : _force[_qp].zero(); 41 7760 : _moment[_qp].zero(); 42 7760 : } 43 : 44 : void 45 660528 : ComputeBeamResultants::computeQpProperties() 46 : { 47 : // force = R^T * _material_stiffness * strain_increment + force_old 48 : RealVectorValue force_increment; 49 660528 : force_increment(0) = _material_stiffness[_qp](0) * _disp_strain_increment[_qp](0); 50 660528 : force_increment(1) = _material_stiffness[_qp](1) * _disp_strain_increment[_qp](1); 51 660528 : force_increment(2) = _material_stiffness[_qp](2) * _disp_strain_increment[_qp](2); 52 : 53 660528 : _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 660528 : moment_increment(0) = _material_flexure[_qp](0) * _rot_strain_increment[_qp](0); 58 660528 : moment_increment(1) = _material_flexure[_qp](1) * _rot_strain_increment[_qp](1); 59 660528 : moment_increment(2) = _material_flexure[_qp](2) * _rot_strain_increment[_qp](2); 60 : 61 660528 : _moment[_qp] = _total_rotation[0].transpose() * moment_increment + _moment_old[_qp]; 62 660528 : }