[CHNOSZ-commits] r564 - in pkg/CHNOSZ: . R inst man vignettes

noreply at r-forge.r-project.org noreply at r-forge.r-project.org
Thu Jul 16 06:32:39 CEST 2020


Author: jedick
Date: 2020-07-16 06:32:38 +0200 (Thu, 16 Jul 2020)
New Revision: 564

Added:
   pkg/CHNOSZ/R/duplex.R
   pkg/CHNOSZ/man/duplex.Rd
Modified:
   pkg/CHNOSZ/DESCRIPTION
   pkg/CHNOSZ/NAMESPACE
   pkg/CHNOSZ/R/util.expression.R
   pkg/CHNOSZ/R/util.plot.R
   pkg/CHNOSZ/inst/NEWS.Rd
   pkg/CHNOSZ/man/util.expression.Rd
   pkg/CHNOSZ/man/util.plot.Rd
   pkg/CHNOSZ/vignettes/multi-metal.Rmd
   pkg/CHNOSZ/vignettes/vig.bib
Log:
Add duplex() for combining diagrams using a secondary balance


Modified: pkg/CHNOSZ/DESCRIPTION
===================================================================
--- pkg/CHNOSZ/DESCRIPTION	2020-07-16 01:32:59 UTC (rev 563)
+++ pkg/CHNOSZ/DESCRIPTION	2020-07-16 04:32:38 UTC (rev 564)
@@ -1,6 +1,6 @@
 Date: 2020-07-16
 Package: CHNOSZ
