31 LOGICAL,
external :: compare
42 INTEGER,
parameter :: oel_unit = 6589
45 DOUBLE PRECISION,
allocatable :: ode_vars_o(:)
47 LOGICAL :: print_err_header
67 INTEGER,
intent(in) :: lODE_DIMN
69 allocate( ode_vars_o(lode_dimn) )
90 INTEGER,
intent(in) :: lODE_DIMN
93 DOUBLE PRECISION,
intent(in) :: lODE_VARS(lode_dimn)
95 ode_vars_o = lode_vars
111 SUBROUTINE reset_ode(lDIMN, lVARS, lAtps)
120 INTEGER,
intent(in) :: lDIMN
123 DOUBLE PRECISION,
intent(inout) :: lVARS(ldimn)
125 INTEGER,
intent(in) :: lAtps
155 INTEGER,
intent(in) :: lnD
157 INTEGER,
intent(in) :: lNEQ(lnd)
160 INTEGER,
intent(in) :: loD
163 DOUBLE PRECISION,
intent(in) :: VARS(lod)
165 LOGICAL,
intent(in) :: lUNLIMITED
167 INTEGER,
intent(in) :: lState
169 INTEGER,
intent(out) :: lErr
183 IF(vars(node).NE.vars(node))
THEN 192 IF(lstate == -1)
THEN 194 if(lunlimited)
return 195 ELSEIF(lstate == 2)
THEN 209 IF(vars(node) <=
zero)
THEN 217 IF(vars(node) >
tmax .OR. vars(node) <
tmin)
THEN 225 IF(vars(node) > 1.009d0)
THEN 229 IF(vars(node) < 0.0d0)
THEN 230 IF(abs(vars(node)) > 1.0d-5)
THEN 240 IF(vars(node) >
tmax .OR. vars(node) <
tmin)
THEN 249 IF(lneq(2+m) == 1)
THEN 252 IF(vars(node) <=
zero)
THEN 261 IF(vars(node) > 1.009d0)
THEN 265 IF(vars(node) < 0.0d0)
THEN 266 IF(abs(vars(node)) > 1.0d-5)
THEN 302 INTEGER,
intent(in) :: lErr
304 INTEGER,
intent(in) :: lnD
305 INTEGER,
intent(in) :: lNEQ(lnd)
308 INTEGER,
intent(in) :: loD
309 DOUBLE PRECISION,
intent(in) :: lVARS(lod)
314 DOUBLE PRECISION :: ddt_lVARS(lod)
316 CHARACTER(LEN=255) :: lFile
322 lfile =
'';
write(lfile,
"('StiffChem_',I2.2,'.log')")
mype 324 inquire(file=lfile,exist=lexist)
326 open(oel_unit,file=trim(adjustl(lfile)), position=
'append',convert
'big_endian' 328 open(oel_unit,file=trim(adjustl(lfile)), status=
'new',convert=
'big_endian' 332 if(print_err_header)
then 333 WRITE(oel_unit,9000)
time 334 print_err_header = .false.
339 WRITE(oel_unit,9002) lerr
340 WRITE(oel_unit,9003) lneq(1)
343 IF(lneq(lc1+2) == 1)
THEN 344 WRITE(oel_unit,9004) lc1
345 ELSEIF(lneq(lc1+2) == 0)
THEN 346 WRITE(oel_unit,9005) lc1
348 WRITE(oel_unit,9006) lc1, lneq(lc1+2)
352 WRITE(oel_unit,
"(/5x,'Field Variables:')")
355 WRITE(oel_unit,9008) lc1, ode_vars_o(lc1), lvars(lc1), &
356 (lvars(lc1) - ode_vars_o(lc1))
361 WRITE(oel_unit,
"(/5x,'Derivatives:')")
364 WRITE(oel_unit,9010) lc1, ddt_lvars(lc1)
370 9000
FORMAT(//3x,
'Time: ',g15.8)
371 9001
FORMAT(//5x,
'Fluid Cell: ',i4,4x,
'(',i3,
',',i3,
')',10x,&
373 9002
FORMAT( 5x,
'Error Flag/ODEPACK Status: ',i4,/)
375 9003
FORMAT( 5x,
'Number of ODEs Solved: ', i4,/)
376 9004
FORMAT( 5x,
'Solving solids phase ',i2,&
377 ' bulk density and species equations.')
379 9005
FORMAT( 5x,
'NOT solving solids phase ',i2,&
380 ' bulk density and species equations.')
382 9006
FORMAT( 5x,
'Unknown flag for solids phase ',i2,
' Flag = ',i4)
385 9007
FORMAT( 5x,
'Var',6x,
'Incoming',13x,
'Returned',13x,
'Difference')
386 9008
FORMAT( 5x,i3,3(3x,g18.8))
389 9009
FORMAT( 5x,
'Var',6x,
' YDOT ')
390 9010
FORMAT( 5x,i3,3x,g18.8)
subroutine, public write_ode_log(lErr, lnD, lNEQ, loD, lVARS)
integer, dimension(:), allocatable i_of
double precision, parameter tmax
subroutine, public check_ode_data(lnD, lNEQ, loD, VARS, lUNLIMITED, lState, lErr)
double precision, parameter tmin
subroutine, public update_ode_old(lODE_DIMN, lODE_VARS)
integer, dimension(:), allocatable, public failedcount
integer, public ode_debug_level
integer, dimension(:), allocatable j_of
integer, dimension(0:dim_m) nmax
subroutine stiff_chem_rrates(lNEQ, lTime, Y, YDOT)
subroutine, public reset_ode(lDIMN, lVARS, lAtps)
double precision, parameter zero
subroutine, public allocate_stiff_chem_dbg(lODE_DIMN)