www.mooseframework.org
ComputeIncrementalBeamStrain.h
Go to the documentation of this file.
1 //* This file is part of the MOOSE framework
2 //* https://www.mooseframework.org
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 #pragma once
11 
12 #include "Material.h"
13 #include "RankTwoTensor.h"
14 
20 // Forward Declarations
22 class Function;
23 
24 template <>
26 
27 class ComputeIncrementalBeamStrain : public Material
28 {
29 public:
30  static InputParameters validParams();
31 
32  ComputeIncrementalBeamStrain(const InputParameters & parameters);
33 
34  virtual void computeProperties() override;
35 
36 protected:
37  virtual void initQpStatefulProperties() override;
38 
40  void computeQpStrain();
41 
44 
46  virtual void computeRotation();
47 
49  const bool _has_Ix;
50 
52  unsigned int _nrot;
53 
55  unsigned int _ndisp;
56 
58  std::vector<unsigned int> _rot_num;
59 
61  std::vector<unsigned int> _disp_num;
62 
64  const VariableValue & _area;
65 
67  const VariableValue & _Ay;
68 
70  const VariableValue & _Az;
71 
73  const VariableValue & _Iy;
74 
76  const VariableValue & _Iz;
77 
79  const VariableValue & _Ix;
80 
83 
85  MaterialProperty<Real> & _original_length;
86 
88  MaterialProperty<RankTwoTensor> & _total_rotation;
89 
91  MaterialProperty<RealVectorValue> & _total_disp_strain;
92 
94  MaterialProperty<RealVectorValue> & _total_rot_strain;
95 
97  const MaterialProperty<RealVectorValue> & _total_disp_strain_old;
98 
100  const MaterialProperty<RealVectorValue> & _total_rot_strain_old;
101 
103  MaterialProperty<RealVectorValue> & _mech_disp_strain_increment;
104 
106  MaterialProperty<RealVectorValue> & _mech_rot_strain_increment;
107 
109  const MaterialProperty<RealVectorValue> & _material_stiffness;
110 
112  MaterialProperty<RankTwoTensor> & _K11;
113 
115  MaterialProperty<RankTwoTensor> & _K21_cross;
116 
118  MaterialProperty<RankTwoTensor> & _K21;
119 
121  MaterialProperty<RankTwoTensor> & _K22;
122 
124  MaterialProperty<RankTwoTensor> & _K22_cross;
125 
127  const bool _large_strain;
128 
130  RealVectorValue _grad_disp_0_local_t;
131 
133  RealVectorValue _grad_rot_0_local_t;
134 
136  RealVectorValue _avg_rot_local_t;
137 
139  std::vector<MaterialPropertyName> _eigenstrain_names;
140 
142  std::vector<const MaterialProperty<RealVectorValue> *> _disp_eigenstrain;
143 
145  std::vector<const MaterialProperty<RealVectorValue> *> _rot_eigenstrain;
146 
148  std::vector<const MaterialProperty<RealVectorValue> *> _disp_eigenstrain_old;
149 
151  std::vector<const MaterialProperty<RealVectorValue> *> _rot_eigenstrain_old;
152 
154  RealVectorValue _disp0, _disp1, _rot0, _rot1;
155 
157  NonlinearSystemBase & _nonlinear_sys;
159  std::vector<unsigned int> _soln_disp_index_0;
160 
162  std::vector<unsigned int> _soln_disp_index_1;
163 
165  std::vector<unsigned int> _soln_rot_index_0;
166 
168  std::vector<unsigned int> _soln_rot_index_1;
169 
171  MaterialProperty<RankTwoTensor> & _initial_rotation;
172 
174  MaterialProperty<Real> & _effective_stiffness;
175 
177  const Function * const _prefactor_function;
178 };
ComputeIncrementalBeamStrain::_effective_stiffness
MaterialProperty< Real > & _effective_stiffness
Psuedo stiffness for critical time step computation.
Definition: ComputeIncrementalBeamStrain.h:174
ComputeIncrementalBeamStrain::_mech_disp_strain_increment
MaterialProperty< RealVectorValue > & _mech_disp_strain_increment
Mechanical displacement strain increment (after removal of eigenstrains) integrated over the cross-se...
Definition: ComputeIncrementalBeamStrain.h:103
ComputeIncrementalBeamStrain::_disp_eigenstrain
std::vector< const MaterialProperty< RealVectorValue > * > _disp_eigenstrain
Vector of current displacement eigenstrains.
Definition: ComputeIncrementalBeamStrain.h:142
ComputeIncrementalBeamStrain::_total_rot_strain_old
const MaterialProperty< RealVectorValue > & _total_rot_strain_old
Old total rotational strain integrated over the cross-section in global coordinate system.
Definition: ComputeIncrementalBeamStrain.h:100
ComputeIncrementalBeamStrain::_avg_rot_local_t
RealVectorValue _avg_rot_local_t
Average rotation calculated in the beam local configuration at time t.
Definition: ComputeIncrementalBeamStrain.h:136
ComputeIncrementalBeamStrain::_area
const VariableValue & _area
Coupled variable for the beam cross-sectional area.
Definition: ComputeIncrementalBeamStrain.h:64
ComputeIncrementalBeamStrain::_K11
MaterialProperty< RankTwoTensor > & _K11
Stiffness matrix between displacement DOFs of same node or across nodes.
Definition: ComputeIncrementalBeamStrain.h:112
ComputeIncrementalBeamStrain::_disp_num
std::vector< unsigned int > _disp_num
Variable numbers corresponding to the displacement variables.
Definition: ComputeIncrementalBeamStrain.h:61
ComputeIncrementalBeamStrain::_K22_cross
MaterialProperty< RankTwoTensor > & _K22_cross
Stiffness matrix between rotation DOFs of different nodes.
Definition: ComputeIncrementalBeamStrain.h:124
ComputeIncrementalBeamStrain::_Az
const VariableValue & _Az
Coupled variable for the first moment of area in z direction, i.e., integral of z*dA over the cross-s...
Definition: ComputeIncrementalBeamStrain.h:70
ComputeIncrementalBeamStrain::_total_rotation
MaterialProperty< RankTwoTensor > & _total_rotation
Rotational transformation from global coordinate system to beam local configuration at time t.
Definition: ComputeIncrementalBeamStrain.h:88
ComputeIncrementalBeamStrain::_rot0
RealVectorValue _rot0
Definition: ComputeIncrementalBeamStrain.h:154
ComputeIncrementalBeamStrain::_soln_disp_index_0
std::vector< unsigned int > _soln_disp_index_0
Indices of solution vector corresponding to displacement DOFs at the node 0.
Definition: ComputeIncrementalBeamStrain.h:159
ComputeIncrementalBeamStrain::_initial_rotation
MaterialProperty< RankTwoTensor > & _initial_rotation
Rotational transformation from global coordinate system to initial beam local configuration.
Definition: ComputeIncrementalBeamStrain.h:171
ComputeIncrementalBeamStrain::_total_disp_strain_old
const MaterialProperty< RealVectorValue > & _total_disp_strain_old
Old total displacement strain integrated over the cross-section in global coordinate system.
Definition: ComputeIncrementalBeamStrain.h:97
ComputeIncrementalBeamStrain::_grad_disp_0_local_t
RealVectorValue _grad_disp_0_local_t
Gradient of displacement calculated in the beam local configuration at time t.
Definition: ComputeIncrementalBeamStrain.h:130
ComputeIncrementalBeamStrain::_K21
MaterialProperty< RankTwoTensor > & _K21
Stiffness matrix between displacement DOFs and rotation DOFs of the same node.
Definition: ComputeIncrementalBeamStrain.h:118
ComputeIncrementalBeamStrain::_grad_rot_0_local_t
RealVectorValue _grad_rot_0_local_t
Gradient of rotation calculated in the beam local configuration at time t.
Definition: ComputeIncrementalBeamStrain.h:133
ComputeIncrementalBeamStrain::_total_disp_strain
MaterialProperty< RealVectorValue > & _total_disp_strain
Current total displacement strain integrated over the cross-section in global coordinate system.
Definition: ComputeIncrementalBeamStrain.h:91
ComputeIncrementalBeamStrain::_Iz
const VariableValue & _Iz
Coupled variable for the second moment of area in z direction, i.e., integral of z^2*dA over the cros...
Definition: ComputeIncrementalBeamStrain.h:76
ComputeIncrementalBeamStrain::_soln_rot_index_1
std::vector< unsigned int > _soln_rot_index_1
Indices of solution vector corresponding to rotation DOFs at the node 1.
Definition: ComputeIncrementalBeamStrain.h:168
ComputeIncrementalBeamStrain::_eigenstrain_names
std::vector< MaterialPropertyName > _eigenstrain_names
Vector of beam eigenstrain names.
Definition: ComputeIncrementalBeamStrain.h:139
ComputeIncrementalBeamStrain::_ndisp
unsigned int _ndisp
Number of coupled displacement variables.
Definition: ComputeIncrementalBeamStrain.h:55
ComputeIncrementalBeamStrain::_rot_num
std::vector< unsigned int > _rot_num
Variable numbers corresponding to the rotational variables.
Definition: ComputeIncrementalBeamStrain.h:58
ComputeIncrementalBeamStrain::_Ay
const VariableValue & _Ay
Coupled variable for the first moment of area in y direction, i.e., integral of y*dA over the cross-s...
Definition: ComputeIncrementalBeamStrain.h:67
ComputeIncrementalBeamStrain::_large_strain
const bool _large_strain
Boolean flag to turn on large strain calculation.
Definition: ComputeIncrementalBeamStrain.h:127
ComputeIncrementalBeamStrain::_K22
MaterialProperty< RankTwoTensor > & _K22
Stiffness matrix between rotation DOFs of the same node.
Definition: ComputeIncrementalBeamStrain.h:121
ComputeIncrementalBeamStrain::computeRotation
virtual void computeRotation()
Computes the rotation matrix at time t. For small rotation scenarios, the rotation matrix at time t i...
Definition: ComputeIncrementalBeamStrain.C:616
ComputeIncrementalBeamStrain::_disp1
RealVectorValue _disp1
Definition: ComputeIncrementalBeamStrain.h:154
ComputeIncrementalBeamStrain::_rot1
RealVectorValue _rot1
Definition: ComputeIncrementalBeamStrain.h:154
ComputeIncrementalBeamStrain::_total_rot_strain
MaterialProperty< RealVectorValue > & _total_rot_strain
Current total rotational strain integrated over the cross-section in global coordinate system.
Definition: ComputeIncrementalBeamStrain.h:94
ComputeIncrementalBeamStrain::_disp0
RealVectorValue _disp0
Displacement and rotations at the two nodes of the beam in the global coordinate system.
Definition: ComputeIncrementalBeamStrain.h:154
ComputeIncrementalBeamStrain::_nonlinear_sys
NonlinearSystemBase & _nonlinear_sys
Reference to the nonlinear system object.
Definition: ComputeIncrementalBeamStrain.h:157
ComputeIncrementalBeamStrain::computeProperties
virtual void computeProperties() override
Definition: ComputeIncrementalBeamStrain.C:184
ComputeIncrementalBeamStrain::_rot_eigenstrain
std::vector< const MaterialProperty< RealVectorValue > * > _rot_eigenstrain
Vector of current rotational eigenstrains.
Definition: ComputeIncrementalBeamStrain.h:145
ComputeIncrementalBeamStrain::computeStiffnessMatrix
void computeStiffnessMatrix()
Computes the stiffness matrices.
Definition: ComputeIncrementalBeamStrain.C:347
ComputeIncrementalBeamStrain::_Ix
const VariableValue & _Ix
Coupled variable for the second moment of area in x direction, i.e., integral of (y^2 + z^2)*dA over ...
Definition: ComputeIncrementalBeamStrain.h:79
ComputeIncrementalBeamStrain::_rot_eigenstrain_old
std::vector< const MaterialProperty< RealVectorValue > * > _rot_eigenstrain_old
Vector of old rotational eigenstrains.
Definition: ComputeIncrementalBeamStrain.h:151
ComputeIncrementalBeamStrain::_Iy
const VariableValue & _Iy
Coupled variable for the second moment of area in y direction, i.e., integral of y^2*dA over the cros...
Definition: ComputeIncrementalBeamStrain.h:73
validParams< ComputeIncrementalBeamStrain >
InputParameters validParams< ComputeIncrementalBeamStrain >()
ComputeIncrementalBeamStrain::_K21_cross
MaterialProperty< RankTwoTensor > & _K21_cross
Stiffness matrix between displacement DOFs of one node to rotational DOFs of another node.
Definition: ComputeIncrementalBeamStrain.h:115
ComputeIncrementalBeamStrain::_nrot
unsigned int _nrot
Number of coupled rotational variables.
Definition: ComputeIncrementalBeamStrain.h:52
ComputeIncrementalBeamStrain::_soln_disp_index_1
std::vector< unsigned int > _soln_disp_index_1
Indices of solution vector corresponding to displacement DOFs at the node 1.
Definition: ComputeIncrementalBeamStrain.h:162
ComputeIncrementalBeamStrain::initQpStatefulProperties
virtual void initQpStatefulProperties() override
Definition: ComputeIncrementalBeamStrain.C:142
ComputeIncrementalBeamStrain::_soln_rot_index_0
std::vector< unsigned int > _soln_rot_index_0
Indices of solution vector corresponding to rotation DOFs at the node 0.
Definition: ComputeIncrementalBeamStrain.h:165
ComputeIncrementalBeamStrain::_has_Ix
const bool _has_Ix
Booleans for validity of params.
Definition: ComputeIncrementalBeamStrain.h:49
ComputeIncrementalBeamStrain
Definition: ComputeIncrementalBeamStrain.h:27
RankTwoTensorTempl< Real >
ComputeIncrementalBeamStrain::validParams
static InputParameters validParams()
Definition: ComputeIncrementalBeamStrain.C:25
ComputeIncrementalBeamStrain::_prefactor_function
const Function *const _prefactor_function
Prefactor function to multiply the elasticity tensor with.
Definition: ComputeIncrementalBeamStrain.h:177
ComputeIncrementalBeamStrain::_original_length
MaterialProperty< Real > & _original_length
Initial length of the beam.
Definition: ComputeIncrementalBeamStrain.h:85
ComputeIncrementalBeamStrain::_original_local_config
RankTwoTensor _original_local_config
Rotational transformation from global coordinate system to initial beam local configuration.
Definition: ComputeIncrementalBeamStrain.h:82
ComputeIncrementalBeamStrain::_material_stiffness
const MaterialProperty< RealVectorValue > & _material_stiffness
Material stiffness vector that relates displacement strain increments to force increments.
Definition: ComputeIncrementalBeamStrain.h:109
ComputeIncrementalBeamStrain::ComputeIncrementalBeamStrain
ComputeIncrementalBeamStrain(const InputParameters &parameters)
Definition: ComputeIncrementalBeamStrain.C:67
ComputeIncrementalBeamStrain::_disp_eigenstrain_old
std::vector< const MaterialProperty< RealVectorValue > * > _disp_eigenstrain_old
Vector of old displacement eigenstrains.
Definition: ComputeIncrementalBeamStrain.h:148
ComputeIncrementalBeamStrain::computeQpStrain
void computeQpStrain()
Computes the displacement and rotation strain increments.
Definition: ComputeIncrementalBeamStrain.C:231
ComputeIncrementalBeamStrain::_mech_rot_strain_increment
MaterialProperty< RealVectorValue > & _mech_rot_strain_increment
Mechanical rotation strain increment (after removal of eigenstrains) integrated over the cross-sectio...
Definition: ComputeIncrementalBeamStrain.h:106