35 SUBROUTINE law36_upd(IOUT ,TITR ,MAT_ID ,NUPARAM,UPARAM ,
36 . NFUNC ,IFUNC ,FUNC_ID,NPC ,PLD ,
48#include "implicit_f.inc"
55 INTEGER ,
INTENT(IN) :: ,IOUT,
56 INTEGER ,
INTENT(IN) :: NFUNC
57 INTEGER ,
INTENT(IN) :: NFUNCT
58 INTEGER,
DIMENSION(NFUNC) :: IFUNC
59 INTEGER,
DIMENSION(NFUNCT) :: FUNC_ID
62 CHARACTER(LEN=NCHARTITLE) :: TITR
67 INTEGER :: I,J,IFE,IE,IX1,IX2,IY1,IY2,NRATE,IYLD,IFAIL,FUNC1,FUNC2
68 my_real :: EPSMAX,EPSLAST,X1,X2,Y1,Y2,FAC1,FAC2,XINT,YINT
77 IF (pld(i) < pld(i+2))
THEN
78 CALL ancmsg(msgid=975, msgtype=msgerror, anmode=aninfo,
79 . i1 = func_id(nfunc),
89 nrate = nint(uparam(1))
90 epsmax = uparam(2*nrate + 7)
91 ifail = nint(uparam(2*nrate + 27))
101 IF (ix2 > zero .and. y2 == zero)
THEN
103 epsmax = uparam(7+2*nrate)
104 IF (epslast < epsmax) uparam(2*nrate + 7 ) = epslast
105 IF (ifail == 0) uparam(2*nrate + 27) = 1
106 uparam(2*nrate + 28) = 1
109 ELSE IF (y1 > y2)
THEN
110 epslast = (x2*y1 - x1*y2) / (y1 - y2)
111 IF (epslast < epsmax) uparam(2*nrate + 7 ) = epslast
112 IF (ifail == 0) uparam(2*nrate + 27) = 1
113 uparam(2*nrate + 28) = 1
122 fac1 = uparam(nrate + 6 + i)
125 fac2 = uparam(nrate + 6 + j)
126 IF (func1 > 0 .and. func2 > 0 .and. func1 /= func2)
THEN
127 CALL func_inters(titr,mat_id,func1 ,func2 ,fac1 ,fac2 ,
128 . npc ,pld ,xint ,yint )
130 IF (xint > zero .and. yint > zero)
THEN
131 CALL ancmsg(msgid=2064, msgtype=msgwarning, anmode=aninfo,
133 . i2 = func_id(func1),
134 . i3 = func_id(func2),
subroutine func_inters(titr, mat_id, func1, func2, fac1, fac2, npc, pld, xint, yint)
subroutine law36_upd(iout, titr, mat_id, nuparam, uparam, nfunc, ifunc, func_id, npc, pld, mtag, nfunct)
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)