[2696] | 1 | !_______________________________________________________________________ |
---|
| 2 | ! DVODE_F90 Conversion Change Record |
---|
| 3 | ! Last change: ST 01/01/08 |
---|
| 4 | ! ST 06/15/04: |
---|
| 5 | ! Convert test program dtest.f to dtest.f90 |
---|
| 6 | ! Use unix2dos on vode.f |
---|
| 7 | ! Use Metcalf converter to produce dvode_1.f90 from vode.f |
---|
| 8 | ! Change some of the Metcalf formatting |
---|
| 9 | ! Trim trailing blanks to produce dvode_2.f90 |
---|
| 10 | ! ST 06/16/04: |
---|
| 11 | ! Dimension RPAR, IPAR, ATOL, ITOL as(*) or (1) in the documentation |
---|
| 12 | ! prologue and in dtest.f to produce dvode_3.f90 |
---|
| 13 | ! Convert DVNORM to a subroutine DVNORMST to produce dvode_4.f90 |
---|
| 14 | ! Convert IXSAV to a subroutine IXSAVST to produce dvode_5.f90 |
---|
| 15 | ! Replace DUMACH and DUMSET by F90 intrinsic calculation to |
---|
| 16 | ! produce dvode_6.f90 |
---|
| 17 | ! Convert IUMACH to subroutine IUMACHST to produce dvode_.7f90 |
---|
| 18 | ! Convert function DDOT to subroutine DDOTST |
---|
| 19 | ! Convert function IDAMAX to subroutine IDAMAXST to produce |
---|
| 20 | ! dvode_.9f90 |
---|
| 21 | ! Note: DVNORM, IXSAV, IUMACH, DDOT, IDAMAX later changed |
---|
| 22 | ! back to original forms (see 06/23/04 below) |
---|
| 23 | ! Convert dvode_9.f90 to a module DVODE_M.F90=dvode_10.f90 |
---|
| 24 | ! Convert dvode_10.f90 to dvode_11.f90 with dynamic storage |
---|
| 25 | ! allocation for the nonuser portions of the RWORK and IWORK |
---|
| 26 | ! arrays. |
---|
| 27 | ! Deallocate work arrays at the start of new problems (ISTATE=1) |
---|
| 28 | ! to produce dvode_12.f90 |
---|
| 29 | ! ST 06/17/04: |
---|
| 30 | ! Remove LRWUSER and LIWUSER from call list. Set internally to |
---|
| 31 | ! 22 and 30, respectively. |
---|
| 32 | ! Set lengths LRW and LIW of the allocatable works arrays |
---|
| 33 | ! according to value of MF and MAXORD and verify that the |
---|
| 34 | ! lengths of the arrays allocated are identical to |
---|
| 35 | ! original minimum sizes in dvode.f. Inserted IMPLICIT NONE |
---|
| 36 | ! and necessary declarations in all routines to produce |
---|
| 37 | ! dvode13.f90 |
---|
| 38 | ! Get rid of warning messages for conditional arithmetic |
---|
| 39 | ! tests on equality to produce dvode14.f90 |
---|
| 40 | ! Replace LE, GE, LT, GT, NE, EQ with <=, >=, <, >, /=, == |
---|
| 41 | ! to produce dvode15.f90 |
---|
| 42 | ! Miscellaneous cleanup to produce dvode16.f90 |
---|
| 43 | ! ST 06/18/04: |
---|
| 44 | ! Move DATA constants to PRIVATE section and eliminated the |
---|
| 45 | ! corresponding SAVE statements to produce dvode17.f90 |
---|
| 46 | ! Move the DVOD02 common block to PRIVATE section to |
---|
| 47 | ! produce dvode18.f90 |
---|
| 48 | ! Move the DVOD01 common block to PRIVATE section to |
---|
| 49 | ! produce dvode19.f90 |
---|
| 50 | ! Modify DVSRCO to reflect above changes to produce dvode20.f90 |
---|
| 51 | ! Add interface DVINDY_USER to allow the user to interpolate |
---|
| 52 | ! the derivative to produce dvode21.f90 |
---|
| 53 | ! ST 06/19/04: |
---|
| 54 | ! Add SET_OPTS function and GET_STATS subroutine. |
---|
| 55 | ! Add PUBLIC data type VODE_OPTS |
---|
| 56 | ! Remove MF, ITOL, ATOL, RTOL, IOPT, RUSER, IUSER from dvode |
---|
| 57 | ! argument list (passed via fields in OPTS) |
---|
| 58 | ! Add OPTS to dvode call list to produce dvode22.f90 |
---|
| 59 | ! ST 06/20/04: |
---|
| 60 | ! Add INTERFACE VODE_F90 to allow OPTIONS and JAC to be |
---|
| 61 | ! OPTIONAL, to produce dvode_f90_m23.f90 |
---|
| 62 | ! ST 06/21/04 |
---|
| 63 | ! Add short summary of usage for DVODE_F90 |
---|
| 64 | ! Eliminate RPAR and IPAR |
---|
| 65 | ! Modify prologue example programs to reflect changes |
---|
| 66 | ! ST 06/22/04 |
---|
| 67 | ! Make necessary changes to accommodate ISTATE=3 calls |
---|
| 68 | ! to produce dvode_f90_m24.f90 ** not yet tested ** |
---|
| 69 | ! ST 06/23/04 |
---|
| 70 | ! Reactivate DVNLSD in its original form (passed as argument) |
---|
| 71 | ! to produce (v25) |
---|
| 72 | ! Reactivate DVNORM in its original form (as a function) (v26) |
---|
| 73 | ! Reactivate DDOT in its original form (as a function) (v27) |
---|
| 74 | ! Reactivate IDAMAX in its original form (as a function) (v28) |
---|
| 75 | ! Reactivate IXSAV and IUMACH in their original form (as |
---|
| 76 | ! functions) to produce dvode_f90_m29.f90 |
---|
| 77 | ! Convert new PRINT statements to (terminal) XERRDV error |
---|
| 78 | ! messages |
---|
| 79 | ! Debug INDEX = 3 changes to produce dvode_f90_m29.f90 |
---|
| 80 | ! (test program = check3.f90) |
---|
| 81 | ! ST 06/23/04 |
---|
| 82 | ! Change name of DYINDY to DVINDY_CORE and DYINDY_USER to |
---|
| 83 | ! DVINDY to produce dvode_f90_m31.f90 |
---|
| 84 | ! ST 06/29/04 |
---|
| 85 | ! Add routine SET_IAJA to calculate sparse pointer arrays |
---|
| 86 | ! to produce dvode_f90_m32.f90 |
---|
| 87 | ! ST 07/02/04 |
---|
| 88 | ! Rewrite SET_OPTS to produce dvode_f90_m34.f90 |
---|
| 89 | ! Test various input options in demo34.f90 |
---|
| 90 | ! GB 07/05/04 |
---|
| 91 | ! Change AE/RE options to ABSERR/RELERR |
---|
| 92 | ! ST 07/18/04 |
---|
| 93 | ! Finish first stab at implementing MA28 |
---|
| 94 | ! ST 07/26/04 |
---|
| 95 | ! Finish second stab at implementing MA28 and MOSS |
---|
| 96 | ! ST 07/27/04 |
---|
| 97 | ! Finish third stab at implementing MA28 and MOSS |
---|
| 98 | ! ST 07/28/04 |
---|
| 99 | ! Test sparse option with the column humidification problem |
---|
| 100 | ! ST 07/29/04 |
---|
| 101 | ! Adapt LCHECK and LROOTS subroutines from LSODAR and add |
---|
| 102 | ! to DVODE_F90 |
---|
| 103 | ! ST 07/31/04 |
---|
| 104 | ! Make JAC and GFUN optional; the VODE_F90 interface calls |
---|
| 105 | ! DVODE in one of four ways depending on presence of |
---|
| 106 | ! JAC and/or GFUN |
---|
| 107 | ! Error if SET_OPTS not called before DVODE_F90 called |
---|
| 108 | ! for the first time |
---|
| 109 | ! ST 07/31/04 |
---|
| 110 | ! First stab at root finding |
---|
| 111 | ! ST 08/02/04 |
---|
| 112 | ! Finish implementation of LSODAR root finding and adapt |
---|
| 113 | ! LSODAR demo problems for vode_f90 solution |
---|
| 114 | ! ST 08/05/04 |
---|
| 115 | ! Implement temporary changes for optional enforcement of |
---|
| 116 | ! nonnegativity constraints on the solution |
---|
| 117 | ! ST 08/06/04 |
---|
| 118 | ! Replace some labelled DO's and some loops |
---|
| 119 | ! Modify calls to DVODE_F90 in the test programs and |
---|
| 120 | ! and verify they work correctly |
---|
| 121 | ! First cut at printing warning message when |y| < abserr |
---|
| 122 | ! ST 08/07/04 |
---|
| 123 | ! Implement nonnegativity option in SET_OPTS and remove |
---|
| 124 | ! temporary coding from DVODE_F90 |
---|
| 125 | ! ST 08/08/04 |
---|
| 126 | ! Remove temporary subroutine DVSTEPS (copy of DVSTEP for |
---|
| 127 | ! sparse solutions) |
---|
| 128 | ! Remove dummy PSOL from calls lists for DVSTEP, DVNLSD, |
---|
| 129 | ! and DVNLSS |
---|
| 130 | ! ST 08/08/04 |
---|
| 131 | ! Add short summary of typical OPTIONS settings |
---|
| 132 | ! Run source thru a spell checker |
---|
| 133 | ! Take another whack at the documentation prologue for DVODE_F90 |
---|
| 134 | ! ST 08/11/04 |
---|
| 135 | ! Solve Robertson problem with nonnegativity, dense and sparse tests |
---|
| 136 | ! Change how sparse pointers arrays determined via derivative |
---|
| 137 | ! calls in DVPREPS to be the same as elsewhere |
---|
| 138 | ! Add easy to use version of SET_OPTS named mortal_opts |
---|
| 139 | ! Take another whack at the documentation prologue for DVODE_F90 |
---|
| 140 | ! ST 08/12/04 |
---|
| 141 | ! Add argument Called_From_Where to CHECK_STAT to indicate where |
---|
| 142 | ! a storage allocation/deallocation occurred |
---|
| 143 | ! Add subroutine RELEASE_ARRAYS which may be called to deallocate |
---|
| 144 | ! the arrays allocated by DVODE_F90 and to determine how much |
---|
| 145 | ! storage was used |
---|
| 146 | ! ST 08/13/04 |
---|
| 147 | ! With the nonnegativity option, project both y and y' |
---|
| 148 | ! Whack on documentation prologues |
---|
| 149 | ! Temporary subroutine CHECK_MESSAGES to write all error messages |
---|
| 150 | ! Renumber error messages |
---|
| 151 | ! ST 08/16/04 |
---|
| 152 | ! Cleaner stab at nonnegativity |
---|
| 153 | ! Temporarily change DVINDY/DVINDY_CORE not to enforce negativity |
---|
| 154 | ! ST 08/17/04 |
---|
| 155 | ! Add DVINDY_BNDS for use by the user callable DVINDY to enforce |
---|
| 156 | ! nonnegativity |
---|
| 157 | ! Add INTENT attribute to all subroutine and function arguments |
---|
| 158 | ! ST 08/18/04 |
---|
| 159 | ! Reorganize type declarations |
---|
| 160 | ! Make cosmetic header changes |
---|
| 161 | ! Eliminate NMES from XERRDV and change name to XERRDV |
---|
| 162 | ! ST 09/05/04 |
---|
| 163 | ! Stopped being stupid and got nonnegativity to work |
---|
| 164 | ! ST 09/07/04 |
---|
| 165 | ! Arbitrary bounds enforcement |
---|
| 166 | ! ST 10/26/04 |
---|
| 167 | ! Get rid of some compiler warning messages about tests of equality |
---|
| 168 | ! ST 11/03/04 |
---|
| 169 | ! Fix an problem in DVROOTS involving JROOT |
---|
| 170 | ! ST 11/11/04 |
---|
| 171 | ! Remove mortal_opts function |
---|
| 172 | ! ST 12/25/04-12/28/04 |
---|
| 173 | ! Implement HSL MA48 |
---|
| 174 | ! ST 01/05/05 |
---|
| 175 | ! Separate MA28 and MA48 versions |
---|
| 176 | ! ST 01/09/05 |
---|
| 177 | ! MA28 Hollerith formats to strings |
---|
| 178 | ! MA28 lower case |
---|
| 179 | ! 0 default for lp/mp in MA28 |
---|
| 180 | ! ST 01/11/05 |
---|
| 181 | ! Single precision version of MA28 |
---|
| 182 | ! Save TSAVE in blocks G,H in DVODE |
---|
| 183 | ! Change DOUBLE PRECISION to REAL(KIND=WP) |
---|
| 184 | ! Single precision version SVODE_F90 of DVODE_F90 |
---|
| 185 | ! D* to E* in SVODE_F90, *=0,...,9,-,+ |
---|
| 186 | ! Some D's replaced by d's to make global replacements possible |
---|
| 187 | ! D to S in BLAS routines and rest of SVODE_F90 |
---|
| 188 | ! ST 01/11/05 |
---|
| 189 | ! Change definition of UMAX in single precision version |
---|
| 190 | ! ST 02/09/05 |
---|
| 191 | ! Reorganize documentation prologue |
---|
| 192 | ! ST 03/30/05 |
---|
| 193 | ! Implement Alan's fix for root too close to X2 in root finder |
---|
| 194 | ! ST 05/11/05 |
---|
| 195 | ! Implement Alan's fix for testing for equality of T in |
---|
| 196 | ! DVINDY_CORE and DVINDY_BNDS |
---|
| 197 | ! Implement Alan's fix for nearby zeros in DVCHECK |
---|
| 198 | ! ST 05/14/05 |
---|
| 199 | ! Change distribution file to constitute only one F90 module |
---|
| 200 | ! Miscellaneous cosmetic changes |
---|
| 201 | ! Replace several decimal values for numbers by named variables |
---|
| 202 | ! Delete unused LINPACK function DNRM2 |
---|
| 203 | ! ST 05/15/05 |
---|
| 204 | ! Determine the working precision and define UMAX for MA28 |
---|
| 205 | ! accordingly in SET_OPTS |
---|
| 206 | ! Miscellaneous cosmetic changes |
---|
| 207 | ! Convert case in MA28 |
---|
| 208 | ! Modify single precision demo programs to call DVODE |
---|
| 209 | ! than SVODE |
---|
| 210 | ! ST 05/16/05 |
---|
| 211 | ! Define arithmetic constants using _WP extension |
---|
| 212 | ! ST 06/03/05 |
---|
| 213 | ! Change name of NULL to MYNULL in MA28 routines |
---|
| 214 | ! Delete unnecessary commented out statements |
---|
| 215 | ! ST 06/04/05 |
---|
| 216 | ! Remove ACOR, SAVF, EWT from the RWORK array |
---|
| 217 | ! Eliminate LACOR, LSAVF, LEWT pointers |
---|
| 218 | ! ST 06/05/05 |
---|
| 219 | ! Remove WM from the RWORK array |
---|
| 220 | ! Use WM1, WM2 instead of WM(1), WM(2) |
---|
| 221 | ! ST 06/06/05 |
---|
| 222 | ! Make changes necessary to allow the maximum order to be |
---|
| 223 | ! reduced at output points (save YH, WM and restore) |
---|
| 224 | ! ST 06/07/05 |
---|
| 225 | ! Make cosmetic changes |
---|
| 226 | ! ST 06/08/05 |
---|
| 227 | ! Make cosmetic changes |
---|
| 228 | ! Add directions for building LAPACK-based and MA48-based |
---|
| 229 | ! versions |
---|
| 230 | ! ST 06/11/05 |
---|
| 231 | ! Standardize declaration and polish with nag |
---|
| 232 | ! Cosmetic changes |
---|
| 233 | ! ST 06/12/05 |
---|
| 234 | ! Cosmetic changes |
---|
| 235 | ! ST 06/13/05 |
---|
| 236 | ! Replace USE_LINPACK flag by USE_LAPACK flag |
---|
| 237 | ! Remove check on sizes of ISTAT and RSTAT arrays in GET_STATS |
---|
| 238 | ! Add explicit declarations of public and private subroutines |
---|
| 239 | ! and functions |
---|
| 240 | ! Add the user callable subroutines to the generic interfaces |
---|
| 241 | ! block |
---|
| 242 | ! ST 06/14/05 |
---|
| 243 | ! Cosmetic changes |
---|
| 244 | ! ST 07/21/05 |
---|
| 245 | ! Implement option to increase the elbow room in the MA28 |
---|
| 246 | ! work arrays |
---|
| 247 | ! Implement option to invoke MC19 sparse scaling of numerical |
---|
| 248 | ! Jacobians |
---|
| 249 | ! Clean up the 2d diurnal kinetics program |
---|
| 250 | ! ST 07/25/05 |
---|
| 251 | ! Implement MA28_EPS threshold option for numerical singularity |
---|
| 252 | ! ST 07/26/05 |
---|
| 253 | ! Implement MA28_MESSAGES option to control MA28 printing |
---|
| 254 | ! ST 07/30/05 |
---|
| 255 | ! Implement sparsity recalculation if a structurally singular |
---|
| 256 | ! matrix is encountered |
---|
| 257 | ! ST 07/31/05 |
---|
| 258 | ! Implement MA28_RPS option to force calculation of a new pivot |
---|
| 259 | ! sequence if MA28BD encounters a singular matrix |
---|
| 260 | ! ST 08/02/05 |
---|
| 261 | ! Add SET_NORMAL_OPTS for normal usage |
---|
| 262 | ! Add SET_OPTS_2 for changing HMAX, HMIN, and MXSTEP |
---|
| 263 | ! ST 08/03/05 |
---|
| 264 | ! Change how swag storage increment for sparse Jacobians determined |
---|
| 265 | ! Change length of ISTATS to 31 |
---|
| 266 | ! Change sparse statistics available in GET_STATS |
---|
| 267 | ! ST 08/10/05 |
---|
| 268 | ! Add SUB_DIAGONALS and SUP_DIAGONALS option for banded systems |
---|
| 269 | ! Add BGROUP to compute sparse column grouping for banded |
---|
| 270 | ! systems with known diagonals and verify it's results |
---|
| 271 | ! match those of DGROUP |
---|
| 272 | ! ST 08/11/05 |
---|
| 273 | ! Add subroutine BANDED_IAJA to compute the sparse matrix |
---|
| 274 | ! descriptor arrays for a banded matrix with known |
---|
| 275 | ! diagonals |
---|
| 276 | ! Make miscellaneous cosmetic changes |
---|
| 277 | ! ST 08/12/05 |
---|
| 278 | ! One at a time column version of BANDED_IAJA |
---|
| 279 | ! Modify DVJAC to handle banded systems using diagonal information |
---|
| 280 | ! ST 08/16/05 |
---|
| 281 | ! Work on documentation for SET_OPTS |
---|
| 282 | ! ST 08/17/05 |
---|
| 283 | ! Use DTEMP rather than SAVF in DVPREPS |
---|
| 284 | ! ST 08/18/05 |
---|
| 285 | ! Add CONSTANT_JACOBIAN option |
---|
| 286 | ! ST 08/23/05 |
---|
| 287 | ! Add SET_INTERMEDIATE_OPTS and work on the documentation for each |
---|
| 288 | ! of SET_NORMAL_OPTS, SET_INTERMEDIATE_OPTS, and SET_OPTS |
---|
| 289 | ! ST 08/24/05 |
---|
| 290 | ! Add warning if default error tolerances used |
---|
| 291 | ! Work on OPTs documentation |
---|
| 292 | ! ST 08/25/05 |
---|
| 293 | ! Make miscellaneous cosmetic changes |
---|
| 294 | ! ST 08/28/05 |
---|
| 295 | ! Work on the MA48 based sparse solution option |
---|
| 296 | ! ST 08/29/05 |
---|
| 297 | ! Fixes in the MA48 version |
---|
| 298 | ! ST 09/05/05 |
---|
| 299 | ! Put back the IMPLICIT NONE statements that nag tools deleted |
---|
| 300 | ! ST 09/06/05 |
---|
| 301 | ! Do not allow default error tolerances to be used |
---|
| 302 | ! ST 09/08/05 |
---|
| 303 | ! Add the USE_FAST_FACTOR flag in MA48 version |
---|
| 304 | ! ST 09/11/05 |
---|
| 305 | ! Add debug prints |
---|
| 306 | ! ST 09/14/05 |
---|
| 307 | ! Delete the first two slots in the WM Jacobian array |
---|
| 308 | ! ST 09/18/05 |
---|
| 309 | ! Incorporate option to use JACSP for sparse Jacobians |
---|
| 310 | ! ST 09-19-05 |
---|
| 311 | ! Change name of DSM to DVDSM |
---|
| 312 | ! Do not allow NEQ to be reduced |
---|
| 313 | ! Add flags for consecutive error test failures and for consecutive |
---|
| 314 | ! corrector failures. |
---|
| 315 | ! ST 09-20-05 |
---|
| 316 | ! Modify JACSP to produce JACSPDV |
---|
| 317 | ! Incorporate option to use JACSPDV for dense Jacobians |
---|
| 318 | ! Incorporate option to use JACSPDV for banded Jacobians |
---|
| 319 | ! Incorporate option to use JACSPDV for sparse Jacobians |
---|
| 320 | ! ST 09-21-05 |
---|
| 321 | ! Supply YSCALE to JACSPDV |
---|
| 322 | ! ST 10-04-05 |
---|
| 323 | ! Make a few changes to introductory comments |
---|
| 324 | ! ST 12-05 |
---|
| 325 | ! Add subroutine interfaces |
---|
| 326 | ! Change some MA28 work arrays to two-dimensional and reference |
---|
| 327 | ! differently to satisfy the Salford ftn95 compiler |
---|
| 328 | ! Modify demo programs to make Salford happy |
---|
| 329 | ! ST 01-01-08 |
---|
| 330 | ! Fixed bug found by Richard Cox (restore NZ when sparse |
---|
| 331 | ! analytic Jacobian used) |
---|
| 332 | ! End DVODE_F90 Conversion Change Record |
---|
| 333 | !_______________________________________________________________________ |
---|
| 334 | ! f77 REVISION HISTORY(YYYYMMDD) |
---|
| 335 | ! 19890615 Date Written. Initial release. |
---|
| 336 | ! 19890922 Added interrupt/restart ability, minor changes throughout. |
---|
| 337 | ! 19910228 Minor revisions in line format, prologue, etc. |
---|
| 338 | ! 19920227 Modifications by D. Pang: |
---|
| 339 | ! (1) Applied subgennam to get generic intrinsic names. |
---|
| 340 | ! (2) Changed intrinsic names to generic in comments. |
---|
| 341 | ! (3) Added *DECK lines before each routine. |
---|
| 342 | ! 19920721 Names of routines and labelled common blocks changed, so as |
---|
| 343 | ! to be unique in combined single/real(wp) code (ACH) |
---|
| 344 | ! 19920722 Minor revisions to prologue (ACH). |
---|
| 345 | ! 19920831 Conversion to real(wp) done (ACH). |
---|
| 346 | ! 19921106 Fixed minor bug: ETAQ,ETAQM1 in DVSTEP SAVE statement (ACH) |
---|
| 347 | ! 19921118 Changed LUNSAV/MFLGSV to IXSAV(ACH). |
---|
| 348 | ! 19941222 Removed MF overwrite; attached sign to H in est. second |
---|
| 349 | ! deriv. in DVHIN; misc. comment changes throughout (ACH). |
---|
| 350 | ! 19970515 Minor corrections to comments in prologue, DVJAC(ACH). |
---|
| 351 | ! 19981111 Corrected Block B by adding final line, GOTO 200 (ACH). |
---|
| 352 | ! 20020430 Various upgrades (ACH): Use ODEPACK error handler package. |
---|
| 353 | ! Replaced D1MACH by DUMACH. Various changes to main |
---|
| 354 | ! prologue and other routine prologues. |
---|