📄 firefield.java
字号:
package turing;
public class FireField
{
private double Vh; //火场上火头蔓延速度
private double Vf; //火场风速
private double S; //火场面积
private double L; //火场周边长
private double Vs; //火场面积增长速度
private double Vl; //火场周边长增长速度
private double k1; //火速在不同的可燃物类型中的修正系数
private double k2; //火速在不同坡度条件下的修正系数
private double VHRelation;//横纵向比例关系
private double VsAverage;//火场面积平均增长速度
private double VlAverage;//火场周边长平均增长速度
public FireField()
{
Vf=2;
k1=1.0;
}
public double getVsAverage() {
return VsAverage;
}
public double getVlAverage() {
return VlAverage;
}
public void countVh(int VfDegree,int grade,int fieldVariety,double time )//风力等级,坡度,火场类型,时间
{
double temp;
switch(VfDegree)//根据风力等级判断火速Vf(m/s)
{
case 1:
Vf=2;
break;
case 2:
Vf=3.6;
break;
case 3:
Vf=5.4;
break;
case 4:
Vf=7.4;
break;
case 5:
Vf=9.8;
break;
case 6:
Vf=12.3;
break;
case 7:
Vf=14.9;
break;
case 8:
Vf=17.7;
break;
case 9:
Vf=20.8;
break;
case 10:
Vf=24.2;
break;
case 11:
Vf=27.8;
break;
case 12:
Vf=29.838;
break;
}
VHRelation=countVHRelation(Vf);
switch(fieldVariety)//根据输入的可燃物类型,判断修正系数k1
{
case 1:
k1=1.0;//草甸
break;
case 2:
k1=0.7;//次生林
break;
case 3:
k1=0.4;//针叶林
break;
}
//根据坡度计算修正系数k2
k2=countK2(grade);
// 根据k1(可燃物类型 1草甸 2次生林 3针叶林)
//和 根据k2 (火速在不同坡度条件下的修正系数 -42°~42°)
//和 Vf(风在不同风力等级下的风传播速度)m/s
// 计算火头传播速度(Vh) m/s
Vh=k1*k2*14.1895*Math.exp(0.1547*Vf);
temp=Math.sqrt(1/(VHRelation*VHRelation)+4);
S=( (Math.PI/2)*(1/(VHRelation*VHRelation))+(4/3)*(1/VHRelation) )*(Vh*time*time);
L=( (Math.PI/VHRelation)+temp+1/(VHRelation*VHRelation)*Math.log(1/VHRelation)*(2+temp) )*Vh*time;
Vs=(Math.PI/(VHRelation*VHRelation)+(8/3)/VHRelation)*Vh*Vh*time;
VsAverage=Vs/2;
Vl=(Math.log(1/VHRelation)+temp+1/(VHRelation*VHRelation)*Math.log(1/VHRelation)*(2+temp))*Vh;
VlAverage=Vl;
}
public double getVh() {
return Vh;
}
public double getVf() {
return Vf;
}
public double getS() {
return S;
}
public double getL() {
return L;
}
public double getVs() {
return Vs;
}
public double getVl() {
return Vl;
}
public double getK1() {
return k1;
}
public double getK2() {
return k2;
}
public double getVHRelation() {
return VHRelation;
}
public double countK2(int grade)
{
double K2;
if(grade>=-42&&grade<=-38)
k2=0.07;
else if(grade>=-37&&grade<=-33)
k2=0.13;
else if(grade>=-32&&grade<=-28)
k2=0.21;
else if(grade>=-27&&grade<=-23)
k2=0.32;
else if(grade>=-22&&grade<=-18)
k2=0.46;
else if(grade>=-17&&grade<=-13)
k2=0.63;
else if(grade>=-12&&grade<=-8)
k2=0.83;
else if(grade>=-7&&grade<=-3)
k2=0.90;
else if(grade>=-2&&grade<=2)
k2=1.00;
else if(grade>=3&&grade<=7)
k2=1.20;
else if(grade>=8&&grade<=12)
k2=1.60;
else if(grade>=13&&grade<=17)
k2=2.10;
else if(grade>=18&&grade<=22)
k2=2.9;
else if(grade>=23&&grade<=27)
k2=4.10;
else if(grade>=28&&grade<=32)
k2=6.20;
else if(grade>=33&&grade<=37)
k2=10.10;
else if(grade>=38&&grade<=42)
k2=17.50;
K2=k2;
return K2;
}
public double countVHRelation(double vf)
{
double VH;
if(vf==0)
VHRelation=1;
else if(vf>=0.1&&vf<=2.8)
VHRelation=1.2;
else if(vf>=2.9&&vf<=5.6)
VHRelation=1.5;
else if(vf>=5.7&&vf<=8.4)
VHRelation=2.2;
else if(vf>=8.5&&vf<=11.2)
VHRelation=3.3;
else if(vf>=11.3&&vf<=14)
VHRelation=5;
else if(vf>=14.1)
VHRelation=7;
VH=VHRelation;
return VH;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -