?? 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 + -