摘要:使用方法直接从官网上下载导入模块建立文件夹,并指定该文件夹首先,建立文件夹用于本地数据库的存放。数据库的获取直接下载数据库另一种方法是直接下载好数据库中的光谱数据,然后将其手动存放到文件夹中。从数据库下载的数据格式是。
之前我计算高温气体光谱特性是自己写的算法部分,查了好多文献,最后计算的结果也还算比较满意。后来我才发现原来HITRAN官网上已经提供了HAPI,只需要调用HAPI就可以直接计算气体的光谱特性,而无需自己写具体的光谱特性计算方法。
HAPI (HITRAN Application Programming Interface) 是HITRAN online网站(https://hitran.org/)提供的python接口,可以实现远程访问HITRAN数据库,并可以逐行下载、过滤和处理分子和原子上的光谱数据的功能。
from hapi import *
首先,建立文件夹用于本地数据库的存放。例如,文件夹名为data_hitemp。
然后使用下列语句选中该文件夹。
db_begin("data_hitemp")
每次启动Python项目时,都必须显式指定数据库文件夹的名称。
4.1 HITRAN数据库的获取:远程连接HITRAN网站下载
通过fetch()可以从HITRAN online自动下载HITRAN数据库的谱线数据。
fetch(TableName, M, I, numin, numax, ParameterGroups=[], Parameters=[]),其中TableName表示本地存放的文件名;M表示HITRAN上分子的编号,如H2O的编号是1,CO2的编号是2,N2O的编号是4,等等;I表示HITRAN上同位素的编号;numin表示波数下限;numax表示波数上限;例如:
fetch("COC", 2, 1, 2000, 2100)
上面代码表示将波数2000-2100(cm-1)的CO2的光谱数据存放在名为“COC”的文件中。此时可以在data_hitemp文件夹中看到 一个COC.data和一个COC.header文件。
4.2 HITEMP数据库的获取:直接下载HITEMP数据库
另一种方法是直接下载好HITEMP数据库中的光谱数据,然后将其手动存放到data_hitemp文件夹中。从HITEMP数据库下载的数据格式是.par。
在使用下列语句之后
db_begin("data_hitemp")
可以看到,data_hitemp文件夹中的数据格式出现了.header
根据气体的温度,压力,光路长度,可以计算得到如下光谱特性:a)吸收系数(Absorption coefficient);b)光谱吸收率(Absorption spectrum);c)光谱透过率(Transmittance spectrum);d)光谱辐射亮度(Radiance spectrum)。HAPI提供的线形(line shape)包括:Gaussian (Doppler)线形,Lorentzian线形,Voigt线形,Rautian线形,Speed-dependent Voigt线形,speed-dependent Rautian线形以及Hartmann-Tran线形。
5.1 吸收系数
计算吸收系数可以使用下列函数,分别代表不同的线形:
absorptionCoefficient_HTabsorptionCoefficient_VoigtabsorptionCoefficient_LorentzabsorptionCoefficient_DopplerabsorptionCoefficient_SDVoigt
下面以洛伦兹线形为例计算吸收系数:
nu,coef = absorptionCoefficient_Lorentz(SourceTables="02_2000-2125_HITEMP2010",HITRAN_units=False,Diluent={"air":1.0})plot(nu,coef)
其中,nu代表中心波数;coef代表吸收系数;Diluent表示气体混合物的比例,Diluent={"self":A, "air":B, "CO2":C, ...},且满足A+B+C+...=1。其中self用于计算自增宽半宽,air用于计算空气增宽半宽。
数据库里只有空气增宽半宽和自增宽半宽,所以其他组分除了浓度外物质种类没有影响。
#若CO2含量为100%,则设置"self":1,另一个参数设置air=0
#若CO2含量为1%,则设置"self"=0.01,另一个设置为"air"=0.99
此时需要增加下面的代码
coef *= xco2 #xco2代表CO2的含量
#若为纯空气环境,设置"air"=1,即可
HITRAN_units: 如果为True,单位 cm^2/molec ;如果为False, 单位cm-1 。 为了后续计算其他光谱特性如光谱吸收系数,光谱透过率,光谱辐射亮度,必须将 HITRAN_units设为 False。
下左图 是HITRAN_units=True,下右图 是HITRAN_units=False.
完整的absorptionCoefficient_Lorentz参数如下:
absorptionCoefficient_Lorentz(SourceTables, Environment={"T":296.,"p":1.}, OmegaRange, OmegaStep, OmegaWing, IntensityThreshold, OmegaWingHW, GammaL="gamma_air", HITRAN_units, LineShift, File, Format, OmegaGrid, WavenumberRange, WavenumberStep, WavenumberWing, WavenumberWingHW, WavenumberGrid, Diluent={}, EnvDependences)
Environment={"T":296,"p":1},默认温度T=296K,p=1atm,可根据实际温度和压力进行设置;
5.2 光谱吸收率,光谱透过率,光谱辐射亮度
光谱吸收率,光谱透过率,光谱辐射亮度的计算必须设置传输路径长度,默认的长度是1m。光谱吸收率和光谱透过率的默认参数是 Environment={"l": 100.0},路径长度单位是cm。
光谱辐射亮度的默认参数是Environment={"l": 100.0, "T": 296.0},除了路径长度外,还有温度,这里的温度设置必须与之前在absorptionCoefficient设置的温度保持一致。
nu,absorp = absorptionSpectrum(nu,coef)nu,trans = transmittanceSpectrum(nu,coef)nu,radi = radianceSpectrum(nu,coef)
需要注意的是,HAPI用户手册中出现了笔误,默认参数是Environment={"l": 100.0, "T": 296.0}的应该为光谱辐射亮度而非光谱透过率。
计算结果如下:
光谱吸收率:
光谱透过率:
光谱辐射亮度:单位是W/cm^2/sr/cm^(-1)
希望能帮到需要的人,由于我接触HAPI的时间也很短,很多地方的理解可能不到位,希望能和大家交流,促进我们共同进步。
更多关于HAPI的使用方法可以下载用户使用手册。
参考文章:
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/118787.html
摘要:今天的主角是如何搭建一个公众号自动回复功能。对于大网站或者项目来说,找一家如阿里云腾讯云等云服务平台,但对于个人只是想简单的搭建一个公众号管理自动回复功能,终究有些大材小用了结合使用相得映彰,而且可以根据需要升级扩展。 程序员爱炫技,写个公众号文章,都想拿点技术整整【自动回复】;程序员爱偷懒,什么都想做个【自动化】,最好所有事情系统都给做了,点点手指头就能达到目标。 今天的主角是如何搭...
摘要:框架,用官网的简介来说就是是构建应用程序和服务的丰富框架,它使开发人员能够专注于编写可重用的应用程序逻辑,而不是花时间构建基础设施。用自己的话简单来说,就是个类似,之类的服务基础框架。同时全局环境直接获取。 showImg(https://segmentfault.com/img/bVbrV3m?w=572&h=350); hapi框架,用官网的简介来说就是:Hapi是构建应用程序和...
摘要:框架,用官网的简介来说就是是构建应用程序和服务的丰富框架,它使开发人员能够专注于编写可重用的应用程序逻辑,而不是花时间构建基础设施。用自己的话简单来说,就是个类似,之类的服务基础框架。 showImg(https://segmentfault.com/img/bVbrV3m?w=572&h=350); hapi框架,用官网的简介来说就是:Hapi是构建应用程序和服务的丰富框架,它使开...
阅读 1936·2023-04-26 01:41
阅读 2383·2021-11-24 09:39
阅读 1890·2021-11-24 09:38
阅读 1927·2021-11-19 09:40
阅读 3723·2021-11-11 11:02
阅读 3260·2021-10-20 13:48
阅读 3080·2021-10-14 09:43
阅读 4234·2021-09-02 15:11