潜水

首页 » 常识 » 预防 » Excel潜水使用电子表格实现Buu
TUhjnbcbe - 2020/11/19 12:25:00

当潜水员很长一段时间不能潜水,形形色色的云潜水就诞生,在信息爆炸的时代,cloudbased的活动无疑又为燃烧的焦虑感加了一把柴火(钉钉被小学生打一星就是一个例子),那么有没有local一点的做法呢?于是我打开了Excel——准确的说是Numbers,大差不差,一切电子表格都是Excel,就如一切演示文稿都是PPT,PowerPoint神马的都弱爆了。

然后发下声明:本文仅供讨论,难免错漏,欢迎留言指正。本文内容,请勿用于指导任何真实潜水活动。

数字化的工具自然用来探索数字化的世界。减压理论就是这样一个领域。参看文章:减压模型与潜水电脑。本文的讨论主要基于Haldane腔隔理论和Bühlmann模型。

下面这张图是本文讨论的概念的路线图:

图表0.1概念路线图,同色号表示同源,实线表示包含关系,虚线表示演进关系,粉色虚线框住的内容则是本文讨论和演绎的重点。

Bühlmann并非一蹴而就,而是一步步进化而来,路线图上两个重要的节点分别是Haldane模型(蓝色部分)和Workman模型,Haldane提出的腔隔理论被溶解流派的模型广泛采用,以至于这个流派的模型被称为Neo-Haldane。Workman使用M值(随深度变化的最大过饱和压力)取代了过饱和系数,而Bühlmann则进一步改进腔隔参数和M值系数和算法。Gradientfactor梯度因子可以在M值基础上调节模型的保守度,而线性变化的梯度因子(GFlow/high)让腔隔模型能够在算法上支持气泡理论的观点。虽然深停留的观点受到挑战,但线性GF仍然是一个有效的工具,帮助潜水员探索不同的保守度组合。BühlmannZH-L16C是基于16腔隔的C版M值系数的模型,其包含线性梯度因子的版本,在市面上被非常多的潜水电脑使用。

减压理论的前置物理基础是波义耳定律、亨利法则和道尔顿定律等,这几位前辈不在本文赘述,请自行查阅OW手册和安全气/安全气(高氧)手册。

先让我们快进到腔隔理论小试牛刀,来看下Excel中的半时规律。

一、Excel中的半时规律

在Haldane的理论中,我们提到了腔隔的概念,每一个理论腔隔,都有对应的半时。这里半时(Halfsaturationtime)的意思是在某个腔隔中,惰性气体饱和度填满缺额的一半所需要的时间。半时周期短的腔隔我们称之为快腔隔,反之就是慢腔隔。

我们用Excel来观察半时规律,可以以5分钟腔隔为例。

假设在初始状态,腔隔的饱和度达到50%,这个状况在下潜-加压的过程中会出现,假设深度-环境压力不再变化,我们看需要多长时间,腔隔能够达到饱和。

我们建立一个表格如下,第一列输入Runtime,单位为分钟,第二列是溶解度占比。初始状态下,runtime为0,溶解度占比0.5。

经过一个半时周期后,runtime为5(公式$B2+5,即上一行+5,注意这里是递归计算的,即本行的输出是下一行的输入),溶解度用公式计算“溶解度占用比例0+(1?溶解度占用比例0)×0.5”(Numbers具有表头的功能,在显示单元格坐标方面比MSExcel更方便,本质上还是行列坐标,溶解度占用比例0就是上一行数值)。

图表1.1

整列复制公式后,我们就得到下表:

图表1.25分钟半时腔隔的饱和过程

这就是半时规律,在逼近饱和的过程中,溶解度缺额越大,溶解越快;缺额越小,溶解越慢。严格来讲,会无限趋近于饱和,但数值上并不会达到这个极限。

反之就是过饱和状态下的脱饱和过程。早期理论认为,饱和过程和脱饱和过程是对称的,但实践证明,脱饱和过程的速度要慢,但总的趋势是镜像相反的这一点没错。我们仍用5分钟半时来描绘一个脱饱和过程——假设初始状态是1.5倍饱和——这种情况会出现在上升减压的过程中。仍然使用上表,只要把初始压力Runtime0的溶解度占比改为1.5,就会得到下面图表:

