39
40
41
42#include "implicit_f.inc"
43
44
45
46#include "mvsiz_p.inc"
47
48
49
50#include "param_c.inc"
51
52
53
54 INTEGER JFT,JLT,IPLA,NEL,NPT,NPTT,IMAT,IPT
55 INTEGER IOFF_DUCT(MVSIZ),INLOC
56
58 . pm(npropm,*),thk(*),off(*),off_old(*),sigy(*),dt1c(*),gs(*)
60 . dpla(*),pla(nel),
61 . sigoxx(nel),sigoyy(nel),sigoxy(nel),sigoyz(nel),
62 . sigozx(nel),signxx(nel),signyy(nel),signxy(nel),
63 . signyz(nel),signzx(nel),depsxx(mvsiz),depsyy(mvsiz),
64 . depsxy(mvsiz),depsyz(mvsiz),depszx(mvsiz),epchk(mvsiz),
65 . alpe(mvsiz),thklyl(nel),dplanl(nel)
66 my_real,
DIMENSION(NEL),
INTENT(IN) :: loff
67
68
69
70 INTEGER ICC(MVSIZ),I,ILAYER,ICC_1,J
71
73 . a1(mvsiz),yld(mvsiz),
74 . ca(mvsiz),cb(mvsiz),cn(mvsiz),
ymax(mvsiz),
75 . young(mvsiz),cc(mvsiz),epdr(mvsiz),nu(mvsiz),
76 . epsl(mvsiz),hl(mvsiz),ym(mvsiz),yldl(mvsiz),ezz(mvsiz),
77 . ym_1, a1_1, ca_1, cb_1, cn_1,
78 . epmx, ymax_1, cc_1, epsl_1,
79 . hl_1, yldl_1,nu_1
80
81
82 nu_1 = pm(21,imat)
83 ym_1 = pm(20,imat)
84 a1_1 = pm(24,imat)
85 ca_1 = pm(38,imat)
86 cb_1 = pm(39,imat)
87 cn_1 = pm(40,imat)
88 epmx = pm(41,imat)
89 ymax_1 = pm(42,imat)
90 cc_1 = pm(43,imat)
91 epsl_1 = pm(45,imat)
92 hl_1 = pm(46,imat)
93 yldl_1 = pm(47,imat)
94 icc_1 = nint(pm(49,imat))
95
96 DO i=jft,jlt
97 ym(i) = ym_1
98 a1(i) = a1_1
99 ca(i) = ca_1
100 cb(i) = cb_1
101 cn(i) = cn_1
103 cc(i) = cc_1
104 epdr(i) =
max(em20,pm(44,imat)*dt1c(i))
105 epsl(i) = epsl_1
106 hl(i) = hl_1
107 yldl(i) = yldl_1
108 icc(i) = icc_1
109 nu(i) = nu_1
110 ezz(i) = zero
111 ENDDO
112
113
114
115
116
117 CALL m22cplr(jft ,jlt ,ezz ,off ,pla ,
118 2 ipla ,gs ,yld ,a1 ,ca ,
119 3 cb ,cn ,
ymax ,nu ,dpla ,
120 4 epchk ,young ,cc ,epdr ,epsl ,
121 5 hl ,ym ,yldl ,alpe ,icc ,
122 6 depsxx ,depsyy ,depsxy ,depsyz ,depszx,
123 7 sigoxx ,sigoyy ,sigoxy ,sigoyz ,sigozx,
124 8 signxx ,signyy ,signxy ,signyz ,signzx,
125 9 nel )
126
127 IF (ipt == 1+nptt/2) THEN
128 DO i=jft,jlt
129 sigy(i)=yld(i)
130 ENDDO
131 ENDIF
132
133
134
135 DO i=jft,jlt
136 IF (off(i) == off_old(i) .and. off(i) > zero) THEN
137 IF (off(i) == one .and. epchk(i) >= epmx) THEN
138 off(i)= four_over_5
139 ioff_duct(i) = 1
140 ELSE IF (off(i) < one ) THEN
141 off(i) = off(i)*four_over_5
142 ENDIF
143 ENDIF
144 ENDDO
145
146
147
148 DO i=jft,jlt
149 IF (inloc > 0) THEN
150 IF (loff(i) == one) THEN
151 ezz(i) = -nu(i)*(signxx(i)-sigoxx(i)+signyy(i)-sigoyy(i))/young(i)
152 ezz(i) = ezz(i) -
max(dplanl(i),zero)*half*(signxx(i)+signyy(i))/yld(i)
153 ENDIF
154 ELSE
155 ezz(i) = -(depsxx(i)+depsyy(i))*nu(i)-(one - two*nu(i))*ezz(i)
156 ezz(i) = ezz(i)/(one-nu(i))
157 ENDIF
158 thk(i) = thk(i) + ezz(i) * thklyl(i)*off(i)
159 ENDDO
160
161 RETURN
subroutine ymax(idn, fac, npc, pld, stiffmin, stiffmax, stiffini, stiffavg)
subroutine m22cplr(jft, jlt, ezz, off, epseq, ipla, gs, yld, a1, ca, cb, cn, ymax, nu, dpla, epchk, young, cc, epdr, epsl, hl, ym, yldl, alpe, icc, depsxx, depsyy, depsxy, depsyz, depszx, sigoxx, sigoyy, sigoxy, sigoyz, sigozx, signxx, signyy, signxy, signyz, signzx, nel)