45
46
47
50
51
52
53#include "implicit_f.inc"
54
55
56
57#include "mvsiz_p.inc"
58
59
60
61#include "param_c.inc"
62#include "impl1_c.inc"
63
64
65
66 INTEGER JFT, JLT ,IORTH ,JHBE,MTN,NPPT,NEL
67 INTEGER MAT(*),IPM(NPROPMI,*),IGEO(NPROPGI,*)
68
70 . pm(npropm,*),hh(2,*),cc(3,3,*),uparam(*),
71 . gama(mvsiz,6),
cg(3,3,*),g33(3,3,*),sig(nel,6),eps(*)
72
73
74
75 INTEGER I,MX,IAD,J,K,IPLAST
76
78 . nu,lamda,gg,c1,qc(9,mvsiz),qcg(9,mvsiz),qg(9,mvsiz),
79 . qgc(9,mvsiz),g3(3,mvsiz),tt,tv,ca,cb,cn,g(mvsiz),qh(mvsiz),
80 . fac(mvsiz),smin,s1,nu12,nu21,efac
81
83 IF (iorth>0) THEN
84 CALL gettrans(jft,jlt,gama,qc,qcg,qgc,qg)
85 IF (mtn==14.OR.mtn==12) THEN
86 DO i=jft,jlt
87 mx =mat(i)
88 cc(1,1,i) =pm(40,mx)
89 cc(2,2,i) =pm(43,mx)
90 cc(3,3,i) =pm(45,mx)
91 cc(1,2,i) =pm(41,mx)
92 cc(2,3,i) =pm(44,mx)
93 cc(1,3,i) =pm(42,mx)
94 g3(1,i) =pm(46,mx)
95 g3(2,i) =pm(47,mx)
96 g3(3,i) =pm(48,mx)
97 ENDDO
99 . qg ,cc ,g3 ,g33 ,
cg )
100 ELSEIF (mtn==25) THEN
101 DO i=jft,jlt
102 mx =mat(i)
103 nu12 =pm(35,mx)
104 nu21 =pm(36,mx)
105 s1 = one-nu12*nu21
106 cc(1,1,i) =pm(33,mx)/
max(em20,s1)
107 cc(2,2,i) =pm(34,mx)/
max(em20,s1)
108 cc(3,3,i) =pm(186,mx)
109 cc(1,2,i) =half*(nu21*cc(1,1,i)+nu12*cc(2,2,i))
110 cc(2,3,i) =zero
111 cc(1,3,i) =zero
112 g3(1,i) =pm(37,mx)
113 g3(2,i) =pm(38,mx)
114 g3(3,i) =pm(39,mx)
115 ENDDO
117 . qg ,cc ,g3 ,g33 ,
cg )
118 ELSEIF (mtn==28.OR.mtn==50.OR.mtn==68) THEN
119 DO i=jft,jlt
120 mx =mat(i)
121 cc(1,1,i) = uparam(1)
122 cc(2,2,i) = uparam(2)
123 cc(3,3,i) = uparam(3)
124 cc(1,2,i) = zero
125 cc(2,3,i) = zero
126 cc(1,3,i) = zero
127 g3(1,i) = uparam(4)
128 g3(2,i) = uparam(5)
129 g3(3,i) = uparam(6)
130 ENDDO
132 . qg ,cc ,g3 ,g33 ,
cg )
133 ELSEIF (mtn==53) THEN
134 DO i=jft,jlt
135 mx =mat(i)
136 cc(1,1,i) = uparam(1)
137 cc(2,2,i) = uparam(2)
138 cc(3,3,i) = cc(2,2,i)
139 cc(1,2,i) = zero
140 cc(2,3,i) = zero
141 cc(1,3,i) = zero
142 g3(1,i) = uparam(3)
143 g3(2,i) = uparam(4)
144 g3(3,i) = g3(1,i)
145 ENDDO
147 . qg ,cc ,g3 ,g33 ,
cg )
148 ELSE
149
150 iorth = 0
151 DO i=jft,jlt
152 mx =mat(i)
153 nu =pm(21,mx)
154 c1 =three*pm(32,mx)/(one+nu)
155 lamda=c1*nu
156
157 gg =c1*(one-two*nu)
158 hh(1,i)=lamda
159 hh(2,i)=gg*half
160 ENDDO
161 ENDIF
162 ELSE
163
164
165 IF (mtn==42) THEN
166 efac=twop5
167 DO i=jft,jlt
168 mx =mat(i)
169 lamda=efac*fac(i)*pm(100,mx)
170
171 gg =efac*fac(i)*pm(32,mx)
172 hh(1,i)=lamda
173 hh(2,i)=gg*half
174 ENDDO
175 ELSEIF (mtn==62.OR.mtn==62.OR.mtn==69.OR.mtn==82) THEN
176 efac=twop5
177 DO i=jft,jlt
178 mx =mat(i)
179 nu =pm(21,mx)
180 c1 =three*pm(32,mx)/(one+nu)
181 lamda=c1*nu*fac(i)
182
183 gg =c1*(one-two*nu)*fac(i)
184 hh(1,i)=lamda
185 hh(2,i)=gg*half
186 ENDDO
187 ELSE
188 DO i=jft,jlt
189 mx =mat(i)
190 nu =pm(21,mx)
191 c1 =three*pm(32,mx)/(one+nu)
192 lamda=c1*nu
193
194 gg =c1*(one-two*nu)
195 hh(1,i)=lamda
196 hh(2,i)=gg*half
197 ENDDO
198 ENDIF
199 ENDIF
200
201 IF (ikt==2) THEN
202
203 ELSEIF (ikt==3) THEN
204 SELECT CASE (mtn)
205 CASE(1)
206 CASE(2,36)
207 iplast =0
208 DO i=jft,jlt
209 mx =mat(i)
210
211 IF(fac(i)<one.AND.iter_nl>0) THEN
212
213 iplast =1
214
215
216 ENDIF
217 ENDDO
218
219
220
221
222
223 IF (iorth==0.AND.iplast==1) iorth=1
224 CASE(10)
225 END SELECT
226
227 ELSEIF (ikt==4) THEN
228 s1=one*nppt
229 SELECT CASE (mtn)
230 CASE(1)
231 CASE(2,36)
232 iplast =0
233 DO i=jft,jlt
234
235 IF(fac(i)<one.AND.iter_nl>0) iplast
236 ENDDO
237 IF (iorth==0.AND.iplast==1) iorth=1
238 CASE(10)
239 END SELECT
240 ENDIF
241
242
243 RETURN
subroutine cg(dim, mat, rhs, sol, max_iter, tol)
subroutine get_etfac_s(nel, sfac, mtn)
subroutine gettrans(jft, jlt, gama, qc, qcg, qgc, qg)
subroutine mstiforth(jft, jlt, qc, qcg, qgc, qg, cc, g3, g33, cg)