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

📄 atmostrans.h

📁 计算大气光谱透射率和平均透射率
💻 H
📖 第 1 页 / 共 2 页
字号:
//
//AtmosTrans.h
//
#include<math.h>
#define PI 3.1415926535
#ifndef ATMOSTRANS_H
#define ATMOSTRANS_H
class AtmosTrans//大气透射率类
{
public:
	//根据大气温度temperature(摄氏度)返回它所对应的空气相对湿度100%的每公里的可凝结水毫米数(mm/km)
	//在表m_dW0_Table中的位置(数组下标)。
	//(注:当温度大于49摄氏度或小于-49摄氏度时,按49摄氏度和-49摄氏度处理)
    int FindOrderInW0Table(int temperature);
	
	//根据大气温度temperature(摄氏度)返回它所对应的空气相对湿度100%的每公里的可凝结水毫米数(mm/km)
	//(注:内部调用int FindOrderInW0Table(int temperature))
	double GetW0(int temperature);
	
	//根据数组(海平面上水平路程水蒸气和二氧化碳的光谱透射率表)的列标line,
	//返回对应的可凝结水毫米数(mm)或路程(km)
	double GetWOrDistanceFromLine(int line);

    
	
	
	/*3-5um的光谱透射率函数*/

	//根据波长wavelength(um)和可凝结水毫米数(mm)(或路程(km))wOrdistance,在3-5um的海平面上水平路程水蒸气的光谱透射率表
	//或3-5um的海平面上水平路程二氧化碳的光谱透射率表中找到对应的光谱透射率在表中的位置(数组下标:row为行标;line1,line2为列标)
	//(注:当波长小于3um或大于5um时按3um和5um处理,当可凝结水毫米数(或路程)小于0时,按0处理,大于1000时,line1返回12,line2返回13,
	//为线性差值求透射率作准备。当可凝结水毫米数(或路程)在表的列标中有确切的值与之对应,则line1=line2返回确切的列标,
	//若可凝结水毫米数(或路程)在表的列标中没有确切的值与之对应,而是落在某两个列标之间,则line1, line2分别返回这两个列标,
	//为线性差值求透射率作准备。)
	void FindOrderInTable1(int &row, int &line1, int &line2, double wavelength, double wOrdistance);

	//根据波长wavelength(um)和可凝结水毫米数w(mm),返回在3-5um的海平面上水平路程水蒸气的光谱透射率表中对应的光谱透射率
	//(注:内部调用void FindOrderInTable1(),在void FindOrderInTable1()中对超出范围的波长和可凝结水毫米数进行了处理)
	double GetVaporSpectrumTransInTable1(double wavelength, double w);

	//根据波长wavelength(um)和路程distance(km),返回在3-5um的海平面上水平路程二氧化碳的光谱透射率表中对应的光谱透射率
	//(注:内部调用void FindOrderInTable1(),在void FindOrderInTable1()中对超出范围的波长和路程进行了处理)
	double GetCO2SpectrumTransInTable1(double wavelength, double distance);
	
	//根据波长wavelength(um)、(所在海拔高度上的)大气温度temperature(摄氏度)、(所在海拔高度上的)相对湿度Hr(百分数)、海拔高度height(km)、
	//(所在海拔高度上的)水平传输距离distance(km),返回3-5um波段范围所在海拔高度水平路径的水蒸气的光谱透射率
	//(注:此函数没有对(所在海拔高度上的)相对湿度Hr和(所在海拔高度上的)水平传输距离distance(km)的取值范围限制
	//调用时要限制这两个参数的取值的有效。海拔高度height在海平面上取正,在海平面下取负)
    double GetVaporSpectrumTransOfHorizonInAnyHeightFrom3To5(double wavelength, int temperature, double Hr,
		                                             double height, double distance);
	
	//根据波长wavelength(um)、海拔高度height(km)、(所在海拔高度上的)水平传输距离distance(km),返回3-5um波段范围所在海拔高度水平路径的
	//二氧化碳的光谱透射率
	//(注:此函数没有对(所在海拔高度上的)水平传输距离distance(km)的取值范围限制,海拔高度height在海平面上取正,在海平面下取负)
	double GetCO2SpectrumTransOfHorizonInAnyHeightFrom3To5(double wavelength, double height, 
		                                             double distance);
	
