Gibbs Energy of Ice, and its Derivatives

gsw_gibbs_ice(nt, np, t, p = 0)

Arguments

nt

An integer, the order of the t derivative. Must be 0, 1, or 2.

np

An integer, the order of the p derivative. Must be 0, 1, or 2.

t

in-situ temperature (ITS-90) [ degC ]

p

sea pressure [dbar], i.e. absolute pressure [dbar] minus 10.1325 dbar

Value

Gibbs energy [ J/kg ] if ns=nt=np=0. Derivative of energy with respect to t [ J/kg/(degC)^nt ] if nt is nonzero, etc. Note that derivatives with respect to pressure are in units with Pa, not dbar.

Implementation Note

This R function uses a wrapper to a C function contained within the GSW-C system as updated 2021-12-28 at https://github.com/TEOS-10/GSW-C with git commit `98f0fd40dd9ceb0ba82c9d47ac750e935a7d0459`.

The C function uses data from the library/gsw_data_v3_0.mat file provided in the GSW-Matlab source code, version 3.06-11. Unfortunately, this version of the mat file is no longer displayed on the TEOS-10.org website. Therefore, in the interests of making GSW-R be self-contained, a copy was downloaded from http://www.teos-10.org/software/gsw_matlab_v3_06_11.zip on 2022-05-25, the .mat file was stored in the developer/create_data directory of https://github.com/TEOS-10/GSW-R, and then the dataset used in GSW-R was created based on that .mat file.

Please consult http://www.teos-10.org to learn more about the various TEOS-10 software systems.

Caution

The TEOS-10 webpage for gsw_gibbs_ice does not provide test values, so the present R version should be considered untested.

Examples

library(gsw)
p <- seq(0, 100, 1)
t <- rep(-5, length(p))
## Check the derivative wrt pressure. Note the unit change
E <- gsw_gibbs_ice(0, 0, t, p)
# Estimate derivative from linear fit (try plotting: it is very linear)
m <- lm(E ~ p)
print(summary(m))
#> 
#> Call:
#> lm(formula = E ~ p)
#> 
#> Residuals:
#>       Min        1Q    Median        3Q       Max 
#> -0.010509 -0.003783  0.001433  0.004337  0.005413 
#> 
#> Coefficients:
#>               Estimate Std. Error  t value Pr(>|t|)    
#> (Intercept) -6.102e+03  9.659e-04 -6316910   <2e-16 ***
#> p            1.090e+01  1.669e-05   653090   <2e-16 ***
#> ---
#> Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
#> 
#> Residual standard error: 0.00489 on 99 degrees of freedom
#> Multiple R-squared:      1,	Adjusted R-squared:      1 
#> F-statistic: 4.265e+11 on 1 and 99 DF,  p-value: < 2.2e-16
#> 
plot(p, E)
abline(m)

dEdp1 <- coef(m)[2]
# Calculate derivative ... note we multiply by 1e4 to get from 1/Pa to 1/dbar
dEdp2 <- 1e4 * gsw_gibbs_ice(0, 1, t[1], p[1])
## Ratio
dEdp1 / dEdp2
#>         p 
#> 0.9999416