图表1.35分钟半时腔隔的脱饱和过程

随着时间的推移,溶解度无限趋近于1。

热身做完了,下面快进至潜水过程中腔隔中的惰性气体分压计算。

二、腔隔中的惰性气体分压计算

腔隔中的惰性气体分压计算,其基础就是分压理论、亨利法则、道尔顿定律和腔隔理论的半时模型——推导之后就形成Schreiner公式。

Schreiner公式用来计算某种惰性气体(氮气或氦气)在特定腔隔中,经过一个时间周期和深度(环境压力)变化之后的腔隔内的惰性气体分压。和半时的计算类似,这个计算也是递归的,每个周期的计算结果都是下个周期的输入(初始压力)。

知道组织压力之后,最直接的计算就是根据M值就可以推断,如果直接升水,是否会超过允许的耐受极限(Bulhmann模型引入梯度因子后,还要多一层计算,不过逻辑大差不差)。如果不能直接升水,那么势必存在一个当前状态下允许的最小深度,这个深度就是我们在实际潜水中会碰到的Ceiling——天花板。BühlmannZH-L16C有16个腔隔,这意味着16个腔隔在上升之后的惰性气体分压都要小于M值允许的分压。

Ceiling的问题我们先挖坑,还是回到Schreiner公式,单纯的看组织内分压的变化规律。

P是我们的计算的目标,即一个周期结束后,特定腔隔内的惰性气体分压,单位是bar。

Palv是当前深度,当前使用的混合气体中特定惰性气体的分压。(简单说就是算氮气就是氮分压,算氦气就是氦分压),单位是bar。Palv分压的计算学过高氧都会,不过这里我们多引入的水汽压的影响,会在计算中减去一个水汽压分压常量Pwvp。

R是基于环境压力变化的当前呼吸气体中惰性气体的分压变化率,单位是bar/min。

Pi是当前计算周期的初始组织内分压,我们把整个潜水过程切分为若干片段,从下潜的那一刻开始Runtime0,Depth0每个阶段套用Schreiner公式计算一轮,计算后输出的P组织内的分压,就是下个阶段的初始分压——Pi的值。

k是基于腔隔的半时分钟数算出来的一个常量,我们也可以称之为腔隔衰变常数。计算方法是ln(2)/Thl。(Thl是腔隔半时)

公式解释完了,我们来看一个实际的例子:

潜水员使用32%的高氧进行潜水。

下面我们先建立一个常量表,其中橙色部分是二次计算出来的常量。

图表1.4常量表

其中,P0是水面初始的组织内氮气分压。遵循Palv公式计算。

之后,让我们来规划一个下潜步骤:

水面

1.5分钟下潜至25米深度

25米停留10分钟

1分钟上升至15米深度

15米停留10分钟

1分钟上升至5米

5米停留3分钟

这个多次深度的潜水侧面图,我们可以建立下表:

图表1.5下潜步骤及压力变化

白色单元格录入的是潜水侧面度的原始数据,*色的单元格根据深度计算出来,OW都会。橙色的部分实际上是根据初始环境压力和结束环境压力算氮气分压,但结合Palv公式,纳入了水汽分压的考量。最后一列变化率R的计算就是(终末呼吸气体氮分压-初始呼吸气体氮分压)/时长,这个也很容易理解。

然后我们增加一列,5分钟腔隔氮分压,第一行初始值使用前面算好的P0直接填入。

图表1.6Schreiner公式

从第二行开始,套用Schreiner公式,得到蓝色列计算结果——在这趟潜水中5分钟腔隔的氮气变化趋势。

图表1.7计算后的腔隔氮分压

生成连线散点图:

图表1.8环境压力与腔隔氮气分压变化

绿色线是环境压力变化线,下潜时压力增加,停留时压力不变,上升时压力下降。

蓝色线则是组织氮分压的变化趋势——停留时,实际身体是在吸氮的,第4阶段,上升至15米后,明显看到氮分压在下降,说明身体开始排氮。

以上是单一腔隔的计算,我们不妨再增加一个腔隔看看。

在常数表里增加10分钟腔隔和衰减常数k10,然后再步骤表增加一列,套用新的衰减差量计算即可得出结果。

图表1.分钟腔隔的氮气分压

