• 大小: 2KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-05-10
  • 语言: Java
  • 标签: 大气  模型  算法  

资源简介

大气模型算法,气体污染扩散模型,用java编写,需要mapinfo支持

资源截图

代码片段和文件信息

package com;

import java.util.ArrayList;
import java.util.List;

import com.mapinfo.mapj.MapJ;
import com.mapinfo.util.DoublePoint;

public class AirDensity
{
    public double Q ;
    public double Pai = Math.PI;
    public double Gy ;
    public double Gz ;
    public double AirSpeed ;
    public double Dest;
public double  AirAngle ; 
    
    public double X ;
    public double Y ;
    public double Z = 0;//;

    /**
     * @param q 单位排放量
     * @param airSpeed 风速
     * @param x 横坐标最大长度
     * @param y 纵坐标最大长度
     * @param airAngle 风向
     */
    public AirDensity(double q   double airSpeed double x double yint airAngle)
    {
        Q = q;
        Dest=Math.sqrt(X * X + Y * Y);
        AirSpeed = airSpeed;
        AirAngle=airAngle*(Math.PI/180); //要转换成弧度
        X = x;
        Y = y;
    }

    
  /**计算污染源浓度
 * @return 浓度
 */
public double CalDensity()
  {
      Gy = y1()*Math.pow(Xa1()) ;
      Gz = y2() * Math.pow(X a2());

      double density = Q * (1/(2 * Pai * AirSpeed*Gy*Gz))*Math.exp(-(Y*Y)/(2*(Gy*Gy)))*Math.exp(-0/(2*(Gz*Gz)));

      return density;
  }

  public double a1()
  {
     
          if (0 <= Dest && Dest <= 1000)
              return 0.926849;
          if ( Dest >1000)
              return 0.886940;

          return 0;
       
  }
  public double y1()
  {
      
          if (0 <= Dest && Dest <= 1000)
              return 0.143940;
          if (Dest > 1000)
              return 0.189396;

          return 0;
      
  }

  public double a2()
  {
      
          if (0 <= Dest && Dest <= 2000)
              return 0.838628;
          if (2000 < Dest && Dest <= 10000)
              return 0.756410;
          if (10000 < Dest )
              return 0.815575;
          return 0;
      
  }
  public double y2()
  {
      
          if (0 <= Dest && Dest <= 2000)
              return 0.126152;
          if (2000 < Dest && Dest <= 10000)
              return 0.235667;
          if (10000 < Dest)
              return 0.136659;
          return 0;
       
  }
  
  
  
  /**根据x坐标和浓度计算y坐标
 * @param x 横坐标
 * @param density
 * @return
 */
public double CalYbyX(double xdouble density)
  {
  AirDensity _Density=this;//new AirDensity(00000);
  //_Density.Dest=x;
  double _a1=_Density.a1();
  double _y1=_Density.y1();
  double _a2=_Density.a2();
  double _y2=_Density.y2();
  
     double _Gy = _y1*Math.pow(x_a1) ;
     double _Gz = _y2 * Math.pow(x _a2);
    //  double density = Q * (1/(2 * Pai * AirSpeed*Gy*Gz))*Math.exp(-(Y*Y)/(2*(Gy*Gy)))*Math.exp(-0/(2*(Gz*Gz)));
     
     double yy=density/Q;
     yy=yy*(2*Math.PI*AirSpeed*_Gy*_Gz);
     yy= Math.log(yy)/Math.log(Math.E) ;
     yy=Math.abs( yy*2*(Gy*Gy));
     yy= Math.sqrt(yy);
     
      return yy;
  }

private double miLon=0.0000115721704127876519013676624; //1米的经度
private double miLat=0.0000089932202939481227428007

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件        584  2010-06-04 13:29  DensityPoints.java

     文件       4859  2011-04-20 09:26  AirDensity.java

----------- ---------  ---------- -----  ----

                 5443                    2


评论

共有 条评论