xref: /phasta/phSolver/common/e3metric.f (revision 595995161822a203c8467e0e4a253d7bd7d6df32)
1*59599516SKenneth E. Jansenc-----------------------------------------------------------------------
2*59599516SKenneth E. Jansenc
3*59599516SKenneth E. Jansenc  compute the metrics of the mapping from global to local
4*59599516SKenneth E. Jansenc  coordinates and the jacobian of the mapping (weighted by
5*59599516SKenneth E. Jansenc  the quadrature weight
6*59599516SKenneth E. Jansenc
7*59599516SKenneth E. Jansenc-----------------------------------------------------------------------
8*59599516SKenneth E. Jansen      subroutine e3metric(  xl,      shgl,     dxidx,
9*59599516SKenneth E. Jansen     &                      shg,     WdetJ)
10*59599516SKenneth E. Jansen
11*59599516SKenneth E. Jansen      include "common.h"
12*59599516SKenneth E. Jansen
13*59599516SKenneth E. Jansen      real*8     xl(npro,nenl,nsd),    shgl(npro,nsd,nshl),
14*59599516SKenneth E. Jansen     &           dxidx(npro,nsd,nsd),  shg(npro,nshl,nsd),
15*59599516SKenneth E. Jansen     &           WdetJ(npro)
16*59599516SKenneth E. Jansen
17*59599516SKenneth E. Jansen      real*8     dxdxi(npro,nsd,nsd),  tmp(npro)
18*59599516SKenneth E. Jansen
19*59599516SKenneth E. Jansenc
20*59599516SKenneth E. Jansenc.... compute the deformation gradient
21*59599516SKenneth E. Jansenc
22*59599516SKenneth E. Jansen      dxdxi = zero
23*59599516SKenneth E. Jansenc
24*59599516SKenneth E. Jansen       do n = 1, nenl
25*59599516SKenneth E. Jansen          dxdxi(:,1,1) = dxdxi(:,1,1) + xl(:,n,1) * shgl(:,1,n)
26*59599516SKenneth E. Jansen          dxdxi(:,1,2) = dxdxi(:,1,2) + xl(:,n,1) * shgl(:,2,n)
27*59599516SKenneth E. Jansen          dxdxi(:,1,3) = dxdxi(:,1,3) + xl(:,n,1) * shgl(:,3,n)
28*59599516SKenneth E. Jansen          dxdxi(:,2,1) = dxdxi(:,2,1) + xl(:,n,2) * shgl(:,1,n)
29*59599516SKenneth E. Jansen          dxdxi(:,2,2) = dxdxi(:,2,2) + xl(:,n,2) * shgl(:,2,n)
30*59599516SKenneth E. Jansen          dxdxi(:,2,3) = dxdxi(:,2,3) + xl(:,n,2) * shgl(:,3,n)
31*59599516SKenneth E. Jansen          dxdxi(:,3,1) = dxdxi(:,3,1) + xl(:,n,3) * shgl(:,1,n)
32*59599516SKenneth E. Jansen          dxdxi(:,3,2) = dxdxi(:,3,2) + xl(:,n,3) * shgl(:,2,n)
33*59599516SKenneth E. Jansen          dxdxi(:,3,3) = dxdxi(:,3,3) + xl(:,n,3) * shgl(:,3,n)
34*59599516SKenneth E. Jansen       enddo
35*59599516SKenneth E. Jansenc
36*59599516SKenneth E. Jansenc.... compute the inverse of deformation gradient
37*59599516SKenneth E. Jansenc
38*59599516SKenneth E. Jansen       dxidx(:,1,1) =   dxdxi(:,2,2) * dxdxi(:,3,3)
39*59599516SKenneth E. Jansen     &                - dxdxi(:,3,2) * dxdxi(:,2,3)
40*59599516SKenneth E. Jansen       dxidx(:,1,2) =   dxdxi(:,3,2) * dxdxi(:,1,3)
41*59599516SKenneth E. Jansen     &                - dxdxi(:,1,2) * dxdxi(:,3,3)
42*59599516SKenneth E. Jansen       dxidx(:,1,3) =  dxdxi(:,1,2) * dxdxi(:,2,3)
43*59599516SKenneth E. Jansen     &                - dxdxi(:,1,3) * dxdxi(:,2,2)
44*59599516SKenneth E. Jansen       tmp          = one / ( dxidx(:,1,1) * dxdxi(:,1,1)
45*59599516SKenneth E. Jansen     &                       + dxidx(:,1,2) * dxdxi(:,2,1)
46*59599516SKenneth E. Jansen     &                       + dxidx(:,1,3) * dxdxi(:,3,1) )
47*59599516SKenneth E. Jansen       dxidx(:,1,1) = dxidx(:,1,1) * tmp
48*59599516SKenneth E. Jansen       dxidx(:,1,2) = dxidx(:,1,2) * tmp
49*59599516SKenneth E. Jansen       dxidx(:,1,3) = dxidx(:,1,3) * tmp
50*59599516SKenneth E. Jansen       dxidx(:,2,1) = (dxdxi(:,2,3) * dxdxi(:,3,1)
51*59599516SKenneth E. Jansen     &                - dxdxi(:,2,1) * dxdxi(:,3,3)) * tmp
52*59599516SKenneth E. Jansen       dxidx(:,2,2) = (dxdxi(:,1,1) * dxdxi(:,3,3)
53*59599516SKenneth E. Jansen     &                - dxdxi(:,3,1) * dxdxi(:,1,3)) * tmp
54*59599516SKenneth E. Jansen       dxidx(:,2,3) = (dxdxi(:,2,1) * dxdxi(:,1,3)
55*59599516SKenneth E. Jansen     &                - dxdxi(:,1,1) * dxdxi(:,2,3)) * tmp
56*59599516SKenneth E. Jansen       dxidx(:,3,1) = (dxdxi(:,2,1) * dxdxi(:,3,2)
57*59599516SKenneth E. Jansen     &                - dxdxi(:,2,2) * dxdxi(:,3,1)) * tmp
58*59599516SKenneth E. Jansen       dxidx(:,3,2) = (dxdxi(:,3,1) * dxdxi(:,1,2)
59*59599516SKenneth E. Jansen     &                - dxdxi(:,1,1) * dxdxi(:,3,2)) * tmp
60*59599516SKenneth E. Jansen       dxidx(:,3,3) = (dxdxi(:,1,1) * dxdxi(:,2,2)
61*59599516SKenneth E. Jansen     &                - dxdxi(:,1,2) * dxdxi(:,2,1)) * tmp
62*59599516SKenneth E. Jansenc
63*59599516SKenneth E. Jansen       WdetJ = Qwt(lcsyst,intp) / tmp
64*59599516SKenneth E. Jansenc
65*59599516SKenneth E. Jansenc.... compute the global gradient of shape-functions
66*59599516SKenneth E. Jansenc
67*59599516SKenneth E. Jansen       do n = 1, nshl
68*59599516SKenneth E. Jansen          shg(:,n,1) = shgl(:,1,n) * dxidx(:,1,1) +
69*59599516SKenneth E. Jansen     &                 shgl(:,2,n) * dxidx(:,2,1) +
70*59599516SKenneth E. Jansen     &                 shgl(:,3,n) * dxidx(:,3,1)
71*59599516SKenneth E. Jansen          shg(:,n,2) = shgl(:,1,n) * dxidx(:,1,2) +
72*59599516SKenneth E. Jansen     &                 shgl(:,2,n) * dxidx(:,2,2) +
73*59599516SKenneth E. Jansen     &                 shgl(:,3,n) * dxidx(:,3,2)
74*59599516SKenneth E. Jansen          shg(:,n,3) = shgl(:,1,n) * dxidx(:,1,3) +
75*59599516SKenneth E. Jansen     &                 shgl(:,2,n) * dxidx(:,2,3) +
76*59599516SKenneth E. Jansen     &                 shgl(:,3,n) * dxidx(:,3,3)
77*59599516SKenneth E. Jansen       enddo
78*59599516SKenneth E. Jansen
79*59599516SKenneth E. Jansen       return
80*59599516SKenneth E. Jansen       end
81*59599516SKenneth E. Jansen
82*59599516SKenneth E. Jansen
83*59599516SKenneth E. Jansen
84