[CHNOSZ-commits] r958 - in pkg/CHNOSZ: . inst/tinytest

noreply at r-forge.r-project.org noreply at r-forge.r-project.org
Thu Jan 8 06:07:56 CET 2026


Author: jedick
Date: 2026-01-08 06:07:55 +0100 (Thu, 08 Jan 2026)
New Revision: 958

Modified:
   pkg/CHNOSZ/DESCRIPTION
   pkg/CHNOSZ/inst/tinytest/test-logK.to.OBIGT.R
Log:
Add tests for logK.to.OBIGT()


Modified: pkg/CHNOSZ/DESCRIPTION
===================================================================
--- pkg/CHNOSZ/DESCRIPTION	2026-01-08 04:01:12 UTC (rev 957)
+++ pkg/CHNOSZ/DESCRIPTION	2026-01-08 05:07:55 UTC (rev 958)
@@ -1,6 +1,6 @@
 Date: 2026-01-08
 Package: CHNOSZ
-Version: 2.2.0-24
+Version: 2.2.0-25
 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/inst/tinytest/test-logK.to.OBIGT.R
===================================================================
--- pkg/CHNOSZ/inst/tinytest/test-logK.to.OBIGT.R	2026-01-08 04:01:12 UTC (rev 957)
+++ pkg/CHNOSZ/inst/tinytest/test-logK.to.OBIGT.R	2026-01-08 05:07:55 UTC (rev 958)
@@ -1,5 +1,7 @@
 # Test added 20250122
-info <- "Parameters are fit correctly for a mineral"
+
+## Mineral species
+info <- "Mineral species: parameters are fit correctly"
 species <- c("iron", "sulfur", "FeS2")
 coeffs <- c(-1, -2, 1)
 P <- 1000
@@ -17,3 +19,48 @@
 expect_equal(convert(oldpar$b, "J"), newpar$b, info = info)
 expect_equal(convert(oldpar$c, "J"), newpar$c, info = info)
 
+# Tests added on 20260108
+
+info <- "Mineral species: no error for npar = 2 to 4"
+expect_silent(logK.to.OBIGT(logK, species, coeffs, T, P, name = "newpyrite", state = "cr", V = info(info("pyrite"))$V, npar = 4), info = info)
+expect_silent(logK.to.OBIGT(logK, species, coeffs, T, P, name = "newpyrite", state = "cr", V = info(info("pyrite"))$V, npar = 3), info = info)
+expect_silent(logK.to.OBIGT(logK, species, coeffs, T, P, name = "newpyrite", state = "cr", V = info(info("pyrite"))$V, npar = 2), info = info)
+
+info <- "Mineral species: error for npar = 1"
+expect_error(logK.to.OBIGT(logK, species, coeffs, T, P, name = "newpyrite", state = "cr", V = info(info("pyrite"))$V, npar = 1), info = info)
+
+## Aqueous species
+# CoHS+ from Migdisov et al. (2011)
+logK <- c(6.24, 6.02, 5.84, 5.97, 6.52)
+T <- c(120, 150, 200, 250, 300)
+P <- "Psat"
+species <- c("Co+2", "HS-", "CoHS+")
+coeffs <- c(-1, -1, 1)
+
+info <- "Aqueous species: optimize.omega is forced to FALSE for insufficient T or npar values"
+expect_message(logK.to.OBIGT(logK[1:4], species, coeffs, T[1:4], P, npar = 5, optimize.omega = TRUE), "forcing optimize.omega = FALSE", info = info)
+expect_message(logK.to.OBIGT(logK, species, coeffs, T, P, npar = 4, optimize.omega = TRUE), "forcing optimize.omega = FALSE", info = info)
+
+info <- "No error for npar = 4 and optimize.omega = FALSE"
+expect_silent(logK.to.OBIGT(logK, species, coeffs, T, P, npar = 3, optimize.omega = FALSE), info = info)
+
+info <- "Error for exceeding default tolerance"
+expect_error(logK.to.OBIGT(logK, species, coeffs, T, P, npar = 2, optimize.omega = FALSE), info = info)
+expect_error(logK.to.OBIGT(logK, species, coeffs, T, P, npar = 1, optimize.omega = FALSE), info = info)
+
+info <- "No error for optimize.omega = TRUE"
+expect_silent(inew <- logK.to.OBIGT(logK, species, coeffs, T, P, npar = 5, optimize.omega = TRUE), info = info)
+
+# NOTE: optimize.omega technically works for this small dataste, but is massively overfitting:
+## Plot experimental logK
+#plot(T, logK, "n", c(100, 320), c(5.8, 6.8), xlab = axis.label("T"), ylab = quote(log~beta))
+#points(T, logK, pch = 19, cex = 2)
+## Plot calculated values
+#Tfit <- seq(100, 320, 10)
+#sres <- subcrt(species, coeffs, T = Tfit)
+#lines(sres$out$T, sres$out$logK, col = 4)
+
+info <- "Errors for other conditions"
+expect_error(logK.to.OBIGT(logK, species, coeffs, T, P, npar = 6, state = "aq"), "invalid value for npar", info = info)
+expect_error(logK.to.OBIGT(logK, species, coeffs, T, P, npar = 6, state = "cr"), "invalid value for npar", info = info)
+expect_error(logK.to.OBIGT(logK, species, coeffs, T, P, npar = 6, state = "xx"), "Unrecognized state", info = info)



More information about the CHNOSZ-commits mailing list