10分钟腔隔,我们用紫色线表示,看起来也makesense,吸氮过程因为比5分钟腔隔慢,所以分压较低,排氮的过程比5分钟腔隔也慢,在5米3分钟的阶段,被5分钟腔隔反超。

图表1.10环境压力、5分钟腔隔分压和10分钟腔隔分压。

恩,表格做好了,要改侧面图、改气体的,只需要修改对应的数值即可,加氦气的,把氦气和氮气分开算就好了,本质并没有不同,要想把16个腔隔加全也完全没有问题。

Excel可以算,那么潜水电脑本质也大差不差吧。你可能会问,现在数据那么粗,实际潜水比心电图抖的都厉害,这个差距如何弥合。其实这就是电脑最擅长的东西,调高采样率,每隔几秒采样一次甚至小于每秒采样,把连续问题分解为离散的问题来处理,结果还是一样的。

分压算出来了,至于潜水侧面图安不安全,得不得减压病,你陌生的老朋友M值将出场。

三、M值来了

我们既然知道了氮气的组织分压,那么是不是很想知道,在某个时刻“理论上”能不能直接升水?——这里强调理论上,因为单一的数学模型还远不能描绘玄妙的人体。在新Haldane系的上下文里,我们就顺理成章叫出陌生的老朋友M值。

M值的定义是:一定环境压力下,各腔隔能耐受的惰性气体分压最大值。其他叫法包括:过压耐受极限、超饱和极限和临界张力。

图表2.1一趟模拟潜水的组织氮气分压/环境压力变化趋势

这张图是上一节,绿色线是一趟模拟潜水中环境压力-深度变化趋势,蓝色线和紫色线则是5分钟、10分钟腔隔中的氮气分压变化趋势。

我们看到,随着时间的推移,氮气的压力是先升后降,但远超过其初始值,上升和回到水面之后,氮气分压正是处于过饱和(超饱和状态的)。这个超饱和的程度在理论上是否可以接受,在新Haldane系的模型里,正是由M值来衡量的。

M值不是一个固定值,而是一个随深度变化的线性函数。每个腔隔的M值不尽相同。

不同的模型会有不同的参数和M值计算方法,还是先从M值他爹Workman开始吧。

Workman的M值

这是Workman的M值的线性方程。这里需要注意的是Workman公式是基于深度的,后面介绍Buhlmann公式略有不同,但一定条件下,两者可以互相转换。

D是深度,深度越大,M值越大。

M0是当前腔隔的水面M值。

△M则可以认为是M值随深度变化的趋势——斜率。

下表是各Haldane系模型的的M值参数,先罗列在这里,后面的计算会引用到这里的数据。(不仔细看也没关系,这里只是做个数据参考)

图表2.2图表来自ErikC.Baker,P.E.

UnderstandingM-values

上表中,压力单位使用了msw,是米海水的意思,1msw=0.1bar。

海平面的环境压力记为10msw=1.0bar。

下面我们牛刀小试,用电子表格描绘一下Workman的M值吧。

录入所有的腔隔是个体力活,所以我们只选取5分钟、80分钟和分钟3个腔隔。先建立参数表如下:

腔隔半时-580M...2△M1.81.31.1

图表2.3WorkmanM值计算的参数表

M0的单位是msw,31.7msw相当于3.7bar。

然后建立计算表:

图表2.4WorkmanM值计算表

计算单元格填入公式:

图表2.5WorkmanM值电子表格计算公式

公式复制到全表,顺便输出折线图。为了提供参考,特意增加了红色的列——环境压力(msw):

图表2.6WorkmanM值电子表格计算结果

从上图的结果来看,我们看到的规律是M值随深度变化,深度越深(环境压力越大),腔隔可耐受的惰性气体压差越高。快腔隔对压力梯度的耐受高于慢腔隔。

Bühlmann的M值

Bühlmann的M值的一个区别是:Workman是基于深度的,而Buhlmann是基于绝对压强的,在计算高海拔的时候是免切换的。

Buhlmann的M值公式如下:

WTF?t.tol.i.g是什么*?不急,其实这种表达更容易澄清概念。因为减压计算中,涉及的压力概念实在有点多:环境压力、呼吸气体分压、组织内惰性气体分压、氧分压、氮分压、氦分压...所以不如多写几个字标清楚。

