RANDOM PHOTOS

 

Gas loading calculations and the Schreiner Equation:

The fundamental relationship of the dissolved gas model is described by a differential equation:

dP/dt = k(Pi - P)

which states that the instantaneous rate of change of inert gas pressure (dP/dt) in a hypothetical tissue compartment is proportional to a time constant (k) multiplied by the gradient between the inspired inert gas pressure (Pi) and the present (or initial) compartment inert gas pressure (P). This kind of relationship in common in the natural sciences; Newton's Law of Cooling, for example. The main principle is that a GRADIENT is the driving force behind the rate of change in the amount of something.

In order to solve this differential equation for P, compartment inert gas pressure, as a function of time, we must use integral calculus. Before we do this, however, there are two conditions we must consider. The first is when the inspired inert gas pressure, Pi, remains constant such as during a constant depth dive profile. The second is when Pi changes with respect to time such as during ascents and descents. In order to simplify the integration in the second case, we will stipulate that the inspired inert gas pressure changes at a constant rate such as with a constant rate of ascent or descent, i.e. 10 msw/min.

Rather than writing out the integrals here, we will go right to the solutions! In the first case (constant depth), the solution is:

P = Po + (Pi - Po)(1 - e^-kt)

This is the "Haldane" equation or the "instantaneous" equation.

This same equation can also be written as:

P = Po + (Pi - Po)(1 - e^(-ln2t/half-time)) or

P = Po + (Pi - Po)(1 - e^(-0.693t/half-time)) or

P = Po + (Pi - Po)(1 - 2^(-t/half-time))

