Function | // RMP Reference Tables
$T = array(
// Table 28: Rural, D stability, 3.0 m/s (mile)
'28' => array(
'.', '.', '.', '.', '.', '.', '.', '.', '.',
0.1, 0.1, '.', '.', '.', '.', '.', '.', '.',
0.1, 0.1, 0.1, '.', '.', '.', '.', '.', '.',
0.1, 0.1, 0.1, 0.1, '.', '.', '.', '.', '.',
0.1, 0.1, 0.1, 0.1, 0.1, 0.1, '.', '.', '.',
0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, '.', '.',
0.2, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, '.',
0.2, 0.2, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1
),
// Table 29: Urban, D stability, 3.0 m/s (mile)
'29' => array(
'.', '.', '.', '.',
0.1, 0.1, '.', '.',
0.1, 0.1, 0.1, '.'
)
);
// Dense gas lower flammability limits (mg/L)
$P = array(
'28' => array(27, 30, 35, 40, 45, 50, 60, 70, 100),
'29' => array(27, 30, 35, 40)
);
$p = $P[[RMP_RT]];
// Dense gas release rates (lbs/min)
$R = array(
'28' => array(1500, 2000, 2500, 3000, 4000, 5000, 7500, 10000),
'29' => array(5000, 7500, 10000)
);
$r = $R[[RMP_RT]];
// Calculate LFL in mg/L
$lfl = [LFL:%v] * [MW:g/mol] / 2.45;
// Find endpoint index
for ($i = 0, $n = count($p); $i < $n; $i++) {
if ($p[$i] > $lfl) break;
}
if ($i == $n) {
$i = $n - 1;
}
else if ($i > 0 && $p[$i] - $lfl >= $lfl - $p[$i - 1]) {
$i--;
}
// Find release rate index
for ($j = 0, $m = count($r); $j < $m; $j++) {
if ($r[$j] > [qgr:lb/min]) break;
}
if ($j == $m) {
$j = $m - 1;
$i = 0;
}
else if ($j > 0 && $r[$j] - [qgr:lb/min] > [qgr:lb/min] - $r[$j - 1]) {
$j--;
}
// Find endpoint distance
$d = $T[[RMP_RT]][$j * $n + $i];
if ($d == '.') return '<0.1';
if ($d == '*') return '>25.0';
return $d;
|
---|