haldane(d,
model=pickmodel("DSAT"),
prevstate=NULL, progressive=FALSE, relative=FALSE, deco=FALSE, derived=FALSE)
dive
.
"hm"
.
Defaults to the DSAT (PADI) model.
TRUE
, the tissue saturations are computed
at every time point during the dive. If FALSE
(the default),
only the final tissue saturation at the end of the dive is computed.
FALSE
(the default),
tissue saturations are expressed as absolute pressures in
atmospheres absolute (ata). If TRUE
, the tissue saturation for each
compartment is expressed as a fraction of the surfacing M-value
for the compartment. (Alternatively if deco=TRUE
then tissue
saturation is expressed as a fraction of the M-value at current depth.)
deco=FALSE
, then relative tissue saturations
are computed by dividing the absolute tissue saturation by the
surfacing M-value, as appropriate for a no-decompression dive.
If deco=TRUE
, then relative tissue saturations are computed
by dividing the absolute tissue saturation by the M-value at the
current depth, as appropriate for a decompression dive.
This argument applies only when relative=TRUE
.
relative=FALSE
and progressive=FALSE
, a data frame giving
the diver's inert gas saturation state at the end of the
dive. Each row of the data frame corresponds to a tissue compartment.
The column N2
gives the nitrogen tension (in atmospheres absolute) of
each compartment. The column He
, if present, gives the
Helium tension (in atmospheres absolute) in each compartment.If relative=FALSE
and progressive=TRUE
,
a three-dimensional array giving
the diver's inert gas saturation state at each time point during the
dive. The first dimension of the array corresponds to successive time points
during the dive (the times can be extracted by
times.dive
).
The second dimension corresponds to the tissue compartments.
The third dimension corresponds to the inert gases
(N2
and/or He
).
The entries are gas tensions (in atmospheres absolute).If relative=TRUE
and progressive=FALSE
, a vector
giving the diver's relative saturation of inert gas at the end of the
dive. Entries in the vector correspond to tissue compartments.
The entries are relative gas tensions, that is,
the total inert gas (Nitrogen plus Helium) tissue saturation
divided by the appropriate M-value for that compartment: either
the surfacing M-value (if deco=FALSE
) or the
M-value at current depth (if deco=TRUE
).If relative=TRUE
and progressive=TRUE
,
a matrix giving the diver's relative saturation
at each time point during the
dive. Rows of the array correspond to successive time points
during the dive. Columns correspond to the tissue compartments.
The entries are relative gas tensions, that is,
the total inert gas (Nitrogen plus Helium) tissue saturation
divided by the appropriate M-value for that compartment: either
the surfacing M-value (if deco=FALSE
) or the
M-value at current depth (if deco=TRUE
).If derived=TRUE
then additional quantities are
returned as an attribute
of the result. This is extracted by: attr(result, "derived")
.
It is a list containing the components
Dceiling
(depth ceiling),
Pceiling
(pressure ceiling)
and washout
(washout), each of which
is a vector, matrix or array of the same format as the result.
A Haldane-type decompression model describes the diver's body as a set of independent compartments connected directly to the breathing gas and governed by classical diffusion.
Henry's Law is applied
to predict the on- and off-gassing of inert gas
in each tissue (compartment) of the model.
The resulting differential equations are solved analytically
(the solution is often called the ‘Schreiner equation’ in
the decompression literature).
The argument prevstate
represents the tissue saturation of the
diver at the start of the dive. It should be a data frame, with one row for
each compartment of the decompression model, and one column for each
inert gas (N2
and/or He
) in the model. Such data frames
are usually generated by saturated.state
or
haldane
.
If progressive=FALSE
, the diver's tissue saturation
at the end of the dive is calculated.
If progressive=TRUE
,
the tissue saturations are calculated at each
waypoint during the dive. The corresponding times
(extracted by times.dive(d)
)
are not equally spaced over time.
If derived=TRUE
then additional quantities are
computed including the washout (the difference
between the current tissue tension of inert gas
and the partial pressure of inert gas in the breathing gas),
the decompression ceiling depth (minimum tolerable diving depth)
and decompression ceiling pressure (minimum tolerable
ambient pressure). These quantities are returned as an attribute
of the result: attr(result, "derived")
.
This is a list containing the components
Dceiling
(depth ceiling),
Pceiling
(pressure ceiling)
and washout
(washout), each of which
is a vector, matrix or array of the same format as the result.
To compute the tissue saturation
at an arbitrary instant of time during the dive, tim
, use
haldane(chop.dive(d, 0, tim))
. To view the tissue saturation
at arbitrary instants of time using interactive graphics,
use showstates
.
Brubakk, A.O. and Neuman, T.S. (eds.) (2003) Bennett and Elliott's Physiology and Medicine of Diving. 5th Edition. Saunders. ISBN 0-7020-2571-2
Buehlmann, A.A. (1983) Dekompression - Dekompressionskrankheit. Springer-Verlag. Buehlmann, A.A., Voellm, E.B. and Nussberger, P. (2002) Tauchmedizin. 5e Auflage. Springer-Verlag.
Tikvisis, P. and Gerth, W.A. (2003) Decompression Theory. In Brubakk and Neuman (2003), Chapter 10.1, pages 419-454.
Wienke, B.R. (1994) Basic diving physics and applications. Best Publishing Co. Workman, R.D. (1965) Calculation of decompression schedules for nitrogen-oxygen and helium-oxygen dives. Research Report 6-65. US Navy Experimental Diving Unit. Washington DC.
dive
,
oxtox
,
pickmodel
,
showstates
,
Mmix
,
M0mix
.
# First dive to 25 m for 20 min with safety stop
d1 <- dive(c(25,20),c(5,5))
# Evaluate saturation according to DSAT model
s1 <- haldane(d1)
s1
# Look at saturation (in ata)
barplot(s1$N2, ylab="Saturation (ata)")
# Look at relative saturation
M0 <- param(pickmodel("D"), "N2", "M0")
barplot(100 * s1$N2/M0, ylab="Saturation (percent)")
# Evaluate saturation after 2 hour surface interval
s2 <- haldane(dive(c(0,120)), prevstate=s1)
# Then after another dive to 18 m for 30 min with safety stop
s3 <- haldane(dive(c(18, 30),c(5,3)), prevstate=s2)
# Assess effect of breathing 80% oxygen at safety stop
s3o <- haldane(dive(c(18, 30),5, nitrox(0.8), c(5,3)), prevstate=s2)
# Inspect saturation during dive d1 at time 10 minutes
s10 <- haldane(chop.dive(d1, 0, 10))
# Progressive saturation during dive
# A real dive
plot(deepmine, col=1, key.gases="none")
# compute saturations during dive
hmine <- haldane(deepmine, model="Z", progressive=TRUE)
# show N2 saturations during dive
# Image plot
image(x=times.dive(deepmine), y=1:17, z=hmine[,,"N2"],
xlab="Time (min)", ylab="Compartment", axes=FALSE)
axis(1)
axis(2, at=1:17, labels=dimnames(hmine)[[2]])
# Perspective plot
persp(x=times.dive(deepmine), y=1:17, z=hmine[,,"N2"],
xlab="Time (min)", ylab="Compartment", zlab="Saturation (atm)",
col="green3", shade=0.6, border=NA,
theta=20, phi=30, ltheta=120, lphi=20)
#.... Derived quantities .....
hmine <- haldane(deepmine, model="Z", progressive=TRUE, derived=TRUE)
der <- attr(hmine, "derived")
names(der)
# Decompression ceiling depth (time x compartment x gas)
dcd <- der$Dceiling
# Overall decompression ceiling at each time point
dc <- apply(dcd, 1, max)
# plot dive with deco ceiling
plot(deepmine, key.gases="none", col=1)
lines(times.dive(deepmine), -dc, lty=3, lwd=2)
legend(100, -60, lty=c(1,3), lwd=2,
legend=c("dive profile", "deco ceiling"))
# Nitrogen washout for tissue 1b (positive values indicate off-gassing)
plot(times.dive(deepmine), der$washout[,"1b", "N2"],
type="l", xlab="Time (min)", ylab="Washout")
Run the code above in your browser using DataLab