CALL CUBPACK_INFO()that prints such details. A sample program and its output (obtained on the platform that produced all sample output) are included.
Here follows a brief description of the examples included.
CALL CUBATR & (DIMENS,NumFun,Integrand,NumRgn,Vertices,RgType,Value,AbsErr, & ! and optional parameters IFAIL,Neval,EpsAbs,EpsRel,Restart,MinPts,MaxPts,Key,Job,Tune) !----------------------------------------------------------------------- ! Input parameters ! ---------------- ! ! DIMENS Integer. ! The dimension of the region of integration. ! ! NumFun Integer. ! Number of components of the integrand. ! ! Integrand ! Externally declared function for computing all components ! of the integrand at the given evaluation point. ! It must have input parameter X: ! X(1) The x-coordinate of the evaluation point. ! X(2) The y-coordinate of the evaluation point. ! ... ! X(DIMENS) The z-coordinate of the evaluation point. ! and NumFun, the number of components of the integrand. ! It must be compatible with the following interface: ! INTERFACE ! FUNCTION Integrand(NUMFUN,X) RESULT(Value) ! USE Precision_Model ! INTEGER, INTENT(IN) :: NUMFUN ! REAL(kind=stnd), DIMENSION(:), INTENT(IN) :: X ! REAL(kind=stnd), DIMENSION(NUMFUN) :: Value ! END FUNCTION Integrand ! END INTERFACE ! ! NumRgn Integer. ! The number of given regions. ! ! Vertices ! Real array of dimension (DIMENS,DIMENS+1,NumRgn). ! Vertices(1:DIMENS,K,L) are the x, y, ... coordinates ! respectively of vertex K of region L, where ! K = 1,...,DIMENS+1 and L = 1,...,NumRgn. ! ! RgType Integer array of dimension (NumRgn). ! RgType(L) describes the type of region L. ! ! Value Real array of dimension NumFun. ! Approximations to all components of the integral if ! the procedure is restarted. ! ! AbsErr Real array of dimension NumFun. ! Estimates of absolute errors if the procedure is restarted. ! ! IFAIL Optional integer argument. ! This follows the NAG convention: ! IFAIL = 1 : soft silent error ! Control returned to calling program. ! IFAIL = -1: soft noisy error ! Error message is printed. ! Control returned to calling program. ! IFAIL = 0 : hard noisy error ! Error message is printed and program is stopped. ! Default IFAIL = -1. ! ! EpsAbs Optional real argument. ! Requested absolute error. ! Default EpsAbs = 0. ! ! EpsRel Optional real argument. ! Requested relative error. ! Default EpsRel = sqrt(machine precision). ! ! Restart Optional boolean argument. ! If Restart = FALSE, this is the first attempt to compute ! the integral. ! If Restart = TRUE, then we restart a previous attempt. ! In this case the only parameters for CUBATR that may ! be changed (with respect to the previous call of CUBATR) ! are MinPts, MaxPts, EpsAbs, EpsRel, Key and Restart. ! Default Restart = FALSE. ! ! MinPts Optional integer argument. ! The minimum allowed number of integrand evaluations. ! Default MinPts = 0. ! ! MaxPts Optional integer argument. ! The maximum allowed number of integrand evaluations. ! Default MaxPts = enough to do 500 subdivisions. ! ! Key Optional integer argument. ! Can be used by Rule_General to choose between several ! local integration rules. ! Default Key = 2 if Dimension=1 and extrapolation is used ! (This corresponds to QAGS) ! Default Key = 0 otherwise ! ! Job Optional integer argument. ! If |Job| = 0, then nothing will be done except freeing all ! allocated memory. ! This is usefull after a call of CUBATR if no ! Restart will be done later and memory usage ! might become an issue later. ! Equivalently, one can call CUBATR() ! without any arguments. ! = 1, the global adaptive algorithm is called ! = 2, extrapolation using the epsilon algorithm is used. ! = 11, a region will be divided in 2**DIMENS subregions ! and the global adaptive algorithm is called. ! In combination with Key=0, this resembles DUCTRI and DCUTET. ! = 12, a region will be divided in 2 subregions ! and the global adaptive algorithm is called. ! In combination with Key=3 or 4, this resembles DCUHRE. ! If Job < 0, then an overview of the Region Collection is dumped. ! This will create the files tmp_integerstore and tmp_realstore. ! Default Job = 1. ! ! Tune Optional real argument. ! Can be used by Global_Adapt or the local error estimators ! to influence the reliability. 0 <= Tune <= 1. ! Tune = 1 is the most reliable available. ! Default Tune = 1. ! Note that this is an experimental and controversial parameter. ! In this version, only Tune = 1 is supported for all regions. ! ! Output parameters ! ----------------- ! ! Value Real array of dimension NumFun. ! Approximations to all components of the integral ! ! AbsErr Real array of dimension NumFun. ! Estimates of absolute errors. ! ! NEval Optional Integer. ! Number of integrand evaluations used by CUBATR for this call. ! ! IFAIL Optional Integer. ! IFAIL = 0 for normal exit. ! ! AbsErr(K) <= EpsAbs or ! AbsErr(K) <= ABS(Value(K))*EpsRel with MaxPts or less ! function evaluations for all values of K, ! 1 <= K <= NumFun . ! ! IFAIL = 1 if MaxPts was too small to obtain the required ! accuracy. In this case Global_Adapt returns values of ! Value with estimated absolute errors AbsErr. ! ! IFAIL > 1 in more serious case of trouble. !-----------------------------------------------------------------------Calling sequence for scalar functions and single regions
CALL CUBATR & (DIMENS,Integrand,SVertices,SRgType,SValue,SAbsErr, & ! and optional parameters & IFAIL,Neval,EpsAbs,EpsRel,Restart,MaxPts,Key,Job) !----------------------------------------------------------------------- ! Input parameters ! ---------------- ! ! DIMENS Integer. ! The dimension of the region of integration. ! ! Integrand ! Externally declared function for computing all components ! of the integrand at the given evaluation point. ! It must have input parameter X: ! X(1) The x-coordinate of the evaluation point. ! X(2) The y-coordinate of the evaluation point. ! ... ! X(DIMENS) The z-coordinate of the evaluation point. ! and NumFun, the number of components of the integrand. ! It must be compatible with the following interface: ! INTERFACE ! FUNCTION Integrand(NUMFUN,X) RESULT(Value) ! USE Precision_Model ! INTEGER, INTENT(IN) :: NUMFUN ! REAL(kind=stnd), DIMENSION(:), INTENT(IN) :: X ! REAL(kind=stnd), DIMENSION(NUMFUN) :: Value ! END FUNCTION Integrand ! END INTERFACE ! ! SVertices ! Real array of dimension (DIMENS,DIMENS+1). ! Vertices(1:DIMENS,K) are the x, y, ... coordinates ! respectively of vertex K of the region, where ! K = 1,...,DIMENS+1. ! ! SRgType Integer. ! RgType describes the type of region L. ! ! SValue Real. ! Approximation to the integral if the procedure is restarted. ! ! SAbsErr Real. ! Estimate of the absolute error if the procedure is restarted. ! ! IFAIL Optional integer argument. ! This follows the NAG convention: ! IFAIL = 1 : soft silent error ! Control returned to calling program. ! IFAIL = -1: soft noisy error ! Error message is printed. ! Control returned to calling program. ! IFAIL = 0 : hard noisy error ! Error message is printed and program is stopped. ! Default IFAIL = -1. ! ! EpsAbs Optional real argument. ! Requested absolute error. ! Default EpsAbs = 0. ! ! EpsRel Optional real argument. ! Requested relative error. ! Default EpsRel = sqrt(machine precision). ! ! Restart Optional boolean argument. ! If Restart = FALSE, this is the first attempt to compute ! the integral. ! If Restart = TRUE, then we restart a previous attempt. ! In this case the only parameters for CUBATR that may ! be changed (with respect to the previous call of CUBATR) ! are MinPts, MaxPts, EpsAbs, EpsRel, Key and Restart. ! Default Restart = FALSE. ! ! MaxPts Optional integer argument. ! The maximum allowed number of integrand evaluations. ! Default MaxPts = enough to do 500 subdivisions. ! ! Key Optional integer argument. ! Can be used by Rule_General to choose between several ! local integration rules. ! Default Key = 2 if Dimension=1 and extrapolation is used ! (This corresponds to QAGS) ! Default Key = 0 otherwise ! ! Job Optional integer argument. ! If |Job| = 0, then nothing will be done except freeing all ! allocated memory. ! This is usefull after a call of CUBATR if no ! Restart will be done later and memory usage ! might become an issue later. ! Equivalently, one can call CUBATR() ! without any arguments. ! = 1, the global adaptive algorithm is called ! = 2, extrapolation using the epsilon algorithm is used. ! = 11, a region will be divided in 2**DIMENS subregions ! and the global adaptive algorithm is called. ! In combination with Key=0, this resembles DUCTRI and DCUTET. ! = 12, a region will be divided in 2 subregions ! and the global adaptive algorithm is called. ! In combination with Key=3 or 4, this resembles DCUHRE. ! If Job < 0, then an overview of the Region Collection is dumped. ! This will create the files tmp_integerstore and tmp_realstore. ! Default Job = 1. ! ! Output parameters ! ----------------- ! ! SValue Real. ! Approximation to the integral ! ! AbsErr Real. ! Estimate of the absolute error. ! ! NEval Optional Integer. ! Number of integrand evaluations used by CUBATR for this call. ! ! IFAIL Optional Integer. ! IFAIL = 0 for normal exit. ! ! AbsErr(K) <= EpsAbs or ! AbsErr(K) <= ABS(Value(K))*EpsRel with MaxPts or less ! function evaluations for all values of K, ! 1 <= K <= NumFun . ! ! IFAIL = 1 if MaxPts was too small to obtain the required ! accuracy. In this case Global_Adapt returns values of ! Value with estimated absolute errors AbsErr. ! ! IFAIL > 1 in more serious case of trouble. !-----------------------------------------------------------------------Clearing saved memory
Because CUBPACK has a restart feature, information is saved by the module. To clean this up explicitely, use an additional
CALL CUBATR()This is equivalent, but much more convenient, than using the general calling sequence with JOB=0.