69 _has_Ix(isParamValid(
"Ix")),
70 _nrot(coupledComponents(
"rotations")),
71 _ndisp(coupledComponents(
"displacements")),
74 _area(coupledValue(
"area")),
75 _Ay(coupledValue(
"Ay")),
76 _Az(coupledValue(
"Az")),
77 _Iy(coupledValue(
"Iy")),
78 _Iz(coupledValue(
"Iz")),
79 _Ix(_has_Ix ? coupledValue(
"Ix") : _zero),
80 _original_local_config(declareRestartableData<
RankTwoTensor>(
"original_local_config")),
81 _original_length(declareProperty<Real>(
"original_length")),
82 _total_rotation(declareProperty<
RankTwoTensor>(
"total_rotation")),
83 _total_disp_strain(declareProperty<RealVectorValue>(
"total_disp_strain")),
84 _total_rot_strain(declareProperty<RealVectorValue>(
"total_rot_strain")),
85 _total_disp_strain_old(getMaterialPropertyOld<RealVectorValue>(
"total_disp_strain")),
86 _total_rot_strain_old(getMaterialPropertyOld<RealVectorValue>(
"total_rot_strain")),
87 _mech_disp_strain_increment(declareProperty<RealVectorValue>(
"mech_disp_strain_increment")),
88 _mech_rot_strain_increment(declareProperty<RealVectorValue>(
"mech_rot_strain_increment")),
89 _material_stiffness(getMaterialPropertyByName<RealVectorValue>(
"material_stiffness")),
94 _K22_cross(declareProperty<
RankTwoTensor>(
"Jacobian_22_cross")),
95 _large_strain(getParam<bool>(
"large_strain")),
96 _eigenstrain_names(getParam<
std::vector<MaterialPropertyName>>(
"eigenstrain_names")),
97 _disp_eigenstrain(_eigenstrain_names.size()),
98 _rot_eigenstrain(_eigenstrain_names.size()),
99 _disp_eigenstrain_old(_eigenstrain_names.size()),
100 _rot_eigenstrain_old(_eigenstrain_names.size()),
101 _nonlinear_sys(_fe_problem.getNonlinearSystemBase(0)),
102 _soln_disp_index_0(_ndisp),
103 _soln_disp_index_1(_ndisp),
104 _soln_rot_index_0(_ndisp),
105 _soln_rot_index_1(_ndisp),
106 _initial_rotation(declareProperty<
RankTwoTensor>(
"initial_rotation")),
107 _effective_stiffness(declareProperty<Real>(
"effective_stiffness")),
108 _prefactor_function(isParamValid(
"elasticity_prefactor") ? &getFunction(
"elasticity_prefactor")
113 mooseError(
"ComputeIncrementalBeamStrain: The number of variables supplied in 'displacements' "
114 "and 'rotations' must match.");
117 for (
unsigned int i = 0; i <
_ndisp; ++i)
127 mooseError(
"ComputeIncrementalBeamStrain: Large strain calculation does not currently "
128 "support asymmetric beam configurations with non-zero first or third moments of "
146 const std::vector<RealGradient> * orientation =
148 RealGradient x_orientation = (*orientation)[0];
149 x_orientation /= x_orientation.
norm();
151 RealGradient y_orientation = getParam<RealGradient>(
"y_orientation");
152 y_orientation /= y_orientation.norm();
153 Real sum = x_orientation(0) * y_orientation(0) + x_orientation(1) * y_orientation(1) +
154 x_orientation(2) * y_orientation(2);
156 if (std::abs(sum) > 1e-4)
157 mooseError(
"ComputeIncrementalBeamStrain: y_orientation should be perpendicular to "
158 "the axis of the beam.");
161 RealGradient z_orientation;
162 z_orientation(0) = (x_orientation(1) * y_orientation(2) - x_orientation(2) * y_orientation(1));
163 z_orientation(1) = (x_orientation(2) * y_orientation(0) - x_orientation(0) * y_orientation(2));
164 z_orientation(2) = (x_orientation(0) * y_orientation(1) - x_orientation(1) * y_orientation(0));
179 RealVectorValue temp;
353 const Real A_avg = (
_area[0] +
_area[1]) / 2.0;
354 const Real Iy_avg = (
_Iy[0] +
_Iy[1]) / 2.0;
355 const Real Iz_avg = (
_Iz[0] +
_Iz[1]) / 2.0;
356 Real Ix_avg = (
_Ix[0] +
_Ix[1]) / 2.0;
358 Ix_avg = Iy_avg + Iz_avg;
374 K21_local(2, 1) = shear_modulus * A_avg * 0.5;
375 K21_local(1, 2) = -shear_modulus * A_avg * 0.5;
390 K22_local_cross(1, 1) += 2.0 * shear_modulus * A_avg *
_original_length[0] / 4.0;
391 K22_local_cross(2, 2) += 2.0 * shear_modulus * A_avg *
_original_length[0] / 4.0;
415 k1_large_11(0, 1) = k1_large_11(1, 0);
426 k1_large_11(0, 2) = k1_large_11(2, 0);
427 k1_large_11(1, 2) = k1_large_11(2, 1);
449 k1_large_21(0, 1) = k1_large_21(1, 0);
455 k1_large_21(0, 2) = k1_large_21(2, 0);
456 k1_large_21(1, 2) = k1_large_21(2, 1);
477 k1_large_22(0, 1) = k1_large_22(1, 0);
487 k1_large_22(0, 2) = k1_large_22(2, 0);
488 k1_large_22(1, 2) = k1_large_22(2, 1);
508 k2_large_11(0, 1) = k2_large_11(1, 0);
512 k2_large_11(0, 2) = k2_large_11(2, 0);
524 k2_large_22(0, 1) = k2_large_22(1, 0);
529 k2_large_22(0, 2) = k2_large_22(2, 0);
547 k3_large_22(0, 1) = k3_large_22(1, 0);
553 k3_large_22(0, 2) = k3_large_22(2, 0);
558 k3_large_22 *= 1.0 / 16.0;
562 k3_large_21(0, 0) = -1.0 / 6.0 *