|  line  | 
 stmt  | 
 bran  | 
 cond  | 
 sub  | 
 pod  | 
 time  | 
 code  | 
| 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 # Psychrometry.pm  | 
| 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 # Calculate psychrometric measures in moist air  | 
| 
3
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 package Physics::Psychrometry;  | 
| 
4
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5
 | 
1
 | 
 
 | 
 
 | 
  
1
  
 | 
 
 | 
42744
 | 
 use 5.008007;  | 
| 
 
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
6
 | 
    | 
| 
 
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
62
 | 
    | 
| 
6
 | 
1
 | 
 
 | 
 
 | 
  
1
  
 | 
 
 | 
8
 | 
 use strict;  | 
| 
 
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
3
 | 
    | 
| 
 
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
45
 | 
    | 
| 
7
 | 
1
 | 
 
 | 
 
 | 
  
1
  
 | 
 
 | 
8
 | 
 use warnings;  | 
| 
 
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
7
 | 
    | 
| 
 
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
1256
 | 
    | 
| 
8
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 require Exporter;  | 
| 
10
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 our @ISA = qw(Exporter);  | 
| 
12
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
13
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 # Items to export into callers namespace by default. Note: do not export  | 
| 
14
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 # names by default without a very good reason. Use EXPORT_OK instead.  | 
| 
15
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 # Do not simply export all your public functions/methods/constants.  | 
| 
16
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
17
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 # This allows declaration	use Physics::Psychrometry ':all';  | 
| 
18
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 # If you do not need this, moving things directly into @EXPORT or @EXPORT_OK  | 
| 
19
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 # will save memory.  | 
| 
20
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 our %EXPORT_TAGS = ( 'all' => [ qw(  | 
| 
21
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	  | 
| 
22
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ) ] );  | 
| 
23
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
24
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 our @EXPORT_OK = ( @{ $EXPORT_TAGS{'all'} } );  | 
| 
25
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
26
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 our @EXPORT = qw(  | 
| 
27
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	  | 
| 
28
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 );  | 
| 
29
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
30
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 our $VERSION = '1.2';  | 
| 
31
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
32
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 # based on http://www.bae.uky.edu/gates/psych/PTM/dbrh2al.c  | 
| 
33
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #The dry-bulb temperature (C)       =? 24.6  | 
| 
34
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #The relative humidity (%)          =? 68  | 
| 
35
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #The air pressure (kPa)             =? 102  | 
| 
36
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 # e is 2.104209  | 
| 
37
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #The dewpoint temperature (C)       = 18.324036  | 
| 
38
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #The wet-bulb temperature (C)       = 20.326262  | 
| 
39
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #The humidity ratio                 = 0.013101  | 
| 
40
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #The enthalpy (kJ/kg)               = 58.095979  | 
| 
41
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #The vapor pressure (kPa)           = 2.104209  | 
| 
42
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #The degree of saturation (%)       = 67.325951  | 
| 
43
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #The saturated vapor pressure (kPa) = 3.094426  | 
| 
44
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #The specific air volume (m3/kg)    = 0.855627  | 
| 
45
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #The density of moist air (kg/m^3)  = 1.184046  | 
| 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #The saturated humidity ratio       = 0.019460  | 
| 
47
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #The specific humidity (ratio)      = 0.012932  | 
| 
48
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #The absolute humidity (kg/m3)      = 0.015312  | 
| 
49
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
50
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 my $C14	= 6.54;  | 
| 
51
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 my $C15	= 14.526;  | 
| 
52
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 my $C16	= 0.7389;  | 
| 
53
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 my $C17	= 0.09486;  | 
| 
54
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 my $C18	= 0.4569;  | 
| 
55
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
56
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 sub dbdp2wb  | 
| 
57
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
58
 | 
1
 | 
 
 | 
 
 | 
  
1
  
 | 
  
1
  
 | 
632
 | 
     my ($db, $dp, $p) = @_;  | 
| 
59
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
60
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
2
 | 
     my $i = 0;  | 
| 
61
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
5
 | 
     my $e = t2es($dp);  | 
| 
62
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
4
 | 
     my $w = e2w($e, $p);  | 
| 
63
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
14
 | 
     my $wb1 = $dp;  | 
| 
64
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
2
 | 
     my $wb2 = $db;  | 
| 
65
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
4
 | 
     my $twb = $wb1 + ($wb2 - $wb1) / 2;  | 
| 
66
 | 
1
 | 
 
 | 
  
 66
  
 | 
 
 | 
 
 | 
