## Released versions of package MODEL

1.00 (1988, June): Preliminary version, contains only subroutines for model specification. There are no complete ray tracing subroutines yet. 2.00 (1990, February): Common release with complete ray tracing routines. First consistent version of the ray tracing program. Complete ray tracing poorly debugged. 3.00 (1991, January): Common release with complete ray tracing routines. Principal errors removed from complete ray tracing. 'parm.for': Evaluation of S-wave quality factor corrected. 4.00 (1992, December): MODEL and CRT packages have been split: 'raycb.for' split into 'means.for' (MODEL) and 'raycb.for' (CRT). Subroutine FPOWER moved from 'val.for' to 'model.for'. 'val.for': Incorrect storage of function coefficients in common block /VALC/ fixed. New check for incorrect indices of the class or group during invocation of VAL2. Bugs in the evaluation of embedded functions fixed. 'val.for': Incorrectly coded linear extrapolation of functions outside the given spline grid replaced by analytic continuation. Linear version partially fixed and denoted with 'CV3' in the first three columns. 'val.for': Hermite representation of 1-D cubic splines replaced by a B-spline representation (CURVB1 and CURVB2 of 'fit.for' called instead of CURVN1 and CURV2D). 'model.for', 'srfc.for', 'parm.for', 'val.for', and 'fit.for': Minor corrections to conform with the FORTRAN77 standard. 'means.for': *** Considerable changes and corrections.*** *** new ***: 'model.for', 'parm.for', 'val.for', and 'fit.for': Invocations of VAR* routines enabling inversion have been added and denoted by 'V' in the first column. 'var.for', 'varnul.for', and 'spsp.for': New additional model specification subroutine files for inverse modelling. 'grid.for', 'modsec.for', 'sec.for', 'secdxf.for', and 'secacd.for': New sample application programs and routines working with the model, mostly for the purposes of model displaying. For the same reasons, subroutine CARTES has been added to 'metric.for'. 'clean.for': New simple program to enable a conditional compilation. 4.10 (1994, January): 'model.for', 'parm.for', 'val.for', 'var.for', 'varnul.for', 'means.for', 'grid.for', 'modsec.for', 'lindxf.for', 'clean.for': Error messages, previously generated by statements like STOP 'Error...', are now generated by PAUSE 'Error...' followed by the STOP statement, in order to suspend the batch files in the case of error (the date of subroutines not updated). 'model.for', 'metric.for', 'val.for', 'modsec.for': Each block data subprogram has been declared external in the subroutine designed to read or initialize the data shared. The subroutine is the first subroutine in the corresponding file, after the block data subprogram, and was always assumed to be called before the data in the corresponding common blocks can be used. 'spsp.for': External procedures declared external. 'modsec.for': Two severe bugs fixed (index of a simple block, section boundaries). 'model.for', 'means.for', 'grid.for', 'modsec.for', 'clean.for': Other minor fix-ups and improvements. *** new ***: 'forms.doc': General description of files containing Lines (lines at interfaces, velocity isolines, rays, etc.) or Points (gridded interfaces, sources, receivers, ray endpoints, etc.). The files are introduced especially to simplify data transfer and plotting. 'grid.for': Model specified in curvilinear coordinates is now gridded in Cartesian coordinates. 'array.for': New subroutines to write real arrays into disk files and to read them. Common with package 'NET'. 'modsec.for': New option of generating regularly spaced points along structural interfaces or velocity isolines. New format of output files is described in 'forms.doc'. Common specification of parallel profiles - a change in the input data for the profiles (obligatory slash). 'lindxf.for', 'linacd.for': Replaced 'secdxf.for' and 'secacd.for' to transform lines into the CAD or ACROSPIN format. 5.00 (1996, September): 'model.for', 'parm.for', 'val.for', and 'fit.for': Invocations of VAR* routines enabling inversion are denoted by '*V' instead of 'V ' in the first two columns. No need to patch the code before compilation henceforth. 'model.for': *** Change in input data for model *** (IVERT key added). Subroutine BLOCK slightly extended. 'metric.for': Subroutine CARTES corrected. 'val.for': *** Input grid values for interpolation may now correspond to any power of the interpolated quantity. Model data read by 'srfc.for' and 'parm.for' changed.*** Default keys defining the function form introduced. Number of model parameters increased to NPAR=100000. 'var.for': Number of registers and variations increased to MFUNCT=48 and MB=3072. 'means.for': *** Considerable changes and corrections.*** Unfortunately, not finished. 'grid.for': *** Change in input data, in generation of the partial derivatives, etc. *** 'array.for': Renamed to 'forms.for', updated, supplemented with subroutines FORM1 and FORM2. 'sec.for'+'modsec.for': Joined to single file 'sec.for'. Considerably updated. 'clean.for': Updated. 'mod.bat': *** Considerably changed.*** 'lindxf.for', 'linacd.for': Removed (moved to package D3). 'calcomp.for': Moved from package CRT. *** new ***: All files converted from UPPERCASE to both UpperCase and LowerCase (for better reading and Unix systems), INCLUDE statement introduced for COMMON blocks. '*.inc': Include files with COMMON blocks. SAVE statement is now used consistently for COMMON blocks All files with main programs supplemented with the INCLUDE statements to include all files with called subroutines to simplify the compilation and linking considerably. 'parm.for': Extended to anisotropic models with attenuation, maintaining all compatibility with the isotropic models. 'modelv.for','parmv.for','valv.for','fitv.for': Versions of 'model.for', 'parm.for', 'val.for', and 'fit.for' for inverse problems. 'length.for': Simple subroutine to determine the length of a string. 'gse.for': Subroutines to write and read seismograms in the GSE data exchange format. 'calcops.for': CalComp to PostScript graphics interface. 'modchk.for': Program to check the model consistency. 'intf.for': Program to check the positions of given points with respect to interfaces in the model. 'srp.for': Program to generate source and receiver points corresponding to given configuration parameters. 'pallet.for': Program to interpolate the RGB colour pallet linearly in the HSB colour space. 'sd','slit','wb','l7','mar': Subdirectories with examples of input data for seismic models. 5.10 (1997, October): *** probably not all changes are listed here *** 'forms.doc','length.for','forms.for','gse.for','srp.for', 'calcomp.for','calcomp.inc','calcops.for','calcops.inc', 'pallet.for','f': Moved to new package FORMS ('forms.doc' renamed to 'formsdoc.htm'). 'indexx.for': Moved to new package NR. 'soft.for','inv1soft.for','inv3.for','inv4.for','inv3.dat': Moved from package CRT. 'soft.for': *** Severe bug fixed. *** 'model.doc' renamed to 'modeldoc.htm'. 'lmod.bat' renamed to 'fmod.bat' and revised. 'gridnet.dat' renamed to 'grid.h' and changed into SEP. 'model.for','modelv.for','metric.for','sec.for': BLOCK DATA subprograms canceled. 'modchk.for','grid.for','inv1soft.for','inv3.for': Memory managed by means of 'ram.inc'. Descriptions corrected and updated in most files. All error descriptions moved towards the corresponding reporting statements. Errors renumbered in some files. *** new *** All Fortran files supplemented with HTML references. 'grid.for': Grid dimensions specified by SEP parameter file. 'len-grd.bat'... MS-DOS batch file to display 2-D velocity sections across the demo model 'model.dat'. 5.20 (1998, October): All error messages in the Fortran files, previously generated by statements like PAUSE 'Error ...', are now generated by CALL ERROR('...') in order to enable to fit the error handling for a particular computer by editting file 'error.for' (the date of subroutines not updated). Most warning messages in the Fortran files, previously generated by statements like PAUSE 'Warning ...', are now generated by CALL WARN('...'). 'modeldoc.htm' split into 'modeldoc.htm' and 'modelver.htm', list of files moved to 'model.htm'. 'parm.for': Bugs disabling anisotropic models fixed. New entry PARM4 determining whether a model is isotropic. 'modchk.for': Undefined free-space simple blocks now may or may not be reported. 'grid.for': *** Input data changed. *** 'grid.h': Updated. *** new *** All MS-DOS batch files '*.bat' and Unix scripts '*' replaced by corresponding Perl scripts '*.pl' or by history files '*.h' containing the lines specifying how to run the programs. 5.30 (1999, June): 'model.for': Fatal bug in subroutine FPOWER when calculating the power of a zero material parameter fixed. Subroutine BLOCK completely rewritten and its extended version BLOCKS added. Subroutine INTERF upgraded, new subroutine SEPAR supplemented. 'means.for', 'grid.for', 'sec.for': Updated to correspond to the new version of subroutines BLOCK and BLOCKS. 'val.for': Zero POWERW in input data now reported as error. 'model.dat', 'prem/prem-mod.dat', 'elf1/elf1-mod.dat', 'wb/wb2-mod.dat','l7/l7-mod.dat': Free space simple blocks added. *** new *** 'modsrf.for', 'modsrf.inc': Program to approximate structural interfaces and velocity sections by polygons. 'bndlin.for': Program to write edges of the model box. 'len-mod.h', 'elf1/elf1-mod.h', 'sd/sd1-mod.h', 'sd/sd2-mod.h', 'wb/wb2-mod.h', 'l7/l7-mod.h' and corresponding data '*/*-cam.dat' and '*/*-dli*.dat': History file to generate 3-D VRML97 representations of structural interfaces and velocity distribution in the respective models. '*/*-cam.dat' describe the corresponding initial positions of the camera and '*/*-dli.dat' the directional lights. 'wrl': Subdirectory with 3-D VRML97 representations of several 3-D models. 5.40 (2000, May): 'modchk.for', 'sec.for', 'intf.for': *** Input data changed to SEP format. *** 'grid.for': *** Input data changed. *** Multiple files from * device moved to the history file. 'model.htm': Considerably revised. 'modeldoc.htm' discarded (information moved to 'model.htm'). 'model.for', 'model.inc': Now reading parameter NEGPAR. 'parm.for': Check for negative material parameters may now be disabled by SEP parameter NEGPAR, see 'model.for'. 'val.for': Missing initialization of variable GROUP fixed. 'val.inc': Comments updated. 'soft.for': *** Different weights for different material parameters introduced. Incorrect ordering of independent variables (coordinates) fixed. Two additional severe bugs related to array indices in common block VALC fixed. *** 'modchk.for', 'sec.for', 'intf.for': Since 'model.for' is reading NEGPAR, 'sep.for' has been included. 'bndlin.for': Minor bugs fixed. 'modsrf.for': Input parameters COLUMNii, POWERii, IVALUEii extended by ii=01,02,...,06. New option COLUMNii='SRF' introduced. Some bugs fixed. 'grid.for': *** Discretization of all material parameters and of functions describing interfaces enabled. *** 'model.inc' included because of parameter NEGPAR. Grid may be specified in Cartesian or model coordinates. 'sec.for': Output format corrected. 'inv3.for' discarded (replaced by better program 'modmod.for'). 'inv4.for' discarded, because 'modmod.for' followed by 'grid.for' and 'grdcal.for' do a better job. 'gels.for': Moved to package FORMS. Subdirectories with the data for particular models moved to new package DATA. 'len-*.*' moved to subdirectory 'len' of package DATA. 'model.dat' renamed to 'len-mod.dat', 'grid.h' to 'len-grid.h', 'sec.dat' to 'len-sec.dat', 'sec-pts.dat' to 'len-secp.dat' and all moved to subdirectory 'len' of package DATA. 'soft.dat' replaced with 'sob11.dat'. 'grid.dat' and 'inv3.dat' deleted because are used no more. *** new *** 'inv1soft.for' renamed to 'invsoft.for' and considerably updated (different weights of Sobolev scalar products for surfaces and various material parameters, SEP format of main input data, output in the form of vectors and matrices for convenient processing). 'invpts.for: Program to calculate the derivatives of functions, describing interfaces or material parameters, with respect to the model B-spline coefficients. 'modmod.for': New program to modify the model (update or change parametrization). 'modle2d.for': Provisional version of the program to calculate directional Lyapunov exponents and average Lyapunov exponent for a 2-D model without interfaces. 'sob22.dat','sob22n.dat','sob22l.dat','sob33.dat', 'sob33n.dat','sob22l.dat': General specifications of isotropic Sobolev scalar products. 5.50 (2001, June): 'metric.for': *** Wrong Christoffel symbols in geographic spherical coordinates fixed. *** 'soft.for': Changed to treat surfaces and material parameters separately. 'modchk.for': Comments updated. 'modsrf.for': *** Functionality considerably improved: *** Identification of intersections of gridlegs with interfaces improved. Identification of intersections of gridfaces with edges on interfaces improved. New algorithm for creation of polygons from the identified intersection points coded. 'grid.for': *** Wrong gridding of oblique vertical sections fixed. *** Comments corrected. 'intf.for': Changed to enable writing of results to other than first four columns of the output file, and to enable preserving the values from input file. *** For special case KOLUMN=0 and KSRFC=0 input data changed to KOLUMN=-1 and KSRFC=0. *** 'invsoft.for': *** Wrong output values of model parameters fixed. Check of the dimension of array RAM improved. *** 'invsoft.for', 'invpts.for': *** New input parameter ICLASS, enabling to separate inversions of surfaces and material parameters. *** 'invsoft.for', 'invpts.for', 'modmod.for': *** Revised to understand new parameters FORMM, FORMMR and FORMMW, included to switch the form of the files with matrices between formatted and unformatted. *** 'modle2d.for': *** New parameter NY, enabling to perform calculations also in 3-D models. Models with free space enabled. *** Output format updated. 5.60 (2002, May): 'modsrf.for': Comments updated, minor change to decrease the error in the position of structural edges. 'modmod.for': *** Poor declaration of external function LENGTH fixed. *** 5.70 (2003, May): 'modle2d.for': Weighting of the directional Lyapunov exponents and of the mean Lyapunov exponent coded. Poor declaration improved. *** new *** 'hder.for': Subroutines to calculate the phase-space derivatives of the Hamiltonian in anisotropic media. 'coorchg.for': Program to transform the coordinates of lines or points from Cartesian coordinates to polar spherical or geographic spherical coordinates and vice versa. 5.80 (2004, May): 'model.for': Check of the size of model coordinates with respect to the model dimensions. 'means.for': Comments updated. 'modsrf.for': The default value of ERRSRF accounts for the absolut value of coordinates, not only of gridsteps. Comments updated, numbers of error messages updated. 'grid.for','srfc.for','invsoft.for','invpts.for': Comments updated. *** new *** 'well.for': A new subroutine to extract a 1-D vertical profile from the given model. 'modchk.for': Logical test for overlapping simple blocks coded. 'invsoft.for': Upgraded from inversion for model parameters to simultaneous inversion for hypocentral parameters (coordinates and time). 'srcsrc.for': New program designed to update the source coordinates during the simultaneous inversion of arrival times. 5.90 (2005, June): 'model.for': Comments updated. 'hder.for': Comments updated. 'modsrf.for','grid.for','intf.for','coorchg.for', 'modmod.for': New SEP parameters MINDIG and MAXDIG (without change of dates and versions). 6.00 (2006, June): 'parm.for': *** In subroutine PARM2, the default isotropic reference material corresponding to given anisotropic material was wrong. In subroutine PARM3, the default anisotropic elastic moduli corresponding to given isotropic reference material were wrong if both P- and S-wave velocities were specified. *** 'model.for','metric.for','metric.inc': *** Two new spherical coordinate systems added. *** 'intf.for','coorchg.for','invpts.for': Undefined value UNDEF is now determined by function UARRAY of file 'forms.for'. 'coorchg.for': The non-Cartesian coordinate system is now specified by parameter MODEL instead of parameter KOOR. Minor changes in the screen output. 'invpts.for': A bug, serious but appearing only if POWER differs from POWERM, fixed. Comments extensively updated. Negative values of D1, D2 and D3 enabled. 'means.for','modsrf.for': Comments updated. 6.10 (2007, June): 'model.htm': Comments updated. 'invsoft.for,'invpts.for','modmod.for': Modified to conform to the new programs for matrix operations. 'modmod.for','grid.for': New SEP parameter NUMLIN (no change in file date). 6.20 (2008, June): 'bndlin.for','sec.for': Format 'G12.6' changed to 'G13.6'. 'grid.for': New parameter to control screen output. 'invsoft.for,'invpts.for','modmod.for': Modified to conform to the new versions of subroutines of file 'mat.for'. Attribute TYPE="..." added into all HTML links to text/html or text/plain files with extension other than .htm (without date or version change). 6.30 (2009, June): E-mail addresses replaced by WWW addresses (without date or version change). 'val.for': Comments updated. 6.31 (2009, June): 'val.inc': Comments updated. 6.50 (2011, May): 'grid.for': Subroutine WARRAI used for writing to the output file with indices of complex blocks. 'modmod.for': Comments updated. 'invpts.for': Error message modified. 'clean.for': Modified to enable the length of comment lines up to 254 characters. 6.60 (2012, June): 'grid.for': Description of parameter NEGPAR added. 'modchk.for': Messages to the output file modified. 7.00 (2013, June): 'modsrf.for','coorchg.for': Comments updated. *** new *** 'hder.for': Subroutine HDER now returns also the eigenvectors of the Christoffel matrix. 7.10 (2014, June): 'hder.for': Comments updated. 'modchk.for': Minor change of output message. 'model.for': Minor change - declaration improved. 'model.htm': Compiling instructions updated. 'parm.for': ***Serious bug in subroutine PARM4 corrected.*** *** new *** 'hder.for': New option to calculate the anisotropic-ray- theory S-wave Hamiltonian functions required to trace anisotropic-ray-theory S-wave rays coded (new parameter KSWAVE). New parameter DSWAVE specifying the minimum relative difference between the eigenvalues of the S waves. 7.20 (2015, June): *** new *** 'hder.for': New option to calculate the anisotropic-ray- theory SH-wave and SV-wave Hamiltonian functions required to trace anisotropic-ray-theory SH-wave and SV-wave rays in approximately transversely isotropic medium coded (new parameters TIA1,TIA2,TIA3). 'hdertest.for','hdertest.h','hdertest.dat': New program HDERTEST to test the calculation of the first-order and second-order spatial derivatives of the Hamiltonian function. Example of history file and data file. 7.40 (2017, June): 'invsoft.for': Error messages updated. 'coorchg.for','grid.for','intf.for','invpts.for', 'modmod.for': Value of UNDEF used for undefined real values may now be specified as input SEP parameter (with date and version change).