atmospheric 0.2.2 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.adoc +269 -12
- data/lib/atmospheric/export/hypsometrical_tables.rb +6 -111
- data/lib/atmospheric/export/iso_25331975/group_one.rb +1 -1
- data/lib/atmospheric/export/iso_25331985.rb +136 -0
- data/lib/atmospheric/export/iso_25331997.rb +3 -2
- data/lib/atmospheric/export/iso_25332024.rb +201 -0
- data/lib/atmospheric/export.rb +2 -1
- data/lib/atmospheric/version.rb +1 -1
- data/spec/fixtures/iso-2533-1975-table5.yaml +4064 -4064
- metadata +4 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: bf95b194179f8f4a0842f86dfbd015d592ce5996724ab676e4c7c68ea91cf5ae
|
|
4
|
+
data.tar.gz: 993855f78a4953b7bc4c6086253e6df7c1fccf95168f2c5d8768daa95cc8a2bc
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: b1cbe16fcfe115bb7070bdc1fa9b509a2dcc1c74f2de32637390fbcc64427e045531fba3f52097438ec71f17e61eac9a5a3199a8cd6f61b40e91bb51d8056c3b
|
|
7
|
+
data.tar.gz: 83871c6f2c5dc35dd4399563a4f69dad74e9a477c01af92dddefca66ca6bea8b8ac6562cf0b875ef2bafbc64975a3944b534e721bc3737871b6dfff0b9361ef5
|
data/README.adoc
CHANGED
|
@@ -54,7 +54,7 @@ The available methods are:
|
|
|
54
54
|
|
|
55
55
|
All tables in the 1975 edition are arranged in these steps in meters:
|
|
56
56
|
|
|
57
|
-
.ISO 2533:1975 table range: step 50 from -2k, 100
|
|
57
|
+
.ISO 2533:1975 table range: step 50 from -2k, 100 from 32k, 200 from 51k to 80k
|
|
58
58
|
----
|
|
59
59
|
(-2000..31999).step(50) +
|
|
60
60
|
(32000..50999).step(100) +
|
|
@@ -85,7 +85,7 @@ Provides the following values in addition to geopotential and geometric height:
|
|
|
85
85
|
* `temperature-K`
|
|
86
86
|
* `temperature-C`
|
|
87
87
|
* `pressure-mbar`
|
|
88
|
-
* `pressure-
|
|
88
|
+
* `pressure-mmhg`
|
|
89
89
|
* `density`
|
|
90
90
|
* `acceleration`
|
|
91
91
|
|
|
@@ -159,8 +159,8 @@ Provides:
|
|
|
159
159
|
|
|
160
160
|
[source,ruby]
|
|
161
161
|
----
|
|
162
|
-
Atmospheric::Export::
|
|
163
|
-
Atmospheric::Export::
|
|
162
|
+
Atmospheric::Export::Iso25331985.table_1 #=> Hash
|
|
163
|
+
Atmospheric::Export::Iso25331985.table_1_yaml #=> YAML
|
|
164
164
|
----
|
|
165
165
|
|
|
166
166
|
==== Table 2 (hPa)
|
|
@@ -173,8 +173,8 @@ Same as Table 1 but for the range of `(20.0..1199.9).step(0.1)` in hPa.
|
|
|
173
173
|
|
|
174
174
|
[source,ruby]
|
|
175
175
|
----
|
|
176
|
-
Atmospheric::Export::
|
|
177
|
-
Atmospheric::Export::
|
|
176
|
+
Atmospheric::Export::Iso25331985.table_2 #=> Hash
|
|
177
|
+
Atmospheric::Export::Iso25331985.table_2_yaml #=> YAML
|
|
178
178
|
----
|
|
179
179
|
|
|
180
180
|
==== Table 3 (mmHg)
|
|
@@ -192,8 +192,8 @@ Provides:
|
|
|
192
192
|
|
|
193
193
|
[source,ruby]
|
|
194
194
|
----
|
|
195
|
-
Atmospheric::Export::
|
|
196
|
-
Atmospheric::Export::
|
|
195
|
+
Atmospheric::Export::Iso25331985.table_3 #=> Hash
|
|
196
|
+
Atmospheric::Export::Iso25331985.table_3_yaml #=> YAML
|
|
197
197
|
----
|
|
198
198
|
|
|
199
199
|
==== Table 4 (mmHg)
|
|
@@ -206,8 +206,8 @@ Same as Table 3 but for the range of `(10.0..899.9).step(0.1)` and results in mm
|
|
|
206
206
|
|
|
207
207
|
[source,ruby]
|
|
208
208
|
----
|
|
209
|
-
Atmospheric::Export::
|
|
210
|
-
Atmospheric::Export::
|
|
209
|
+
Atmospheric::Export::Iso25331985.table_4 #=> Hash
|
|
210
|
+
Atmospheric::Export::Iso25331985.table_4_yaml #=> YAML
|
|
211
211
|
----
|
|
212
212
|
|
|
213
213
|
==== Table 5 (hPa) and Table 6 (mmHg)
|
|
@@ -228,8 +228,8 @@ Range of `(-1000..4599).step(1)`.
|
|
|
228
228
|
|
|
229
229
|
[source,ruby]
|
|
230
230
|
----
|
|
231
|
-
Atmospheric::Export::
|
|
232
|
-
Atmospheric::Export::
|
|
231
|
+
Atmospheric::Export::Iso25331985.table_56 #=> Hash
|
|
232
|
+
Atmospheric::Export::Iso25331985.table_56_yaml #=> YAML
|
|
233
233
|
----
|
|
234
234
|
|
|
235
235
|
=== ISO 2533 ADD 2:1997
|
|
@@ -351,6 +351,263 @@ Atmospheric::Export::Iso25331997.table_6_yaml #=> YAML
|
|
|
351
351
|
----
|
|
352
352
|
|
|
353
353
|
|
|
354
|
+
=== ISO NP 2533:2024
|
|
355
|
+
|
|
356
|
+
==== General
|
|
357
|
+
|
|
358
|
+
ISO 2533 is now proposed to be revised for a 2024/2025 version, 49 years
|
|
359
|
+
since the last edition (1975) and 27 years since it was last updated (1997).
|
|
360
|
+
|
|
361
|
+
ISO NP 2533:2024 will likely include all content in the previously published
|
|
362
|
+
Addenda, including:
|
|
363
|
+
|
|
364
|
+
* Standard atmosphere values from altitude -5km to 80km (geometric and geopotential)
|
|
365
|
+
+
|
|
366
|
+
NOTE: The 1975 edition provided values from -2km to 80km (even though it said 32km in the title).
|
|
367
|
+
+
|
|
368
|
+
NOTE: The 1997 ADD 2 provided values from -5km to 2km.
|
|
369
|
+
|
|
370
|
+
* Standard atmosphere values from altitude -16,500ft to 262,500ft (geometric and geopotential)
|
|
371
|
+
+
|
|
372
|
+
NOTE: The 1997 ADD 2 provided these values.
|
|
373
|
+
|
|
374
|
+
* Hypsometrical tables (altitude as a function of barometric pressure) (geometric and geopotential; hPa/mbar)
|
|
375
|
+
+
|
|
376
|
+
NOTE: The 1985 ADD 1 provided these hypsometrical tables in hPa/mbar and mmHg.
|
|
377
|
+
In the 2024 edition only hPa/mbar is provided.
|
|
378
|
+
|
|
379
|
+
This document will also align to the values provided in
|
|
380
|
+
https://store.icao.int/en/manual-of-the-icao-standard-atmosphere-extended-to-80-kilometres-262500-feet-doc-7488[ICAO Doc 7488/3].
|
|
381
|
+
|
|
382
|
+
|
|
383
|
+
All tables in the new edition are arranged in these steps.
|
|
384
|
+
|
|
385
|
+
.ISO 2533:2024 atmosphere values (m): step 50 from -5k, 100 from 32k, 200 from 51k to 80k
|
|
386
|
+
----
|
|
387
|
+
(-5000..31950).step(50) +
|
|
388
|
+
(32000..50900).step(100) +
|
|
389
|
+
(51000..80000).step(200)
|
|
390
|
+
----
|
|
391
|
+
|
|
392
|
+
.ISO 2533:2024 atmosphere values (ft): step 250 from -16500, 200 from -14000, 500 from 105000 to 262500
|
|
393
|
+
----
|
|
394
|
+
(-16500..-13750).step(250) +
|
|
395
|
+
(-14000..104800).step(200) +
|
|
396
|
+
(105000..262500).step(500)
|
|
397
|
+
----
|
|
398
|
+
|
|
399
|
+
Tables 5 to 10 all have height information of the following keys in the hash:
|
|
400
|
+
|
|
401
|
+
* `geopotential-altitude-m`
|
|
402
|
+
* `geopotential-altitude-ft`
|
|
403
|
+
* `geometrical-altitude-m`
|
|
404
|
+
* `geometrical-altitude-ft`
|
|
405
|
+
|
|
406
|
+
All YAML tables generated contain these two keys which group altitude values
|
|
407
|
+
as the ISO 2533 tables are rendered in both types of altitudes:
|
|
408
|
+
|
|
409
|
+
* `by-geopotential-altitude`
|
|
410
|
+
* `by-geometric-altitude`
|
|
411
|
+
|
|
412
|
+
==== Table 5 (meters)
|
|
413
|
+
|
|
414
|
+
NOTE: This corresponds to ISO 2533:1975 Table 5 combined with ISO 2533:1975/ADD
|
|
415
|
+
1:1997 Table 1.
|
|
416
|
+
|
|
417
|
+
Title:
|
|
418
|
+
"_Temperature (T and t), Pressure (p), Density (p) and Acceleration of free fall
|
|
419
|
+
(g) in terms of geometrical altitude (h) and geopotential altitude (H)_"
|
|
420
|
+
|
|
421
|
+
Provides the following values in addition to geopotential and geometric height:
|
|
422
|
+
|
|
423
|
+
* `temperature-K`
|
|
424
|
+
* `temperature-C`
|
|
425
|
+
* `pressure-mbar`
|
|
426
|
+
* `pressure-mmhg`
|
|
427
|
+
* `density`
|
|
428
|
+
* `acceleration`
|
|
429
|
+
|
|
430
|
+
[source,ruby]
|
|
431
|
+
----
|
|
432
|
+
Atmospheric::Export::Iso25332024.table_5 #=> Hash
|
|
433
|
+
Atmospheric::Export::Iso25332024.table_5_yaml #=> YAML
|
|
434
|
+
----
|
|
435
|
+
|
|
436
|
+
==== Table 6 (meters)
|
|
437
|
+
|
|
438
|
+
NOTE: This corresponds to ISO 2533:1975 Table 6 combined with ISO 2533:1975/ADD
|
|
439
|
+
1:1997 Table 2.
|
|
440
|
+
|
|
441
|
+
Title:
|
|
442
|
+
"_Relations of p'pn, p/pn and bar(p/pn), Speed of sound (a), Dynamic viscosity
|
|
443
|
+
(p), Kinematic viscosity (v) and Thermal conductivity (lambda) in terms of
|
|
444
|
+
geometrical altitude (h), and geopotential altitude (H)_"
|
|
445
|
+
|
|
446
|
+
Provides the following values in addition to geopotential and geometric height:
|
|
447
|
+
|
|
448
|
+
* `ppn`
|
|
449
|
+
* `rhorhon`
|
|
450
|
+
* `sqrt-rhorhon`
|
|
451
|
+
* `speed-of-sound`
|
|
452
|
+
* `dynamic-viscosity`
|
|
453
|
+
* `kinematic-viscosity`
|
|
454
|
+
* `thermal-conductivity`
|
|
455
|
+
|
|
456
|
+
[source,ruby]
|
|
457
|
+
----
|
|
458
|
+
Atmospheric::Export::Iso25332024.table_6 #=> Hash
|
|
459
|
+
Atmospheric::Export::Iso25332024.table_6_yaml #=> YAML
|
|
460
|
+
----
|
|
461
|
+
|
|
462
|
+
==== Table 7 (meters)
|
|
463
|
+
|
|
464
|
+
NOTE: This corresponds to ISO 2533:1975 Table 7 combined with ISO 2533:1975/ADD
|
|
465
|
+
1:1997 Table 3.
|
|
466
|
+
|
|
467
|
+
Title:
|
|
468
|
+
"_Pressure scale height (H_p) Specific weight (gamma), Air number density (n),
|
|
469
|
+
Mean air-particle speed (v), Air-particle collision frequency (omega) and Mean
|
|
470
|
+
free path of air particles (l) in terms of geometrical altitude (h) and
|
|
471
|
+
geopotential altitude (H)_"
|
|
472
|
+
|
|
473
|
+
* `pressure-scale-height`
|
|
474
|
+
* `specific-weight`
|
|
475
|
+
* `air-number-density`
|
|
476
|
+
* `mean-speed`
|
|
477
|
+
* `frequency`
|
|
478
|
+
* `mean-free-path`
|
|
479
|
+
|
|
480
|
+
[source,ruby]
|
|
481
|
+
----
|
|
482
|
+
Atmospheric::Export::Iso25332024.table_7 #=> Hash
|
|
483
|
+
Atmospheric::Export::Iso25332024.table_7_yaml #=> YAML
|
|
484
|
+
----
|
|
485
|
+
|
|
486
|
+
==== Table 8 (-16.5kft to 262.5kft)
|
|
487
|
+
|
|
488
|
+
NOTE: This corresponds to ISO 2533:1975/ADD 2:1997 Table 4.
|
|
489
|
+
|
|
490
|
+
Title:
|
|
491
|
+
"_Temperature (T and t), pressure (p), density (p) and acceleration of free fall
|
|
492
|
+
(g) in terms of geometrical altitude (h) and geopotential altitude (H) --
|
|
493
|
+
Altitudes in feet_"
|
|
494
|
+
|
|
495
|
+
Exactly same as ISO 2533:1975 Table 5, but in feet and different range.
|
|
496
|
+
|
|
497
|
+
Pressure at mmHg is not produced, but the implementation still provides it
|
|
498
|
+
for completeness.
|
|
499
|
+
|
|
500
|
+
[source,ruby]
|
|
501
|
+
----
|
|
502
|
+
Atmospheric::Export::Iso25332024.table_8 #=> Hash
|
|
503
|
+
Atmospheric::Export::Iso25332024.table_8_yaml #=> YAML
|
|
504
|
+
----
|
|
505
|
+
|
|
506
|
+
==== Table 9 (-16.5kft to 262.5kft)
|
|
507
|
+
|
|
508
|
+
NOTE: This corresponds to ISO 2533:1975/ADD 2:1997 Table 5.
|
|
509
|
+
|
|
510
|
+
Title:
|
|
511
|
+
"_Relations of p'pn, p/pn and bar(p/pn), Speed of sound (a), Dynamic viscosity
|
|
512
|
+
(p), Kinematic viscosity (v) and Thermal conductivity (lambda) in terms of
|
|
513
|
+
geometrical altitude (h), and geopotential altitude (H) -- Altitudes in feet_"
|
|
514
|
+
|
|
515
|
+
Exactly same as ISO 2533:1975 Table 6, but in feet and different range.
|
|
516
|
+
|
|
517
|
+
[source,ruby]
|
|
518
|
+
----
|
|
519
|
+
Atmospheric::Export::Iso25332024.table_9 #=> Hash
|
|
520
|
+
Atmospheric::Export::Iso25332024.table_9_yaml #=> YAML
|
|
521
|
+
----
|
|
522
|
+
|
|
523
|
+
==== Table 10 (-16.5kft to 262.5kft)
|
|
524
|
+
|
|
525
|
+
NOTE: This corresponds to ISO 2533:1975/ADD 2:1997 Table 6.
|
|
526
|
+
|
|
527
|
+
Title:
|
|
528
|
+
"_Pressure scale height (H_p) Specific weight (gamma), Air number density (n),
|
|
529
|
+
Mean air-particle speed (v), Air-particle collision frequency (omega) and Mean
|
|
530
|
+
free path of air particles (l) in terms of geometrical altitude (h) and
|
|
531
|
+
geopotential altitude (H) -- Altitudes in feet_"
|
|
532
|
+
|
|
533
|
+
Exactly same as ISO 2533:1975 Table 7, but in feet and different range.
|
|
534
|
+
|
|
535
|
+
[source,ruby]
|
|
536
|
+
----
|
|
537
|
+
Atmospheric::Export::Iso25332024.table_10 #=> Hash
|
|
538
|
+
Atmospheric::Export::Iso25332024.table_10_yaml #=> YAML
|
|
539
|
+
----
|
|
540
|
+
|
|
541
|
+
|
|
542
|
+
==== Table 11 (hPa)
|
|
543
|
+
|
|
544
|
+
NOTE: This corresponds to ISO 2533:1975/ADD 1:1985 Table 1 combined with Table 2.
|
|
545
|
+
|
|
546
|
+
Title:
|
|
547
|
+
"_Geopotential altitude as a function of barometric pressure
|
|
548
|
+
for 5 <= p < 20 hPa at intervals of 0.01 hPa and
|
|
549
|
+
20 <= p < 1200 hPa at intervals of 0.1 hPa__"
|
|
550
|
+
|
|
551
|
+
For the range of `(5.0..19.99).step(0.01) + (20.0..1199.9).step(0.1)` in hPa.
|
|
552
|
+
|
|
553
|
+
Provides:
|
|
554
|
+
|
|
555
|
+
* `pressure-mbar`
|
|
556
|
+
* `geopotential-altitude-m`
|
|
557
|
+
|
|
558
|
+
[source,ruby]
|
|
559
|
+
----
|
|
560
|
+
Atmospheric::Export::Iso25332024.table_11 #=> Hash
|
|
561
|
+
Atmospheric::Export::Iso25332024.table_11_yaml #=> YAML
|
|
562
|
+
----
|
|
563
|
+
|
|
564
|
+
|
|
565
|
+
==== Table 12 (hPa)
|
|
566
|
+
|
|
567
|
+
NOTE: This corresponds to ISO 2533:1975/ADD 1:1985 Table 5 but in geometric altitude.
|
|
568
|
+
|
|
569
|
+
Title:
|
|
570
|
+
"_Barometric pressure, in hectopascals, as a function of geometric altitude
|
|
571
|
+
for -1000 <= H < +4600 m at intervals of 1m_"
|
|
572
|
+
|
|
573
|
+
Provides:
|
|
574
|
+
|
|
575
|
+
* `geometric-altitude-m`
|
|
576
|
+
* `pressure-mbar`
|
|
577
|
+
* `pressure-mmhg`
|
|
578
|
+
|
|
579
|
+
Range of `(-1000..4599).step(1)`.
|
|
580
|
+
|
|
581
|
+
[source,ruby]
|
|
582
|
+
----
|
|
583
|
+
Atmospheric::Export::Iso25332024.table_12 #=> Hash
|
|
584
|
+
Atmospheric::Export::Iso25332024.table_12_yaml #=> YAML
|
|
585
|
+
----
|
|
586
|
+
|
|
587
|
+
==== Table 13 (hPa)
|
|
588
|
+
|
|
589
|
+
NOTE: This corresponds to ISO 2533:1975/ADD 1:1985 Table 5, in geopotential altitude.
|
|
590
|
+
|
|
591
|
+
Title:
|
|
592
|
+
"_Barometric pressure, in hectopascals, as a function of geopotential altitude
|
|
593
|
+
for -1000 <= H < +4600 m at intervals of 1m_"
|
|
594
|
+
|
|
595
|
+
Provides:
|
|
596
|
+
|
|
597
|
+
* `geopotential-altitude-m`
|
|
598
|
+
* `pressure-mbar`
|
|
599
|
+
* `pressure-mmhg`
|
|
600
|
+
|
|
601
|
+
Range of `(-1000..4599).step(1)`.
|
|
602
|
+
|
|
603
|
+
[source,ruby]
|
|
604
|
+
----
|
|
605
|
+
Atmospheric::Export::Iso25332024.table_13 #=> Hash
|
|
606
|
+
Atmospheric::Export::Iso25332024.table_13_yaml #=> YAML
|
|
607
|
+
----
|
|
608
|
+
|
|
609
|
+
|
|
610
|
+
|
|
354
611
|
== Testing
|
|
355
612
|
|
|
356
613
|
[source,sh]
|
|
@@ -7,10 +7,10 @@ module Atmospheric
|
|
|
7
7
|
class TableBase
|
|
8
8
|
include Target
|
|
9
9
|
|
|
10
|
-
def to_h
|
|
10
|
+
def to_h(unit: steps_unit)
|
|
11
11
|
d = { "rows" => [] }
|
|
12
12
|
steps.each do |p|
|
|
13
|
-
d["rows"] << row(p)
|
|
13
|
+
d["rows"] << row(p, unit: unit)
|
|
14
14
|
end
|
|
15
15
|
d
|
|
16
16
|
end
|
|
@@ -19,120 +19,15 @@ module Atmospheric
|
|
|
19
19
|
(0..0)
|
|
20
20
|
end
|
|
21
21
|
|
|
22
|
-
def
|
|
23
|
-
|
|
24
|
-
end
|
|
25
|
-
end
|
|
26
|
-
|
|
27
|
-
class TableOne < TableBase
|
|
28
|
-
def steps
|
|
29
|
-
(5.0..19.99).step(0.01)
|
|
30
|
-
end
|
|
31
|
-
|
|
32
|
-
def row(p)
|
|
33
|
-
{
|
|
34
|
-
"pressure-mbar" => p.round(2),
|
|
35
|
-
"geopotential-altitude" => Isa.geopotential_altitude_from_pressure_mbar(p.round(2)).round,
|
|
36
|
-
}
|
|
37
|
-
end
|
|
38
|
-
end
|
|
39
|
-
|
|
40
|
-
class TableTwo < TableBase
|
|
41
|
-
def steps
|
|
42
|
-
(20.0..1199.9).step(0.1)
|
|
43
|
-
end
|
|
44
|
-
|
|
45
|
-
def row(p)
|
|
46
|
-
{
|
|
47
|
-
"pressure-mbar" => p.round(1),
|
|
48
|
-
"geopotential-altitude" => Isa.geopotential_altitude_from_pressure_mbar(p.round(1)).round,
|
|
49
|
-
}
|
|
50
|
-
end
|
|
51
|
-
end
|
|
52
|
-
|
|
53
|
-
class TableThree < TableBase
|
|
54
|
-
def steps
|
|
55
|
-
(4.0..9.99).step(0.01)
|
|
56
|
-
end
|
|
57
|
-
|
|
58
|
-
def row(p)
|
|
59
|
-
{
|
|
60
|
-
"pressure-mmhg" => p.round(2),
|
|
61
|
-
"geopotential-altitude" => Isa.geopotential_altitude_from_pressure_mmhg(p.round(2)).round,
|
|
62
|
-
}
|
|
63
|
-
end
|
|
64
|
-
end
|
|
65
|
-
|
|
66
|
-
class TableFour < TableBase
|
|
67
|
-
def steps
|
|
68
|
-
(10.0..899.9).step(0.1)
|
|
69
|
-
end
|
|
70
|
-
|
|
71
|
-
def row(p)
|
|
72
|
-
{
|
|
73
|
-
"pressure-mmhg" => p.round(1),
|
|
74
|
-
"geopotential-altitude" => Isa.geopotential_altitude_from_pressure_mmhg(p.round(1)).round,
|
|
75
|
-
}
|
|
76
|
-
end
|
|
77
|
-
end
|
|
78
|
-
|
|
79
|
-
class TableFiveSix < TableBase
|
|
80
|
-
def steps
|
|
81
|
-
(-1000..4599).step(1)
|
|
22
|
+
def steps_unit
|
|
23
|
+
:mbar
|
|
82
24
|
end
|
|
83
25
|
|
|
84
|
-
def row(
|
|
85
|
-
{
|
|
86
|
-
"geopotential-altitude" => h,
|
|
87
|
-
"pressure-mbar" => round_to_sig_figs(Isa.pressure_from_geopotential_mbar(h.to_f), 6),
|
|
88
|
-
"pressure-mmhg" => round_to_sig_figs(Isa.pressure_from_geopotential_mmhg(h.to_f), 6),
|
|
89
|
-
}
|
|
26
|
+
def row(p, unit: steps_unit)
|
|
27
|
+
{}
|
|
90
28
|
end
|
|
91
29
|
end
|
|
92
30
|
|
|
93
|
-
class << self
|
|
94
|
-
|
|
95
|
-
def table_1
|
|
96
|
-
TableOne.new.to_h
|
|
97
|
-
end
|
|
98
|
-
|
|
99
|
-
def table_1_yaml
|
|
100
|
-
TableOne.new.to_yaml
|
|
101
|
-
end
|
|
102
|
-
|
|
103
|
-
def table_2
|
|
104
|
-
TableTwo.new.to_h
|
|
105
|
-
end
|
|
106
|
-
|
|
107
|
-
def table_2_yaml
|
|
108
|
-
TableTwo.new.to_yaml
|
|
109
|
-
end
|
|
110
|
-
|
|
111
|
-
def table_3
|
|
112
|
-
TableThree.new.to_h
|
|
113
|
-
end
|
|
114
|
-
|
|
115
|
-
def table_3_yaml
|
|
116
|
-
TableThree.new.to_yaml
|
|
117
|
-
end
|
|
118
|
-
|
|
119
|
-
def table_4
|
|
120
|
-
TableFour.new.to_h
|
|
121
|
-
end
|
|
122
|
-
|
|
123
|
-
def table_4_yaml
|
|
124
|
-
TableFour.new.to_yaml
|
|
125
|
-
end
|
|
126
|
-
|
|
127
|
-
def table_56
|
|
128
|
-
TableFiveSix.new.to_h
|
|
129
|
-
end
|
|
130
|
-
|
|
131
|
-
def table_56_yaml
|
|
132
|
-
TableFiveSix.new.to_yaml
|
|
133
|
-
end
|
|
134
|
-
|
|
135
|
-
end
|
|
136
31
|
end
|
|
137
32
|
|
|
138
33
|
end
|
|
@@ -17,7 +17,7 @@ module Atmospheric
|
|
|
17
17
|
"temperature-K" => (Isa.temperature_at_layer_from_geopotential(gp_h_f) * 1000.0).round,
|
|
18
18
|
"temperature-C" => (Isa.temperature_at_layer_celcius(gp_h_f) * 1000.0).round,
|
|
19
19
|
"pressure-mbar" => round_to_sig_figs(Isa.pressure_from_geopotential_mbar(gp_h_f), 6),
|
|
20
|
-
"pressure-
|
|
20
|
+
"pressure-mmhg" => round_to_sig_figs(Isa.pressure_from_geopotential_mmhg(gp_h_f), 6),
|
|
21
21
|
"density" => round_to_sig_figs(Isa.density_from_geopotential(gp_h_f), 6),
|
|
22
22
|
"acceleration" => Isa.gravity_at_geopotential(gp_h_f).round(4),
|
|
23
23
|
}
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
require_relative "./target"
|
|
2
|
+
require_relative "./hypsometrical_tables"
|
|
3
|
+
|
|
4
|
+
module Atmospheric
|
|
5
|
+
module Export
|
|
6
|
+
|
|
7
|
+
module Iso25331985
|
|
8
|
+
|
|
9
|
+
class TableOne < HypsometricalTables::TableBase
|
|
10
|
+
# TODO: when Ruby's step does not create inaccurate floating point numbers
|
|
11
|
+
# This is a hack to solve a Ruby bug with floating point calcuations
|
|
12
|
+
# > (20.0..1770.9).step(0.1).to_a
|
|
13
|
+
# ...
|
|
14
|
+
# 1769.4,
|
|
15
|
+
# 1769.5,
|
|
16
|
+
# 1769.6000000000001, # <== we need to clean these
|
|
17
|
+
# 1769.7,
|
|
18
|
+
# 1769.8000000000002, # <== we need to clean these
|
|
19
|
+
# The last `map` should be removed if this bug is fixed
|
|
20
|
+
def steps
|
|
21
|
+
(5.0..19.99).step(0.01).to_a.map {|v| v.round(2)}
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def steps_unit
|
|
25
|
+
:mbar
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def row(p, unit: steps_unit)
|
|
29
|
+
method_name = "geopotential_altitude_from_pressure_#{unit}"
|
|
30
|
+
value = Isa.send(method_name, p).round
|
|
31
|
+
{
|
|
32
|
+
"pressure-#{unit}" => p,
|
|
33
|
+
"geopotential-altitude" => value,
|
|
34
|
+
}
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
class TableTwo < HypsometricalTables::TableBase
|
|
39
|
+
def steps
|
|
40
|
+
(20.0..1199.9).step(0.1).to_a.map {|v| v.round(1)}
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
def row(p, unit:)
|
|
44
|
+
method_name = "geopotential_altitude_from_pressure_#{unit}"
|
|
45
|
+
value = Isa.send(method_name, p).round
|
|
46
|
+
{
|
|
47
|
+
"pressure-#{unit}" => p,
|
|
48
|
+
"geopotential-altitude" => value,
|
|
49
|
+
}
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
# Same as Table 1 with mmHg
|
|
54
|
+
class TableThree < TableOne
|
|
55
|
+
def steps
|
|
56
|
+
(4.0..9.99).step(0.01).to_a.map {|v| v.round(2)}
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
def steps_unit
|
|
60
|
+
:mmhg
|
|
61
|
+
end
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
# Same as Table 3 with mmHg
|
|
65
|
+
class TableFour < TableTwo
|
|
66
|
+
def steps
|
|
67
|
+
(10.0..899.9).step(0.1).to_a.map {|v| v.round(1)}
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
def steps_unit
|
|
71
|
+
:mmhg
|
|
72
|
+
end
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
class TableFiveSix < HypsometricalTables::TableBase
|
|
76
|
+
def steps
|
|
77
|
+
(-1000..4599).step(1)
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
def row(h, unit:)
|
|
81
|
+
{
|
|
82
|
+
"geopotential-altitude" => h,
|
|
83
|
+
"pressure-mbar" => round_to_sig_figs(Isa.pressure_from_geopotential_mbar(h.to_f), 6),
|
|
84
|
+
"pressure-mmhg" => round_to_sig_figs(Isa.pressure_from_geopotential_mmhg(h.to_f), 6),
|
|
85
|
+
}
|
|
86
|
+
end
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
class << self
|
|
90
|
+
|
|
91
|
+
def table_1
|
|
92
|
+
TableOne.new.to_h
|
|
93
|
+
end
|
|
94
|
+
|
|
95
|
+
def table_1_yaml
|
|
96
|
+
TableOne.new.to_yaml
|
|
97
|
+
end
|
|
98
|
+
|
|
99
|
+
def table_2
|
|
100
|
+
TableTwo.new.to_h
|
|
101
|
+
end
|
|
102
|
+
|
|
103
|
+
def table_2_yaml
|
|
104
|
+
TableTwo.new.to_yaml
|
|
105
|
+
end
|
|
106
|
+
|
|
107
|
+
def table_3
|
|
108
|
+
TableThree.new.to_h
|
|
109
|
+
end
|
|
110
|
+
|
|
111
|
+
def table_3_yaml
|
|
112
|
+
TableThree.new.to_yaml
|
|
113
|
+
end
|
|
114
|
+
|
|
115
|
+
def table_4
|
|
116
|
+
TableFour.new.to_h
|
|
117
|
+
end
|
|
118
|
+
|
|
119
|
+
def table_4_yaml
|
|
120
|
+
TableFour.new.to_yaml
|
|
121
|
+
end
|
|
122
|
+
|
|
123
|
+
def table_56
|
|
124
|
+
TableFiveSix.new.to_h
|
|
125
|
+
end
|
|
126
|
+
|
|
127
|
+
def table_56_yaml
|
|
128
|
+
TableFiveSix.new.to_yaml
|
|
129
|
+
end
|
|
130
|
+
|
|
131
|
+
end
|
|
132
|
+
|
|
133
|
+
end
|
|
134
|
+
|
|
135
|
+
end
|
|
136
|
+
end
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
require_relative "./target"
|
|
2
|
+
require_relative "./iso_25331975"
|
|
2
3
|
|
|
3
4
|
module Atmospheric
|
|
4
5
|
module Export
|
|
@@ -26,8 +27,8 @@ module Atmospheric
|
|
|
26
27
|
module GroupBaseFeet
|
|
27
28
|
def steps
|
|
28
29
|
(
|
|
29
|
-
(-16500..-
|
|
30
|
-
(-14000..
|
|
30
|
+
(-16500..-13750).step(250) +
|
|
31
|
+
(-14000..104800).step(200) +
|
|
31
32
|
(105000..262500).step(500)
|
|
32
33
|
)
|
|
33
34
|
end
|