11
 | 
     while ((($wb2 - $wb1) > 0.001) && ($i < 1000))   | 
| 
67
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
68
 | 
13
 | 
 
 | 
 
 | 
 
 | 
 
 | 
25
 | 
 	my $tw = dbwb2w($db, $twb, $p);  | 
| 
69
 | 
13
 | 
  
100
  
 | 
 
 | 
 
 | 
 
 | 
27
 | 
 	if($tw > $w)   | 
| 
70
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	{		# /* overestimate the wetblb temperature */  | 
| 
71
 | 
7
 | 
 
 | 
 
 | 
 
 | 
 
 | 
6
 | 
 	    $wb2 = $twb; #		/* the wb should be between wb1,twb */  | 
| 
72
 | 
7
 | 
 
 | 
 
 | 
 
 | 
 
 | 
33
 | 
 	    $twb = $wb1 + ($wb2 - $wb1) / 2;  | 
| 
73
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
74
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	else   | 
| 
75
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	{		#	/* underestimate the wb */  | 
| 
76
 | 
6
 | 
 
 | 
 
 | 
 
 | 
 
 | 
8
 | 
 	    $wb1 = $twb;  | 
| 
77
 | 
6
 | 
 
 | 
 
 | 
 
 | 
 
 | 
26
 | 
 	    $twb = $wb1 + ($wb2 - $wb1) / 2;  | 
| 
78
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}   | 
| 
79
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
80
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
2
 | 
     my $wb = $twb;  | 
| 
81
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
4
 | 
     return $wb;  | 
| 
82
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }  | 
| 
83
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
84
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 sub dbw2h  | 
| 
85
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
86
 | 
1
 | 
 
 | 
 
 | 
  
1
  
 | 
  
1
  
 | 
519
 | 
     my ($db, $w) = @_;  | 
| 
87
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
7
 | 
     return 1.006 * $db + $w * (2501.0 + 1.805 * $db);  | 
| 
88
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }  | 
| 
89
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
90
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 sub e2w  | 
| 
91
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
92
 | 
16
 | 
 
 | 
 
 | 
  
16
  
 | 
  
1
  
 | 
581
 | 
     my ($e, $p) = @_;  | 
| 
93
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
       | 
| 
94
 | 
16
 | 
 
 | 
 
 | 
 
 | 
 
 | 
33
 | 
     return 0.62198 * $e / ($p - $e);  | 
| 
95
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }  | 
| 
96
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
97
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 sub dbwb2w  | 
| 
98
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
99
 | 
13
 | 
 
 | 
 
 | 
  
13
  
 | 
  
0
  
 | 
15
 | 
     my ($db, $wb, $p) = @_;  | 
| 
100
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
101
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
       | 
| 
102
 | 
13
 | 
 
 | 
 
 | 
 
 | 
 
 | 
66
 | 
     my $estar = t2es($wb);  | 
| 
103
 | 
13
 | 
 
 | 
 
 | 
 
 | 
 
 | 
24
 | 
     my $wstar = e2w($estar, $p);  | 
| 
104
 | 
13
 | 
 
 | 
 
 | 
 
 | 
 
 | 
23
 | 
     my $t1 = (2501 - 2.381 * $wb) * $wstar -($db - $wb);  | 
| 
105
 | 
13
 | 
 
 | 
 
 | 
 
 | 
 
 | 
19
 | 
     my $t2 = 2501 + 1.805 * $db - 4.186 * $wb;  | 
| 
106
 | 
13
 | 
 
 | 
 
 | 
 
 | 
 
 | 
20
 | 
     return $t1 / $t2;  | 
| 
107
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }  | 
| 
108
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
109
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 sub dbrh2e  | 
| 
110
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
111
 | 
1
 | 
 
 | 
 
 | 
  
1
  
 | 
  
1
  
 | 
11
 | 
     my ($db, $rh) = @_;  | 
| 
112
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
113
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
6
 | 
     return t2es($db) * $rh;  | 
| 
114
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }  | 
| 
115
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
116
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 sub rhws2ds  | 
| 
117
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
118
 | 
1
 | 
 
 | 
 
 | 
  
1
  
 | 
  
1
  
 | 
837
 | 
     my ($rh, $ws) = @_;  | 
| 
119
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
120
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
34
 | 
     return $rh / (1 + (1 - $rh) * $ws / 0.62198);  | 
| 
121
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }  | 
| 
122
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
123
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 sub t2es  | 
| 
124
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
125
 | 
16
 | 
 
 | 
 
 | 
  
16
  
 | 
  
1
  
 | 