关于P的角标的解释

这里P都是表示压力;

P缀上了i.g.表示的是inertgass即惰性气体分压。

t.tol.的意思是tissuetolerated即腔隔耐受的。

Pt.tol.i.g完整表示腔隔耐受的惰性气体压力。

Pamb.表示绝对环境压力。

其他参数的解释

Bühlmann公式中,不再使用M0和△M,而是使用一对a,b系数。

a系数aM值的斜率的倒数。

b系数b截距—当前腔隔在环境压力为0时的Pt.tol.i.g值。环境压力为0是数学意义上的表示,并不代表潜水员会进入0压力的环境。

ZH-L16B模型的M值参数如下(这里仅罗列了氮气的系数):

半时周期系数a系数b5.01...01...50...50...00...30...30...00..8109.00...00...00...00...00...00...00...00..

图表2.7ZH-L16B模型的M值参

尽管长的不太一样,但Bühlmann的M值仍然是一个环境压力(深度)相关的线性函数。既然都是线性公式,从公式角度就是可以相互转换的:

Pamb.(surfaceatsealevel)是海平面的环境压力,引入这个值后,即可打通两种风格的M值参数。

Bühlmann的原始腔隔参数是:半时,参数a和参数b,经过转化计算之后,就可以得到Workman风格的参数表:半时,△M和M0。

我们可以建立电子表格,来验证两种风格表达式转化的逻辑:

图表8

M0和△M列分别填入公式(转换公式计算出来的数值是bar,x10转为单位为msw的数值):

图表9

图表10

复制公式后得到数据表:

图表2.11BuhlmannZH-L16B氮气M值参数表

这个计算结果和图表2中ErikBaker给出的数值是一致。

M0有ABC3组,因为ZH-L16模型演化出3个版本,不同的版本具有不同的M0。

除了参数的差异,Bühlmann的M值和Workman的计算又有何差异呢?

我们不妨选取5分钟腔隔对比来看,不同的算法使用原始参数和公式,不做公式转换。

先建立表格:

图表2.12M值计算表

分别填入公式:

图表2.13Workman公式

图表2.14Bühlmann公式

为了和Workman公式做对比,数值x10将单位转为msw。

图表2.分钟腔隔M值对比

从结果来看,两条线几乎平行,差异很小,原因是5分钟腔隔两个模型的参数实质差异很小,Bühlmann的结果比Workman略微保守。

两者的斜率其实是有区别的,实际有夹角,5分钟腔隔的斜率差值很小,所以看起来很像平行的。

Bühlmann的线长出一截,这就是基于深度计算和基于绝对压力计算的区别。深度小于0(或者说压力小于1bar/atm)的部分可以视作高海拔潜水的情况,可适用的最低环境压力是0.5bar/atm。

四、寻找天花板

当我们潜水时,头顶上悬了一个看不见的天花板——AscendCeiling——这是一个深度概念。Ceiling的意义在于:老老实实呆在下面,安全;如果非要撞破它,那么减压病随之而来(这里是一个形象但不准确的说法,减压病的发生并非开关式的按了就来不按就不来的那种)。M值的作用之一就是帮我们计算这个天花板在哪里。

下面的公式就是计算当前腔隔在特定惰性气体分压下,允许的最小环境压力极限——基于这个压力,可以计算出允许上升至的最小深度——AscendCeiling。

Pamb.l=(Pt.i.g-a).b

Pt.i.g是腔隔内惰性气体分压。

Pamb.l当前状态下的环境压力下限。Pamb.l实际就是Ceiling值对应的压力。

且让我们结合上次的模拟潜水侧面图表格来做个计算.

首先录入潜水侧面图,计算出各个Runtime节点的腔隔氮气分压。

图表2.16潜水侧面图

引入公式计算后,得到各个Runtime节点的最小环境压力限制。

图表2.17计算Pamb.l

使用公式:Pamb.l=(Pt.i.g-a).b我们得到Pamb.l列的值。

这里的压力单位是bar,所有的数值都小于1bar,对应的Ceiling深度都在水面之上,意味着如果在海平面潜水,5分钟腔隔计算出的结果显示潜水员是可以直接出水的(理论上)。

五、引入梯度因子

