Nothing
# CHNOSZ/demo/comproportionation.R
# Gibbs energy of sulfur comproportionation,
# after Fig. 1 of Amend et al., 2020 (doi:10.1111/1462-2920.14982)
# 20191112 jmd first version
library(CHNOSZ)
# Set basis species and activities
basis(c("H2S", "SO4-2", "H2O", "H+"))
basis("H2S", -3)
basis("SO4-2", -2)
# Form native sulfur from sulfide and sulfate
species("S")
# If we calculate the affinity like this, we're stuck with H2S and SO4-2
#a <- affinity(T = c(0, 100), pH = c(0, 7))
# Instead, use mosaic() to speciate H2S/HS- and SO4-2/HSO4-
bases <- list(c("H2S", "HS-"), c("SO4-2", "HSO4-"))
m <- mosaic(bases, T = c(0, 100), pH = c(0, 7))
a <- m$A.species
# Get plot values
T <- a$vals[[1]]
pH <- a$vals[[2]]
# The affinity as a function of T (rows) and pH (columns)
A <- a$values[[1]]
# Convert dimensionless affinity (A/2.303RT) to delta G (kJ / mol)
TK <- convert(T, "K")
G.J <- convert(A, "G", T = TK)
G.kJ <- G.J / 1000
# Multiply by 4
# (formation reaction in CHNOSZ is for 1 S; reaction in paper has 4 S)
G.kJ.4 <- G.kJ * 4
# Use subcrt() to write the balanced reaction (shown on the plot)
rxn <- subcrt("S", 1)$reaction
rxn$coeff <- rxn$coeff * 4
rxntext <- describe.reaction(rxn)
# Get label for Delta G (kJ / mol)
DGlab <- axis.label("DGr", prefix = "k")
# Calculate pK of H2S and HSO4-
pK_H2S <- subcrt(c("HS-", "H+", "H2S"), c(-1, -1, 1), T = T)$out$logK
pK_HSO4 <- subcrt(c("SO4-2", "H+", "HSO4-"), c(-1, -1, 1), T = T)$out$logK
# Make contour plot
filled.contour(T, pH, G.kJ.4, xlab = axis.label("T"), ylab = axis.label("pH"),
levels = -55:0,
color.palette = ifelse(getRversion() >= "3.6.0", function(n) hcl.colors(n), topo.colors),
# use plot.axes to label the contour plot (see ?filled.contour)
plot.axes = {
contour(T, pH, G.kJ.4, levels = c(-10, -30, -50), add = TRUE, col = "white", lwd = 2, labcex = 0.8)
legend("topleft", legend = rxntext, bty = "n", inset = c(0, 0.03))
legend("topleft", describe.basis(1:2), bty = "n", inset = c(0, 0.08))
lines(T, pK_H2S, lty = 2)
text(85, 6.7, expr.species("HS-"))
text(85, 6.3, expr.species("H2S"))
lines(T, pK_HSO4, lty = 2)
text(85, 3.0, expr.species("SO4-2"))
text(85, 2.5, expr.species("HSO4-"))
axis(1)
axis(2)
title("Sulfur comproportionation, after Amend et al., 2020", font.main = 1)
}
)
# Add legend text
par(xpd = NA)
text(87, 7.3, DGlab)
par(xpd = FALSE)
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.