Nothing
# CHNOSZ/demo/sphalerite.R
# Sphalerite solubility after Akinfiev and Tagirov, 2014, Fig. 13
# 20190526 jmd initial version
library(CHNOSZ)
opar <- par(no.readonly = TRUE)
# Set up chemical system
basis(c("Zn+2", "Cl-", "H2S", "H2O", "O2", "H+"))
basis("H2S", log10(0.05))
species("ZnS")
iaq <- retrieve("Zn", c("O", "H", "Cl", "S"), "aq")
# A function to make a single plot
plotfun <- function(T = 400, P = 500, m_tot = 0.1, pHmin = 4, logppmmax = 3) {
# Get pH values
res <- 100
pH <- seq(pHmin, 10, length.out = res)
# Calculate speciation in NaCl-H2O system at given pH
NaCl <- NaCl(m_tot = m_tot, T = T, P = P, pH = pH)
# Calculate solubility with mosaic (triggered by bases argument) to account for HS- and H2S speciation
s <- solubility(iaq, bases = c("H2S", "HS-"), pH = pH, "Cl-" = log10(NaCl$m_Cl), T = T, P = P, IS = NaCl$IS)
# Convert log activity to log ppm
sp <- convert(s, "logppm")
diagram(sp, ylim = c(-5, logppmmax))
diagram(sp, type = "loga.balance", add = TRUE, lwd = 2, col = "green3")
# Add water neutrality line
pKw <- - subcrt(c("H2O", "OH-", "H+"), c(-1, 1, 1), T = T, P = P)$out$logK
abline(v = pKw / 2, lty = 2, lwd = 2, col = "blue1")
# Add legend
l <- lex(lNaCl(m_tot), lTP(T, P))
legend("topright", legend = l, bty = "n")
}
plotfun()
title(main = ("Solubility of sphalerite, after Akinfiev and Tagirov, 2014, Fig. 13"), font.main = 1)
par(opar)
### The following code for making multiple plots is not used in the demo ###
# A function to make a page of plots
pagefun <- function() {
# Set the values of temperature, pressure, and total NaCl
T <- c(400, 400, 250, 250, 100, 100)
# Use a list to be able to mix numeric and character values for P
P <- list(500, 500, "Psat", "Psat", "Psat", "Psat")
m_tot <- c(0.1, 1, 0.1, 1, 0.1, 1)
# The plots have differing limits
pHmin <- c(4, 4, 2, 2, 2, 2)
logppmmax <- c(3, 3, 2, 2, 0, 0)
# Make the plots
par(mfrow = c(3, 2))
for(i in 1:6) plotfun(T = T[i], P = P[[i]], m_tot = m_tot[i], pHmin = pHmin[i], logppmmax = logppmmax[i])
}
# A function to make a png file with all the plots
pngfun <- function() {
png("sphalerite.png", width = 1000, height = 1200, pointsize = 24)
pagefun()
# Add an overall title
par(xpd = NA)
text(1, 14, "Solubility of sphalerite, after Akinfiev and Tagirov, 2014, Fig. 13", cex = 1.5)
par(xpd = FALSE)
dev.off()
}
# We don't run these functions in the demo
#pagefun()
#pngfun()
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.