如前面的介绍提到,M值是一个安全临界值,但减压病的发作并非开关式的,黑白之间存在了灰色地带。常在河边走,哪有不湿鞋,为了不掉到马路牙子下面,比较好的办法其实是和马路牙子保持距离——引入保守度。(更好的办法是不开车)而GradientFactor(也就是我们常说的GF或梯度因子),就是一种定义保守度的方法。

说来也很简单,M值是各腔隔能耐受的惰性气体的最大分压,那么GF就是M值与环境压力差值的百分比。gf=30%意味着,我们把腔隔的M值差值调低了7成,离马路牙子远了,自然安全性就提高了。gf为0意味着不允许腔隔进入超饱和状态,gf=%则表示没有保守度。

Bühlmann的M值公式引入gf后,变成下面的样子:

Pamb.l=(Pt.i.g-a.gf)/(1/b-gf+1)

图表2.18计算Pamb.lgf=0.3

Pamb.lgf=0.3的列的数值,就是基于以上公式计算出来的。

同样的潜水,gf值不同,最小环境压力的限制也不一样。

当gf=0.3的时候,Pamb.l值出现大于1的情况,意味着Ceiling值处于海面之下,即基于当前腔隔的状态,潜水员不能直接升到水面(此处未考虑上升速率和上升周期内的减压)。

最后一列,我们把Pamb.lgf=0.3列的压力值换算成海水深度可以看到,Runtime21.5和23.5的时候,Ceiling分别在8米和7米。

图表2.19计算gf=0.3时的Ceiling深度

以上是基于单一腔隔计算的Ceiling,每一个腔隔计算后的Ceiling最大值(最深),就应该是实际选用的Ceiling。

模拟减压潜水

电子表格本质上是一个可视化编程的环境,当我们准备好一个表格结构后,有如定义好了程序的执行函数,可以0成本变换输入来看不同的结果。可谓心有多二舞台就有多大,在Excel的世界里下个百米又如何?——且慢,今天还不行,现有表格切不了气啊。

下面我们构建一次单一气体的减压潜水,来看看腔隔惰性气体分压、M值和Ceiling的变化趋势吧。

虚拟潜水侧面图如下:

步骤

初始深度

结束深度

时长

环境压力

Runtime

1

0

0

0

1

0

2

0

45

3

5.5

3

3

45

45

17

5.5

20

4

45

15

3

2.5

23

5

15

15

1

2.5

24

6

15

12

0.5

2.2

24.5

7

12

12

1

2.2

25.5

8

12

9

0.5

1.9

26

9

9

9

3

1.9

29

10

9

6

0.5

1.6

29.5

11

6

6

8

1.6

37.5

12

6

3

0.5

1.3

38

13

3

3

18

1.3

56

14

3

0

0.5

1

56.5

图表2.20模拟潜水侧面图

不是很直观,后文中有折线图输出

基于1.4的PO2,气体选用25%的安全气(高氧)。常量表定义如下:

图表2.21常量表

图表2.22腔隔参数表

将潜水侧面图录入计算表,并重新匹配腔隔。

图表2.23计算表

环境压力和腔隔惰性气体分压图表如下图:

图表2.24环境压力与腔隔惰性气体分压

为了方便查看深度变化,我们复制一个深度表并将数值转为负数——把深度视作绝对海拔来看,这样生成的潜水侧面图和Ceiling线更符合人类直觉。

图表2.深度与天花板表

图表2.26深度与天花板折线图

这个图上,我们直观的看到,在0.6的gf值下,潜水深度没有超过任意一个的天花板,顺利完成任务。

写到这,虽然没有真的背气瓶,还是感觉有点喘。

你肯定要问,gflow和high去哪了,说来话长...

六、GF值与减压策略

后面的讨论逐渐从单一函数的计算进入到了更多阶的领域,分解开来都是简单函数,量变引起质变,复合起来就开始烧脑,于是踩坑无数,感谢滞留菲律宾的师父的远程支援,修正了若干概念和算法的bug。

图表3.0.计算表全貌

现在主流的减压模型可以分为溶解气体模型和气泡模型两类,本文一直在讨论溶解派的Haldane腔隔理论、Workman和Bühlmann模型都属于溶解派的。但事实上两个流派并非二元对立,我们可以看到溶解派在调整自身的模型来解决气泡流提出的问题。

