[CHNOSZ-commits] r239 - in pkg/CHNOSZ: . R data demo inst inst/extdata/Berman inst/extdata/OBIGT man tests/testthat vignettes

noreply at r-forge.r-project.org noreply at r-forge.r-project.org
Tue Oct 3 09:35:25 CEST 2017


Author: jedick
Date: 2017-10-03 09:35:24 +0200 (Tue, 03 Oct 2017)
New Revision: 239

Added:
   pkg/CHNOSZ/inst/extdata/Berman/JUN92.csv
Modified:
   pkg/CHNOSZ/DESCRIPTION
   pkg/CHNOSZ/R/affinity.R
   pkg/CHNOSZ/R/berman.R
   pkg/CHNOSZ/R/info.R
   pkg/CHNOSZ/R/subcrt.R
   pkg/CHNOSZ/R/util.expression.R
   pkg/CHNOSZ/R/util.misc.R
   pkg/CHNOSZ/data/buffer.csv
   pkg/CHNOSZ/data/refs.csv
   pkg/CHNOSZ/demo/buffer.R
   pkg/CHNOSZ/demo/dehydration.R
   pkg/CHNOSZ/inst/NEWS
   pkg/CHNOSZ/inst/extdata/OBIGT/Berman_cr.csv.xz
   pkg/CHNOSZ/inst/extdata/OBIGT/inorganic_cr.csv.xz
   pkg/CHNOSZ/man/basis.Rd
   pkg/CHNOSZ/man/data.Rd
   pkg/CHNOSZ/man/diagram.Rd
   pkg/CHNOSZ/man/species.Rd
   pkg/CHNOSZ/man/subcrt.Rd
   pkg/CHNOSZ/man/util.misc.Rd
   pkg/CHNOSZ/tests/testthat/test-basis.R
   pkg/CHNOSZ/tests/testthat/test-berman.R
   pkg/CHNOSZ/tests/testthat/test-subcrt.R
   pkg/CHNOSZ/vignettes/anintro.Rmd
   pkg/CHNOSZ/vignettes/obigt.Rmd
   pkg/CHNOSZ/vignettes/obigt.bib
Log:
rename "cr1" to "cr" (lowest-T polymorph for minerals with transitions)


Modified: pkg/CHNOSZ/DESCRIPTION
===================================================================
--- pkg/CHNOSZ/DESCRIPTION	2017-10-03 02:31:15 UTC (rev 238)
+++ pkg/CHNOSZ/DESCRIPTION	2017-10-03 07:35:24 UTC (rev 239)
@@ -1,6 +1,6 @@
 Date: 2017-10-03
 Package: CHNOSZ
-Version: 1.1.0-37
+Version: 1.1.0-38
 Title: Thermodynamic Calculations for Geobiochemistry
 Author: Jeffrey Dick
 Maintainer: Jeffrey Dick <j3ffdick at gmail.com>

Modified: pkg/CHNOSZ/R/affinity.R
===================================================================
--- pkg/CHNOSZ/R/affinity.R	2017-10-03 02:31:15 UTC (rev 238)
+++ pkg/CHNOSZ/R/affinity.R	2017-10-03 07:35:24 UTC (rev 239)
@@ -1,6 +1,13 @@
 # CHNOSZ/affinity.R
 # calculate affinities of formation reactions
 
+## if this file is interactively sourced, the following are also needed to provide unexported functions:
+#source("util.affinity.R")
+#source("util.units.R")
+#source("util.character.R")
+#source("util.list.R")
+#source("subcrt.R")
+
 affinity <- function(...,property=NULL,sout=NULL,exceed.Ttr=FALSE,
   return.buffer=FALSE,balance="PBB",iprotein=NULL,loga.protein=-3) {
   # ...: variables over which to calculate

Modified: pkg/CHNOSZ/R/berman.R
===================================================================
--- pkg/CHNOSZ/R/berman.R	2017-10-03 02:31:15 UTC (rev 238)
+++ pkg/CHNOSZ/R/berman.R	2017-10-03 07:35:24 UTC (rev 239)
@@ -8,16 +8,20 @@
   # reference temperature and pressure
   Pr <- 1
   Tr <- 298.15
-  # the number of conditions we have
+  # get T and P to be same length
   ncond <- max(length(T), length(P))
+  T <- rep(T, length.out=ncond)
+  P <- rep(P, length.out=ncond)
   # get thermodynamic parameters
   dir <- system.file("extdata/Berman/", package="CHNOSZ")
   Ber88 <- read.csv(paste0(dir, "/Ber88.csv"), as.is=TRUE)
   Ber90 <- read.csv(paste0(dir, "/Ber90.csv"), as.is=TRUE)
   SHD91 <- read.csv(paste0(dir, "/SHD91.csv"), as.is=TRUE)
   ZS92 <- read.csv(paste0(dir, "/ZS92.csv"), as.is=TRUE)
-  # assemble the files and remove duplicates (keep the latest)
-  dat <- rbind(ZS92, SHD91, Ber90, Ber88)
+  JUN92 <- read.csv(paste0(dir, "/JUN92.csv"), as.is=TRUE)
+  # assemble the files in reverse chronological order
+  dat <- rbind(JUN92, ZS92, SHD91, Ber90, Ber88)
+  # remove duplicates (only the first, i.e. latest entry is kept)
   dat <- dat[!duplicated(dat$name), ]
   # remove the multipliers
   multexp <- c(0, 0, 0, 0,          # Ber88 Table 2
@@ -90,6 +94,8 @@
     # the lower integration limit is Tref
     iTtr <- T > Tref
     Ttr <- T[iTtr]
+    Tlambda_P <- Tlambda_P[iTtr]
+    Td <- Td[iTtr]
     # the upper integration limit is Tlambda_P
     Ttr[Ttr >= Tlambda_P] <- Tlambda_P[Ttr >= Tlambda_P]
     # derived variables
@@ -137,12 +143,17 @@
     S <- S + Sds
     V <- V + Vds
     Cp <- Cp + Cpds
+  } else {
+
+    # FIXME: for now, we skip this check if disorder properties are calculated
+
+    ### (for testing) use G = H - TS to check that integrals for H and S are written correctly
+    Ga_fromHminusTS <- Ha - T * S
+    # (fails with with berman("K-feldspar", T=convert(600, "K"), P=10000))
+    if(!isTRUE(all.equal(Ga_fromHminusTS, Ga))) stop(paste0(name, ": incorrect integrals detected using DG = DH - T*S"))
+
   }
 
-  ### (for testing) use G = H - TS to check that integrals for H and S are written correctly
-  Ga_fromHminusTS <- Ha - T * S
-  if(!all.equal(Ga_fromHminusTS, Ga)) stop("incorrect integrals detected using DG = DH - T*S")
-
   ### thermodynamic and unit conventions used in SUPCRT ###
   # use entropy of the elements in calculation of G --> Benson-Helgeson convention (DG = DH - T*DS)
   Gf <- Ga + Tr * SPrTr_elements

Modified: pkg/CHNOSZ/R/info.R
===================================================================
--- pkg/CHNOSZ/R/info.R	2017-10-03 02:31:15 UTC (rev 238)
+++ pkg/CHNOSZ/R/info.R	2017-10-03 07:35:24 UTC (rev 239)
@@ -129,15 +129,23 @@
   # all of the species that match
   ispecies <- which(matches.species)
   # we return only the first species that matches
-  # unless they are 'cr1' 'cr2' etc. and we requested state 'cr'
-  if(identical(state, "cr")) ispecies.out <- ispecies
-  else ispecies.out <- ispecies[1]
+  ispecies.out <- ispecies[1]
   # let user know if there is more than one state for this species
   if(length(ispecies) > length(ispecies.out)) {
     ispecies.other <- ispecies[!ispecies %in% ispecies.out]
-    othertext <- paste(thermo$obigt$state[ispecies.other], collapse=", ")
-    message("info.character: found ", species, "(", thermo$obigt$state[ispecies.out], 
-      "), also available in ", othertext)
+    otherstates <- thermo$obigt$state[ispecies.other]
+    transtext <- othertext <- ""
+    # we count, but don't show the states for phase transitions (cr2, cr3, etc)
+    istrans <- otherstates %in% c("cr2", "cr3", "cr4", "cr5", "cr6", "cr7", "cr8", "cr9")
+    ntrans <- sum(istrans)
+    if(ntrans == 1) transtext <- paste(" with", ntrans, "phase transition")
+    else if(ntrans > 1) transtext <- paste(" with", ntrans, "phase transitions")
+    otherstates <- otherstates[!istrans]
+    if(length(otherstates) > 0) othertext <- paste0(", also available in ", paste(otherstates, collapse=", "))
+    if(transtext != "" | othertext != "") {
+      starttext <- paste0("info.character: found ", species, "(", thermo$obigt$state[ispecies.out], ")")
+      message(starttext, transtext, othertext)
+    }
   }
   return(ispecies.out)
 }

