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
655 zeta_ly = -1 +sumlyr -gausses(1)%pMaterial%shell_var(n_layer)%weight*(1-
xg(ny, ly))
667 xi_lx = naturalcoord(1)
668 eta_lx = naturalcoord(2)
686 v1_i(i) = v1_i(i)+shapefunc(na)*v1(i, na)
687 v2_i(i) = v2_i(i)+shapefunc(na)*v2(i, na)
688 v3_i(i) = v3_i(i)+shapefunc(na)*v3(i, na)
702 *( zeta_ly*a_over_2_v3(i, na) )
705 = shapederiv(na, 1) &
706 *( zeta_ly*a_over_2_v3(i, na) )
708 = shapederiv(na, 2) &
709 *( zeta_ly*a_over_2_v3(i, na) )
712 *( a_over_2_v3(i, na) )
729 g1(i) = g1(i)+shapederiv(na, 1) &
732 g2(i) = g2(i)+shapederiv(na, 2) &
735 g3(i) = g3(i)+dudzeta_rot(i, na)
744 det = g1(1)*( g2(2)*g3(3)-g2(3)*g3(2) ) &
745 +g1(2)*( g2(3)*g3(1)-g2(1)*g3(3) ) &
746 +g1(3)*( g2(1)*g3(2)-g2(2)*g3(1) )
754 *( g2(2)*g3(3)-g2(3)*g3(2) )
756 *( g2(3)*g3(1)-g2(1)*g3(3) )
758 *( g2(1)*g3(2)-g2(2)*g3(1) )
760 *( g3(2)*g1(3)-g3(3)*g1(2) )
762 *( g3(3)*g1(1)-g3(1)*g1(3) )
764 *( g3(1)*g1(2)-g3(2)*g1(1) )
766 *( g1(2)*g2(3)-g1(3)*g2(2) )
768 *( g1(3)*g2(1)-g1(1)*g2(3) )
770 *( g1(1)*g2(2)-g1(2)*g2(1) )
774 g3_abs = dsqrt( g3(1)*g3(1) &
782 e3_hat(1) = g3(1)/g3_abs
783 e3_hat(2) = g3(2)/g3_abs
784 e3_hat(3) = g3(3)/g3_abs
786 e1_hat(1) = g2(2)*e3_hat(3) &
788 e1_hat(2) = g2(3)*e3_hat(1) &
790 e1_hat(3) = g2(1)*e3_hat(2) &
792 e1_hat_abs = dsqrt( e1_hat(1)*e1_hat(1) &
793 +e1_hat(2)*e1_hat(2) &
794 +e1_hat(3)*e1_hat(3) )
795 e1_hat(1) = e1_hat(1)/e1_hat_abs
796 e1_hat(2) = e1_hat(2)/e1_hat_abs
797 e1_hat(3) = e1_hat(3)/e1_hat_abs
799 e2_hat(1) = e3_hat(2)*e1_hat(3) &
801 e2_hat(2) = e3_hat(3)*e1_hat(1) &
803 e2_hat(3) = e3_hat(1)*e1_hat(2) &
805 e2_hat_abs = dsqrt( e2_hat(1)*e2_hat(1) &
806 +e2_hat(2)*e2_hat(2) &
807 +e2_hat(3)*e2_hat(3) )
808 e2_hat(1) = e2_hat(1)/e2_hat_abs
809 e2_hat(2) = e2_hat(2)/e2_hat_abs
810 e2_hat(3) = e2_hat(3)/e2_hat_abs
815 (gausses(lx), shell, d, &
816 e1_hat, e2_hat, e3_hat, cg1, cg2, cg3, &
824 jsize1 = ndof*(nb-1)+1
825 jsize2 = ndof*(nb-1)+2
826 jsize3 = ndof*(nb-1)+3
827 jsize4 = ndof*(nb-1)+4
828 jsize5 = ndof*(nb-1)+5
829 jsize6 = ndof*(nb-1)+6
831 aa1(1) = dudxi_rot(2, nb) *g1(3)-dudxi_rot(3, nb) *g1(2)
832 aa1(2) = dudxi_rot(3, nb) *g1(1)-dudxi_rot(1, nb) *g1(3)
833 aa1(3) = dudxi_rot(1, nb) *g1(2)-dudxi_rot(2, nb) *g1(1)
835 aa2(1) = dudxi_rot(2, nb) *g2(3)-dudxi_rot(3, nb) *g2(2)
836 aa2(2) = dudxi_rot(3, nb) *g2(1)-dudxi_rot(1, nb) *g2(3)
837 aa2(3) = dudxi_rot(1, nb) *g2(2)-dudxi_rot(2, nb) *g2(1)
839 aa3(1) = dudxi_rot(2, nb) *g3(3)-dudxi_rot(3, nb) *g3(2)
840 aa3(2) = dudxi_rot(3, nb) *g3(1)-dudxi_rot(1, nb) *g3(3)
841 aa3(3) = dudxi_rot(1, nb) *g3(2)-dudxi_rot(2, nb) *g3(1)
843 bb1(1) = dudeta_rot(2, nb) *g1(3)-dudeta_rot(3, nb) *g1(2)
844 bb1(2) = dudeta_rot(3, nb) *g1(1)-dudeta_rot(1, nb) *g1(3)
845 bb1(3) = dudeta_rot(1, nb) *g1(2)-dudeta_rot(2, nb) *g1(1)
847 bb2(1) = dudeta_rot(2, nb) *g2(3)-dudeta_rot(3, nb) *g2(2)
848 bb2(2) = dudeta_rot(3, nb) *g2(1)-dudeta_rot(1, nb) *g2(3)
849 bb2(3) = dudeta_rot(1, nb) *g2(2)-dudeta_rot(2, nb) *g2(1)
851 bb3(1) = dudeta_rot(2, nb) *g3(3)-dudeta_rot(3, nb) *g3(2)
852 bb3(2) = dudeta_rot(3, nb) *g3(1)-dudeta_rot(1, nb) *g3(3)
853 bb3(3) = dudeta_rot(1, nb) *g3(2)-dudeta_rot(2, nb) *g3(1)
855 cc1(1) = dudzeta_rot(2, nb)*g1(3)-dudzeta_rot(3, nb)*g1(2)
856 cc1(2) = dudzeta_rot(3, nb)*g1(1)-dudzeta_rot(1, nb)*g1(3)
857 cc1(3) = dudzeta_rot(1, nb)*g1(2)-dudzeta_rot(2, nb)*g1(1)
859 cc2(1) = dudzeta_rot(2, nb)*g2(3)-dudzeta_rot(3, nb)*g2(2)
860 cc2(2) = dudzeta_rot(3, nb)*g2(1)-dudzeta_rot(1, nb)*g2(3)
861 cc2(3) = dudzeta_rot(1, nb)*g2(2)-dudzeta_rot(2, nb)*g2(1)
863 b(1, jsize1) = shapederiv(nb, 1)*g1(1)
864 b(2, jsize1) = shapederiv(nb, 2)*g2(1)
865 b(3, jsize1) = shapederiv(nb, 1)*g2(1) &
866 +shapederiv(nb, 2)*g1(1)
867 b(4, jsize1) = shapederiv(nb, 2)*g3(1)
868 b(5, jsize1) = shapederiv(nb, 1)*g3(1)
870 b(1, jsize2) = shapederiv(nb, 1)*g1(2)
871 b(2, jsize2) = shapederiv(nb, 2)*g2(2)
872 b(3, jsize2) = shapederiv(nb, 1)*g2(2) &
873 +shapederiv(nb, 2)*g1(2)
874 b(4, jsize2) = shapederiv(nb, 2)*g3(2)
875 b(5, jsize2) = shapederiv(nb, 1)*g3(2)
877 b(1, jsize3) = shapederiv(nb, 1)*g1(3)
878 b(2, jsize3) = shapederiv(nb, 2)*g2(3)
879 b(3, jsize3) = shapederiv(nb, 1)*g2(3) &
880 +shapederiv(nb, 2)*g1(3)
881 b(4, jsize3) = shapederiv(nb, 2)*g3(3)
882 b(5, jsize3) = shapederiv(nb, 1)*g3(3)
884 b(1, jsize4) = aa1(1)
885 b(2, jsize4) = bb2(1)
886 b(3, jsize4) = aa2(1)+bb1(1)
887 b(4, jsize4) = bb3(1)+cc2(1)
888 b(5, jsize4) = aa3(1)+cc1(1)
890 b(1, jsize5) = aa1(2)
891 b(2, jsize5) = bb2(2)
892 b(3, jsize5) = aa2(2)+bb1(2)
893 b(4, jsize5) = bb3(2)+cc2(2)
894 b(5, jsize5) = aa3(2)+cc1(2)
896 b(1, jsize6) = aa1(3)
897 b(2, jsize6) = bb2(3)
898 b(3, jsize6) = aa2(3)+bb1(3)
899 b(4, jsize6) = bb3(3)+cc2(3)
900 b(5, jsize6) = aa3(3)+cc1(3)
909 do jsize = 1, ndof*nn
916 = 0.5d0*( 1.0d0-xi_lx )*b_di(4, jsize, 4, 1, ly) &
917 +0.5d0*( 1.0d0+xi_lx )*b_di(4, jsize, 2, 1, ly)
920 = 0.5d0*( 1.0d0-eta_lx )*b_di(5, jsize, 1, 1, ly) &
921 +0.5d0*( 1.0d0+eta_lx )*b_di(5, jsize, 3, 1, ly)
928 xxi_lx = xi_lx /dsqrt( 1.0d0/3.0d0 )
929 eeta_lx = eta_lx/dsqrt( 3.0d0/5.0d0 )
931 do ip = 1, npoints_tying(1)
934 = ( 0.5d0*( 1.0d0+xxi_di(ip, 1)*xxi_lx ) ) &
935 *( ( 0.5d0*eeta_di(ip, 1)*eeta_lx ) &
936 *( 1.0d0+eeta_di(ip, 1)*eeta_lx ) &
937 +( 1.0d0-eeta_di(ip, 1)*eeta_di(ip, 1) ) &
938 *( 1.0d0-eeta_lx*eeta_lx ) )
942 xxi_lx = xi_lx /dsqrt( 3.0d0/5.0d0 )
943 eeta_lx = eta_lx/dsqrt( 1.0d0/3.0d0 )
945 do ip = 1, npoints_tying(2)
948 = ( ( 0.5d0*xxi_di(ip, 2) *xxi_lx ) &
949 *( 1.0d0+xxi_di(ip, 2) *xxi_lx ) &
950 +( 1.0d0-xxi_di(ip, 2) *xxi_di(ip, 2) ) &
951 *( 1.0d0-xxi_lx*xxi_lx ) ) &
952 *( 0.5d0*( 1.0d0+eeta_di(ip, 2)*eeta_lx ) )
956 xxi_lx = xi_lx /dsqrt( 1.0d0/3.0d0 )
957 eeta_lx = eta_lx/dsqrt( 1.0d0/3.0d0 )
959 do ip = 1, npoints_tying(3)
962 = ( 0.5d0*( 1.0d0+xxi_di(ip, 1)*xxi_lx ) ) &
963 *( 0.5d0*( 1.0d0+eeta_di(ip, 1)*eeta_lx ) )
967 do jsize = 1, ndof*nn
975 do ip = 1, npoints_tying(1)
979 = b(1, jsize)+h(ip, 1)*b_di(1, jsize, ip, 1, ly)
982 = b(5, jsize)+h(ip, 1)*b_di(5, jsize, ip, 1, ly)
986 do ip = 1, npoints_tying(2)
990 = b(2, jsize)+h(ip, 2)*b_di(2, jsize, ip, 2, ly)
993 = b(4, jsize)+h(ip, 2)*b_di(4, jsize, ip, 2, ly)
997 do ip = 1, npoints_tying(3)
1001 = b(3, jsize)+h(ip, 3)*b_di(3, jsize, ip, 3, ly)
1010 do jsize = 1, ndof*nn
1017 = ( 1.0d0-xi_lx )*b_di(4, jsize, 2, 1, ly) &
1018 +xi_lx *b_di(5, jsize, 1, 1, ly) &
1019 +xi_lx *( b_di(4, jsize, 3, 1, ly) &
1020 -b_di(5, jsize, 3, 1, ly) )
1024 = eta_lx*b_di(4, jsize, 2, 1, ly) &
1025 +( 1.0d0-eta_lx )*b_di(5, jsize, 1, 1, ly) &
1026 -eta_lx*( b_di(4, jsize, 3, 1, ly) &
1027 -b_di(5, jsize, 3, 1, ly) )
1035 w_w_w_det = w_w_lx*w_ly*det
1039 db(1:5, 1:ndof*nn) = matmul( d, b(1:5, 1:ndof*nn ) )
1045 tmpstiff(isize, jsize) &
1046 = tmpstiff(isize, jsize) &
1047 +w_w_w_det*gausses(1)%pMaterial%shell_var(n_layer)%weight*dot_product( b(:, isize), db(:, jsize) )
1056 jsize1 = ndof*(nb-1)+1
1057 jsize2 = ndof*(nb-1)+2
1058 jsize3 = ndof*(nb-1)+3
1059 jsize4 = ndof*(nb-1)+4
1060 jsize5 = ndof*(nb-1)+5
1061 jsize6 = ndof*(nb-1)+6
1063 b1(1, jsize1) = shapederiv(nb, 1)
1064 b1(2, jsize1) = 0.0d0
1065 b1(3, jsize1) = 0.0d0
1066 b1(1, jsize2) = 0.0d0
1067 b1(2, jsize2) = shapederiv(nb, 1)
1068 b1(3, jsize2) = 0.0d0
1069 b1(1, jsize3) = 0.0d0
1070 b1(2, jsize3) = 0.0d0
1071 b1(3, jsize3) = shapederiv(nb, 1)
1072 b1(1, jsize4) = 0.0d0
1073 b1(2, jsize4) = -dudxi_rot(3, nb)
1074 b1(3, jsize4) = dudxi_rot(2, nb)
1075 b1(1, jsize5) = dudxi_rot(3, nb)
1076 b1(2, jsize5) = 0.0d0
1077 b1(3, jsize5) = -dudxi_rot(1, nb)
1078 b1(1, jsize6) = -dudxi_rot(2, nb)
1079 b1(2, jsize6) = dudxi_rot(1, nb)
1080 b1(3, jsize6) = 0.0d0
1082 b2(1, jsize1) = shapederiv(nb, 2)
1083 b2(2, jsize1) = 0.0d0
1084 b2(3, jsize1) = 0.0d0
1085 b2(1, jsize2) = 0.0d0
1086 b2(2, jsize2) = shapederiv(nb, 2)
1087 b2(3, jsize2) = 0.0d0
1088 b2(1, jsize3) = 0.0d0
1089 b2(2, jsize3) = 0.0d0
1090 b2(3, jsize3) = shapederiv(nb, 2)
1091 b2(1, jsize4) = 0.0d0
1092 b2(2, jsize4) = -dudeta_rot(3, nb)
1093 b2(3, jsize4) = dudeta_rot(2, nb)
1094 b2(1, jsize5) = dudeta_rot(3, nb)
1095 b2(2, jsize5) = 0.0d0
1096 b2(3, jsize5) = -dudeta_rot(1, nb)
1097 b2(1, jsize6) = -dudeta_rot(2, nb)
1098 b2(2, jsize6) = dudeta_rot(1, nb)
1099 b2(3, jsize6) = 0.0d0
1101 b3(1, jsize1) = 0.0d0
1102 b3(2, jsize1) = 0.0d0
1103 b3(3, jsize1) = 0.0d0
1104 b3(1, jsize2) = 0.0d0
1105 b3(2, jsize2) = 0.0d0
1106 b3(3, jsize2) = 0.0d0
1107 b3(1, jsize3) = 0.0d0
1108 b3(2, jsize3) = 0.0d0
1109 b3(3, jsize3) = 0.0d0
1110 b3(1, jsize4) = 0.0d0
1111 b3(2, jsize4) = -dudzeta_rot(3, nb)
1112 b3(3, jsize4) = dudzeta_rot(2, nb)
1113 b3(1, jsize5) = dudzeta_rot(3, nb)
1114 b3(2, jsize5) = 0.0d0
1115 b3(3, jsize5) = -dudzeta_rot(1, nb)
1116 b3(1, jsize6) = -dudzeta_rot(2, nb)
1117 b3(2, jsize6) = dudzeta_rot(1, nb)
1118 b3(3, jsize6) = 0.0d0
1125 do jsize = 1, ndof*nn
1127 cv12(jsize) = ( cg1(1)*b1(2, jsize) &
1128 +cg2(1)*b2(2, jsize) &
1129 +cg3(1)*b3(2, jsize) ) &
1130 -( cg1(2)*b1(1, jsize) &
1131 +cg2(2)*b2(1, jsize) &
1132 +cg3(2)*b3(1, jsize) )
1133 cv13(jsize) = ( cg1(1)*b1(3, jsize) &
1134 +cg2(1)*b2(3, jsize) &
1135 +cg3(1)*b3(3, jsize) ) &
1136 -( cg1(3)*b1(1, jsize) &
1137 +cg2(3)*b2(1, jsize) &
1138 +cg3(3)*b3(1, jsize) )
1139 cv21(jsize) = ( cg1(2)*b1(1, jsize) &
1140 +cg2(2)*b2(1, jsize) &
1141 +cg3(2)*b3(1, jsize) ) &
1142 -( cg1(1)*b1(2, jsize) &
1143 +cg2(1)*b2(2, jsize) &
1144 +cg3(1)*b3(2, jsize) )
1145 cv23(jsize) = ( cg1(2)*b1(3, jsize) &
1146 +cg2(2)*b2(3, jsize) &
1147 +cg3(2)*b3(3, jsize) ) &
1148 -( cg1(3)*b1(2, jsize) &
1149 +cg2(3)*b2(2, jsize) &
1150 +cg3(3)*b3(2, jsize) )
1151 cv31(jsize) = ( cg1(3)*b1(1, jsize) &
1152 +cg2(3)*b2(1, jsize) &
1153 +cg3(3)*b3(1, jsize) ) &
1154 -( cg1(1)*b1(3, jsize) &
1155 +cg2(1)*b2(3, jsize) &
1156 +cg3(1)*b3(3, jsize) )
1157 cv32(jsize) = ( cg1(3)*b1(2, jsize) &
1158 +cg2(3)*b2(2, jsize) &
1159 +cg3(3)*b3(2, jsize) ) &
1160 -( cg1(2)*b1(3, jsize) &
1161 +cg2(2)*b2(3, jsize) &
1162 +cg3(2)*b3(3, jsize) )
1173 jsize = ndof*(nb-1)+j
1176 = v1_i(1)*cv12(jsize)*v2_i(2) &
1177 +v1_i(1)*cv13(jsize)*v2_i(3) &
1178 +v1_i(2)*cv21(jsize)*v2_i(1) &
1179 +v1_i(2)*cv23(jsize)*v2_i(3) &
1180 +v1_i(3)*cv31(jsize)*v2_i(1) &
1181 +v1_i(3)*cv32(jsize)*v2_i(2)
1190 jsize1 = ndof*(nb-1)+1
1191 jsize2 = ndof*(nb-1)+2
1192 jsize3 = ndof*(nb-1)+3
1193 jsize4 = ndof*(nb-1)+4
1194 jsize5 = ndof*(nb-1)+5
1195 jsize6 = ndof*(nb-1)+6
1197 cv_theta(jsize1) = 0.0d0
1198 cv_theta(jsize2) = 0.0d0
1199 cv_theta(jsize3) = 0.0d0
1200 cv_theta(jsize4) = v3_i(1)*shapefunc(nb)
1201 cv_theta(jsize5) = v3_i(2)*shapefunc(nb)
1202 cv_theta(jsize6) = v3_i(3)*shapefunc(nb)
1207 do jsize = 1, ndof*nn
1209 cv(jsize) = cv_theta(jsize)-0.5d0*cv_w(jsize)
1216 do jsize = 1, ndof*nn
1217 do isize = 1, ndof*nn
1219 tmpstiff(isize, jsize) &
1220 = tmpstiff(isize, jsize) &
1221 +w_w_w_det*gausses(1)%pMaterial%shell_var(n_layer)%weight*alpha*cv(isize)*cv(jsize)
1237 stiff(1:nn*ndof, 1:nn*ndof) = tmpstiff(1:nn*ndof, 1:nn*ndof)
1248 if( mixflag == 1 )
then
1276 tmpstiff(1:nn*ndof, 1:nn*ndof) = stiff(1:nn*ndof, 1:nn*ndof)
1280 stiff(i,j) = tmpstiff(sstable(i),sstable(j))
1284 elseif( mixflag == 2 )
then
1305 tmpstiff(1:nn*ndof, 1:nn*ndof) = stiff(1:nn*ndof, 1:nn*ndof)
1309 stiff(i,j) = tmpstiff(sstable(i),sstable(j))
1324 (etype, nn, ndof, ecoord, gausses, edisp, &
1325 strain, stress, thick, zeta, n_layer, n_totlyr)
1334 integer(kind = kint),
intent(in) :: etype
1335 integer(kind = kint),
intent(in) :: nn
1336 integer(kind = kint),
intent(in) :: ndof
1337 real(kind = kreal),
intent(in) :: ecoord(3, nn)
1339 real(kind = kreal),
intent(in) :: edisp(6, nn)
1340 real(kind = kreal),
intent(out) :: strain(:,:)
1341 real(kind = kreal),
intent(out) :: stress(:,:)
1342 real(kind = kreal),
intent(in) :: thick
1343 real(kind = kreal),
intent(in) :: zeta
1351 integer :: npoints_tying(3)
1354 integer :: n_layer, n_totlyr
1356 real(kind = kreal) :: d(5, 5)
1357 real(kind = kreal) :: elem(3, nn)
1358 real(kind = kreal) :: xi_lx, eta_lx, zeta_ly
1359 real(kind = kreal) :: naturalcoord(2)
1360 real(kind = kreal) :: tpcoord(6, 2, 3)
1361 real(kind = kreal) :: nncoord(nn, 2)
1362 real(kind = kreal) :: shapefunc(nn)
1363 real(kind = kreal) :: shapederiv(nn, 2)
1364 real(kind = kreal) :: alpha
1365 real(kind = kreal) :: xxi_lx, eeta_lx
1366 real(kind = kreal) :: xxi_di(6, 3), eeta_di(6, 3)
1367 real(kind = kreal) :: h(nn, 3)
1368 real(kind = kreal) :: v1(3, nn), v2(3, nn), v3(3, nn)
1369 real(kind = kreal) :: v1_abs, v2_abs, v3_abs
1370 real(kind = kreal) :: a_over_2_v3(3, nn)
1371 real(kind = kreal) :: a_over_2_theta_cross_v3(3, nn)
1372 real(kind = kreal) :: u_rot(3, nn)
1373 real(kind = kreal) :: theta(3, nn)
1374 real(kind = kreal) :: dudxi(3), dudeta(3), dudzeta(3)
1375 real(kind = kreal) :: dudxi_rot(3, nn), dudeta_rot(3, nn), &
1377 real(kind = kreal) :: g1(3), g2(3), g3(3)
1378 real(kind = kreal) :: g3_abs
1379 real(kind = kreal) :: e_0(3)
1380 real(kind = kreal) :: cg1(3), cg2(3), cg3(3)
1381 real(kind = kreal) :: det
1382 real(kind = kreal) :: det_cg3(3)
1383 real(kind = kreal) :: det_inv
1384 real(kind = kreal) :: det_cg3_abs
1385 real(kind = kreal) :: e1_hat(3), e2_hat(3), e3_hat(3)
1386 real(kind = kreal) :: e1_hat_abs, e2_hat_abs
1387 real(kind = kreal) :: e11, e22, e12_2, e23_2, e31_2
1388 real(kind = kreal) :: e11_di(6, 3), e22_di(6, 3), &
1389 e12_di_2(6, 3), e23_di_2(6, 3), &
1391 real(kind = kreal) :: e(3, 3), ev(5)
1392 real(kind = kreal) :: s(3, 3), sv(5)
1393 real(kind = kreal) :: sumlyr
1432 elem(:, :) = ecoord(:, :)
1438 theta(1, na) = edisp(4, na)
1439 theta(2, na) = edisp(5, na)
1440 theta(3, na) = edisp(6, na)
1458 tpcoord(1, 1, 1) = 0.0d0
1459 tpcoord(2, 1, 1) = 1.0d0
1460 tpcoord(3, 1, 1) = 0.0d0
1461 tpcoord(4, 1, 1) = -1.0d0
1463 tpcoord(1, 2, 1) = -1.0d0
1464 tpcoord(2, 2, 1) = 0.0d0
1465 tpcoord(3, 2, 1) = 1.0d0
1466 tpcoord(4, 2, 1) = 0.0d0
1476 tpcoord(1, 1, 1) = -1.0d0*dsqrt( 1.0d0/3.0d0 )
1477 tpcoord(2, 1, 1) = 1.0d0*dsqrt( 1.0d0/3.0d0 )
1478 tpcoord(3, 1, 1) = 1.0d0*dsqrt( 1.0d0/3.0d0 )
1479 tpcoord(4, 1, 1) = -1.0d0*dsqrt( 1.0d0/3.0d0 )
1480 tpcoord(5, 1, 1) = 1.0d0*dsqrt( 1.0d0/3.0d0 )
1481 tpcoord(6, 1, 1) = -1.0d0*dsqrt( 1.0d0/3.0d0 )
1483 tpcoord(1, 2, 1) = -1.0d0*dsqrt( 3.0d0/5.0d0 )
1484 tpcoord(2, 2, 1) = -1.0d0*dsqrt( 3.0d0/5.0d0 )
1485 tpcoord(3, 2, 1) = 1.0d0*dsqrt( 3.0d0/5.0d0 )
1486 tpcoord(4, 2, 1) = 1.0d0*dsqrt( 3.0d0/5.0d0 )
1487 tpcoord(5, 2, 1) = 0.0d0*dsqrt( 3.0d0/5.0d0 )
1488 tpcoord(6, 2, 1) = 0.0d0*dsqrt( 3.0d0/5.0d0 )
1491 tpcoord(1, 1, 2) = -1.0d0*dsqrt( 3.0d0/5.0d0 )
1492 tpcoord(2, 1, 2) = 0.0d0*dsqrt( 3.0d0/5.0d0 )
1493 tpcoord(3, 1, 2) = 1.0d0*dsqrt( 3.0d0/5.0d0 )
1494 tpcoord(4, 1, 2) = 1.0d0*dsqrt( 3.0d0/5.0d0 )
1495 tpcoord(5, 1, 2) = 0.0d0*dsqrt( 3.0d0/5.0d0 )
1496 tpcoord(6, 1, 2) = -1.0d0*dsqrt( 3.0d0/5.0d0 )
1498 tpcoord(1, 2, 2) = -1.0d0*dsqrt( 1.0d0/3.0d0 )
1499 tpcoord(2, 2, 2) = -1.0d0*dsqrt( 1.0d0/3.0d0 )
1500 tpcoord(3, 2, 2) = -1.0d0*dsqrt( 1.0d0/3.0d0 )
1501 tpcoord(4, 2, 2) = 1.0d0*dsqrt( 1.0d0/3.0d0 )
1502 tpcoord(5, 2, 2) = 1.0d0*dsqrt( 1.0d0/3.0d0 )
1503 tpcoord(6, 2, 2) = 1.0d0*dsqrt( 1.0d0/3.0d0 )
1506 tpcoord(1, 1, 3) = -1.0d0*dsqrt( 1.0d0/3.0d0 )
1507 tpcoord(2, 1, 3) = 1.0d0*dsqrt( 1.0d0/3.0d0 )
1508 tpcoord(3, 1, 3) = 1.0d0*dsqrt( 1.0d0/3.0d0 )
1509 tpcoord(4, 1, 3) = -1.0d0*dsqrt( 1.0d0/3.0d0 )
1511 tpcoord(1, 2, 3) = -1.0d0*dsqrt( 1.0d0/3.0d0 )
1512 tpcoord(2, 2, 3) = -1.0d0*dsqrt( 1.0d0/3.0d0 )
1513 tpcoord(3, 2, 3) = 1.0d0*dsqrt( 1.0d0/3.0d0 )
1514 tpcoord(4, 2, 3) = 1.0d0*dsqrt( 1.0d0/3.0d0 )
1519 xxi_di(1, 1) = -1.0d0
1520 xxi_di(2, 1) = 1.0d0
1521 xxi_di(3, 1) = 1.0d0
1522 xxi_di(4, 1) = -1.0d0
1523 xxi_di(5, 1) = 1.0d0
1524 xxi_di(6, 1) = -1.0d0
1526 eeta_di(1, 1) = -1.0d0
1527 eeta_di(2, 1) = -1.0d0
1528 eeta_di(3, 1) = 1.0d0
1529 eeta_di(4, 1) = 1.0d0
1530 eeta_di(5, 1) = 0.0d0
1531 eeta_di(6, 1) = 0.0d0
1534 xxi_di(1, 2) = -1.0d0
1535 xxi_di(2, 2) = 0.0d0
1536 xxi_di(3, 2) = 1.0d0
1537 xxi_di(4, 2) = 1.0d0
1538 xxi_di(5, 2) = 0.0d0
1539 xxi_di(6, 2) = -1.0d0
1541 eeta_di(1, 2) = -1.0d0
1542 eeta_di(2, 2) = -1.0d0
1543 eeta_di(3, 2) = -1.0d0
1544 eeta_di(4, 2) = 1.0d0
1545 eeta_di(5, 2) = 1.0d0
1546 eeta_di(6, 2) = 1.0d0
1556 tpcoord(1, 1, 1) = 0.5d0
1557 tpcoord(2, 1, 1) = 0.0d0
1558 tpcoord(3, 1, 1) = 0.5d0
1560 tpcoord(1, 2, 1) = 0.0d0
1561 tpcoord(2, 2, 1) = 0.5d0
1562 tpcoord(3, 2, 1) = 0.5d0
1572 naturalcoord(1) = 0.0d0
1573 naturalcoord(2) = 0.0d0
1586 g1(i) = g1(i)+shapederiv(na, 1) &
1603 naturalcoord(1) = nncoord(nb, 1)
1604 naturalcoord(2) = nncoord(nb, 2)
1618 g1(i) = g1(i)+shapederiv(na, 1) &
1620 g2(i) = g2(i)+shapederiv(na, 2) &
1629 det_cg3(1) = g1(2)*g2(3)-g1(3)*g2(2)
1630 det_cg3(2) = g1(3)*g2(1)-g1(1)*g2(3)
1631 det_cg3(3) = g1(1)*g2(2)-g1(2)*g2(1)
1633 det_cg3_abs = dsqrt( det_cg3(1)*det_cg3(1) &
1634 +det_cg3(2)*det_cg3(2) &
1635 +det_cg3(3)*det_cg3(3) )
1637 v3(1, nb) = det_cg3(1)/det_cg3_abs
1638 v3(2, nb) = det_cg3(2)/det_cg3_abs
1639 v3(3, nb) = det_cg3(3)/det_cg3_abs
1643 v2(1, nb) = v3(2, nb)*e_0(3)-v3(3, nb)*e_0(2)
1644 v2(2, nb) = v3(3, nb)*e_0(1)-v3(1, nb)*e_0(3)
1645 v2(3, nb) = v3(1, nb)*e_0(2)-v3(2, nb)*e_0(1)
1647 v2_abs = dsqrt( v2(1, nb)*v2(1, nb) &
1648 +v2(2, nb)*v2(2, nb) &
1649 +v2(3, nb)*v2(3, nb) )
1651 if( v2_abs .GT. 1.0d-15 )
then
1653 v2(1, nb) = v2(1, nb)/v2_abs
1654 v2(2, nb) = v2(2, nb)/v2_abs
1655 v2(3, nb) = v2(3, nb)/v2_abs
1657 v1(1, nb) = v2(2, nb)*v3(3, nb) &
1658 -v2(3, nb)*v3(2, nb)
1659 v1(2, nb) = v2(3, nb)*v3(1, nb) &
1660 -v2(1, nb)*v3(3, nb)
1661 v1(3, nb) = v2(1, nb)*v3(2, nb) &
1662 -v2(2, nb)*v3(1, nb)
1664 v1_abs = dsqrt( v1(1, nb)*v1(1, nb) &
1665 +v1(2, nb)*v1(2, nb) &
1666 +v1(3, nb)*v1(3, nb) )
1668 v1(1, nb) = v1(1, nb)/v1_abs
1669 v1(2, nb) = v1(2, nb)/v1_abs
1670 v1(3, nb) = v1(3, nb)/v1_abs
1686 v3(1, nb) = v1(2, nb)*v2(3, nb) &
1687 -v1(3, nb)*v2(2, nb)
1688 v3(2, nb) = v1(3, nb)*v2(1, nb) &
1689 -v1(1, nb)*v2(3, nb)
1690 v3(3, nb) = v1(1, nb)*v2(2, nb) &
1691 -v1(2, nb)*v2(1, nb)
1693 v3_abs = dsqrt( v3(1, nb)*v3(1, nb) &
1694 +v3(2, nb)*v3(2, nb) &
1695 +v3(3, nb)*v3(3, nb) )
1697 v3(1, nb) = v3(1, nb)/v3_abs
1698 v3(2, nb) = v3(2, nb)/v3_abs
1699 v3(3, nb) = v3(3, nb)/v3_abs
1703 a_over_2_v3(1, nb) = 0.5d0*thick*v3(1, nb)
1704 a_over_2_v3(2, nb) = 0.5d0*thick*v3(2, nb)
1705 a_over_2_v3(3, nb) = 0.5d0*thick*v3(3, nb)
1709 a_over_2_theta_cross_v3(1, nb) &
1710 = theta(2, nb)*a_over_2_v3(3, nb) &
1711 -theta(3, nb)*a_over_2_v3(2, nb)
1712 a_over_2_theta_cross_v3(2, nb) &
1713 = theta(3, nb)*a_over_2_v3(1, nb) &
1714 -theta(1, nb)*a_over_2_v3(3, nb)
1715 a_over_2_theta_cross_v3(3, nb) &
1716 = theta(1, nb)*a_over_2_v3(2, nb) &
1717 -theta(2, nb)*a_over_2_v3(1, nb)
1747 do ip = 1, npoints_tying(it)
1751 naturalcoord(1) = tpcoord(ip, 1, it)
1752 naturalcoord(2) = tpcoord(ip, 2, it)
1766 *( zeta_ly*a_over_2_v3(i, na) )
1769 = shapederiv(na, 1) &
1770 *( zeta_ly*a_over_2_v3(i, na) )
1772 = shapederiv(na, 2) &
1773 *( zeta_ly*a_over_2_v3(i, na) )
1774 dudzeta_rot(i, na) &
1776 *( a_over_2_v3(i, na) )
1793 g1(i) = g1(i)+shapederiv(na, 1) &
1796 g2(i) = g2(i)+shapederiv(na, 2) &
1799 g3(i) = g3(i)+dudzeta_rot(i, na)
1817 +shapederiv(na, 1) &
1819 +zeta_ly*a_over_2_theta_cross_v3(i, na) )
1822 +shapederiv(na, 2) &
1824 +zeta_ly*a_over_2_theta_cross_v3(i, na) )
1828 *( a_over_2_theta_cross_v3(i, na) )
1839 *( ( g1(1)*dudxi(1) +dudxi(1) *g1(1) ) &
1840 +( g1(2)*dudxi(2) +dudxi(2) *g1(2) ) &
1841 +( g1(3)*dudxi(3) +dudxi(3) *g1(3) ) )
1844 *( ( g2(1)*dudeta(1)+dudeta(1)*g2(1) ) &
1845 +( g2(2)*dudeta(2)+dudeta(2)*g2(2) ) &
1846 +( g2(3)*dudeta(3)+dudeta(3)*g2(3) ) )
1848 = ( g1(1)*dudeta(1) +dudxi(1) *g2(1) ) &
1849 +( g1(2)*dudeta(2) +dudxi(2) *g2(2) ) &
1850 +( g1(3)*dudeta(3) +dudxi(3) *g2(3) )
1852 = ( g2(1)*dudzeta(1)+dudeta(1) *g3(1) ) &
1853 +( g2(2)*dudzeta(2)+dudeta(2) *g3(2) ) &
1854 +( g2(3)*dudzeta(3)+dudeta(3) *g3(3) )
1856 = ( g3(1)*dudxi(1) +dudzeta(1)*g1(1) ) &
1857 +( g3(2)*dudxi(2) +dudzeta(2)*g1(2) ) &
1858 +( g3(3)*dudxi(3) +dudzeta(3)*g1(3) )
1870 sumlyr = sumlyr +2*gausses(1)%pMaterial%shell_var(m)%weight
1872 zeta_ly = -1 +sumlyr -gausses(1)%pMaterial%shell_var(n_layer)%weight*(1-zeta)
1880 naturalcoord(1) = nncoord(lx, 1)
1881 naturalcoord(2) = nncoord(lx, 2)
1883 xi_lx = naturalcoord(1)
1884 eta_lx = naturalcoord(2)
1898 *( zeta_ly*a_over_2_v3(i, na) )
1901 = shapederiv(na, 1) &
1902 *( zeta_ly*a_over_2_v3(i, na) )
1904 = shapederiv(na, 2) &
1905 *( zeta_ly*a_over_2_v3(i, na) )
1906 dudzeta_rot(i, na) &
1908 *( a_over_2_v3(i, na) )
1925 g1(i) = g1(i)+shapederiv(na, 1) &
1928 g2(i) = g2(i)+shapederiv(na, 2) &
1931 g3(i) = g3(i)+dudzeta_rot(i, na)
1939 det = g1(1)*( g2(2)*g3(3)-g2(3)*g3(2) ) &
1940 +g1(2)*( g2(3)*g3(1)-g2(1)*g3(3) ) &
1941 +g1(3)*( g2(1)*g3(2)-g2(2)*g3(1) )
1943 if(det == 0.0d0)
then
1944 write(*,*)
"ERROR:LIB Shell in l2009 Not Jacobian"
1954 *( g2(2)*g3(3)-g2(3)*g3(2) )
1956 *( g2(3)*g3(1)-g2(1)*g3(3) )
1958 *( g2(1)*g3(2)-g2(2)*g3(1) )
1960 *( g3(2)*g1(3)-g3(3)*g1(2) )
1962 *( g3(3)*g1(1)-g3(1)*g1(3) )
1964 *( g3(1)*g1(2)-g3(2)*g1(1) )
1966 *( g1(2)*g2(3)-g1(3)*g2(2) )
1968 *( g1(3)*g2(1)-g1(1)*g2(3) )
1970 *( g1(1)*g2(2)-g1(2)*g2(1) )
1974 g3_abs = dsqrt( g3(1)*g3(1) &
1982 e3_hat(1) = g3(1)/g3_abs
1983 e3_hat(2) = g3(2)/g3_abs
1984 e3_hat(3) = g3(3)/g3_abs
1986 e1_hat(1) = g2(2)*e3_hat(3) &
1988 e1_hat(2) = g2(3)*e3_hat(1) &
1990 e1_hat(3) = g2(1)*e3_hat(2) &
1992 e1_hat_abs = dsqrt( e1_hat(1)*e1_hat(1) &
1993 +e1_hat(2)*e1_hat(2) &
1994 +e1_hat(3)*e1_hat(3) )
1995 e1_hat(1) = e1_hat(1)/e1_hat_abs
1996 e1_hat(2) = e1_hat(2)/e1_hat_abs
1997 e1_hat(3) = e1_hat(3)/e1_hat_abs
1999 e2_hat(1) = e3_hat(2)*e1_hat(3) &
2000 -e3_hat(3)*e1_hat(2)
2001 e2_hat(2) = e3_hat(3)*e1_hat(1) &
2002 -e3_hat(1)*e1_hat(3)
2003 e2_hat(3) = e3_hat(1)*e1_hat(2) &
2004 -e3_hat(2)*e1_hat(1)
2005 e2_hat_abs = dsqrt( e2_hat(1)*e2_hat(1) &
2006 +e2_hat(2)*e2_hat(2) &
2007 +e2_hat(3)*e2_hat(3) )
2008 e2_hat(1) = e2_hat(1)/e2_hat_abs
2009 e2_hat(2) = e2_hat(2)/e2_hat_abs
2010 e2_hat(3) = e2_hat(3)/e2_hat_abs
2024 +shapederiv(na, 1) &
2026 +zeta_ly*a_over_2_theta_cross_v3(i, na) )
2029 +shapederiv(na, 2) &
2031 +zeta_ly*a_over_2_theta_cross_v3(i, na) )
2035 *( a_over_2_theta_cross_v3(i, na) )
2046 *( ( g1(1)*dudxi(1) +dudxi(1) *g1(1) ) &
2047 +( g1(2)*dudxi(2) +dudxi(2) *g1(2) ) &
2048 +( g1(3)*dudxi(3) +dudxi(3) *g1(3) ) )
2051 *( ( g2(1)*dudeta(1)+dudeta(1)*g2(1) ) &
2052 +( g2(2)*dudeta(2)+dudeta(2)*g2(2) ) &
2053 +( g2(3)*dudeta(3)+dudeta(3)*g2(3) ) )
2055 = ( g1(1)*dudeta(1) +dudxi(1) *g2(1) ) &
2056 +( g1(2)*dudeta(2) +dudxi(2) *g2(2) ) &
2057 +( g1(3)*dudeta(3) +dudxi(3) *g2(3) )
2059 = ( g2(1)*dudzeta(1)+dudeta(1) *g3(1) ) &
2060 +( g2(2)*dudzeta(2)+dudeta(2) *g3(2) ) &
2061 +( g2(3)*dudzeta(3)+dudeta(3) *g3(3) )
2063 = ( g3(1)*dudxi(1) +dudzeta(1)*g1(1) ) &
2064 +( g3(2)*dudxi(2) +dudzeta(2)*g1(2) ) &
2065 +( g3(3)*dudxi(3) +dudzeta(3)*g1(3) )
2075 = 0.5d0*( 1.0d0-xi_lx )*e23_di_2(4, 1) &
2076 +0.5d0*( 1.0d0+xi_lx )*e23_di_2(2, 1)
2079 = 0.5d0*( 1.0d0-eta_lx )*e31_di_2(1, 1) &
2080 +0.5d0*( 1.0d0+eta_lx )*e31_di_2(3, 1)
2085 xxi_lx = xi_lx /dsqrt( 1.0d0/3.0d0 )
2086 eeta_lx = eta_lx/dsqrt( 3.0d0/5.0d0 )
2088 do ip = 1, npoints_tying(1)
2091 = ( 0.5d0*( 1.0d0+xxi_di(ip, 1)*xxi_lx ) ) &
2092 *( ( 0.5d0*eeta_di(ip, 1)*eeta_lx ) &
2093 *( 1.0d0+eeta_di(ip, 1)*eeta_lx ) &
2094 +( 1.0d0-eeta_di(ip, 1)*eeta_di(ip, 1) ) &
2095 *( 1.0d0-eeta_lx*eeta_lx ) )
2099 xxi_lx = xi_lx /dsqrt( 3.0d0/5.0d0 )
2100 eeta_lx = eta_lx/dsqrt( 1.0d0/3.0d0 )
2102 do ip = 1, npoints_tying(2)
2105 = ( ( 0.5d0*xxi_di(ip, 2) *xxi_lx ) &
2106 *( 1.0d0+xxi_di(ip, 2) *xxi_lx ) &
2107 +( 1.0d0-xxi_di(ip, 2) *xxi_di(ip, 2) ) &
2108 *( 1.0d0-xxi_lx*xxi_lx ) ) &
2109 *( 0.5d0*( 1.0d0+eeta_di(ip, 2)*eeta_lx ) )
2113 xxi_lx = xi_lx /dsqrt( 1.0d0/3.0d0 )
2114 eeta_lx = eta_lx/dsqrt( 1.0d0/3.0d0 )
2116 do ip = 1, npoints_tying(3)
2119 = ( 0.5d0*( 1.0d0+xxi_di(ip, 1)*xxi_lx ) ) &
2120 *( 0.5d0*( 1.0d0+eeta_di(ip, 1)*eeta_lx ) )
2128 do ip = 1, npoints_tying(1)
2130 e11 = e11 +h(ip, 1)*e11_di(ip, 1)
2131 e31_2 = e31_2+h(ip, 1)*e31_di_2(ip, 1)
2139 do ip = 1, npoints_tying(2)
2141 e22 = e22 +h(ip, 2)*e22_di(ip, 2)
2142 e23_2 = e23_2+h(ip, 2)*e23_di_2(ip, 2)
2149 do ip = 1, npoints_tying(3)
2151 e12_2 = e12_2+h(ip, 3)*e12_di_2(ip, 3)
2163 = ( 1.0d0-xi_lx )*e23_di_2(2, 1) &
2164 +xi_lx *e31_di_2(1, 1) &
2165 +xi_lx *( e23_di_2(3, 1)-e31_di_2(3, 1) )
2168 = eta_lx*e23_di_2(2, 1) &
2169 +( 1.0d0-eta_lx )*e31_di_2(1, 1) &
2170 -eta_lx*( e23_di_2(3, 1)-e31_di_2(3, 1) )
2188 e(1, 2) = 0.5d0*ev(3)
2189 e(2, 1) = 0.5d0*ev(3)
2190 e(2, 3) = 0.5d0*ev(4)
2191 e(3, 2) = 0.5d0*ev(4)
2192 e(3, 1) = 0.5d0*ev(5)
2193 e(1, 3) = 0.5d0*ev(5)
2198 (gausses(lx), shell, d, &
2199 e1_hat, e2_hat, e3_hat, cg1, cg2, cg3, &
2204 sv = matmul( d, ev )
2221 = ( s(1, 1)*g1(1)*g1(1) &
2222 +s(1, 2)*g1(1)*g2(1) &
2223 +s(1, 3)*g1(1)*g3(1) &
2224 +s(2, 1)*g2(1)*g1(1) &
2225 +s(2, 2)*g2(1)*g2(1) &
2226 +s(2, 3)*g2(1)*g3(1) &
2227 +s(3, 1)*g3(1)*g1(1) &
2228 +s(3, 2)*g3(1)*g2(1) )
2230 = ( s(1, 1)*g1(2)*g1(2) &
2231 +s(1, 2)*g1(2)*g2(2) &
2232 +s(1, 3)*g1(2)*g3(2) &
2233 +s(2, 1)*g2(2)*g1(2) &
2234 +s(2, 2)*g2(2)*g2(2) &
2235 +s(2, 3)*g2(2)*g3(2) &
2236 +s(3, 1)*g3(2)*g1(2) &
2237 +s(3, 2)*g3(2)*g2(2) )
2239 = ( s(1, 1)*g1(3)*g1(3) &
2240 +s(1, 2)*g1(3)*g2(3) &
2241 +s(1, 3)*g1(3)*g3(3) &
2242 +s(2, 1)*g2(3)*g1(3) &
2243 +s(2, 2)*g2(3)*g2(3) &
2244 +s(2, 3)*g2(3)*g3(3) &
2245 +s(3, 1)*g3(3)*g1(3) &
2246 +s(3, 2)*g3(3)*g2(3) )
2248 = ( s(1, 1)*g1(1)*g1(2) &
2249 +s(1, 2)*g1(1)*g2(2) &
2250 +s(1, 3)*g1(1)*g3(2) &
2251 +s(2, 1)*g2(1)*g1(2) &
2252 +s(2, 2)*g2(1)*g2(2) &
2253 +s(2, 3)*g2(1)*g3(2) &
2254 +s(3, 1)*g3(1)*g1(2) &
2255 +s(3, 2)*g3(1)*g2(2) )
2257 = ( s(1, 1)*g1(2)*g1(3) &
2258 +s(1, 2)*g1(2)*g2(3) &
2259 +s(1, 3)*g1(2)*g3(3) &
2260 +s(2, 1)*g2(2)*g1(3) &
2261 +s(2, 2)*g2(2)*g2(3) &
2262 +s(2, 3)*g2(2)*g3(3) &
2263 +s(3, 1)*g3(2)*g1(3) &
2264 +s(3, 2)*g3(2)*g2(3) )
2266 = ( s(1, 1)*g1(3)*g1(1) &
2267 +s(1, 2)*g1(3)*g2(1) &
2268 +s(1, 3)*g1(3)*g3(1) &
2269 +s(2, 1)*g2(3)*g1(1) &
2270 +s(2, 2)*g2(3)*g2(1) &
2271 +s(2, 3)*g2(3)*g3(1) &
2272 +s(3, 1)*g3(3)*g1(1) &
2273 +s(3, 2)*g3(3)*g2(1) )
2276 = ( e(1, 1)*cg1(1)*cg1(1) &
2277 +e(1, 2)*cg1(1)*cg2(1) &
2278 +e(1, 3)*cg1(1)*cg3(1) &
2279 +e(2, 1)*cg2(1)*cg1(1) &
2280 +e(2, 2)*cg2(1)*cg2(1) &
2281 +e(2, 3)*cg2(1)*cg3(1) &
2282 +e(3, 1)*cg3(1)*cg1(1) &
2283 +e(3, 2)*cg3(1)*cg2(1) )
2285 = ( e(1, 1)*cg1(2)*cg1(2) &
2286 +e(1, 2)*cg1(2)*cg2(2) &
2287 +e(1, 3)*cg1(2)*cg3(2) &
2288 +e(2, 1)*cg2(2)*cg1(2) &
2289 +e(2, 2)*cg2(2)*cg2(2) &
2290 +e(2, 3)*cg2(2)*cg3(2) &
2291 +e(3, 1)*cg3(2)*cg1(2) &
2292 +e(3, 2)*cg3(2)*cg2(2) )
2294 = ( e(1, 1)*cg1(3)*cg1(3) &
2295 +e(1, 2)*cg1(3)*cg2(3) &
2296 +e(1, 3)*cg1(3)*cg3(3) &
2297 +e(2, 1)*cg2(3)*cg1(3) &
2298 +e(2, 2)*cg2(3)*cg2(3) &
2299 +e(2, 3)*cg2(3)*cg3(3) &
2300 +e(3, 1)*cg3(3)*cg1(3) &
2301 +e(3, 2)*cg3(3)*cg2(3) )
2303 = ( e(1, 1)*cg1(1)*cg1(2) &
2304 +e(1, 2)*cg1(1)*cg2(2) &
2305 +e(1, 3)*cg1(1)*cg3(2) &
2306 +e(2, 1)*cg2(1)*cg1(2) &
2307 +e(2, 2)*cg2(1)*cg2(2) &
2308 +e(2, 3)*cg2(1)*cg3(2) &
2309 +e(3, 1)*cg3(1)*cg1(2) &
2310 +e(3, 2)*cg3(1)*cg2(2) )
2312 = ( e(1, 1)*cg1(2)*cg1(3) &
2313 +e(1, 2)*cg1(2)*cg2(3) &
2314 +e(1, 3)*cg1(2)*cg3(3) &
2315 +e(2, 1)*cg2(2)*cg1(3) &
2316 +e(2, 2)*cg2(2)*cg2(3) &
2317 +e(2, 3)*cg2(2)*cg3(3) &
2318 +e(3, 1)*cg3(2)*cg1(3) &
2319 +e(3, 2)*cg3(2)*cg2(3) )
2321 = ( e(1, 1)*cg1(3)*cg1(1) &
2322 +e(1, 2)*cg1(3)*cg2(1) &
2323 +e(1, 3)*cg1(3)*cg3(1) &
2324 +e(2, 1)*cg2(3)*cg1(1) &
2325 +e(2, 2)*cg2(3)*cg2(1) &
2326 +e(2, 3)*cg2(3)*cg3(1) &
2327 +e(3, 1)*cg3(3)*cg1(1) &
2328 +e(3, 2)*cg3(3)*cg2(1) )
2344 (etype, nn, ndof, xx, yy, zz, rho, thick, &
2345 ltype, params, vect, nsize, gausses)
2356 integer(kind = kint),
intent(in) :: etype
2357 integer(kind = kint),
intent(in) :: nn
2358 integer(kind = kint),
intent(in) :: ndof
2359 real(kind = kreal),
intent(in) :: xx(*), yy(*), zz(*)
2360 real(kind = kreal),
intent(in) :: rho
2361 real(kind = kreal),
intent(in) :: thick
2362 real(kind = kreal),
intent(in) :: params(*)
2363 real(kind = kreal),
intent(out) :: vect(*)
2364 integer(kind = kint),
intent(out) :: nsize
2368 integer :: ivol, isurf
2375 integer :: jsize1, jsize2, jsize3, &
2376 jsize4, jsize5, jsize6
2378 integer :: n_totlyr, n_layer
2380 real(kind = kreal) :: elem(3, nn)
2381 real(kind = kreal) :: val
2382 real(kind = kreal) :: ax, ay, az
2383 real(kind = kreal) :: rx, ry, rz
2384 real(kind = kreal) :: xi_lx, eta_lx, zeta_ly
2385 real(kind = kreal) :: w_w_lx, w_ly
2386 real(kind = kreal) :: naturalcoord(2)
2387 real(kind = kreal) :: nncoord(nn, 2)
2388 real(kind = kreal) :: shapefunc(nn)
2389 real(kind = kreal) :: shapederiv(nn, 2)
2390 real(kind = kreal) :: v1(3, nn), v2(3, nn), v3(3, nn)
2391 real(kind = kreal) :: v1_abs, v2_abs, v3_abs
2392 real(kind = kreal) :: a_over_2_v3(3, nn)
2393 real(kind = kreal) :: u_rot(3, nn)
2394 real(kind = kreal) :: dudxi_rot(3, nn), dudeta_rot(3, nn), &
2396 real(kind = kreal) :: g1(3), g2(3), g3(3)
2397 real(kind = kreal) :: g1_cross_g2(3)
2398 real(kind = kreal) :: e_0(3)
2399 real(kind = kreal) :: det
2400 real(kind = kreal) :: det_cg3(3)
2401 real(kind = kreal) :: det_cg3_abs
2402 real(kind = kreal) :: w_w_w_det
2403 real(kind = kreal) :: n(3, ndof*nn)
2404 real(kind = kreal) :: hx, hy, hz
2405 real(kind = kreal) :: phx, phy, phz
2406 real(kind = kreal) :: coefx, coefy, coefz
2407 real(kind = kreal) :: x, y, z
2408 real(kind = kreal) :: sumlyr
2464 elem(1, na) = xx(na)
2465 elem(2, na) = yy(na)
2466 elem(3, na) = zz(na)
2479 do isize = 1, ndof*nn
2489 naturalcoord(1) = 0.0d0
2490 naturalcoord(2) = 0.0d0
2503 g1(i) = g1(i)+shapederiv(na, 1) &
2520 naturalcoord(1) = nncoord(nb, 1)
2521 naturalcoord(2) = nncoord(nb, 2)
2535 g1(i) = g1(i)+shapederiv(na, 1) &
2537 g2(i) = g2(i)+shapederiv(na, 2) &
2546 det_cg3(1) = g1(2)*g2(3)-g1(3)*g2(2)
2547 det_cg3(2) = g1(3)*g2(1)-g1(1)*g2(3)
2548 det_cg3(3) = g1(1)*g2(2)-g1(2)*g2(1)
2550 det_cg3_abs = dsqrt( det_cg3(1)*det_cg3(1) &
2551 +det_cg3(2)*det_cg3(2) &
2552 +det_cg3(3)*det_cg3(3) )
2554 v3(1, nb) = det_cg3(1)/det_cg3_abs
2555 v3(2, nb) = det_cg3(2)/det_cg3_abs
2556 v3(3, nb) = det_cg3(3)/det_cg3_abs
2560 v2(1, nb) = v3(2, nb)*e_0(3)-v3(3, nb)*e_0(2)
2561 v2(2, nb) = v3(3, nb)*e_0(1)-v3(1, nb)*e_0(3)
2562 v2(3, nb) = v3(1, nb)*e_0(2)-v3(2, nb)*e_0(1)
2564 v2_abs = dsqrt( v2(1, nb)*v2(1, nb) &
2565 +v2(2, nb)*v2(2, nb) &
2566 +v2(3, nb)*v2(3, nb) )
2568 if( v2_abs .GT. 1.0d-15 )
then
2570 v2(1, nb) = v2(1, nb)/v2_abs
2571 v2(2, nb) = v2(2, nb)/v2_abs
2572 v2(3, nb) = v2(3, nb)/v2_abs
2574 v1(1, nb) = v2(2, nb)*v3(3, nb) &
2575 -v2(3, nb)*v3(2, nb)
2576 v1(2, nb) = v2(3, nb)*v3(1, nb) &
2577 -v2(1, nb)*v3(3, nb)
2578 v1(3, nb) = v2(1, nb)*v3(2, nb) &
2579 -v2(2, nb)*v3(1, nb)
2581 v1_abs = dsqrt( v1(1, nb)*v1(1, nb) &
2582 +v1(2, nb)*v1(2, nb) &
2583 +v1(3, nb)*v1(3, nb) )
2585 v1(1, nb) = v1(1, nb)/v1_abs
2586 v1(2, nb) = v1(2, nb)/v1_abs
2587 v1(3, nb) = v1(3, nb)/v1_abs
2603 v3(1, nb) = v1(2, nb)*v2(3, nb) &
2604 -v1(3, nb)*v2(2, nb)
2605 v3(2, nb) = v1(3, nb)*v2(1, nb) &
2606 -v1(1, nb)*v2(3, nb)
2607 v3(3, nb) = v1(1, nb)*v2(2, nb) &
2608 -v1(2, nb)*v2(1, nb)
2610 v3_abs = dsqrt( v3(1, nb)*v3(1, nb) &
2611 +v3(2, nb)*v3(2, nb) &
2612 +v3(3, nb)*v3(3, nb) )
2614 v3(1, nb) = v3(1, nb)/v3_abs
2615 v3(2, nb) = v3(2, nb)/v3_abs
2616 v3(3, nb) = v3(3, nb)/v3_abs
2620 a_over_2_v3(1, nb) = 0.5d0*thick*v3(1, nb)
2621 a_over_2_v3(2, nb) = 0.5d0*thick*v3(2, nb)
2622 a_over_2_v3(3, nb) = 0.5d0*thick*v3(3, nb)
2635 if( ltype .LT. 10 )
then
2639 else if( ltype .GE. 10 )
then
2648 if( isurf .EQ. 1 )
then
2658 xi_lx = naturalcoord(1)
2659 eta_lx = naturalcoord(2)
2675 *( 0.0d0*a_over_2_v3(i, na) )
2678 = shapederiv(na, 1) &
2679 *( 0.0d0*a_over_2_v3(i, na) )
2681 = shapederiv(na, 2) &
2682 *( 0.0d0*a_over_2_v3(i, na) )
2683 dudzeta_rot(i, na) &
2685 *( a_over_2_v3(i, na) )
2702 g1(i) = g1(i)+shapederiv(na, 1) &
2705 g2(i) = g2(i)+shapederiv(na, 2) &
2735 g1_cross_g2(1) = g1(2)*g2(3)-g1(3)*g2(2)
2736 g1_cross_g2(2) = g1(3)*g2(1)-g1(1)*g2(3)
2737 g1_cross_g2(3) = g1(1)*g2(2)-g1(2)*g2(1)
2743 jsize1 = ndof*(nb-1)+1
2744 jsize2 = ndof*(nb-1)+2
2745 jsize3 = ndof*(nb-1)+3
2746 jsize4 = ndof*(nb-1)+4
2747 jsize5 = ndof*(nb-1)+5
2748 jsize6 = ndof*(nb-1)+6
2750 n(1, jsize1) = shapefunc(nb)
2751 n(1, jsize2) = 0.0d0
2752 n(1, jsize3) = 0.0d0
2753 n(1, jsize4) = 0.0d0
2754 n(1, jsize5) = 0.0d0
2755 n(1, jsize6) = 0.0d0
2756 n(2, jsize1) = 0.0d0
2757 n(2, jsize2) = shapefunc(nb)
2758 n(2, jsize3) = 0.0d0
2759 n(2, jsize4) = 0.0d0
2760 n(2, jsize5) = 0.0d0
2761 n(2, jsize6) = 0.0d0
2762 n(3, jsize1) = 0.0d0
2763 n(3, jsize2) = 0.0d0
2764 n(3, jsize3) = shapefunc(nb)
2765 n(3, jsize4) = 0.0d0
2766 n(3, jsize5) = 0.0d0
2767 n(3, jsize6) = 0.0d0
2771 do isize = 1, ndof*nn
2775 +w_w_lx*( n(1, isize)*g1_cross_g2(1) &
2776 +n(2, isize)*g1_cross_g2(2) &
2777 +n(3, isize)*g1_cross_g2(3) )*val
2792 if( ivol .EQ. 1 )
then
2795 n_totlyr = gausses(1)%pMaterial%totallyr
2796 do n_layer=1,n_totlyr
2804 sumlyr = sumlyr + 2 * gausses(1)%pMaterial%shell_var(m)%weight
2806 zeta_ly = -1 + sumlyr - gausses(1)%pMaterial%shell_var(n_layer)%weight*(1-
xg(ny, ly))
2819 xi_lx = naturalcoord(1)
2820 eta_lx = naturalcoord(2)
2836 *( zeta_ly*a_over_2_v3(i, na) )
2839 = shapederiv(na, 1) &
2840 *( zeta_ly*a_over_2_v3(i, na) )
2842 = shapederiv(na, 2) &
2843 *( zeta_ly*a_over_2_v3(i, na) )
2844 dudzeta_rot(i, na) &
2846 *( a_over_2_v3(i, na) )
2863 g1(i) = g1(i)+shapederiv(na, 1) &
2866 g2(i) = g2(i)+shapederiv(na, 2) &
2869 g3(i) = g3(i)+dudzeta_rot(i, na)
2878 det = g1(1)*( g2(2)*g3(3)-g2(3)*g3(2) ) &
2879 +g1(2)*( g2(3)*g3(1)-g2(1)*g3(3) ) &
2880 +g1(3)*( g2(1)*g3(2)-g2(2)*g3(1) )
2887 jsize1 = ndof*(nb-1)+1
2888 jsize2 = ndof*(nb-1)+2
2889 jsize3 = ndof*(nb-1)+3
2890 jsize4 = ndof*(nb-1)+4
2891 jsize5 = ndof*(nb-1)+5
2892 jsize6 = ndof*(nb-1)+6
2894 n(1, jsize1) = shapefunc(nb)
2895 n(2, jsize1) = 0.0d0
2896 n(3, jsize1) = 0.0d0
2897 n(1, jsize2) = 0.0d0
2898 n(2, jsize2) = shapefunc(nb)
2899 n(3, jsize2) = 0.0d0
2900 n(1, jsize3) = 0.0d0
2901 n(2, jsize3) = 0.0d0
2902 n(3, jsize3) = shapefunc(nb)
2903 n(1, jsize4) = 0.0d0
2904 n(2, jsize4) = -u_rot(3, nb)
2905 n(3, jsize4) = u_rot(2, nb)
2906 n(1, jsize5) = u_rot(3, nb)
2907 n(2, jsize5) = 0.0d0
2908 n(3, jsize5) = -u_rot(1, nb)
2909 n(1, jsize6) = -u_rot(2, nb)
2910 n(2, jsize6) = u_rot(1, nb)
2911 n(3, jsize6) = 0.0d0
2917 w_w_w_det = w_w_lx*w_ly*det
2921 if( ltype .EQ. 1 )
then
2923 do isize = 1, ndof*nn
2925 vect(isize) = vect(isize)+w_w_w_det*n(1, isize)*val
2929 else if( ltype .EQ. 2 )
then
2931 do isize = 1, ndof*nn
2933 vect(isize) = vect(isize)+w_w_w_det*n(2, isize)*val
2937 else if( ltype .EQ. 3 )
then
2939 do isize = 1, ndof*nn
2941 vect(isize) = vect(isize)+w_w_w_det*n(3, isize)*val
2945 else if( ltype .EQ. 4 )
then
2947 do isize = 1, ndof*nn
2949 vect(isize) = vect(isize)+w_w_w_det*rho*ax*n(1, isize)*val
2950 vect(isize) = vect(isize)+w_w_w_det*rho*ay*n(2, isize)*val
2951 vect(isize) = vect(isize)+w_w_w_det*rho*az*n(3, isize)*val
2955 else if( ltype .EQ. 5 )
then
2963 x = x+shapefunc(nb)*elem(1, nb)
2964 y = y+shapefunc(nb)*elem(2, nb)
2965 z = z+shapefunc(nb)*elem(3, nb)
2969 hx = ax+( (x-ax)*rx+(y-ay)*ry+(z-az)*rz )/( rx**2+ry**2+rz**2 )*rx
2970 hy = ay+( (x-ax)*rx+(y-ay)*ry+(z-az)*rz )/( rx**2+ry**2+rz**2 )*ry
2971 hz = az+( (x-ax)*rx+(y-ay)*ry+(z-az)*rz )/( rx**2+ry**2+rz**2 )*rz
2977 coefx = phx*val*rho*val
2978 coefy = phy*val*rho*val
2979 coefz = phz*val*rho*val
2981 do isize = 1, ndof*nn
2985 +w_w_w_det*( n(1, isize)*coefx &
2986 +n(2, isize)*coefy &
2987 +n(3, isize)*coefz )
3019 (ic_type, nn, ndof, xx, yy, zz, rho, thick, &
3020 ltype, params, vect, nsize, gausses)
3031 integer(kind = kint) :: ic_type
3032 integer(kind = kint) :: nn
3033 integer(kind = kint) :: ndof
3034 real(kind = kreal) :: xx(*), yy(*), zz(*)
3035 real(kind = kreal) :: rho
3036 real(kind = kreal) :: thick
3037 real(kind = kreal) :: params(*)
3038 real(kind = kreal) :: vect(*)
3039 integer(kind = kint) :: nsize
3041 real(kind = kreal) :: tmp(24)
3044 if(ic_type == 761)
then
3048 call dl_shell(731, 3, 6, xx, yy, zz, rho, thick, ltype, params, vect, nsize, gausses)
3077 elseif(ic_type == 781)
then
3081 call dl_shell(741, 4, 6, xx, yy, zz, rho, thick, ltype, params, vect, nsize, gausses)
3123 (etype, nn, ndof, ecoord, u, du, gausses, qf, thick, mixflag, nddisp)
3132 integer(kind = kint),
intent(in) :: etype
3133 integer(kind = kint),
intent(in) :: nn, mixflag
3134 integer(kind = kint),
intent(in) :: ndof
3135 real(kind = kreal),
intent(in) :: ecoord(3, nn)
3136 real(kind = kreal),
intent(in) :: u(:, :)
3137 real(kind = kreal),
intent(in) :: du(:, :)
3139 real(kind = kreal),
intent(out) :: qf(:)
3140 real(kind = kreal),
intent(in) :: thick
3142 real(kind = kreal),
intent(in),
optional :: nddisp(3, nn)
3145 real(kind = kreal) :: stiff(nn*ndof, nn*ndof), totaldisp(nn*ndof)
3146 integer(kind = kint) :: i
3148 call stf_shell_mitc(etype, nn, ndof, ecoord, gausses, stiff, thick, mixflag, nddisp)
3152 totaldisp(ndof*(i-1)+1:ndof*i) = u(1:ndof,i) + du(1:ndof,i)
3155 qf = matmul(stiff,totaldisp)
3162 (etype, nn, ndof, ecoord, u, du, gausses, qf, thick, mixflag, nddisp)
3171 integer(kind = kint),
intent(in) :: etype
3172 integer(kind = kint),
intent(in) :: nn, mixflag
3173 integer(kind = kint),
intent(in) :: ndof
3174 real(kind = kreal),
intent(in) :: ecoord(3, nn)
3175 real(kind = kreal),
intent(in) :: u(3, nn*2)
3176 real(kind = kreal),
intent(in) :: du(3, nn*2)
3178 real(kind = kreal),
intent(out) :: qf(:)
3179 real(kind = kreal),
intent(in) :: thick
3181 real(kind = kreal),
intent(in),
optional :: nddisp(3, nn)
3184 real(kind = kreal) :: stiff(nn*ndof, nn*ndof), totaldisp(nn*ndof)
3185 integer(kind = kint) :: i
3187 call stf_shell_mitc(etype, nn, ndof, ecoord, gausses, stiff, thick, mixflag, nddisp)
3191 totaldisp(ndof*(i-1)+1:ndof*(i-1)+3) = u(1:3,2*i-1) + du(1:3,2*i-1)
3192 totaldisp(ndof*(i-1)+4:ndof*(i-1)+6) = u(1:3,2*i) + du(1:3,2*i)
3195 qf = matmul(stiff,totaldisp)
3200 subroutine mass_shell(etype, nn, elem, rho, thick, gausses, mass, lumped)
3206 integer(kind = kint),
intent(in) :: etype
3207 integer(kind = kint),
intent(in) :: nn
3208 real(kind = kreal),
intent(in) :: elem(3,nn)
3209 real(kind = kreal),
intent(in) :: rho
3210 real(kind = kreal),
intent(in) :: thick
3212 real(kind=kreal),
intent(out) :: mass(:,:)
3213 real(kind=kreal),
intent(out) :: lumped(:)
3217 integer :: lx, ly, nsize, ndof
3222 integer :: jsize1, jsize2, jsize3, jsize4, jsize5, jsize6
3223 integer :: n_totlyr, n_layer
3225 real(kind = kreal) :: xi_lx, eta_lx, zeta_ly
3226 real(kind = kreal) :: w_w_lx, w_ly
3227 real(kind = kreal) :: naturalcoord(2)
3228 real(kind = kreal) :: nncoord(nn, 2)
3229 real(kind = kreal) :: shapefunc(nn)
3230 real(kind = kreal) :: shapederiv(nn, 2)
3231 real(kind = kreal) :: v1(3, nn), v2(3, nn), v3(3, nn)
3232 real(kind = kreal) :: v1_abs, v2_abs, v3_abs
3233 real(kind = kreal) :: a_over_2_v3(3, nn)
3234 real(kind = kreal) :: u_rot(3, nn)
3235 real(kind = kreal) :: dudxi_rot(3, nn), dudeta_rot(3, nn), dudzeta_rot(3, nn)
3236 real(kind = kreal) :: g1(3), g2(3), g3(3)
3237 real(kind = kreal) :: e_0(3)
3238 real(kind = kreal) :: det
3239 real(kind = kreal) :: det_cg3(3)
3240 real(kind = kreal) :: det_cg3_abs
3241 real(kind = kreal) :: w_w_w_det
3242 real(kind = kreal) :: n(3, 6*nn)
3243 real(kind = kreal) :: sumlyr, totalmass, totdiag
3275 naturalcoord(1) = 0.0d0
3276 naturalcoord(2) = 0.0d0
3283 g1(:) = matmul( elem, shapederiv(:,1) )
3293 naturalcoord(1) = nncoord(nb, 1)
3294 naturalcoord(2) = nncoord(nb, 2)
3300 g1(:) = matmul( elem, shapederiv(:,1) )
3301 g2(:) = matmul( elem, shapederiv(:,2) )
3305 det_cg3(1) = g1(2)*g2(3)-g1(3)*g2(2)
3306 det_cg3(2) = g1(3)*g2(1)-g1(1)*g2(3)
3307 det_cg3(3) = g1(1)*g2(2)-g1(2)*g2(1)
3309 det_cg3_abs = dsqrt( det_cg3(1)*det_cg3(1) &
3310 +det_cg3(2)*det_cg3(2) &
3311 +det_cg3(3)*det_cg3(3) )
3313 v3(:, nb) = det_cg3(:)/det_cg3_abs
3317 v2(1, nb) = v3(2, nb)*e_0(3)-v3(3, nb)*e_0(2)
3318 v2(2, nb) = v3(3, nb)*e_0(1)-v3(1, nb)*e_0(3)
3319 v2(3, nb) = v3(1, nb)*e_0(2)-v3(2, nb)*e_0(1)
3321 v2_abs = dsqrt( v2(1, nb)*v2(1, nb) &
3322 +v2(2, nb)*v2(2, nb) &
3323 +v2(3, nb)*v2(3, nb) )
3325 if( v2_abs > 1.0d-15 )
then
3327 v2(1, nb) = v2(1, nb)/v2_abs
3328 v2(2, nb) = v2(2, nb)/v2_abs
3329 v2(3, nb) = v2(3, nb)/v2_abs
3331 v1(1, nb) = v2(2, nb)*v3(3, nb) &
3332 -v2(3, nb)*v3(2, nb)
3333 v1(2, nb) = v2(3, nb)*v3(1, nb) &
3334 -v2(1, nb)*v3(3, nb)
3335 v1(3, nb) = v2(1, nb)*v3(2, nb) &
3336 -v2(2, nb)*v3(1, nb)
3338 v1_abs = dsqrt( v1(1, nb)*v1(1, nb) &
3339 +v1(2, nb)*v1(2, nb) &
3340 +v1(3, nb)*v1(3, nb) )
3342 v1(1, nb) = v1(1, nb)/v1_abs
3343 v1(2, nb) = v1(2, nb)/v1_abs
3344 v1(3, nb) = v1(3, nb)/v1_abs
3360 v3(1, nb) = v1(2, nb)*v2(3, nb) &
3361 -v1(3, nb)*v2(2, nb)
3362 v3(2, nb) = v1(3, nb)*v2(1, nb) &
3363 -v1(1, nb)*v2(3, nb)
3364 v3(3, nb) = v1(1, nb)*v2(2, nb) &
3365 -v1(2, nb)*v2(1, nb)
3367 v3_abs = dsqrt( v3(1, nb)*v3(1, nb) &
3368 +v3(2, nb)*v3(2, nb) &
3369 +v3(3, nb)*v3(3, nb) )
3371 v3(1, nb) = v3(1, nb)/v3_abs
3372 v3(2, nb) = v3(2, nb)/v3_abs
3373 v3(3, nb) = v3(3, nb)/v3_abs
3377 a_over_2_v3(1, nb) = 0.5d0*thick*v3(1, nb)
3378 a_over_2_v3(2, nb) = 0.5d0*thick*v3(2, nb)
3379 a_over_2_v3(3, nb) = 0.5d0*thick*v3(3, nb)
3389 n_totlyr = gausses(1)%pMaterial%totallyr
3390 do n_layer=1,n_totlyr
3397 sumlyr = sumlyr + 2 * gausses(1)%pMaterial%shell_var(m)%weight
3399 zeta_ly = -1 + sumlyr - gausses(1)%pMaterial%shell_var(n_layer)%weight*(1-
xg(ny, ly))
3412 xi_lx = naturalcoord(1)
3413 eta_lx = naturalcoord(2)
3426 u_rot(i, na) = shapefunc(na)*( zeta_ly*a_over_2_v3(i, na) )
3428 dudxi_rot(i, na) = shapederiv(na, 1) &
3429 *( zeta_ly*a_over_2_v3(i, na) )
3430 dudeta_rot(i, na) = shapederiv(na, 2) &
3431 *( zeta_ly*a_over_2_v3(i, na) )
3432 dudzeta_rot(i, na) = shapefunc(na) &
3433 *( a_over_2_v3(i, na) )
3447 g1(i) = g1(i)+shapederiv(na, 1) *elem(i, na) &
3449 g2(i) = g2(i)+shapederiv(na, 2) *elem(i, na) &
3451 g3(i) = g3(i)+dudzeta_rot(i, na)
3458 det = g1(1)*( g2(2)*g3(3)-g2(3)*g3(2) ) &
3459 +g1(2)*( g2(3)*g3(1)-g2(1)*g3(3) ) &
3460 +g1(3)*( g2(1)*g3(2)-g2(2)*g3(1) )
3467 jsize1 = ndof*(nb-1)+1
3468 jsize2 = ndof*(nb-1)+2
3469 jsize3 = ndof*(nb-1)+3
3470 jsize4 = ndof*(nb-1)+4
3471 jsize5 = ndof*(nb-1)+5
3472 jsize6 = ndof*(nb-1)+6
3474 n(1, jsize1) = shapefunc(nb)
3475 n(2, jsize1) = 0.0d0
3476 n(3, jsize1) = 0.0d0
3477 n(1, jsize2) = 0.0d0
3478 n(2, jsize2) = shapefunc(nb)
3479 n(3, jsize2) = 0.0d0
3480 n(1, jsize3) = 0.0d0
3481 n(2, jsize3) = 0.0d0
3482 n(3, jsize3) = shapefunc(nb)
3483 n(1, jsize4) = 0.0d0
3484 n(2, jsize4) = -u_rot(3, nb)
3485 n(3, jsize4) = u_rot(2, nb)
3486 n(1, jsize5) = u_rot(3, nb)
3487 n(2, jsize5) = 0.0d0
3488 n(3, jsize5) = -u_rot(1, nb)
3489 n(1, jsize6) = -u_rot(2, nb)
3490 n(2, jsize6) = u_rot(1, nb)
3491 n(3, jsize6) = 0.0d0
3497 w_w_w_det = w_w_lx*w_ly*det
3498 mass(1:nsize,1:nsize) = mass(1:nsize,1:nsize)+ matmul( transpose(n), n )*w_w_w_det*rho
3499 totalmass = totalmass + w_w_w_det*rho
3511 totalmass = totalmass*3.d0
3517 totdiag = totdiag + mass(lx,lx)
3523 lumped(lx) = mass(lx,lx)/totdiag* totalmass