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()
58 my_real uparam(*),pld(*),pm(npropm)
62 INTEGER FUNC,NPT, J,J1,IF3,I7,I11,I13,FLAG_NEGATIVE,FUNC_UL
65 . xk,hard,x1,x2,y1,y2,lscale,xk_ini,deri,h,e_offset,
66 . x1_ul,x2_ul,y1_ul,y2_ul,deri_ul,y,y_ul,eps,y_eps
67 CHARACTER(LEN=NCHARTITLE) :: TITR1
76 lscale = uparam(i7 + 1)
78 hard = uparam(i13 + 1)
89 npt=(npc(func+1)-npc(func))/2
91 IF ( npc(2*nfunct+func+1) < 0)
THEN
94 . anmode=aninfo_blind_1,
97 . i2=npc(nfunct+func+1))
101 x1 = pld(npc(func) + j1)
102 y1 = pld(npc(func) + j1 + 1)
103 x2 = pld(npc(func) + j1 + 2)
104 y2 = pld(npc(func) + j1 + 3)
105 xk =
max(xk,lscale*(y2 - y1)/(x2 - x1))
106 IF ((x1 < 0).AND.(y1 /= 0)) flag_negative = 1
107 IF ((x2 < 0).AND.(y2 /= 0)) flag_negative = 1
108 IF ((y2 > 0).AND.(y1 < 0))
THEN
109 e_offset = x1 - y1*(x2 - x1)/(y2 - y1)
112 IF(flag_negative > 0)
THEN
114 . msgtype=msgwarning,
115 . anmode=aninfo_blind_1,
118 . i2=npc(nfunct+func+1))
122 uparam(118)= e_offset
131 func_ul = ifunc(if3+1)
132 IF (func_ul > 0 )
THEN
133 IF ( npc(2*nfunct+func_ul+1) < 0)
THEN
136 . anmode=aninfo_blind_1,
139 . i2=npc(nfunct+func_ul+1))
142 npt=(npc(func_ul +1)-npc(func_ul ))/2
145 x1 = pld(npc(func_ul ) + j1)
146 y1 = pld(npc(func_ul ) + j1 + 1)
147 x2 = pld(npc(func_ul ) + j1 + 2)
148 y2 = pld(npc(func_ul ) + j1 + 3)
149 xk =
max(xk,lscale*(y2 - y1)/(x2 - x1))
150 IF ((x1 < 0).AND.(y1 /= 0)) flag_negative = 1
151 IF ((x2 < 0).AND.(y2 /= 0)) flag_negative = 1
153 IF(flag_negative > 0)
THEN
155 . msgtype=msgwarning,
156 . anmode=aninfo_blind_1,
159 . i2=npc(nfunct+func_ul+1))
161 uparam(i11 + 1)=
max(xk,uparam(i11 + 1))
164 IF (ifunc(1) > 0)
THEN
165 IF ((xk_ini<xk).AND.(xk_ini > zero))
THEN
167 . msgtype=msgwarning,
168 . anmode=aninfo_blind_1,
171 . i2=npc(nfunct+func_ul+1),
185 func_ul = ifunc(if3+1)
188 IF ((func > 0).AND.(func_ul > 0).AND.(func_ul /= func))
THEN
190 npt=(npc(func+1)-npc(func))/2
191 npt_ul=(npc(func_ul+1)-npc(func_ul))/2
202 x1 = pld(npc(func) + j1)
203 y1 = pld(npc(func) + j1 + 1)
204 x2 = pld(npc(func) + j1 + 2)
205 y2 = pld(npc(func) + j1 + 3)
206 deri = (y2 - y1)/(x2 - x1)
209 x1_ul = pld(npc(func_ul) + j1_ul)
211 x2_ul = pld(npc(func_ul) + j1_ul + 2)
212 y2_ul = pld(npc(func_ul) + j1_ul + 3)
213 deri_ul = (y2_ul - y1_ul)/(x2_ul - x1_ul)
216 y_ul = y1_ul + deri_ul*(x2-x1_ul)
220 ELSEIF (abs(deri_ul-deri) > em20)
THEN
221 eps = (y1-y1_ul-deri*x1+deri_ul*x1_ul)/(deri_ul-deri)
222 y_eps = y1 + deri*(eps-x1)
225 y_eps = y1 + deri*(eps-x1)
228 y = y1 + deri*(x2_ul-x1)
232 ELSEIF (abs(deri_ul-deri) > em20)
THEN
233 eps = (y1-y1_ul-deri*x1+deri_ul*x1_ul)/(deri_ul-deri
234 y_eps = y1 + deri*(eps-x1)
237 y_eps = y1 + deri*(eps-x1)
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)