MULTI version 2.2 19-March-1996 mod_hist.list contains a list of modifications with the most recent at top. This makes it easy to check the latest developments of the code. For a documentation of changes with respect to version 1.0, see file mul22.ps. 1. Files in distribution (directory source if not otherwise indicated): a) source files mul22_g.f mul22_l.f main program for global/local operator mul22_subg.f mul22_subl.f subroutines for global/local operator mul22_bconst.f block data initialization, machine dependent constants mul22_sub.f common subroutines mul22_opacu.f opacity routines for uppsala package mul22_writeidl.f IDL printout routines mul22_writeidldbl.f IDL printout routines,double precision b) include files PREC PREC.dp PARAM PARAMW CALIN CATMO2 CATMOS CATOM CBCNST CCNTRB CCONST CFIX CGAUSI CIMIN CINPUT CLGMX CLU COPCL CSLINE CTAUQQ CTERM CTRAN c) utilities make_mul22_dbl.csh creates files in double precision (from directory ../source to ../source_dp) makefile makefile for executables run/run.csh example of run script idl/*.pro IDL procedures to treat output d) sample input and output files (in directory input): abund absdat input file to uppsala opacity package atom.ca6 atom.h6 atmos.val3c dscale.ca6_val3c dscale.h6_val3c input.ca6 input.h6 out.ca6 output from run.csh ca6 val3c 22gus e) documentation README this text mod_hist.list list of modifications, latest at top mul22.ps list of changes from version 1.0 to 2.2 idl/multi.help help text for IDL procedures idl/variables.doc documentation of IDL variables Executables are called mul22abc.x where a denotes operator type (g or l) b denotes opacity package (u) c denotes scratch file storage (s) We thus get the two combinations: mul22gus.x mul22lus.x The Oslo opacity package is no longer supported. 2. Unpacking of distribution a) set working directory to wanted root directory. b) unpack tar file, Subdirectories source, source_dp, input and run are created c) set working directory to source d) run script make_mul22_dbl.csh Single precision executables are made in diretory source, double precisions executables in directory source_dp. Note that only variables in include files and in the file mul22_opacu.f are allowed to have a variable type not conforming to FORTRAN implicit typing (variables beginning with letter I-N are type integer, other variables are real or real*8). New routines and changes to old ones should conform to this convention. 3. Sample run To make sample run: set working directory to source make mul22gus.x make executable cd ../run set working directory to run ln -s ../source/mul22gus.x . symbolic link of executable to run directory run.csh ca6 val3c 22gus run output can be compared with file input/out.ca6. Small differences will exist due to different floating point formats but EMAX values (grep EMAX out.ca6_val3c and grep EMAX ../input/out.ca6) should give values that are identical to a few decimal places. 4. Machine dependencies The record length of direct access files is given in either words or bytes. The distributions is set up assuming words. If record length is to be given in bytes this has to be changed in file mul22_bconst.f in the very beginning: DATA NEWSTA,IRC/'UNKNOWN',1/ should then be changed to DATA NEWSTA,IRC/'UNKNOWN',4/ Changes should only be made to the source files in directory source. They are propagated to the double precision version by running make_mul22_dbl.csh. Compile, link and compiler option commands differ from machine to machine. These are set in the beginning of the makefile. The example makefile works on a Intel PC using the compiler ifort. The large array W is passed as an argument. This may cause overflow of the stack on some machines. Compiling with a switch to store all local variables statically solves this problem. The routine ETIME can be used on many architectures to get timing information. Since this function does not exist on many other architectures, the call has been commented out from the function SECOND in mul22_sub.f. Uncomment the lines to obtain timing on machines where ETIME exist or replace the call with another CPU-time routine if timings are wanted. As the code is now, the timing returns zero to the TIME file. 5. Recommendations for code conventions: Try to restrict changes to as few routines as possible. Do not change existing common blocks - rather add new ones specific to the new version. Stick to the implicit typing convention of FORTRAN. This makes it much easier to have both a single precision and a double precision version of the code. Do not change existing code if that is not absolutely necessary. It is quite tempting to clean up the existing code by changing indentations, statement labels, variable names etc. The increased clarity that may result is not worth the incompatability with other versions around. By restricting changes to a minimum it is much easier to incorporate new features from other sources into any existing version. Try not to change the format of existing input files. It is really frustrating to administer tons of input files if they have different formats. If new information is needed - introduce new input files instead. 6. How to get the distribution The files are available via anonymous ftp from ftp.astro.uio.no (129.240.190.3) username: anonymous password: your email address In directory pub/multi you find the files README this text mod_hist.list modification history, last modifications at top mul22.ps list of changes from version 1.0 to 2.2 mul22.tar.gz distribution in compressed form (289 kB) mul22.tar distribution in uncompressed form (1.2 MB) Note that mul22.tar contains all files (including README, mod_hist.list and mul22.ps). Mats Carlsson Institute of Theoretical Astrophysics P.O Box 1029 Blindern N-0315 Oslo 3 Norway email: matsc@astro.uio.no phone: +47 22 856536 fax: +47 22 856505