Example 25: deri_dyncorrT and deri_dyncorrS dynamic correction channels

There are two types of dynamic errors affecting salinity measurements: response time and sensor misalignments, and thermal mass errors.

"Response time and sensor misalignments", or "C-T lag", refers to the time lag between temperature and conductivity measurements, which would result in "salinity spiking". It is generated by two separate mechanisms: the physical separation between the thermistor and the conductivity cell, and the inherent response time of the thermistor.

"Thermal mass errors" refers to the thermal mass of the conductivity cell impacting the temperature of the water column where the seawater conductivity is measured. It occurs when the CTD travels through a temperature gradient. Thermal mass errors present two main separate timescales: a long-term thermal mass error (timescales of minutes) and a short-term thermal mass error (timescales of seconds).

In order to correct all those dynamic errors, the logger provides two channels (temp38 and sal_01) that implement the dynamic correction equations (supported since firmware 1.144) . They rely on two types of equations: deri_dyncorrT (temperature in °C) and deri_dyncorrS (salinity in PSU).

The C-T lag correction and the short-term thermal mass correction are only applied when the sample is acquired while the instrument is actively logging at a sampling rate of at least 1Hz.

The long-term thermal mass correction is only applied when the sample is acquired while the instrument is actively logging at a sampling rate of at least 0.1Hz.


deri_dyncorrT equation

If the sample is acquired or fetched while actively logging at a sampling rate greater or equal to 1Hz:

\begin{equation*} \begin{aligned} T_{cor}(n) & = (1-\phi ) \cdot (T_{meas}(n+N)) + \phi \cdot T_{meas}(n+N+1) \\ \phi & = F_{s} \cdot \left [ \Delta t \mod \frac{1}{F_{s}} \right ]\\ N & = \left \lfloor F_{s} \cdot \Delta t \right \rfloor \\ \end{aligned} \end{equation*}


Otherwise:

\begin{equation*} \begin{aligned} T_{cor}(n) & = T_{meas}(n) \end{aligned} \end{equation*}

where:

  • Tcor is the C-T lag corrected temperature (°C)
  • Tmeas is the marine temperature (°C)
  • Fs is the sampling frequency (Hz).

  • Δt is the C-T lag correction (s).

deri_dyncorrT coefficients namecoefficient name implemented
Δtx0
  • n0 is the index of the supporting marine temperature channel  (n0=3 in examples below).. 
    value(n0) is the final output value of this channel in degree Celsius, i.e Tmeas.

deri_dyncorrS equation

\begin{equation*} \begin{aligned} \text{Salinity(PSU)} & = pss78(C, T_{cell}, P) \\ T_{cell} & = T_{cor}+T_{long}-T_{short} \\ \end{aligned} \end{equation*}

With

\begin{equation*} \begin{aligned} T_{long} & = \text{ctcoeff}(n) \cdot (T_{cond}-T_{cor}) \end{aligned} \end{equation*}

And:

\begin{equation*} \begin{aligned} T_{short}(n) & = -b(n) \cdot T_{short}(n-1)+a(n) \cdot (T_{cor}(n)-T_{cor}(n-1)) \\ a(n) & = \frac{4 f_{N} \cdot \alpha(n) \cdot \tau(n)}{1 + 4f_{N}\cdot \tau(n)} \\ b(n) & = 1 - 2a(n) \cdot \alpha(n) ^{-1} \\ f_{N} &= \frac{F_{s}}{2} \end{aligned} \end{equation*}

Where:

\begin{equation*} \begin{aligned} \text{ctcoeff}(n) &= \text{ctcoeff}_{a} * V_{p}(n)^{\text{ctcoeff}_{e}} \\ \alpha(n) &= \alpha_{a} *V_{p}(n)^{\alpha_{e}}\\ \tau(n) &= \tau_{a}*V_{p}(n)^{\tau_{e}}\\ \end{aligned} \end{equation*}

And:

\begin{equation*} \begin{aligned} V_{p_{est}}(n) &= (1-a)*V_{p_{est}}(n-1) + a*(P(n-1)-P(n))*F_{s}\\ a &= 1 - e^{-2*pi*V_{p_{f_{c}}}/F_{s}}\\ V_{p}(n) &= \min \{ \max \{V_{p_{est}}(n) , V_{p_{min}} \} , V_{p_{max}} \}\\ \end{aligned} \end{equation*}

If the sample is fetched or not acquired while actively sampling at a rate faster or equal to 1Hz:

\begin{equation*} \begin{aligned} T_{short}(n) & = 0 \end{aligned} \end{equation*}

If the sample is fetched or not acquired while actively sampling at a rate faster or equal to 0.1Hz:

\begin{equation*} \begin{aligned} T_{long}(n) & = 0 \end{aligned} \end{equation*}

where:

  • fN is the Nyquist frequency, defined as half the sampling rate Fs.
  • α(n) is the magnitude of short-term thermal mass correction and depends on the instantaneous ascent rate.
  • τ(n) is the time constant of short-term thermal mass correction (s) and depends on the instantaneous ascent rate.
  • ctcoeff(n) is the magnitude of the long-term thermal mass correction and depends on the instantaneous ascent rate.
deri_dyncorrS coefficients namecoefficient name implemented
αax0
αex1
τax2
τex3
ctcoeffax4
ctcoeffex5
Vpminx6
Vpmaxx7
Vpfcx8
  • n0 is the index of the conductivity channel. (n0=1 in examples below).
    value(n0) is the final output value of this channel in mS/cm, i.e. C.
  • n1 is the index of the sea pressure channel. (n1=2 in examples below).
    value(n1) is the final output value of this channel in dbar i.e. P.
  • n2 is the index of the C-T lag corrected temperature channel. (n2=3 in examples below).
    value(n2) is the final output value of this channel in °C, i.e. Tcor .
  • n3 is the index of the internal temperature of the conductivity cell channel. (n3=7 in examples below).
    value(n3) is the final output value of this channel in °C, i.e. Tcond.


Examples

>> calibration 5 type
<< calibration 5 type = temp38

>> calibration 6 type
<< calibration 6 type = sal_01

Confirm the channel type.

>> calibration 5 datetime= 20220119163000, x0 = 0.3500

<< calibration 5 datetime= 20220119163000, x0 = 0.3500

Set the temperature coefficients.

>> calibration 6 datetime = 20220119163000, x0=0.1300, x1=5.9000, x2 = 1.0200e-00
<< calibration 6 datetime = 20220119163000, x0=0.1300, x1=5.9000, x2 = 1.0200e-00

Set the salinity coefficients provided.

>> calibration 5
<< calibration 5 type = temp38, datetime = 20220119163000, x0 = 0.3500, n0=3

>> calibration 6
<< calibration 6 type = sal_01, datetime = 20220119163000, x0 = 0.3700, x1 = -1.0300, x2 = 16.0200, x3 = -0.2600, x4 = 0.1400, x5 = -1.0000, x6 = 0.0400, x7 = 0.0500, x8 = 0.1500, n0=1, n1=2, n2=3, n3=7

Request confirmation of all temperature and salinity calibration coefficients.