c----------------------------------------------------------------------- c TLIB - a library of subprograms called by the PERPLEX programs. c Copyright (c) 1998 by James A. D. Connolly, Institute for Mineralogy c & Petrography, Swiss Federal Insitute of Technology, CH-8092 Zurich, c SWITZERLAND. All rights reserved. c Please do not distribute this source. c----------------------------------------------------------------------- subroutine eohead (n) c---------------------------------------------------------------------- c eohead reads cards from n until an 'END' or 'end' is found in c the first 3 columns c---------------------------------------------------------------------- character tag*3 10 read (n,1000,end=20) tag if (tag.eq.'end'.or.tag.eq.'END') goto 99 goto 10 20 call error (37,1d0,n,'EOHEAD') 1000 format (a3) 99 end subroutine topn2 (iopt,icmpn) c---------------------------------------------------------------------- c topn2 reads the header of the thermodynamic data file, if iopt = 0 c then data base choice is known (idbase), else if 1 asks console for a c choice else if 2 echos data except components and atwts to n6 c---------------------------------------------------------------------- implicit double precision (a-g,o-z),integer (h-n) parameter (k4=22,k5=12,l2=5,k0=25,h5=7) character*5 cmpnt, dname*40, gname*78, tcname, tag*3, * n2name*14, vname*8, xname*18 double precision rp(8), rt(8) integer icod(8) common/ csta2 /xname(k5),vname(l2),gname(l2)/ cst83 /ig(l2) * / cst87 /delt(l2),dtol,utol,ptol/ cst41a /n2name * / cst5 /p,t,xco2,u1,u2,tr,pr,r,ps * / cst41 /n1,n2,n3,n4,n5,n6,n7,n8,n9,io3,io4,io5,io9 * / csta5 /dname(8),cmpnt(k0)/ cst42 /ic(k5),idbase * / cst43 /therm(k4),comp(k0),atwt(k0),idh2o,idco2,ikind * / cst207 /ctrans(k0,k5),ictr(k5),itrans/ csta9 /tcname(k5) * / cst10 /iff(2),idss(h5),ifug,ifyn,isyn c----------------------------------------------------------------------- c read the number of data bases c represented in the data file: read (n2,*,err=30) idat c read the extrinsic variable names: read (n2,1000,err=30) (vname(i), i = 1, 3) read (n2,1010,err=30) (ig(i), gname(i), i = 1, 3) if (iopt.lt.4.and.ifug.ge.10) then gname(3) = ' X(O) ' vname(3) = 'X(O)' end if c read delt the finite difference c increments for v1, v2, and v3. and dtol c utol and ptol, the critical tolerances c (in energy units) for determination of c the stability of divariant, univariant c and invariant equilibria or reactions. read (n2,*,err=90) delt, dtol, utol, ptol c read data base codes and titles c and the data base reference state c conditions consistent with v1 and v2. do 10 i= 1, idat read (n2,*,err=90) icod(i),rp(i),rt(i) 10 read (n2,1170,err=90) dname(i) c read number of data base comps read (n2,*,err=90) icmpn c read component names. read (n2,1180,err=90) (cmpnt(i), i = 1, icmpn) c component atomic wts. read (n2,*,err=90) (atwt(i), i = 1, icmpn) c read pointers for water and co2 cmpnt. c if data file doesn't contain water c or co2 dummy values c must be included in the file (ne. 0). read (n2,*,end=90) idh2o, idco2 c read end of header marker 'end' 50 read (n2,1020,end=90) tag if (tag.ne.'end'.and.tag.ne.'END') goto 50 if (iopt.eq.0) then c vertex, choice is idbase do 20 i = 1, idat if (icod(i).eq.idbase) then pr = rp(i) tr = rt(i) dname(idbase) = dname(i) goto 30 end if 20 continue c if no value of icode matches idbase c print error message and stop. write (n3,1190) idbase write (n3,1200) (icod(i), dname(i), i = 1, idat) stop else c other programs select data base here itrans = 0 if (idat.gt.1) then write (*,2430) 5030 write (*,2440) (j,dname(j), j = 1, idat) write (*,*) read (*,*,iostat=ier) idbase call rerror (ier,*5030) else idbase = 1 end if idbase = icod(idbase) tr = rt(idbase) pr = rp(idbase) end if c substitute transformed component names 30 do 15 i = 1, itrans 15 cmpnt(ictr(i)) = tcname(i) if (iopt.eq.3.or.iopt.eq.5) call gettrn (iopt,icmpn) if (iopt.lt.4) goto 99 c echo header for actcor and ctransf write (n6,9010) idat write (n6,1000) (vname(i), i=1, 3) write (n6,1010) (ig(i), gname(i), i=1, 3) write (n6,9020) delt, dtol, utol, ptol do 40 i = 1, idat write (n6,9030) icod(i), rp(i), rt(i) 40 write (n6,1170) dname(i) write (n6,9010) icmpn write (n6,1180) (cmpnt(i), i = 1, icmpn) write (n6,1030) (atwt(i), i = 1, icmpn) write (n6,9010) idh2o, idco2 write (n6,1020) tag goto 99 90 call error (21,r,i,n2name) 1000 format (3(a8,18x)) 1010 format (i2,a78) 1020 format (a3) 1030 format (6(g12.6,1x)) 1170 format (a40) 1180 format (6(a5,1X)/6(a5,1X)) 1190 format (' **error ver001** ',i1,' is an invalid data base', * ' code, valid codes are:') 1200 format (5(10x,i1,' for ',a40,/)) 2430 format (' Select a thermodynamic data base:',/) 2440 format (10X,I1,' - ',a40) 9010 format (10(i2,1x)) 9020 format (8(g9.2,1x)) 9030 format (i2,1x,8(g12.6,1x)) 99 t = tr p = pr end subroutine gettrn (iopt, icmpn) implicit double precision (a-g,o-z),integer (h-n) parameter (k5=12,k0=25,k4=22) integer icout(k5) character*5 cmpnt, tcname, pname, rname, y*1, dname*40 common/ cst41 /n1,n2,n3,n4,n5,n6,n7,n8,n9,io3,io4,io5,io9 * / cst207 /ctrans(k0,k5),ictr(k5),itrans/ csta9 /tcname(k5) * / csta5 /dname(8),cmpnt(k0) * / cst43 /therm(k4),comp(k0),atwt(k0),idh2o,idco2,ikind c----------------------------------------------------------------------- c recombine components: 10 write (*,1030) write (*,1040) (cmpnt(i), i = 1, icmpn) write (*,1050) read (*,3030) y if (y.ne.'Y'.and.y.ne.'y') goto 99 write (*,1060) read (*,3000) pname if (pname.eq.' ') goto 99 c get the identity of the real comp c to be replaced. 50 write (*,1070) pname read (*,3000) rname do 40 i = 1, icmpn if (rname.eq.cmpnt(i)) then if (iopt.eq.3) then if (i.eq.idh2o.or.i.eq.idco2) then c don't allow build users c to transform saturated c phase components call warn (14,real,int,cmpnt(i)) goto 60 end if end if icout(1) = i goto 70 end if 40 continue 60 write (*,1080) write (*,1040) (cmpnt(i),i = 1, icmpn) goto 50 c get the identities of the other c components in the new component: 70 itrans = itrans + 1 ict = 1 if (itrans.gt.k5) call error (999,atwt(1),ict,'GETTRN') write (*,4050) pname 30 read (*,3000) rname if (rname.eq.' ') goto 80 do 20 i = 1, icmpn if (rname.eq.cmpnt(i)) then ict = ict + 1 icout(ict) = i goto 30 end if 20 continue c no match, try again message write (*,2300) goto 30 c get the component stoichiometries: 80 write (*,4030) (cmpnt(icout(i)),i=1,ict) write (*,4040) pname 90 read (*,*,iostat=ier) (ctrans(icout(i),itrans), i= 1, ict) call rerror (ier,*90) write (*,1100) pname,(ctrans(icout(i),itrans), * cmpnt(icout(i)), i = 1, ict) write (*,1110) read (*,3030) y if (y.eq.'y'.or.y.eq.'Y') then sum = 0d0 do 100 i = 1, ict 100 sum = sum + ctrans(icout(i),itrans) * atwt(icout(i)) atwt(icout(1)) = sum cmpnt(icout(1)) = pname ictr(itrans) = icout(1) else itrans = itrans - 1 write (*,*) ' ok, try again.' end if goto 10 1030 format (' The current data base components are:') 1040 format (1x,12(a5,1x)) 1050 format (' Transform them (Y/N)? ') 1060 format (' Enter new component name (< 6 characters', * ' left justified): ') 1070 format (' Enter old component to be replaced', * ' with ',a5,': ') 1080 format (' Select the component from the set: ') 1100 format (1x,a5,' = ',6(f6.2,1x,a5),/,9x,6(f6.2,1x,a5)) 1110 format (' Is this correct (Y/N)? ') 2300 format (/,' You made a mistake, try again.',/ * ' Check spelling and upper/lower case matches.',/) 3000 format (a5) 3030 format (a1) 4030 format (' Enter stoichiometric coefficients of:',/, * 2x,12(a5,1x)) 4040 format (' in ',a5,' (in above order): ') 4050 format (' Enter other components (<12) in ',a5,' 1 per', * ' line, to finish: ') 99 end subroutine rerror (ier,*) c--------------------------------------------------------------------- c rerror - routine to check for errors during list directed i/o implicit double precision (a-g,o-z),integer (h-n) c--------------------------------------------------------------------- if (ier.eq.0) then return else write (*,1000) ier = 0 return 1 end if 1000 format (/,' Your input is incorrect, probably you are using ', * 'a character where',/,' you should be using a number ', * 'or vice versa, try again...',/) end subroutine error (ier,real,int,char) c--------------------------------------------------------------------- c write error messages and terminate execution c--------------------------------------------------------------------- implicit double precision (a-g,o-z),integer (h-n) character char*14 if (ier.eq.13) then write (*,13) int else if (ier.eq.14) then write (*,14) char else if (ier.eq.15) then write (*,15) char else if (ier.eq.16) then write (*,16) int else if (ier.eq.17) then write (*,17) int else if (ier.eq.18) then write (*,18) char else if (ier.eq.19) then write (*,19) char else if (ier.eq.20) then write (*,20) int, char else if (ier.eq.21) then write (*,21) char else if (ier.eq.22) then write (*,22) int, char else if (ier.eq.23) then write (*,23) char else if (ier.eq.24) then write (*,24) int else if (ier.eq.25) then write (*,25) int else if (ier.eq.26) then write (*,26) int, char else if (ier.eq.27) then write (*,27) else if (ier.eq.28) then write (*,28) int, char else if (ier.eq.29) then write (*,29) int, char else if (ier.eq.30) then write (*,30) int,char else if (ier.eq.31) then write (*,31) char else if (ier.eq.32) then write (*,32) else if (ier.eq.33) then write (*,33) char, int else if (ier.eq.34) then write (*,34) else if (ier.eq.35) then write (*,35) else if (ier.eq.36) then write (*,36) else if (ier.eq.37) then write (*,37) int else if (ier.eq.39) then write (*,39) int else if (ier.eq.40) then write (*,40) int, char else if (ier.eq.41) then write (*,41) int, char else if (ier.eq.42) then write (*,42) else if (ier.eq.43) then write (*,43) char else if (ier.eq.106) then write (*,106) char else if (ier.eq.107) then write (*,107) int else if (ier.eq.108) then write (*,108) int else if (ier.eq.109) then write (*,109) int else if (ier.eq.110) then write (*,110) else if (ier.eq.111) then write (*,111) else if (ier.eq.112) then write (*,112) else if (ier.eq.113) then write (*,113) else if (ier.eq.115) then write (*,115) else if (ier.eq.116) then write (*,116) else if (ier.eq.117) then write (*,117) else if (ier.eq.118) then write (*,118) else if (ier.eq.119) then write (*,119) char else if (ier.eq.120) then write (*,120) char else if (ier.eq.121) then write (*,121) char else if (ier.eq.125) then write (*,125) real, char else if (ier.eq.169) then write (*,169) int else if (ier.eq.180) then write (*,180) int,char else if (ier.eq.181) then write (*,181) int else if (ier.eq.183) then write (*,183) int else if (ier.eq.182) then write (*,182) int else if (ier.eq.197) then write (*,197) else if (ier.eq.200) then write (*,200) else if (ier.eq.204) then write (*,204) int else if (ier.eq.206) then write (*,206) int else if (ier.eq.207) then write (*,207) real,char else if (ier.eq.208) then write (*,208) char else if (ier.eq.279) then write (*,279) int else if (ier.eq.323) then write (*,323) else write (*,999) ier,real,int,char end if stop 13 format (' **error ver016** too many excluded phases, ', * 'increase dimension h8 (',i2,') and recompile.') 14 format (' **error ver014** programming error, routine ',a6) 15 format (' **error ver015** missing composant for: ',a5,/) 16 format (' **error ver016** too many saturated components, ', * 'increase dimension h5 (',i2,') and recompile.') 17 format (' **error ver017** too many composants for a saturation', * ' constraint increase dimension h6 (',i3, * ') and recompile.') 18 format (' **error ver018** ',a5,' is defined as a saturated ', * 'phase component in the thermodynamic data file.') 19 format (' **error ver019** probable cause missing composant,', * ' executing routine ',a6) 20 format (' **error ver020**error reading the solution model', * ' file.',/,' Reading model: ',a10, * ' Check formatting.',/) 21 format (' **error ver021**error reading ', * 'header section of',/,' thermodynamic data ', * 'file:',a14,' Check formatting',/) 22 format (' **error ver022** too many divariant assemblages, ', * 'increase dimension j9 (',i4,') and recompile. ',/, * ' In routine: ',a6) 23 format (' **error ver023**error reading', * ' thermodynamic data file.',/,' Last data read', * ' without error was for: ',a8,' Check formatting.',/) 24 format (' **error ver024** too many solution models in', * ' solution model file',/,' increase parameter i9 (', * i3,') and recompile.') 25 format (' **error ver025** too many solution models ', * ' increase parameter h9 (',i3,') and recompile.') 26 format (' **error ver026** the number of fixed components (', * i2,') in ',a10,/,' is >= the number of components ',/) 27 format (' **error ver027**error reading the computational', * ' option file (LUN N1).',/) 28 format (/,' **error ver028** invalid buffer choice (',i3,') in', * ' routine: ',a6,/) 29 format (/,' **error ver029** unknown term type ',i6,' for', * ' solution model: ',a10,/) 30 format (/,' **error ver030** the number of mixing sites ',i2, * ' is < the number of independent sites',/,' for', * ' solution model: ',a10,/) 31 format (/,' **error ver031** erroneous solution model', * ' parameter for: ',a10,/) 32 format (/,' **error ver032** stability field calculations (', * 'option 2) are disabled in this version of PERPLEX',/) 33 format (' **error ver033** too may terms in multisite model',a10 * ,/,' increase m0 (',i2,') and recompile PeRpLeX.',/) 34 format (' **error ver034** vmax is lt vmin, check input.') 35 format (' **error ver035** dv is lt 0, check input.') 36 format (' **error ver036** missing composant for the saturated', * ' phase,',/,' you have probably excluded either H2O or', * ' CO2.',/) 37 format (' **error ver037** no end marker in header',/, * ' section of thermodynamic data file unit ',i2,/) 39 format (' **error ver039** too many end-members, ', * 'increase dimension k12 (',i2,') and recompile. ',/, * ' Routine: ',a6) 40 format (' **error ver040** too many compositional coordinates, ', * 'increase dimension k13 (',i5,') and recompile. ',/, * ' Routine: ',a6) 41 format (' **error ver041** too many pseudocompounds, ', * 'increase dimension k1 (',i4,') and recompile. ',/, * ' Routine: ',a6) 42 format (/,' **error ver042** the possible phases of the system do' * ,' not span the specified bulk composition.',/) 43 format (/,' **error ver043** you cannot simultaneously treat: ', * a10,/,' as a thermodynamic solution and as a saturated', * ' phase.',/) 106 format (' **error ver106** programming error in ',a6) 107 format (' **error ver107** the assemblage you input is ', * 'metastable (ier=',i3,').') 108 format (' **error ver108** the assemblage you input is ', * 'degenerate (ier=',i3,').') 109 format (' **error ver109** the assemblage you input does not span' * ,' the specified bulk composition (ier=',i3,').') 110 format (' **error ver110** you have requested a calculation ', * 'with the composition ',/,' of a saturated phase as a ', * 'variable, but you have not defined its composition') 111 format (' **error ver111** you have requested a calculation ', * 'with the composition ',/,' of a saturated phase as a ', * 'variable, but the phase has only one component') 112 format (' **error ver112** the maximum value of an independent ' * ,'variable',/,'is less than or equal to the minimum value') 113 format (' **error ver113** the default increment of an ', * 'independent variable is zero') 115 format (' **error ver115** the default increment of an ', * 'independent variable is less than',/,' 0.1 percent of ', * 'its range, execution is stopped. To avoid this error ' * ,'use a larger increment or change the error test limit') 116 format (' **error ver116** an independent variable, or at least' * ,' its name, is undefined') 117 format (' **error ver117** vmax(iv(3)) ne vmin(iv(3) but no ', * 'sectioning variable v(iv(3)) is defined') 118 format (' **error ver118** the default increment of the ', * 'sectioning variable will result ',/, * 'in the generation of more ', * 'than 10 sections, to avoid this',/,' error increase ', * 'the increment or modify this test') 119 format (' **error ver119** input1 the thermodynamic data base ', * 'file ',a14,' read on lun n2 could not be opened,',/, * ' check if it exists') 120 format (' **error ver120** input1 file ',a14,' read on lun n1', * ' could not be opened',/,' this file is normally', * ' created by build, check if it exists') 121 format (' **error ver121** INPUT1, solution model file ', * a14,' on LUN n9 could not be opened,',/, * ' check if it exists') 125 format (/,' **error ver125** a site fraction (',g8.2,') is out', * ' of range for : ',a10,/,' The configurational', * ' entropy model is probably incorrect, or there is a', * ' a programming error.',/) 169 format (' **error ver169** cart, imod=',i2,' is an invalid ', * 'request') 180 format (' **error ver180** too many pure compounds,', * ' increase parameter k10 (',i4,')',/, * 'and recompile. Routine: ',a6) 181 format (' **error ver181** too many reactions,', * ' increase dimension k2 (',i4,') and ', * 'and recompile vertex.') 182 format (' **error ver182** too many invariant points,', * ' problem increase dimension k2 (',i4,') and ', * 'and recompile vertex.') 183 format (' **error ver183** too many divariant assemblages,', * ' problem increase dimension k2 (',i4,') and ', * 'and recompile vertex.') 197 format (' **error ver197** to many components, increase', * ' parameter k5 and recompile vertex.',/) 200 format (' **error ver200** you are trying to use a fluid ', * 'equation of state for an invalid component',/) 204 format (' **error ver204** too many stable assemblages, i', * 'ncrease dimension j9 (',i5,') and recompile vertex',/) 206 format (' **error ver206** too many univariant assemblages ', * 'intersect the edges of the diagram, i', * 'ncrease dimension k2 (',i4,') and recompile vertex',/) 207 format (/,' **error ver207** the value of the stretching ', * ' parameter (',g13.6,')',/,' for solution ',a10, * ' is invalid (<1) for transform subdivision,',/, * ' check section 4 of PERPLEX documentation.',/) 208 format (' **error ver208** too many phases on one side of a',/ * ' reaction.',/,' Do not use the full reaction', * ' equation option (',a6,').') 279 format (' **error ver279** you have got a problem ',i3) 323 format (' **error ver323** prime9, imd(i)=0 is the only',/, * 'subdivision scheme permitted for this version' ) 999 format (' **error vertex** unspecified error ier=',i3, * ' real=',g13.6,' i=',i4,' char=',a6) end subroutine warn (ier,real,int,char) c--------------------------------------------------------------------- c write error messages and terminate execution c--------------------------------------------------------------------- implicit double precision (a-g,o-z),integer (h-n) common / cst41 /n1,n2,n3,n4,n5,n6,n7,n8,n9,io3,io4,io5,io9 character char*14 if (ier.eq.9) then write (n3,9) char else if (ier.eq.10) then write (n3,10) int, real, char else if (ier.eq.11) then write (n3,11) char else if (ier.eq.12) then write (n3,12) char else if (ier.eq.13) then write (n3,13) char else if (ier.eq.14) then write (*,14) char else if (ier.eq.15) then write (*,15) else if (ier.eq.16) then write (*,16) else if (ier.eq.17) then write (*,17) else if (ier.eq.18) then write (n3,18) real else if (ier.eq.19) then write (*,19) int else if (ier.eq.20) then write (*,20) else if (ier.eq.21) then write (*,21) real, char else if (ier.eq.22) then write (*,22) real, char else if (ier.eq.23) then write (*,23) char else if (ier.eq.24) then write (n3,24) real else if (ier.eq.25) then write (*,25) int, char else if (ier.eq.26) then write (*,26) char else if (ier.eq.27) then write (n3,27) char else if (ier.eq.28) then write (n3,28) write (*,28) else if (ier.eq.29) then write (n3,29)char write (*,29) char else if (ier.eq.32) then write (*,32) char else if (ier.eq.33) then write (*,33) char else if (ier.eq.34) then write (*,34) char else if (ier.eq.35) then write (*,35) char,real else if (ier.eq.43) then write (n3,43) int, char else if (ier.eq.44) then write (n3,44) char else if (ier.eq.45) then write (*,45) char else if (ier.eq.46) then write (*,46) else if (ier.eq.47) then write (*,47) int, real write (n3,47) int, real else if (ier.eq.58) then write (n3,58) else if (ier.eq.60) then write (n3,60) char else if (ier.eq.63) then write (n3,63) else if (ier.eq.73) then write (n3,73) char, real, int else if (ier.eq.74) then write (n3,74) else if (ier.eq.79) then write (n3,79) char else if (ier.eq.87) then write (n3,87) else if (ier.eq.108) then write (n3,108) else if (ier.eq.109) then write (n3,109) else if (ier.eq.114) then write (n3,114) else if (ier.eq.170) then write (*,170) else if (ier.eq.171) then write (*,171) else if (ier.eq.172) then write (*,172) else if (ier.eq.173) then write (*,173) else if (ier.eq.174) then write (*,174) else if (ier.eq.175) then write (*,175) char,ier,real else if (ier.eq.205) then write (*,205) int write (*,900) write (n3,205) int write (n3,900) else write (*,999) ier, char, real, int end if 9 format (/,' **warning ver009** unable to deconstruct transition,' * ,/,' data for ',a8,' will not be output.',/) 10 format (/,' **warning ver010** not able to traverse ', * 'the entire',/,' extent of equilibrium (',i3,')', * ' at v(3)=',g12.6,/, * ' this error can usually be avoided by increasing the ', * 'finite',/,' difference increment delt(iv(1)) or delv', * '(iv(2)), as defined on card 6 of',/,' the file on n2.', * ' In routine:',a6,/) 11 format (/,' **warning ver011** phase ',a8,' has more than one', * ' transition with dp/dT ne 0 and may not be treated ',/, * ' correctly',/) 12 format (/,' **warning ver012** phase ',a8,' has a transition ', * ' with dp/dT < 0 and may not be treated ',/, * ' correctly',/) 13 format (/,' **warning ver013** phase ',a8,' has a negative ', * 'composition and will be ',/,' rejected from the ', * 'saturated-component composition space.',/) 14 format (/,' **warning ver014** you can not redefine the ', * 'saturated phase component:',a5,/) 15 format (/,' **warning ver015** the order you enter the component', * 's determines the',/,' saturation heirarchy and will ', * 'effect your results (see Connolly 1990).',/) 16 format (/,' **warning ver016** you are going to treat a saturate', * 'd (fluid) phase component',/,' as a thermodynamic ', * 'component, this may not be what you want to do.',/) 17 format (/,' **warning ver017** you gotta be kidding, either ', * ' 1 or 2 components, try again:',/) 18 format (/,' **warning ver018** the value of the default dependen', * 't variable (',g14.6,') for the following',/, * ' equilibrium was inconsistent with the an earlier ', * 'determination of the invariant condition',/, * ' and will be reset. This may cause the curve to ', * 'look kinked near the invariant point',/) 19 format (/,' **warning ver019** specify at least 2 and', * /,' at most ',i1,' thermodynamic components, try again', * /) 20 format (/,' **warning ver020** sfol2, dont worry, be happy',/) 21 format (/,' **warning ver021** xmax (',g12.6,') > 1.0 for ' * ,' solution model ',a10,/,' xmax will be reset to 1.0', * /,' see documentation, section 4.0. ',/) 22 format (/,' **warning ver022** xmin (',g12.6,') < 0.0 for ' * ,' solution model ',a10,/,' xmin will be reset to 1.0', * /,' see documentation, section 4.0. ',/) 23 format (/,' **warning ver023** xmin gt xmax for solution ',a10,/, * ' xmin will be set to xmax NO PSEUDOCOMPOUNDS WILL BE', * ' GENERATED.',/,' see documentation, section 4.0',/) 24 format (/,' **warning ver024** wway, increment refined out of', * ' range (',g8.1,')',/,' before the stable', * ' extension of the equilibria was located') 25 format (/,' **warning ver025** ',i1,' endmembers for ',a10, * ' The solution will not be considered',/) 26 format (/,' **warning ver026** only one endmember for ',a10, * ' The solution will not be considered',/) 27 format (/,' **warning ver027** phase ',a8,' has a negative ', * 'composition and will be ',/,' rejected from the ', * 'thermodynamic-component composition space.',/) 28 format (/,' **Warning ver028** The phases of the system do not' * ,' span the entire composition',/,' space of the' * ,' system as defined by positive linear combination',/ * ,' of the systems components.',/) 29 format (/,' **warning ver014** programming error, routine ',a6,/) 32 format (/,' **warning ver032** fixed activity option requested', * ' for ',a10,/,' This option is disabled, the', * ' solution will not be considered.',/) 33 format (/,' **warning ver033** missing endmembers for ',a10,/, * ' The model may be recast in more than one way for', * ' the endmember subset',/,' To control this choice', * ' eliminate additional endmembers.',/) 34 format (/,' **warning ver034** ',a10,' could not be recast as', * ' a simpler model.',/,' The solution will not be', * ' considered.',/) 35 format (/,' **warning ver035** ',a6,' is only for pure fluids', * /,' XCO2 will be reset to: ',f4.2,/) 43 format (/,' **warning ver043** ',i2,' solutions referenced ', * 'in your input',/,' were not found in the solution ', * 'model data file, routine:',a6,/) 44 format (' **warning ver044** a solution model has destabilized', * ' the endmember: ',a8,' (iend=2)',/) 45 format (/,' **warning ver045** the reaction involves one or more', * ' phases (',a8,' )',/,' defined by a nonlinear EoS (see', * ' program documentation Eq 2.2)',/, * ' NO OUTPUT GENERATED.',/) 46 format (/,' **warning ver046** the equations of state can only', * ' be linearly combined if',/,' the pressure derivative', * ' of the bulk modulus is constant for all phases.',/, * ' (see program documentation Eq 2.3)',/) 47 format (/,' **warning ver047** invariant point ',i5,' could ', * ' not be located within',/,' the specified tolerence ', * ' (PTOL= ',g12.6,' ) reset PTOL to avoid this problem.',/) 58 format (/,' **warning ver058** wway, the equilibrium of the ' * ,'following reaction',/,' is inconsistent with the ', * 'invariant equilibrium.',/) 60 format (/,' **warning ver060** non-fatal programming error ', * 'routine:',a6,/) 63 format (/,' **warning ver063** wway, invariant point on an edge?', * /) 73 format (/,' **warning ver073** an invariant point has been', * ' skipped, routine:',a6,/,' This problem typically', * ' occurs because two phases in the thermodynamic data', * ' file have identical properties.',/,' Otherwise ', * ' decreasing DTOL (',g9.3,') in the thermodynamic', * ' data file (Doc Sect 3, Card 6) for variable ',i1,/, * ' may eliminate this problem',/) 74 format (/,' **warning ver074** no new equilibria identified,', * ' if degenerate segments have',/,' been skipped', * ' increase the computational reliability level.',/) 79 format (/,' **warning ver079** univeq failed on an edge for ', * 'the following equilibrium.',/, * ' Probable cause is either ', * 'extreme independent variable limits (e.g., xco2=0)',/ * ' or poor convergence criteria ', * 'in the thermodynamic data file. In routine:',a6,/) 87 format (/,' **warning ver087** wway-univeq did not converge ', * 'when div was refined',/) 108 format (/,' **warning ver108** wway, a phase field with the ' * ,'following',/,' reaction is stable on both ', * 'sides of an invariant point',/,' this error can ', * 'usually be avoided by increasing the finite ',/, * ' difference increment delt(iv(1)) or delv', * '(iv(2)), defined', * /,' on card 6 of the thermodynamic data file',/) 109 format (/,' **warning ver109** you may ', * 'have assigned a mobile component as an independent ',/, * ' variable without defining the component',/) 114 format (/,' **warning ver114** the default increment of an ', * 'independent variable is less than',/,' one percent of ', * 'its range, this is usually inefficient',/) 170 format (/,' **warning ver170** cart, you have specified an ', * 'inconsistent ternary',/,' subdivision scheme with ', * ' xmx1.ge.(1-xmn2), xmx1 has been set = 1-xmn2',/) 171 format (/,' **warning ver171** cart, you have specified an ', * 'inconsistent ternary',/,' subdivision scheme with ', * ' xmx2.ge.(1-xmn1), xmx2 has been set = 1-xmn1',/) 172 format (/,' **warning ver172** you cannot use this equation of', * ' state with Y(CO2)',/,' as an indepedent variable, ', * ' pick another one:',/) 173 format (/,' **warning ver173** invalid buffer choice ',/) 174 format (/,' **warning ver174** the full reaction equations', * ' may vary as a function',/,' of the independent', * ' variables which may also cause a change in the',/, * ' saturated phases.',/,' The equations output are', * ' those at the first equilibrium condition found.',/) 175 format (/,' **warning ver175** speciation routine ',a6,' did', * ' not converge ',/,' possibly due to graphite super-', * 'saturation. ier = ',i1,' real = ',g16.5,/) 205 format (/,' **error ver205** too many new phase assemblages, ', * 'found by routine newhld',/,' increase dimension j9 (', * i5,') and recompile vertex.',/) 900 format (' the calculation may be incomplete !!!!',/) 999 format (/,' **warning unspecified** ier =',i3,' routine ',a6 * ,' r = ',g12.6,' int = ',i9,/) end