	//根据波长wavelength(um)、(所在海拔高度height上的)大气温度temperature(摄氏度)、(所在海拔高度height上的)相对湿度Hr(百分数)、
	//以所在海拔高度height为原点的斜传输路径的起点高度 height1、终点高度height2,
	//所在海拔高度height处的水平地面法线与辐射传输路径的夹角r(度),
	//返回3-5um波段范围斜传输路径的水蒸气的光谱透射率
	//(注:海拔高度height在海平面上取正,在海平面下取负。起点高度 height1、终点高度height2都是相对海拔高度height的相对高度。
	//当起点或终点的实际海拔高度大于所在的海拔高度height时,起点高度 height1、终点高度height2取正值;当起点或终点的实际海拔高度
	//小于所在的海拔高度height时,起点高度 height1、终点高度height2取负值。
	//所在海拔高度height处的水平地面法线取指向天空方向为正方向,夹角r取值范围0-180。
	//此函数没有对(所在海拔高度上的)相对湿度Hr的取值范围限制,此函数调用必须保证传输路径倾斜即height1!=height2且r!=90)
	double GetVaporSpectrumTransOfInclineInAnyHeightFrom3To5(double wavelength, int temperature, double Hr,
		                                             double height, double height1, double height2, double r);

	//根据波长wavelength(um)、海拔高度height(km)、以所在海拔高度height为原点的斜传输路径的起点高度 height1、终点高度height2,
	//所在海拔高度height处的水平地面法线与辐射传输路径的夹角r(度),
	//返回3-5um波段范围斜传输路径的二氧化碳的光谱透射率
	//(注:海拔高度height在海平面上取正,在海平面下取负。起点高度 height1、终点高度height2都是相对海拔高度height的相对高度。
	//当起点或终点的实际海拔高度大于所在的海拔高度height时,起点高度 height1、终点高度height2取正值;当起点或终点的实际海拔高度
	//小于所在的海拔高度height时,起点高度 height1、终点高度height2取负值。
	//所在海拔高度height处的水平地面法线取指向天空方向为正方向,夹角r取值范围0-180。
	//此函数调用必须保证传输路径倾斜即height1!=height2且r!=90)
	double GetCO2SpectrumTransOfInclineInAnyHeightFrom3To5(double wavelength, double height, double height1, 
		                                             double height2, double r);

    
	
	
	/*8-14um的光谱透射率函数*/
    
    //根据波长wavelength(um)和可凝结水毫米数(mm)(或路程(km))wOrdistance,在8-14um的海平面上水平路程水蒸气的光谱透射率表
	//或8-14um的海平面上水平路程二氧化碳的光谱透射率表中找到对应的光谱透射率在表中的位置(数组下标:row为行标;line1,line2为列标)
	//(注:当波长小于8um或大于14um时按8um和14um处理,当可凝结水毫米数(或路程)小于0时,按0处理,大于1000时,line1返回12,line2返回13,
	//为线性差值求透射率作准备。当可凝结水毫米数(或路程)在表的列标中有确切的值与之对应,则line1=line2返回确切的列标,
	//若可凝结水毫米数(或路程)在表的列标中没有确切的值与之对应,而是落在某两个列标之间,则line1, line2分别返回这两个列标,
	//为线性差值求透射率作准备。)
	void FindOrderInTable2(int &row, int &line1, int &line2, double wavelength, double wOrdistance);
   
	//根据波长wavelength(um)和可凝结水毫米数w(mm),返回在8-14um的海平面上水平路程水蒸气的光谱透射率表中对应的光谱透射率
	//(注:内部调用void FindOrderInTable2(),在void FindOrderInTable2()中对超出范围的波长和可凝结水毫米数进行了处理)
	double GetVaporSpectrumTransInTable2(double wavelength, double w);
    
    //根据波长wavelength(um)和路程distance(km),返回在8-14um的海平面上水平路程二氧化碳的光谱透射率表中对应的光谱透射率
	//(注:内部调用void FindOrderInTable2(),在void FindOrderInTable2()中对超出范围的波长和路程进行了处理)
    double GetCO2SpectrumTransInTable2(double wavelength, double distance);
	
	//根据波长wavelength(um)、(所在海拔高度上的)大气温度temperature(摄氏度)、(所在海拔高度上的)相对湿度Hr(百分数)、海拔高度height(km)、
	//(所在海拔高度上的)水平传输距离distance(km),返回8-14um波段范围所在海拔高度水平路径的水蒸气的光谱透射率
	//(注:此函数没有对(所在海拔高度上的)相对湿度Hr和(所在海拔高度上的)水平传输距离distance(km)的取值范围限制
	//调用时要限制这两个参数的取值的有效。海拔高度height在海平面上取正,在海平面下取负)
    double GetVaporSpectrumTransOfHorizonInAnyHeightFrom8To14(double wavelength, int temperature, double Hr,
		                                             double height, double distance);
	
