Salinity Toolkit

盐度计算器

支持比重与盐度的双向转换、温度校正,以及加淡水/高盐水/换水场景下的盐度调整计算。

换算模型 TEOS-10 / GSW-JS

按样品温度、校准温度和海水热力学密度链路换算。

适用范围 0 - 60

覆盖淡水到常见海缸盐度区间,支持固体盐、补水与换水调整。

报告修正 线性插值

支持校准报告导入、浏览器缓存和按测得比重插值修正。

双向换算

比重 / 盐度转换

报告修正
未启用。仅用于“比重 → 盐度”。
结果 35.00 ppt

对应校正后海水盐度

校正后比重 1.0260

在当前输入条件下的对应比重

样品密度 1023.34 kg/m³

按样品温度计算的海水密度

说明:比重按“样品密度 ÷ 纯水在校准温度下的密度”计算。

调整方案

盐度调整计算器

建议操作量 11.76 L

向系统补加高盐水以达到目标盐度

预计最终体积 111.76 L

直接补加模式下总体积会增加

建议分次调整,尤其当目标盐度变化较大时。

计算依据

热力学模型、数值方法与工程假设

本节给出本页面采用的热力学定义、代码调用链、数值求解方法以及工程近似边界。页面的密度计算由官方 TEOS-10 / GSW-JS 工具箱完成;网页表单层仅负责将用户输入映射为函数参数,并在需要时通过代数守恒或数值迭代完成反算。下列内容按“状态量定义 → 原始公式 → 本页实现 → 适用边界”的顺序组织。

1. 符号定义与单位制

  • Sdisp:页面显示的盐度数值。界面仍以 ppt 形式展示,便于鱼缸和实验场景录入。
  • SP:实用盐度 Practical Salinity,PSS-78 量纲约定下为无量纲数值。在本页换算模块中,代码采用 SP = Sdisp
  • SR:参考盐度 Reference Salinity,单位为 g/kg
  • SA:绝对盐度 Absolute Salinity,单位为 g/kg,是 TEOS-10 热力学函数的严格盐度输入。
  • t:原位温度 in-situ temperature,单位为 °C,按 ITS-90 温标输入。
  • p:海压 sea pressure,单位为 dbar。本页面固定采用 p = 0 dbar,即表层常压近似。
  • ρw(t):纯水在温度 t 下的密度,单位为 kg/m³
  • ρsw(SA, t, p):海水密度,单位为 kg/m³
  • SG:比重,为样品密度与参考纯水密度之比,无量纲。
  • VtankVaddVreplace:体积量,单位可采用 Lgal,推导和输入必须保持一致。
  • MsystemMsalt:质量,单位分别采用 kg 与换算后的 gkg

2. TEOS-10 状态量映射

SPcode = Sdisp

SR = (35.16504 / 35) × SPcode = gsw_sr_from_sp(SPcode)

SA ≈ SR

原始定义:TEOS-10 的热力学性质严格写成 SAtp 的函数;SP 不是热力学方程的最终盐度变量。

本页实现:本页代码先将用户输入盐度数值记为 Sdisp,再直接令 SPcode = Sdisp。随后通过 referenceSalinityFromDisplay(salinityPpt) 调用 gsw_sr_from_sp(SPcode) 获得 SR

为何仍需近似:完整的绝对盐度应由 gsw_sa_from_sp(SP, p, lon, lat) 结合经纬度和压力求得。当前网页未采集地理位置,因此采用 SA ≈ SR 的表层常压工程近似。

3. 密度的热力学定义与代码调用

v(SA, t, p) = ∂g(SA, t, p) / ∂p

ρ(SA, t, p) = 1 / v(SA, t, p) = 1 / [∂g(SA, t, p) / ∂p]

ρw(t) = ρ(0, t, 0)

ρsw(Sdisp, t) = ρ(SAcode, t, 0),其中 SAcode ≈ gsw_sr_from_sp(Sdisp)

原始热力学关系:TEOS-10 中,海水吉布斯自由能为根本状态函数。比容 v 等于吉布斯函数对压力的偏导,密度则为比容的倒数。

