爆炸模型——爆炸半径计算

蒸汽云爆炸理论基础
当发生爆炸时,可以用释放相同能量的TNT炸药的质量表示,即TNT当量。其计算公式为:
WTNT =1.8·α·W·QV / QTNT
式中,WTNT—A物质的梯恩梯当量(kg);
α—蒸汽云爆炸的效率因子,取4%;
   W—为A物质质量(kg);
   QV—为A物质热值(KJ/kg);
   QTNT—为TNT的爆炸热,取4520KJ/kg。
  
(1)死亡半径R1
该区内的人员如缺少防护,则被认为将无例外地蒙受严重伤害或死亡,死亡半径根据以下公式计算:
R1=13.6×(WTNT/1000)0.37

(2)重伤半径R2
该区的人员如缺少防护,则绝大多数人员将遭受严重伤害,极少数人可能死亡或受轻伤。
重伤半径R2根据以下公式计算:
R2=Z·(E/P0)1/3
ΔPS=0.137Z-3+0.119Z-2+0.269Z-1-0.019
ΔPS=44000/P0
其中:P0=101300Pa,解得Z=1.099;E为爆炸总能量(J),E =WTNT×QTNT。
可计算重伤半径R2。

(3)轻伤半径R3
该区内的人员如缺少防护,则绝大多数人员将遭受轻微伤害,少数人将受重伤或平安无事,死亡的可能性极小。
轻伤半径R3根据以下公式计算:
R2=Z·(E/P0)1/3
ΔPS=0.137Z-3+0.119Z-2+0.269Z-1-0.019
ΔPS=17000/P0
其中:P0=101300Pa,解得Z=1.96;E为爆炸总能量(J),E =WTNT×QTNT。
可计算轻伤半径R3。
当发生爆炸时,爆炸产生的冲击波对人体将造成伤害。
(4)爆炸超压
Pi=3.9/Z1.85+0.5/Z
Pi为爆炸超压(MPa),其中Z为爆炸特征长度,计算方法如下:
Z=R/WTNT1/3
通过上面两个公式可知:
当知道某个距离,可以求得该距离下的超压值;
或知道某个超压值时,可以求出该超压值对应的距离。
不同的爆炸波超压对人体的损伤不同。

由于公式有幂函数,手工计算极其复杂,因此通过计算机二分法迭代计算未知量。

# 蒸汽云爆炸模型:参数为爆炸物质量(kg)、爆照物的燃烧热(kj/kg),某个距离(m,求超压值,可填0至多个距离)
# 返回值为tnt当量,辐射损伤范围,冲击波损伤范围,某个距离的超压值(若用户输入)
# auth:hui mail:psxhh@outlook.com
def model_ace( wf, qf, *distance):
    wtnt = 1.8 * 0.04 * wf * qf / 4520
    # 热辐射死亡半径、重伤半径、轻伤半径(m)
    def thermal_rad(wtnt):
        rad_death = 13.6 * (wtnt / 1000) ** 0.37
        rad_severe_wound = 1.089 * ((wtnt * 4520 * 1000 / 101300) ** (1 / 3))
        rad_slight_wound = 1.957 * ((wtnt * 4520 * 1000 / 101300) ** (1 / 3))
        return round(wtnt, 2), round(rad_death, 2), round(rad_severe_wound,2), round(
            rad_slight_wound, 2)
    # 炮炸冲击波伤害距离
    def shock_wave_rad(wtnt):
        solution = []
        # 二分法迭代
        def dichotomy(pi, left, right):
            def dic(dis):
                z = dis / wtnt ** (1 / 3)
                return 3.9 / z ** 1.85 + 0.5 / z - pi
            mid = 0.5 * (left + right)
            if right - left > 0.0001:
                if dic(left) * dic(mid) < 0:
                    solution.append('1')
                    return dichotomy(pi, left, mid)
                else:
                    return dichotomy(pi, mid, right)
            else:
                # 判断有无解
                if len(solution) != 0:
                    return mid
                else:
                    print('unsolvable')
        # 大于r1大部分人死亡距离;r1-r2内脏严重损伤或死亡;r2-r3人员严重伤害;r3-r4人员轻微伤害
        r1 = dichotomy(0.1, 0.001, 10 ** 10)
        r2 = dichotomy(0.05, 0.001, 10 ** 10)
        r3 = dichotomy(0.03, 0.001, 10 ** 10)
        r4 = dichotomy(0.02, 0.001, 10 ** 10)
        # 判断用户是否输入某个距离,求爆炸超压
        if len(distance) != 0:
            pi = []
            for i in distance:
                # 爆炸特征长度
                z = i / (wtnt) ** (1 / 3)
                # 爆炸超压峰值
                result = 3.9 / z ** 1.85 + 0.5 / z
                result = round(result, 3)
                pi.append(result)
            return round(r1, 2), round(r2, 2), round(r3, 2), round(r4,2), pi
        else:
            return round(r1, 2), round(r2, 2), round(r3, 2), round(r4,2)
    r_th=thermal_rad(wtnt)
    r_sh=shock_wave_rad(wtnt)
    return r_th,r_sh

————————————————
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原文链接:https://blog.csdn.net/psxhh/article/details/119276881

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值