42
43
44
47
48
49
50#include "implicit_f.inc"
51
52
53
54#include "mvsiz_p.inc"
55
56
57
58#include "com04_c.inc"
59
60
61
62 LOGICAL ,INTENT(IN) :: IQEPH
63 INTEGER ,INTENT(IN) :: NEL,IPT,NPT,NUPARAM,NUVAR,NUMTABL
64 INTEGER ,DIMENSION(NUMTABL) ,INTENT(IN) :: ITABLE
65 my_real ,
DIMENSION(NUPARAM) ,
INTENT(IN) :: uparam
66 my_real ,
DIMENSION(NEL) ,
INTENT(IN) :: shf,off,
67 . depsxx,depsyy,depsxy,epsxx,epsyy,epsxy,epsyz,epszx,
68 . sigoxx,sigoyy,sigoxy,sigoyz,sigozx,thk0
69 my_real ,
DIMENSION(MVSIZ,2),
INTENT(INOUT) :: zcfac
70 my_real ,
DIMENSION(MVSIZ) ,
INTENT(INOUT) :: wmc
71 my_real,
DIMENSION(NEL) ,
INTENT(INOUT) :: thk,thly,thklyl
72 my_real ,
DIMENSION(NEL,NUVAR) ,
INTENT(INOUT) :: uvar
73 my_real ,
DIMENSION(NEL) ,
INTENT(OUT) :: ssp,
74 . signxx,signyy,signxy,signyz,signzx
75 TYPE(TTABLE), DIMENSION(NTABLE) :: TABLE
76
77
78
79 INTEGER :: I
80 my_real :: nu,g12,gs,gc,a1c,a2c,tcoat,dezz
81 my_real ,
DIMENSION(NEL) :: et,thfac
82
83 nu = uparam(5)
84 g12 = uparam(6)
85 a1c = uparam(14)
86 a2c = uparam(15)
87 tcoat = uparam(16)
88 ssp = uparam(17)
89 gc = uparam(20)
90 gs = g12*shf(1)
91
92 IF (npt == 1) THEN
93
95 . nel ,nuparam,nuvar ,uparam ,uvar ,
96 . gs ,et ,depsxx ,depsyy ,depsxy ,
97 . epsxx ,epsyy ,epsxy ,epsyz ,epszx ,
98 . sigoxx ,sigoyy ,sigoxy ,sigoyz ,sigozx ,
99 . signxx ,signyy ,signxy ,signyz ,signzx ,
100 . numtabl,itable ,table )
101
102 ELSE
103
104 IF (ipt == 2) THEN
106 . nel ,nuparam,nuvar ,uparam ,uvar ,
107 . gs ,et ,depsxx ,depsyy ,depsxy ,
108 . epsxx ,epsyy ,epsxy ,epsyz ,epszx ,
109 . sigoxx ,sigoyy ,sigoxy ,sigoyz ,sigozx ,
110 . signxx ,signyy ,signxy ,signyz ,signzx
111 . numtabl,itable ,table )
112 thklyl(1:nel) = thk0(1:nel) - two*tcoat
113 thly(1:nel)= one - two * tcoat / thk0(1:nel)
114 wmc(1:nel) = zero
115 ELSE
116 DO i=1,nel
117 signxx(i) = a1c*epsxx(i) + a2c*epsyy(i)
118 signyy(i) = a2c*epsxx(i) + a1c*epsyy(i)
119 signxy(i) = gc*epsxy(i)
120 signyz(i) = gc*epsyz(i)*shf(1)
121 signzx(i) = gc*epszx(i)*shf(1)
122 END DO
123 thklyl(1:nel) = tcoat
124 DO i=1,nel
125 thly(i) = tcoat*(thk0(i)-tcoat) / (thk0(i)**2)
126 END DO
127 IF (ipt == 1) THEN
128 wmc(1:nel) =-half*thly(1:nel)
129 ELSE IF(ipt == 3) THEN
130 wmc(1:nel) = half*thly(1:nel)
131 END IF
132 END IF
133 END IF
134
135
136
137 DO i=1,nel
138 dezz = -(depsxx(i)+depsyy(i))*nu/(one-nu)
139 thk(i) = thk(i) + dezz * thklyl(i)*off(i)
140 ENDDO
141
142
143 IF (iqeph) THEN
144 DO i=1,nel
145 zcfac(i,1) = zcfac(i,1) + et(i) / npt
146 zcfac(i,2) =
min(et(i),zcfac(i,2))
147 ENDDO
148 ENDIF
149
150 RETURN
subroutine law119_membrane(nel, nuparam, nuvar, uparam, uvar, gs, et, depsxx, depsyy, depsxy, epsxx, epsyy, epsxy, epsyz, epszx, sigoxx, sigoyy, sigoxy, sigoyz, sigozx, signxx, signyy, signxy, signyz, signzx, numtabl, itable, table)