https://mooseframework.inl.gov
ComputeIncrementalBeamStrain.h
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 #pragma once
11 
12 #include "Material.h"
13 #include "RankTwoTensor.h"
14 
15 // Forward Declarations
16 class Function;
17 
23 {
24 public:
26 
28 
29  virtual void computeProperties() override;
30 
31 protected:
32  virtual void initQpStatefulProperties() override;
33 
35  void computeQpStrain();
36 
39 
41  virtual void computeRotation();
42 
44  const bool _has_Ix;
45 
47  unsigned int _nrot;
48 
50  unsigned int _ndisp;
51 
53  std::vector<unsigned int> _rot_num;
54 
56  std::vector<unsigned int> _disp_num;
57 
60 
62  const VariableValue & _Ay;
63 
65  const VariableValue & _Az;
66 
68  const VariableValue & _Iy;
69 
71  const VariableValue & _Iz;
72 
74  const VariableValue & _Ix;
75 
78 
81 
84 
87 
90 
93 
96 
99 
102 
105 
108 
111 
114 
117 
120 
122  const bool _large_strain;
123 
126 
129 
132 
134  std::vector<MaterialPropertyName> _eigenstrain_names;
135 
137  std::vector<const MaterialProperty<RealVectorValue> *> _disp_eigenstrain;
138 
140  std::vector<const MaterialProperty<RealVectorValue> *> _rot_eigenstrain;
141 
143  std::vector<const MaterialProperty<RealVectorValue> *> _disp_eigenstrain_old;
144 
146  std::vector<const MaterialProperty<RealVectorValue> *> _rot_eigenstrain_old;
147 
150 
154  std::vector<unsigned int> _soln_disp_index_0;
155 
157  std::vector<unsigned int> _soln_disp_index_1;
158 
160  std::vector<unsigned int> _soln_rot_index_0;
161 
163  std::vector<unsigned int> _soln_rot_index_1;
164 
167 
170 
173 };
MaterialProperty< RealVectorValue > & _total_disp_strain
Current total displacement strain integrated over the cross-section in global coordinate system...
std::vector< const MaterialProperty< RealVectorValue > * > _rot_eigenstrain_old
Vector of old rotational eigenstrains.
RankTwoTensor & _original_local_config
Rotational transformation from global coordinate system to initial beam local configuration.
const VariableValue & _Iy
Coupled variable for the second moment of area in y direction, i.e., integral of y^2*dA over the cros...
std::vector< unsigned int > _soln_disp_index_1
Indices of solution vector corresponding to displacement DOFs at the node 1.
std::vector< unsigned int > _rot_num
Variable numbers corresponding to the rotational variables.
MaterialProperty< RankTwoTensor > & _initial_rotation
Rotational transformation from global coordinate system to initial beam local configuration.
std::vector< unsigned int > _soln_rot_index_0
Indices of solution vector corresponding to rotation DOFs at the node 0.
MaterialProperty< RankTwoTensor > & _K21_cross
Stiffness matrix between displacement DOFs of one node to rotational DOFs of another node...
const VariableValue & _Iz
Coupled variable for the second moment of area in z direction, i.e., integral of z^2*dA over the cros...
unsigned int _ndisp
Number of coupled displacement variables.
virtual void computeRotation()
Computes the rotation matrix at time t. For small rotation scenarios, the rotation matrix at time t i...
MaterialProperty< RankTwoTensor > & _K22
Stiffness matrix between rotation DOFs of the same node.
MaterialProperty< RealVectorValue > & _total_rot_strain
Current total rotational strain integrated over the cross-section in global coordinate system...
NonlinearSystemBase & _nonlinear_sys
Reference to the nonlinear system object.
std::vector< const MaterialProperty< RealVectorValue > * > _disp_eigenstrain_old
Vector of old displacement eigenstrains.
ComputeIncrementalBeamStrain(const InputParameters &parameters)
RealVectorValue _avg_rot_local_t
Average rotation calculated in the beam local configuration at time t.
unsigned int _nrot
Number of coupled rotational variables.
MaterialProperty< RankTwoTensor > & _K11
Stiffness matrix between displacement DOFs of same node or across nodes.
ComputeIncrementalBeamStrain defines a displacement and rotation strain increment and rotation increm...
std::vector< unsigned int > _disp_num
Variable numbers corresponding to the displacement variables.
MaterialProperty< RankTwoTensor > & _K22_cross
Stiffness matrix between rotation DOFs of different nodes.
virtual void initQpStatefulProperties() override
MaterialProperty< Real > & _original_length
Initial length of the beam.
const bool _has_Ix
Booleans for validity of params.
const Function *const _prefactor_function
Prefactor function to multiply the elasticity tensor with.
MaterialProperty< RealVectorValue > & _mech_rot_strain_increment
Mechanical rotation strain increment (after removal of eigenstrains) integrated over the cross-sectio...
std::vector< const MaterialProperty< RealVectorValue > * > _disp_eigenstrain
Vector of current displacement eigenstrains.
std::vector< unsigned int > _soln_rot_index_1
Indices of solution vector corresponding to rotation DOFs at the node 1.
MaterialProperty< RealVectorValue > & _mech_disp_strain_increment
Mechanical displacement strain increment (after removal of eigenstrains) integrated over the cross-se...
OutputTools< Real >::VariableValue VariableValue
const MaterialProperty< RealVectorValue > & _material_stiffness
Material stiffness vector that relates displacement strain increments to force increments.
void computeQpStrain()
Computes the displacement and rotation strain increments.
RealVectorValue _grad_rot_0_local_t
Gradient of rotation calculated in the beam local configuration at time t.
const VariableValue & _area
Coupled variable for the beam cross-sectional area.
RealVectorValue _disp0
Displacement and rotations at the two nodes of the beam in the global coordinate system.
MaterialProperty< Real > & _effective_stiffness
Psuedo stiffness for critical time step computation.
std::vector< MaterialPropertyName > _eigenstrain_names
Vector of beam eigenstrain names.
const bool _large_strain
Boolean flag to turn on large strain calculation.
const VariableValue & _Ay
Coupled variable for the first moment of area in y direction, i.e., integral of y*dA over the cross-s...
const InputParameters & parameters() const
const MaterialProperty< RealVectorValue > & _total_rot_strain_old
Old total rotational strain integrated over the cross-section in global coordinate system...
std::vector< const MaterialProperty< RealVectorValue > * > _rot_eigenstrain
Vector of current rotational eigenstrains.
void computeStiffnessMatrix()
Computes the stiffness matrices.
const VariableValue & _Az
Coupled variable for the first moment of area in z direction, i.e., integral of z*dA over the cross-s...
const VariableValue & _Ix
Coupled variable for the second moment of area in x direction, i.e., integral of (y^2 + z^2)*dA over ...
std::vector< unsigned int > _soln_disp_index_0
Indices of solution vector corresponding to displacement DOFs at the node 0.
MaterialProperty< RankTwoTensor > & _total_rotation
Rotational transformation from global coordinate system to beam local configuration at time t...
MaterialProperty< RankTwoTensor > & _K21
Stiffness matrix between displacement DOFs and rotation DOFs of the same node.
const MaterialProperty< RealVectorValue > & _total_disp_strain_old
Old total displacement strain integrated over the cross-section in global coordinate system...
RealVectorValue _grad_disp_0_local_t
Gradient of displacement calculated in the beam local configuration at time t.