减压站越浅越好的观点

基于腔隔模型和M值,潜水员在上升阶段理论上应该尽快逼近ceiling深度才好(后面有个但是),这样做的收益是让快腔隔获得更大的过压梯度,加速消除惰性气体,慢腔隔则减少不饱和梯度,减少惰性气体的摄入。

为了提高减压效率和减少慢腔隔的氮气吸收,停留站要尽可能浅——基于这种理念的典型的bouncedive中,潜水员会尽快上升至接近Ceiling的深度,最快腔隔中的惰性气体在底部接近饱和,而最慢的腔隔仅部分装载。这意味着快腔隔是最初上升的控制腔隔,因为它的惰性气体分压更接近M值,远高于较慢的腔隔。上升直到控制腔隔中的惰性气体逼近M值时,开始第一次停留。

看一个例子,下面的潜水使用0.7的单一GF,潜水员采用尽快逼近Ceiling线的方式进行减压。

图表3.1.

图表3.2.

上图横轴是时间线,纵轴是深度线,蓝色是深度变化线,其他折线则是各个腔隔的上升限制——Ceiling深度线,我们看到潜水员完成底部停留后,就开始选择最快逼近Ceiling线的方式,在9米做了第一次停留,后续每3米一个停留站,都遵循这个策略。

同样的潜水,我们切换到压力视图来看:

图表3.3.

上图中X轴是环境压力,Y轴是组织内氮气分压,蓝色线是水面压力参考线,取的是图表1潜水侧面图中上升阶段的数据,越往左越靠近水面,越往右越靠近底部(所以这个表要从右到左看)。腔隔内氮分压线和环境压力线在竖直方向上的距离越远,梯度越大。在19msw(9米深)是第一个停留站,到达这个深度时过压梯度达到最大值。基于半时规律,此时的减压效率最高。半时越短、梯度越大,惰性气体清除越快,因此我们看到这里绿色线5分钟腔隔在这个停留站降的是最多的。

这种潜水方式产生了最大化的“可接受”的过压梯度,但这种过压梯度也有可能是有害的...

需要深度停留的观点

多普勒超声技术应用证明:即使没有超过M值,气泡也存在于潜水员体内,很多是没有任何症状的。物理规律和气泡模型的研究都表明,气泡大小、数量和惰性气体压力梯度是正相关的。用传统方法计算的潜水侧面图,在底部到第一个减压站之间,快腔隔会产生较大的压力梯度,可能会导致更多的气泡产生。

潜水员在潜水后可能出现疲劳、嗜睡、身体不适等症状,我们并未超过M值的限制,但很多时候这种不适感和组织承受的压力梯度是相关的。生理上的解释包括:气泡迁移理论、肺部毛细血管中气泡积累引起的延迟脱气等。这些症状到不了需要治疗的程度,但已经可以视作变相的轻度的减压病。

如果要控制过压梯度进而控制气泡的产生——这就意味着需要更深的减压站。在减压的初期,快腔隔往往是控制腔隔,也可以叫主导腔隔——因为快腔隔最先达到饱和,那么上升初期,快腔隔的过压梯度最大。参考图表3,蓝色线在达到第一个减压站之前,距离环境压力线最远,过压梯度最大。

那么,第一个减压站的深度,最深可以多深呢?至少让控制腔隔出现一点点过压梯度吧,如果控制腔隔不进不出(惰性气体),慢腔隔只进不出,那就谈不上减压了。真实的潜水计划,往往不会选择这个最深的减压站开始停留,这样效率未免太低,但在DeepStops中,Erik建议,高于这个点之后,应减缓上升速率,低于10msw/min。这种做法有助于缓解气泡的产生。

如果不对模型大动干戈,我们要想控制第一个停留站的深度应该怎么做呢——打补丁喽。

Bühlmann模型补丁1.0

把梯度因子调小——更小的GF值意味着允许的腔隔过压梯度更低,天花板Ceiling深度随之下降,比如我来个GF=0.2试试。

图表3.4.

改完GF之后ceiling瞬间被撞破,蓝色线高过了各个梯度的ceiling线。(感慨一下,有没有觉得自己被模型耍了,明明刚才的潜水也未必得减压病啊,都是数字游戏。)为了不撞天花板,我们顺便把减压计划也改了。

