+--------------------------------------------------------------------+ | | | DIFF EQ SOLVER SETTINGS | | | +--------------------------------------------------------------------+ MEANING: PREDPP global variables CONTEXT: For use with PREDPP This feature is not fully documented. The interested user may be able to obtain more information by studying the appropriate sections of PREDPP code. USAGE: $PK "FIRST " USE PRCOM_INT, ONLY: METH,MITER,IMAX,ISTFLG,INTFLG "MAIN " IMAX=200000 DISCUSSION: These variables allow the user to over-ride certain default settings in ADVAN6, ADVAN8, ADVAN9, ADVAN13, ADVAN14, ADVAN15, ADVAN16, ADVAN17, ADVAN18, SS6, and SS9. DES_DER, MITER, and METH PREDPP sets MITER and METH to default values with every new indi- vidual or reset record. METH is the solver method type, and MITER determines whether analytical Jacobian is to be used (MITER=1, based on DA() array calculated in DES subroutine), or Jacobian is to be numerically determined by the solver (MITER=2). As of NM75, MITER may be accessed by the reserved variable DES_DER, without requiring the "FIRST" and "USE" header lines, or verbatim code. For example: $PK DES_DER=1 ADVAN8 METH=2 is always used. If user set MITER, use his value. Otherwise, use MITER=2. ADVAN9 If METH=1, then Adams implicit method, and METH=2 (default, BDF method). If user did set MITER, use his value. ADVAN13 METH set in $PK is not used. LSODA determines whether ADAMS NON-stiff (METH=1) or BDF stiff (METH=2) is to be used as it works its way through the problem. MITER (or DES_DER) should be set only to 1 (analytical Jaco- bian) or 2 (numerical Jacobian determined by LSODA). Usually should be left alone. ADVAN14 METH=2 by default. Could be set in cvodeu.f90 or $PK. Setting MITER=1 (or DES_DER=1) is required if it is desired that the Jacobian be analytically evaluated for ODE models (ADVAN8, 9, 13, 14, 15, 16, 17), for IMP, SAEM, BAYES prob- lems that normally do not have first derivatives turned on. In addition to setting DES_DER=1 in $PK, various options of Jacobians (analytical/numerical, full/band, etc) should be set in CVODEU.f90, where there are many other things the user can set. ADVAN15 METH is not used. It is always METH=2 (BDF stiff). Setting MITER=1 is required if it is desired that the Jaco- bian be analytically evaluated for ODE models (ADVAN8, 9, 13, 14, 15), for IMP, SAEM, BAYES problems that normally do not have first derivatives turned on. In addition to set- ting DES_DER=1 in $PK, various options of Jacobians (analyt- ical/numerical, full/band, etc) should be set in IDAU.f90, where there are many other things the user can set. ADVAN16 METH and MITER are not used. Instead, IJAC would set in RADAR5u.f90, but presently this is not functional ADVAN17 METH and MITER are not used. Instead, IJAC would set in RADAR5u.f90, but presently this is not functional ADVAN18 METH and MITER are not used. IMAX ADVAN6, ADVAN8, ADVAN9, ADVAN13, ADVAN14, ADVAN15, ADVAN16, ADVAN17, ADVAN18, SS6 The variable MAXCAL gives the maximum number of calls to FCN1 (ADVAN6, ADVAN8, ADVAN13, ADVAN14, ADVAN16, ADVAN18, SS6) or RES (ADVAN9, ADVAN15, ADVAN17) during an integration interval. Each of the above routines sets MAXCAL to the value given by MAXFCN (a parameter in the MODULE SIZES) at the start of each integration interval unless the user supplies a value in IMAX, in which case the user's value is used. ISTFLG ADVAN9 ADVAN15, ADVAN17 ISTFLG controls how ADVAN9 calls LSODI1 and what it does if LSODI1 returns and indicates that an integration failed. ISTFLG is set to 0 (default) at ICALL=0. If changed by the user, it retains the changed value until the user changes it again. ISTATE is a variable that is passed from the ADVAN to LSODI1. ISTATE=1 indicates that the integration is starting. ISTATE=2 indicates that this call is a continua- tion from a prior successful integration. Default: Use ISTATE=1 for the first integration, and ISTATE=2 for a con- tinuation when nothing external to the ADVAN has changed. In case of failure with ISTATE=2, restore original inputs and try again with ISTATE=1. ISTFLG=1 Never try ISTATE=2, always use ISTATE=1. ISTFLG=2 Never retry (only try ISTATE=2). ADVAN15 also uses ISTFLG for calls to IDA, but uncertainty exists as to what its usefulness is. INTFLG ADVAN6, SS6, ADVAN8, ADVAN13, ADVAN14, ADVAN16, ADVAN18 INTFLG stands for "Integration Flag" and affects the number of calls to the integrating subroutine during each advance. It is only of interest when second derivatives of the state vector are calculated. It is present because there may be some trade-off between run time and accuracy of computation. More calls to the integrator, with a smaller number of derivatives obtained with each call, result in longer run times, but might also produce more accurate derivatives. Also, it might provide more consistent computations when the number of compartments and/or etas is to be changed. Default is -1. User may set to any other value in user-written code (e.g., with verbatim code in $PK). PREDPP examines this value after the first call to PK for an individual record, so that it can be set on an individual-by- individual basis. PREDPP examines INTFLG when NEWIND=0 or 1 (i.e., at the start of an individual's data). Presumably, this is the only time that NONMEM might change the LVOUT array (See non-active eta list for pred). When INTFLG is set to any other value than -1, ADVAN 6,8,13,14,16,18 and SS6 calculate second derivatives "one group at a time". E.g., with ADVAN6, suppose etas 1, 2, 3 are active. 1) call DVERK to obtain 2nd derivatives 1,1 2) call DVERK to obtain 2nd derivatives 1,2 and 2,2 3) call DVERK to obtain 2nd derivatives 1,3 and 2,3 and 3,3 (Each calculation involves the integration of the state vec- tor, augmented by the relevant first derivative(s) and the second derivatives for one eta.) Thus, the maximum number of differential equations that would ever be integrated at one time is PW=2*PE*PM+PM Where: (PE is the maximum number of etas; currently 10) (PM is the maximum number of compartments - 1; currently 9) PW is the size defined for various work arrays in the source code. It is currently defined as above (189). When INTFLG is -1, the ADVAN routines and SS6 makes the most efficient use of the work arrays when computing second deriva- tives, to reduce the number of calls to DVERK. At NEWIND=0 or 1, PREDPP looks at the number of active etas for this individual and the number of user-defined compartments defined by the MODEL subroutine (NCM), and creates a scheme to calculate as many groups of 2nd. derivatives at once as it can. (Although compartments may be turned on and off within the data set, PREDPP does not revise the scheme of integration each time.) E.g., with the current values of PE, PM, and PW, here are some schemes of integration. Under "nth. call" are the etas whose second derivatives are computed with that call to DVERK. # compts. 1st. call 2nd. call 3d. call 4th. call 9 etas 1 - 5 etas 6 - 7 eta 8 eta 9 8 etas 1 - 5 etas 6 - 7 eta 8 eta 9 7 etas 1 - 5 etas 6 - 7 eta 8 - 9 6 etas 1 - 6 etas 7 - 8 eta 9 5 etas 1 - 7 etas 8 - 9 4 etas 1 - 8 etas 9 3 etas 1 - 9 Changing the size of the work arrays: If the system is large enough that integration involves more than one call to DVERK, and the user would like all second derivatives to be computed with a single call to DVERK, the source code must be changed to define a larger value for PW. To integrate the maximum number of etas and compartments in one call, set: PW=PM*(1+PE+PE*(PE+1)/2) With the current values of PE and PM, PW=594 Suppose PW is changed, but by accident is made smaller than the default (2*PE*PM+PM=189). Then for problems with large numbers of compartments and/or etas, the work arrays will not be large enough, with either INTFLG=-1 or INTFLG!=-1. A new error message exists in PREDPP, for which PRED exit code is 2 (always abort). WORK ARRAYS ARE TOO SMALL FOR 2ND. DERIVS. INCREASE PW, OR DECREASE NO. OF. COMPTS AND/OR ETAS, OR USE DERIV2=NO Again, this message cannot occur unless the source code of PREDPP is changed incorrectly. Location prior to NONMEM 7: prcomg REFERENCES: None.Go to main index.Created by nmhelp2html v. 1.0 written by Niclas Jonsson (Modified by AJB 5/2006,11/2007,10/2012)