555
 | 
     my ($t) = @_;  | 
| 
126
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
127
 | 
16
 | 
 
 | 
 
 | 
 
 | 
 
 | 
19
 | 
     $t += 273.15;  | 
| 
128
 | 
16
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
30
 | 
     if($t > 273.15)  | 
| 
129
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
130
 | 
16
 | 
 
 | 
 
 | 
 
 | 
 
 | 
41
 | 
 	return exp(-5800.2206 / $t + 1.3914993 - .048640239 * $t + (.41764768e-4) * pow($t, 2.0) - (.14452093e-7) * pow($t, 3.0) + 6.5459673 * log($t)) / 1000.0;  | 
| 
131
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
132
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     else  | 
| 
133
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
134
 | 
0
 | 
 
 | 
 
 | 
 
 | 
 
 | 
0
 | 
       return exp(-5674.5359 / $t + 6.3925247 - (.9677843e-2) * $t + (.62215701e-6) * pow($t, 2.0) + (.20747825e-8) * pow($t, 3.0) - (.9484024e-12) * pow($t, 4.0) + 4.1635019 * log($t)) / 1000.0;  | 
| 
135
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
   }  | 
| 
136
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }  | 
| 
137
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
138
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 sub e2dp  | 
| 
139
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
140
 | 
1
 | 
 
 | 
 
 | 
  
1
  
 | 
  
1
  
 | 
1075
 | 
     my ($e) = @_;  | 
| 
141
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
142
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
4
 | 
     my $af = log($e);  | 
| 
143
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
4
 | 
     my $s1 = pow($af, 2.0);  | 
| 
144
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
4
 | 
     my $s2 = pow($af, 3.0);  | 
| 
145
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
4
 | 
     my $s3 = pow($e, 0.1984);  | 
| 
146
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
5
 | 
     my $t1 = $C14 + $C15 * $af + $C16 * $s1 + $C17 * $s2 + $C18 * $s3;  | 
| 
147
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
3
 | 
     my $t2 = 6.09 + 12.608 * $af + 0.4959 * $s1;  | 
| 
148
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
8
 | 
     return $t1 > 0 ? $t1 : $t2;  | 
| 
149
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }  | 
| 
150
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
151
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 sub pow  | 
| 
152
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
153
 | 
35
 | 
 
 | 
 
 | 
  
35
  
 | 
  
0
  
 | 
40
 | 
     my ($n, $p) = @_;  | 
| 
154
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
155
 | 
35
 | 
 
 | 
 
 | 
 
 | 
 
 | 
171
 | 
     return $n ** $p;  | 
| 
156
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }  | 
| 
157
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
158
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 sub dbw2v  | 
| 
159
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
160
 | 
1
 | 
 
 | 
 
 | 
  
1
  
 | 
  
1
  
 | 
537
 | 
     my ($db, $w, $p) = @_;  | 
| 
161
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
162
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
3
 | 
     $db += 273.15;  | 
| 
163
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
6
 | 
     return (287.055 * $db * ( 1 + 1.6078 * $w)) / ($p * 1000.0);  | 
| 
164
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }  | 
| 
165
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
166
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 sub wv2da  | 
| 
167
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
168
 | 
1
 | 
 
 | 
 
 | 
  
1
  
 | 
  
1
  
 | 
605
 | 
     my ($w, $v) = @_;  | 
| 
169
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
170
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
5
 | 
     return (1 + $w) / $v;  | 
| 
171
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }  | 
| 
172
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
173
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 sub es2ws  | 
| 
174
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
175
 | 
1
 | 
 
 | 
 
 | 
  
1
  
 | 
  
1
  
 | 
542
 | 
     my ($es, $p) = @_;  | 
| 
176
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
177
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
3
 | 
     return e2w($es, $p);  | 
| 
178
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }  | 
| 
179
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
180
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 sub w2q  | 
| 
181
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
182
 | 
1
 | 
 
 | 
 
 | 
  
1
  
 | 
  
1
  
 | 
534
 | 
     my ($w) = @_;  | 
| 
183
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
184
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
4
 | 
     return $w / (1 + $w);  | 
| 
185
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }  | 
| 
186
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
187
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 sub wv2X  | 
| 
188
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
189
 | 
1
 | 
 
 | 
 
 | 
  
1
  
 | 
  
1
  
 | 
527
 | 
     my ($w, $v) = @_;  | 
| 
190
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
191
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
4
 | 
     return $w / $v;  | 
| 
192
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }  | 
| 
193
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
194
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 1;  | 
| 
195
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 __END__  |