40
41
42
43#include "implicit_f.inc"
44
45
46
47#include "mvsiz_p.inc"
48
49
50
51#include "param_c.inc"
52
53
54
55 INTEGER JFT,JLT,IPLA,NEL,IMAT,IPT,INLOC
56 INTEGER NGL(*)
57
59 . pm(npropm,*),thk(*),off(*),dir(nel,2),dt1c(*),
60 . gs(*),dpla(*),epsd(*),hardm(*)
62 . depsxx(mvsiz),depsyy(mvsiz),depsxy(mvsiz),depsyz(mvsiz),
63 . depszx(mvsiz),sigoxx(nel),sigoyy(nel),sigoxy(nel),
64 . sigoyz(nel),sigozx(nel),signxx(nel),signyy(nel),signxy(nel),
65 . signyz(nel),signzx(nel),pla(nel),thklyl(nel),dplanl(nel),
66 . seqh(nel)
67 my_real,
DIMENSION(NEL),
INTENT(IN) :: loff
68 my_real,
DIMENSION(NEL),
INTENT(INOUT) :: et
69
70
71
72 INTEGER I,J
74 . nu,ezz(mvsiz),young,normxx,normyy,
75 . a01,a02,a03,yld,
ymax,cm,ce,cn,ca,
76 . d11,d22,d12,sxx,syy,sxy,p,q,s11,s22,
77 . s12,a,b,c,seq,dseq_da,dseq_db,dseq_dc,
78 . da_ds11,da_ds22,da_ds12,db_ds11,db_ds22,
79 . db_dq,dc_dq,dq_dsxx,dq_dsyy,ds11_dsxx,
80 . ds11_dsyy,ds22_dsxx,ds22_dsyy,dsxx_dsigx,
81 . dsxx_dsigy,dsyy_dsigx,dsyy_dsigy,dsxy_dsigx,
82 . dsxy_dsigy,a12
83
84!
85 young = pm(20,imat)
86 nu = pm(21,imat)
87 a01 = pm(45,imat)
88 a02 = pm(46,imat)
89 a03 = pm(47,imat)
90 a12 = pm(48,imat)
91 ca = pm(38,imat)
92 ce = pm(39,imat)
93 cn = pm(40,imat)
95 cm = pm(43,imat)
96
97 ezz(1:mvsiz) = zero
98
99
100
101 CALL m32elas(jft ,jlt ,pm ,imat ,gs ,
102 . sigoxx ,sigoyy ,sigoxy ,sigoyz ,sigozx ,
103 . signxx ,signyy ,signxy ,signyz ,signzx ,
104 . depsxx ,depsyy ,depsxy ,depsyz ,depszx ,
105 . nel )
106
107
108
109 CALL m32plas(jft ,jlt ,pm ,off ,pla ,
110 . imat ,dir ,ezz ,ipla ,dt1c ,
111 . dpla ,epsd ,nel ,ngl ,hardm ,
112 . signxx ,signyy ,signxy ,signyz ,signzx ,
113 . depsxx ,depsyy ,depsxy ,depsyz ,depszx )
114
115
116
117 DO i = jft,jlt
118 d11 = dir(i,1)*dir(i,1)
119 d22 = dir(i,2)*dir(i,2)
120 d12 = dir(i,1)*dir(i,2)
121 sxx = d11*signxx(i) + d22*signyy(i) + two*d12*signxy(i)
122 syy = d22*signxx(i) + d11*signyy(i) - two*d12*signxy(i)
123 sxy = d12*(signyy(i) - signxx(i)) + ( d11 - d22 )*signxy(i)
124 p = -(sxx+syy) * third
125 q = (one - (nu/(one - nu)))*p
126 s11 = sxx+q
127 s22 = syy+q
128 s12 = sxy
129 a = a01*s11*s11 + a02*s22*s22 - a03*s11*s22 + a12*s12*s12
130 b = -q*(a01*s11 + a02*s22 - half*a03*(s11+s22))
131 c = (a01+a02-a03)*q*q
132 seqh(i) = sqrt(a+b+b+c)
133
134 IF (dpla(i) > zero) THEN
135 et(i) = hardm(i) / (hardm(i) + young)
136 ELSE
137 et(i) = one
138 ENDIF
139
140 IF (inloc > 0) THEN
141 IF (loff(i) == one) THEN
142 seq =
max(sqrt(a+b+b+c),em20)
143 dseq_da = one/(two*seq)
144 dseq_db = one/(seq)
145 dseq_dc = one/(two*seq)
146 da_ds11 = two*a01*s11 - a03*s22
147 da_ds22 = two*a02*s22 - a03*s11
148 da_ds12 = two*a12*s12
149 db_ds11 = (half*a03-a01)*q
150 db_ds22 = (half*a03-a02)*q
151 db_dq = -(a01*s11 + a02*s22 - half*a03*(s11+s22))
152 dc_dq = two*(a01+a02-a03)*q
153 dq_dsxx = -third*(one - (nu/(one - nu)))
154 dq_dsyy = -third*(one - (nu/(one - nu)))
155 ds11_dsxx = one + dq_dsxx
156 ds11_dsyy = dq_dsyy
157 ds22_dsxx = dq_dsxx
158 ds22_dsyy = one + dq_dsyy
159 dsxx_dsigx = d11
160 dsxx_dsigy = d22
161 dsyy_dsigx = d22
162 dsyy_dsigy = d11
163 dsxy_dsigx = -d12
164 dsxy_dsigy = d12
165 normxx = dseq_da*(
166 . da_ds11*(ds11_dsxx*dsxx_dsigx + ds11_dsyy*dsyy_dsigx) +
167 . da_ds22*(ds22_dsxx*dsxx_dsigx + ds22_dsyy*dsyy_dsigx) +
168 . da_ds12*dsxy_dsigx ) +
169 . dseq_db*(
170 . db_ds11*(ds11_dsxx*dsxx_dsigx + ds11_dsyy*dsyy_dsigx) +
171 . db_ds22*(ds22_dsxx*dsxx_dsigx + ds22_dsyy*dsyy_dsigx) +
172 . db_dq*(dq_dsxx*dsxx_dsigx + dq_dsyy*dsyy_dsigx)) +
173 . dseq_dc*(
174 . dc_dq*(dq_dsxx*dsxx_dsigx + dq_dsyy*dsyy_dsigx))
175 normyy = dseq_da*(
176 . da_ds11*(ds11_dsxx*dsxx_dsigy + ds11_dsyy*dsyy_dsigy) +
177 . da_ds22*(ds22_dsxx*dsxx_dsigy + ds22_dsyy*dsyy_dsigy) +
178 . da_ds12*dsxy_dsigy ) +
179 . dseq_db*(
180 . db_ds11*(ds11_dsxx*dsxx_dsigy + ds11_dsyy*dsyy_dsigy) +
181 . db_ds22*(ds22_dsxx*dsxx_dsigy + ds22_dsyy*dsyy_dsigy) +
182 . db_dq*(dq_dsxx*dsxx_dsigy + dq_dsyy*dsyy_dsigy)) +
183 . dseq_dc*(
184 . dc_dq*(dq_dsxx*dsxx_dsigy + dq_dsyy*dsyy_dsigy))
185 ezz(i) =
max(dplanl(i),zero)*(normxx + normyy)
186 ezz(i) = -nu*((signxx(i)-sigoxx(i)+signyy(i)-sigoyy(i))/young) - ezz(i)
187 ENDIF
188
189 ELSE
190 ezz(i) = -(depsxx(i)+depsyy(i))*(nu/(one-nu)) + ezz(i)
191 ENDIF
192 thk(i) = thk(i) + ezz(i)*thklyl(i)*off(i)
193 ENDDO
194
195 RETURN
196
subroutine ymax(idn, fac, npc, pld, stiffmin, stiffmax, stiffini, stiffavg)
subroutine m32elas(jft, jlt, pm, imat, gs, sigoxx, sigoyy, sigoxy, sigoyz, sigozx, signxx, signyy, signxy, signyz, signzx, depsxx, depsyy, depsxy, depsyz, depszx, nel)
subroutine m32plas(jft, jlt, pm, off, epseq, imat, dir, ezz, ipla, dt1c, dpla1, epspd, nel, ngl, hardm, signxx, signyy, signxy, signyz, signzx, depsxx, depsyy, depsxy, depsyz, depszx)