图表3.5.

调整后的潜水计划变成了这个样子,你内心应该在万马奔腾吧(很萌的那种),潜个45米20分钟BT,RT达到分钟,一场电影都看完减压减压还没结束。这就是打补丁的后果,GF调到0.2之后,第一个停留站确实变深了,来到了21米,因为不在这个深度停留,就撞ceiling了。

图表3.6.

切换到压力视图来看,如下图:

图表3.7.

得益于深停留,减压初期过压梯度控制的很好。但是灾难在后面就发生了,减压的末期,由于压力梯度太小,加上慢腔隔清除惰性气体速度就慢,就导致浅水的每个停留站都需要很长时间(见图表6的减压末期)。

上图值得注意的是,单纯调低GF后,慢腔隔在深水停留时不是排氮,而是吸氮状态。

这里跑个题,回答一个可能被问到的问题:

问:为什么和我们常见的潜水计划不太一样?为什么会出现半分钟的设定?答:

这里是Excel潜水,不用考虑实际操作的方便性。

这个表格被设计为需要连续的潜水侧面图才能计算,日常潜水用的减压计划是跳跃式的,会出现9、6、3这样的停留而忽略中间的上升过程。

为了满足“连续”的要求,每段上升过程都纳入到表格中,但3米上升花费一分钟的时间在“计划”的层面稍显“浪费”,所以就取0.5分钟。

补丁2.0线性GF

补丁1.0算是失败了吧,这么潜水太累人了。通过观察压力图,我们能看到的现象是:各个腔隔是轮流坐庄的,快腔隔先上,然后交棒给稍慢的腔隔,最后接棒的是更慢腔隔。GF0.2满足了5分钟快枪手的需求,对慢腔隔来说却是无比折磨,慢腔隔其实是需要个高一点的GF来加速惰性气体清除的。你是不是有所感悟:心里住着16个人格,1个女朋友哪里够,你需要的明明是16个女朋友。

这个结论有点让人发愁,不过难不倒数学家——简单的线性模型就可搞定啊,你需要16个GF是吧,抱歉只有一个,但它会变,你告诉我一个身高的区间(GFlow和GFhigh),然后我给你一个可变的GF线性函数,随环境压力的变化而变化。不同腔隔主导减压的时候,就现场变身一个适合的GF值出来匹配不同腔隔的需求。这就是补丁2.0了。结果是不是有点意外,溶解派打了补丁——用线性变化的GF来把自己变身为气泡流。

GFlow和GFhigh也简写为GFlo,GFhi;当GFlo=0.3,GFhi=0.7也记作GF30/70。

GFlo为先上位的主导腔隔服务,其含义是首个主导腔隔的过压梯度达到M值与环境压力差值*GFlo百分比之时,进入首个停留站。因此,根据GFlo值,我们可以计算出首个停留站的深度。

GFhi为最后上位的腔隔来服务,其含义是结束潜水时,当前控制腔隔容许的过压梯度不能超过水面M值与环境压力的差值*GFhi百分比。

动态变化的GF值如下图所示,Y轴是腔隔惰性气体分压,X轴代表环境压力(和深度对应),左侧的灰色竖线对应1bar环境压力代表海平面,右侧灰色竖线则代表首个减压深度。

红色线代表M值的绝对压力,*色和绿色分别是GF70线和GF30线。最终我们要使用的是一条修正后的M值连线——紫色线。这条30/70线表示达到30%M值时进入第一个减压站,最后到达水面的时候,不能超过70%的M值,中间过程则是线性变化的。

图表3.8.紫色线代表引入GF30/70后,允许耐受的腔隔内最大惰性气体分压。

为了要将可变GF值引入减压计算,我们得先理解可变GF值的。成对出现的GF值,本身是一个随深度变化的线性函数。假设我们首个减压站在21米,最后减压站在3米,使用GF30/70。我们可以得到如下图表:

图表3.9.

GF值现在成为一个随深度变化的函数,深度为3时,GF=0.7,深度为21时,GF=0.3。据此我们可以推导得出以下公式:

ΔGF=(GFlo-GFhi)/(D0-D1)

