前提・実現したいこと
python 3.8(spyder)を使って, HITRANから、CO₂の吸光度を解析したりしてます。
まず、今私ができることは温度と気圧を設定して、それを横軸単位cm^-1、縦軸単位Absとして、吸光度のグラフを作成することができます。それとデータをテキストファイルに落とし込む方法です。
実現したいことは、上記の二つの応用で、温度と気圧を反映させて吸光度を、横軸単位cm^-1、縦軸単位AbsでCSVかテキストファイルに落とし込む方法が知りたいです。
気圧、温度を設定して、グラフに吸光度を出すプログラム
import numpy as np from hapi import * import matplotlib.pyplot as plt # パラメータを指定 # --- ここから --- # スペクトルの範囲 spectrum_begin = 2280 # cm^-1 spectrum_end = 2400 # HITRAN のパラメータ name = 'CO2' moleculeID = 2 isotopologueID = 1 # 気圧、温度を指定 pressure = 1. # atm temperature = 296. # K # --- ここまで --- db_begin('data') fetch(name, moleculeID, isotopologueID, spectrum_begin, spectrum_end) # 指定した気圧と温度の吸光係数を計算 axis_hitran, value_hitran = absorptionCoefficient_SDVoigt(((moleculeID,isotopologueID),), name, Environment = {'p':pressure,'T':temperature}) # グラフを作成 fig = plt.figure(figsize=(9, 4.5), dpi = 200) ax = fig.add_subplot(111) ax.set_title("Calculated " + str(name) + " absorption coefficient from " + str(spectrum_begin)\ + " to " + str(spectrum_end)) ax.set_xlabel("1/CM") ax.set_ylabel("absorption coefficient") ax.grid(True) ax.set_xlim([spectrum_begin, spectrum_end]) ax.plot(axis_hitran, value_hitran, linewidth = 0.5) # グラフを表示 plt.show()
データをテキストファイルに書き出す方法
import numpy as np from hapi import * # パラメータを指定 # --- ここから --- # スペクトルの範囲 spectrum_begin = 2280 # cm^-1 spectrum_end = 2400 # HITRAN のパラメータ name = 'CO2' moleculeID = 2 isotopologueID = 1 # --- ここまで --- db_begin('data') fetch(name, moleculeID, isotopologueID, spectrum_begin, spectrum_end) file_name = str(name) + '_from_' + str(spectrum_begin) + '_to_'\ + str(spectrum_end) + '.txt' select(name, ParameterNames=('nu','sw','global_upper_quanta', 'global_lower_quanta','local_upper_quanta','local_lower_quanta'), File=file_name)
試したこと
file_name = str(name) + '_from_' + str(spectrum_begin) + '_to_'\ + str(spectrum_end) + '.txt' select(name, ParameterNames=('nu','sw','global_upper_quanta', 'global_lower_quanta','local_upper_quanta','local_lower_quanta'), File=file_name)
この部分をそのまま(# 指定した気圧と温度の吸光係数を計算)の下に書き込んでみました。
プログラムは動きましたが、テキストファイルに書き出された内容が温度、気圧を変えても吸光度が変わっていないことに気づきました。selectの()内がデータを書き出す関数なのですが、()内があまり理解が追い付いていないです。
補足情報(FW/ツールのバージョンなど)
pythonはspyderを使用しています。
私はpython解析をHITARANの公式サイトにあるhapi manual.pdfを読みながらしているのですが、英語マニュアルでわかりづらいかもしれません。hapi manual.pdfは公式サイトのHITRANOnlineのdata accessのHAPIというところにあります。
HAPIをpythonで使うには、hapi.py V.1.1.1.0をダウンロードする必要があります。
デスクトップにpythonのファイルを作ってそこにダウンロードしたhapi.py V.1.1.1.0を格納してます
テキストファイルに落とし込めたらこのような感じになります。
2280.009211 2.330E-30 1 0 0 12 0 2 2 01 R 2e 2280.013257 4.142E-25 1 3 3 12 1 3 3 02 P 13e 2280.014551 4.450E-30 1 3 3 21 1 3 3 11 R 22e 2280.024854 1.129E-27 2 3 3 13 2 3 3 03 R 13e 2280.031945 2.749E-30 0 3 3 21 0 3 3 11 Q 47f 2280.041242 4.648E-28 2 2 2 12 2 2 2 02 Q 13f 2280.052359 4.611E-29 3 2 2 14 3 2 2 04 R 27f 2280.062031 1.306E-30 0 4 4 11 0 4 4 01 Q 80e 2280.062158 1.540E-30 0 3 3 11 1 1 1 01 R 64f 2280.068090 3.299E-28 2 2 2 13 2 2 2 03 Q 23f
吸光度をグラフに表示するプログラムは、上図は気圧と温度を1atmと296K、下図は10atmと296Kのグラフを試しに作成してみましたので、参考に貼っておきます。
どうかよろしくお願いします
回答1件
あなたの回答
tips
プレビュー