source: palm/trunk/UTIL/chemistry/gasphase_preproc/kpp/int/DVODE/ChangeRecord.txt @ 2696

Last change on this file since 2696 was 2696, checked in by kanani, 6 years ago

Merge of branch palm4u into trunk

File size: 14.2 KB
Line 
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.
Note: See TracBrowser for help on using the repository browser.