VaporConditions : Vepor related calculation library / 水蒸気関係の各種計算用ライブラリ Library for Calculate some vapor related values from Temperature, Relative Humidity and Air Pressure 温度、相対湿度、大気圧から水蒸気関係のいくつかの値を計算します。 The formulas are based on 計算式は以下を参考にしています。 http://www.mistral.co.jp/kestrel-japan/MistralHumiRatio.pdf http://www.kanomax.co.jp/img_data/file_731_1417598330.pdf

Dependents:   Condensation_Monitor BLE_Condensation_Monitor

Committer:
takafuminaka
Date:
Thu Apr 30 16:47:28 2015 +0000
Revision:
0:11570780a596
Initiali Release

Who changed what in which revision?

UserRevisionLine numberNew contents of line
takafuminaka 0:11570780a596 1 /**
takafuminaka 0:11570780a596 2 * VaporConditions Vepor related calculation library
takafuminaka 0:11570780a596 3 *
takafuminaka 0:11570780a596 4 * @author Takafumi Naka
takafuminaka 0:11570780a596 5 * @version 1.0
takafuminaka 0:11570780a596 6 * @date 30-Apr-2015
takafuminaka 0:11570780a596 7 *
takafuminaka 0:11570780a596 8 * Library for Calculate some vapor related values from Temperature, Relative Humidity and Air Pressure
takafuminaka 0:11570780a596 9 * The formulas are based on
takafuminaka 0:11570780a596 10 * http://www.mistral.co.jp/kestrel-japan/MistralHumiRatio.pdf
takafuminaka 0:11570780a596 11 * http://www.kanomax.co.jp/img_data/file_731_1417598330.pdf
takafuminaka 0:11570780a596 12 */
takafuminaka 0:11570780a596 13
takafuminaka 0:11570780a596 14 #include "mbed.h"
takafuminaka 0:11570780a596 15 #include "math.h"
takafuminaka 0:11570780a596 16 #include "VaporCondition.h"
takafuminaka 0:11570780a596 17
takafuminaka 0:11570780a596 18 // Saturated Vapor Pressure (hPa) //
takafuminaka 0:11570780a596 19 float VaporCondition::Pvsat()
takafuminaka 0:11570780a596 20 {
takafuminaka 0:11570780a596 21 return (6.11*pow(10,7.5*t/(t+237.3)));
takafuminaka 0:11570780a596 22 }
takafuminaka 0:11570780a596 23
takafuminaka 0:11570780a596 24 // Vapor Pressure (hPa) //
takafuminaka 0:11570780a596 25 float VaporCondition::Pv()
takafuminaka 0:11570780a596 26 {
takafuminaka 0:11570780a596 27 return (Pvsat()*h/100.);
takafuminaka 0:11570780a596 28 }
takafuminaka 0:11570780a596 29
takafuminaka 0:11570780a596 30 // Humidity Ratio (g/kg) //
takafuminaka 0:11570780a596 31 float VaporCondition::Rh()
takafuminaka 0:11570780a596 32 {
takafuminaka 0:11570780a596 33 return (6.22*Pv()*100/p);
takafuminaka 0:11570780a596 34 }
takafuminaka 0:11570780a596 35
takafuminaka 0:11570780a596 36 // Dew Point Temperature //
takafuminaka 0:11570780a596 37 float VaporCondition::Tdp()
takafuminaka 0:11570780a596 38 {
takafuminaka 0:11570780a596 39 float y,y2,y3,y4;
takafuminaka 0:11570780a596 40 y = log(Pv()*100/611.213);
takafuminaka 0:11570780a596 41 y2 = y*y;
takafuminaka 0:11570780a596 42 y3 = y2*y;
takafuminaka 0:11570780a596 43 y4 = y2*y2;
takafuminaka 0:11570780a596 44 if ( y>=0 )
takafuminaka 0:11570780a596 45 {
takafuminaka 0:11570780a596 46 return (13.715 * y+ 8.4262e-1 * y2 +1.9048e-2 * y3 +7.8158e-3 * y4);
takafuminaka 0:11570780a596 47 }
takafuminaka 0:11570780a596 48 else
takafuminaka 0:11570780a596 49 {
takafuminaka 0:11570780a596 50 return (13.7204 * y +7.36631e-1 * y2 +3.32136e-2 * y3 +7.78591e-3 * y4);
takafuminaka 0:11570780a596 51 }
takafuminaka 0:11570780a596 52 }