33 1 JFT ,JLT ,FORTH ,FOR ,EINT ,
34 2 OFF ,ETH ,THK0 ,EXX , EYY ,
35 3 PM ,NPT ,AREA ,A1 ,A2 ,
36 4 MAT ,MTN ,EINTTH ,DIR ,IR ,
37 5 IS ,NLAY ,THK ,NEL ,IGTYP ,
38 6 NPF , TF ,IPM , TEMPEL , DTEMP ,
39 7 THKLY ,POSLY ,MOM, MATLY)
47#include "implicit_f.inc"
59 INTEGER JFT, JLT,NPT,MTN,NSG,IR,IS,NLAY,
60 . MAT(MVSIZ),NEL,MATLY(*),IPM(NPROPMI,*),IGTYP,
64 . FOR(NEL,5), FORTH(NEL,2), EINT(JLT,2), EINTTH(*),
65 . OFF(*),EINTT(MVSIZ),DIR(NEL,2),THK(*), PM(NPROPM,*),
66 . thkly(*),dtemp(*),tempel(*),tf(*),posly(mvsiz,*),
69 . exx(mvsiz), eyy(mvsiz), eth(mvsiz),thk0(mvsiz) ,
70 .
area(mvsiz),pla(mvsiz),a1(mvsiz), a2(mvsiz)
71 TYPE(elbuf_struct_),
TARGET :: ELBUF_STR
75 INTEGER I, MX, J,IORTH,IPT,ILAY,II(5),NPTT,IT,
76 . IORTH_LAY,IFUNC_ALPHA,J1,J2,J3,JJ,IPT_ALL
79 . dtinv, amu, fact, visc,m12,anu12,anu21,s1,s2,
80 . fscal_alpha,
alpha,deintth,df,wmc,aa,thklay,kxx,kyy
82 . nu(mvsiz),e(mvsiz),a12(mvsiz),
83 . e11(mvsiz), e22(mvsiz),
84 . b3(mvsiz), degmb(mvsiz), degfx(mvsiz),degmbth(mvsiz),
85 . ezz(mvsiz),einf(mvsiz),p(mvsiz),degfxth(mvsiz),
86 . p1(mvsiz),p2(mvsiz),ethke(mvsiz),zi2(mvsiz),sumalz(mvsiz)
87 TYPE(buf_lay_) ,
POINTER :: BUFLY
88 TYPE(l_bufel_) ,
POINTER :: LBUF
99 IF(igtyp == 11 .OR. igtyp == 17 .OR. igtyp == 51 .OR. igtyp == 52)
THEN
101 ELSEIF (mtn==19.OR.mtn==15.OR.mtn==25)
THEN
120 a12(i) = (1.-anu12*anu21)
121 a1(i) = e11(i)/a12(i)
122 a2(i) = e22(i)/a12(i)
131 p(i) =(a1(i)+a2(i))*eth(i)
132 forth(i,1)=forth(i,1)+ p(i)
133 forth(i,2)=forth(i,2)+ p(i)
135 ELSEIF(iorth == 1)
THEN
137 p1(i) = a1(i)*eth(i)+a12(i)*eth(i)
138 p2(i) = a12(i)*eth(i)+a2(i)*eth(i)
139 s1 = dir(i,1)*dir(i,1)*p1(i)
141 s2 = dir(i,2)*dir(i,2)*p1(i)
142 . + dir(i,1)*dir(i,1)*p2(i)
143 forth(i,1)=forth(i,1)+ s1
144 forth(i,2)=forth(i,2)+ s2
149 IF(iorth_lay > 0 )
THEN
150 ethke(jft : jlt) = zero
151 IF(mtn == 15 .OR. mtn == 25)
THEN
154 nptt = elbuf_str%BUFLY(ilay)%NPTT
156 j3 = 1+(ilay-1)*jlt*2
158 lbuf => elbuf_str%BUFLY(ilay)%LBUF(ir,is,it)
170 ifunc_alpha = ipm(219, mx)
171 fscal_alpha = pm(191, mx)
172 alpha = finter(ifunc_alpha,tempel(i),npf,tf,df)
174 eth(i) =
alpha*dtemp(i)
176 a12(i) = (one - anu12*anu21)
177 a1(i) = e11(i)/a12(i)
178 a2(i) = e22(i)/a12(i)
181 p1(i) = a1(i)*eth(i ) + a12(i)*eth(i)
182 p2(i) = a12(i)*eth(i) + a2(i)*eth(i)
184 lbuf%SIG(ii(1)+i)=lbuf%SIG(ii(1)+i) - p1(i)
185 lbuf%SIG(ii(2)+i)=lbuf%SIG(ii(2)+i) - p2(i)
187 for(i,1)=for(i,1) - thkly(jj)*p1(i
188 for(i,2)=for(i,2) - thkly(jj)*p2(i)
190 wmc = posly(i,ipt)*thkly(jj)
191 mom(i,1) = mom(i,1) - wmc*p1(i)
192 mom(i,2) = mom(i,2) - wmc*p2(i)
194 thklay = thkly(jj)*thk0(i)
195 ethke(i) = ethke(i) + thklay*eth(i)
198 ipt_all = ipt_all + nptt
200 ELSEIF(mtn > 26)
THEN
204 sumalz(jft:jlt) = zero
206 nptt = elbuf_str%BUFLY(ilay)%NPTT
208 j3 = 1+(ilay-1)*jlt*2
210 lbuf => elbuf_str%BUFLY(ilay)%LBUF(ir,is,it)
220 a1(i) = e(i)/ (one - nu(i)*nu(i))
223 ifunc_alpha = ipm(219, mx)
224 fscal_alpha = pm(191, mx)
225 alpha = finter(ifunc_alpha,tempel(i),npf,tf,df)
227 eth(i) =
alpha*dtemp(i)
229 p(i) = a1(i)*eth(i) + a2(i)*eth(i)
231 lbuf%SIG(ii(1)+i)=lbuf%SIG(ii(1)+i) - p(i)
232 lbuf%SIG(ii(2)+i)=lbuf%SIG
234 for(i,1)=for(i,1) - thkly(jj)*p(i)
235 for(i,2)=for(i,2) - thkly(jj)*p(i)
237 wmc = posly(i,ipt)*thkly(jj)
238 mom(i,1) = mom(i,1) - wmc*p(i)
239 mom(i,2) = mom(i,2) - wmc*p(i)
243 thklay = thkly(jj)*thk0(i)
244 ethke(i) = ethke(i) + thklay*eth(i)
247 ipt_all = ipt_all + nptt
256 degmbth(i) = -(for(i,1)+for(i,2))*ethke(i)*half*
area(i)
257 eintth(i) = eintth(i) + degmbth(i)
258 eint(i,1) = eint(i,1) + degmbth(i)
261 thk(i) = (thk(i) + ethke(i))*off(i)
266 nptt = elbuf_str%BUFLY(ilay)%NPTT
268 lbuf => elbuf_str%BUFLY(ilay)%LBUF(ir,is,it)
271 lbuf%SIG(ii(1)+i)=lbuf%SIG(ii(1)+i)-p(i)
272 lbuf%SIG(ii(2)+i)=lbuf%SIG(ii(2)+i)-p(i)
276 lbuf%SIG(ii(1)+i)=lbuf%SIG(ii(1)+i)-p1(i)
277 lbuf%SIG(ii(2)+i)=lbuf%SIG(ii(2)+i)-p2(i)
285 for(i,1)=for(i,1) - p(i)
286 for(i,2)=for(i,2) - p(i)
290 for(i,1)=for(i,1) - p1(i)
291 for(i,2)=for(i,2) - p2(i)
297 degmbth(i) = -(for(i,1)+for(i,2))*eth(i)*half*thk0(i)*
area(i)
301 eintth(i) = eintth(i) + degmbth(i)
302 eint(i,1) = eint(i,1) + degmbth(i)
306 thk(i) = thk(i) *(1 + eth(i))*off(i)
subroutine thermexpc(elbuf_str, jft, jlt, forth, for, eint, off, eth, thk0, exx, eyy, pm, npt, area, a1, a2, mat, mtn, eintth, dir, ir, is, nlay, thk, nel, igtyp, npf, tf, ipm, tempel, dtemp, thkly, posly, mom, matly)