38 . NFUNC ,NFUNL ,IFUNC ,MAT_ID ,FUNC_ID,
51#include "implicit_f.inc"
56#include "tabsiz_c.inc"
60 CHARACTER(LEN=NCHARTITLE) ,
INTENT(IN) :: TITR
61 INTEGER ,
INTENT(IN) :: MAT_ID,NFUNC,NFUNL
62 INTEGER ,
DIMENSION(NFUNC) ,
INTENT(IN) :: FUNC_ID
63 INTEGER ,
DIMENSION(NFUNC+NFUNL)INTENT(INOUT) :: IFUNC
64 INTEGER ,
DIMENSION(SNPC) ,
INTENT(IN) :: NPC
65 my_real ,
DIMENSION(STF) ,
INTENT(IN) :: pld
66 my_real ,
DIMENSION(NPROPM) ,
INTENT(OUT) :: pm
67 TYPE (SENSORS_) ,
INTENT(IN) :: SENSORS
68 TYPE(matparam_struct_) ,
INTENT(INOUT) :: MAT_PARAM
72 INTEGER I,K,FUNC,FUND,UNLOAD,PN,IOK,ISENS,SENS_ID
73 my_real KC,KT,KCMAX,KTMAX,KFC,KFT,GMAX,DERI,STIFF,STIFFMIN,
74 . stiffmax,stiffavg,xint1,yint1,xint2,yint2,fac,fac1,fac2,gfrot,gsh
86 sens_id = mat_param%IPARAM(2)
88 IF (sens_id > 0 )
THEN
89 DO i=1,sensors%NSENSOR
90 IF (sens_id == sensors%SENSOR_TAB(i)%SENS_ID)
THEN
96 CALL ancmsg(msgid=1240,anmode=aninfo,msgtype=msgwarning,
97 . i1=mat_id,c1=titr,i2=isens)
100 mat_param%IPARAM(2) = isens
115 fac = mat_param%UPARAM(28)
116 CALL func_slope(func,fac,npc,pld,stiffmin,stiffmax,stiffini,stiffavg)
118 IF (stiffmin <= zero)
THEN
121 . anmode=aninfo_blind_2,
123 . i2=func_id(ifunc(1)),
126 kc =
max(kc ,stiffmax)
127 kfc =
max(kfc,stiffini)
129 mat_param%UPARAM(40) = stiffini
137 fac = mat_param%UPARAM(29)
138 CALL func_slope(func,fac,npc,pld,stiffmin,stiffmax,stiffini,stiffavg)
140 IF (stiffmin <= zero)
THEN
143 . anmode=aninfo_blind_2,
145 . i2=func_id(ifunc(2)),
148 kt =
max(kt ,stiffmax)
149 kft =
max(kft,stiffini)
151 mat_param%UPARAM(41) = stiffini
158 fac = mat_param%UPARAM(30)
159 CALL func_slope(func,fac,npc,pld,stiffmin,stiffmax,stiffini,stiffavg)
161 IF (stiffmin <= zero)
THEN
164 . anmode=aninfo_blind_2,
166 . i2=func_id(ifunc(3)),
169 gmax =
max(gmax,stiffmax)
172 IF (mat_param%UPARAM(21) == zero) mat_param%UPARAM(21) = gfrot
173 IF (mat_param%UPARAM(32) == zero) mat_param%UPARAM(32) = gsh
177 unload = mat_param%IPARAM(1)
179 IF (unload == 1)
THEN
186 fac = mat_param%UPARAM(33)
187 CALL func_slope(func,fac,npc,pld,stiffmin,stiffmax,stiffini,stiffavg)
188 kcmax =
max(kcmax,stiffmax)
190 IF (stiffmin <= zero)
THEN
193 . anmode=aninfo_blind_2,
195 . i2=func_id(ifunc(4)),
204 fac = mat_param%UPARAM(34)
205 CALL func_slope(func,fac,npc,pld,stiffmin,stiffmax,stiffini,stiffavg)
206 ktmax =
max(ktmax,stiffmax)
208 IF (stiffmin <= zero)
THEN
211 . anmode=aninfo_blind_2,
213 . i2=func_id(ifunc(5)),
222 fac = mat_param%UPARAM(42)
223 CALL func_slope(func,fac,npc,pld,stiffmin,stiffmax,stiffini,stiffavg)
224 gmax =
max(gmax,stiffmax)
226 IF (stiffmin <= zero)
THEN
229 . anmode=aninfo_blind_2
231 . i2=func_id(ifunc(6)),
242 mat_param%UPARAM(36) = infinity
243 mat_param%UPARAM(37) = infinity
244 ELSEIF (func == fund)
THEN
246 mat_param%UPARAM(36) = pld(pn - 2)
247 mat_param%UPARAM(37) = pld(pn - 1)
249 fac1 = mat_param%UPARAM(28)
250 fac2 = mat_param%UPARAM(33)
252 . fac2 ,npc ,pld ,xint1 ,yint1 )
253 IF (xint1 == zero .or. yint1 == zero)
THEN
254 CALL ancmsg(msgid=1716 ,msgtype=msgerror,anmode=aninfo_blind_2,
256 . i2 = func_id(func),
257 . i3 = func_id(fund),
260 mat_param%UPARAM(36) = xint1
261 mat_param%UPARAM(37) = yint1
270 mat_param%UPARAM(38) = infinity
271 mat_param%UPARAM(39) = infinity
272 ELSEIF (func == fund)
THEN
274 mat_param%UPARAM(38) = pld(pn - 2)
275 mat_param%UPARAM(39) = pld(pn - 1)
277 fac1 = mat_param%UPARAM(29)
278 fac2 = mat_param%UPARAM(34)
280 . fac2 ,npc ,pld ,xint2 ,yint2 )
281 IF (xint1 == zero .or. yint1 == zero)
THEN
282 CALL ancmsg(msgid=1716 ,msgtype=msgerror,anmode=aninfo_blind_2,
284 . i2 = func_id(func),
285 . i3 = func_id(fund),
288 mat_param%UPARAM(38) = xint2
289 mat_param%UPARAM(39) = yint2
297 IF (func /= fund)
THEN
298 fac1 = mat_param%UPARAM(30)
299 fac2 = mat_param%UPARAM(42)
301 . titr ,mat_id ,func ,fund ,fac1 ,fac2 ,
302 . npc ,pld ,xint1 ,yint1 ,xint2 ,yint2 )
304 IF ((xint1 == zero .or. yint1 == zero .or.
305 . xint2 == zero .or. yint2 == zero) .or.
306 . xint1 * xint2 > 0)
THEN
307 CALL ancmsg(msgid=1716 ,msgtype=msgerror,anmode=aninfo_blind_2,
309 . i2 = func_id(func),
310 . i3 = func_id(fund),
314 mat_param%UPARAM(43) = xint1
315 mat_param%UPARAM(44) = yint1
316 mat_param%UPARAM(45) = xint2
317 mat_param%UPARAM(46) = yint2
318 ELSEIF (func > 0)
THEN
320 mat_param%UPARAM(43) = pld(pn)
321 mat_param%UPARAM(44) = pld(pn+1)
323 mat_param%UPARAM(45) = pld(pn - 2)
324 mat_param%UPARAM(46) = pld(pn - 1)
329 IF (kcmax > 0 ) kcmax = kcmax * two
330 IF (ktmax > 0 ) ktmax = ktmax * two
331 IF (gmax > 0 ) gmax = gmax * two
332 kcmax =
max(mat_param%UPARAM(9) , kcmax)
333 ktmax =
max(mat_param%UPARAM(10), ktmax)
334 gmax =
max(mat_param%UPARAM(14), gmax)
335 kcmax =
max(mat_param%UPARAM(9) , kcmax)
336 ktmax =
max(mat_param%UPARAM(10), ktmax)
337 gmax =
max(mat_param%UPARAM(14), gmax)
338 mat_param%UPARAM(9) = kcmax
339 mat_param%UPARAM(10) = ktmax
340 mat_param%UPARAM(14) = gmax
342 stiff =
max(kcmax,ktmax)
349 stiffavg =
max(kc,kt)
350 IF ( stiffavg > zero) pm(23) = em01*stiffavg
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)