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
VaporConditon.cpp@0:11570780a596, 2015-04-30 (annotated)
- Committer:
- takafuminaka
- Date:
- Thu Apr 30 16:47:28 2015 +0000
- Revision:
- 0:11570780a596
Initiali Release
Who changed what in which revision?
User | Revision | Line number | New 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 | } |