本页代码调用链:teosDensityFromSalinity(salinityPpt, tempC) 先调用 referenceSalinityFromDisplay(salinityPpt),再把得到的 SAcode ≈ SR 传给 gsw_rho_t_exact(SAcode, tempC, 0)。纯水密度函数 teosPureWaterDensity(tempC) 则直接调用 gsw_rho_t_exact(0, tempC, 0)

物理含义:因此,本页所有密度值均不是经验多项式手写近似,而是通过官方 GSW-JSTEOS-10 状态方程的标准实现直接给出。

4. 盐度至比重的换算

SG = ρsw(Sdisp, tsample) / ρw(tref)

ρsample = ρsw(Sdisp, tsample)

ρref = ρw(tref)

推导过程:比重定义为样品密度与参考纯水密度之比。先由 TEOS-10 计算得到样品在测量温度下的密度 ρsample,再以校准温度下纯水密度 ρref 为基准相除,即得到 SG

本页实现:sgFromSalinity(salinityPpt, sampleTempC, referenceTempC) 内部先求 teosDensityFromSalinity(salinityPpt, sampleTempC)teosPureWaterDensity(referenceTempC),再返回两者比值。

结果解释:输出为无量纲读数,例如 1.0264。在盐度与样品温度相同的前提下,若校准温度 tref 改变,则参考纯水密度改变,因此比重读数也会相应改变。

5. 比重至盐度的换算

ρtarget = SG × ρw(tref)

求解方程 F(Sdisp) = ρsw(Sdisp, tsample) - ρtarget = 0

推导过程:给定比重 SG 后,先由 ρtarget = SG × ρw(tref) 恢复样品应具有的目标密度。随后需要找到某个页面盐度数值 Sdisp,使得 TEOS-10 计算得到的海水密度恰好等于 ρtarget,即求解 F(Sdisp)=0

本页实现:salinityFromSg(specificGravity, sampleTempC, referenceTempC) 先计算 ρtarget,再在起始区间 [0, 60] 内进行二分法求根;若上界密度仍不足,则按 10 的步长扩展上界,最多扩展到 120。主循环迭代 50 次。

为何采用数值反算:在当前实现中,密度来自 gsw_rho_t_exact 的热力学函数调用,而不是可直接手工反解的低阶显式多项式,因此采用稳定的单变量根求解比构造近似反函数更稳妥。

6. 仪器校准温度的作用

SGmeasured = ρsample / ρpure-water(tref)

原理:比重不是脱离参考条件独立存在的物性,而是以某一参考纯水密度为基准定义的比值。因此,仪器校准温度 tref 必须直接进入分母 ρpure-water(tref),不能仅作为备注信息。

本页实现:页面在“比重 → 盐度”方向默认采用 17.5°C,在“盐度 → 比重”方向默认采用 25°C;用户也可切换到 20°C 或自定义温度。无论选择何值,代码都会将该温度传入 teosPureWaterDensity(referenceTempC)

7. 校准报告修正的参与方式

SGcorrected = SGmeasured + Correction(SGmeasured)

若 SG1 ≤ SGmeasured ≤ SG2,则 Correction(SGmeasured) = C1 + (C2 - C1) × (SGmeasured - SG1) / (SG2 - SG1)

推导过程:校准报告通常给出若干离散标称比重点以及各点修正值。若测得值位于相邻两点之间,可将修正函数视为局部线性函数,用一次线性插值得到当前读数的修正量,再叠加到原读数上。

本页实现:interpolateCalibration(sg, table) 对表格按标称比重排序,完成区间判定、端点截取或线性插值;随后由 correctedSg = measuredSg + correction 得到修正后比重,再将其送入 salinityFromSg(...)

不确定度处理:页面会随插值同步给出不确定度的线性插值显示,但当前版本尚未把该不确定度继续传播为盐度结果的不确定度带。

8. 盐度调整计算

Vadd = Vtank × (Starget - Scurrent) / (Ssource - Starget)

Vreplace = Vtank × (Starget - Scurrent) / (Snew - Scurrent)

Msalt = Msystem × (Starget - Scurrent) / (1000 - Starget)

(Vtank × Scurrent + Vadd × Ssource) / (Vtank + Vadd) = Starget

[(Vtank - Vreplace) × Scurrent + Vreplace × Snew] / Vtank = Starget