-Version: 1.3.6-37
+Version: 1.3.6-38
 Title: Thermodynamic Calculations and Diagrams for Geochemistry
 Authors at R: c(
     person("Jeffrey", "Dick", , "j3ffdick at gmail.com", role = c("aut", "cre"),

Modified: pkg/CHNOSZ/NAMESPACE
===================================================================
--- pkg/CHNOSZ/NAMESPACE	2020-07-16 01:32:59 UTC (rev 563)
+++ pkg/CHNOSZ/NAMESPACE	2020-07-16 04:32:38 UTC (rev 564)
@@ -57,7 +57,9 @@
   "dumpdata", "thermo.axis", "solubility", "NaCl",
 # added 20190213 or later
   "CHNOSZ", "thermo", "reset", "OBIGT", "retrieve", "AkDi", "moles",
-  "lNaCl", "lS", "lT", "lP", "lTP", "lex"
+  "lNaCl", "lS", "lT", "lP", "lTP", "lex",
+# added 20200716 or later
+  "duplex"
 )
 
 # Load shared objects

Added: pkg/CHNOSZ/R/duplex.R
===================================================================
--- pkg/CHNOSZ/R/duplex.R	                        (rev 0)
+++ pkg/CHNOSZ/R/duplex.R	2020-07-16 04:32:38 UTC (rev 564)
@@ -0,0 +1,74 @@
+# CHNOSZ/duplex.R
+# Combine diagrams for two metals
+# 20200713 first version jmd
+
+# Function to make a new "affinity" object from two diagrams;
+# uses *secondary* balancing coefficients to combine the diagrams
+duplex <- function(d1, d2, balance = NULL) {
+  # Check that the basis species are the same
+  if(!identical(d1$basis, d2$basis)) stop("basis species are not identical")
+  # Check that the variables and their values are the same
+  if(!identical(d1$vars, d2$vars)) stop("variable names are not identical")
+  if(!identical(d1$vals, d2$vals)) stop("variable values are not identical")
+  # Check that T and P are the same
+  if(!identical(d1$T, d2$T)) stop("temperatures are not identical")
+  if(!identical(d1$P, d2$P)) stop("pressures are not identical")
+  # Check that we have plotvals and predominant (from diagram())
+  if(is.null(d1$plotvals) | is.null(d1$predominant)) stop("d1 is missing 'plotvals' or 'predominant' components (not made by diagram()?)")
+  if(is.null(d2$plotvals) | is.null(d2$predominant)) stop("d2 is missing 'plotvals' or 'predominant' components (not made by diagram()?)")
+
+  # Combine the species data frames
+  species <- rbind(d1$species, d2$species)
+  # Combine the sout objects (results from subcrt())
+  only2 <- !d2$sout$species$ispecies %in% d1$sout$species$ispecies
+  sout <- d1$sout
+  sout$species <- rbind(sout$species, d2$sout$species[only2, ])
+  sout$out <- c(sout$out, d2$sout$out[only2])
+  # Combine the affinity values divided by the *primary*
+  # balancing coefficients ("plotvals" from diagram())
+  values <- c(d1$plotvals, d2$plotvals)
+
+  # Use d1 as a template for the new affinity object
+  anew <- d1[1:11]
+  # Insert combined results
+  anew$species <- species
+  anew$sout <- sout
+  anew$values <- values
+
+  # Figure out the *secondary* balancing coefficients
+  n.balance <- balance(anew, balance = balance)$n.balance
+  # In the Fe-Cu-S-O-H example all the coefficients on H+ are negative
+  if(all(n.balance < 0)) n.balance <- -n.balance
+  n1 <- nrow(d1$species)
+  n.balance.1 <- n.balance[1:n1]
+  n.balance.2 <- n.balance[(n1+1):length(n.balance)]
+
+  # Make empty matrices to hold affinities and balancing coefficients
+  a1 <- d1$values[[1]]
+  a1[] <- NA
+  b2 <- a2 <- b1 <- a1
+  # Get the affinities (per mole of species, not divided by any balancing coefficients)
+  # and the secondary balancing coefficients for the predominant species in each diagram
+  p1 <- d1$predominant
+  for(ip in unique(as.vector(p1))) {
+    a1[p1 == ip] <- d1$values[[ip]][p1 == ip]
+    b1[p1 == ip] <- n.balance.1[ip]
+  }
+  p2 <- d2$predominant
+  for(ip in unique(as.vector(p2))) {
+    a2[p2 == ip] <- d2$values[[ip]][p2 == ip]
+    b2[p2 == ip] <- n.balance.2[ip]
+  }
+  # Divide the affinities by the secondary balancing coefficients
+  ab1 <- a1 / b1
+  ab2 <- a2 / b2
+  # Identify the species with the highest affinity (predominant in the *secondary* reactions)
+  i1 <- ab1 > ab2
+  # Suppress non-predominant species at each grid point
+  for(i in 1:n1) anew$values[[i]][!i1] <- -Inf
+  for(i in (n1+1):length(n.balance)) anew$values[[i]][i1] <- -Inf
+
+  anew
+
+}
+

Modified: pkg/CHNOSZ/R/util.expression.R
===================================================================
--- pkg/CHNOSZ/R/util.expression.R	2020-07-16 01:32:59 UTC (rev 563)
+++ pkg/CHNOSZ/R/util.expression.R	2020-07-16 04:32:38 UTC (rev 564)
@@ -285,19 +285,24 @@
 }
 
 # make formatted text for activity ratio 20170217