	//根据波长wavelength(um)、海拔高度height(km)、(所在海拔高度上的)水平传输距离distance(km),返回8-14um波段范围所在海拔高度水平路径的
	//二氧化碳的光谱透射率
	//(注:此函数没有对(所在海拔高度上的)水平传输距离distance(km)的取值范围限制,海拔高度height在海平面上取正,在海平面下取负)
	double GetCO2SpectrumTransOfHorizonInAnyHeightFrom8To14(double wavelength, double height, 
		                                             double distance);
	
	//根据波长wavelength(um)、(所在海拔高度height上的)大气温度temperature(摄氏度)、(所在海拔高度height上的)相对湿度Hr(百分数)、
	//以所在海拔高度height为原点的斜传输路径的起点高度 height1、终点高度height2,
	//所在海拔高度height处的水平地面法线与辐射传输路径的夹角r(度),
	//返回8-14um波段范围斜传输路径的水蒸气的光谱透射率
	//(注:海拔高度height在海平面上取正,在海平面下取负。起点高度 height1、终点高度height2都是相对海拔高度height的相对高度。
	//当起点或终点的实际海拔高度大于所在的海拔高度height时,起点高度 height1、终点高度height2取正值;当起点或终点的实际海拔高度
	//小于所在的海拔高度height时,起点高度 height1、终点高度height2取负值。
	//所在海拔高度height处的水平地面法线取指向天空方向为正方向,夹角r取值范围0-180。
	//此函数没有对(所在海拔高度上的)相对湿度Hr的取值范围限制,此函数调用必须保证传输路径倾斜即height1!=height2且r!=90)
	double GetVaporSpectrumTransOfInclineInAnyHeightFrom8To14(double wavelength, int temperature, double Hr,
		                                             double height, double height1, double height2, double r);
	
	//根据波长wavelength(um)、海拔高度height(km)、以所在海拔高度height为原点的斜传输路径的起点高度 height1、终点高度height2,
	//所在海拔高度height处的水平地面法线与辐射传输路径的夹角r(度),
	//返回8-14um波段范围斜传输路径的二氧化碳的光谱透射率
	//(注:海拔高度height在海平面上取正,在海平面下取负。起点高度 height1、终点高度height2都是相对海拔高度height的相对高度。
	//当起点或终点的实际海拔高度大于所在的海拔高度height时,起点高度 height1、终点高度height2取正值;当起点或终点的实际海拔高度
	//小于所在的海拔高度height时,起点高度 height1、终点高度height2取负值。
	//所在海拔高度height处的水平地面法线取指向天空方向为正方向,夹角r取值范围0-180。
	//此函数调用必须保证传输路径倾斜即height1!=height2且r!=90)
	double GetCO2SpectrumTransOfInclineInAnyHeightFrom8To14(double wavelength, double height, double height1, 
		                                             double height2, double r);

   
	
	
	/*散射的光谱透射率函数*/
    
	//根据波长wavelength(um),所在海拔高度的气象视程Dv(km),辐射传输的距离distance(km)
	//返回散射造成的所在波长的光谱透射率
	//(注:此函数调用时必须保证波长wavelength>0,气象视程Dv>0,辐射传输的距离distance>=0)
    double GetDispersionSpectrumTrans(double wavelength, double Dv, double distance); 

    
	
	
	/*气象条件(雨、雪)的光谱透射率函数*/

	//根据降雨量Jrain(mm/h)或降雪量Jsnow(mm/h),辐射传输的距离(km)
	//返回降雨或降雪造成的光谱透射率
	//(注:降雨或降雪造成的光谱透射率对波长是非选择性的,
	//这两个函数调用时必须保证降雨量Jrain或降雪量Jsnow大于或等于0,辐射传输的距离distance>=0)
	double GetRainSpectrumTrans(double Jrain, double distance);
	double GetSnowSpectrumTrans(double Jsnow, double distance);

    
	
	
	/*3-5um的平均透射率函数*/

	//根据所求波段的两个端点wavelength1(um)、wavelength2(um),(所在海拔高度上的)大气温度temperature(摄氏度)、
	//(所在海拔高度上的)相对湿度Hr(百分数)、海拔高度height(km)、(所在海拔高度上的)水平传输距离distance(km)
	//返回所在海拔高度水平路径所求波段的水蒸气的平均透射率
	//(注:波段的两个端点wavelength1(um)、wavelength2(um)不分起点和终点即不分大小。
	//海拔高度height在海平面上取正,在海平面下取负。
	//此函数没有对(所在海拔高度上的)相对湿度Hr和(所在海拔高度上的)水平传输距离distance(km)的取值范围限制
	//调用时要限制这两个参数的取值的有效。

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -