Internal variables for DVODE. variables which are communicated between subroutines in the dvode package, or which are to be saved between calls to dvode.
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
real(kind=wp), | private | :: | acnrm | = | zero |
weighted r.m.s. norm of accumulated correction vectors. |
|
real(kind=wp), | private | :: | ccmxj | = | zero |
threshhold on drc for updating the jacobian. (see drc.) |
|
real(kind=wp), | private | :: | conp | = | zero |
the saved value of tq(5). |
|
real(kind=wp), | private | :: | crate | = | zero |
estimated corrector convergence rate constant. |
|
real(kind=wp), | private | :: | drc | = | zero |
relative change in h*rl1 since last dvjac call. |
|
real(kind=wp), | private | :: | el(13) | = | zero |
real array of integration coefficients. see dvset. |
|
real(kind=wp), | private | :: | eta | = | zero |
saved tentative ratio of new to old h. |
|
real(kind=wp), | private | :: | etamax | = | zero |
saved maximum value of eta to be allowed. |
|
real(kind=wp), | private | :: | h | = | zero |
the step size. |
|
real(kind=wp), | private | :: | hmin | = | zero |
the minimum absolute value of the step size h to be used. |
|
real(kind=wp), | private | :: | hmxi | = | zero |
inverse of the maximum absolute value of h to be used. hmxi = 0.0 is allowed and corresponds to an infinite hmax. |
|
real(kind=wp), | private | :: | hnew | = | zero |
the step size to be attempted on the next step. |
|
real(kind=wp), | private | :: | hscal | = | zero |
step size |
|
real(kind=wp), | private | :: | prl1 | = | zero |
the saved value of rl1. |
|
real(kind=wp), | private | :: | rc | = | zero |
ratio of current h*rl1 to value on last dvjac call. |
|
real(kind=wp), | private | :: | rl1 | = | zero |
the reciprocal of the coefficient el(1). |
|
real(kind=wp), | private | :: | tau(13) | = | zero |
real vector of past nq step sizes, length 13. |
|
real(kind=wp), | private | :: | tq(5) | = | zero |
a real vector of length 5 in which dvset stores constants used for the convergence test, the error test, and the selection of h at a new order. |
|
real(kind=wp), | private | :: | tn | = | zero |
the independent variable, updated on each step taken. |
|
real(kind=wp), | private | :: | uround | = | zero |
the machine unit roundoff. the smallest positive real number such that 1.0 + uround /= 1.0 |
|
integer, | private | :: | icf | = | 0 |
integer flag for convergence failure in dvnlsd:
|
|
integer, | private | :: | init | = | 0 |
saved integer flag indicating whether initialization of the problem has been done (init = 1) or not. |
|
integer, | private | :: | ipup | = | 0 |
saved flag to signal updating of newton matrix. In dvnlsd: own variable flag with values and meanings as follows:
|
|
integer, | private | :: | jcur | = | 0 |
output flag from dvjac showing jacobian status:
|
|
integer, | private | :: | jstart | = | 0 |
integer flag used as input to dvstep:
on return, dvstep sets jstart = 1. |
|
integer, | private | :: | jsv | = | 0 |
integer flag for jacobian saving, = sign(mf). |
|
integer, | private | :: | kflag | = | 0 |
a completion code from dvstep with the following meanings:
|
|
integer, | private | :: | kuth | = | 0 |
input flag to dvstep showing whether h was reduced by the driver. kuth = 1 if h was reduced, = 0 otherwise. |
|
integer, | private | :: | l | = | 0 |
integer variable, nq + 1, current order plus one. |
|
integer, | private | :: | lmax | = | 0 |
maxord + 1 (used for dimensioning). |
|
integer, | private | :: | lyh | = | 0 |
saved integer pointers to segments of rwork and iwork. |
|
integer, | private | :: | lewt | = | 0 |
saved integer pointers to segments of rwork and iwork. |
|
integer, | private | :: | lacor | = | 0 |
saved integer pointers to segments of rwork and iwork. |
|
integer, | private | :: | lsavf | = | 0 |
saved integer pointers to segments of rwork and iwork. |
|
integer, | private | :: | lwm | = | 0 |
saved integer pointers to segments of rwork and iwork. |
|
integer, | private | :: | liwm | = | 0 |
saved integer pointers to segments of rwork and iwork. |
|
integer, | private | :: | locjs | = | 0 |
a pointer to the saved jacobian, whose storage starts at wm(locjs), if jsv = 1. |
|
integer, | private | :: | maxord | = | 0 |
the maximum order of integration method to be allowed. |
|
integer, | private | :: | meth | = | 0 |
the method flags. see mf. |
|
integer, | private | :: | miter | = | 0 |
the method flags. see mf. |
|
integer, | private | :: | msbj | = | 0 |
the maximum number of steps between j evaluations, = 50. |
|
integer, | private | :: | mxhnil | = | 0 |
saved value of optional input mxhnil. |
|
integer, | private | :: | mxstep | = | 0 |
saved value of optional input mxstep. |
|
integer, | private | :: | n | = | 0 |
the number of first-order odes, = neq. |
|
integer, | private | :: | newh | = | 0 |
saved integer to flag change of h. |
|
integer, | private | :: | newq | = | 0 |
the method order to be used on the next step. |
|
integer, | private | :: | nhnil | = | 0 |
saved counter for occurrences of t + h = t. |
|
integer, | private | :: | nq | = | 0 |
integer variable, the current integration method order. |
|
integer, | private | :: | nqnyh | = | 0 |
saved value of nq*nyh. |
|
integer, | private | :: | nqwait | = | 0 |
a counter controlling the frequency of order changes. an order change is about to be considered if nqwait = 1. |
|
integer, | private | :: | nslj | = | 0 |
the number of steps taken as of the last jacobian update. |
|
integer, | private | :: | nslp | = | 0 |
saved value of nst as of last newton matrix update. |
|
integer, | private | :: | nyh | = | 0 |
saved value of the initial value of neq. |
|
real(kind=wp), | private | :: | hu | = | zero |
the step size in t last used. |
|
integer, | private | :: | ncfn | = | 0 |
number of nonlinear convergence failures so far. |
|
integer, | private | :: | netf | = | 0 |
the number of error test failures of the integrator so far. |
|
integer, | private | :: | nfe | = | 0 |
the number of f evaluations for the problem so far. |
|
integer, | private | :: | nje | = | 0 |
the number of jacobian evaluations so far. |
|
integer, | private | :: | nlu | = | 0 |
the number of matrix lu decompositions so far. |
|
integer, | private | :: | nni | = | 0 |
number of nonlinear iterations so far. |
|
integer, | private | :: | nqu | = | 0 |
the method order last used. |
|
integer, | private | :: | nst | = | 0 |
the number of steps taken for the problem so far. |
type,public :: dvode_data_t !! Internal variables for DVODE. !! variables which are communicated between subroutines in the !! dvode package, or which are to be saved between calls to dvode. private ! type declarations formerly in common block dvod01 real(wp) :: acnrm = zero !! weighted r.m.s. norm of accumulated correction vectors. real(wp) :: ccmxj = zero !! threshhold on drc for updating the jacobian. (see drc.) real(wp) :: conp = zero !! the saved value of tq(5). real(wp) :: crate = zero !! estimated corrector convergence rate constant. real(wp) :: drc = zero !! relative change in h*rl1 since last dvjac call. real(wp) :: el(13) = zero !! real array of integration coefficients. see dvset. real(wp) :: eta = zero !! saved tentative ratio of new to old h. real(wp) :: etamax = zero !! saved maximum value of eta to be allowed. real(wp) :: h = zero !! the step size. real(wp) :: hmin = zero !! the minimum absolute value of the step size h to be used. real(wp) :: hmxi = zero !! inverse of the maximum absolute value of h to be used. !! hmxi = 0.0 is allowed and corresponds to an infinite hmax. real(wp) :: hnew = zero !! the step size to be attempted on the next step. real(wp) :: hscal = zero !! step size `h` used in scaling of nordsieck array `yh` in [[dvjust]]. !! (if `iord = +1`, [[dvjust]] assumes that `hscal = tau(1)`.) !! see references 1 and 2 for details. real(wp) :: prl1 = zero !! the saved value of rl1. real(wp) :: rc = zero !! ratio of current h*rl1 to value on last dvjac call. real(wp) :: rl1 = zero !! the reciprocal of the coefficient el(1). real(wp) :: tau(13) = zero !! real vector of past nq step sizes, length 13. real(wp) :: tq(5) = zero !! a real vector of length 5 in which dvset stores constants !! used for the convergence test, the error test, and the !! selection of h at a new order. real(wp) :: tn = zero !! the independent variable, updated on each step taken. real(wp) :: uround = zero !! the machine unit roundoff. the smallest positive real number !! such that 1.0 + uround /= 1.0 integer :: icf = 0 !! integer flag for convergence failure in dvnlsd: !! !! * 0 means no failures. !! * 1 means convergence failure with out of date jacobian !! (recoverable error). !! * 2 means convergence failure with current jacobian or !! singular matrix (unrecoverable error). integer :: init = 0 !! saved integer flag indicating whether initialization of the !! problem has been done (init = 1) or not. integer :: ipup = 0 !! saved flag to signal updating of newton matrix. !! !! In [[dvnlsd]]: own variable flag with values and meanings as follows: !! !! * 0, do not update the newton matrix. !! * `miter /= 0`, update newton matrix, because it is the !! initial step, order was changed, the error !! test failed, or an update is indicated by !! the scalar `rc` or step counter `nst`. integer :: jcur = 0 !! output flag from [[dvjac]] showing jacobian status: !! !! * jcur = 0 means j is not current. !! * jcur = 1 means j is current. integer :: jstart = 0 !! integer flag used as input to dvstep: !! !! * 0 means perform the first step. !! * 1 means take a new step continuing from the last. !! * -1 means take the next step with a new value of maxord, !! hmin, hmxi, n, meth, miter, and/or matrix parameters. !! !! on return, dvstep sets jstart = 1. integer :: jsv = 0 !! integer flag for jacobian saving, = sign(mf). integer :: kflag = 0 !! a completion code from dvstep with the following meanings: !! !! * 0 the step was succesful. !! * -1 the requested error could not be achieved. !! * -2 corrector convergence could not be achieved. !! * -3, -4 fatal error in vnls (can not occur here). integer :: kuth = 0 !! input flag to dvstep showing whether h was reduced by the !! driver. kuth = 1 if h was reduced, = 0 otherwise. integer :: l = 0 !! integer variable, nq + 1, current order plus one. integer :: lmax = 0 !! maxord + 1 (used for dimensioning). integer :: lyh = 0 !! saved integer pointers to segments of rwork and iwork. integer :: lewt = 0 !! saved integer pointers to segments of rwork and iwork. integer :: lacor = 0 !! saved integer pointers to segments of rwork and iwork. integer :: lsavf = 0 !! saved integer pointers to segments of rwork and iwork. integer :: lwm = 0 !! saved integer pointers to segments of rwork and iwork. integer :: liwm = 0 !! saved integer pointers to segments of rwork and iwork. integer :: locjs = 0 !! a pointer to the saved jacobian, whose storage starts at !! wm(locjs), if jsv = 1. integer :: maxord = 0 !! the maximum order of integration method to be allowed. integer :: meth = 0 !! the method flags. see mf. integer :: miter = 0 !! the method flags. see mf. integer :: msbj = 0 !! the maximum number of steps between j evaluations, = 50. integer :: mxhnil = 0 !! saved value of optional input mxhnil. integer :: mxstep = 0 !! saved value of optional input mxstep. integer :: n = 0 !! the number of first-order odes, = neq. integer :: newh = 0 !! saved integer to flag change of h. integer :: newq = 0 !! the method order to be used on the next step. integer :: nhnil = 0 !! saved counter for occurrences of t + h = t. integer :: nq = 0 !! integer variable, the current integration method order. integer :: nqnyh = 0 !! saved value of nq*nyh. integer :: nqwait = 0 !! a counter controlling the frequency of order changes. !! an order change is about to be considered if nqwait = 1. integer :: nslj = 0 !! the number of steps taken as of the last jacobian update. integer :: nslp = 0 !! saved value of nst as of last newton matrix update. integer :: nyh = 0 !! saved value of the initial value of neq. ! type declarations formerly in common block dvod02 real(wp) :: hu = zero !! the step size in t last used. integer :: ncfn = 0 !! number of nonlinear convergence failures so far. integer :: netf = 0 !! the number of error test failures of the integrator so far. integer :: nfe = 0 !! the number of f evaluations for the problem so far. integer :: nje = 0 !! the number of jacobian evaluations so far. integer :: nlu = 0 !! the number of matrix lu decompositions so far. integer :: nni = 0 !! number of nonlinear iterations so far. integer :: nqu = 0 !! the method order last used. integer :: nst = 0 !! the number of steps taken for the problem so far. end type dvode_data_t