39
40
41
43
44
45
46#include "implicit_f.inc"
47
48
49
50#include "param_c.inc"
51#include "lagmult.inc"
52
53
54
55 INTEGER ,NCR,NCF_S,NCF_E,LENH,LHMAX
56 INTEGER LLL(*),JLL(*),IADLL(*),IADHF(*),JCIHF(*),IADH(*),JCIH(*),
57 . NPBYL(NNPBY,*),ICFTAG(*),JCFTAG(*)
59 . ms(*),in(*),hh(*),diag(*),xll(*),ltsm(6,*),rbyl(nrby,*)
60
61
62
63 INTEGER I,J,K,IK,IC,ICF,JCF,IR,IFX,NFIX,NFRE,JC,JF,IH,IHF
65 . hij,dd
66
67
68
69
70
71
72 ih = 1
73 iadh(1) = 1
74
75
76
77 DO ic=1,ncf_s
78 DO ik=iadll(ic),iadll(ic+1)-1
79 i = lll(ik)
80 j = jll(ik)
81 IF (j>3) THEN
82 ltsm(j,i) = xll(ik)/in(i)
83 ELSE
84 ltsm(j,i) = xll(ik)/ms(i)
85 ENDIF
86 ENDDO
88 hij = zero
89 DO ik=iadll(
jc),iadll(
jc+1)-1
90 hij = hij + xll(ik)*ltsm(jll(ik),lll(ik))
91 ENDDO
92 IF(hij/=zero)THEN
93 IF(ih>lhmax)THEN
94 CALL ancmsg(msgid=114,anmode=aninfo,
95 . i1=lhmax)
97 ENDIF
98 hh(ih) = hij
100 ih = ih + 1
101 ENDIF
102 ENDDO
103
104 iadh(ic+1) = ih
105 dd = zero
106 DO ik=iadll(ic),iadll(ic+1)-1
107 dd = dd + xll(ik)*ltsm(jll(ik),lll(ik))
108 ENDDO
109 IF(dd<=zero) THEN
110 CALL ancmsg(msgid=115,anmode=aninfo,
111 . i1=ic)
112 ENDIF
113 diag(ic) = dd
114 DO ik=iadll(ic),iadll(ic+1)-1
115 ltsm(jll(ik),lll(ik)) = zero
116 ENDDO
117 ENDDO
118
119
120
121 DO ic=ncf_s+1,ncf_e
122 DO ik=iadll(ic),iadll(ic+1)-1
123 i = lll(ik)
124 j = jll(ik)
125 IF (j>3) THEN
126 ltsm(j,i) = xll(ik)/in(i)
127 ELSE
128 ltsm(j,i) = xll(ik)/ms(i)
129 ENDIF
130 ENDDO
131
132 icf = icftag(ic-ncf_s)
133 DO ihf=iadhf(icf),iadhf(icf+1)-1
134 jcf = jcihf(ihf)
136 hij = zero
137 DO ik=iadll(
jc),iadll(
jc+1)-1
138 hij = hij + xll(ik)*ltsm(jll(ik),lll(ik))
139 ENDDO
140 IF(hij/=zero)THEN
141 hh(ih) = hij
143 ih = ih + 1
144 ENDIF
145 ENDDO
146
148 hij = zero
149 DO ik=iadll(
jc),iadll(
jc+1)-1
150 hij = hij + xll(ik)*ltsm(jll(ik),lll(ik))
151 ENDDO
152 IF(hij/=zero)THEN
153 IF(ih>lhmax)THEN
154 CALL ancmsg(msgid=114,anmode=aninfo,
155 . i1=lhmax)
157 ENDIF
158 hh(ih) = hij
160 ih = ih + 1
161 ENDIF
162 ENDDO
163
164 iadh(ic+1) = ih
165 dd = zero
166 DO ik=iadll(ic),iadll(ic+1)-1
167 dd = dd + xll(ik)*ltsm(jll(ik),lll(ik))
168 ENDDO
169 IF(dd<=zero) THEN
170 CALL ancmsg(msgid=115,anmode=aninfo,
171 . i1=ic)
172 ENDIF
173 diag(ic) = dd
174 DO ik=iadll(ic),iadll(ic+1)-1
175 ltsm(jll(ik),lll(ik)) = zero
176 ENDDO
177 ENDDO
178
179
180
181 DO ic=ncf_e+1,ncr
182 DO ik=iadll(ic),iadll(ic+1)-1
183 i = lll(ik)
184 j = jll(ik)
185 IF (j>3) THEN
186 ltsm(j,i) = xll(ik)/in(i)
187 ELSE
188 ltsm(j,i) = xll(ik)/ms(i)
189 ENDIF
190 ENDDO
192 hij = zero
193 DO ik=iadll(
jc),iadll(
jc+1)-1
194 hij = hij + xll(ik)*ltsm(jll(ik),lll(ik))
195 ENDDO
196 IF(hij/=zero)THEN
197 IF(ih>lhmax)THEN
198 CALL ancmsg(msgid=114,anmode=aninfo,
199 . i1=lhmax)
201 ENDIF
202 hh(ih) = hij
204 ih = ih + 1
205 ENDIF
206 ENDDO
207 iadh(ic+1) = ih
208 dd = 0.
209 DO ik=iadll(ic),iadll(ic+1)-1
210 dd = dd + xll(ik)*ltsm(jll(ik),lll(ik))
211 ENDDO
212 IF(dd<=zero) THEN
213 CALL ancmsg(msgid=115,anmode=aninfo,
214 . i1=ic)
215 ENDIF
216 diag(ic) = dd
217 DO ik=iadll(ic),iadll(ic+1)-1
218 ltsm(jll(ik),lll(ik)) = zero
219 ENDDO
220 ENDDO
221
222
223
224 ic = ncr
225 DO ir = 1,nrbylag
226 nfix = npbyl(4,ir)
227 nfre = npbyl(5,ir)
228 ifx = npbyl(7,ir)
229 IF (nfix>0.AND.nfre>0) THEN
230 DO k = 1,3
231 ic = ic + 1
232 DO ik=iadll(ic),iadll(ic+1)-1
233 i = lll(ik)
234 j = jll(ik)
235 IF (j<=3) THEN
236 ltsm(j,i) = xll(ik)/ms(i)
237 CALL ancmsg(msgid=116,anmode=aninfo,
238 . i1=i,i2=ic)
240 ELSEIF (i/=ifx) THEN
241 ltsm(j,i) = xll(ik)/in(i)
242 ELSEIF (xll(ik)/=zero) THEN
243 IF(j==4) THEN
244 ltsm(4,i) = xll(ik)*rbyl(1,ir)
245 ltsm(5,i) = xll(ik)*rbyl(6,ir)
246 ltsm(6,i) = xll(ik)*rbyl(5,ir)
247 ELSEIF(j==5) THEN
248 ltsm(4,i) = xll(ik)*rbyl(6,ir)
249 ltsm(5,i) = xll(ik)*rbyl(2,ir)
250 ltsm(6,i) = xll(ik)*rbyl(4,ir)
251 ELSEIF(j==6) THEN
252 ltsm(4,i) = xll(ik)*rbyl(5,ir)
253 ltsm(5,i) = xll(ik)*rbyl(4,ir)
254 ltsm(6,i) = xll(ik)*rbyl(3,ir)
255 ENDIF
256 ENDIF
257 ENDDO
259 hij = zero
260 DO ik=iadll(
jc),iadll(
jc+1)-1
261 hij = hij + xll(ik)*ltsm(jll(ik),lll(ik))
262 ENDDO
263 IF(hij/=zero)THEN
264 IF(ih>lhmax)THEN
265 CALL ancmsg(msgid=114,anmode=aninfo,
266 . i1=lhmax)
268 ENDIF
269 hh(ih) = hij
271 ih = ih + 1
272 ENDIF
273 ENDDO
274 iadh(ic+1) = ih
275 dd = zero
276 DO ik=iadll(ic),iadll(ic+1)-1
277 dd = dd + xll(ik)*ltsm(jll(ik),lll(ik))
278 ENDDO
279 IF(dd<=zero) THEN
280 CALL ancmsg(msgid=115,anmode=aninfo,
281 . i1=ic)
282 ENDIF
283 diag(ic) = dd
284 DO ik=iadll(ic),iadll(ic+1)-1
285 i = lll(ik)
286 j = jll(ik)
287 IF (j<=3) THEN
288 ltsm(j,i) = zero
289 ELSE
290 ltsm(4,i) = zero
291 ltsm(5,i) = zero
292 ltsm(6,i) = zero
293 ENDIF
294 ENDDO
295 ENDDO
296 ENDIF
297 ENDDO
298 lenh = ih - 1
299
300 RETURN
subroutine jc(p, t, a, b, cm, cn, tref, tm, epsm, sigmam, jc_yield, tan_jc)
subroutine ancmsg(msgid, msgtype, anmode, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, r1, r2, r3, r4, r5, r6, r7, r8, r9, c1, c2, c3, c4, c5, c6, c7, c8, c9, prmode)