(the latter form appears in Bühlmann's Tauchmedizin book). In the above equations:

P = compartment inert gas pressure (final)
Po = initial compartment inert gas pressure
Pi = inspired compartment inert gas pressure
t = time (of exposure or interval)
k = time constant (in this case, half-time constant)
e = base of natural logarithms
ln2 = natural logarithm of 2

In the second case, ascent or descent at a constant rate, the solution is:

P = Pio + c(t - 1/k) - [Pio - Po - (c/k)]e^-kt

This is the general solution or "Schreiner" equation. It can also be written as:

P = Pio + R(t - 1/k) - [Pio - Po - (R/k)]e^-kt

In the above equations:

Pio = initial inspired (alveolar) inert gas pressure
(Pio = initial ambient pressure minus water vapor pressure)
Po = initial compartment inert gas pressure
c = rate of change in inspired gas pressure with change in ambient pressure
(this is simply rate of ascent/descent times the fraction of inert gas)
R = same as c
t = time (of exposure or interval)
k = half-time constant = ln2/half-time (same as instantaneous equation)

Note that when c (or R) = 0 in the above equation, it is reduced to the more familiar instantaneous form, P = Po + (Pi - Po)(1 - e^-kt).

Examples of applying the gas loading equations:

I would like to provide some advice about how to set up your program to calculate for ascent and descent portions of the dive profile. Many people use the instantaneous gas loading equation and "force" the computer to calculate the ascent or descent profile in greater resolution by dividing the segment into smaller and smaller increments. This is not an efficient way to calculate an ascent or descent profile!

The equation P = Po + (Pi - Po)(1 - e^-kt) is applicable only for CONSTANT DEPTH profiles. This is a point that Bühlmann unfortunately does not explain in his book. To use this familiar equation for ascent or descent profiles requires you to break up the interval into very small increments to produce any kind of accuracy.

The efficient and direct calculation for gas loading during ascent and descent profiles is with the general solution given by Schreiner:

P = Pio + R(t - 1/k) - [Pio - Po - (R/k)]e^-kt

Where:

Pio = initial inspired (alveolar) inert gas pressure
(Pio = initial ambient pressure minus water vapor pressure)
Po = initial compartment inert gas pressure
R = rate of change in inspired gas pressure with change in ambient pressure
(this is simply rate of ascent/descent times the fraction of inert gas)
t = time
k = half-time constant = ln2/half-time (same as familiar equation)

Note that when R = 0 in the above equation, it is reduced to the more familiar form, P = Po + (Pi - Po)(1 - e^-kt).

The Schreiner equation is used to compute the partial pressure gas loading for each gas separately during ascent/descent. The sum of these is then the total compartment gas loading. The following examples are subroutines in FORTRAN (should be easy to follow!) from some of my programs which show the correct application of equations. This subroutine is for ascent/descent segments at a constant rate (i.e. descend to 100 fsw at 50 fsw/min.). Note that an ascent rate must be expressed as a negative number (i.e. -50 fsw/min).


SUBROUTINE ASCDEC (SDEPTH, FDEPTH, RATE)
C
INTEGER MIXNUM, TEMPSG, SEGNUM
REAL FHE, FN2, KHE, KN2, PHEO, PN2O, PHE, PN2, PH2O
REAL FDEPTH, SDEPTH, PIHEO, PIN2O, RATE, RTIME, SGTIME, TEMPRT
REAL HERATE, N2RATE, SPAMB, FPAMB, PAMB
DIMENSION FHE (10), FN2(10), KHE(16), KN2(16)
DIMENSION PHEO(16), PN2O(16), PHE(16), PN2(16)
COMMON /A/ FHE, KHE, KN2, PH2O, /B/ RTIME, SEGNUM, FN2, SGTIME
COMMON /B/ MIXNUM, /C/ PHE, PN2, /D/ PAMB
SGTIME = (FDEPTH - SDEPTH)/RATE
TEMPRT = RTIME
RTIME = TEMPRT + SGTIME
TEMPSG = SEGNUM
SEGNUM = TEMPSG + 1
FPAMB = FDEPTH + 33.0
SPAMB = SDEPTH + 33.0
PAMB = FPAMB
PIHEO = (SPAMB - PH2O)*FHE(MIXNUM)
PIN2O = (SPAMB - PH2O)*FN2(MIXNUM)
HERATE = RATE*FHE(MIXNUM)
N2RATE = RATE*FN2(MIXNUM)
DO 430 I = 1,16
PHEO(I) = PHE(I)
PN2O(I) = PN2(I)
PHE(I) = PIHEO + HERATE*(SGTIME - 1.0/KHE(I)) -
* (PIHEO - PTHEO(I) - HERATE/KHE(I))*EXP (-KHE(I)*SGTIME)
PN2(I) = PIN2O + N2RATE*(SGTIME - 1.0/KN2(I)) -
* (PIN2O - PTN2O(I) - N2RATE/KN2(I))*EXP (-KN2(I)*SGTIME)
430 CONTINUE

RETURN
END

This next subroutine is for constant depth segments (i.e. at 100 fsw for 15 minutes).

SUBROUTINE CDEPTH (DEPTH, SRTIME)
C
INTEGER MIXNUM, TEMPSG, SEGNUM
REAL FHE, FN2, KHE, KN2, PHEO, PN2O, PHE, PN2, PH2O, SRTIME
REAL DEPTH, PAMB, PIHE, PIN2, RTIME, SGTIME, TEMPRT
DIMENSION FHE (10), FN2(10), KHE(16), KN2(16)
DIMENSION PHEO(16), PN2O(16), PHE(16), PN2(16)
COMMON /A/ FHE, KHE, KN2, PH2O, /B/ RTIME, SEGNUM, FN2, SGTIME
COMMON /B/ MIXNUM, /C/ PHE, PN2, /D/ PAMB
SGTIME = SRTIME - RTIME
TEMPRT = SRTIME
RTIME = TEMPRT
TEMPSG = SEGNUM
SEGNUM = TEMPSG + 1
PAMB = DEPTH + 33.0
PIHE = (PAMB - PH2O)*FHE(MIXNUM)
PIN2 = (PAMB - PH2O)*FN2(MIXNUM)
DO 520 I = 1,16
PHEO(I) = PHE(I)
PN2O(I) = PN2(I)
PHE(I) = PHEO(I) + (PIHE - PHEO(I))*
* (1.0 - EXP (-KHE(I)*SGTIME))
PN2(I) = PN2O(I) + (PIN2 - PN2O(I))*
* (1.0 - EXP (-KN2(I)*SGTIME))
520 CONTINUE
RETURN
END

With the two above subroutines (subprograms), a complete dive profile can be directly calculated in any combination of ascent/descent segments and constant depth segments (what some folks call waypoints).

Page 2 of 5
PREVIOUS PAGE
NEXT PAGE
This article was contributed by Erik C. Baker, P.E. The articles presented here do not necessarily reflect the beliefs and/or opinions of SDTechDiving; they are the sole written opinion/expression of the authors. SDTechDiving is not responsible for content contained within this article, including links which may take the reader to websites outside of our control