GF=GFlo-ΔGF(D0-D)

ΔGF是GF线的斜率。

D1代表最后一个减压站的深度,这个深度属人为设定,一般我们喜欢放在3米处(够浅、减压效率高,受水面影响比较小,不容易被风浪和船只干扰)。

D0代表第一个减压站的深度,这个深度从何而来呢?编程角度来讲的话,我们使用查找算法逼近真相,找到最适合的停留深度,电子表格理论上也可以实现,但我们今天为了不增加taskload用暴力一点的方法去试。拍脑袋一个深度填入表格计算,如果满足小于但接近Ceiling的话就用,不合适就换,直到选出最适合的数值——本质上程序也是这么试出来的,只是比人操作快而已。

GF就是我们最后要计算的数值——当前深度选用的M值与环境压力差值的百分比。

D则代表当前深度。

现在,我们可以回到前面的潜水计划:SafeAir25,最大深度40米,Rumtime20分钟开始上升。

新增的常量包括:最后一个减压站深度3米,GF20/70。

先录入前半部分的潜水计划:

图表3.10.

下一刻我们就要开始上升,那么升到几米合适呢,此时GF0.2在生效,我们开始试。

为了把上升速率考虑进去,我们录入了时长计算公式表示以10米/分钟速度计算所需上升时间,结果向上取整至0.5。

图表3.11.

当我们尝试直接上升到18米时,我们观察到Ceiling线被撞破,也就是说18米不可行。

经过搜索,21米是理想的深度。

此时,首个减压站深度就确定了,我们可以开始着手计算GF值参数。

GF=GFlo-ΔGF(D0-D)

图表3.12.GF参数表。

根据GF参数表,重新计算M值后,得到下表,黑色列是随深度变化的GF值:

图表3.13.

新规划后的潜水侧面图,仍然采用紧贴Ceiling的减压方式。

图表3.14.潜水侧面图和Ceiling线。

图表3.15.腔隔过压梯度变化

图表3.16.

图表3.16是GF20/70的腔隔惰性气体过压梯度变化趋势,如果我们把3次潜水的梯度图叠加起来看,就得到了图17。

三次潜水的对比,我们看下面的表格:

顺序

GF

过压梯度

首个减压站深度

Runtime

一、粉色系

0.7

9m

47

二、绿色系

0.2

21m

三、橙色系

0.2/0.7

21m

53

图表3.17.

对比来看,GF20/70明显的抑制了早期的过压梯度,减压时长增加有限。

这里也可以回答一个常常被问到的问题,为什么GFhi总比GFlo数值要大,难道姓高就要高一点吗?

通过上面的对比就很清晰了,GFlo的目的是控制减压初期快腔隔的过压梯度,如果设太高,控制的效果就没有了。GFhi则是在减压末期为慢腔隔增加压力梯度,加速惰性气体清除,设太低了会导致梯度消失,自然也就没有意义。小声bb,姓高的高不高不知道,姓侯的大多有点瘦好像是事实。

GF20/70不是一个常用的数值,仅仅是我们在这里举的一个栗子??,潜水电脑的默认值常有不同。以Teric为例,OCTec的保守度高/中/低三档分别是35/75,40/85,45/95。

图表3.18.TericGF设置。

小结一下,GFlo/hi引入之后,我们实际多了一个工具,这个工具可以用来平衡微泡控制和减压效率之间的关系,Bühlmann本身是溶解派模型的代表,但双GF值(线性梯度因子)的使用打通了气泡流派的观点。

总结

关于减压模型的讨论其实远没有结束——NDL计算、减压深度和时长搜索、气体切换、氦气的引入这些话题还没有触及,挖坑留待后续。

BühlmannZH-16C是现在市面上潜水电脑中最常见的模型之一,另一位是SuuntoRGBM。Bühlmann的核心逻辑我们可以参看下图。

甩锅声明:本文仅供讨论,难免错漏,欢迎留言指正。本文内容,请勿用于指导任何真实潜水活动。

参考:

[1]Baker,Erik.UnderstandingM-values.

[2]Baker,Erik.ClearingUpTheConfusionAbout"DeepStops".

[3]徐伟刚潜水医学

[4]DecoTenguPythondivede

1
查看完整版本: Excel潜水使用电子表格实现Buu