Modified: pkg/CHNOSZ/R/subcrt.R
===================================================================
--- pkg/CHNOSZ/R/subcrt.R	2017-10-03 02:31:15 UTC (rev 238)
+++ pkg/CHNOSZ/R/subcrt.R	2017-10-03 07:35:24 UTC (rev 239)
@@ -116,7 +116,7 @@
     sinfo <- ispecies
   } else {
     # from names, get species indices and states and possibly
-    # keep track of phase species (cr1 cr2 ...)
+    # keep track of phase species (cr,cr2 ...)
     sinfo <- numeric()
     newstate <- character()
     for(i in 1:length(species)) {
@@ -127,7 +127,7 @@
       thermo <- get("thermo", "CHNOSZ")
       if(is.na(si[1])) stop('no info found for ',species[i],' ',state[i])
       if(!is.null(state[i])) is.cr <- state[i]=='cr' else is.cr <- FALSE
-      if(thermo$obigt$state[si[1]]=='cr1' & (is.null(state[i]) | is.cr)) {
+      if(thermo$obigt$state[si[1]]=='cr' & (is.null(state[i]) | is.cr)) {
         newstate <- c(newstate,'cr')
         sinfo <- c(sinfo,si[1])
       } else {
@@ -151,7 +151,7 @@
   state <- as.character(tos[sinfo])
   name <- as.character(ton[sinfo])
   # a counter of all species considered
-  # inpho is longer than sinfo if cr1 cr2 ... phases are present
+  # inpho is longer than sinfo if cr,cr2 ... phases are present
   # sinph shows which of sinfo correspond to inpho
   # pre-20091114: the success of this depends on there not being duplicated aqueous or other
   # non-mineral-phase species (i.e., two entries in obigt for Cu+ screw this up
@@ -160,7 +160,7 @@
   inpho <- sinph <- coeff.new <- numeric()
   for(i in 1:length(sinfo)) {
      if(newstate[i]=='cr') {
-       searchstates <- c('cr','cr1','cr2','cr3','cr4','cr5','cr6','cr7','cr8','cr9') 
+       searchstates <- c('cr','cr2','cr3','cr4','cr5','cr6','cr7','cr8','cr9') 
        tghs <- thermo$obigt[(ton %in% name[i]) & tos %in% searchstates,]
        # we only take one if they are in fact duplicated species and not phase species
        if(all(tghs$state==tghs$state[1])) tghs <- thermo$obigt[sinfo[i],]
@@ -293,11 +293,10 @@
   }
 
   # crystalline, gas, liquid (except water) species
-  cglstates <- c("liq", "cr", "gas", "cr1", "cr2", "cr3", "cr4", "cr5", "cr6", "cr7", "cr8", "cr9", "cr_Berman")
+  cglstates <- c("liq", "cr", "gas", "cr2", "cr3", "cr4", "cr5", "cr6", "cr7", "cr8", "cr9", "cr_Berman")
   iscgl <- reaction$state %in% cglstates & reaction$name != "water"
 
   if(TRUE %in% iscgl) {
-    #si <- info(inpho[iscgl],quiet=TRUE)
     si <- obigt2eos(thermo$obigt[inpho[iscgl],], "cgl", fixGHS = TRUE)
     p.cgl <- cgl(eosprop, parameters = si, T = T, P = P)
     # replace Gibbs energies with NA where the
@@ -316,8 +315,8 @@
         mystate <- reaction$state[i]
         # don't proceed if the state is cr_Berman
         if(mystate=="cr_Berman") next
-        # check if we're below the transition temperature
-        if(!(reaction$state[i] %in% c('cr1','liq','cr','gas'))) {
+        # if this phase is cr2 or higher, check if we're below the transition temperature
+        if(!(reaction$state[i] %in% c('liq','cr','gas'))) {
           Ttr <- Ttr(inpho[i]-1,P=P,dPdT=dPdTtr(inpho[i]-1))
           if(all(is.na(Ttr))) next
           if(any(T < Ttr)) {
@@ -327,14 +326,20 @@
               p.cgl[[ncgl[i]]]$G[T<Ttr] <- NA
               status.Ttr <- "(using NA for G)"
             } 
-            message(paste('subcrt: some points below transition temperature for',myname, mystate, status.Ttr))
+            #message(paste('subcrt: some points below transition temperature for',myname, mystate, status.Ttr))
           }
         }
-        # check if we're above the transition temperature
-        if(!(reaction$state[i] %in% c('cr','liq','gas')))
-          Ttr <- Ttr(inpho[i],P=P,dPdT=dPdTtr(inpho[i]))
-        else {
-          Ttr <- thermo$obigt$z.T[inpho[i]]
+        # check if we're above the temperature limit or transition temperature
+        # T limit (or Ttr) from the database
+        warn.above <- TRUE
+        Ttr <- thermo$obigt$z.T[inpho[i]]
+        # calculate Ttr at higher P if a phase transition is present
+        if(i < nrow(reaction)) {
+          # if the next one is cr2, cr3, etc we have a transition
+          if(reaction$state[i+1] %in% c("cr1", "cr2", "cr3", "cr4", "cr5", "cr6", "cr7", "cr8", "cr9"))
+            Ttr <- Ttr(inpho[i],P=P,dPdT=dPdTtr(inpho[i]))
+          # we don't warn here about the transition
+          warn.above <- FALSE
         }
         if(all(is.na(Ttr))) next
         if(!all(Ttr==0) & any(T >= Ttr)) {
@@ -343,7 +348,7 @@
             p.cgl[[ncgl[i]]]$G[T>=Ttr] <- NA
             status.Ttr <- "(using NA for G)"
           }
-          message(paste('subcrt: some points above transition temperature for',myname, mystate, status.Ttr))
+          if(warn.above) message(paste('subcrt: some points above temperature limit for',myname, mystate, status.Ttr))
         }
       }
     }
@@ -380,7 +385,7 @@
   for(i in 1:length(is))  v[[i]] <- out[[match(ns[i],is)]]
   out <- v
 
-  # deal with phases (cr1 cr2) here
+  # deal with phases (cr,cr2) here
   # we have to eliminate rows from out, 
   # reaction and values from isaq, iscgl, isH2O
   out.new <- list()
@@ -390,10 +395,12 @@
   isH2O.new <- logical()
   for(i in 1:length(sinfo)) {
     iphases <- which(sinfo[i]==sinph)
-    # deal with repeated species here ... divide iphases 
-    # by the number of duplicates
+    # deal with repeated species here
     if(TRUE %in% duplicated(inpho[iphases])) {
-      iphases <- iphases[length(which(sinfo==sinfo[i]))]
+      # only take the first, not the duplicates
+      ndups <- length(which(sinfo==sinfo[i]))
+      nphases <- length(iphases) / ndups
+      iphases <- iphases[1:nphases]
     }
     if(length(iphases)>1) {
       message(paste('subcrt:',length(iphases),'phases for',thermo$obigt$name[sinfo[i]],'... '), appendLF=FALSE)

Modified: pkg/CHNOSZ/R/util.expression.R
===================================================================
--- pkg/CHNOSZ/R/util.expression.R	2017-10-03 02:31:15 UTC (rev 238)
+++ pkg/CHNOSZ/R/util.expression.R	2017-10-03 07:35:24 UTC (rev 239)
@@ -53,7 +53,7 @@
   }
   # write logarithm of activity or fugacity
   if(log != "") {
-    if(log %in% c("aq", "cr", "liq", "cr1", "cr2", "cr3", "cr4")) acity <- "a"
+    if(log %in% c("aq", "cr", "liq", "cr2", "cr3", "cr4")) acity <- "a"
     else if(log %in% c("g", "gas")) acity <- "f"
     else stop(paste("'", log, "' is not a recognized state", sep=""))
     logacity <- substitute(log~italic(a), list(a=acity))

Modified: pkg/CHNOSZ/R/util.misc.R
===================================================================
--- pkg/CHNOSZ/R/util.misc.R	2017-10-03 02:31:15 UTC (rev 238)
+++ pkg/CHNOSZ/R/util.misc.R	2017-10-03 07:35:24 UTC (rev 239)
@@ -31,7 +31,7 @@
 GHS_Tr <- function(ispecies, Htr) {
   # calculate G, H, and S at Tr for cr2, cr3, ... phases 20170301
   # Htr: enthalpy(ies) of transition
-  # ispecies: the species index for cr1
+  # ispecies: the species index for cr (the lowest-T phase)
   thisinfo <- info(ispecies)
   name <- thisinfo$name
   # start from Tr (T=298.15 K)
@@ -43,10 +43,10 @@
   # where to store the calculated GHS at Tr
   Gf_Tr <- Hf_Tr <- S_Tr <- numeric()
   for(i in 1:(length(Htr)+1)) {
-    # check that we have the correct one of cr1, cr2, ...
-    thiscr <- paste0("cr", i)
+    # check that we have the correct one of cr, cr2, cr3, ...
+    if(i==1) thiscr <- "cr" else thiscr <- paste0("cr", i)
     if(thisinfo$state!=thiscr | thisinfo$name!=name) stop(paste("species", thisis, "is not", name, thiscr))
-    # if we're above cr1, calculate the equivalent GHS at Tr
+    # if we're above cr (lowest-T), calculate the equivalent GHS at Tr
     if(i > 1) {
       # set the starting GHS to 0 (in case they're NA - we only need the increments over temperature)
       thisinfo$G <- thisinfo$H <- thisinfo$S <- 0

Modified: pkg/CHNOSZ/data/buffer.csv
===================================================================
--- pkg/CHNOSZ/data/buffer.csv	2017-10-03 02:31:15 UTC (rev 238)
+++ pkg/CHNOSZ/data/buffer.csv	2017-10-03 07:35:24 UTC (rev 239)
@@ -12,9 +12,9 @@
 CYSTINE,cystine,aq,-3
 ETHANOL,ethanol,aq,-3
 MAMINE,methanamine,aq,-3
-HM,hematite,cr1,0
-HM,magnetite,cr1,0
-FeFeO,iron,cr1,0
+HM,hematite,cr,0
+HM,magnetite,cr,0
+FeFeO,iron,cr,0
 FeFeO,FeO,cr,0
 CO2-AC,CO2,aq,-3
 CO2-AC,"acetic acid",aq,-3
@@ -30,11 +30,11 @@
 GSH-GSSG,GSSG,aq,-9
 NADred-NADox,HNAD(red)-,aq,-3
 NADred-NADox,NAD(ox)-,aq,-3
-QFM,quartz,cr1,0
+QFM,quartz,cr,0
 QFM,fayalite,cr,0
-QFM,magnetite,cr1,0
+QFM,magnetite,cr,0
 PPM,pyrite,cr,0
-PPM,pyrrhotite,cr1,0
-PPM,magnetite,cr1,0
+PPM,pyrrhotite,cr,0
+PPM,magnetite,cr,0
 water,water,liq,0
-quartz,quartz,cr1,0
+quartz,quartz,cr,0

Modified: pkg/CHNOSZ/data/refs.csv
===================================================================
--- pkg/CHNOSZ/data/refs.csv	2017-10-03 02:31:15 UTC (rev 238)
+++ pkg/CHNOSZ/data/refs.csv	2017-10-03 07:35:24 UTC (rev 239)
@@ -5,7 +5,7 @@
 Kel60.3,"K. K. Kelley",1960,"U. S. Bureau of Mines Bull. 584","gypsum Cp",http://www.worldcat.org/oclc/693388901
 Pan70,"L. B. Pankratz",1970,"U. S. Bureau of Mines Report of Investigations 7430",chlorargyrite,http://www.worldcat.org/oclc/14154245
 PK70,"L. B. Pankratz and E. G. King",1970,"U. S. Bureau of Mines Report of Investigations 7435","bornite and chalcopyrite",http://www.worldcat.org/oclc/14154292
-HDNB78,"H. C. Helgeson, J. M. Delany et al.",1978,"Am. J. Sci. 278A, 1-229","minerals and phase transitions",http://www.worldcat.org/oclc/13594862
+HDNB78,"H. C. Helgeson, J. M. Delany et al.",1978,"Am. J. Sci. 278A, 1-229","data for minerals (n = 167) and phase transitions",http://www.worldcat.org/oclc/13594862
 HDNB78.1,"H. C. Helgeson, J. M. Delany et al.",1978,"Am. J. Sci. 278A, 1-229","litharge S, V, and Cp parameters",http://www.worldcat.org/oclc/13594862
 RHF79,"R. A. Robie, B. S. Hemingway and J. R. Fisher",1979,"U. S. Geological Survey Bull. 1452","chlorargyrite, rutile, and titanite",http://pubs.er.usgs.gov/publication/b1452
 RHF79.1,"R. A. Robie, B. S. Hemingway and J. R. Fisher",1979,"U. S. Geological Survey Bull. 1452","dickite, fluorphlogopite, halloysite, and pyrope",http://pubs.er.usgs.gov/publication/b1452
@@ -22,10 +22,12 @@
 SHS89,"E. L. Shock, H. C. Helgeson and D. A. Sverjensky",1989,"Geochim. Cosmochim. Acta 53, 2157-2183","inorganic neutral species",https://doi.org/10.1016/0016-7037(89)90341-4
 Ber90,"R. G. Berman",1990,"Am. Mineral. 75, 328-344","annite",http://ammin.geoscienceworld.org/content/75/3-4/328
 Ber90.1,"R. G. Berman",1990,"Am. Mineral. 75, 328-344","almandine and ilmenite: modified H and/or S",http://ammin.geoscienceworld.org/content/75/3-4/328
+Eva90,"B. W. Evans",1990,"Lithos 25, 3-23","glaucophane and pumpellyite",https://doi.org/10.1016/0024-4937(90)90003-J
 SH90,"E. L. Shock and H. C. Helgeson",1990,"Geochim. Cosmochim. Acta 54, 915-945","organic species",https://doi.org/10.1016/0016-7037(90)90429-O
 SHD91,"D. A. Sverjensky, J. J. Hemley and W. M. D'Angelo",1991,"Geochim. Cosmochim. Acta 55, 989-1004","G and H revisions for K- and Al-bearing silicates",https://doi.org/10.1016/0016-7037(89)90341-4
 SHD91.1,"D. A. Sverjensky, J. J. Hemley and W. M. D'Angelo",1991,"Geochim. Cosmochim. Acta 55, 989-1004","phlogopite: H and S modified by @Ber90, followed by G and H revision for K-bearing silicates [after @SHD91]",https://doi.org/10.1016/0016-7037(89)90341-4
 SHD91.2,"D. A. Sverjensky, J. J. Hemley and W. M. D'Angelo",1991,"Geochim. Cosmochim. Acta 55, 989-1004","annite: G and H revision for K-bearing silicates [after @SHD91]",https://doi.org/10.1016/0016-7037(89)90341-4
+JUN92,"C. de Capitani",1992,"JUN92.bs database supplied with Theriak/Domino software","data as listed in JUN92.bs database",http://titan.minpet.unibas.ch/minpet/theriak/theruser.html
 SPRONS92.1,"H. C. Helgeson et al.",1992,"sprons92.dat computer data file","titanite: @BH83 + "Gibbs free energies and enthalpies were corrected to be consistent with updated values of Gibbs free energies of Ca<sup>2+</sup> and CO<sub>3</sub><sup>2-</sup> [@SH88] together with the solubilities of calcite and aragonite reported by @PB82 "",
 SPRONS92.2,"H. C. Helgeson et al.",1992,"sprons92.dat computer data file","Ca-bearing minerals; "Gibbs free energies and enthalpies were corrected to be consistent with updated values of Gibbs free energies of Ca<sup>2+</sup> and CO<sub>3</sub><sup>2-</sup> [@SH88] together with the solubilities of calcite and aragonite reported by @PB82 "",
 Sho92,"E. L. Shock",1992,"Geochim. Cosmochim. Acta 56, 3481-3491","diglycine, alanylglycine, leucylglycine, and diketopiperazine",https://doi.org/10.1016/0016-7037(92)90392-V
@@ -73,7 +75,7 @@
 AP01,"J. P. Amend and A. V. Plyasunov",2001,"Geochim. Cosmochim. Acta 65, 3901-3917",carbohydrates,https://doi.org/10.1016/S0016-7037(01)00707-4
 AS01,"J. P. Amend and E. L. Shock",2001,"FEMS Microbiol. Rev. 25, 175-243","NO and N<sub>2</sub>O",https://doi.org/10.1111/j.1574-6976.2001.tb00576.x
 AS01.1,"J. P. Amend and E. L. Shock",2001,"FEMS Microbiol. Rev. 25, 175-243","selenium and molybdenite",https://doi.org/10.1111/j.1574-6976.2001.tb00576.x
-MVT01,"L. Mercury, P. Vieillard. and Y. Tardy",2001,"Appl. Geochem. 16, 161-181","ice polymorphs",https://doi.org/10.1016/S0883-2927(00)00025-1
+MVT01,"L. Mercury, P. Vieillard. and Y. Tardy",2001,"Appl. Geochem. 16, 161-181","polymorphs of ice",https://doi.org/10.1016/S0883-2927(00)00025-1
 PS01,"A. V. Plyasunov and E. L. Shock",2001,"Geochim. Cosmochim. Acta 65, 3879-3900","aqueous nonelectrolytes",https://doi.org/10.1016/S0016-7037(01)00678-0
 PS01.1,"A. V. Plyasunov and E. L. Shock",2001,"Geochim. Cosmochim. Acta 65, 3879-3900","acetic acid and methane",https://doi.org/10.1016/S0016-7037(01)00678-0
 Ric01,"L. Richard",2001,"Geochim. Cosmochim. Acta 65, 3827-3877","organic sulfur compounds",https://doi.org/10.1016/S0016-7037(01)00761-X

Modified: pkg/CHNOSZ/demo/buffer.R
===================================================================
--- pkg/CHNOSZ/demo/buffer.R	2017-10-03 02:31:15 UTC (rev 238)
+++ pkg/CHNOSZ/demo/buffer.R	2017-10-03 07:35:24 UTC (rev 239)
@@ -3,7 +3,7 @@
 # reproduces Figure 6 of Schulte and Shock, 1995 (doi:10.1007/BF01581580)
 
 b.species <- c("Fe", "CO2", "H2O", "N2", "H2", "H2S", "SiO2")
-b.state <- c("cr1", "gas", "liq", "gas", "gas", "aq", "aq")
+b.state <- c("cr", "gas", "liq", "gas", "gas", "aq", "aq")
 b.logact <- c(0, 1, 0, 0, 0, 0, 0)
 basis(b.species, b.state, b.logact)
 xlim <- c(0, 350)

Modified: pkg/CHNOSZ/demo/dehydration.R
===================================================================
--- pkg/CHNOSZ/demo/dehydration.R	2017-10-03 02:31:15 UTC (rev 238)
+++ pkg/CHNOSZ/demo/dehydration.R	2017-10-03 07:35:24 UTC (rev 239)
@@ -17,7 +17,7 @@
 reactants <- c("[AABB]", "[AABB]", "malate-2", "goethite", "gypsum", "epsomite", "ethanol")
 products <- c("[UPBB]", "[PBB]", "fumarate-2", "hematite", "anhydrite", "hexahydrite", "ethylene")
 rstate <- c("aq", "cr", "aq", "cr", "cr", "cr", "aq")
-pstate <- c("aq", "cr", "aq", "cr1", "cr", "cr", "gas")
+pstate <- c("aq", "cr", "aq", "cr", "cr", "cr", "gas")
 rcoeff <- c(-1, -1, -1, -2, -0.5, -1, -1)
 pcoeff <- c(1, 1, 1, 1, 0.5, 1, 1)
 # position and rotation of the names

Modified: pkg/CHNOSZ/inst/NEWS
===================================================================
--- pkg/CHNOSZ/inst/NEWS	2017-10-03 02:31:15 UTC (rev 238)
+++ pkg/CHNOSZ/inst/NEWS	2017-10-03 07:35:24 UTC (rev 239)
@@ -1,12 +1,12 @@
-CHANGES IN CHNOSZ 1.1.0-37 (2017-10-03)
+CHANGES IN CHNOSZ 1.1.0-38 (2017-10-03)
 ---------------------------------------
 
 MAJOR CHANGES:
 
 - Add functions implementing the Deep Earth Water (DEW) model
-  (Sverjensky et al., 2014): calculateDensity(),
-  calculateGibbsofWater(), calculateEpsilon(), calculateQ(), and
-  water.DEW().
+  (Sverjensky et al., 2014): water.DEW() and its supporting functions
+  calculateDensity(), calculateGibbsofWater(), calculateEpsilon(),
+  calculateQ().
 
 - The computational setting for water (thermo$opt$par) can now be
   set using water("DEW"), water("IAPWS"), etc.
@@ -19,14 +19,27 @@
 - Calculations related to Berman's (1988) Figs. 1 and 2 for the lambda
   transition of quartz are presented in the new demo lambda.R.
 
+COMPUTATIONAL IMPROVEMENTS:
+
+- For minerals with phase transitions (states 'cr2' 'cr3' etc.) in
+  thermo$obigt (i.e. the Helgeson minerals), it is now possible to use
+  the minerals in basis(), species(), affinity() with proper accounting
+  for transition effects. Just set the state to 'cr' or omit it,
+  e.g. species("quartz").
+
 - Implement SUPCRT92's handling of variable volume for quartz and
   coesite. Calculations for other minerals still assume constant
   volume of each phase.
 
+- calculations of the g function are now enabled for DEW (with
+  pressure derivative) and IAPWS-95 (no derivatives included).
+
 - water.lines() now works for diagrams of Eh, pe, logfO2, logaO2,
   logfH2, or logaH2 vs pH, T, or P. It is possible to have T or P on
   either the x- or y-axis.
 
+DATABASE UPDATES:
+
 - Add data(OBIGT) and data(CHNOSZ) commands to reset only the
   thermodynamic database (OBIGT) or system settings (CHNOSZ: basis and
   species) to their defaults. data(thermo) is still used to reset
@@ -38,8 +51,6 @@
 
 - add.obigt() gets new argument 'species' for selecting species to add.
 
-DATABASE UPDATES:
-
 - Add DEW_aq.csv with aqueous species data from the DEW spreadsheet
   (May 2017 version). Species with data unchanged from the default
   database in CHNOSZ are not included. For the time being, only
@@ -79,14 +90,11 @@
 
 - In water.* functions, rename the "diel" variable to "epsilon".
 
-- calculations of the g function (but not its derivatives) are now
-  enabled for DEW and IAPWS-95.
+CLEANUP:
 
 - To save space, taxid_names.csv has been trimmed to hold only those
   taxids listed in extdata/bison/gi.taxid.txt.
 
-CLEANUP:
-
 - Remove Eco.csv.xz and rename more.aa() to yeast.aa().
 
 - Remove transfer() and associated functions draw.transfer(), apc(), and

Added: pkg/CHNOSZ/inst/extdata/Berman/JUN92.csv
===================================================================
--- pkg/CHNOSZ/inst/extdata/Berman/JUN92.csv	                        (rev 0)
+++ pkg/CHNOSZ/inst/extdata/Berman/JUN92.csv	2017-10-03 07:35:24 UTC (rev 239)
@@ -0,0 +1,3 @@
+name,GfPrTr,HfPrTr,SPrTr,VPrTr,k0,k1,k2,k3,v1,v2,v3,v4,Tlambda,Tref,dTdP,l1,l2,DtH,Tmax,Tmin,d0,d1,d2,d3,d4,d5
+glaucophane,-11225858,-11960500,535,26.05,1717.5,-192.72,70.5,0,-1.16,2.9,22,88,,,,,,,,,,,,,,
+pumpellyite,-13448936,-14402300,584,29.55,1576,-106.038,-283.042,383.8351,-0.51516,1.288,34.67,0,,,,,,,,,,,,,,

Modified: pkg/CHNOSZ/inst/extdata/OBIGT/Berman_cr.csv.xz
===================================================================
(Binary files differ)

Modified: pkg/CHNOSZ/inst/extdata/OBIGT/inorganic_cr.csv.xz
===================================================================
--- pkg/CHNOSZ/inst/extdata/OBIGT/inorganic_cr.csv.xz	2017-10-03 02:31:15 UTC (rev 238)
+++ pkg/CHNOSZ/inst/extdata/OBIGT/inorganic_cr.csv.xz	2017-10-03 07:35:24 UTC (rev 239)
@@ -1,58 +1,81 @@
-ý7zXZ  æÖ´F !   t/å£àŠ‰&S] 7Iýúb‹¿ñ9²¶Ë¦¨•TB;qý"½qù¦cL;ù"ß“<²ëbï¨gò;ø¥Kä‡¥Šfœ‘1Æw?oz†ÆCþ­aì]IØŽ¨Ý5i‡* p0n¥z†Çj€„Öz‡—Ý»ÖpUÊhÄÛñlrO`©Æû´Y!hA‡Üµ‹îð!¨©n»äü¡¢ì˜JqÆíTHÞ1Êí!Ù(@¬EÉåR(ß±i¡0DíÎò›hŸÏ9rQAee1¾½rƬ$£Ÿ(6/¼ËP†:¢	ð´»Jbtp,B1iúK‚\ê]€ô2}·ïSƒ«éî0w³”ý!Š³
-$×bIžù8ÃOÕÅ'š·åÉ2lÂSéÕÃ	‘c§1Žº’IÃ$ê&%ŽIm§tØ£E¼‘Û\p‚–×3âA¥W€&XŽ9rQî9ݶŠ|å;уãËZÅ~øk8kÈå:¿䃛øú¿‚¢ÞË(S¨µìÃ,®‹T(ä”ï°
-2 5]zÞ"su{¦±Û[sYù”ïÆ>B¨â.ƒ=²å±c;á5o²-W°Òêx1}ÿ×Q^Y^5´‚ ?›ÓÎ^wŒOAqx]s"¦ŒÀ!Ñ…j†@v	#Œ¾Ý7?’â>3¼È)O2™ÆdÜÐlÛÀCEe9áùÖ¢Pðæ‚r)2–õD¥”¼ƒù„²’µËKMŠ=_5ƒE:Å-™OÌF?ØbºSäæÇI~R³iÜ õoŽ	ó!Õ—wO0<D–Ê„°aAÏbÿŠæô€±ì…‹]’ZYœxúúÆCåZñ(vÁ¦Öo±Â¶)NÅÆÃdZÖÿÊnWd‡&©˜‡÷Lìå[jm]¨	Îr͆¯:a	¢bþ0ÍëZΏþ$ĝêOlÄö1N +à²7ã9NçZšî’p¬]e”ªÄk)–sf­XA	‚BeX—&#C]Ç Æþ‹Åk]^*e~úšX0¥‚ϔPon/­P½€J*zƒum3žrÙ‚äâ¼Ô¢ÛchTyR€¼V[™*Vì¥Æ|Z²ª»(&FÓ}ñ”¼Ò'ØÕbÙßÓ¢ÃñVY¸TsPöY3wWÁ<öÛSIbÀ椚…§"ëN2 ï
-©;Õ)tq/¡“¯ß]ŠŠÎy¾ø³s+†ßçÈŒ¬ïúmíÉñPþÜ¥tòIýQTÿÃzJ5“·çøÉ5u]CKò÷ss0Õ¤À~±í­ï	÷É9>jÿ!3¿hÇÞýä%CظU« kq!”°œ6eÿÅšÓûZyë@%MåÒ¶œî‹ìÛ½X¨,SÜó©‹s¶Tc7ÍxðtW¢˜¥2CªÅaV•gÆö{ Í ¢EŒ|wË&¾úO€U°T©Ŭ ŸÂŽº`¤ºµ•²¦r ›´3DÞ „¤¯–íµF¢ÒW nªYØ¡â0ßî_<9XoN‰2—*i÷¨‚¬
-î ä$ÏB`à™×–¾ˆW«è5R§xÜêóEXX¯
-J©àŸü?ï6TüJ–٫ჩR¢YZŠü±¶z<õãç€6ì²ëüª._ ¡¶(¡Áç‡éjNRû1¼3@‚Ç5‰àœ:Ôóp/âìmÖ+Áj䃴*™5DÊ…A¸5mSó×õa¤ô`x^/Þ2ÊÅfó‹ýG+±ægýqWXÒOæFaâã¦ë9·bä¥N2âTö-+"ê%êTtü/bÄÕ6oŒ9MÜ™:˜c6Q2ؽ‘Ìò×r+ªE9$ðA7B;v§{φ)küÜTX¶¤øxä2Ù¢?Ûþ¢=2:À$®/,ÆŸ½’”¼B¡läˆÝ•Ø¬s=
-ïö£›lMt®Ä\J5èSó´²Ô)'¸çAáõªÁikyœ|±ÉÚn‘[87ªqŸ@rƹÍY1wXDX‚o5èá=‡¼qsà™…xÛÿ¯Lan•ÆwbB(3ߍžûXð®V@!’d¨ã	ÓDîdÇæY¸™’åJüFÍÊ­îXÇA7í(¼,ÐQã-säòŸÌ¤¯š}¸ö#Ø鑐mkZq ~+2;WË Õ'–Üi•¬öÖ¶¶6>p%cïÓìÑ®íR›xÓ»[Dw«èä€v-ãÓOìºéìÏÉjüÅíim,ªŒRΣ  ooœÅí/)E¯;2æú-Dgñʱ`ýß:u7„B5Àw‘ik3\Z.P«¨4
-!9ô Œ|’Ä@"µ-rÒ‚ðc%Ÿ;Û¼ÍQVTT}Ò'uö£ ©¥Äú€ö3™ªØ'ê³jïÝ|Û-€'—É!Íîõûµ(B \k~íŽÇêüb§rs@¸Éð_%T„_6Ã2OéH~~³ã ÷&)‡,Ã%®"õF^T´“IJÿ',µÍ1€^*|qL)d>~–hìž“`‡¿äåƒoˆ&°4Îhc+
-ÅF& `QÎ/T'cFýâŸh),ž}C‘zd"l?±à7Iðî]›*|a¹`(–…NŒm¦ki\ VS Òœëצ¼d‡fz×GT²‚âô"Z—p`éaÝ?Ògë ik¤9ïÙ9âðuÄàB*ÏN)E‘"ˆtÛRÁu37Õ¡¯U
-é5}#[9ÿ‘!È#þx¼ñ?²ôÉNZ¢-ÂÒùP‹=‡ÿµ{$èB•Ûj~ù}˜öæ…ÓJ·RGz.W1Xcmä©ÍþIÕŽ;Üg%w¿)»çc’Þ²ZSå>‚ú!0=:+ÊÏÌñö¥
-Mi r7í‚!îà"KBWæÖ`TÅcqy•Ò°
-Ë?ƒ*<EÊ*çW ¿äfoÇEÒÓÔ‡}ëe(ªÐ[“qØùBµx3®Â”ì~D:ãggOsÅ
-íîKf¾–z–„ï<rÃ2 Ö–º,ªhÝáÛ¶"eË<hHµPJì•eyùÍð¸Cü¼º
-)!çÅ€ 2#âH>ÐÊÝŸ <£;
-…ëŽÀ0>šr@¿Ça„øùzüŽvE7ËVè|µŽó_­Ü¹Øˆä@³Ø×[“góKH›ð>Š©M IæëjfK·ŽÎ++@"®xËÂÉzr
-þƒª#M.×“„¼‘~]¤Žý:”Ÿºl%¹™‰$Ž¥œåßH¸„ß–@$hŒO²u 8èÑÜøS/3'›1ó¤ù#¬3nu¹#ŠáªÙ>ÅÐÁ5zÑH§O®‘bìò¤®J2jŒjÙ#kY Þo&pqaµŽ:	Jü4ú«ú§ŸGi24w×h‚x`×öªùÊ1͸Û'½ÞŸ±|f*¨…ZÒ™°u+¥ó#9M%½½Ýyk!À0dlõb4ço?,•9’f(‰0Û:ïŒPµJcÑU¶ÙÒaL–¸(ÊÍî@Aù)LÅ;àà,wþ"N˜^aY'šZóS3ß…k+ûBÞ™ªÌúò‹`
-€äòb
-®w¹(Ö;¸}UÚãË€Ä×ȇ\12ôZD!±"¬üÇ‹Þð)žÎ÷t"Ç—ÇIËÞÌ…îuçéZ°3qƒZt SU^6F.˜,4¸E±3›É%”`à cnÿ*ßvÎf½ò
-εöÀ9P3ùâb³ 1§•üî×d¸,È¿Ï]nÀb-M.^8^Ô/:UEIz…EZ:†š~¹Óšå§×¬ixA¤üåóÈôäð&Êq?bÜ'äÄÈéÆÓàKñÙÌØ°i·£;OVœꥦÞlç¸PR­ògæT;5AzçÌ’”8Zi¿7†µJrý(PœþéWýôè4OLÃHôÔ ‚ˆfV …šËèñCˆüÂ
-l!¶&‒Q„àÈÈͺ•rÃaå WXf´ãø’[.a¬È]SGvÞ4FšÚÕ[hô°OhÂ)=¡6ë6×P·áÃ’\#¬†útõÝ]­+R¡éwny3ō€Є΁ÛW\4ù%Gï}"ŒP¦V§žÿ0W1d5FÍœj¨ÎŸ†#$ÙÂßçBßî•bL¾zö«ù¯¡{ÛkQÿÁ%B$“ûXXrAHëx')¥IçžUˆ&¥øÕ³P{+즢„í‹š‰·"uÚSÜ'ϲ-îX#óö¾òõ{=ñ—Ú$Òy+^|÷/ñ¢m+úM6YVÁRÀƒDå…B>‘Ä;5æXG’V¹Ê®]óÍO‘˜š³¿Wµ‚\K_$>V=ÃŽÂþ
-øÝ¿î³É;êcͯ¹cbÇü[&Ù‹{qõ®HÖÕG IŒ‹AœÍòøV¦“gƒËõÏ´W?N:Y2›zrˆévÚ7út~2-ºá1/“Þö!¤†ÓKŠú3xþHi3Ú]C«ùÏôhÂN‰Gi»ã³‚Dâ ¬Ø§k“gS½#5õrD”ø³Hó>f²f&‚{˘{ª(p0|µúÊÌWTj¬íêQÂp[Sbkp,»}ž Ú(ÍòYžkŠY¿ÊyGü=Pê´‚†Ù6œŠLb^EŠ÷Ù¼àgN î¯eHÿ•Ûû:T‡>0`ûu9…­".RSâü¼pŠÅæÈŠ#y´qB=
-p)dÏOõ!ï?›k<
-Ý6Pöc6œ(~3“š™!0>¶etY×2ÝU¬ÒûΣbÕÞ ç]0Ãú}„ˆ-p2‹ïúÄDÌ†×Zgþœ¬nwÛYa ïSÏI|/™«äÙÛæp/“ܩqlÞ.|%t¥ç…‘u˜RºBIÒ†»Â
-†_äòÖ°°ÝvωN‡ïËàEÂÞG\‚f–"Áâ}aWC0Š'œÆ,§_tÐÀÀ£à°’UWÜ ˜šõ¦è#K:>, ×xŽoQÑÊ Ã y5ôˆÁÖ8½”³¢µ°jDúü–Þ]Juy¿°†<tT«Écãªg¶h™®Á²û~ZYðS™$Ôœ1ͲÊr™'¶ùOVï‚hd¢ü]¤šï(&›âVªrI%#ë¬ôžìÍuñÝ´´‡ÍC+ÿ^±ðÒû¡X´êôEAì&| hWRƒo‚ª’7``ŒÝÒX›äÖ‡-ì³®":AâXÒÔÌŠwlÉ™Áq¹›kÂ@Ôrãwü0veǨ
-†’tE6€[ñðDêBu*vD ˆÅ3nkY|Ió¨žñŽ‡™œXÞLÕ 9‚vцY )AÁ¾Ðå» áŸ>«³»ì3|tåK’Æþ'Ki˜_ vÊ„Ú½>–	¾Âß¾Tª= ¬Øh³>×/{‹*û+*yïweù±!吸9_R±
-ˆ‹e¸:¶ë¥¨ˆF&D~ýUª'Rp½•_ra%AÜÓ•o“"j®×¶,p¾Á¹ÔÕ%†»ÁÂPí‚ueÜ£æ}·éã:¦XÇ—»#g'GY\¸¸gÔÊñ:Ôù`Ì/«g+Iâ6ö‚üµô‚ÇGyäDs¯	éæ`¸*ådý’éløî``¹åÔ{¾È¹ò-G!Ô
-ǘu2ëèDô	ÿÁÛ‹P}
-ŠOéçHp9wk˜Ä ;aŠÙ­¬ƒá˘Ò[rÙž£ŽÞˆE±ˆÊò›žï•U“x_4¡Åº
-àÈÀæLÓ*±|¤	ôhÿĸÀÚEœT°÷%0`›´–Ûz¿ñ’?Ë_ü?Jä0 YœÈî<°ñ,0‡,¶drʪ]VMœ°Bô’
-Ë>餩ðÂu/( e0¹±P¥Þô¬C¡ò›%·Lî4E˜ò+V nžâ{Aÿ«.ÃÈ©hƝ$/9óñ—¯]gS»Ì䤌@)R!ðq^ó@%Œ„Y¹"ØeÎHûZBZ?lƒ'õÆ-Æ™·rq^àœž3]¥Þž~h‘\9³$ᮈæÙ<TsDºÁ>˜äÓ½ƒ"ÌݏòiqðPúYøpœRÁ¼5“БllmYÇ Ê­dNÇ« [So,ÎlÇ”¸tâû®¥Óaaú„SŒßç'+¨yâÓØ›k5ë…J”y0ÆSÙ`)4ï›n)Ÿ
-‹ÍÕõ	Ez#*Z(lmž0€D)nun‹Vu}|%²“ÙßÁ¬x÷½†äSMÀ–kÙ8r'Ü=;·ÀŒ^mÇhq{•¢çYaXyq±GÂ÷Î¥¸Ýq¹Zú6Y¿…ĉÇûDÅ„
- e âClCc Ë€DÊ•ßÜß_jò·Å;Æ*%ø€&²9š‰A…òÌE'%‹ÄxÈÄÕñ`WŸñ;óbßÁ0#´cÎqWÇ+ï„6[]f¡Zˆ'Dˆ†Xáë[Òs3f×FèÛŽ‹ý~úãEJªT[oó;¬©ÎÙˆú6¨V‚žZ£OŽÅ ð´øÜãÀ½÷‘Tft²i!S†6kª„?È»…q†PyXÍŠºð†/ÐœO¼€aŠu*Â)ž‹Âc‘dt&²ì«ž¡óÇð{·¿±fànyáòñá‘°G/å«BÁw(fi_ Ÿ«n ÇvÎU¢s³j(ZË ëƒâ -ä<'é‚wwXŸŽ$ck§îŠT£1*òv~&Óú>ŠïæNˆØ'ÇÜ3ýÛ2™ù˜5vRÙýec®B8=u‘WI¹û`FØW,	£:&2@Ô¸_}5‘5x¡µ8×LOq=Ê%Øq¥hJ(Æ+Y¸‹ÜM©SSUÛæä™/²Ê'Ž;)ïºé•Ï½z¹‹Èù•ê6  _-¨%@	×çøƒ:ØÔH…þgŠ¶Þ~^r&šœ'Ë	ƒôXçÈOK«Ì‘¢D! p¿¿ä½HCÇhÈ0ÏӀÖX²fݸÆ;/Í•m²…R›6øI›³ù
-²\ùËI !æ;ÙJô†Mg¡ãœ4‡÷Ä"a;VnŽ±¢‡–ååÞØ·¢©ÛÒq¤•§R¬×и'žþ&T•xë|ˆŠÙoÏ£&`	›ó7_‚!-ÿ8"ú£ŠÌ3/™»Ö6†4Q5A¼6¡÷Í]¥DÀŸ5SΣpÉÖ6‰šþQžÃMd5rÓ|ü\®á'Ãéy¼ÀìûŒJŒŒ·°šãìÃH$ëÏ »N0ç?µºT€m¬ÆT\PDXuIÅ Õ¦9¨xšhTzpIœ3.ªÜ¡˜_±:F	“ËÊÿ)Mçã¦U—	ðˆ†›J=|«2“I¥Œ“¿¹Á‡ö<Ä í;žtS€å÷—uº|À¿‚®ÙÚ=Í>Ó“Ùd±Â²®®Rnh¨ÀëÇÞÔó±“Æ+Rªÿž¾Ù õʺuÙK çÕ#=…†ì!jZçV6Ö¢ïÃgzùþ€o-Ø›då9ï_Øž6²hP¬3?ÁûxöÝ4s$x(MÑ]…b/®=N®H4DPŽ¨Ð0«p8kB[ËEpÛ
-“tôv¥1å‘Õ	»É€µò"áäÜR(Ù1*†ePÆw<(èH÷׆r¯¤£µCýô/§åÎM™C—ŒúZÀX³ñêTæi:’=ps¢ø·Ì -“½ŠåÏ$ÄžÉRóóü$S^ïHuÎó÷?îHë¸@Í\~°u±}²üÝ«`º.~
-}“SÓ¢Et Ä·Ó›\Ò`×=<ÇÁ—x¢¶r¿O¢à©Ñf!3¥ÎšàÉ¡WÖ—sÌT«§.fš`ÅÔØÎïsó·ö|øíêáʵpqªÛ«M}1gÆ:>\PÀÀT(A>ò<Är}ê<ljSàÂ?sÁ÷‘ÒßÜU,˜]¤ïÏ׌ЧÜdû
-–HRwj~j„8©y@ƒ–¨dö…·n þšU³qxÀ5vÇW˜cŒM*¿H±PÒy½¼PL÷ï¥#Ÿé‰]àÊZ»'¦ãül˜µÅ¦lµÄJ{2©½ŸOøˆ= ÇjŽ2y»0¹Ãç¬,nÈЍell}˜õi[£çxKƒ²Ï†ÅØ£‹„Þ»ÜgR¥&¬ŸPìNF½V-±éfúèâèžÉ„kŒ¿´¹æOL”‚ù‘îl`i¾Ú@èÃ7RD1ÑwÀijO	ªö£Ž™/¼Ç=ðoÝêàyá‡^œÖ×ûä±-ò‘×ÐírätA³¹Ú.`øv.yT "þ,Bmx°âÛÐc¢˜@+rÊÙðmºÁGÄ'#†ózæßؐnAµ£1Õ±nt#õ´ÃؐÓ6p]ÉW´MÀ{°lÏU/šÔ’”MÄôÎ$N½¸CaõFÒ돼ù?>~ÉJF™a¥G`…N‡Ïjí<y	FÀ
-øÙVÏÑò#<µ¯q-*´uû+Ÿð¹`‚¡DÑÑ뽂ºbBR•JæWÀµÉbâ1fzÆb¬˜p*F€­_›É²ÂÆ°…	ŠlHpKë‚Ê¿ZèžÆév\8Ôˆï3¢(ZÍ÷Iê{¹Ö‘MAì%CGãš¿tô£‹uÊi#yôÏî<·ÙýÚä:ö3Ïœ*üÜÞcPtA¢iJ­sæÐ\™õGÕ>÷Ç—¶j;7ÌÑ·ÑöCƒ‡P ¯“ŒeàDj(Ìî·X­
-u
-«P÷nðŒªÉM•4Y€ÑbHi¯xbÚ&«å‘XìÅTUª#)}â%âkB©E)Î)Dö¦‘•æ{Í°Ö\˜ÃtŸIPÕÿù
-¨ÙKa`]îÂKóPÍõg¿Šb¨iSç¤É*¡h«™T‡S@œÇÖ>ºÃ¬}ô/ØΉ­ÑѨ˜Ë³8ú˜ÊžNùg’ÝÙá­ |'ÑKVBd.œD79Œì»—h˜£a!A‹{±•½NÒWÇ×£™Šk±<”¸°&¶¹«
-¨”Ú?JÕdÇ9ÔÊL·7þG¦Ýup1ã_ç|ó ¹Ħ6pR6x¨úó+ášvž¾LL²} K#“ÑßØ‹#ýZ©RÑ-®ç'0Èè|è§×¶“8ÂvTlˆà™µ@¬!½lâ¿$áÅö2,2“§Ò'Wk¡q‰L- rJšo`7ÉÎI„â„óvšÐ 0l×gîåÊ@@YçÚþBþxLÆØÆ‚ƒÐƒÆÄzÈ¢‚ƃðKŸ¼¸Ž&Ò´ÂËS@®òJqBÞíAvÆ[îÐñä\I~µúŸS¬RòXürû3ÀÝ»Ùþ}à õ½~ouu³ÃìS4B²q
- ¡Tføeë+ ^R—p¶ÎäX"Þž |tÕßâH‡yè—‡cXýèÃEKÖ~¼¡>ÏZÝÁ”ÙÈÐE¯þ†ˆºbËû-p´%ÊÊ]<-JÝ^¨ÓŸŒH´	eŸ`÷Ø#¿n^oÆ	ƒ¥|ØÆy}M<:í®-%5^êÜ—ý‚ )þQ¯ô\oâ’~t/{÷-3g0˜cëÄþfô’ì¿<3ÀˆE÷j¡—™ï;ÕhÝ,Ãԍs¯úІ‡™«JÞµ «¸è§zyý¯èÈ°_n­‘c
-QŠ¶Ïåþ?Ö›¸?<Spo’Dbe¬Ä¹—‹rÛïj!Kù!°®iͲl¬W§ÿ(wÙ!flt¥¡}´qí&€û~ø`.ñ¹:#3â^
-T —¿F!^0$ƒ³ÿÇuA?]iøÛÊÿFR¦>Ìé(ŽÄC%1{“ºGʧu7ߪè«#Ðþaßé³CR=Y´2âQâ84=XúÊ*ót h(øúY¿=@„Pê»Ó«qŒŽÐµïc嚁K…Ô“èìPñuT0iU·¦^ø±¶H
-ɉ[1›u	ƒÁ† þ¦ªˆ¢,æÙ¾¤S¦B^&Ö8~8‚ ÅNƒ#_ë—:àçz0rÖR;™@kƒ1.xgØðCì@·ìëÚëßù€Sëeˆá7¯¡Úþ>%q	¦1:¨3Íd HٝØÙÚý何P,“ƍý«ü'äAYõcÅfÂjqK+¶®GE
-Ì[T§¿‚¬f‹	H\!9¡²Ñ¬_©!zù¯B$²£pÄ4ÃÕ‡ÉXCw@‹1xyQ^E}E¥mƒ9ØèO	\N·ëdõÚT<Ý{ WkW.¦‡Ò‹TÓÅ{z*éÄwRX@^Ta=7›X$™¾UœšÊºô -æ<$B5¹ø¾„+Ä'>gk­:vŠ¸k©mV2óÌØ“DÕ¯ÜÑUaöÁF±Œ–
-ïÃÂoh¤gÏŠ¥4C®I2çnpÞŽPV;¾aóM—\e¤
-,¶]{G2ð.ɾìs¦„œ;BŠ
-Mñs[¥ÜSèßÙ´†H@CàV£õ‹7Æ‹I…ÜS“mZýʽY[¯[Ibf~J89”¤“Ã~#}¸4»îúÉgEÀÄ„fêÕ`€<b²lǁ(•Kxÿ)QJ½í,‰Ý_£—Z,L«òé‚©ròqþân¥ÁC&žÓ/}ŒžÊŠÀæ¡ŽÍ&ã}'³âbÆ,Êp9;}ˆJdHz³Ø¬8ºX¼–MÅ”ƒ3„Íø)­×¦Òõ-½8¥,6´ˆ÷úõ‰‹OÕQîØÂ!°g•çž/³YÝqë£U{sK¶B00}stˆM£gG,ó^3;\]x®˜2Õº§_FÌíi¦šKË'íy—1™}!Ž˜óp¼x›3Û–O¾ôÇævö^Ó#qŠÝE{˜ Ä`H¯`§apêK†U£Íq",§#¾@ËÌ£fÄJþãvö¾ßºýÔ"æu at V~õ”õñ“l­£}µŽÆ§ ‚[¨ùáézÖ+ÀQ?Mñ8QpÕŠÐ’]pJ[ìñZþ
-ãÍ“´þ–ër§Á¦I‹N:7c^\Ípçû*‡q»àG3¤]Ë=pe°,AH>Znå=ªk†…©c,d<ôä€FV½òŒ¡*Á@ï¡*ò0d!·|qÞZ«/¬l¶BwVŠ˜KåAy/*¹À˜Åzù¸"VÖ¹h¥³Ëž–_óLn}¢ï™ úˆ2Õøǘ%ØůÛ;8sŽs*ìè?~°Ÿ¡ƒ,+ië@ÅœæAšÕ½îEN´¶°E…ÏÀ•¾¨ð^ZÚÝÝ¥—3çO)UpÕkXI°Ë3g©ômyÌD„á
-5#·)×ôK³Õe6äZhWÓìn¯ã¡Üƒz,ëYì=ú͏nqª©¯"üÀ
[TRUNCATED]

To get the complete diff run:
    svnlook diff /svnroot/chnosz -r 239


More information about the CHNOSZ-commits mailing list