34 . NFUNC ,IFUNC ,MAT_ID ,FUNC_ID,
46#include "implicit_f.inc"
55 CHARACTER(LEN=NCHARTITLE) :: TITR
56 INTEGER MAT_ID,IOUT,NFUNC
57 INTEGER NPC(*), FUNC_ID(*),IFUNC(NFUNC)
58 my_real uparam(*),pld(*),pm(npropm)
62 INTEGER I,K,FUNC,NUPAR,NPT, J,J1,NUPARAM,
63 . IF1,IF2,IF3,IF4,IC1,IC2,II,JJ,LOAD,UNLOAD,
64 . np1,np2,ileng2,i7,i11,i13,i5,i4,k1,
67 . xk, hard,x1,x2,y1,y2,lscale,xk_ini,yfac,
68 . x0,emax,dx,dy,y0,deri,h,xscale,alpha1,
alpha2,
69 . s1,s2,t1,t2,ty,sx,xx1,yy1,dydx,dtds,f_x0
70 CHARACTER(LEN=NCHARTITLE) :: TITR1
83 lscale = uparam(i7 + 1)
85 hard = uparam(i13 + 1)
88 npt=(npc(func+1)-npc(func))/2
92 x1 = pld(npc(func) + j1)
93 y1 = pld(npc(func) + j1 + 1)
94 x2 = pld(npc(func) + j1 + 2)
95 y2 = pld(npc(func) + j1 + 3)
96 xk =
max(xk,lscale*(y2 - y1)/(x2 - x1))
100 ELSEIF (x2 == zero)
THEN
102 ELSEIF ((x1 < zero).AND.(x2 > zero))
THEN
103 f_x0 = y1 + lscale*(y2 - y1)*(zero - x1)/(x2 - x1)
110 . msgtype=msgwarning,
111 . anmode=aninfo_blind_1,
114 . i2=npc(nfunct+func+1),
122 IF (nint(hard)==9) uparam(i15 + 1)= f_x0
128 lscale = uparam(i7 + 2)
130 hard = uparam(i13 + 2)
133 npt=(npc(func+1)-npc(func))/2
137 x1 = pld(npc(func) + j1)
138 y1 = pld(npc(func) + j1 + 1)
139 x2 = pld(npc(func) + j1 + 2)
140 y2 = pld(npc(func) + j1 + 3)
141 xk =
max(xk,lscale*(y2 - y1)/(x2 - x1))
145 ELSEIF (x2 == zero)
THEN
147 ELSEIF ((x1 < zero).AND.(x2 > zero))
THEN
148 f_x0 = y1 + lscale*(y2 - y1)*(zero - x1)/(x2 - x1)
155 . msgtype=msgwarning,
156 . anmode=aninfo_blind_1,
159 . i2=npc(nfunct+func+1),
167 IF (nint(hard)==9) uparam(i15 + 2)= f_x0
173 lscale = uparam(i7 + 3)
175 hard = uparam(i13 + 3)
178 npt=(npc(func+1)-npc(func))/2
182 x1 = pld(npc(func) + j1)
183 y1 = pld(npc(func) + j1 + 1)
185 y2 = pld(npc(func) + j1 + 3)
186 xk =
max(xk,lscale*(y2 - y1)/(x2 - x1))
190 ELSEIF (x2 == zero)
THEN
192 ELSEIF ((x1 < zero).AND.(x2 > zero))
THEN
193 f_x0 = y1 + lscale*(y2 - y1)*(zero - x1)/(x2 - x1)
200 . msgtype=msgwarning,
201 . anmode=aninfo_blind_1,
204 . i2=npc(nfunct+func+1),
212 IF (nint(hard)==9) uparam(i15
218 lscale = uparam(i7 + 4)
220 hard = uparam(i13 + 4)
223 npt=(npc(func+1)-npc(func))/2
227 x1 = pld(npc(func) + j1)
228 y1 = pld(npc(func) + j1 + 1)
229 x2 = pld(npc(func) + j1 + 2)
230 y2 = pld(npc(func) + j1 + 3)
231 xk =
max(xk,lscale*(y2 - y1)/(x2 - x1))
235 ELSEIF (x2 == zero)
THEN
237 ELSEIF ((x1 < zero).AND.(x2 > zero))
THEN
238 f_x0 = y1 + lscale*(y2 - y1)*(zero - x1)/(x2 - x1)
245 . msgtype=msgwarning,
246 . anmode=aninfo_blind_1,
249 . i2=npc(nfunct+func+1),
257 IF (nint(hard)==9) uparam(i15 + 4)= f_x0
263 lscale = uparam(i7 + 5)
265 hard = uparam(i13 + 5)
268 npt=(npc(func+1)-npc(func))/2
272 x1 = pld(npc(func) + j1)
273 y1 = pld(npc(func) + j1 + 1)
274 x2 = pld(npc(func) + j1 + 2)
275 y2 = pld(npc(func) + j1 + 3)
276 xk =
max(xk,lscale*(y2 - y1)/(x2 - x1))
280 ELSEIF (x2 == zero)
THEN
282 ELSEIF ((x1 < zero).AND.(x2 > zero))
THEN
283 f_x0 = y1 + lscale*(y2 - y1)*(zero - x1)/(x2 - x1)
290 . msgtype=msgwarning,
291 . anmode=aninfo_blind_1,
294 . i2=npc(nfunct+func+1),
303 IF (nint(hard)==9) uparam(i15 + 5)= f_x0
309 lscale = uparam(i7 + 6)
311 hard = uparam(i13 + 6)
314 npt=(npc(func+1)-npc(func))/2
318 x1 = pld(npc(func) + j1)
319 y1 = pld(npc(func) + j1 + 1)
320 x2 = pld(npc(func) + j1 + 2)
321 y2 = pld(npc(func) + j1 + 3)
322 xk =
max(xk,lscale*(y2 - y1)/(x2 - x1))
326 ELSEIF (x2 == zero)
THEN
328 ELSEIF ((x1 < zero).AND.(x2 > zero))
THEN
329 f_x0 = y1 + lscale*(y2 - y1)*(zero - x1)/(x2 - x1)
336 . msgtype=msgwarning,
337 . anmode=aninfo_blind_1,
340 . i2=npc(nfunct+func+1),
348 IF (nint(hard)==9) uparam(i15 + 6)= f_x0
363 yfac = uparam(i5 + j)
364 ifun = ifunc(if4 + j)
373 dy = pld(jj+1) - pld(ii+1)
378 emax =
max(emax, deri)
390 unload=ifunc(if3 + j)
391 np1 = (npc(load+1)-npc(load))*half
392 np2 = (npc(unload+1)-npc(unload))*half
398 s1=pld(npc(load)+j1)*xscale
399 s2=pld(npc(load)+j1+2)*xscale
400 t1=pld(npc(load)+j1+1)
401 t2=pld(npc(load)+j1+3)
404 IF ( s1<=zero .AND.s2> zero)alpha1=(t2-t1)/(s2-s1)
407 xx1=pld(npc(unload)+k1)*xscale
408 x2=pld(npc(unload)+k1+2)*xscale
409 yy1=pld(npc(unload)+k1+1)
410 y2=pld(npc(unload)+k1+3)
411 IF ( xx1<=zero .AND.x2> zero)
alpha2=(y2-yy1)/(x2-xx1)
412 IF (y2>=t1 .AND.yy1<=t2.AND.x2>=s1.AND.xx1<=s2)
THEN
413 dydx = (y2-yy1) / (x2-xx1)
414 dtds = (t2-t1) / (s2-s1)
415 IF (dydx > dtds)
THEN
416 sx = (t1-yy1-dtds*s1+dydx*xx1) / (dydx-dtds)
417 ty = t1 + dtds*(sx - s1)
419 IF (ty/=zero .AND. sx/=zero )
THEN
420 IF (ty>=yy1.AND.ty<=y2.AND.sx>=xx1.AND.sx<=x2
421 . .AND.sx>=s2.AND.ty<=t2)
THEN
424 . anmode=aninfo_blind_1,
437 . anmode=aninfo_blind_1,
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)