정보
-
업무명 : 쉘 스크립트 복사 전달 모수화 모델의 투과율 계산을 위한 온도보정 계수 산출
-
작성자 : 이상호
-
작성일 : 2019-08-25
-
설 명 :
-
수정이력 :
내용
[특징]
-
지구 대기에서의 복사 과정을 모수화하기 위하여 개발되고 있는 모델의 투과율을 개선하기 위한 프로그램
-
투과율의 경우 대기 중 기체마다 연직 분포가 다르며 기층마다의 기압과 온도에 따라서도 흡수량이 달라지기 때문에 모수화 모델에서 투과율을 개선하기 위해서는 입력되는 기체에 따라 기압과 온도 보정 필요
-
따라서 투과율을 개선하기 위해 최신 HITRAN(High resolution transmission molecular absorption database) 자료를 이용하여 얻어진 200 K, 250 K, 300 K에서의 temperature scaling factor를 이용한 온도보정 계수를 산출
[기능]
-
선형 상세 모델 (Line By Line)에 각 기체별 (H2O, CO2,)로 HITRAN 자료를 입력하여 계산되어진 temperature scaling factor(f)를 이용하여 다음과 같은 수식을 통해 온도보정 계수인 와 를 계산
-
식 에서 는 200, 250, 300 K에 해당하는 온도이며 GNUplot을 이용하여 와 를 계산
-
또한 기존 모수화 모델에서 사용되고 있는 , 와 비교하기 쉽게 gif 파일로 그림을 표출하게 된다.
[사용법]
-
각 기체마다의 개선 전/후 입력 자료 (OLD.dat, NEW.dat)와 실행 프로그램인 Regression_coefficient.csh를 같은 디렉터리에 저장
-
실행 프로그램은 상단 설정에서 N=1(H2O), N=2(CO2)에 따라 변경할 수 있고, 지금은 H2O, CO2을 모두 실행
-
소스 코드를 실행 (csh Regression_coefficient.csh)
-
개선 전/후 자료 (OLD.out, NEW.out)가 생성되고 여기서 개선 전 자료의 2열은 의 회귀계수, 3열은 의 회귀계수
-
NEW.out, OLD.out의 결과는 프로그램을 통하여 그림(H2O.gif, CO2..gif)으로 표출되며 개선 전/후를 확인
[사용 OS]
-
Linux
[사용 언어]
-
ShellScript (csh)
-
Gnuplot
소스 코드
#!/bin/csh | |
#****************** Option ************************* | |
foreach N ( 1 2 ) #* | |
# #* | |
# H2O = 1 #* | |
# CO2 = 2 #* | |
#******************* Result ************************ | |
# OLD.dat NEW.dat * | |
# Alpha_old Beta_old Alpha_new Alpha_new * | |
#***************************************************** | |
set NAME = ( H2O CO2 ) | |
set H2O = ( 1 2 3 4 5 6 7 8 9 10 ) | |
set CO2 = ( 1 2 3 4 5 ) | |
rm -f ${NAME[$N]}_old.out ${NAME[$N]}_new.out | |
foreach NUM ( `eval echo \${$NAME[$N]} `) | |
set NUM2 = `echo 1 + $NUM | bc` | |
#************************ OLD ***************************************** | |
rm -f fit.log | |
gnuplot << EOF | |
set terminal post enhanced color font "Time-Roman, 18" background rgb "white" | |
a = 1 ; b = 1 | |
f(x) = 1.0 + (a*(x-250.0)) + (b*((x-250.0)**2.0)) | |
fit f(x) "${NAME[$N]}_OLD.dat" u 1:${NUM2} via a, b | |
EOF | |
set Alpha = `sed -n '30p' < fit.log | awk '{print $3}'` | |
set Beta = `sed -n '31p' < fit.log | awk '{print $3}'` | |
echo $NUM $Alpha $Beta > fort.1 | |
cat fort.1 >> ${NAME[$N]}_old.out | |
#************************ NEW ***************************************** | |
rm -f fit.log | |
gnuplot << EOF | |
set terminal post enhanced color font "Time-Roman, 18" background rgb "white" | |
a = 1 ; b = 1 | |
f(x) = 1.0 + (a*(x-250.0)) + (b*((x-250.0)**2.0)) | |
fit f(x) "${NAME[$N]}_NEW.dat" u 1:${NUM2} via a, b | |
EOF | |
set Alpha2 = `sed -n '30p' < fit.log | awk '{print $3}'` | |
set Beta2 = `sed -n '31p' < fit.log | awk '{print $3}'` | |
echo $NUM $Alpha2 $Beta2 > fort.1 | |
cat fort.1 >> ${NAME[$N]}_new.out | |
end | |
#************************ Graph ***************************************** | |
gnuplot << EOF | |
set terminal post enhanced color font "Time-Roman, 18" background rgb "white" | |
set output "Total.gif" | |
set xtic 1 | |
set format y "%.1t x 10^{%T}" | |
set multiplot | |
set size 1, 0.5 | |
set origin 0, 0.5 | |
set title "Regression coefficient of temperature scaling factor" | |
set title font "bold, 24" textcolor rgb "black" | |
plot "${NAME[$N]}_old.out" u 1:2 w l lc "red" t "Alpha_{old}" ,\ | |
"${NAME[$N]}_new.out" u 1:2 w l lc "blue" t "Alpha_{new}" | |
set size 1, 0.5 | |
set origin 0, 0 | |
set notitle | |
set xlabel "Band" | |
set xlabel font "bold, 18" textcolor rgb "black" | |
plot "${NAME[$N]}_old.out" u 1:3 w l lc "red" t "Beta_{old}" ,\ | |
"${NAME[$N]}_new.out" u 1:3 w l lc "blue" t "Beta_{new}" | |
unset multiplot | |
quit | |
EOF | |
rm -f fort.1 fit.log | |
mogrify -rotate 90 Total.gif | |
#display Total.gif | |
mv -f Total.gif ${NAME[$N]}.gif | |
end |
결과
-
H2O 결과

-
CO2 결과

참고 문헌
[논문]
- 없음
[보고서]
- 없음
[URL]
- 없음
문의사항
[기상학/프로그래밍 언어]
- sangho.lee.1990@gmail.com
[해양학/천문학/빅데이터]
- saimang0804@gmail.com
'프로그래밍 언어 > Shell Script' 카테고리의 다른 글
[ShellScript] 쉘 스크립트 sed 문자열 치환 시 "echo" 대신 "Here String (<<<)" 사용 방법 (2) | 2020.01.19 |
---|---|
[Shell Script] 쉘 스크립트 템플릿 파일에서 변수 확장 방법 (0) | 2020.01.19 |
[Shell Script] 쉘 스크립트 기초 (0) | 2019.08.28 |
[Shell Script] 쉘 스크립트 분광반응함수를 이용한 각 채널별 파장 및 파수에 따른 반응도 특성 분석 (0) | 2019.08.25 |
[Shell Script] 쉘 스크립트 그누플롯 (Gnuplot) stats 결과를 Fortran/Shell Script으로 읽기 (0) | 2019.08.25 |