-ratlab <- function(ion="K+", molality=FALSE) {
-  # the charge
-  Z <- makeup(ion)["Z"]
-  # the text for the exponent on aH+
-  exp.H <- as.character(Z)
-  # the expression for the ion and H+
-  expr.ion <- expr.species(ion)
-  expr.H <- expr.species("H+")
+# allow changing the bottom ion 20200716
+ratlab <- function(top = "K+", bottom = "H+", molality = FALSE) {
+  # the charges
+  Ztop <- makeup(top)["Z"]
+  Zbottom <- makeup(bottom)["Z"]
+  # the text for the exponents
+  exp.bottom <- as.character(Ztop)
+  exp.top <- as.character(Zbottom)
+  if(exp.top=="1") exp.top <- ""
+  if(exp.bottom=="1") exp.bottom <- ""
+  # the expression for the top and bottom
+  expr.top <- expr.species(top)
+  expr.bottom <- expr.species(bottom)
   # with molality, change a to m
   a <- ifelse(molality, "m", "a")
   # the final expression
-  if(exp.H=="1") substitute(log~(italic(a)[expr.ion] / italic(a)[expr.H]), list(a=a, expr.ion=expr.ion, expr.H=expr.H))
-  else substitute(log~(italic(a)[expr.ion] / italic(a)[expr.H]^exp.H), list(a=a, expr.ion=expr.ion, expr.H=expr.H, exp.H=exp.H))
+  substitute(log~(italic(a)[expr.top]^exp.top / italic(a)[expr.bottom]^exp.bottom),
+             list(a = a, expr.top = expr.top, exp.top = exp.top, expr.bottom = expr.bottom, exp.bottom = exp.bottom))
 }
 
 # make formatted text for thermodynamic system 20170217

Modified: pkg/CHNOSZ/R/util.plot.R
===================================================================
--- pkg/CHNOSZ/R/util.plot.R	2020-07-16 01:32:59 UTC (rev 563)
+++ pkg/CHNOSZ/R/util.plot.R	2020-07-16 04:32:38 UTC (rev 564)
@@ -37,7 +37,7 @@
   if(4 %in% side) thermo.axis(NULL,side=4,lwd=lwd, plot.line = !plot.box)
 }
 
