230 normal /= normal.
norm();
238 for (
unsigned int k = 0; k <
_nodes.size(); ++k)
243 if (MooseUtils::absoluteFuzzyEqual(
_v1[k].norm(), 0.0, 1e-6))
254 mooseError(
"InertialForceShell: Time derivative of solution (`u_dot`) is not stored. Please "
255 "set uDotRequested() to true in FEProblemBase before requesting `u_dot`.");
258 mooseError(
"InertialForceShell: Old time derivative of solution (`u_dot_old`) is not "
259 "stored. Please set uDotOldRequested() to true in FEProblemBase before "
260 "requesting `u_dot_old`.");
263 mooseError(
"InertialForceShell: Second time derivative of solution (`u_dotdot`) is not "
264 "stored. Please set uDotDotRequested() to true in FEProblemBase before "
265 "requesting `u_dotdot`.");
267 const NumericVector<Number> & vel = *nonlinear_sys.
solutionUDot();
268 const NumericVector<Number> & old_vel = *nonlinear_sys.
solutionUDotOld();
269 const NumericVector<Number> & accel = *nonlinear_sys.
solutionUDotDot();
271 for (
unsigned int i = 0; i <
_ndisp; ++i)
279 _vel.
pos[0](i) = vel(dof_index_0);
280 _vel.
pos[1](i) = vel(dof_index_1);
281 _vel.
pos[2](i) = vel(dof_index_2);
282 _vel.
pos[3](i) = vel(dof_index_3);
295 for (
unsigned int i = 0; i <
_nrot; ++i)
303 _vel.
rot[0](i) = vel(dof_index_0);
304 _vel.
rot[1](i) = vel(dof_index_1);
305 _vel.
rot[2](i) = vel(dof_index_2);
306 _vel.
rot[3](i) = vel(dof_index_3);
381 for (
unsigned int i = 0; i < 3; i++)
471 std::vector<ADDenseVector> local_acc;
473 local_acc[0].resize(3);
474 local_acc[1].resize(3);
475 local_acc[2].resize(3);
476 local_acc[3].resize(3);
478 local_acc[0] = local_accel_dv_0;
479 local_acc[1] = local_accel_dv_1;
480 local_acc[2] = local_accel_dv_2;
481 local_acc[3] = local_accel_dv_3;
483 std::vector<ADDenseVector> local_rot_acc;
485 local_rot_acc[0].resize(3);
486 local_rot_acc[1].resize(3);
487 local_rot_acc[2].resize(3);
488 local_rot_acc[3].resize(3);
489 local_rot_acc[0] = local_rot_accel_dv_0;
490 local_rot_acc[1] = local_rot_accel_dv_1;
491 local_rot_acc[2] = local_rot_accel_dv_2;
492 local_rot_acc[3] = local_rot_accel_dv_3;
496 std::vector<ADDenseVector> local_vel;
498 local_vel[0].resize(3);
499 local_vel[1].resize(3);
500 local_vel[2].resize(3);
501 local_vel[3].resize(3);
512 local_vel_dv_0.
add(1.0, local_old_vel_dv_0);
513 local_vel_dv_1.
add(1.0, local_old_vel_dv_1);
514 local_vel_dv_2.
add(1.0, local_old_vel_dv_2);
515 local_vel_dv_3.
add(1.0, local_old_vel_dv_3);
517 local_vel[0] = local_vel_dv_0;
518 local_vel[1] = local_vel_dv_1;
519 local_vel[2] = local_vel_dv_2;
520 local_vel[3] = local_vel_dv_3;
522 std::vector<ADDenseVector> local_rot_vel;
524 local_rot_vel[0].resize(3);
525 local_rot_vel[1].resize(3);
526 local_rot_vel[2].resize(3);
527 local_rot_vel[3].resize(3);
538 local_rot_vel_dv_0.
add(1.0, local_old_rot_vel_dv_0);
539 local_rot_vel_dv_1.
add(1.0, local_old_rot_vel_dv_1);
540 local_rot_vel_dv_2.
add(1.0, local_old_rot_vel_dv_2);
541 local_rot_vel_dv_3.
add(1.0, local_old_rot_vel_dv_3);
543 local_rot_vel[0] = local_rot_vel_dv_0;
544 local_rot_vel[1] = local_rot_vel_dv_1;
545 local_rot_vel[2] = local_rot_vel_dv_2;
546 local_rot_vel[3] = local_rot_vel_dv_3;
549 FEType fe_type(Utility::string_to_enum<Order>(
"First"),
550 Utility::string_to_enum<FEFamily>(
"LAGRANGE"));
554 _phi_map = fe->get_fe_map().get_phi_map();
559 std::vector<const Node *> nodes;
560 for (
unsigned int i = 0; i < 4; ++i)
563 for (
unsigned int i = 0; i <
_ndisp; i++)
564 for (
unsigned int j = 0; j < 4; j++)
567 for (
unsigned int i = 0; i <
_nrot; i++)
568 for (
unsigned int j = 0; j < 4; j++)
571 for (
unsigned int qp_xy = 0; qp_xy <
_2d_points.size(); ++qp_xy)
576 for (
unsigned int dim = 0;
dim < 3;
dim++)
584 if (
_eta[0] > TOLERANCE * TOLERANCE)
597 if (
_eta[0] > TOLERANCE * TOLERANCE)
609 if (
_eta[0] > TOLERANCE * TOLERANCE)
622 if (
_eta[0] > TOLERANCE * TOLERANCE)
634 momentInertia(0) = (G1(0, 0) * (local_rot_acc[0](0) +
_eta[0] * local_rot_vel[0](0)) +
635 G1(0, 1) * (local_rot_acc[0](1) +
_eta[0] * local_rot_vel[0](1)) +
636 G2(0, 0) * (local_rot_acc[1](0) +
_eta[0] * local_rot_vel[1](0)) +
637 G2(0, 1) * (local_rot_acc[1](1) +
_eta[0] * local_rot_vel[1](1)) +
638 G3(0, 0) * (local_rot_acc[2](0) +
_eta[0] * local_rot_vel[2](0)) +
639 G3(0, 1) * (local_rot_acc[2](1) +
_eta[0] * local_rot_vel[2](1)) +
640 G4(0, 0) * (local_rot_acc[3](0) +
_eta[0] * local_rot_vel[3](0)) +
641 G4(0, 1) * (local_rot_acc[3](1) +
_eta[0] * local_rot_vel[3](1)));
643 momentInertia(1) = (G1(1, 0) * (local_rot_acc[0](0) +
_eta[0] * local_rot_vel[0](0)) +
644 G1(1, 1) * (local_rot_acc[0](1) +
_eta[0] * local_rot_vel[0](1)) +
645 G2(1, 0) * (local_rot_acc[1](0) +
_eta[0] * local_rot_vel[1](0)) +
646 G2(1, 1) * (local_rot_acc[1](1) +
_eta[0] * local_rot_vel[1](1)) +
647 G3(1, 0) * (local_rot_acc[2](0) +
_eta[0] * local_rot_vel[2](0)) +
648 G3(1, 1) * (local_rot_acc[2](1) +
_eta[0] * local_rot_vel[2](1)) +
649 G4(1, 0) * (local_rot_acc[3](0) +
_eta[0] * local_rot_vel[3](0)) +
650 G4(1, 1) * (local_rot_acc[3](1) +
_eta[0] * local_rot_vel[3](1)));
652 momentInertia(2) = (G1(2, 0) * (local_rot_acc[0](0) +
_eta[0] * local_rot_vel[0](0)) +
653 G1(2, 1) * (local_rot_acc[0](1) +
_eta[0] * local_rot_vel[0](1)) +
654 G2(2, 0) * (local_rot_acc[1](0) +
_eta[0] * local_rot_vel[1](0)) +
655 G2(2, 1) * (local_rot_acc[1](1) +
_eta[0] * local_rot_vel[1](1)) +
656 G3(2, 0) * (local_rot_acc[2](0) +
_eta[0] * local_rot_vel[2](0)) +
657 G3(2, 1) * (local_rot_acc[2](1) +
_eta[0] * local_rot_vel[2](1)) +
658 G4(2, 0) * (local_rot_acc[3](0) +
_eta[0] * local_rot_vel[3](0)) +
659 G4(2, 1) * (local_rot_acc[3](1) +
_eta[0] * local_rot_vel[3](1)));
662 (G1T(0, 0) * momentInertia(0) + G1T(0, 1) * momentInertia(1) +
663 G1T(0, 2) * momentInertia(2));
666 (G1T(1, 0) * momentInertia(0) + G1T(1, 1) * momentInertia(1) +
667 G1T(1, 2) * momentInertia(2));
670 (G1T(0, 0) * momentInertia(0) + G1T(0, 1) * momentInertia(1) +
671 G2T(0, 2) * momentInertia(2));
674 (G1T(1, 0) * momentInertia(0) + G1T(1, 1) * momentInertia(1) +
675 G2T(1, 2) * momentInertia(2));
678 (G1T(0, 0) * momentInertia(0) + G1T(0, 1) * momentInertia(1) +
679 G3T(0, 2) * momentInertia(2));
682 (G1T(1, 0) * momentInertia(0) + G1T(1, 1) * momentInertia(1) +
683 G3T(1, 2) * momentInertia(2));
686 (G1T(0, 0) * momentInertia(0) + G1T(0, 1) * momentInertia(1) +
687 G4T(0, 2) * momentInertia(2));
690 (G1T(1, 0) * momentInertia(0) + G1T(1, 1) * momentInertia(1) +
691 G4T(1, 2) * momentInertia(2));