⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 firefield.java

📁 纯java实现的火场面积的计算
💻 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 + -