7 use hecmw,
only : kint, kreal
58 (etype, nn, ndof, ecoord, gausses, stiff, thick, mixflag, nddisp)
67 integer(kind = kint),
intent(in) :: etype
68 integer(kind = kint),
intent(in) :: nn, mixflag
69 integer(kind = kint),
intent(in) :: ndof
70 real(kind = kreal),
intent(in) :: ecoord(3, nn)
72 real(kind = kreal),
intent(out) :: stiff(:, :)
73 real(kind = kreal),
intent(in) :: thick
75 real(kind = kreal),
intent(in),
optional :: nddisp(3, nn)
79 integer :: flag, flag_dof
85 integer :: npoints_tying(3)
88 integer :: isize, jsize
89 integer :: jsize1, jsize2, jsize3, &
90 jsize4, jsize5, jsize6
91 integer :: n_layer,n_totlyr, sstable(24)
93 real(kind = kreal) :: d(5, 5), b(5, ndof*nn), db(5, ndof*nn)
94 real(kind = kreal) :: tmpstiff(ndof*nn, ndof*nn)
95 real(kind = kreal) :: elem(3, nn)
96 real(kind = kreal) :: unode(3, nn)
97 real(kind = kreal) :: xi_lx, eta_lx, zeta_ly
98 real(kind = kreal) :: w_w_lx, w_ly
99 real(kind = kreal) :: b_di(5, ndof*nn, 6, 3, 7)
100 real(kind = kreal) :: b1(3, ndof*nn), b2(3, ndof*nn), &
102 real(kind = kreal) :: naturalcoord(2)
103 real(kind = kreal) :: tpcoord(6, 2, 3)
104 real(kind = kreal) :: nncoord(nn, 2)
105 real(kind = kreal) :: shapefunc(nn)
106 real(kind = kreal) :: shapederiv(nn, 2)
107 real(kind = kreal) :: aa1(3), aa2(3), aa3(3)
108 real(kind = kreal) :: bb1(3), bb2(3), bb3(3)
109 real(kind = kreal) :: cc1(3), cc2(3)
110 real(kind = kreal) :: alpha
111 real(kind = kreal) :: xxi_lx, eeta_lx
112 real(kind = kreal) :: xxi_di(6, 3), eeta_di(6, 3)
113 real(kind = kreal) :: h(nn, 3)
114 real(kind = kreal) :: v1(3, nn), v2(3, nn), v3(3, nn)
115 real(kind = kreal) :: v1_i(3), v2_i(3), v3_i(3)
116 real(kind = kreal) :: v1_abs, v2_abs, v3_abs
117 real(kind = kreal) :: a_over_2_v3(3, nn)
118 real(kind = kreal) :: u_rot(3, nn)
119 real(kind = kreal) :: dudxi_rot(3, nn), dudeta_rot(3, nn), &
121 real(kind = kreal) :: g1(3), g2(3), g3(3)
122 real(kind = kreal) :: g3_abs
123 real(kind = kreal) :: e_0(3)
124 real(kind = kreal) :: cg1(3), cg2(3), cg3(3)
125 real(kind = kreal) :: det
126 real(kind = kreal) :: det_cg3(3)
127 real(kind = kreal) :: det_inv
128 real(kind = kreal) :: det_cg3_abs
129 real(kind = kreal) :: w_w_w_det
130 real(kind = kreal) :: e1_hat(3), e2_hat(3), e3_hat(3)
131 real(kind = kreal) :: e1_hat_abs, e2_hat_abs
132 real(kind = kreal) :: cv12(ndof*nn), cv13(ndof*nn), &
133 cv21(ndof*nn), cv23(ndof*nn), &
134 cv31(ndof*nn), cv32(ndof*nn)
135 real(kind = kreal) :: cv_theta(ndof*nn), cv_w(ndof*nn)
136 real(kind = kreal) :: cv(ndof*nn)
137 real(kind = kreal) :: sumlyr
181 if(
present( nddisp ) )
then
183 unode(:, 1:nn) = nddisp(:, :)
189 flag = gausses(1)%pMaterial%nlgeom_flag
191 if( .not.
present( nddisp ) ) flag = infinitesimal
195 elem(:, :) = ecoord(:, :)
199 tmpstiff(:, :) = 0.0d0
215 tpcoord(1, 1, 1) = 0.0d0
216 tpcoord(2, 1, 1) = 1.0d0
217 tpcoord(3, 1, 1) = 0.0d0
218 tpcoord(4, 1, 1) = -1.0d0
220 tpcoord(1, 2, 1) = -1.0d0
221 tpcoord(2, 2, 1) = 0.0d0
222 tpcoord(3, 2, 1) = 1.0d0
223 tpcoord(4, 2, 1) = 0.0d0
233 tpcoord(1, 1, 1) = -1.0d0*dsqrt( 1.0d0/3.0d0 )
234 tpcoord(2, 1, 1) = 1.0d0*dsqrt( 1.0d0/3.0d0 )
235 tpcoord(3, 1, 1) = 1.0d0*dsqrt( 1.0d0/3.0d0 )
236 tpcoord(4, 1, 1) = -1.0d0*dsqrt( 1.0d0/3.0d0 )
237 tpcoord(5, 1, 1) = 1.0d0*dsqrt( 1.0d0/3.0d0 )
238 tpcoord(6, 1, 1) = -1.0d0*dsqrt( 1.0d0/3.0d0 )
240 tpcoord(1, 2, 1) = -1.0d0*dsqrt( 3.0d0/5.0d0 )
241 tpcoord(2, 2, 1) = -1.0d0*dsqrt( 3.0d0/5.0d0 )
242 tpcoord(3, 2, 1) = 1.0d0*dsqrt( 3.0d0/5.0d0 )
243 tpcoord(4, 2, 1) = 1.0d0*dsqrt( 3.0d0/5.0d0 )
244 tpcoord(5, 2, 1) = 0.0d0*dsqrt( 3.0d0/5.0d0 )
245 tpcoord(6, 2, 1) = 0.0d0*dsqrt( 3.0d0/5.0d0 )
248 tpcoord(1, 1, 2) = -1.0d0*dsqrt( 3.0d0/5.0d0 )
249 tpcoord(2, 1, 2) = 0.0d0*dsqrt( 3.0d0/5.0d0 )
250 tpcoord(3, 1, 2) = 1.0d0*dsqrt( 3.0d0/5.0d0 )
251 tpcoord(4, 1, 2) = 1.0d0*dsqrt( 3.0d0/5.0d0 )
252 tpcoord(5, 1, 2) = 0.0d0*dsqrt( 3.0d0/5.0d0 )
253 tpcoord(6, 1, 2) = -1.0d0*dsqrt( 3.0d0/5.0d0 )
255 tpcoord(1, 2, 2) = -1.0d0*dsqrt( 1.0d0/3.0d0 )
256 tpcoord(2, 2, 2) = -1.0d0*dsqrt( 1.0d0/3.0d0 )
257 tpcoord(3, 2, 2) = -1.0d0*dsqrt( 1.0d0/3.0d0 )
258 tpcoord(4, 2, 2) = 1.0d0*dsqrt( 1.0d0/3.0d0 )
259 tpcoord(5, 2, 2) = 1.0d0*dsqrt( 1.0d0/3.0d0 )
260 tpcoord(6, 2, 2) = 1.0d0*dsqrt( 1.0d0/3.0d0 )
263 tpcoord(1, 1, 3) = -1.0d0*dsqrt( 1.0d0/3.0d0 )
264 tpcoord(2, 1, 3) = 1.0d0*dsqrt( 1.0d0/3.0d0 )
265 tpcoord(3, 1, 3) = 1.0d0*dsqrt( 1.0d0/3.0d0 )
266 tpcoord(4, 1, 3) = -1.0d0*dsqrt( 1.0d0/3.0d0 )
268 tpcoord(1, 2, 3) = -1.0d0*dsqrt( 1.0d0/3.0d0 )
269 tpcoord(2, 2, 3) = -1.0d0*dsqrt( 1.0d0/3.0d0 )
270 tpcoord(3, 2, 3) = 1.0d0*dsqrt( 1.0d0/3.0d0 )
271 tpcoord(4, 2, 3) = 1.0d0*dsqrt( 1.0d0/3.0d0 )
276 xxi_di(1, 1) = -1.0d0
279 xxi_di(4, 1) = -1.0d0
281 xxi_di(6, 1) = -1.0d0
283 eeta_di(1, 1) = -1.0d0
284 eeta_di(2, 1) = -1.0d0
285 eeta_di(3, 1) = 1.0d0
286 eeta_di(4, 1) = 1.0d0
287 eeta_di(5, 1) = 0.0d0
288 eeta_di(6, 1) = 0.0d0
291 xxi_di(1, 2) = -1.0d0
296 xxi_di(6, 2) = -1.0d0
298 eeta_di(1, 2) = -1.0d0
299 eeta_di(2, 2) = -1.0d0
300 eeta_di(3, 2) = -1.0d0
301 eeta_di(4, 2) = 1.0d0
302 eeta_di(5, 2) = 1.0d0
303 eeta_di(6, 2) = 1.0d0
313 tpcoord(1, 1, 1) = 0.5d0
314 tpcoord(2, 1, 1) = 0.0d0
315 tpcoord(3, 1, 1) = 0.5d0
317 tpcoord(1, 2, 1) = 0.0d0
318 tpcoord(2, 2, 1) = 0.5d0
319 tpcoord(3, 2, 1) = 0.5d0
329 naturalcoord(1) = 0.0d0
330 naturalcoord(2) = 0.0d0
343 g1(i) = g1(i)+shapederiv(na, 1) &
360 naturalcoord(1) = nncoord(nb, 1)
361 naturalcoord(2) = nncoord(nb, 2)
375 g1(i) = g1(i)+shapederiv(na, 1) &
377 g2(i) = g2(i)+shapederiv(na, 2) &
386 det_cg3(1) = g1(2)*g2(3)-g1(3)*g2(2)
387 det_cg3(2) = g1(3)*g2(1)-g1(1)*g2(3)
388 det_cg3(3) = g1(1)*g2(2)-g1(2)*g2(1)
390 det_cg3_abs = dsqrt( det_cg3(1)*det_cg3(1) &
391 +det_cg3(2)*det_cg3(2) &
392 +det_cg3(3)*det_cg3(3) )
394 v3(1, nb) = det_cg3(1)/det_cg3_abs
395 v3(2, nb) = det_cg3(2)/det_cg3_abs
396 v3(3, nb) = det_cg3(3)/det_cg3_abs
400 v2(1, nb) = v3(2, nb)*e_0(3)-v3(3, nb)*e_0(2)
401 v2(2, nb) = v3(3, nb)*e_0(1)-v3(1, nb)*e_0(3)
402 v2(3, nb) = v3(1, nb)*e_0(2)-v3(2, nb)*e_0(1)
404 v2_abs = dsqrt( v2(1, nb)*v2(1, nb) &
405 +v2(2, nb)*v2(2, nb) &
406 +v2(3, nb)*v2(3, nb) )
408 if( v2_abs .GT. 1.0d-15 )
then
410 v2(1, nb) = v2(1, nb)/v2_abs
411 v2(2, nb) = v2(2, nb)/v2_abs
412 v2(3, nb) = v2(3, nb)/v2_abs
414 v1(1, nb) = v2(2, nb)*v3(3, nb) &
416 v1(2, nb) = v2(3, nb)*v3(1, nb) &
418 v1(3, nb) = v2(1, nb)*v3(2, nb) &
421 v1_abs = dsqrt( v1(1, nb)*v1(1, nb) &
422 +v1(2, nb)*v1(2, nb) &
423 +v1(3, nb)*v1(3, nb) )
425 v1(1, nb) = v1(1, nb)/v1_abs
426 v1(2, nb) = v1(2, nb)/v1_abs
427 v1(3, nb) = v1(3, nb)/v1_abs
443 v3(1, nb) = v1(2, nb)*v2(3, nb) &
445 v3(2, nb) = v1(3, nb)*v2(1, nb) &
447 v3(3, nb) = v1(1, nb)*v2(2, nb) &
450 v3_abs = dsqrt( v3(1, nb)*v3(1, nb) &
451 +v3(2, nb)*v3(2, nb) &
452 +v3(3, nb)*v3(3, nb) )
454 v3(1, nb) = v3(1, nb)/v3_abs
455 v3(2, nb) = v3(2, nb)/v3_abs
456 v3(3, nb) = v3(3, nb)/v3_abs
460 a_over_2_v3(1, nb) = 0.5d0*thick*v3(1, nb)
461 a_over_2_v3(2, nb) = 0.5d0*thick*v3(2, nb)
462 a_over_2_v3(3, nb) = 0.5d0*thick*v3(3, nb)
473 n_totlyr = gausses(1)%pMaterial%totallyr
474 do n_layer=1,n_totlyr
500 do ip = 1, npoints_tying(it)
504 naturalcoord(1) = tpcoord(ip, 1, it)
505 naturalcoord(2) = tpcoord(ip, 2, it)
519 *( zeta_ly*a_over_2_v3(i, na) )
522 = shapederiv(na, 1) &
523 *( zeta_ly*a_over_2_v3(i, na) )
525 = shapederiv(na, 2) &
526 *( zeta_ly*a_over_2_v3(i, na) )
529 *( a_over_2_v3(i, na) )
546 g1(i) = g1(i)+shapederiv(na, 1) &
549 g2(i) = g2(i)+shapederiv(na, 2) &
552 g3(i) = g3(i)+dudzeta_rot(i, na)
563 jsize1 = ndof*(nb-1)+1
564 jsize2 = ndof*(nb-1)+2
565 jsize3 = ndof*(nb-1)+3
566 jsize4 = ndof*(nb-1)+4
567 jsize5 = ndof*(nb-1)+5
568 jsize6 = ndof*(nb-1)+6
570 aa1(1) = dudxi_rot(2, nb) *g1(3)-dudxi_rot(3, nb) *g1(2)
571 aa1(2) = dudxi_rot(3, nb) *g1(1)-dudxi_rot(1, nb) *g1(3)
572 aa1(3) = dudxi_rot(1, nb) *g1(2)-dudxi_rot(2, nb) *g1(1)
574 aa2(1) = dudxi_rot(2, nb) *g2(3)-dudxi_rot(3, nb) *g2(2)
575 aa2(2) = dudxi_rot(3, nb) *g2(1)-dudxi_rot(1, nb) *g2(3)
576 aa2(3) = dudxi_rot(1, nb) *g2(2)-dudxi_rot(2, nb) *g2(1)
578 aa3(1) = dudxi_rot(2, nb) *g3(3)-dudxi_rot(3, nb) *g3(2)
579 aa3(2) = dudxi_rot(3, nb) *g3(1)-dudxi_rot(1, nb) *g3(3)
580 aa3(3) = dudxi_rot(1, nb) *g3(2)-dudxi_rot(2, nb) *g3(1)
582 bb1(1) = dudeta_rot(2, nb) *g1(3)-dudeta_rot(3, nb) *g1(2)
583 bb1(2) = dudeta_rot(3, nb) *g1(1)-dudeta_rot(1, nb) *g1(3)
584 bb1(3) = dudeta_rot(1, nb) *g1(2)-dudeta_rot(2, nb) *g1(1)
586 bb2(1) = dudeta_rot(2, nb) *g2(3)-dudeta_rot(3, nb) *g2(2)
587 bb2(2) = dudeta_rot(3, nb) *g2(1)-dudeta_rot(1, nb) *g2(3)
588 bb2(3) = dudeta_rot(1, nb) *g2(2)-dudeta_rot(2, nb) *g2(1)
590 bb3(1) = dudeta_rot(2, nb) *g3(3)-dudeta_rot(3, nb) *g3(2)
591 bb3(2) = dudeta_rot(3, nb) *g3(1)-dudeta_rot(1, nb) *g3(3)
592 bb3(3) = dudeta_rot(1, nb) *g3(2)-dudeta_rot(2, nb) *g3(1)
594 cc1(1) = dudzeta_rot(2, nb)*g1(3)-dudzeta_rot(3, nb)*g1(2)
595 cc1(2) = dudzeta_rot(3, nb)*g1(1)-dudzeta_rot(1, nb)*g1(3)
596 cc1(3) = dudzeta_rot(1, nb)*g1(2)-dudzeta_rot(2, nb)*g1(1)
598 cc2(1) = dudzeta_rot(2, nb)*g2(3)-dudzeta_rot(3, nb)*g2(2)
599 cc2(2) = dudzeta_rot(3, nb)*g2(1)-dudzeta_rot(1, nb)*g2(3)
600 cc2(3) = dudzeta_rot(1, nb)*g2(2)-dudzeta_rot(2, nb)*g2(1)
602 b_di(1, jsize1, ip, it, ly) = shapederiv(nb, 1)*g1(1)
603 b_di(2, jsize1, ip, it, ly) = shapederiv(nb, 2)*g2(1)
604 b_di(3, jsize1, ip, it, ly) = shapederiv(nb, 1)*g2(1) &
605 +shapederiv(nb, 2)*g1(1)
606 b_di(4, jsize1, ip, it, ly) = shapederiv(nb, 2)*g3(1)
607 b_di(5, jsize1, ip, it, ly) = shapederiv(nb, 1)*g3(1)
609 b_di(1, jsize2, ip, it, ly) = shapederiv(nb, 1)*g1(2)
610 b_di(2, jsize2, ip, it, ly) = shapederiv(nb, 2)*g2(2)
611 b_di(3, jsize2, ip, it, ly) = shapederiv(nb, 1)*g2(2) &
612 +shapederiv(nb, 2)*g1(2)
613 b_di(4, jsize2, ip, it, ly) = shapederiv(nb, 2)*g3(2)
614 b_di(5, jsize2, ip, it, ly) = shapederiv(nb, 1)*g3(2)
616 b_di(1, jsize3, ip, it, ly) = shapederiv(nb, 1)*g1(3)
617 b_di(2, jsize3, ip, it, ly) = shapederiv(nb, 2)*g2(3)
618 b_di(3, jsize3, ip, it, ly) = shapederiv(nb, 1)*g2(3) &
619 +shapederiv(nb, 2)*g1(3)
620 b_di(4, jsize3, ip, it, ly) = shapederiv(nb, 2)*g3(3)
621 b_di(5, jsize3, ip, it, ly) = shapederiv(nb, 1)*g3(3)
623 b_di(1, jsize4, ip, it, ly) = aa1(1)
624 b_di(2, jsize4, ip, it, ly) = bb2(1)
625 b_di(3, jsize4, ip, it, ly) = aa2(1)+bb1(1)
626 b_di(4, jsize4, ip, it, ly) = bb3(1)+cc2(1)
627 b_di(5, jsize4, ip, it, ly) = aa3(1)+cc1(1)
629 b_di(1, jsize5, ip, it, ly) = aa1(2)
630 b_di(2, jsize5, ip, it, ly) = bb2(2)
631 b_di(3, jsize5, ip, it, ly) = aa2(2)+bb1(2)
632 b_di(4, jsize5, ip, it, ly) = bb3(2)+cc2(2)
633 b_di(5, jsize5, ip, it, ly) = aa3(2)+cc1(2)
635 b_di(1, jsize6, ip, it, ly) = aa1(3)
636 b_di(2, jsize6, ip, it, ly) = bb2(3)
637 b_di(3, jsize6, ip, it, ly) = aa2(3)+bb1(3)
638 b_di(4, jsize6, ip, it, ly) = bb3(3)+cc2(3)
639 b_di(5, jsize6, ip, it, ly) = aa3(3)+cc1(3)
653 sumlyr = sumlyr +2 *gausses(1)%pMaterial%shell_var(m)%weight
658 zeta_ly = -1 +sumlyr -gausses(1)%pMaterial%shell_var(n_layer)%weight*(1-
gauss1d2(1,ly))
664 zeta_ly = -1 +sumlyr -gausses(1)%pMaterial%shell_var(n_layer)%weight*(1-
gauss1d3(1,ly))
670 zeta_ly = -1 +sumlyr -gausses(1)%pMaterial%shell_var(n_layer)%weight*(1-
gauss1d2(1,ly))
684 xi_lx = naturalcoord(1)
685 eta_lx = naturalcoord(2)
703 v1_i(i) = v1_i(i)+shapefunc(na)*v1(i, na)
704 v2_i(i) = v2_i(i)+shapefunc(na)*v2(i, na)
705 v3_i(i) = v3_i(i)+shapefunc(na)*v3(i, na)
719 *( zeta_ly*a_over_2_v3(i, na) )
722 = shapederiv(na, 1) &
723 *( zeta_ly*a_over_2_v3(i, na) )
725 = shapederiv(na, 2) &
726 *( zeta_ly*a_over_2_v3(i, na) )
729 *( a_over_2_v3(i, na) )
746 g1(i) = g1(i)+shapederiv(na, 1) &
749 g2(i) = g2(i)+shapederiv(na, 2) &
752 g3(i) = g3(i)+dudzeta_rot(i, na)
761 det = g1(1)*( g2(2)*g3(3)-g2(3)*g3(2) ) &
762 +g1(2)*( g2(3)*g3(1)-g2(1)*g3(3) ) &
763 +g1(3)*( g2(1)*g3(2)-g2(2)*g3(1) )
771 *( g2(2)*g3(3)-g2(3)*g3(2) )
773 *( g2(3)*g3(1)-g2(1)*g3(3) )
775 *( g2(1)*g3(2)-g2(2)*g3(1) )
777 *( g3(2)*g1(3)-g3(3)*g1(2) )
779 *( g3(3)*g1(1)-g3(1)*g1(3) )
781 *( g3(1)*g1(2)-g3(2)*g1(1) )
783 *( g1(2)*g2(3)-g1(3)*g2(2) )
785 *( g1(3)*g2(1)-g1(1)*g2(3) )
787 *( g1(1)*g2(2)-g1(2)*g2(1) )
791 g3_abs = dsqrt( g3(1)*g3(1) &
799 e3_hat(1) = g3(1)/g3_abs
800 e3_hat(2) = g3(2)/g3_abs
801 e3_hat(3) = g3(3)/g3_abs
803 e1_hat(1) = g2(2)*e3_hat(3) &
805 e1_hat(2) = g2(3)*e3_hat(1) &
807 e1_hat(3) = g2(1)*e3_hat(2) &
809 e1_hat_abs = dsqrt( e1_hat(1)*e1_hat(1) &
810 +e1_hat(2)*e1_hat(2) &
811 +e1_hat(3)*e1_hat(3) )
812 e1_hat(1) = e1_hat(1)/e1_hat_abs
813 e1_hat(2) = e1_hat(2)/e1_hat_abs
814 e1_hat(3) = e1_hat(3)/e1_hat_abs
816 e2_hat(1) = e3_hat(2)*e1_hat(3) &
818 e2_hat(2) = e3_hat(3)*e1_hat(1) &
820 e2_hat(3) = e3_hat(1)*e1_hat(2) &
822 e2_hat_abs = dsqrt( e2_hat(1)*e2_hat(1) &
823 +e2_hat(2)*e2_hat(2) &
824 +e2_hat(3)*e2_hat(3) )
825 e2_hat(1) = e2_hat(1)/e2_hat_abs
826 e2_hat(2) = e2_hat(2)/e2_hat_abs
827 e2_hat(3) = e2_hat(3)/e2_hat_abs
832 (gausses(lx), shell, d, &
833 e1_hat, e2_hat, e3_hat, cg1, cg2, cg3, &
841 jsize1 = ndof*(nb-1)+1
842 jsize2 = ndof*(nb-1)+2
843 jsize3 = ndof*(nb-1)+3
844 jsize4 = ndof*(nb-1)+4
845 jsize5 = ndof*(nb-1)+5
846 jsize6 = ndof*(nb-1)+6
848 aa1(1) = dudxi_rot(2, nb) *g1(3)-dudxi_rot(3, nb) *g1(2)
849 aa1(2) = dudxi_rot(3, nb) *g1(1)-dudxi_rot(1, nb) *g1(3)
850 aa1(3) = dudxi_rot(1, nb) *g1(2)-dudxi_rot(2, nb) *g1(1)
852 aa2(1) = dudxi_rot(2, nb) *g2(3)-dudxi_rot(3, nb) *g2(2)
853 aa2(2) = dudxi_rot(3, nb) *g2(1)-dudxi_rot(1, nb) *g2(3)
854 aa2(3) = dudxi_rot(1, nb) *g2(2)-dudxi_rot(2, nb) *g2(1)
856 aa3(1) = dudxi_rot(2, nb) *g3(3)-dudxi_rot(3, nb) *g3(2)
857 aa3(2) = dudxi_rot(3, nb) *g3(1)-dudxi_rot(1, nb) *g3(3)
858 aa3(3) = dudxi_rot(1, nb) *g3(2)-dudxi_rot(2, nb) *g3(1)
860 bb1(1) = dudeta_rot(2, nb) *g1(3)-dudeta_rot(3, nb) *g1(2)
861 bb1(2) = dudeta_rot(3, nb) *g1(1)-dudeta_rot(1, nb) *g1(3)
862 bb1(3) = dudeta_rot(1, nb) *g1(2)-dudeta_rot(2, nb) *g1(1)
864 bb2(1) = dudeta_rot(2, nb) *g2(3)-dudeta_rot(3, nb) *g2(2)
865 bb2(2) = dudeta_rot(3, nb) *g2(1)-dudeta_rot(1, nb) *g2(3)
866 bb2(3) = dudeta_rot(1, nb) *g2(2)-dudeta_rot(2, nb) *g2(1)
868 bb3(1) = dudeta_rot(2, nb) *g3(3)-dudeta_rot(3, nb) *g3(2)
869 bb3(2) = dudeta_rot(3, nb) *g3(1)-dudeta_rot(1, nb) *g3(3)
870 bb3(3) = dudeta_rot(1, nb) *g3(2)-dudeta_rot(2, nb) *g3(1)
872 cc1(1) = dudzeta_rot(2, nb)*g1(3)-dudzeta_rot(3, nb)*g1(2)
873 cc1(2) = dudzeta_rot(3, nb)*g1(1)-dudzeta_rot(1, nb)*g1(3)
874 cc1(3) = dudzeta_rot(1, nb)*g1(2)-dudzeta_rot(2, nb)*g1(1)
876 cc2(1) = dudzeta_rot(2, nb)*g2(3)-dudzeta_rot(3, nb)*g2(2)
877 cc2(2) = dudzeta_rot(3, nb)*g2(1)-dudzeta_rot(1, nb)*g2(3)
878 cc2(3) = dudzeta_rot(1, nb)*g2(2)-dudzeta_rot(2, nb)*g2(1)
880 b(1, jsize1) = shapederiv(nb, 1)*g1(1)
881 b(2, jsize1) = shapederiv(nb, 2)*g2(1)
882 b(3, jsize1) = shapederiv(nb, 1)*g2(1) &
883 +shapederiv(nb, 2)*g1(1)
884 b(4, jsize1) = shapederiv(nb, 2)*g3(1)
885 b(5, jsize1) = shapederiv(nb, 1)*g3(1)
887 b(1, jsize2) = shapederiv(nb, 1)*g1(2)
888 b(2, jsize2) = shapederiv(nb, 2)*g2(2)
889 b(3, jsize2) = shapederiv(nb, 1)*g2(2) &
890 +shapederiv(nb, 2)*g1(2)
891 b(4, jsize2) = shapederiv(nb, 2)*g3(2)
892 b(5, jsize2) = shapederiv(nb, 1)*g3(2)
894 b(1, jsize3) = shapederiv(nb, 1)*g1(3)
895 b(2, jsize3) = shapederiv(nb, 2)*g2(3)
896 b(3, jsize3) = shapederiv(nb, 1)*g2(3) &
897 +shapederiv(nb, 2)*g1(3)
898 b(4, jsize3) = shapederiv(nb, 2)*g3(3)
899 b(5, jsize3) = shapederiv(nb, 1)*g3(3)
901 b(1, jsize4) = aa1(1)
902 b(2, jsize4) = bb2(1)
903 b(3, jsize4) = aa2(1)+bb1(1)
904 b(4, jsize4) = bb3(1)+cc2(1)
905 b(5, jsize4) = aa3(1)+cc1(1)
907 b(1, jsize5) = aa1(2)
908 b(2, jsize5) = bb2(2)
909 b(3, jsize5) = aa2(2)+bb1(2)
910 b(4, jsize5) = bb3(2)+cc2(2)
911 b(5, jsize5) = aa3(2)+cc1(2)
913 b(1, jsize6) = aa1(3)
914 b(2, jsize6) = bb2(3)
915 b(3, jsize6) = aa2(3)+bb1(3)
916 b(4, jsize6) = bb3(3)+cc2(3)
917 b(5, jsize6) = aa3(3)+cc1(3)
926 do jsize = 1, ndof*nn
933 = 0.5d0*( 1.0d0-xi_lx )*b_di(4, jsize, 4, 1, ly) &
934 +0.5d0*( 1.0d0+xi_lx )*b_di(4, jsize, 2, 1, ly)
937 = 0.5d0*( 1.0d0-eta_lx )*b_di(5, jsize, 1, 1, ly) &
938 +0.5d0*( 1.0d0+eta_lx )*b_di(5, jsize, 3, 1, ly)
945 xxi_lx = xi_lx /dsqrt( 1.0d0/3.0d0 )
946 eeta_lx = eta_lx/dsqrt( 3.0d0/5.0d0 )
948 do ip = 1, npoints_tying(1)
951 = ( 0.5d0*( 1.0d0+xxi_di(ip, 1)*xxi_lx ) ) &
952 *( ( 0.5d0*eeta_di(ip, 1)*eeta_lx ) &
953 *( 1.0d0+eeta_di(ip, 1)*eeta_lx ) &
954 +( 1.0d0-eeta_di(ip, 1)*eeta_di(ip, 1) ) &
955 *( 1.0d0-eeta_lx*eeta_lx ) )
959 xxi_lx = xi_lx /dsqrt( 3.0d0/5.0d0 )
960 eeta_lx = eta_lx/dsqrt( 1.0d0/3.0d0 )
962 do ip = 1, npoints_tying(2)
965 = ( ( 0.5d0*xxi_di(ip, 2) *xxi_lx ) &
966 *( 1.0d0+xxi_di(ip, 2) *xxi_lx ) &
967 +( 1.0d0-xxi_di(ip, 2) *xxi_di(ip, 2) ) &
968 *( 1.0d0-xxi_lx*xxi_lx ) ) &
969 *( 0.5d0*( 1.0d0+eeta_di(ip, 2)*eeta_lx ) )
973 xxi_lx = xi_lx /dsqrt( 1.0d0/3.0d0 )
974 eeta_lx = eta_lx/dsqrt( 1.0d0/3.0d0 )
976 do ip = 1, npoints_tying(3)
979 = ( 0.5d0*( 1.0d0+xxi_di(ip, 1)*xxi_lx ) ) &
980 *( 0.5d0*( 1.0d0+eeta_di(ip, 1)*eeta_lx ) )
984 do jsize = 1, ndof*nn
992 do ip = 1, npoints_tying(1)
996 = b(1, jsize)+h(ip, 1)*b_di(1, jsize, ip, 1, ly)
999 = b(5, jsize)+h(ip, 1)*b_di(5, jsize, ip, 1, ly)
1003 do ip = 1, npoints_tying(2)
1007 = b(2, jsize)+h(ip, 2)*b_di(2, jsize, ip, 2, ly)
1010 = b(4, jsize)+h(ip, 2)*b_di(4, jsize, ip, 2, ly)
1014 do ip = 1, npoints_tying(3)
1018 = b(3, jsize)+h(ip, 3)*b_di(3, jsize, ip, 3, ly)
1027 do jsize = 1, ndof*nn
1034 = ( 1.0d0-xi_lx )*b_di(4, jsize, 2, 1, ly) &
1035 +xi_lx *b_di(5, jsize, 1, 1, ly) &
1036 +xi_lx *( b_di(4, jsize, 3, 1, ly) &
1037 -b_di(5, jsize, 3, 1, ly) )
1041 = eta_lx*b_di(4, jsize, 2, 1, ly) &
1042 +( 1.0d0-eta_lx )*b_di(5, jsize, 1, 1, ly) &
1043 -eta_lx*( b_di(4, jsize, 3, 1, ly) &
1044 -b_di(5, jsize, 3, 1, ly) )
1052 w_w_w_det = w_w_lx*w_ly*det
1056 db(1:5, 1:ndof*nn) = matmul( d, b(1:5, 1:ndof*nn ) )
1062 tmpstiff(isize, jsize) &
1063 = tmpstiff(isize, jsize) &
1064 +w_w_w_det*gausses(1)%pMaterial%shell_var(n_layer)%weight*dot_product( b(:, isize), db(:, jsize) )
1073 jsize1 = ndof*(nb-1)+1
1074 jsize2 = ndof*(nb-1)+2
1075 jsize3 = ndof*(nb-1)+3
1076 jsize4 = ndof*(nb-1)+4
1077 jsize5 = ndof*(nb-1)+5
1078 jsize6 = ndof*(nb-1)+6
1080 b1(1, jsize1) = shapederiv(nb, 1)
1081 b1(2, jsize1) = 0.0d0
1082 b1(3, jsize1) = 0.0d0
1083 b1(1, jsize2) = 0.0d0
1084 b1(2, jsize2) = shapederiv(nb, 1)
1085 b1(3, jsize2) = 0.0d0
1086 b1(1, jsize3) = 0.0d0
1087 b1(2, jsize3) = 0.0d0
1088 b1(3, jsize3) = shapederiv(nb, 1)
1089 b1(1, jsize4) = 0.0d0
1090 b1(2, jsize4) = -dudxi_rot(3, nb)
1091 b1(3, jsize4) = dudxi_rot(2, nb)
1092 b1(1, jsize5) = dudxi_rot(3, nb)
1093 b1(2, jsize5) = 0.0d0
1094 b1(3, jsize5) = -dudxi_rot(1, nb)
1095 b1(1, jsize6) = -dudxi_rot(2, nb)
1096 b1(2, jsize6) = dudxi_rot(1, nb)
1097 b1(3, jsize6) = 0.0d0
1099 b2(1, jsize1) = shapederiv(nb, 2)
1100 b2(2, jsize1) = 0.0d0
1101 b2(3, jsize1) = 0.0d0
1102 b2(1, jsize2) = 0.0d0
1103 b2(2, jsize2) = shapederiv(nb, 2)
1104 b2(3, jsize2) = 0.0d0
1105 b2(1, jsize3) = 0.0d0
1106 b2(2, jsize3) = 0.0d0
1107 b2(3, jsize3) = shapederiv(nb, 2)
1108 b2(1, jsize4) = 0.0d0
1109 b2(2, jsize4) = -dudeta_rot(3, nb)
1110 b2(3, jsize4) = dudeta_rot(2, nb)
1111 b2(1, jsize5) = dudeta_rot(3, nb)
1112 b2(2, jsize5) = 0.0d0
1113 b2(3, jsize5) = -dudeta_rot(1, nb)
1114 b2(1, jsize6) = -dudeta_rot(2, nb)
1115 b2(2, jsize6) = dudeta_rot(1, nb)
1116 b2(3, jsize6) = 0.0d0
1118 b3(1, jsize1) = 0.0d0
1119 b3(2, jsize1) = 0.0d0
1120 b3(3, jsize1) = 0.0d0
1121 b3(1, jsize2) = 0.0d0
1122 b3(2, jsize2) = 0.0d0
1123 b3(3, jsize2) = 0.0d0
1124 b3(1, jsize3) = 0.0d0
1125 b3(2, jsize3) = 0.0d0
1126 b3(3, jsize3) = 0.0d0
1127 b3(1, jsize4) = 0.0d0
1128 b3(2, jsize4) = -dudzeta_rot(3, nb)
1129 b3(3, jsize4) = dudzeta_rot(2, nb)
1130 b3(1, jsize5) = dudzeta_rot(3, nb)
1131 b3(2, jsize5) = 0.0d0
1132 b3(3, jsize5) = -dudzeta_rot(1, nb)
1133 b3(1, jsize6) = -dudzeta_rot(2, nb)
1134 b3(2, jsize6) = dudzeta_rot(1, nb)
1135 b3(3, jsize6) = 0.0d0
1142 do jsize = 1, ndof*nn
1144 cv12(jsize) = ( cg1(1)*b1(2, jsize) &
1145 +cg2(1)*b2(2, jsize) &
1146 +cg3(1)*b3(2, jsize) ) &
1147 -( cg1(2)*b1(1, jsize) &
1148 +cg2(2)*b2(1, jsize) &
1149 +cg3(2)*b3(1, jsize) )
1150 cv13(jsize) = ( cg1(1)*b1(3, jsize) &
1151 +cg2(1)*b2(3, jsize) &
1152 +cg3(1)*b3(3, jsize) ) &
1153 -( cg1(3)*b1(1, jsize) &
1154 +cg2(3)*b2(1, jsize) &
1155 +cg3(3)*b3(1, jsize) )
1156 cv21(jsize) = ( cg1(2)*b1(1, jsize) &
1157 +cg2(2)*b2(1, jsize) &
1158 +cg3(2)*b3(1, jsize) ) &
1159 -( cg1(1)*b1(2, jsize) &
1160 +cg2(1)*b2(2, jsize) &
1161 +cg3(1)*b3(2, jsize) )
1162 cv23(jsize) = ( cg1(2)*b1(3, jsize) &
1163 +cg2(2)*b2(3, jsize) &
1164 +cg3(2)*b3(3, jsize) ) &
1165 -( cg1(3)*b1(2, jsize) &
1166 +cg2(3)*b2(2, jsize) &
1167 +cg3(3)*b3(2, jsize) )
1168 cv31(jsize) = ( cg1(3)*b1(1, jsize) &
1169 +cg2(3)*b2(1, jsize) &
1170 +cg3(3)*b3(1, jsize) ) &
1171 -( cg1(1)*b1(3, jsize) &
1172 +cg2(1)*b2(3, jsize) &
1173 +cg3(1)*b3(3, jsize) )
1174 cv32(jsize) = ( cg1(3)*b1(2, jsize) &
1175 +cg2(3)*b2(2, jsize) &
1176 +cg3(3)*b3(2, jsize) ) &
1177 -( cg1(2)*b1(3, jsize) &
1178 +cg2(2)*b2(3, jsize) &
1179 +cg3(2)*b3(3, jsize) )
1190 jsize = ndof*(nb-1)+j
1193 = v1_i(1)*cv12(jsize)*v2_i(2) &
1194 +v1_i(1)*cv13(jsize)*v2_i(3) &
1195 +v1_i(2)*cv21(jsize)*v2_i(1) &
1196 +v1_i(2)*cv23(jsize)*v2_i(3) &
1197 +v1_i(3)*cv31(jsize)*v2_i(1) &
1198 +v1_i(3)*cv32(jsize)*v2_i(2)
1207 jsize1 = ndof*(nb-1)+1
1208 jsize2 = ndof*(nb-1)+2
1209 jsize3 = ndof*(nb-1)+3
1210 jsize4 = ndof*(nb-1)+4
1211 jsize5 = ndof*(nb-1)+5
1212 jsize6 = ndof*(nb-1)+6
1214 cv_theta(jsize1) = 0.0d0
1215 cv_theta(jsize2) = 0.0d0
1216 cv_theta(jsize3) = 0.0d0
1217 cv_theta(jsize4) = v3_i(1)*shapefunc(nb)
1218 cv_theta(jsize5) = v3_i(2)*shapefunc(nb)
1219 cv_theta(jsize6) = v3_i(3)*shapefunc(nb)
1224 do jsize = 1, ndof*nn
1226 cv(jsize) = cv_theta(jsize)-0.5d0*cv_w(jsize)
1233 do jsize = 1, ndof*nn
1234 do isize = 1, ndof*nn
1236 tmpstiff(isize, jsize) &
1237 = tmpstiff(isize, jsize) &
1238 +w_w_w_det*gausses(1)%pMaterial%shell_var(n_layer)%weight*alpha*cv(isize)*cv(jsize)
1254 stiff(1:nn*ndof, 1:nn*ndof) = tmpstiff(1:nn*ndof, 1:nn*ndof)
1265 if( mixflag == 1 )
then
1293 tmpstiff(1:nn*ndof, 1:nn*ndof) = stiff(1:nn*ndof, 1:nn*ndof)
1297 stiff(i,j) = tmpstiff(sstable(i),sstable(j))
1301 elseif( mixflag == 2 )
then
1322 tmpstiff(1:nn*ndof, 1:nn*ndof) = stiff(1:nn*ndof, 1:nn*ndof)
1326 stiff(i,j) = tmpstiff(sstable(i),sstable(j))
1341 (etype, nn, ndof, ecoord, gausses, edisp, &
1342 strain, stress, thick, zeta, n_layer, n_totlyr)
1350 integer(kind = kint),
intent(in) :: etype
1351 integer(kind = kint),
intent(in) :: nn
1352 integer(kind = kint),
intent(in) :: ndof
1353 real(kind = kreal),
intent(in) :: ecoord(3, nn)
1355 real(kind = kreal),
intent(in) :: edisp(6, nn)
1356 real(kind = kreal),
intent(out) :: strain(:,:)
1357 real(kind = kreal),
intent(out) :: stress(:,:)
1358 real(kind = kreal),
intent(in) :: thick
1359 real(kind = kreal),
intent(in) :: zeta
1367 integer :: npoints_tying(3)
1370 integer :: n_layer, n_totlyr
1372 real(kind = kreal) :: d(5, 5)
1373 real(kind = kreal) :: elem(3, nn)
1374 real(kind = kreal) :: xi_lx, eta_lx, zeta_ly
1375 real(kind = kreal) :: naturalcoord(2)
1376 real(kind = kreal) :: tpcoord(6, 2, 3)
1377 real(kind = kreal) :: nncoord(nn, 2)
1378 real(kind = kreal) :: shapefunc(nn)
1379 real(kind = kreal) :: shapederiv(nn, 2)
1380 real(kind = kreal) :: alpha
1381 real(kind = kreal) :: xxi_lx, eeta_lx
1382 real(kind = kreal) :: xxi_di(6, 3), eeta_di(6, 3)
1383 real(kind = kreal) :: h(nn, 3)
1384 real(kind = kreal) :: v1(3, nn), v2(3, nn), v3(3, nn)
1385 real(kind = kreal) :: v1_abs, v2_abs, v3_abs
1386 real(kind = kreal) :: a_over_2_v3(3, nn)
1387 real(kind = kreal) :: a_over_2_theta_cross_v3(3, nn)
1388 real(kind = kreal) :: u_rot(3, nn)
1389 real(kind = kreal) :: theta(3, nn)
1390 real(kind = kreal) :: dudxi(3), dudeta(3), dudzeta(3)
1391 real(kind = kreal) :: dudxi_rot(3, nn), dudeta_rot(3, nn), &
1393 real(kind = kreal) :: g1(3), g2(3), g3(3)
1394 real(kind = kreal) :: g3_abs
1395 real(kind = kreal) :: e_0(3)
1396 real(kind = kreal) :: cg1(3), cg2(3), cg3(3)
1397 real(kind = kreal) :: det
1398 real(kind = kreal) :: det_cg3(3)
1399 real(kind = kreal) :: det_inv
1400 real(kind = kreal) :: det_cg3_abs
1401 real(kind = kreal) :: e1_hat(3), e2_hat(3), e3_hat(3)
1402 real(kind = kreal) :: e1_hat_abs, e2_hat_abs
1403 real(kind = kreal) :: e11, e22, e12_2, e23_2, e31_2
1404 real(kind = kreal) :: e11_di(6, 3), e22_di(6, 3), &
1405 e12_di_2(6, 3), e23_di_2(6, 3), &
1407 real(kind = kreal) :: e(3, 3), ev(5)
1408 real(kind = kreal) :: s(3, 3), sv(5)
1409 real(kind = kreal) :: sumlyr
1448 elem(:, :) = ecoord(:, :)
1454 theta(1, na) = edisp(4, na)
1455 theta(2, na) = edisp(5, na)
1456 theta(3, na) = edisp(6, na)
1474 tpcoord(1, 1, 1) = 0.0d0
1475 tpcoord(2, 1, 1) = 1.0d0
1476 tpcoord(3, 1, 1) = 0.0d0
1477 tpcoord(4, 1, 1) = -1.0d0
1479 tpcoord(1, 2, 1) = -1.0d0
1480 tpcoord(2, 2, 1) = 0.0d0
1481 tpcoord(3, 2, 1) = 1.0d0
1482 tpcoord(4, 2, 1) = 0.0d0
1492 tpcoord(1, 1, 1) = -1.0d0*dsqrt( 1.0d0/3.0d0 )
1493 tpcoord(2, 1, 1) = 1.0d0*dsqrt( 1.0d0/3.0d0 )
1494 tpcoord(3, 1, 1) = 1.0d0*dsqrt( 1.0d0/3.0d0 )
1495 tpcoord(4, 1, 1) = -1.0d0*dsqrt( 1.0d0/3.0d0 )
1496 tpcoord(5, 1, 1) = 1.0d0*dsqrt( 1.0d0/3.0d0 )
1497 tpcoord(6, 1, 1) = -1.0d0*dsqrt( 1.0d0/3.0d0 )
1499 tpcoord(1, 2, 1) = -1.0d0*dsqrt( 3.0d0/5.0d0 )
1500 tpcoord(2, 2, 1) = -1.0d0*dsqrt( 3.0d0/5.0d0 )
1501 tpcoord(3, 2, 1) = 1.0d0*dsqrt( 3.0d0/5.0d0 )
1502 tpcoord(4, 2, 1) = 1.0d0*dsqrt( 3.0d0/5.0d0 )
1503 tpcoord(5, 2, 1) = 0.0d0*dsqrt( 3.0d0/5.0d0 )
1504 tpcoord(6, 2, 1) = 0.0d0*dsqrt( 3.0d0/5.0d0 )
1507 tpcoord(1, 1, 2) = -1.0d0*dsqrt( 3.0d0/5.0d0 )
1508 tpcoord(2, 1, 2) = 0.0d0*dsqrt( 3.0d0/5.0d0 )
1509 tpcoord(3, 1, 2) = 1.0d0*dsqrt( 3.0d0/5.0d0 )
1510 tpcoord(4, 1, 2) = 1.0d0*dsqrt( 3.0d0/5.0d0 )
1511 tpcoord(5, 1, 2) = 0.0d0*dsqrt( 3.0d0/5.0d0 )
1512 tpcoord(6, 1, 2) = -1.0d0*dsqrt( 3.0d0/5.0d0 )
1514 tpcoord(1, 2, 2) = -1.0d0*dsqrt( 1.0d0/3.0d0 )
1515 tpcoord(2, 2, 2) = -1.0d0*dsqrt( 1.0d0/3.0d0 )
1516 tpcoord(3, 2, 2) = -1.0d0*dsqrt( 1.0d0/3.0d0 )
1517 tpcoord(4, 2, 2) = 1.0d0*dsqrt( 1.0d0/3.0d0 )
1518 tpcoord(5, 2, 2) = 1.0d0*dsqrt( 1.0d0/3.0d0 )
1519 tpcoord(6, 2, 2) = 1.0d0*dsqrt( 1.0d0/3.0d0 )
1522 tpcoord(1, 1, 3) = -1.0d0*dsqrt( 1.0d0/3.0d0 )
1523 tpcoord(2, 1, 3) = 1.0d0*dsqrt( 1.0d0/3.0d0 )
1524 tpcoord(3, 1, 3) = 1.0d0*dsqrt( 1.0d0/3.0d0 )
1525 tpcoord(4, 1, 3) = -1.0d0*dsqrt( 1.0d0/3.0d0 )
1527 tpcoord(1, 2, 3) = -1.0d0*dsqrt( 1.0d0/3.0d0 )
1528 tpcoord(2, 2, 3) = -1.0d0*dsqrt( 1.0d0/3.0d0 )
1529 tpcoord(3, 2, 3) = 1.0d0*dsqrt( 1.0d0/3.0d0 )
1530 tpcoord(4, 2, 3) = 1.0d0*dsqrt( 1.0d0/3.0d0 )
1535 xxi_di(1, 1) = -1.0d0
1536 xxi_di(2, 1) = 1.0d0
1537 xxi_di(3, 1) = 1.0d0
1538 xxi_di(4, 1) = -1.0d0
1539 xxi_di(5, 1) = 1.0d0
1540 xxi_di(6, 1) = -1.0d0
1542 eeta_di(1, 1) = -1.0d0
1543 eeta_di(2, 1) = -1.0d0
1544 eeta_di(3, 1) = 1.0d0
1545 eeta_di(4, 1) = 1.0d0
1546 eeta_di(5, 1) = 0.0d0
1547 eeta_di(6, 1) = 0.0d0
1550 xxi_di(1, 2) = -1.0d0
1551 xxi_di(2, 2) = 0.0d0
1552 xxi_di(3, 2) = 1.0d0
1553 xxi_di(4, 2) = 1.0d0
1554 xxi_di(5, 2) = 0.0d0
1555 xxi_di(6, 2) = -1.0d0
1557 eeta_di(1, 2) = -1.0d0
1558 eeta_di(2, 2) = -1.0d0
1559 eeta_di(3, 2) = -1.0d0
1560 eeta_di(4, 2) = 1.0d0
1561 eeta_di(5, 2) = 1.0d0
1562 eeta_di(6, 2) = 1.0d0
1572 tpcoord(1, 1, 1) = 0.5d0
1573 tpcoord(2, 1, 1) = 0.0d0
1574 tpcoord(3, 1, 1) = 0.5d0
1576 tpcoord(1, 2, 1) = 0.0d0
1577 tpcoord(2, 2, 1) = 0.5d0
1578 tpcoord(3, 2, 1) = 0.5d0
1588 naturalcoord(1) = 0.0d0
1589 naturalcoord(2) = 0.0d0
1602 g1(i) = g1(i)+shapederiv(na, 1) &
1619 naturalcoord(1) = nncoord(nb, 1)
1620 naturalcoord(2) = nncoord(nb, 2)
1634 g1(i) = g1(i)+shapederiv(na, 1) &
1636 g2(i) = g2(i)+shapederiv(na, 2) &
1645 det_cg3(1) = g1(2)*g2(3)-g1(3)*g2(2)
1646 det_cg3(2) = g1(3)*g2(1)-g1(1)*g2(3)
1647 det_cg3(3) = g1(1)*g2(2)-g1(2)*g2(1)
1649 det_cg3_abs = dsqrt( det_cg3(1)*det_cg3(1) &
1650 +det_cg3(2)*det_cg3(2) &
1651 +det_cg3(3)*det_cg3(3) )
1653 v3(1, nb) = det_cg3(1)/det_cg3_abs
1654 v3(2, nb) = det_cg3(2)/det_cg3_abs
1655 v3(3, nb) = det_cg3(3)/det_cg3_abs
1659 v2(1, nb) = v3(2, nb)*e_0(3)-v3(3, nb)*e_0(2)
1660 v2(2, nb) = v3(3, nb)*e_0(1)-v3(1, nb)*e_0(3)
1661 v2(3, nb) = v3(1, nb)*e_0(2)-v3(2, nb)*e_0(1)
1663 v2_abs = dsqrt( v2(1, nb)*v2(1, nb) &
1664 +v2(2, nb)*v2(2, nb) &
1665 +v2(3, nb)*v2(3, nb) )
1667 if( v2_abs .GT. 1.0d-15 )
then
1669 v2(1, nb) = v2(1, nb)/v2_abs
1670 v2(2, nb) = v2(2, nb)/v2_abs
1671 v2(3, nb) = v2(3, nb)/v2_abs
1673 v1(1, nb) = v2(2, nb)*v3(3, nb) &
1674 -v2(3, nb)*v3(2, nb)
1675 v1(2, nb) = v2(3, nb)*v3(1, nb) &
1676 -v2(1, nb)*v3(3, nb)
1677 v1(3, nb) = v2(1, nb)*v3(2, nb) &
1678 -v2(2, nb)*v3(1, nb)
1680 v1_abs = dsqrt( v1(1, nb)*v1(1, nb) &
1681 +v1(2, nb)*v1(2, nb) &
1682 +v1(3, nb)*v1(3, nb) )
1684 v1(1, nb) = v1(1, nb)/v1_abs
1685 v1(2, nb) = v1(2, nb)/v1_abs
1686 v1(3, nb) = v1(3, nb)/v1_abs
1702 v3(1, nb) = v1(2, nb)*v2(3, nb) &
1703 -v1(3, nb)*v2(2, nb)
1704 v3(2, nb) = v1(3, nb)*v2(1, nb) &
1705 -v1(1, nb)*v2(3, nb)
1706 v3(3, nb) = v1(1, nb)*v2(2, nb) &
1707 -v1(2, nb)*v2(1, nb)
1709 v3_abs = dsqrt( v3(1, nb)*v3(1, nb) &
1710 +v3(2, nb)*v3(2, nb) &
1711 +v3(3, nb)*v3(3, nb) )
1713 v3(1, nb) = v3(1, nb)/v3_abs
1714 v3(2, nb) = v3(2, nb)/v3_abs
1715 v3(3, nb) = v3(3, nb)/v3_abs
1719 a_over_2_v3(1, nb) = 0.5d0*thick*v3(1, nb)
1720 a_over_2_v3(2, nb) = 0.5d0*thick*v3(2, nb)
1721 a_over_2_v3(3, nb) = 0.5d0*thick*v3(3, nb)
1725 a_over_2_theta_cross_v3(1, nb) &
1726 = theta(2, nb)*a_over_2_v3(3, nb) &
1727 -theta(3, nb)*a_over_2_v3(2, nb)
1728 a_over_2_theta_cross_v3(2, nb) &
1729 = theta(3, nb)*a_over_2_v3(1, nb) &
1730 -theta(1, nb)*a_over_2_v3(3, nb)
1731 a_over_2_theta_cross_v3(3, nb) &
1732 = theta(1, nb)*a_over_2_v3(2, nb) &
1733 -theta(2, nb)*a_over_2_v3(1, nb)
1763 do ip = 1, npoints_tying(it)
1767 naturalcoord(1) = tpcoord(ip, 1, it)
1768 naturalcoord(2) = tpcoord(ip, 2, it)
1782 *( zeta_ly*a_over_2_v3(i, na) )
1785 = shapederiv(na, 1) &
1786 *( zeta_ly*a_over_2_v3(i, na) )
1788 = shapederiv(na, 2) &
1789 *( zeta_ly*a_over_2_v3(i, na) )
1790 dudzeta_rot(i, na) &
1792 *( a_over_2_v3(i, na) )
1809 g1(i) = g1(i)+shapederiv(na, 1) &
1812 g2(i) = g2(i)+shapederiv(na, 2) &
1815 g3(i) = g3(i)+dudzeta_rot(i, na)
1833 +shapederiv(na, 1) &
1835 +zeta_ly*a_over_2_theta_cross_v3(i, na) )
1838 +shapederiv(na, 2) &
1840 +zeta_ly*a_over_2_theta_cross_v3(i, na) )
1844 *( a_over_2_theta_cross_v3(i, na) )
1855 *( ( g1(1)*dudxi(1) +dudxi(1) *g1(1) ) &
1856 +( g1(2)*dudxi(2) +dudxi(2) *g1(2) ) &
1857 +( g1(3)*dudxi(3) +dudxi(3) *g1(3) ) )
1860 *( ( g2(1)*dudeta(1)+dudeta(1)*g2(1) ) &
1861 +( g2(2)*dudeta(2)+dudeta(2)*g2(2) ) &
1862 +( g2(3)*dudeta(3)+dudeta(3)*g2(3) ) )
1864 = ( g1(1)*dudeta(1) +dudxi(1) *g2(1) ) &
1865 +( g1(2)*dudeta(2) +dudxi(2) *g2(2) ) &
1866 +( g1(3)*dudeta(3) +dudxi(3) *g2(3) )
1868 = ( g2(1)*dudzeta(1)+dudeta(1) *g3(1) ) &
1869 +( g2(2)*dudzeta(2)+dudeta(2) *g3(2) ) &
1870 +( g2(3)*dudzeta(3)+dudeta(3) *g3(3) )
1872 = ( g3(1)*dudxi(1) +dudzeta(1)*g1(1) ) &
1873 +( g3(2)*dudxi(2) +dudzeta(2)*g1(2) ) &
1874 +( g3(3)*dudxi(3) +dudzeta(3)*g1(3) )
1886 sumlyr = sumlyr +2*gausses(1)%pMaterial%shell_var(m)%weight
1888 zeta_ly = -1 +sumlyr -gausses(1)%pMaterial%shell_var(n_layer)%weight*(1-zeta)
1896 naturalcoord(1) = nncoord(lx, 1)
1897 naturalcoord(2) = nncoord(lx, 2)
1899 xi_lx = naturalcoord(1)
1900 eta_lx = naturalcoord(2)
1914 *( zeta_ly*a_over_2_v3(i, na) )
1917 = shapederiv(na, 1) &
1918 *( zeta_ly*a_over_2_v3(i, na) )
1920 = shapederiv(na, 2) &
1921 *( zeta_ly*a_over_2_v3(i, na) )
1922 dudzeta_rot(i, na) &
1924 *( a_over_2_v3(i, na) )
1941 g1(i) = g1(i)+shapederiv(na, 1) &
1944 g2(i) = g2(i)+shapederiv(na, 2) &
1947 g3(i) = g3(i)+dudzeta_rot(i, na)
1955 det = g1(1)*( g2(2)*g3(3)-g2(3)*g3(2) ) &
1956 +g1(2)*( g2(3)*g3(1)-g2(1)*g3(3) ) &
1957 +g1(3)*( g2(1)*g3(2)-g2(2)*g3(1) )
1959 if(det == 0.0d0)
then
1960 write(*,*)
"ERROR:LIB Shell in l2009 Not Jacobian"
1970 *( g2(2)*g3(3)-g2(3)*g3(2) )
1972 *( g2(3)*g3(1)-g2(1)*g3(3) )
1974 *( g2(1)*g3(2)-g2(2)*g3(1) )
1976 *( g3(2)*g1(3)-g3(3)*g1(2) )
1978 *( g3(3)*g1(1)-g3(1)*g1(3) )
1980 *( g3(1)*g1(2)-g3(2)*g1(1) )
1982 *( g1(2)*g2(3)-g1(3)*g2(2) )
1984 *( g1(3)*g2(1)-g1(1)*g2(3) )
1986 *( g1(1)*g2(2)-g1(2)*g2(1) )
1990 g3_abs = dsqrt( g3(1)*g3(1) &
1998 e3_hat(1) = g3(1)/g3_abs
1999 e3_hat(2) = g3(2)/g3_abs
2000 e3_hat(3) = g3(3)/g3_abs
2002 e1_hat(1) = g2(2)*e3_hat(3) &
2004 e1_hat(2) = g2(3)*e3_hat(1) &
2006 e1_hat(3) = g2(1)*e3_hat(2) &
2008 e1_hat_abs = dsqrt( e1_hat(1)*e1_hat(1) &
2009 +e1_hat(2)*e1_hat(2) &
2010 +e1_hat(3)*e1_hat(3) )
2011 e1_hat(1) = e1_hat(1)/e1_hat_abs
2012 e1_hat(2) = e1_hat(2)/e1_hat_abs
2013 e1_hat(3) = e1_hat(3)/e1_hat_abs
2015 e2_hat(1) = e3_hat(2)*e1_hat(3) &
2016 -e3_hat(3)*e1_hat(2)
2017 e2_hat(2) = e3_hat(3)*e1_hat(1) &
2018 -e3_hat(1)*e1_hat(3)
2019 e2_hat(3) = e3_hat(1)*e1_hat(2) &
2020 -e3_hat(2)*e1_hat(1)
2021 e2_hat_abs = dsqrt( e2_hat(1)*e2_hat(1) &
2022 +e2_hat(2)*e2_hat(2) &
2023 +e2_hat(3)*e2_hat(3) )
2024 e2_hat(1) = e2_hat(1)/e2_hat_abs
2025 e2_hat(2) = e2_hat(2)/e2_hat_abs
2026 e2_hat(3) = e2_hat(3)/e2_hat_abs
2040 +shapederiv(na, 1) &
2042 +zeta_ly*a_over_2_theta_cross_v3(i, na) )
2045 +shapederiv(na, 2) &
2047 +zeta_ly*a_over_2_theta_cross_v3(i, na) )
2051 *( a_over_2_theta_cross_v3(i, na) )
2062 *( ( g1(1)*dudxi(1) +dudxi(1) *g1(1) ) &
2063 +( g1(2)*dudxi(2) +dudxi(2) *g1(2) ) &
2064 +( g1(3)*dudxi(3) +dudxi(3) *g1(3) ) )
2067 *( ( g2(1)*dudeta(1)+dudeta(1)*g2(1) ) &
2068 +( g2(2)*dudeta(2)+dudeta(2)*g2(2) ) &
2069 +( g2(3)*dudeta(3)+dudeta(3)*g2(3) ) )
2071 = ( g1(1)*dudeta(1) +dudxi(1) *g2(1) ) &
2072 +( g1(2)*dudeta(2) +dudxi(2) *g2(2) ) &
2073 +( g1(3)*dudeta(3) +dudxi(3) *g2(3) )
2075 = ( g2(1)*dudzeta(1)+dudeta(1) *g3(1) ) &
2076 +( g2(2)*dudzeta(2)+dudeta(2) *g3(2) ) &
2077 +( g2(3)*dudzeta(3)+dudeta(3) *g3(3) )
2079 = ( g3(1)*dudxi(1) +dudzeta(1)*g1(1) ) &
2080 +( g3(2)*dudxi(2) +dudzeta(2)*g1(2) ) &
2081 +( g3(3)*dudxi(3) +dudzeta(3)*g1(3) )
2091 = 0.5d0*( 1.0d0-xi_lx )*e23_di_2(4, 1) &
2092 +0.5d0*( 1.0d0+xi_lx )*e23_di_2(2, 1)
2095 = 0.5d0*( 1.0d0-eta_lx )*e31_di_2(1, 1) &
2096 +0.5d0*( 1.0d0+eta_lx )*e31_di_2(3, 1)
2101 xxi_lx = xi_lx /dsqrt( 1.0d0/3.0d0 )
2102 eeta_lx = eta_lx/dsqrt( 3.0d0/5.0d0 )
2104 do ip = 1, npoints_tying(1)
2107 = ( 0.5d0*( 1.0d0+xxi_di(ip, 1)*xxi_lx ) ) &
2108 *( ( 0.5d0*eeta_di(ip, 1)*eeta_lx ) &
2109 *( 1.0d0+eeta_di(ip, 1)*eeta_lx ) &
2110 +( 1.0d0-eeta_di(ip, 1)*eeta_di(ip, 1) ) &
2111 *( 1.0d0-eeta_lx*eeta_lx ) )
2115 xxi_lx = xi_lx /dsqrt( 3.0d0/5.0d0 )
2116 eeta_lx = eta_lx/dsqrt( 1.0d0/3.0d0 )
2118 do ip = 1, npoints_tying(2)
2121 = ( ( 0.5d0*xxi_di(ip, 2) *xxi_lx ) &
2122 *( 1.0d0+xxi_di(ip, 2) *xxi_lx ) &
2123 +( 1.0d0-xxi_di(ip, 2) *xxi_di(ip, 2) ) &
2124 *( 1.0d0-xxi_lx*xxi_lx ) ) &
2125 *( 0.5d0*( 1.0d0+eeta_di(ip, 2)*eeta_lx ) )
2129 xxi_lx = xi_lx /dsqrt( 1.0d0/3.0d0 )
2130 eeta_lx = eta_lx/dsqrt( 1.0d0/3.0d0 )
2132 do ip = 1, npoints_tying(3)
2135 = ( 0.5d0*( 1.0d0+xxi_di(ip, 1)*xxi_lx ) ) &
2136 *( 0.5d0*( 1.0d0+eeta_di(ip, 1)*eeta_lx ) )
2144 do ip = 1, npoints_tying(1)
2146 e11 = e11 +h(ip, 1)*e11_di(ip, 1)
2147 e31_2 = e31_2+h(ip, 1)*e31_di_2(ip, 1)
2155 do ip = 1, npoints_tying(2)
2157 e22 = e22 +h(ip, 2)*e22_di(ip, 2)
2158 e23_2 = e23_2+h(ip, 2)*e23_di_2(ip, 2)
2165 do ip = 1, npoints_tying(3)
2167 e12_2 = e12_2+h(ip, 3)*e12_di_2(ip, 3)
2179 = ( 1.0d0-xi_lx )*e23_di_2(2, 1) &
2180 +xi_lx *e31_di_2(1, 1) &
2181 +xi_lx *( e23_di_2(3, 1)-e31_di_2(3, 1) )
2184 = eta_lx*e23_di_2(2, 1) &
2185 +( 1.0d0-eta_lx )*e31_di_2(1, 1) &
2186 -eta_lx*( e23_di_2(3, 1)-e31_di_2(3, 1) )
2204 e(1, 2) = 0.5d0*ev(3)
2205 e(2, 1) = 0.5d0*ev(3)
2206 e(2, 3) = 0.5d0*ev(4)
2207 e(3, 2) = 0.5d0*ev(4)
2208 e(3, 1) = 0.5d0*ev(5)
2209 e(1, 3) = 0.5d0*ev(5)
2214 (gausses(lx), shell, d, &
2215 e1_hat, e2_hat, e3_hat, cg1, cg2, cg3, &
2220 sv = matmul( d, ev )
2237 = ( s(1, 1)*g1(1)*g1(1) &
2238 +s(1, 2)*g1(1)*g2(1) &
2239 +s(1, 3)*g1(1)*g3(1) &
2240 +s(2, 1)*g2(1)*g1(1) &
2241 +s(2, 2)*g2(1)*g2(1) &
2242 +s(2, 3)*g2(1)*g3(1) &
2243 +s(3, 1)*g3(1)*g1(1) &
2244 +s(3, 2)*g3(1)*g2(1) )
2246 = ( s(1, 1)*g1(2)*g1(2) &
2247 +s(1, 2)*g1(2)*g2(2) &
2248 +s(1, 3)*g1(2)*g3(2) &
2249 +s(2, 1)*g2(2)*g1(2) &
2250 +s(2, 2)*g2(2)*g2(2) &
2251 +s(2, 3)*g2(2)*g3(2) &
2252 +s(3, 1)*g3(2)*g1(2) &
2253 +s(3, 2)*g3(2)*g2(2) )
2255 = ( s(1, 1)*g1(3)*g1(3) &
2256 +s(1, 2)*g1(3)*g2(3) &
2257 +s(1, 3)*g1(3)*g3(3) &
2258 +s(2, 1)*g2(3)*g1(3) &
2259 +s(2, 2)*g2(3)*g2(3) &
2260 +s(2, 3)*g2(3)*g3(3) &
2261 +s(3, 1)*g3(3)*g1(3) &
2262 +s(3, 2)*g3(3)*g2(3) )
2264 = ( s(1, 1)*g1(1)*g1(2) &
2265 +s(1, 2)*g1(1)*g2(2) &
2266 +s(1, 3)*g1(1)*g3(2) &
2267 +s(2, 1)*g2(1)*g1(2) &
2268 +s(2, 2)*g2(1)*g2(2) &
2269 +s(2, 3)*g2(1)*g3(2) &
2270 +s(3, 1)*g3(1)*g1(2) &
2271 +s(3, 2)*g3(1)*g2(2) )
2273 = ( s(1, 1)*g1(2)*g1(3) &
2274 +s(1, 2)*g1(2)*g2(3) &
2275 +s(1, 3)*g1(2)*g3(3) &
2276 +s(2, 1)*g2(2)*g1(3) &
2277 +s(2, 2)*g2(2)*g2(3) &
2278 +s(2, 3)*g2(2)*g3(3) &
2279 +s(3, 1)*g3(2)*g1(3) &
2280 +s(3, 2)*g3(2)*g2(3) )
2282 = ( s(1, 1)*g1(3)*g1(1) &
2283 +s(1, 2)*g1(3)*g2(1) &
2284 +s(1, 3)*g1(3)*g3(1) &
2285 +s(2, 1)*g2(3)*g1(1) &
2286 +s(2, 2)*g2(3)*g2(1) &
2287 +s(2, 3)*g2(3)*g3(1) &
2288 +s(3, 1)*g3(3)*g1(1) &
2289 +s(3, 2)*g3(3)*g2(1) )
2292 = ( e(1, 1)*cg1(1)*cg1(1) &
2293 +e(1, 2)*cg1(1)*cg2(1) &
2294 +e(1, 3)*cg1(1)*cg3(1) &
2295 +e(2, 1)*cg2(1)*cg1(1) &
2296 +e(2, 2)*cg2(1)*cg2(1) &
2297 +e(2, 3)*cg2(1)*cg3(1) &
2298 +e(3, 1)*cg3(1)*cg1(1) &
2299 +e(3, 2)*cg3(1)*cg2(1) )
2301 = ( e(1, 1)*cg1(2)*cg1(2) &
2302 +e(1, 2)*cg1(2)*cg2(2) &
2303 +e(1, 3)*cg1(2)*cg3(2) &
2304 +e(2, 1)*cg2(2)*cg1(2) &
2305 +e(2, 2)*cg2(2)*cg2(2) &
2306 +e(2, 3)*cg2(2)*cg3(2) &
2307 +e(3, 1)*cg3(2)*cg1(2) &
2308 +e(3, 2)*cg3(2)*cg2(2) )
2310 = ( e(1, 1)*cg1(3)*cg1(3) &
2311 +e(1, 2)*cg1(3)*cg2(3) &
2312 +e(1, 3)*cg1(3)*cg3(3) &
2313 +e(2, 1)*cg2(3)*cg1(3) &
2314 +e(2, 2)*cg2(3)*cg2(3) &
2315 +e(2, 3)*cg2(3)*cg3(3) &
2316 +e(3, 1)*cg3(3)*cg1(3) &
2317 +e(3, 2)*cg3(3)*cg2(3) )
2319 = ( e(1, 1)*cg1(1)*cg1(2) &
2320 +e(1, 2)*cg1(1)*cg2(2) &
2321 +e(1, 3)*cg1(1)*cg3(2) &
2322 +e(2, 1)*cg2(1)*cg1(2) &
2323 +e(2, 2)*cg2(1)*cg2(2) &
2324 +e(2, 3)*cg2(1)*cg3(2) &
2325 +e(3, 1)*cg3(1)*cg1(2) &
2326 +e(3, 2)*cg3(1)*cg2(2) )
2328 = ( e(1, 1)*cg1(2)*cg1(3) &
2329 +e(1, 2)*cg1(2)*cg2(3) &
2330 +e(1, 3)*cg1(2)*cg3(3) &
2331 +e(2, 1)*cg2(2)*cg1(3) &
2332 +e(2, 2)*cg2(2)*cg2(3) &
2333 +e(2, 3)*cg2(2)*cg3(3) &
2334 +e(3, 1)*cg3(2)*cg1(3) &
2335 +e(3, 2)*cg3(2)*cg2(3) )
2337 = ( e(1, 1)*cg1(3)*cg1(1) &
2338 +e(1, 2)*cg1(3)*cg2(1) &
2339 +e(1, 3)*cg1(3)*cg3(1) &
2340 +e(2, 1)*cg2(3)*cg1(1) &
2341 +e(2, 2)*cg2(3)*cg2(1) &
2342 +e(2, 3)*cg2(3)*cg3(1) &
2343 +e(3, 1)*cg3(3)*cg1(1) &
2344 +e(3, 2)*cg3(3)*cg2(1) )
2360 (etype, nn, ndof, xx, yy, zz, rho, thick, &
2361 ltype, params, vect, nsize, gausses)
2372 integer(kind = kint),
intent(in) :: etype
2373 integer(kind = kint),
intent(in) :: nn
2374 integer(kind = kint),
intent(in) :: ndof
2375 real(kind = kreal),
intent(in) :: xx(*), yy(*), zz(*)
2376 real(kind = kreal),
intent(in) :: rho
2377 real(kind = kreal),
intent(in) :: thick
2378 real(kind = kreal),
intent(in) :: params(*)
2379 real(kind = kreal),
intent(out) :: vect(*)
2380 integer(kind = kint),
intent(out) :: nsize
2384 integer :: ivol, isurf
2391 integer :: jsize1, jsize2, jsize3, &
2392 jsize4, jsize5, jsize6
2394 integer :: n_totlyr, n_layer
2396 real(kind = kreal) :: elem(3, nn)
2397 real(kind = kreal) :: val
2398 real(kind = kreal) :: ax, ay, az
2399 real(kind = kreal) :: rx, ry, rz
2400 real(kind = kreal) :: xi_lx, eta_lx, zeta_ly
2401 real(kind = kreal) :: w_w_lx, w_ly
2402 real(kind = kreal) :: naturalcoord(2)
2403 real(kind = kreal) :: nncoord(nn, 2)
2404 real(kind = kreal) :: shapefunc(nn)
2405 real(kind = kreal) :: shapederiv(nn, 2)
2406 real(kind = kreal) :: v1(3, nn), v2(3, nn), v3(3, nn)
2407 real(kind = kreal) :: v1_abs, v2_abs, v3_abs
2408 real(kind = kreal) :: a_over_2_v3(3, nn)
2409 real(kind = kreal) :: u_rot(3, nn)
2410 real(kind = kreal) :: dudxi_rot(3, nn), dudeta_rot(3, nn), &
2412 real(kind = kreal) :: g1(3), g2(3), g3(3)
2413 real(kind = kreal) :: g1_cross_g2(3)
2414 real(kind = kreal) :: e_0(3)
2415 real(kind = kreal) :: det
2416 real(kind = kreal) :: det_cg3(3)
2417 real(kind = kreal) :: det_cg3_abs
2418 real(kind = kreal) :: w_w_w_det
2419 real(kind = kreal) :: n(3, ndof*nn)
2420 real(kind = kreal) :: hx, hy, hz
2421 real(kind = kreal) :: phx, phy, phz
2422 real(kind = kreal) :: coefx, coefy, coefz
2423 real(kind = kreal) :: x, y, z
2424 real(kind = kreal) :: sumlyr
2480 elem(1, na) = xx(na)
2481 elem(2, na) = yy(na)
2482 elem(3, na) = zz(na)
2495 do isize = 1, ndof*nn
2505 naturalcoord(1) = 0.0d0
2506 naturalcoord(2) = 0.0d0
2519 g1(i) = g1(i)+shapederiv(na, 1) &
2536 naturalcoord(1) = nncoord(nb, 1)
2537 naturalcoord(2) = nncoord(nb, 2)
2551 g1(i) = g1(i)+shapederiv(na, 1) &
2553 g2(i) = g2(i)+shapederiv(na, 2) &
2562 det_cg3(1) = g1(2)*g2(3)-g1(3)*g2(2)
2563 det_cg3(2) = g1(3)*g2(1)-g1(1)*g2(3)
2564 det_cg3(3) = g1(1)*g2(2)-g1(2)*g2(1)
2566 det_cg3_abs = dsqrt( det_cg3(1)*det_cg3(1) &
2567 +det_cg3(2)*det_cg3(2) &
2568 +det_cg3(3)*det_cg3(3) )
2570 v3(1, nb) = det_cg3(1)/det_cg3_abs
2571 v3(2, nb) = det_cg3(2)/det_cg3_abs
2572 v3(3, nb) = det_cg3(3)/det_cg3_abs
2576 v2(1, nb) = v3(2, nb)*e_0(3)-v3(3, nb)*e_0(2)
2577 v2(2, nb) = v3(3, nb)*e_0(1)-v3(1, nb)*e_0(3)
2578 v2(3, nb) = v3(1, nb)*e_0(2)-v3(2, nb)*e_0(1)
2580 v2_abs = dsqrt( v2(1, nb)*v2(1, nb) &
2581 +v2(2, nb)*v2(2, nb) &
2582 +v2(3, nb)*v2(3, nb) )
2584 if( v2_abs .GT. 1.0d-15 )
then
2586 v2(1, nb) = v2(1, nb)/v2_abs
2587 v2(2, nb) = v2(2, nb)/v2_abs
2588 v2(3, nb) = v2(3, nb)/v2_abs
2590 v1(1, nb) = v2(2, nb)*v3(3, nb) &
2591 -v2(3, nb)*v3(2, nb)
2592 v1(2, nb) = v2(3, nb)*v3(1, nb) &
2593 -v2(1, nb)*v3(3, nb)
2594 v1(3, nb) = v2(1, nb)*v3(2, nb) &
2595 -v2(2, nb)*v3(1, nb)
2597 v1_abs = dsqrt( v1(1, nb)*v1(1, nb) &
2598 +v1(2, nb)*v1(2, nb) &
2599 +v1(3, nb)*v1(3, nb) )
2601 v1(1, nb) = v1(1, nb)/v1_abs
2602 v1(2, nb) = v1(2, nb)/v1_abs
2603 v1(3, nb) = v1(3, nb)/v1_abs
2619 v3(1, nb) = v1(2, nb)*v2(3, nb) &
2620 -v1(3, nb)*v2(2, nb)
2621 v3(2, nb) = v1(3, nb)*v2(1, nb) &
2622 -v1(1, nb)*v2(3, nb)
2623 v3(3, nb) = v1(1, nb)*v2(2, nb) &
2624 -v1(2, nb)*v2(1, nb)
2626 v3_abs = dsqrt( v3(1, nb)*v3(1, nb) &
2627 +v3(2, nb)*v3(2, nb) &
2628 +v3(3, nb)*v3(3, nb) )
2630 v3(1, nb) = v3(1, nb)/v3_abs
2631 v3(2, nb) = v3(2, nb)/v3_abs
2632 v3(3, nb) = v3(3, nb)/v3_abs
2636 a_over_2_v3(1, nb) = 0.5d0*thick*v3(1, nb)
2637 a_over_2_v3(2, nb) = 0.5d0*thick*v3(2, nb)
2638 a_over_2_v3(3, nb) = 0.5d0*thick*v3(3, nb)
2651 if( ltype .LT. 10 )
then
2655 else if( ltype .GE. 10 )
then
2664 if( isurf .EQ. 1 )
then
2674 xi_lx = naturalcoord(1)
2675 eta_lx = naturalcoord(2)
2691 *( 0.0d0*a_over_2_v3(i, na) )
2694 = shapederiv(na, 1) &
2695 *( 0.0d0*a_over_2_v3(i, na) )
2697 = shapederiv(na, 2) &
2698 *( 0.0d0*a_over_2_v3(i, na) )
2699 dudzeta_rot(i, na) &
2701 *( a_over_2_v3(i, na) )
2718 g1(i) = g1(i)+shapederiv(na, 1) &
2721 g2(i) = g2(i)+shapederiv(na, 2) &
2751 g1_cross_g2(1) = g1(2)*g2(3)-g1(3)*g2(2)
2752 g1_cross_g2(2) = g1(3)*g2(1)-g1(1)*g2(3)
2753 g1_cross_g2(3) = g1(1)*g2(2)-g1(2)*g2(1)
2759 jsize1 = ndof*(nb-1)+1
2760 jsize2 = ndof*(nb-1)+2
2761 jsize3 = ndof*(nb-1)+3
2762 jsize4 = ndof*(nb-1)+4
2763 jsize5 = ndof*(nb-1)+5
2764 jsize6 = ndof*(nb-1)+6
2766 n(1, jsize1) = shapefunc(nb)
2767 n(1, jsize2) = 0.0d0
2768 n(1, jsize3) = 0.0d0
2769 n(1, jsize4) = 0.0d0
2770 n(1, jsize5) = 0.0d0
2771 n(1, jsize6) = 0.0d0
2772 n(2, jsize1) = 0.0d0
2773 n(2, jsize2) = shapefunc(nb)
2774 n(2, jsize3) = 0.0d0
2775 n(2, jsize4) = 0.0d0
2776 n(2, jsize5) = 0.0d0
2777 n(2, jsize6) = 0.0d0
2778 n(3, jsize1) = 0.0d0
2779 n(3, jsize2) = 0.0d0
2780 n(3, jsize3) = shapefunc(nb)
2781 n(3, jsize4) = 0.0d0
2782 n(3, jsize5) = 0.0d0
2783 n(3, jsize6) = 0.0d0
2787 do isize = 1, ndof*nn
2791 +w_w_lx*( n(1, isize)*g1_cross_g2(1) &
2792 +n(2, isize)*g1_cross_g2(2) &
2793 +n(3, isize)*g1_cross_g2(3) )*val
2808 if( ivol .EQ. 1 )
then
2811 n_totlyr = gausses(1)%pMaterial%totallyr
2812 do n_layer=1,n_totlyr
2820 sumlyr = sumlyr + 2 * gausses(1)%pMaterial%shell_var(m)%weight
2825 zeta_ly = -1 + sumlyr - gausses(1)%pMaterial%shell_var(n_layer)%weight*(1-
gauss1d2(1,ly))
2832 zeta_ly = -1 + sumlyr - gausses(1)%pMaterial%shell_var(n_layer)%weight*(1-
gauss1d3(1,ly))
2839 zeta_ly = -1 + sumlyr - gausses(1)%pMaterial%shell_var(n_layer)%weight*(1-
gauss1d2(1,ly))
2854 xi_lx = naturalcoord(1)
2855 eta_lx = naturalcoord(2)
2871 *( zeta_ly*a_over_2_v3(i, na) )
2874 = shapederiv(na, 1) &
2875 *( zeta_ly*a_over_2_v3(i, na) )
2877 = shapederiv(na, 2) &
2878 *( zeta_ly*a_over_2_v3(i, na) )
2879 dudzeta_rot(i, na) &
2881 *( a_over_2_v3(i, na) )
2898 g1(i) = g1(i)+shapederiv(na, 1) &
2901 g2(i) = g2(i)+shapederiv(na, 2) &
2904 g3(i) = g3(i)+dudzeta_rot(i, na)
2913 det = g1(1)*( g2(2)*g3(3)-g2(3)*g3(2) ) &
2914 +g1(2)*( g2(3)*g3(1)-g2(1)*g3(3) ) &
2915 +g1(3)*( g2(1)*g3(2)-g2(2)*g3(1) )
2922 jsize1 = ndof*(nb-1)+1
2923 jsize2 = ndof*(nb-1)+2
2924 jsize3 = ndof*(nb-1)+3
2925 jsize4 = ndof*(nb-1)+4
2926 jsize5 = ndof*(nb-1)+5
2927 jsize6 = ndof*(nb-1)+6
2929 n(1, jsize1) = shapefunc(nb)
2930 n(2, jsize1) = 0.0d0
2931 n(3, jsize1) = 0.0d0
2932 n(1, jsize2) = 0.0d0
2933 n(2, jsize2) = shapefunc(nb)
2934 n(3, jsize2) = 0.0d0
2935 n(1, jsize3) = 0.0d0
2936 n(2, jsize3) = 0.0d0
2937 n(3, jsize3) = shapefunc(nb)
2938 n(1, jsize4) = 0.0d0
2939 n(2, jsize4) = -u_rot(3, nb)
2940 n(3, jsize4) = u_rot(2, nb)
2941 n(1, jsize5) = u_rot(3, nb)
2942 n(2, jsize5) = 0.0d0
2943 n(3, jsize5) = -u_rot(1, nb)
2944 n(1, jsize6) = -u_rot(2, nb)
2945 n(2, jsize6) = u_rot(1, nb)
2946 n(3, jsize6) = 0.0d0
2952 w_w_w_det = w_w_lx*w_ly*det
2956 if( ltype .EQ. 1 )
then
2958 do isize = 1, ndof*nn
2960 vect(isize) = vect(isize)+w_w_w_det*n(1, isize)*val
2964 else if( ltype .EQ. 2 )
then
2966 do isize = 1, ndof*nn
2968 vect(isize) = vect(isize)+w_w_w_det*n(2, isize)*val
2972 else if( ltype .EQ. 3 )
then
2974 do isize = 1, ndof*nn
2976 vect(isize) = vect(isize)+w_w_w_det*n(3, isize)*val
2980 else if( ltype .EQ. 4 )
then
2982 do isize = 1, ndof*nn
2984 vect(isize) = vect(isize)+w_w_w_det*rho*ax*n(1, isize)*val
2985 vect(isize) = vect(isize)+w_w_w_det*rho*ay*n(2, isize)*val
2986 vect(isize) = vect(isize)+w_w_w_det*rho*az*n(3, isize)*val
2990 else if( ltype .EQ. 5 )
then
2998 x = x+shapefunc(nb)*elem(1, nb)
2999 y = y+shapefunc(nb)*elem(2, nb)
3000 z = z+shapefunc(nb)*elem(3, nb)
3004 hx = ax+( (x-ax)*rx+(y-ay)*ry+(z-az)*rz )/( rx**2+ry**2+rz**2 )*rx
3005 hy = ay+( (x-ax)*rx+(y-ay)*ry+(z-az)*rz )/( rx**2+ry**2+rz**2 )*ry
3006 hz = az+( (x-ax)*rx+(y-ay)*ry+(z-az)*rz )/( rx**2+ry**2+rz**2 )*rz
3012 coefx = phx*val*rho*val
3013 coefy = phy*val*rho*val
3014 coefz = phz*val*rho*val
3016 do isize = 1, ndof*nn
3020 +w_w_w_det*( n(1, isize)*coefx &
3021 +n(2, isize)*coefy &
3022 +n(3, isize)*coefz )
3054 (ic_type, nn, ndof, xx, yy, zz, rho, thick, &
3055 ltype, params, vect, nsize, gausses)
3065 integer(kind = kint) :: ic_type
3066 integer(kind = kint) :: nn
3067 integer(kind = kint) :: ndof
3068 real(kind = kreal) :: xx(*), yy(*), zz(*)
3069 real(kind = kreal) :: rho
3070 real(kind = kreal) :: thick
3071 real(kind = kreal) :: params(*)
3072 real(kind = kreal) :: vect(*)
3073 integer(kind = kint) :: nsize
3075 real(kind = kreal) :: tmp(24)
3078 if(ic_type == 761)
then
3082 call dl_shell(731, 3, 6, xx, yy, zz, rho, thick, ltype, params, vect, nsize, gausses)
3111 elseif(ic_type == 781)
then
3115 call dl_shell(741, 4, 6, xx, yy, zz, rho, thick, ltype, params, vect, nsize, gausses)
3157 (etype, nn, ndof, ecoord, u, du, gausses, qf, thick, mixflag, nddisp)
3165 integer(kind = kint),
intent(in) :: etype
3166 integer(kind = kint),
intent(in) :: nn, mixflag
3167 integer(kind = kint),
intent(in) :: ndof
3168 real(kind = kreal),
intent(in) :: ecoord(3, nn)
3169 real(kind = kreal),
intent(in) :: u(:, :)
3170 real(kind = kreal),
intent(in) :: du(:, :)
3172 real(kind = kreal),
intent(out) :: qf(:)
3173 real(kind = kreal),
intent(in) :: thick
3175 real(kind = kreal),
intent(in),
optional :: nddisp(3, nn)
3178 real(kind = kreal) :: stiff(nn*ndof, nn*ndof), totaldisp(nn*ndof)
3179 integer(kind = kint) :: i
3181 call stf_shell_mitc(etype, nn, ndof, ecoord, gausses, stiff, thick, mixflag, nddisp)
3185 totaldisp(ndof*(i-1)+1:ndof*i) = u(1:ndof,i) + du(1:ndof,i)
3188 qf = matmul(stiff,totaldisp)
3195 (etype, nn, ndof, ecoord, u, du, gausses, qf, thick, mixflag, nddisp)
3203 integer(kind = kint),
intent(in) :: etype
3204 integer(kind = kint),
intent(in) :: nn, mixflag
3205 integer(kind = kint),
intent(in) :: ndof
3206 real(kind = kreal),
intent(in) :: ecoord(3, nn)
3207 real(kind = kreal),
intent(in) :: u(3, nn*2)
3208 real(kind = kreal),
intent(in) :: du(3, nn*2)
3210 real(kind = kreal),
intent(out) :: qf(:)
3211 real(kind = kreal),
intent(in) :: thick
3213 real(kind = kreal),
intent(in),
optional :: nddisp(3, nn)
3216 real(kind = kreal) :: stiff(nn*ndof, nn*ndof), totaldisp(nn*ndof)
3217 integer(kind = kint) :: i
3219 call stf_shell_mitc(etype, nn, ndof, ecoord, gausses, stiff, thick, mixflag, nddisp)
3223 totaldisp(ndof*(i-1)+1:ndof*(i-1)+3) = u(1:3,2*i-1) + du(1:3,2*i-1)
3224 totaldisp(ndof*(i-1)+4:ndof*(i-1)+6) = u(1:3,2*i) + du(1:3,2*i)
3227 qf = matmul(stiff,totaldisp)
3232 subroutine mass_shell(etype, nn, elem, rho, thick, gausses, mass, lumped)
3238 integer(kind = kint),
intent(in) :: etype
3239 integer(kind = kint),
intent(in) :: nn
3240 real(kind = kreal),
intent(in) :: elem(3,nn)
3241 real(kind = kreal),
intent(in) :: rho
3242 real(kind = kreal),
intent(in) :: thick
3244 real(kind=kreal),
intent(out) :: mass(:,:)
3245 real(kind=kreal),
intent(out) :: lumped(:)
3249 integer :: lx, ly, nsize, ndof
3254 integer :: jsize1, jsize2, jsize3, jsize4, jsize5, jsize6
3255 integer :: n_totlyr, n_layer
3257 real(kind = kreal) :: xi_lx, eta_lx, zeta_ly
3258 real(kind = kreal) :: w_w_lx, w_ly
3259 real(kind = kreal) :: naturalcoord(2)
3260 real(kind = kreal) :: nncoord(nn, 2)
3261 real(kind = kreal) :: shapefunc(nn)
3262 real(kind = kreal) :: shapederiv(nn, 2)
3263 real(kind = kreal) :: v1(3, nn), v2(3, nn), v3(3, nn)
3264 real(kind = kreal) :: v1_abs, v2_abs, v3_abs
3265 real(kind = kreal) :: a_over_2_v3(3, nn)
3266 real(kind = kreal) :: u_rot(3, nn)
3267 real(kind = kreal) :: dudxi_rot(3, nn), dudeta_rot(3, nn), dudzeta_rot(3, nn)
3268 real(kind = kreal) :: g1(3), g2(3), g3(3)
3269 real(kind = kreal) :: e_0(3)
3270 real(kind = kreal) :: det
3271 real(kind = kreal) :: det_cg3(3)
3272 real(kind = kreal) :: det_cg3_abs
3273 real(kind = kreal) :: w_w_w_det
3274 real(kind = kreal) :: n(3, 6*nn)
3275 real(kind = kreal) :: sumlyr, totalmass, totdiag
3307 naturalcoord(1) = 0.0d0
3308 naturalcoord(2) = 0.0d0
3315 g1(:) = matmul( elem, shapederiv(:,1) )
3325 naturalcoord(1) = nncoord(nb, 1)
3326 naturalcoord(2) = nncoord(nb, 2)
3332 g1(:) = matmul( elem, shapederiv(:,1) )
3333 g2(:) = matmul( elem, shapederiv(:,2) )
3337 det_cg3(1) = g1(2)*g2(3)-g1(3)*g2(2)
3338 det_cg3(2) = g1(3)*g2(1)-g1(1)*g2(3)
3339 det_cg3(3) = g1(1)*g2(2)-g1(2)*g2(1)
3341 det_cg3_abs = dsqrt( det_cg3(1)*det_cg3(1) &
3342 +det_cg3(2)*det_cg3(2) &
3343 +det_cg3(3)*det_cg3(3) )
3345 v3(:, nb) = det_cg3(:)/det_cg3_abs
3349 v2(1, nb) = v3(2, nb)*e_0(3)-v3(3, nb)*e_0(2)
3350 v2(2, nb) = v3(3, nb)*e_0(1)-v3(1, nb)*e_0(3)
3351 v2(3, nb) = v3(1, nb)*e_0(2)-v3(2, nb)*e_0(1)
3353 v2_abs = dsqrt( v2(1, nb)*v2(1, nb) &
3354 +v2(2, nb)*v2(2, nb) &
3355 +v2(3, nb)*v2(3, nb) )
3357 if( v2_abs > 1.0d-15 )
then
3359 v2(1, nb) = v2(1, nb)/v2_abs
3360 v2(2, nb) = v2(2, nb)/v2_abs
3361 v2(3, nb) = v2(3, nb)/v2_abs
3363 v1(1, nb) = v2(2, nb)*v3(3, nb) &
3364 -v2(3, nb)*v3(2, nb)
3365 v1(2, nb) = v2(3, nb)*v3(1, nb) &
3366 -v2(1, nb)*v3(3, nb)
3367 v1(3, nb) = v2(1, nb)*v3(2, nb) &
3368 -v2(2, nb)*v3(1, nb)
3370 v1_abs = dsqrt( v1(1, nb)*v1(1, nb) &
3371 +v1(2, nb)*v1(2, nb) &
3372 +v1(3, nb)*v1(3, nb) )
3374 v1(1, nb) = v1(1, nb)/v1_abs
3375 v1(2, nb) = v1(2, nb)/v1_abs
3376 v1(3, nb) = v1(3, nb)/v1_abs
3392 v3(1, nb) = v1(2, nb)*v2(3, nb) &
3393 -v1(3, nb)*v2(2, nb)
3394 v3(2, nb) = v1(3, nb)*v2(1, nb) &
3395 -v1(1, nb)*v2(3, nb)
3396 v3(3, nb) = v1(1, nb)*v2(2, nb) &
3397 -v1(2, nb)*v2(1, nb)
3399 v3_abs = dsqrt( v3(1, nb)*v3(1, nb) &
3400 +v3(2, nb)*v3(2, nb) &
3401 +v3(3, nb)*v3(3, nb) )
3403 v3(1, nb) = v3(1, nb)/v3_abs
3404 v3(2, nb) = v3(2, nb)/v3_abs
3405 v3(3, nb) = v3(3, nb)/v3_abs
3409 a_over_2_v3(1, nb) = 0.5d0*thick*v3(1, nb)
3410 a_over_2_v3(2, nb) = 0.5d0*thick*v3(2, nb)
3411 a_over_2_v3(3, nb) = 0.5d0*thick*v3(3, nb)
3421 n_totlyr = gausses(1)%pMaterial%totallyr
3422 do n_layer=1,n_totlyr
3429 sumlyr = sumlyr + 2 * gausses(1)%pMaterial%shell_var(m)%weight
3434 zeta_ly = -1 + sumlyr - gausses(1)%pMaterial%shell_var(n_layer)%weight*(1-
gauss1d2(1,ly))
3441 zeta_ly = -1 + sumlyr - gausses(1)%pMaterial%shell_var(n_layer)%weight*(1-
gauss1d3(1,ly))
3448 zeta_ly = -1 + sumlyr - gausses(1)%pMaterial%shell_var(n_layer)%weight*(1-
gauss1d2(1,ly))
3463 xi_lx = naturalcoord(1)
3464 eta_lx = naturalcoord(2)
3477 u_rot(i, na) = shapefunc(na)*( zeta_ly*a_over_2_v3(i, na) )
3479 dudxi_rot(i, na) = shapederiv(na, 1) &
3480 *( zeta_ly*a_over_2_v3(i, na) )
3481 dudeta_rot(i, na) = shapederiv(na, 2) &
3482 *( zeta_ly*a_over_2_v3(i, na) )
3483 dudzeta_rot(i, na) = shapefunc(na) &
3484 *( a_over_2_v3(i, na) )
3498 g1(i) = g1(i)+shapederiv(na, 1) *elem(i, na) &
3500 g2(i) = g2(i)+shapederiv(na, 2) *elem(i, na) &
3502 g3(i) = g3(i)+dudzeta_rot(i, na)
3509 det = g1(1)*( g2(2)*g3(3)-g2(3)*g3(2) ) &
3510 +g1(2)*( g2(3)*g3(1)-g2(1)*g3(3) ) &
3511 +g1(3)*( g2(1)*g3(2)-g2(2)*g3(1) )
3518 jsize1 = ndof*(nb-1)+1
3519 jsize2 = ndof*(nb-1)+2
3520 jsize3 = ndof*(nb-1)+3
3521 jsize4 = ndof*(nb-1)+4
3522 jsize5 = ndof*(nb-1)+5
3523 jsize6 = ndof*(nb-1)+6
3525 n(1, jsize1) = shapefunc(nb)
3526 n(2, jsize1) = 0.0d0
3527 n(3, jsize1) = 0.0d0
3528 n(1, jsize2) = 0.0d0
3529 n(2, jsize2) = shapefunc(nb)
3530 n(3, jsize2) = 0.0d0
3531 n(1, jsize3) = 0.0d0
3532 n(2, jsize3) = 0.0d0
3533 n(3, jsize3) = shapefunc(nb)
3534 n(1, jsize4) = 0.0d0
3535 n(2, jsize4) = -u_rot(3, nb)
3536 n(3, jsize4) = u_rot(2, nb)
3537 n(1, jsize5) = u_rot(3, nb)
3538 n(2, jsize5) = 0.0d0
3539 n(3, jsize5) = -u_rot(1, nb)
3540 n(1, jsize6) = -u_rot(2, nb)
3541 n(2, jsize6) = u_rot(1, nb)
3542 n(3, jsize6) = 0.0d0
3548 w_w_w_det = w_w_lx*w_ly*det
3549 mass(1:nsize,1:nsize) = mass(1:nsize,1:nsize)+ matmul( transpose(n), n )*w_w_w_det*rho
3550 totalmass = totalmass + w_w_w_det*rho
3562 totalmass = totalmass*3.d0
3568 totdiag = totdiag + mass(lx,lx)
3574 lumped(lx) = mass(lx,lx)/totdiag* totalmass
This module encapsulate the basic functions of all elements provide by this software.
subroutine getshapefunc(fetype, localcoord, func)
Calculate the shape function in natural coordinate system.
subroutine getquadpoint(fetype, np, pos)
Fetch the coordinate of gauss point.
subroutine getshapederiv(fetype, localcoord, shapederiv)
Calculate derivatives of shape function in natural coordinate system.
integer, parameter fe_mitc4_shell
integer, parameter fe_mitc9_shell
real(kind=kreal) function getweight(fetype, np)
Fetch the weight value in given gauss point.
integer function numofquadpoints(fetype)
Obtains the number of quadrature points of the element.
integer, parameter fe_mitc3_shell
subroutine getnodalnaturalcoord(fetype, nncoord)
This module manages calculation relates with materials.
subroutine matlmatrix_shell(gauss, sectType, D, e1_hat, e2_hat, e3_hat, cg1, cg2, cg3, alpha, n_layer)
subroutine stf_shell_mitc(etype, nn, ndof, ecoord, gausses, stiff, thick, mixflag, nddisp)
subroutine elementstress_shell_mitc(etype, nn, ndof, ecoord, gausses, edisp, strain, stress, thick, zeta, n_layer, n_totlyr)
subroutine dl_shell_33(ic_type, nn, ndof, xx, yy, zz, rho, thick, ltype, params, vect, nsize, gausses)
subroutine updatest_shell_mitc33(etype, nn, ndof, ecoord, u, du, gausses, qf, thick, mixflag, nddisp)
subroutine mass_shell(etype, nn, elem, rho, thick, gausses, mass, lumped)
subroutine dl_shell(etype, nn, ndof, xx, yy, zz, rho, thick, ltype, params, vect, nsize, gausses)
subroutine updatest_shell_mitc(etype, nn, ndof, ecoord, u, du, gausses, qf, thick, mixflag, nddisp)
This module provides aux functions.
This modules defines a structure to record history dependent parameter in static analysis.
This module contains Gauss point information.
real(kind=kreal), dimension(2) weight1d2
real(kind=kreal), dimension(1, 2) gauss1d2
real(kind=kreal), dimension(1, 3) gauss1d3
real(kind=kreal), dimension(3) weight1d3
All data should be recorded in every quadrature points.