(Msystem × Scurrent / 1000 + Msalt) / (Msystem + Msalt) = Starget / 1000

推导过程:直接补加和等体积换水均来自盐质量守恒。第一式把“原系统盐量 + 补加盐量”除以“最终总体积”后等于目标盐度,移项即可得 Vadd。第二式表示先换出一部分原水、再换入等体积新水后的最终盐度,整理后得到 Vreplace。第三式把当前系统内溶解盐质量与新增纯盐质量相加,再除以最终总质量,可解得 Msalt

本页实现:液态模式直接按代数显式公式求值。固体盐模式先由 Msystem = ρsw(Scurrent, t) × Vtank 估算当前系统总质量,其中密度来自 teosDensityFromSalinity(Scurrent, t),再代入第三式求得 Msalt

解释边界:该模块是工程守恒计算,不单独求解完整混合热力学平衡;因此未额外考虑混合收缩、温度漂移、盐产品含结晶水或添加剂等细节。

9. 适用范围与假设

  • 换算模块的盐度解释:在“比重 / 盐度转换”模块中,输入的页面盐度数值先按 SP 数值处理,再映射为 SR,并以 SA ≈ SR 的近似进入 TEOS-10
  • 调整模块的盐度解释:在“盐度调整计算器”模块中,页面盐度数值按工程守恒近似参与质量平衡;固体盐模式需要估算系统质量时,会再次把当前盐度数值送入 TEOS-10 密度函数。
  • 压力条件:当前网页固定取 p = 0 dbar,适用于表层、常压和普通实验/鱼缸场景,不适用于深水或高压环境修正。
  • 绝对盐度近似:由于未输入经度、纬度与压力场,当前不调用完整的 gsw_sa_from_sp,而采用 SA ≈ SR 的工程近似。
  • 体积混合假设:液体混合按体积线性相加处理,未额外考虑混合收缩或器壁残留。
  • 温度进入方式:温度影响通过样品温度 t 与仪器校准温度 tref 进入密度与比重定义;未额外模拟环境传热、仪器老化或时间漂移。
  • 不确定度边界:校准报告中的不确定度目前仅展示,不自动传播到最终盐度结果。
  • 使用范围:建议用于约 0 - 60 的淡水至海缸常见盐度区间;若需科研级海洋资料处理,应补充位置、压力与完整绝对盐度链路。

参考来源

下列来源按“规范性标准文件”“实现与工具箱来源”“函数级技术文档”分组列示,用于对应本页面所采用的热力学定义、代码实现与具体函数调用依据。

规范性标准文件

  1. IOC, SCOR and IAPSO (2015). The international thermodynamic equation of seawater - 2010 (TEOS-10). Manuals and Guides No. 56, UNESCO. PDF
  2. TEOS-10 Official Website. Standard overview, adoption notes, software links and supporting documents. Website

实现与工具箱来源

  1. TEOS-10 / GSW-JS. Official JavaScript implementation of the Gibbs SeaWater Oceanographic Toolbox used by this page for density evaluation. Repository
  2. McDougall, T. J., & Barker, P. M. (2011). Getting started with TEOS-10 and the Gibbs Seawater (GSW) Oceanographic Toolbox. PDF

函数级技术文档

  1. gsw_rho_t_exact(SA, t, p). In-situ density of seawater from Absolute Salinity, in-situ temperature and sea pressure. HTML Notes
  2. gsw_SR_from_SP(SP). Reference Salinity from Practical Salinity, including the relation SR = (35.16504 / 35) × SP. HTML Notes

标准更新关系:根据 TEOS-10 官方站点公开说明,TEOS-102009年6月 被 IOC 采纳,用以替代 EOS-80 作为海水与海冰性质的官方描述。本页面现已切换到 TEOS-10 / GSW-JS 作为核心计算基础。

实现说明:当前网页对密度的求值直接调用官方 GSW-JS 函数;网页自身只负责表单映射、报告修正、代数守恒和二分法反算。由于当前表单没有经纬度和海压输入,绝对盐度部分仍采用 SA ≈ SR 的工程近似。若未来补充位置与压力字段,可扩展为完整 gsw_sa_from_sp 链路。