ISO is a program which computes the P-T trajectory of a graphite saturated COH fluid bulk (i.e., fluid + precipitated graphite) isochore from a specified trapping condition down to a temperature at which equilibrium speciation is assumed cease. The program was written by me for a paper by Bernardo Cesare on the problems caused by respeciation, and it should be rewritten for applied problems, but I don't have the time. Anyway, here's an example of the input and what you get out of the program. The algorithm for solving fluid speciation at constant H/O ratio (i.e., X(O) = n(O)/(n(O)+n(H))) is described in the paper: Phase Diagram Methods for Graphitic Rocks and Application to the System C-O-H-FeO-TiO2-SiO2 (1994) JAD Connolly, Contrib Mineral Petrol. and the RK parameters are given in: C-O-H-S Fluid Composition and Oxygen Fugacity in Graphitic Metapelites (1993) Connolly & Cesare, J Met Geol 11:379-388 Instructions for compiling follow the example. =================================================================== EXAMPLE the computer prompt here is: ostrich{jamie}1: and i've put my comments in square brackets []: ostrich{jamie}54: iso Select fluid equation of state: [This program assumes graphite would be precipitated along any isochoric COH cooling path, this is not valid for extremely hydrogen rich compositions and also for extremely low-pressure high-temperature isochores] 0 - Modified Redlich-Kwong (MRK/DeSantis/Holloway) 1 - Kerrick & Jacobs 1981 (HSMRK) 2 - Hybrid MRK/HSMRK 3 - Saxena & Fei 1987 pseudo-virial expansion 4 - Bottinga & Richet 1981 (CO2 RK) 5 - Holland & Powell 1991 (CORK) 6 - Hybrid Haar et al 1979/HSMRK (TRKMRK) 7 - Graphite buffered COH MRK fluid 8 - Graphite buffered COH hybrid-EoS fluid 9 - Max X(H2O) GCOH fluid Cesare & Connolly 1993 10 - X(O) GCOH-fluid hybrid-EoS Connolly & Cesare 1993 11 - X(O) GCOH-fluid MRK Connolly & Cesare 1993 12 - X(O) GCOHS-fluid hybrid-EoS Connolly & Cesare 1993 13 - X(H2) H2-H2O hybrid-EoS 14 - EoS Birch & Feeblebop (1993) 15 - X(H2) low T H2-H2O hybrid-EoS 16 - X(O) H-O HSMRK/MRK hybrid-EoS 17 - X(O) H-O-S HSMRK/MRK hybrid-EoS 18 - Delany/HSMRK/MRK hybrid-EoS, for P > 10 kb 19 - X(O)-X(S) COHS hybrid-EoS Connolly & Cesare 1993 20 - X(O)-X(C) COHS hybrid-EoS Connolly & Cesare 1993 10 [11 is the only other valid choice, see README.RK for a discussion of these equations] Compute f(H2) & f(O2) as the dependent fugacities (do not unless you project through carbon) (Y/N)? n [this question is irrelevant] Reduce graphite activity (Y/N)? n xo, pmin, tmin, tmax [X(O) is n(O)/(n(O)+n(H)) of the fluid, carbon precipitation cannot affect the X(O) of the fluid, so this compositional variable remains constant for the isochore (assuming H isn't lost by some non-equilibrium process). pmin is pressure in bars at which calculations will terminate, this is just a safety switch to stop the program from bombing. tmin is the temperature in K at which COH equilibration is assumed to stop, who knows what this really is, but the program probably won't go to far below 673 K. The program will work at subcritical conditions, but it won't tell you if the composition you've chosen is inside a solvus. tmax is the trapping T.] 0.333333 100. 673 1073 enter dt, tol [dt is the temperature increment along the isochore path, and tol is the allowed error (g/cm3) for the isochore density] 20. 0.001 p(bar) at t(k) = 1073.0000000000 ? [this is the trapping pressure] 6000. [these are the P-T-rho(fluid) conditions for the isochore the trapping fluid density is the density of the bulk (fluid+graphite) isochore] 6000.0000000000 1073.0000000000 0.70707898661128 5747.2045898438 1053.0000000000 0.70528196852136 5494.9002832174 1033.0000000000 0.70341298051617 5243.3314467686 1013.0000000000 0.70149213081888 4991.5643678923 993.00000000000 0.69947509951410 4740.1790408803 973.00000000000 0.69739936277080 4488.6849620044 953.00000000000 0.69524083818520 4236.8927339598 933.00000000000 0.69304735615430 3985.4068231307 913.00000000000 0.69076164854979 3734.0316258334 893.00000000000 0.68841547850011 3483.3934582802 873.00000000000 0.68605663704747 3232.6952369452 853.00000000000 0.68361496044092 2982.5996943473 833.00000000000 0.68119101898398 2734.1725234233 813.00000000000 0.67876654482197 2487.2188493524 793.00000000000 0.67635312564968 2242.4356665575 773.00000000000 0.67399953207106 1999.9994039966 753.00000000000 0.67169275713011 1760.6440103290 733.00000000000 0.66948427322946 1524.8860777103 713.00000000000 0.66740403978672 1293.0290047626 693.00000000000 0.66545368166484 1065.5495973603 673.00000000000 0.66367090316250 1065.5495973603 673.00000000000 0.66367090316250 p, t, d = 1065.5495973603 673.00000000000 0.66373999209015 [these are the P-T-rho(fluid) conditions for the constant speciation isochore calculated from the bulk ischores pressure at tmin. This is backwards from what will interest most FI people.] 4579.9316406250 1073.0000000000 0.66375338283147 4404.9343109131 1053.0000000000 0.66373969400089 4230.4667582735 1033.0000000000 0.66375753818619 4055.5068015937 1013.0000000000 0.66374466419023 3880.7151191991 993.00000000000 0.66374323382282 3705.8016633670 973.00000000000 0.66373538203698 3531.0576130305 953.00000000000 0.66374270239220 3355.9865580687 933.00000000000 0.66373097991167 3181.1044675475 913.00000000000 0.66373985875658 3005.8365620449 893.00000000000 0.66372669726757 2830.6066717067 873.00000000000 0.66372637732811 2655.2771905888 853.00000000000 0.66373096936175 2479.9761919181 833.00000000000 0.66375533530999 2303.9183827991 813.00000000000 0.66372783094492 2127.9707970630 793.00000000000 0.66373288908188 1951.7116164589 773.00000000000 0.66373298020160 1775.4011842277 753.00000000000 0.66376075142556 1598.2896820864 733.00000000000 0.66373268961106 1421.2456864493 713.00000000000 0.66375525727839 1243.5097554840 693.00000000000 0.66373614489277 1065.3947105625 673.00000000000 0.66371658192648 1065.3947105625 673.00000000000 0.66371658192648 p(bar) at t(k) = 1073.0000000000 ? [Enter a zero to terminate calculations.] 0 [ISO also writes these data to a file called iso.dat that can be plotted as follows with PSVDRAW] ostrich{jamie}65: psvdraw Enter plot file name: iso.dat PostScript will be written to file: iso.dat.ps Modify the default plot (y/n)? n [iso.dat.ps contains a PostScript plot of the isochores] ostrich{jamie}66: [You can compute the speciation at any point along the isochore with COHSRK, or alternatively you can modify ISO (file iso.f) to output this information to iso.dat or the console] =================================================================== c NOTES ON COMPILING: c See README.COHSRK for more information on the fluid equations c of state. c The MAIN program ISO and a BLOCK DATA are included in iso.f, c the subroutines called by ISO are in the files flib.f & tlib.f. c The files may be compiled separately and the objects linked together, c or you may concatenate the files. c This program was put together from routines used in PERPLEX (see c below) and for this reason it is not as compact or as flexible c as might be desired. The size of the flib.f may cause problems c for DOS compilers, these can be overcome by splitting the source c into two or three blocks that can then be combined during linking. c Alternatively, routines that are not considered c can be eliminated if the calls to these routines from subprogram c cfluid are also eliminated. c Specifically I would recommend eliminating: c subroutine brmrk c subroutine simps c subroutine qromb c subroutine polint c subroutine trapzd c function brvol c function vdpdv c subroutine hosrk5 c subroutine cohfit c subroutine haar c subroutine psat2 c subroutine aideal c subroutine trkmrk c subroutine saxfei c subroutine hprk c subroutine cohgra c subroutine hh2ork c subroutine lohork c subroutine lomrk c this requires elimination of the calls to: brmrk, cohfit, c trkmrk, saxfei, hprk, cohgra, hh2ork, and lohork from cfluid. c subroutines warn and error can also be eliminated if the c calls to these routines, from subroutines rfluid, brmrk, c cohgra, cohsgr and cohhyb, are replaced by statements that write c an appropriate warning or error message.