-label.plot <- function(x, xfrac=0.05, yfrac=0.95, paren=FALSE, italic=FALSE, ...) {
+label.plot <- function(x, xfrac=0.07, yfrac=0.93, paren=FALSE, italic=FALSE, ...) {
   # make a text label e.g., "(a)" in the corner of a plot
   # xfrac, yfrac: fraction of axis where to put label (default top right)
   # paren: put a parenthesis around the text, and italicize it?

Modified: pkg/CHNOSZ/inst/NEWS.Rd
===================================================================
--- pkg/CHNOSZ/inst/NEWS.Rd	2020-07-16 01:32:59 UTC (rev 563)
+++ pkg/CHNOSZ/inst/NEWS.Rd	2020-07-16 04:32:38 UTC (rev 564)
@@ -4,8 +4,9 @@
 
 % macros
 \newcommand{\H2O}{\ifelse{latex}{\eqn{\mathrm{H_{2}O}}}{\ifelse{html}{\out{H<sub>2</sub>O}}{H2O}}}
+\newcommand{\Hplus}{\ifelse{latex}{\eqn{\mathrm{H^{+}}}}{\ifelse{html}{\out{H<sup>+</sup>}}{H+}}}
 
-\section{Changes in CHNOSZ version 1.3.6-37 (2020-07-17)}{
+\section{Changes in CHNOSZ version 1.3.6-38 (2020-07-16)}{
 
   \subsection{MAJOR CHANGES}{
     \itemize{
@@ -114,15 +115,18 @@
       \item Change \code{thermo$...} to \code{thermo()$...} in messages and
       comments.
 
-      \item \code{mosaic()} now allows a \samp{blend} argument of length > 1 to
+      \item \code{mosaic()} now allows a \strong{blend} argument of length > 1 to
       apply a specific setting to each group of basis species.
 
-      \item Add a \samp{predominant} argument to \code{mosaic()} to use
+      \item Add a \strong{predominant} argument to \code{mosaic()} to use
       previously calculated predominances of species (e.g. minerals) for the
       changing basis species. This allows \code{mosaic()} calculations to be
       linked in series, for instance to sequentially add metals (Fe, then Cu)
       to a diagram.
 
+      \item Add a \strong{bottom} argument to \code{ratlab()} to allow changing
+      the ion in the denominator to something other than \Hplus.
+
     }
   }
 

Added: pkg/CHNOSZ/man/duplex.Rd
===================================================================
--- pkg/CHNOSZ/man/duplex.Rd	                        (rev 0)
+++ pkg/CHNOSZ/man/duplex.Rd	2020-07-16 04:32:38 UTC (rev 564)
@@ -0,0 +1,58 @@
+\encoding{UTF-8}
+\name{duplex}
+\alias{duplex}
+\title{Combine Diagrams for Two Metals}
+\description{
+  Combine diagrams from two systems using a secondary balancing constraint.
+}
+
+\usage{
+  duplex(d1, d2, balance = NULL)
+}
+
+\arguments{
+  \item{d1}{list, output of \code{\link{diagram}} for first system}
+  \item{d2}{list, output of \code{diagram} for second system}
+  \item{balance}{character or numeric, specification of secondary balancing coefficients}
+}
+
+\details{
+
+This function makes a new \code{\link{affinity}} object from two diagrams.
+Each of the diagrams likely uses different \emph{primary} balancing coefficients (e.g., balancing on different metals).
+This function uses \emph{secondary} balancing coefficients to combine the diagrams.
+
+See \code{\link{equilibrate}} for a description of the \code{balance} argument.
+
+}
+
+\value{
+A list object with the same structure as the output from \code{\link{affinity}}, so it can be used as input to \code{diagram}.
+}
+
+\seealso{
+A longer example is in the vignette \samp{multi-metal.Rmd}.
+}
+
+\examples{
+layout(matrix(c(1, 1, 2, 2, 0, 3, 3, 0), nrow = 4))
+# Define basis species with Fe and Cu
+basis(c("Fe+2", "Cu+", "hydrogen sulfide", "oxygen", "H2O", "H+"))
+xlab <- ratlab("Fe+2", "Cu+")
+# Calculate diagram for only Fe-bearing minerals
+species(c("pyrite", "pyrrhotite", "magnetite", "hematite"))
+aFe <- affinity("Fe+2" = c(0, 12), O2 = c(-40, -16), T = 400, P = 2000)
+dFe <- diagram(aFe, xlab = xlab, main = "Fe-S-O-H")
+# Calculate diagram for only Cu-bearing minerals
+species(c("covellite", "chalcocite", "tenorite", "cuprite"))
+aCu <- affinity(aFe)  # argument recall
+dCu <- diagram(aCu, xlab = xlab, main = "Cu-S-O-H")
+# Combine the diagrams
+ad <- duplex(dFe, dCu)
+diagram(ad, xlab = xlab, balance = 1, main = "Cu-Fe-S-O-H")
+db <- describe.basis(ibasis = 3)
+leg <- lex(lTP(400, 2000), db)
+legend("bottomleft", legend = leg, bty = "n")
+}
+
+\concept{Extended workflow}

Modified: pkg/CHNOSZ/man/util.expression.Rd
===================================================================
--- pkg/CHNOSZ/man/util.expression.Rd	2020-07-16 01:32:59 UTC (rev 563)
+++ pkg/CHNOSZ/man/util.expression.Rd	2020-07-16 04:32:38 UTC (rev 564)
@@ -26,7 +26,7 @@
     ret.val = FALSE)
   describe.reaction(reaction, iname = numeric(), states = NULL)
   syslab(system = c("K2O", "Al2O3", "SiO2", "H2O"), dash="-")
-  ratlab(ion = "K+", molality = FALSE)
+  ratlab(top = "K+", bottom = "H+", molality = FALSE)
 }
 
 \arguments{
@@ -53,7 +53,8 @@
   \item{states}{character, if \samp{all}, show states for all species; numeric, which species to show states for}
   \item{system}{character, thermodynamic components}
   \item{dash}{character to use for dash between components}
-  \item{ion}{character, an ion}
+  \item{top}{character, the ion in the numerator of the ratio}
+  \item{bottom}{character, the ion in the denominator of the ratio}
 }
 
 \details{
@@ -121,7 +122,8 @@
 
 \code{syslab} formats the given thermodynamic components (using \code{expr.species}) and adds intervening en dashes.
 
-\code{ratlab} produces a expression for the activity ratio, viz. (activity of the ion) / [(activity of H+) ^ (charge of the ion)].
+\code{ratlab} produces a expression for the activity ratio between the ions in the \code{top} and \code{bottom} arguments.
+The default is a ratio with \Hplus, i.e. (activity of the ion) / [(activity of H+) ^ (charge of the ion)].
 
 }
 

Modified: pkg/CHNOSZ/man/util.plot.Rd
===================================================================
--- pkg/CHNOSZ/man/util.plot.Rd	2020-07-16 01:32:59 UTC (rev 563)
+++ pkg/CHNOSZ/man/util.plot.Rd	2020-07-16 04:32:38 UTC (rev 564)
@@ -24,7 +24,7 @@
   thermo.axis(lab = NULL, side = 1:4, line = 1.5, cex = par("cex"),
     lwd = par("lwd"), col = par("col"), grid = "", col.grid = "gray",
     plot.line = FALSE)
-  label.plot(x, xfrac = 0.05, yfrac = 0.95, paren = FALSE,
+  label.plot(x, xfrac = 0.07, yfrac = 0.93, paren = FALSE,
     italic = FALSE, ...)
   usrfig()
   label.figure(x, xfrac = 0.05, yfrac = 0.95, paren = FALSE,

Modified: pkg/CHNOSZ/vignettes/multi-metal.Rmd
===================================================================
--- pkg/CHNOSZ/vignettes/multi-metal.Rmd	2020-07-16 01:32:59 UTC (rev 563)
+++ pkg/CHNOSZ/vignettes/multi-metal.Rmd	2020-07-16 04:32:38 UTC (rev 564)
@@ -93,7 +93,7 @@
 It is important to put Cu^+^ first so that it will be used as the balance for the reactions with Cu-bearing minerals (which also have Fe).
 Pyrite is chosen as the starting Fe-bearing basis species, which will be changed as indicated in `bases2`.
 
-```{r mosaic1, results = "hide", message = FALSE}
+```{r series1, results = "hide", message = FALSE}
 logaH2S <- -2
 T <- 200
 pH <- c(0, 12, 500)
@@ -111,7 +111,7 @@
 2. Predominance fields for the aqueous S species (italic blue text and dashed lines)
 3. Stability areas for the Fe-bearing minerals (black text and solid lines)
 
-```{r mosaic2, eval = FALSE, echo = 1:6}
+```{r series2, eval = FALSE, echo = 1:6}
 species(bases2)
 mFe <- mosaic(bases1, pH = pH, O2 = O2, T = T)
 diagram(mFe$A.bases, lty = 0, names = NA)
@@ -135,11 +135,11 @@
 
 After that we add the legend and title.
 
-```{r mosaic2, echo=7:14, results = "hide", message = FALSE, fig.width = 6, fig.height = 5, out.width = "80%", fig.align = "center", pngquant = pngquant}
+```{r series2, echo=7:14, results = "hide", message = FALSE, fig.width = 6, fig.height = 5, out.width = "80%", fig.align = "center", pngquant = pngquant}
 ```
 
 This diagram has a distinctive chalcopyrite "hook" that is controlled on the low-pH side by the reaction with pyrite.
-Only that reaction is shown in many published diagrams [e.g. @And75;@Gio02], but diagrams with a similar chalcopyrite wedge or hook can be seen in @BBR77.
+Only that reaction is shown in many published diagrams [e.g. @And75;@Gio02], but diagrams with a similar chalcopyrite wedge or hook can be seen in @BBR77 and @Bri80.
 
 ## Secondary Balancing
 
@@ -149,11 +149,92 @@
 Some diagrams in the literature are made with secondary balancing constraints in addition to the primary ones.
 For example, reactions of Fe-bearing minerals are balanced on Fe, and reactions of Cu-bearing minerals are balanced on Cu; these are both primary balancing coefficients.
 Then, reactions between all minerals are balanced on H^+^ as the secondary balancing coefficients.
-The challenge is to implement the secondary balance while also maintaining the primary balance; such a method has been implemented in `bimetal()` function.
+The core concept is to apply the secondary balance while also maintaining the primary balance; a method to do this has been implemented in `duplex()` function.
 
-TODO: add example.
-Although the diagram from @MH85 is drawn only for H~2~S, we can go further and make a mosaic diagram.
+The example here makes a diagram like one shown in Figure 5 of @Bri80 and Figure 5 of @MH85.
+Different parts of the script to make the diagrams are described below; press the button to show the entire script.
 
+<button id="B-duplex" onclick="ToggleDiv('duplex')">Show code</button>
+<div id="D-duplex" style="display: none">
+```{r duplex, eval = FALSE}
+mat <- matrix(c(1, 1, 2, 2, 3, 3, 4, 4, 4, 5, 5, 5), byrow = TRUE, nrow = 2)
+layout(mat)
+par(font.main = 1)
+
+basis(c("Fe+2", "Cu+", "hydrogen sulfide", "oxygen", "H2O", "H+"))
+xlab <- ratlab("Fe+2", "Cu+")
+
+### PRIMARY balancing
+
+# Only Fe-bearing minerals
+species(c("pyrite", "pyrrhotite", "magnetite", "hematite"))
+aFe <- affinity("Fe+2" = c(0, 12), O2 = c(-40, -16), T = 400, P = 2000)
+dFe <- diagram(aFe, xlab = xlab)
+title(paste("Only Fe; 1° balance:", dFe$balance))
+label.plot("A")
+
+# Only Cu-bearing minerals
+species(c("covellite", "chalcocite", "tenorite", "cuprite"))
+aCu <- affinity(aFe)  # argument recall
+dCu <- diagram(aCu, xlab = xlab)
+title(paste("Only Cu; 1° balance", dCu$balance))
+label.plot("B")
+
+# Only Fe- AND Cu-bearing minerals
+species(c("chalcopyrite", "bornite"))
+aFeCu <- affinity(aFe)
+dFeCu <- diagram(aFeCu, xlab = xlab, balance = "H+")
+title(paste("Only Fe+Cu; 1° balance:", dFeCu$balance))
+label.plot("C")
+
+### SECONDARY balancing
+
+# Fe- or Cu-bearing minerals
+ad1 <- duplex(dFe, dCu, balance = "H+")
+d1 <- diagram(ad1, xlab = xlab, balance = 1)
+title("Only Fe or Cu; 2° balance: H+")
+label.plot("D")
+
+# All minerals
+d1$values <- c(dFe$values, dCu$values)
+ad2 <- duplex(d1, dFeCu, balance = "H+")
+abbrv <- info(ad2$species$ispecies)$abbrv
+diagram(ad2, xlab = xlab, balance = 1, names = abbrv)
+title("All Fe or Cu; 2° balance: H+")
+label.plot("E")
+
+db <- describe.basis(ibasis = 3)
+leg <- lex(lTP(400, 2000), db)
+legend("bottomleft", legend = leg, bty = "n")
+```
+</div>
+
+We first define basis species to contain both Cu- and Fe-bearing species.
+The x-axis is the ratio of activities of Fe^+2^ and Cu^+^; the label is made with `ratlab()`.
+```{r duplex, eval = FALSE, echo = 5:6}
+```
+
+We then calculate the diagrams for the primary balancing coefficients, for the groups of only Fe-, only Cu-, and only Fe+Cu-bearing minerals.
+It is obvious that the first two systems are balanced on Fe and Cu, respectively, but the third has a somewhat unusual balance: H^+^.
+See Reaction 4 of @MH85 for an example.
+```{r duplex, eval = FALSE, echo = 10:30}
+```
+
+Now comes the secondary balancing, where all reactions, not only that between bornite and chalcopyrite, are balanced on H^+^.
+We first combine the affinities for the Fe- or Cu-bearing minerals to make diagram D.
+Note that after secondary balancing with `duplex()`, the argument `balance = 1` should be used in `diagram()` to prevent further balancing.
+This is because `duplex()` preserves the primary balancing for Fe- and Cu-bearing minerals (internally the "plotvals" components of `dFe` and `dCu`).
+
+Then we combine diagrams D and C to make the final diagram in E.
+The fields in this diagram are labeled with mineral abbreviations from the OBIGT database.
+```{r duplex, eval = FALSE, echo = 33:43}
+```
+
+```{r duplex, echo = FALSE, results = "hide", message = FALSE, fig.width = 6.5, fig.height = 5, out.width = "100%", fig.align = "center", pngquant = pngquant}
+```
+
+*Challenge*: Although the diagram here is drawn only for H~2~S in the basis species, take it a step further and make a mosaic diagram to account for the stability of HSO~4~^-^ at high oxygen fugacity.
+
 ## Other Possibilities
 
 Conceptually, the methods described above treat different metal-bearing elements as parts of distinct chemical systems that are then joined together.
@@ -170,7 +251,8 @@
 ```{r non-metal, results = "hide", message = FALSE, fig.width = 6, fig.height = 5, out.width = "80%", fig.align = "center", pngquant = pngquant}
 basis(c("Fe+2", "Cu+", "hydrogen sulfide", "oxygen", "H2O", "H+"))
 basis("H2S", 2)
-species(c("pyrite", "magnetite", "hematite", "covellite", "tenorite", "chalcopyrite", "bornite"))
+species(c("pyrite", "magnetite", "hematite", "covellite", "tenorite",
+          "chalcopyrite", "bornite"))
 a <- affinity("Cu+" = c(-8, 2, 500), "Fe+2" = c(-4, 12, 500), T = 400, P = 2000)
 d <- diagram(a, xlab = ratlab("Cu+"), ylab = ratlab("Fe+2"), balance = "O2")
 title(paste("Cu-Fe-S-O-H; 1° balance:", d$balance))

Modified: pkg/CHNOSZ/vignettes/vig.bib
===================================================================
--- pkg/CHNOSZ/vignettes/vig.bib	2020-07-16 01:32:59 UTC (rev 563)
+++ pkg/CHNOSZ/vignettes/vig.bib	2020-07-16 04:32:38 UTC (rev 564)
@@ -834,9 +834,9 @@
 }
 
 @Article{BBR77,
-  author    = {Barton, Paul B., Jr. and Bethke, Phillip M. and Roedder, Edwin},
+  author    = {Barton, Jr., Paul B., and Bethke, Phillip M. and Roedder, Edwin},
   journal   = {Economic Geology},
-  title     = {Environment of ore deposition in the {C}reede mining district, {S}an {J}uan {M}ountains, {C}olorado; {P}art {III}, {P}rogress toward interpretation of the chemistry of the ore-forming fluid for the {OH} {V}ein},
+  title     = {Environment of ore deposition in the {C}reede mining district, {S}an {J}uan {M}ountains, {C}olorado: {P}art {III}. {P}rogress toward interpretation of the chemistry of the ore-forming fluid for the {OH} {V}ein},
   year      = {1977},
   number    = {1},
   pages     = {1--24},
@@ -843,3 +843,14 @@
   volume    = {72},
   doi       = {10.2113/gsecongeo.72.1.1},
 }
+
+ at Article{Bri80,
+  author    = {Brimhall, Jr., George H.},
+  journal   = {Economic Geology},
+  title     = {Deep hypogene oxidation of porphyry copper potassium-silicate protore at {B}utte, {M}ontana: {A} theoretical evaluation of the copper remobilization hypothesis},
+  year      = {1980},
+  number    = {3},
+  pages     = {384--409},
+  volume    = {75},
+  doi       = {10.2113/gsecongeo.75.3.384},
+}



More information about the CHNOSZ-commits mailing list