Psikrometrik Programlama Fonksiyonları

()

Python, C, C#, Fortran, JavaScript ve VBA/Excel için havanın termodinamik özelliklerini hesaplamaya yönelik psikrometrik fonksiyonlar kitaplığı

Genel bakış

Psikrometri, nemli havanın fiziksel ve termodinamik özelliklerinin incelenmesidir. Bu özellikler örneğin havanın çiy noktası sıcaklığını, yaş termometre sıcaklığını, bağıl nemi, nem oranını, entalpiyi içerir.

Bu özelliklerin tahmini, ısıtma, havalandırma ve iklimlendirme (HVAC) ve meteoroloji gibi çeşitli mühendislik ve bilimsel uygulamalarda kritik öneme sahiptir. Havanın psikrometrik özelliklerini hesaplamak için formüller literatürde yaygın olarak bulunsa da (@Kafadergisi;@Kafadergisi;@Kafadergisi;@ Dilley1968;@Kafadergisi), bilgisayar programlarında veya elektronik tablolarda uygulanması zor ve zaman alıcı olabilir.

PsychroLib, nemli ve kuru havanın psikrometrik özelliklerinin hesaplanmasını sağlayan bir işlevler kitaplığıdır. Kitaplık Python, C, C#, Fortran, JavaScript, Microsoft Excel Visual Basic for Applications (VBA) için kullanılabilir. Hem metrik (SI) hem de emperyal (IP) birim sistemlerinde çalışır. İşlevler, 2017 ASHRAE El Kitabı — Temel Bilgiler, Bölüm 1, SI ve IP sürümlerindeki formüllere dayanmaktadır. İşlevler iki kategoriye ayrılabilir:

  1. Çiylenme noktası sıcaklığı, yaş termometre sıcaklığı, suyun kısmi buhar basıncı, nem oranı veya bağıl nem, bunlardan herhangi birini bilerek ve kuru termometre sıcaklığı ile atmosferik basıncı hesaplama işlevleri.
  2. Diğer nemli hava özelliklerinin hesaplanması için fonksiyonlar. Bütün bunlar nem oranını girdi olarak kullanır.

Python

   1
   2
   3
   4
   5
   6
   7
   8
   9
  10
  11
  12
  13
  14
  15
  16
  17
  18
  19
  20
  21
  22
  23
  24
  25
  26
  27
  28
  29
  30
  31
  32
  33
  34
  35
  36
  37
  38
  39
  40
  41
  42
  43
  44
  45
  46
  47
  48
  49
  50
  51
  52
  53
  54
  55
  56
  57
  58
  59
  60
  61
  62
  63
  64
  65
  66
  67
  68
  69
  70
  71
  72
  73
  74
  75
  76
  77
  78
  79
  80
  81
  82
  83
  84
  85
  86
  87
  88
  89
  90
  91
  92
  93
  94
  95
  96
  97
  98
  99
 100
 101
 102
 103
 104
 105
 106
 107
 108
 109
 110
 111
 112
 113
 114
 115
 116
 117
 118
 119
 120
 121
 122
 123
 124
 125
 126
 127
 128
 129
 130
 131
 132
 133
 134
 135
 136
 137
 138
 139
 140
 141
 142
 143
 144
 145
 146
 147
 148
 149
 150
 151
 152
 153
 154
 155
 156
 157
 158
 159
 160
 161
 162
 163
 164
 165
 166
 167
 168
 169
 170
 171
 172
 173
 174
 175
 176
 177
 178
 179
 180
 181
 182
 183
 184
 185
 186
 187
 188
 189
 190
 191
 192
 193
 194
 195
 196
 197
 198
 199
 200
 201
 202
 203
 204
 205
 206
 207
 208
 209
 210
 211
 212
 213
 214
 215
 216
 217
 218
 219
 220
 221
 222
 223
 224
 225
 226
 227
 228
 229
 230
 231
 232
 233
 234
 235
 236
 237
 238
 239
 240
 241
 242
 243
 244
 245
 246
 247
 248
 249
 250
 251
 252
 253
 254
 255
 256
 257
 258
 259
 260
 261
 262
 263
 264
 265
 266
 267
 268
 269
 270
 271
 272
 273
 274
 275
 276
 277
 278
 279
 280
 281
 282
 283
 284
 285
 286
 287
 288
 289
 290
 291
 292
 293
 294
 295
 296
 297
 298
 299
 300
 301
 302
 303
 304
 305
 306
 307
 308
 309
 310
 311
 312
 313
 314
 315
 316
 317
 318
 319
 320
 321
 322
 323
 324
 325
 326
 327
 328
 329
 330
 331
 332
 333
 334
 335
 336
 337
 338
 339
 340
 341
 342
 343
 344
 345
 346
 347
 348
 349
 350
 351
 352
 353
 354
 355
 356
 357
 358
 359
 360
 361
 362
 363
 364
 365
 366
 367
 368
 369
 370
 371
 372
 373
 374
 375
 376
 377
 378
 379
 380
 381
 382
 383
 384
 385
 386
 387
 388
 389
 390
 391
 392
 393
 394
 395
 396
 397
 398
 399
 400
 401
 402
 403
 404
 405
 406
 407
 408
 409
 410
 411
 412
 413
 414
 415
 416
 417
 418
 419
 420
 421
 422
 423
 424
 425
 426
 427
 428
 429
 430
 431
 432
 433
 434
 435
 436
 437
 438
 439
 440
 441
 442
 443
 444
 445
 446
 447
 448
 449
 450
 451
 452
 453
 454
 455
 456
 457
 458
 459
 460
 461
 462
 463
 464
 465
 466
 467
 468
 469
 470
 471
 472
 473
 474
 475
 476
 477
 478
 479
 480
 481
 482
 483
 484
 485
 486
 487
 488
 489
 490
 491
 492
 493
 494
 495
 496
 497
 498
 499
 500
 501
 502
 503
 504
 505
 506
 507
 508
 509
 510
 511
 512
 513
 514
 515
 516
 517
 518
 519
 520
 521
 522
 523
 524
 525
 526
 527
 528
 529
 530
 531
 532
 533
 534
 535
 536
 537
 538
 539
 540
 541
 542
 543
 544
 545
 546
 547
 548
 549
 550
 551
 552
 553
 554
 555
 556
 557
 558
 559
 560
 561
 562
 563
 564
 565
 566
 567
 568
 569
 570
 571
 572
 573
 574
 575
 576
 577
 578
 579
 580
 581
 582
 583
 584
 585
 586
 587
 588
 589
 590
 591
 592
 593
 594
 595
 596
 597
 598
 599
 600
 601
 602
 603
 604
 605
 606
 607
 608
 609
 610
 611
 612
 613
 614
 615
 616
 617
 618
 619
 620
 621
 622
 623
 624
 625
 626
 627
 628
 629
 630
 631
 632
 633
 634
 635
 636
 637
 638
 639
 640
 641
 642
 643
 644
 645
 646
 647
 648
 649
 650
 651
 652
 653
 654
 655
 656
 657
 658
 659
 660
 661
 662
 663
 664
 665
 666
 667
 668
 669
 670
 671
 672
 673
 674
 675
 676
 677
 678
 679
 680
 681
 682
 683
 684
 685
 686
 687
 688
 689
 690
 691
 692
 693
 694
 695
 696
 697
 698
 699
 700
 701
 702
 703
 704
 705
 706
 707
 708
 709
 710
 711
 712
 713
 714
 715
 716
 717
 718
 719
 720
 721
 722
 723
 724
 725
 726
 727
 728
 729
 730
 731
 732
 733
 734
 735
 736
 737
 738
 739
 740
 741
 742
 743
 744
 745
 746
 747
 748
 749
 750
 751
 752
 753
 754
 755
 756
 757
 758
 759
 760
 761
 762
 763
 764
 765
 766
 767
 768
 769
 770
 771
 772
 773
 774
 775
 776
 777
 778
 779
 780
 781
 782
 783
 784
 785
 786
 787
 788
 789
 790
 791
 792
 793
 794
 795
 796
 797
 798
 799
 800
 801
 802
 803
 804
 805
 806
 807
 808
 809
 810
 811
 812
 813
 814
 815
 816
 817
 818
 819
 820
 821
 822
 823
 824
 825
 826
 827
 828
 829
 830
 831
 832
 833
 834
 835
 836
 837
 838
 839
 840
 841
 842
 843
 844
 845
 846
 847
 848
 849
 850
 851
 852
 853
 854
 855
 856
 857
 858
 859
 860
 861
 862
 863
 864
 865
 866
 867
 868
 869
 870
 871
 872
 873
 874
 875
 876
 877
 878
 879
 880
 881
 882
 883
 884
 885
 886
 887
 888
 889
 890
 891
 892
 893
 894
 895
 896
 897
 898
 899
 900
 901
 902
 903
 904
 905
 906
 907
 908
 909
 910
 911
 912
 913
 914
 915
 916
 917
 918
 919
 920
 921
 922
 923
 924
 925
 926
 927
 928
 929
 930
 931
 932
 933
 934
 935
 936
 937
 938
 939
 940
 941
 942
 943
 944
 945
 946
 947
 948
 949
 950
 951
 952
 953
 954
 955
 956
 957
 958
 959
 960
 961
 962
 963
 964
 965
 966
 967
 968
 969
 970
 971
 972
 973
 974
 975
 976
 977
 978
 979
 980
 981
 982
 983
 984
 985
 986
 987
 988
 989
 990
 991
 992
 993
 994
 995
 996
 997
 998
 999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
# PsychroLib (sürüm 2.3.0) (https://github.com/psychrometrics/psychrolib)
# Telif Hakkı (c) 2018 D. Thevenard ve D. Meyer, mevcut kütüphane uygulaması için
# Telif Hakkı (c) 2017 ASHRAE El Kitabı — ASHRAE denklemleri ve katsayıları için temel bilgiler
# MIT Lisansı altında lisanslanmıştır.

"" "psychrolib.py
Gaz-buhar karışımlarının termodinamik özelliklerini hesaplamak için fonksiyonlar içerir
ve çoğu mühendislik, fiziksel ve meteorolojik durum için uygun standart atmosfer
uygulamalar.
İşlevlerin çoğu, içinde bulunan formüllerin bir uygulamasıdır.
2017 ASHRAE El Kitabı - Temel Bilgiler, hem Uluslararası Sistemde (SI),
ve İmparatorluk (IP) birimleri. Lütfen ekteki bilgilere bakın.
ilgili referans için her fonksiyon.
Örnek
        >>> psychrolib'i içe aktar
    >>> # Birim sistemini örneğin SI olarak ayarlayın (psikrolib.SI veya psikrolib.IP olabilir)
    >>> psikrolib.SetUnitSystem(psikrolib.SI)
    >>> # 25 C kuru termometre sıcaklığı ve %80 bağıl nem için çiğ noktası sıcaklığını hesaplayın
    >>> TDewPoint = psychrolib.GetTDewPointFromRelHum(25.0, 0.80)
        >>> yazdır (TDewPoint)
    21.309397163661785
Telif hakkı
    - Mevcut kütüphane uygulaması için
        Telif Hakkı (c) 2018 D. Thevenard ve D. Meyer.
    - ASHRAE Handbook — Fundamentals, Chapter 1'de yayınlanan denklemler ve katsayılar için
        Telif Hakkı (c) 2017 ASHRAE El Kitabı — Temel Bilgiler (https://www.ashrae.org)
Lisans
    MİT (https://github.com/psychrometrics/psychrolib/LICENSE.txt)
Yazarlardan Not
    Kodun yeterli olduğundan emin olmak için her türlü çabayı gösterdik, ancak hiçbir şey yapmıyoruz.
    doğruluğuna göre temsil eder. Kendi sorumluluğunuzdadır kullanın. fark etmeli misin
    bir hata veya bir öneriniz varsa, lütfen şu adresten GitHub aracılığıyla bize bildirin:
    https://github.com/psychrometrics/psychrolib/issues.
"" "


ithalat matematik
dan Sıralama ithalat Sıralama, Oto
dan yazıyor ithalat Isteğe bağlı


#################################################################### #################################################################### ###
# Global sabitler
#################################################################### #################################################################### ###

ZERO_FAHRENHEIT_AS_RANKINE = 459.67
"""kayan nokta: Derece Rankine (°R) olarak ifade edilen sıfır derece Fahrenheit (°F)
        Birimler:
                ° R
        Referans:
        ASHRAE El Kitabı - Temel Bilgiler (2017) böl. 39
"" "

ZERO_CELSIUS_AS_KELVIN = 273.15
"""kayan nokta: Kelvin (K) olarak ifade edilen sıfır santigrat derece (°C)
        Birimler:
                K
        Referans:
        ASHRAE El Kitabı - Temel Bilgiler (2017) böl. 39
"" "

R_DA_IP = 53.350
"""float: Kuru hava için üniversal gaz sabiti (IP versiyonu)
        Birimler:
        ft lb_Force lb_DryAir⁻¹ R⁻¹
        Referans:
        ASHRAE El Kitabı - Temel Bilgiler (2017) böl. 1
"" "

R_DA_SI = 287.042
"""float: Kuru hava için üniversal gaz sabiti (SI versiyonu)
        Birimler:
                J kg_DryAir⁻¹ K⁻¹
        Referans:
        ASHRAE El Kitabı - Temel Bilgiler (2017) böl. 1
"" "

MAX_ITER_COUNT = 100
"""int: while döngülerinden çıkmadan önceki maksimum yineleme sayısı.
"" "

MIN_HUM_RATIO = 1e-7
"""float: Herhangi bir fonksiyon tarafından kullanılan/dönen minimum kabul edilebilir nem oranı.
          0'ın üzerindeki veya MIN_HUM_RATIO'nun altındaki tüm değerler bu değere sıfırlanacaktır.
"" "

FREEZING_POINT_WATER_IP = 32.0
"""float: Suyun Fahrenheit cinsinden donma noktası.
"" "

FREEZING_POINT_WATER_SI = 0.0
"""float: Santigrat cinsinden suyun donma noktası.
"" "

TRIPLE_POINT_WATER_IP = 32.018
"""float: Fahrenheit cinsinden üçlü su noktası.
"" "

TRIPLE_POINT_WATER_SI = 0.01
"""float: Santigrat cinsinden suyun üçlü noktası.
"" "

#################################################################### #################################################################### ###
# Yardımcı işlevler
#################################################################### #################################################################### ###

# Kullanılacak birim sistemi.
sınıf Ölçü sistemi(Sıralama):
    "" "
    Açıklanmayan özel sınıf, otomatik numaralandırma değerlerini ayarlamak için kullanılır.
        "" "
    IP = Oto()
     = Oto()

IP = UnitSystem.IP
 = UnitSystem.SI

PSYCHROLIB_UNITS = Hiçbiri

PSYCHROLIB_TOLERANCE = 1.0
# Sıcaklık hesaplamalarının toleransı

def SetUnitSystem(Birimler: Ölçü sistemi) -> Hiçbiri:
    "" "
    Kullanılacak birim sistemini ayarlayın (SI veya IP).
        Argümanlar:
        Birimler: seçilen birim sistemini gösteren dize (SI veya IP)
        Notlar:
        Bu fonksiyon *ÇAĞRILMALIDIR* kütüphane kullanılmadan önce
        "" "
    küresel PSYCHROLIB_UNITS
    küresel PSYCHROLIB_TOLERANCE

    eğer değil isinstance(Birimler, Ölçü sistemi):
        yükseltmek Değer Hatası("Birim sistemi SI veya IP olmalıdır.")

    PSYCHROLIB_UNITS = Birimler

    # Sıcaklık hesaplamalarında tolerans tanımlayın
    # Tolerans IP ve SI'da aynıdır
    eğer Birimler == IP:
        PSYCHROLIB_TOLERANCE = 0.001 * 9. / 5.
    Başka:
        PSYCHROLIB_TOLERANCE = 0.001

def GetUnitSystem() -> İsteğe bağlı [UnitSystem]:
    "" "
    Kullanılan birimlerin iade sistemi.
        "" "
    dönüş PSYCHROLIB_UNITS

def isIP() -> bool:
    "" "
    Kullanılan sistemin IP mi yoksa SI mı olduğunu kontrol edin.
        "" "
    eğer PSYCHROLIB_UNITS == IP:
        dönüş Doğru
    elif PSYCHROLIB_UNITS == Sİ:
        dönüş Yanlış
    Başka:
        yükseltmek Değer Hatası('Birim sistemi tanımlanmadı.')


#################################################################### #################################################################### ###
# Sıcaklık birimleri arasında dönüşüm
#################################################################### #################################################################### ###

def GetTRankineFromTFahrenheit(TFahrenheit: şamandıra) -> şamandıra:
    "" "
    Sıcaklığı Rankine derecesine (°R) dönüştürmek için yardımcı işlev
    Fahrenheit (°F) cinsinden verilen sıcaklık.
        Argümanlar:
        TRankine: Fahrenheit (°F) cinsinden sıcaklık
        İadeler:
        Derece cinsinden sıcaklık Rankine (°R)
        Referans:
        Referans: ASHRAE El Kitabı - Temel Bilgiler (2017) böl. 1 bölüm 3
        Notlar:
                Tam dönüşüm.
        "" "
    TRankin = TFahrenheit + ZERO_FAHRENHEIT_AS_RANKINE
    dönüş TRankin

def GetTFahrenheitFromTRankine(TRankine: şamandıra) -> şamandıra:
    "" "
    Sıcaklığı Fahrenheit (°F) derecesine dönüştürmek için yardımcı işlev
    derece Rankine (°R) cinsinden verilen sıcaklık.
        Argümanlar:
        TRankine: Rankine derecesi cinsinden sıcaklık (°R)
        İadeler:
        Fahrenheit (°F) cinsinden sıcaklık
        Referans:
        Referans: ASHRAE El Kitabı - Temel Bilgiler (2017) böl. 1 bölüm 3
        Notlar:
                Tam dönüşüm.
        "" "
    dönüş TRankin - ZERO_FAHRENHEIT_AS_RANKINE

def GetTKelvinFromTCelsius(TCelsius: şamandıra) -> şamandıra:
    "" "
    Sıcaklığı Kelvin'e (K) dönüştürmek için yardımcı işlev
    Santigrat derece (°C) cinsinden verilen sıcaklık.
        Argümanlar:
        TCelsius: Santigrat derece cinsinden sıcaklık (°C)
        İadeler:
        Kelvin cinsinden sıcaklık (K)
        Referans:
        Referans: ASHRAE El Kitabı - Temel Bilgiler (2017) böl. 1 bölüm 3
        Notlar:
                Tam dönüşüm.
        "" "
    TKelvin = TCelsius + ZERO_CELSIUS_AS_KELVIN
    dönüş TKelvin

def GetTCelsiusFromTKelvin(TKelvin: şamandıra) -> şamandıra:
    "" "
    Sıcaklığı santigrat dereceye (°C) dönüştürmek için yardımcı işlev
    Kelvin (K) cinsinden verilen sıcaklık.
        Argümanlar:
        TKelvin: Kelvin cinsinden sıcaklık (K)
        İadeler:
        Santigrat derece cinsinden sıcaklık (°C)
        Referans:
        Referans: ASHRAE El Kitabı - Temel Bilgiler (2017) böl. 1 bölüm 3
        Notlar:
                Tam dönüşüm.
        "" "
    dönüş TKelvin - ZERO_CELSIUS_AS_KELVIN


#################################################################### #################################################################### ###
# Çiy noktası, yaş termometre ve bağıl nem arasındaki dönüşümler
#################################################################### #################################################################### ###

def GetTWetBulbFromTDewPoint(TDryBulb: şamandıra, TDewPoint: şamandıra, Basınç: şamandıra) -> şamandıra:
    "" "
    Kuru termometre sıcaklığı, çiy noktası sıcaklığı ve basınç verildiğinde dönüş yaş termometre sıcaklığı.
        Argümanlar:
        TdryBulb : °F [IP] veya °C [SI] cinsinden kuru termometre sıcaklığı
        TDewPoint : °F [IP] veya °C [SI] cinsinden çiğlenme noktası sıcaklığı
        Basınç : Psi [IP] veya Pa [SI] cinsinden atmosferik basınç
        İadeler:
        °F [IP] veya °C [SI] cinsinden yaş termometre sıcaklığı
        Referans:
        ASHRAE El Kitabı - Temel Bilgiler (2017) böl. 1
        "" "
    eğer TDewPoint > TDryBulb:
        yükseltmek Değer Hatası("Çiy noktası sıcaklığı kuru termometre sıcaklığının üzerinde")

    HumRatio = GetHumRatioFromTDewPoint(TDewPoint, Basınç)
    TWetBulb = GetTWetBulbFromHumRatio(TDryBulb, HumRatio, Basınç)
    dönüş TWetBulb

def GetTWetBulbFromRelHum(TDryBulb: şamandıra, RelHum: şamandıra, Basınç: şamandıra) -> şamandıra:
    "" "
    Kuru termometre sıcaklığı, bağıl nem ve basınç verildiğinde yaş termometre sıcaklığını geri getirin.
        Argümanlar:
        TdryBulb : °F [IP] veya °C [SI] cinsinden kuru termometre sıcaklığı
        RelHum : [0, 1] aralığında bağıl nem
        Basınç : Psi [IP] veya Pa [SI] cinsinden atmosferik basınç
        İadeler:
        °F [IP] veya °C [SI] cinsinden yaş termometre sıcaklığı
        Referans:
        ASHRAE El Kitabı - Temel Bilgiler (2017) böl. 1
        "" "
    eğer RelHum <  veya RelHum > 1:
        yükseltmek Değer Hatası("Bağıl nem [0, 1] aralığının dışında")

    HumRatio = GetHumRatioFromRelHum(TDryBulb, RelHum, Basınç)
    TWetBulb = GetTWetBulbFromHumRatio(TDryBulb, HumRatio, Basınç)
    dönüş TWetBulb

def GetRelHumFromTDewPoint(TDryBulb: şamandıra, TDewPoint: şamandıra) -> şamandıra:
    "" "
    Kuru termometre sıcaklığı ve çiy noktası sıcaklığı verilen bağıl nemi geri getirin.
        Argümanlar:
        TdryBulb : °F [IP] veya °C [SI] cinsinden kuru termometre sıcaklığı
        TDewPoint : °F [IP] veya °C [SI] cinsinden çiğlenme noktası sıcaklığı
        İadeler:
        [0, 1] aralığında bağıl nem
        Referans:
        ASHRAE El Kitabı - Temel Bilgiler (2017) böl. 1 eş 22
        "" "
    eğer TDewPoint > TDryBulb:
        yükseltmek Değer Hatası("Çiy noktası sıcaklığı kuru termometre sıcaklığının üzerinde")

    VapPres = GetSatVapPres (TDewPoint)
    SatVapPres = GetSatVapPres (TDryBulb)
    RelHum = VapPres / SatVapPres
    dönüş RelHum

def GetRelHumFromTWetBulb(TDryBulb: şamandıra, TWetBulb: şamandıra, Basınç: şamandıra) -> şamandıra:
    "" "
    Kuru termometre sıcaklığı, yaş termometre sıcaklığı ve basıncı verilen bağıl nemi geri getirin.
        Argümanlar:
        TdryBulb : °F [IP] veya °C [SI] cinsinden kuru termometre sıcaklığı
        TWetBulb : °F [IP] veya °C [SI] cinsinden yaş termometre sıcaklığı
        Basınç : Psi [IP] veya Pa [SI] cinsinden atmosferik basınç
        İadeler:
        [0, 1] aralığında bağıl nem
        Referans:
        ASHRAE El Kitabı - Temel Bilgiler (2017) böl. 1
        "" "
    eğer TWetBulb > TDryBulb:
        yükseltmek Değer Hatası("Islak hazne sıcaklığı kuru hazne sıcaklığının üzerinde")

    HumRatio = GetHumRatioFromTWetBulb(TDryBulb, TWetBulb, Basınç)
    RelHum =  GetRelHumFromHumRatio(TDryBulb, HumRatio, Basınç)
    dönüş RelHum

def GetTDewPointFromRelHum(TDryBulb: şamandıra, RelHum: şamandıra) -> şamandıra:
    "" "
    Kuru termometre sıcaklığı ve bağıl nem verildiğinde dönüş çiğlenme noktası sıcaklığı.
        Argümanlar:
        TdryBulb : °F [IP] veya °C [SI] cinsinden kuru termometre sıcaklığı
        RelHum: [0, 1] aralığında bağıl nem
        İadeler:
        °F [IP] veya °C [SI] cinsinden çiğlenme noktası sıcaklığı
        Referans:
        ASHRAE El Kitabı - Temel Bilgiler (2017) böl. 1
        "" "
    eğer RelHum <  veya RelHum > 1:
        yükseltmek Değer Hatası("Bağıl nem [0, 1] aralığının dışında")

    VapPres = GetVapPresFromRelHum (TDryBulb, RelHum)
    TDewPoint = GetTDewPointFromVapPres(TDryBulb, VapPres)
    dönüş TDewPoint

def GetTDewPointFromTWetBulb(TDryBulb: şamandıra, TWetBulb: şamandıra, Basınç: şamandıra) -> şamandıra:
    "" "
    Kuru termometre sıcaklığı, yaş termometre sıcaklığı ve basınç verildiğinde dönüş çiy noktası sıcaklığı.
        Argümanlar:
        TdryBulb : °F [IP] veya °C [SI] cinsinden kuru termometre sıcaklığı
        TWetBulb : °F [IP] veya °C [SI] cinsinden yaş termometre sıcaklığı
        Basınç : Psi [IP] veya Pa [SI] cinsinden atmosferik basınç
        İadeler:
        °F [IP] veya °C [SI] cinsinden çiğlenme noktası sıcaklığı
        Referans:
        ASHRAE El Kitabı - Temel Bilgiler (2017) böl. 1
        "" "
    eğer TWetBulb > TDryBulb:
        yükseltmek Değer Hatası("Islak hazne sıcaklığı kuru hazne sıcaklığının üzerinde")

    HumRatio = GetHumRatioFromTWetBulb(TDryBulb, TWetBulb, Basınç)
    TDewPoint = GetTDewPointFromHumRatio(TDryBulb, HumRatio, Basınç)
    dönüş TDewPoint


#################################################################### #################################################################### ###
# Çiy noktası veya bağıl nem ve buhar basıncı arasındaki dönüşümler
#################################################################### #################################################################### ###

def GetVapPresFromRelHum(TDryBulb: şamandıra, RelHum: şamandıra) -> şamandıra:
    "" "
    Bağıl nem ve sıcaklığın bir fonksiyonu olarak su buharının kısmi basıncını geri getirin.
        Argümanlar:
        TdryBulb : °F [IP] veya °C [SI] cinsinden kuru termometre sıcaklığı
        RelHum : [0, 1] aralığında bağıl nem
        İadeler:
        Nemli havadaki su buharının Psi [IP] veya Pa [SI] cinsinden kısmi basıncı
        Referans:
        ASHRAE El Kitabı - Temel Bilgiler (2017) böl. 1 eş 12, 22
        "" "
    eğer RelHum <  veya RelHum > 1:
        yükseltmek Değer Hatası("Bağıl nem [0, 1] aralığının dışında")

    VapPres = RelHum * GetSatVapPres (TDryBulb)
    dönüş VapPres

def GetRelHumFromVapPres(TDryBulb: şamandıra, VapPres: şamandıra) -> şamandıra:
    "" "
    Kuru termometre sıcaklığı ve buhar basıncı verilen bağıl nemi geri getirin.
        Argümanlar:
        TdryBulb : °F [IP] veya °C [SI] cinsinden kuru termometre sıcaklığı
        VapPres: Nemli havadaki su buharının Psi [IP] veya Pa [SI] cinsinden kısmi basıncı
        İadeler:
        [0, 1] aralığında bağıl nem
        Referans:
        ASHRAE El Kitabı - Temel Bilgiler (2017) böl. 1 eş 12, 22
        "" "
    eğer VapPres < :
        yükseltmek Değer Hatası("Nemli havadaki su buharının kısmi basıncı negatif olamaz")

    RelHum = VapPres / GetSatVapPres (TDryBulb)
    dönüş RelHum

def dLnPws_(TDryBulb: şamandıra) -> şamandıra:
    "" "
    Doymuş buhar basıncının doğal logaritmasının türevini döndüren yardımcı işlev 
    kuru termometre sıcaklığının bir fonksiyonu olarak.
        Argümanlar:
        TdryBulb : °F [IP] veya °C [SI] cinsinden kuru termometre sıcaklığı
        İadeler:
        Doymuş havanın buhar basıncının Psi [IP] veya Pa [SI] cinsinden doğal logaritmasının türevi
        Referans:
        ASHRAE El Kitabı - Temel Bilgiler (2017) böl. 1 eş 5 & 6
        "" "
    eğer isIP ():
        T = GetTRankineFromTFahrenheit(TDryBulb)
        eğer TDryBulb <= TRIPLE_POINT_WATER_IP:
            dLnPws = 1.0214165E+04 / math.pow (T, 2) - 5.3765794E-03 + 2 * 1.9202377E-07 * T  \
                  
                  + 3 * 3.5575832E-10 * math.pow (T, 2) - 4 * 9.0344688E-14 * math.pow (T, 3) + 4.1635019 / T
        Başka:
            dLnPws = 1.0440397E+04 / math.pow (T, 2) - 2.7022355E-02 + 2 * 1.2890360E-05 * T  \
                  
                  - 3 * 2.4780681E-09 * math.pow (T, 2) + 6.5459673 / T
    Başka:
        T = GetTKelvinFromTCelsius(TDryBulb)
        eğer TDryBulb <= TRIPLE_POINT_WATER_SI:
            dLnPws = 5.6745359E+03 / math.pow (T, 2) - 9.677843E-03 + 2 * 6.2215701E-07 * T  \
                  
                  + 3 * 2.0747825E-09 * math.pow (T, 2) - 4 * 9.484024E-13 * math.pow (T, 3) + 4.1635019 / T
        Başka:
            dLnPws = 5.8002206E+03 / math.pow (T, 2) - 4.8640239E-02 + 2 * 4.1764768E-05 * T  \
                  
                  - 3 * 1.4452093E-08 * math.pow (T, 2) + 6.5459673 / T

    dönüş dLnPws

def GetTDewPointFromVapPres(TDryBulb: şamandıra, VapPres: şamandıra) -> şamandıra:
    "" "
    Kuru termometre sıcaklığı ve buhar basıncı verilen dönüş çiğlenme noktası sıcaklığı.
        Argümanlar:
        TdryBulb : °F [IP] veya °C [SI] cinsinden kuru termometre sıcaklığı
        VapPres: Nemli havadaki su buharının Psi [IP] veya Pa [SI] cinsinden kısmi basıncı
        İadeler:
        °F [IP] veya °C [SI] cinsinden çiğlenme noktası sıcaklığı
        Referans:
        ASHRAE El Kitabı - Temel Bilgiler (2017) böl. 1 eş. 5 ve 6
        Notlar:
        Çiy noktası sıcaklığı, su buharı basıncını veren denklem ters çevrilerek çözülür.
        sağlanan regresyonları kullanmak yerine sıcaklıktan doygunlukta
        çok daha az doğru olan ve
        daha dar geçerlilik aralığı
        Su buharının logaritması için Newton-Raphson (NR) yöntemi kullanılır.
        çok düzgün bir fonksiyon olan sıcaklığın bir fonksiyonu olarak basınç
        Yakınsama genellikle 3 ila 5 yinelemede elde edilir. 
        TdryBulb burada gerçekten gerekli değil, sadece kolaylık sağlamak için kullanılıyor.
        "" "
    eğer isIP ():
        SINIRLAR = [-148, 392]
    Başka:
        SINIRLAR = [-100, 200]

    # Geçerlilik kontrolü -- dışında bir çözümün bulunamayacağı sınırlar
    eğer VapPres < GetSatVapPres (SINIRLAR []) veya VapPres > GetSatVapPres (SINIRLAR [1]):
        yükseltmek Değer Hatası("Su buharının kısmi basıncı, denklemlerin geçerlilik aralığının dışında")

    # Çözüme yaklaşmak için NR kullanıyoruz.
    # İlk tahmin
    TDewPoint = TDryBulb        # Çiy noktası sıcaklıklarının hesaplanan değeri, yinelemeli olarak çözüldü
    lnVP = math.log (VapPres)    # Nemli havadaki kısmi su buharı basıncı

    indeks = 1

    süre Doğru:
        TDewPoint_iter = TDewPoint   # NR hesaplamasında kullanılan TDewPoint
        lnVP_iter = math.log(GetSatVapPres(TDewPoint_iter))

        # Analitik olarak hesaplanan fonksiyonun türevi
        d_lnVP = dLnPws_ (TDewPoint_iter)

        # Yukarıda tanımlanan arama alanıyla sınırlanan yeni tahmin
        TDewPoint = TDewPoint_iter - (lnVP_iter - lnVP) / d_lnVP
        TDewPoint = maksimum(TDewPoint, SINIRLAR [])
        TDewPoint = dk(TDewPoint, SINIRLAR [1])

        eğer ((math.fabs (TDewPoint - TDewPoint_iter) <= PSYCHROLIB_TOLERANCE)):
            kırmak

        eğer (indeks > MAX_ITER_COUNT):
            yükseltmek Değer Hatası("GetTDewPointFromVapPres'te yakınsamaya ulaşılamadı. Durduruluyor.")

        indeks = indeks + 1

    TDewPoint = dk(TDewPoint, TDryBulb)
    dönüş TDewPoint

def GetVapPresFromTDewPoint(TDewPoint: şamandıra) -> şamandıra:
    "" "
    Çiy noktası sıcaklığı verilen dönüş buhar basıncı.
        Argümanlar:
        TDewPoint : °F [IP] veya °C [SI] cinsinden çiğlenme noktası sıcaklığı
        İadeler:
        Nemli havadaki su buharının Psi [IP] veya Pa [SI] cinsinden kısmi basıncı
        Referans:
        ASHRAE El Kitabı - Temel Bilgiler (2017) böl. 1 eş 36
        "" "
    VapPres = GetSatVapPres (TDewPoint)
    dönüş VapPres


#################################################################### #################################################################### ###
# Yaş termometre sıcaklığından, çiy noktası sıcaklığından veya bağıl nemden nem oranına dönüşümler
#################################################################### #################################################################### ###

def GetTWetBulbFromHumRatio(TDryBulb: şamandıra, HumRatio: şamandıra, Basınç: şamandıra) -> şamandıra:
    "" "
    Kuru termometre sıcaklığı, nem oranı ve basınç verildiğinde yaş termometre sıcaklığını geri getirin.
        Argümanlar:
        TdryBulb : °F [IP] veya °C [SI] cinsinden kuru termometre sıcaklığı
        HumRatio : lb_H₂O lb_Air⁻¹ [IP] veya kg_H₂O kg_Air⁻¹ [SI] cinsinden nem oranı
        Basınç : Psi [IP] veya Pa [SI] cinsinden atmosferik basınç
        İadeler:
        °F [IP] veya °C [SI] cinsinden yaş termometre sıcaklığı
        Referans:
        ASHRAE El Kitabı - Temel Bilgiler (2017) böl. 1 eqn 33 ve 35, Tstar için çözüldü
        "" "
    eğer HumRatio < :
        yükseltmek Değer Hatası("Nem oranı negatif olamaz")
    BoundedHumRatio = maksimum(HumRatio, MIN_HUM_RATIO)

    TDewPoint = GetTDewPointFromHumRatio(TDryBulb, BoundedHumRatio, Basınç)

    # İlk tahminler
    TWetBulbSup = TDryBulb
    TWetBulbInf = TDewPoint
    TWetBulb = (TWetBulbInf + TWetBulbSup) / 2

    indeks = 1
    # İkiye bölme döngüsü
    süre ((TWetBulbSup - TWetBulbInf) > PSYCHROLIB_TOLERANCE):

        # Tstar sıcaklığındaki nem oranını hesapla
        Wstar = GetHumRatioFromTWetBulb(TDryBulb, TWetBulb, Basınç)

        # Yeni sınırlar edinin
        eğer Wstar > BoundedHumRatio:
            TWetBulbSup = TWetBulb
        Başka:
            TWetBulbInf = TWetBulb

        # Yaş termometre sıcaklığının yeni tahmini
        TWetBulb = (TWetBulbSup + TWetBulbInf) / 2

        eğer (indeks > = MAX_ITER_COUNT):
            yükseltmek Değer Hatası("GetTWetBulbFromHumRatio'da yakınsama sağlanamadı. Duruyor.")

        indeks = indeks + 1
    dönüş TWetBulb

def GetHumRatioFromTWetBulb(TDryBulb: şamandıra, TWetBulb: şamandıra, Basınç: şamandıra) -> şamandıra:
    "" "
    Kuru termometre sıcaklığı, yaş termometre sıcaklığı ve basınç verilen dönüş nemi oranı.
        Argümanlar:
        TdryBulb : °F [IP] veya °C [SI] cinsinden kuru termometre sıcaklığı
        TWetBulb : °F [IP] veya °C [SI] cinsinden yaş termometre sıcaklığı
        Basınç : Psi [IP] veya Pa [SI] cinsinden atmosferik basınç
        İadeler:
        lb_H₂O lb_Air⁻¹ [IP] veya kg_H₂O kg_Air⁻¹ [SI] cinsinden nem oranı
        Referans:
        ASHRAE El Kitabı - Temel Bilgiler (2017) böl. 1 eş 33 ve 35
        "" "
    eğer TWetBulb > TDryBulb:
        yükseltmek Değer Hatası("Islak hazne sıcaklığı kuru hazne sıcaklığının üzerinde")

    Wsstar = GetSatHumRatio (TWetBulb, Basınç)

    eğer isIP ():
       eğer TWetBulb > = FREEZING_POINT_WATER_IP:
           HumRatio = ((1093 - 0.556 * TWetBulb) * Wsstar - 0.240 * (TDryBulb - TWetBulb))  \
                    
                    / (1093 + 0.444 * TDryBulb - TWetBulb)
       Başka:
           HumRatio = ((1220 - 0.04 * TWetBulb) * Wsstar - 0.240 * (TDryBulb - TWetBulb))  \
                    
                    / (1220 + 0.444 * TDryBulb - 0.48* TWetBulb)
    Başka:
       eğer TWetBulb > = FREEZING_POINT_WATER_SI:
           HumRatio = ((2501. - 2.326 * TWetBulb) * Wsstar - 1.006 * (TDryBulb - TWetBulb))  \
                    
                    / (2501. + 1.86 * TDryBulb - 4.186 * TWetBulb)
       Başka:
           HumRatio = ((2830. - 0.24 * TWetBulb) * Wsstar - 1.006 * (TDryBulb - TWetBulb))  \
                    
                    / (2830. + 1.86 * TDryBulb - 2.1 * TWetBulb)
    # Geçerlilik kontrolü.
    dönüş maksimum(HumRatio, MIN_HUM_RATIO)

def GetHumRatioFromRelHum(TDryBulb: şamandıra, RelHum: şamandıra, Basınç: şamandıra) -> şamandıra:
    "" "
    Kuru termometre sıcaklığı, bağıl nem ve basınç verilen dönüş nemi oranı.
        Argümanlar:
        TdryBulb : °F [IP] veya °C [SI] cinsinden kuru termometre sıcaklığı
        RelHum : [0, 1] aralığında bağıl nem
        Basınç : Psi [IP] veya Pa [SI] cinsinden atmosferik basınç
        İadeler:
        lb_H₂O lb_Air⁻¹ [IP] veya kg_H₂O kg_Air⁻¹ [SI] cinsinden nem oranı
        Referans:
        ASHRAE El Kitabı - Temel Bilgiler (2017) böl. 1
        "" "
    eğer RelHum <  veya RelHum > 1:
        yükseltmek Değer Hatası("Bağıl nem [0, 1] aralığının dışında")

    VapPres = GetVapPresFromRelHum (TDryBulb, RelHum)
    HumRatio = GetHumRatioFromVapPres(VapPres, Basınç)
    dönüş HumRatio

def GetRelHumFromHumRatio(TDryBulb: şamandıra, HumRatio: şamandıra, Basınç: şamandıra) -> şamandıra:
    "" "
    Kuru termometre sıcaklığı, nem oranı ve basınç verildiğinde bağıl nemi geri getirin.
        Argümanlar:
        TdryBulb : °F [IP] veya °C [SI] cinsinden kuru termometre sıcaklığı
        HumRatio : lb_H₂O lb_Air⁻¹ [IP] veya kg_H₂O kg_Air⁻¹ [SI] cinsinden nem oranı
        Basınç : Psi [IP] veya Pa [SI] cinsinden atmosferik basınç
        İadeler:
        [0, 1] aralığında bağıl nem
        Referans:
        ASHRAE El Kitabı - Temel Bilgiler (2017) böl. 1
        "" "
    eğer HumRatio < :
        yükseltmek Değer Hatası("Nem oranı negatif olamaz")

    VapPres = GetVapPresFromHumRatio(HumRatio, Basınç)
    RelHum = GetRelHumFromVapPres (TDryBulb, VapPres)
    dönüş RelHum

def GetHumRatioFromTDewPoint(TDewPoint: şamandıra, Basınç: şamandıra) -> şamandıra:
    "" "
    Çiy noktası sıcaklığı ve basıncı verilen dönüş nemi oranı.
        Argümanlar:
        TDewPoint : °F [IP] veya °C [SI] cinsinden çiğlenme noktası sıcaklığı
        Basınç : Psi [IP] veya Pa [SI] cinsinden atmosferik basınç
        İadeler:
        lb_H₂O lb_Air⁻¹ [IP] veya kg_H₂O kg_Air⁻¹ [SI] cinsinden nem oranı
        Referans:
        ASHRAE El Kitabı - Temel Bilgiler (2017) böl. 1 eş 13
        "" "
    VapPres = GetSatVapPres (TDewPoint)
    HumRatio = GetHumRatioFromVapPres(VapPres, Basınç)
    dönüş HumRatio

def GetTDewPointFromHumRatio(TDryBulb: şamandıra, HumRatio: şamandıra, Basınç: şamandıra) -> şamandıra:
    "" "
    Kuru termometre sıcaklığı, nem oranı ve basınç verildiğinde dönüş çiğlenme noktası sıcaklığı.
        Argümanlar:
        TdryBulb : °F [IP] veya °C [SI] cinsinden kuru termometre sıcaklığı
        HumRatio : lb_H₂O lb_Air⁻¹ [IP] veya kg_H₂O kg_Air⁻¹ [SI] cinsinden nem oranı
        Basınç : Psi [IP] veya Pa [SI] cinsinden atmosferik basınç
        İadeler:
        °F [IP] veya °C [SI] cinsinden çiğlenme noktası sıcaklığı
        Referans:
        ASHRAE El Kitabı - Temel Bilgiler (2017) böl. 1
        "" "
    eğer HumRatio < :
        yükseltmek Değer Hatası("Nem oranı negatif olamaz")

    VapPres = GetVapPresFromHumRatio(HumRatio, Basınç)
    TDewPoint = GetTDewPointFromVapPres(TDryBulb, VapPres)
    dönüş TDewPoint


#################################################################### #################################################################### ###
# Nem oranı ve buhar basıncı arasındaki dönüşümler
#################################################################### #################################################################### ###

def GetHumRatioFromVapPres(VapPres: şamandıra, Basınç: şamandıra) -> şamandıra:
    "" "
    Su buharı basıncı ve atmosfer basıncı verilen dönüş nemi oranı.
        Argümanlar:
        VapPres : Nemli havadaki su buharının Psi [IP] veya Pa [SI] cinsinden kısmi basıncı
        Basınç : Psi [IP] veya Pa [SI] cinsinden atmosferik basınç
        İadeler:
        lb_H₂O lb_Air⁻¹ [IP] veya kg_H₂O kg_Air⁻¹ [SI] cinsinden nem oranı
        Referans:
        ASHRAE El Kitabı - Temel Bilgiler (2017) böl. 1 eşdeğer 20
        "" "
    eğer VapPres < :
        yükseltmek Değer Hatası("Nemli havadaki su buharının kısmi basıncı negatif olamaz")

    HumRatio = 0.621945 * VapPres / (Basınç - VapPres)

    # Geçerlilik kontrolü.
    dönüş maksimum(HumRatio, MIN_HUM_RATIO)

def GetVapPresFromHumRatio(HumRatio: şamandıra, Basınç: şamandıra) -> şamandıra:
    "" "
    Nem oranı ve basıncı verilen dönüş buhar basıncı.
        Argümanlar:
        HumRatio : lb_H₂O lb_Air⁻¹ [IP] veya kg_H₂O kg_Air⁻¹ [SI] cinsinden nem oranı
        Basınç : Psi [IP] veya Pa [SI] cinsinden atmosferik basınç
        İadeler:
        Nemli havadaki su buharının Psi [IP] veya Pa [SI] cinsinden kısmi basıncı
        Referans:
        ASHRAE El Kitabı - Temel Bilgiler (2017) böl. 1 eqn 20 pw için çözüldü
        "" "
    eğer HumRatio < :
        yükseltmek Değer Hatası("Nem oranı negatiftir")
    BoundedHumRatio = maksimum(HumRatio, MIN_HUM_RATIO)

    VapPres = Basınç * BoundedHumRatio / (0.621945 + BoundedHumRatio)
    dönüş VapPres


#################################################################### #################################################################### ###
# Nem oranı ve özgül nem arasındaki dönüşümler
#################################################################### #################################################################### ###

def GetSpecificHumFromHumRatio(HumRatio: şamandıra) -> şamandıra:
    "" "
    Nem oranından (karıştırma oranı olarak da bilinir) özgül nemi geri getirin.
        Argümanlar:
        HumRatio : lb_H₂O lb_Dry_Air⁻¹ [IP] veya kg_H₂O kg_Dry_Air⁻¹ [SI] cinsinden nem oranı
        İadeler:
        lb_H₂O lb_Air⁻¹ [IP] veya kg_H₂O kg_Air⁻¹ [SI] cinsinden özgül nem
        Referans:
        ASHRAE El Kitabı - Temel Bilgiler (2017) böl. 1 eş 9b
        "" "
    eğer HumRatio < :
        yükseltmek Değer Hatası("Nem oranı negatif olamaz")
    BoundedHumRatio = maksimum(HumRatio, MIN_HUM_RATIO)

    SpecificHum = BoundedHumRatio / (1.0 + BoundedHumRatio)
    dönüş SpecificHum

def GetHumRatioFromSpecificHum(SpecificHum: şamandıra) -> şamandıra:
    "" "
    Belirli nemden nem oranını (diğer bir deyişle karışım oranı) döndürün.
        Argümanlar:
        SpecificHum : lb_H₂O lb_Air⁻¹ [IP] veya kg_H₂O kg_Air⁻¹ [SI] cinsinden özgül nem
        İadeler:
        lb_H₂O lb_Dry_Air⁻¹ [IP] veya kg_H₂O kg_Dry_Air⁻¹ [SI] cinsinden nem oranı
        Referans:
        ASHRAE El Kitabı - Temel Bilgiler (2017) böl. 1 eqn 9b (nem oranı için çözüldü)
        "" "
    eğer SpecificHum < 0.0 veya SpecificHum > = 1.0:
        yükseltmek Değer Hatası("Özgül nem [0, 1[" aralığının dışında)

    HumRatio = SpecificHum / (1.0 - SpecificHum)

    # Geçerlilik kontrolü.
    dönüş maksimum(HumRatio, MIN_HUM_RATIO)


#################################################################### #################################################################### ###
# Kuru Hava Hesaplamaları
#################################################################### #################################################################### ###

def GetDryAirEnthalpy(TDryBulb: şamandıra) -> şamandıra:
    "" "
    Kuru termometre sıcaklığı verilen kuru hava entalpisini geri getirin.
        Argümanlar:
        TdryBulb : °F [IP] veya °C [SI] cinsinden kuru termometre sıcaklığı
        İadeler:
        Btu lb⁻¹ [IP] veya J kg⁻¹ [SI] cinsinden kuru hava entalpisi
        Referans:
        ASHRAE El Kitabı - Temel Bilgiler (2017) böl. 1 eş 28
        "" "
    eğer isIP ():
        DryAirEntalpi = 0.240 * TDryBulb
    Başka:
        DryAirEntalpi = 1006 * TDryBulb
    dönüş DryAirEntalpi

def GetDryAirDensity(TDryBulb: şamandıra, Basınç: şamandıra) -> şamandıra:
    "" "
    Kuru termometre sıcaklığı ve basıncı verilen kuru hava yoğunluğunu geri getirin.
        Argümanlar:
        TdryBulb : °F [IP] veya °C [SI] cinsinden kuru termometre sıcaklığı
        Basınç : Psi [IP] veya Pa [SI] cinsinden atmosferik basınç
        İadeler:
        lb ft⁻³ [IP] veya kg m⁻³ [SI] cinsinden kuru hava yoğunluğu
        Referans:
        ASHRAE El Kitabı - Temel Bilgiler (2017) böl. 1
        Notlar:
        Kuru hava için mükemmel gaz ilişkisi için Denklem 14.
        Evrensel gaz sabiti için denklem 1.
        IP'deki 144 faktörü, Psi = lb in⁻²'nin lb ft⁻²'ye dönüştürülmesi içindir.
        "" "
    eğer isIP ():
        DryAirDensity = (144 * Basınç) / R_DA_IP / GetTRankineFromTFahrenheit(TDryBulb)
    Başka:
        DryAirDensity = Basınç / R_DA_SI / GetTKelvinFromTCelsius(TDryBulb)
    dönüş DryAirDensity

def GetDryAirVolume(TDryBulb: şamandıra, Basınç: şamandıra) -> şamandıra:
    "" "
    Kuru termometre sıcaklığı ve basıncı verilen kuru hava hacmini geri getirin.
        Argümanlar:
        TdryBulb : °F [IP] veya °C [SI] cinsinden kuru termometre sıcaklığı
        Basınç : Psi [IP] veya Pa [SI] cinsinden atmosferik basınç
        İadeler:
        ft³ lb⁻¹ [IP] veya m³ kg⁻¹ [SI] cinsinden kuru hava hacmi
        Referans:
        ASHRAE El Kitabı - Temel Bilgiler (2017) böl. 1
        Notlar:
        Kuru hava için mükemmel gaz ilişkisi için Denklem 14.
        Evrensel gaz sabiti için denklem 1.
        IP'deki 144 faktörü, Psi = lb in⁻²'nin lb ft⁻²'ye dönüştürülmesi içindir.
        "" "
    eğer isIP ():
        DryAirVolume = R_DA_IP * GetTRankineFromTFahrenheit(TDryBulb) / (144 * Basınç)
    Başka:
        DryAirVolume = R_DA_SI * GetTKelvinFromTCelsius(TDryBulb) / Basınç
    dönüş DryAirVolume


def GetTDryBulbFromEnthalpyAndHumRatio(MoistAirEnthalpy: şamandıra, HumRatio: şamandıra) -> şamandıra:
    "" "
    Entalpi ve nem oranından dönüş kuru termometre sıcaklığı.
        Argümanlar:
        MoistAirEnthalpy : Btu lb⁻¹ [IP] veya J kg⁻¹ cinsinden nemli hava entalpisi
        HumRatio : lb_H₂O lb_Air⁻¹ [IP] veya kg_H₂O kg_Air⁻¹ [SI] cinsinden nem oranı
        İadeler:
        °F [IP] veya °C [SI] cinsinden kuru termometre sıcaklığı
        Referans:
        ASHRAE El Kitabı - Temel Bilgiler (2017) böl. 1 eş 30
        Notlar:
        Sıcaklık için yeniden düzenlenmiş "GetMoistAirEnthalpy" işlevine dayalıdır.
        "" "
    eğer HumRatio < :
        yükseltmek Değer Hatası("Nem oranı negatiftir")
    BoundedHumRatio = maksimum(HumRatio, MIN_HUM_RATIO)

    eğer isIP ():
        TDryBulb  = (MoistAirEnthalpy - 1061.0 * BoundedHumRatio) / (0.240 + 0.444 * BoundedHumRatio)
    Başka:
        TDryBulb  = (MoistAirEnthalpy / 1000.0 - 2501.0 * BoundedHumRatio) / (1.006 + 1.86 * BoundedHumRatio)
    dönüş TDryBulb

def GetHumRatioFromEnthalpyAndTDryBulb(MoistAirEnthalpy: şamandıra, TDryBulb: şamandıra) -> şamandıra:
    "" "
    Entalpi ve kuru termometre sıcaklığından dönüş nemi oranı.
        Argümanlar:
        MoistAirEnthalpy : Btu lb⁻¹ [IP] veya J kg⁻¹ cinsinden nemli hava entalpisi
        TdryBulb : °F [IP] veya °C [SI] cinsinden kuru termometre sıcaklığı
        İadeler:
        lb_H₂O lb_Air⁻¹ [IP] veya kg_H₂O kg_Air⁻¹ [SI] cinsinden nem oranı
        Referans:
        ASHRAE El Kitabı - Temel Bilgiler (2017) böl. 1 eş 30.
        Notlar:
        `GetMoistAirEnthalpy` işlevine göre, nem oranı için yeniden düzenlenmiştir.
        "" "
    eğer isIP ():
        HumRatio  = (MoistAirEnthalpy - 0.240 * TDryBulb) / (1061.0 + 0.444 * TDryBulb)
    Başka:
        HumRatio  = (MoistAirEnthalpy / 1000.0 - 1.006 * TDryBulb) / (2501.0 + 1.86 * TDryBulb)

    # Geçerlilik kontrolü.
    dönüş maksimum(HumRatio, MIN_HUM_RATIO)


#################################################################### #################################################################### ###
# Doymuş Hava Hesaplamaları
#################################################################### #################################################################### ###

def GetSatVapPres(TDryBulb: şamandıra) -> şamandıra:
    "" "
    Kuru termometre sıcaklığında verilen doymuş buhar basıncına dönüş.
        Argümanlar:
        TdryBulb : °F [IP] veya °C [SI] cinsinden kuru termometre sıcaklığı
        İadeler:
        Psi [IP] veya Pa [SI] cinsinden doymuş havanın buhar basıncı
        Referans:
        ASHRAE El Kitabı - Temel Bilgiler (2017) böl. 1 eş 5 & 6
        Önemli not: ASHRAE formülleri donma noktasının üstünde ve altında tanımlanmıştır ancak
        donma noktasında bir süreksizlik. Bu, ASHRAE açısından küçük bir yanlışlıktır: formüller
        suyun üçlü noktasının üstünde ve altında tanımlanmalıdır (donma noktası değil), bu durumda
        süreksizlik ortadan kalkar. Suyun üçlü noktasını kullanmak önemlidir, aksi takdirde işlev görür
        Mevcut işlevi tersine çeviren GetTDewPointFromVapPres, etrafında düzgün bir şekilde yakınsamıyor
                donma noktası.
        "" "
    eğer isIP ():
        eğer (TDryBulb < -148 veya TDryBulb > 392)
            yükseltmek Değer Hatası("Kuru hazne sıcaklığı [-148, 392]°F aralığında olmalıdır")

        T = GetTRankineFromTFahrenheit(TDryBulb)

        eğer (TDryBulb <= TRIPLE_POINT_WATER_IP):
            LnPws = (-1.0214165E+04 / T - 4.8932428 - 5.3765794E-03 * T + 1.9202377E-07 * T **2  \
                  
                  + 3.5575832E-10 * math.pow (T, 3) - 9.0344688E-14 * math.pow (T, 4) + 4.1635019 * math.log (T))
        Başka:
            LnPws = -1.0440397E+04 / T - 1.1294650E+01 - 2.7022355E-02* T + 1.2890360E-05 * T **2  \
                  
                  - 2.4780681E-09 * math.pow (T, 3) + 6.5459673 * math.log (T)
    Başka:
        eğer (TDryBulb < -100 veya TDryBulb > 200)
            yükseltmek Değer Hatası("Kuru termometre sıcaklığı [-100, 200]°C aralığında olmalıdır")

        T = GetTKelvinFromTCelsius(TDryBulb)

        eğer (TDryBulb <= TRIPLE_POINT_WATER_SI):
            LnPws = -5.6745359E+03 / T + 6.3925247 - 9.677843E-03 * T + 6.2215701E-07 * T **2  \
                  
                  + 2.0747825E-09 * math.pow (T, 3) - 9.484024E-13 * math.pow (T, 4) + 4.1635019 * math.log (T)
        Başka:
            LnPws = -5.8002206E+03 / T + 1.3914993 - 4.8640239E-02 * T + 4.1764768E-05 * T **2  \
                  
                  - 1.4452093E-08 * math.pow (T, 3) + 6.5459673 * math.log (T)

    SatVapPres = math.exp (LnPws)
    dönüş SatVapPres

def GetSatHumRatio(TDryBulb: şamandıra, Basınç: şamandıra) -> şamandıra:
    "" "
    Kuru termometre sıcaklığı ve basıncı verilen doymuş havanın dönüş nem oranı.
        Argümanlar:
        TdryBulb : °F [IP] veya °C [SI] cinsinden kuru termometre sıcaklığı
        Basınç : Psi [IP] veya Pa [SI] cinsinden atmosferik basınç
        İadeler:
        lb_H₂O lb_Air⁻¹ [IP] veya kg_H₂O kg_Air⁻¹ [SI] cinsinden doymuş havanın nem oranı
        Referans:
        ASHRAE El Kitabı - Temel Bilgiler (2017) böl. 1 eqn 36, W için çözüldü
        "" "
    SatVaporPres = GetSatVapPres (TDryBulb)
    SatHumRatio = 0.621945 * SatVaporPres / (Basınç - SatVaporPres)

    # Geçerlilik kontrolü.
    dönüş maksimum(SatHumRatio, MIN_HUM_RATIO)

def GetSatAirEnthalpy(TDryBulb: şamandıra, Basınç: şamandıra) -> şamandıra:
    "" "
    Kuru termometre sıcaklığı ve basıncı verilen doymuş hava entalpisini geri getirin.
        Argümanlar:
        TdryBulb: °F [IP] veya °C [SI] cinsinden kuru termometre sıcaklığı
        Basınç: Psi [IP] veya Pa [SI] cinsinden atmosferik basınç
        İadeler:
        Btu lb⁻¹ [IP] veya J kg⁻¹ [SI] cinsinden doymuş hava entalpisi
        Referans:
        ASHRAE El Kitabı - Temel Bilgiler (2017) böl. 1
        "" "
    SatHumRatio = GetSatHumRatio (TDryBulb, Basınç)
    SatAirEnthalpy = GetMoistAirEnthalpy (TDryBulb, SatHumRatio)
    dönüş SatAirEnthalpy


#################################################################### #################################################################### ###
# Nemli Hava Hesaplamaları
#################################################################### #################################################################### ###

def GetVaporPressureDeficit(TDryBulb: şamandıra, HumRatio: şamandıra, Basınç: şamandıra) -> şamandıra:
    "" "
    Kuru termometre sıcaklığı, nem oranı ve basınç verildiğinde Geri Dönüş Buhar basıncı açığı.
        Argümanlar:
        TdryBulb : °F [IP] veya °C [SI] cinsinden kuru termometre sıcaklığı
        HumRatio : lb_H₂O lb_Air⁻¹ [IP] veya kg_H₂O kg_Air⁻¹ [SI] cinsinden nem oranı
        Basınç : Psi [IP] veya Pa [SI] cinsinden atmosferik basınç
        İadeler:
        Psi [IP] veya Pa [SI] cinsinden buhar basıncı açığı
        Referans:
                Oke (1987) eqn 2.13a
        "" "
    eğer HumRatio < :
        yükseltmek Değer Hatası("Nem oranı negatiftir")

    RelHum = GetRelHumFromHumRatio(TDryBulb, HumRatio, Basınç)
    Buhar Basıncı Eksikliği = GetSatVapPres (TDryBulb) * (1 - RelHum)
    dönüş Buhar Basıncı Eksikliği

def GetDegreeOfSaturation(TDryBulb: şamandıra, HumRatio: şamandıra, Basınç: şamandıra) -> şamandıra:
    "" "
    Doygunluk derecesini (yani havanın nem oranı / doygunluktaki havanın nem oranı) döndürür.
    aynı sıcaklık ve basınçta) kuru termometre sıcaklığı, nem oranı ve atmosfer basıncı verildiğinde.
        Argümanlar:
        TdryBulb : °F [IP] veya °C [SI] cinsinden kuru termometre sıcaklığı
        HumRatio : lb_H₂O lb_Air⁻¹ [IP] veya kg_H₂O kg_Air⁻¹ [SI] cinsinden nem oranı
        Basınç : Psi [IP] veya Pa [SI] cinsinden atmosferik basınç
        İadeler:
        İsteğe bağlı birimde doygunluk derecesi
        Referans:
        ASHRAE El Kitabı - Temel Bilgiler (2009) böl. 1 eş 12
        Notlar:
        Bu tanım 2017 El Kitabında yoktur. Bunun yerine 2009 sürümünü kullanma.
        "" "
    eğer HumRatio < :
        yükseltmek Değer Hatası("Nem oranı negatiftir")
    BoundedHumRatio = maksimum(HumRatio, MIN_HUM_RATIO)

    SatHumRatio = GetSatHumRatio (TDryBulb, Basınç)
    Doygunluk Derecesi = BoundedHumRatio / SatHumRatio
    dönüş Doygunluk Derecesi

def GetMoistAirEnthalpy(TDryBulb: şamandıra, HumRatio: şamandıra) -> şamandıra:
    "" "
    Kuru termometre sıcaklığı ve nem oranı verilen nemli hava entalpisini geri getirin.
        Argümanlar:
        TdryBulb : °F [IP] veya °C [SI] cinsinden kuru termometre sıcaklığı
        HumRatio : lb_H₂O lb_Air⁻¹ [IP] veya kg_H₂O kg_Air⁻¹ [SI] cinsinden nem oranı
        İadeler:
        Btu lb⁻¹ [IP] veya J kg⁻¹ cinsinden nemli hava entalpisi
        Referans:
        ASHRAE El Kitabı - Temel Bilgiler (2017) böl. 1 eş 30
        "" "
    eğer HumRatio < :
        yükseltmek Değer Hatası("Nem oranı negatiftir")
    BoundedHumRatio = maksimum(HumRatio, MIN_HUM_RATIO)

    eğer isIP ():
        MoistAirEnthalpy = 0.240 * TDryBulb + BoundedHumRatio * (1061 + 0.444 * TDryBulb)
    Başka:
        MoistAirEnthalpy = (1.006 * TDryBulb + BoundedHumRatio * (2501. + 1.86 * TDryBulb)) * 1000
    dönüş MoistAirEnthalpy

def GetMoistAirVolume(TDryBulb: şamandıra, HumRatio: şamandıra, Basınç: şamandıra) -> şamandıra:
    "" "
    Kuru termometre sıcaklığı, nem oranı ve basınç verilen nemli havanın belirli hacmini geri getirin.
        Argümanlar:
        TdryBulb : °F [IP] veya °C [SI] cinsinden kuru termometre sıcaklığı
        HumRatio : lb_H₂O lb_Air⁻¹ [IP] veya kg_H₂O kg_Air⁻¹ [SI] cinsinden nem oranı
        Basınç : Psi [IP] veya Pa [SI] cinsinden atmosferik basınç
        İadeler:
        Nemli havanın özgül hacmi ft³ lb⁻¹ kuru hava [IP] veya m³ kg⁻¹ kuru hava [SI]
        Referans:
        ASHRAE El Kitabı - Temel Bilgiler (2017) böl. 1 eş 26
        Notlar:
        IP birimlerinde, R_DA_IP / 144, eqn 26'da görünen katsayı olan 0.370486'ya eşittir.
        144 faktörü, Psi = lb in⁻²'nin lb ft⁻²'ye dönüştürülmesi içindir.
        "" "
    eğer HumRatio < :
        yükseltmek Değer Hatası("Nem oranı negatiftir")
    BoundedHumRatio = maksimum(HumRatio, MIN_HUM_RATIO)

    eğer isIP ():
        MoistAirVolume = R_DA_IP * GetTRankineFromTFahrenheit(TDryBulb) * (1 + 1.607858 * BoundedHumRatio) / (144 * Basınç)
    Başka:
        MoistAirVolume = R_DA_SI * GetTKelvinFromTCelsius(TDryBulb) * (1 + 1.607858 * BoundedHumRatio) / Basınç
    dönüş MoistAirVolume

def GetTDryBulbFromMoistAirVolumeAndHumRatio(MoistAirVolume: şamandıra, HumRatio: şamandıra, Basınç: şamandıra) -> şamandıra:
    "" "
    Nemli havaya özgül hacim, nem oranı ve basınç verildiğinde kuru termometre sıcaklığına dönüş.
        Argümanlar:
        MoistAirVolume: Nemli havanın ft³ lb⁻¹ kuru hava [IP] cinsinden veya m³ kg⁻¹ kuru hava [SI] cinsinden özgül hacmi
        HumRatio : lb_H₂O lb_Air⁻¹ [IP] veya kg_H₂O kg_Air⁻¹ [SI] cinsinden nem oranı
        Basınç : Psi [IP] veya Pa [SI] cinsinden atmosferik basınç
        İadeler:
        TdryBulb : °F [IP] veya °C [SI] cinsinden kuru termometre sıcaklığı
        Referans:
        ASHRAE El Kitabı - Temel Bilgiler (2017) böl. 1 eş 26
        Notlar:
        IP birimlerinde, R_DA_IP / 144, eqn 26'da görünen katsayı olan 0.370486'ya eşittir.
        144 faktörü, Psi = lb in⁻²'nin lb ft⁻²'ye dönüştürülmesi içindir.
        Kuru termometre sıcaklığı için yeniden düzenlenen "GetMoistAirVolume" işlevine dayalıdır.
        "" "
    eğer HumRatio < :
        yükseltmek Değer Hatası("Nem oranı negatiftir")
    BoundedHumRatio = maksimum(HumRatio, MIN_HUM_RATIO)

    eğer isIP ():
        TDryBulb = GetTFahrenheitFromTRankine(MoistAirVolume * (144 * Basınç)
                        / (R_DA_IP * (1 + 1.607858 * BoundedHumRatio)))
    Başka:
        TDryBulb = GetTCelsiusFromTKelvin(MoistAirVolume * Basınç
                        / (R_DA_SI * (1 + 1.607858 * BoundedHumRatio)))
    dönüş TDryBulb

def GetMoistAirDensity(TDryBulb: şamandıra, HumRatio: şamandıra, Basınç:şamandıra) -> şamandıra:
    "" "
    Nem oranı, kuru termometre sıcaklığı ve basıncı verilen nemli hava yoğunluğunu geri getirin.
        Argümanlar:
        TdryBulb : °F [IP] veya °C [SI] cinsinden kuru termometre sıcaklığı
        HumRatio : lb_H₂O lb_Air⁻¹ [IP] veya kg_H₂O kg_Air⁻¹ [SI] cinsinden nem oranı
        Basınç : Psi [IP] veya Pa [SI] cinsinden atmosferik basınç
        İadeler:
        MoistAirDensity: lb ft⁻³ [IP] veya kg m⁻³ [SI] cinsinden nemli hava yoğunluğu
        Referans:
        ASHRAE El Kitabı - Temel Bilgiler (2017) böl. 1 eş 11
        "" "
    eğer HumRatio < :
        yükseltmek Değer Hatası("Nem oranı negatiftir")
    BoundedHumRatio = maksimum(HumRatio, MIN_HUM_RATIO)

    MoistAirVolume = GetMoistAirVolume (TDryBulb, BoundedHumRatio, Basınç)
    MoistAirDensity = (1 + BoundedHumRatio) / MoistAirVolume
    dönüş MoistAirDensity


#################################################################### #################################################################### ###
# Standart atmosfer
#################################################################### #################################################################### ###

def GetStandardAtmPressure(Rakım: şamandıra) -> şamandıra:
    "" "
    Yükseklik (irtifa) veriliyken standart atmosfer barometrik basıncını getirin.
        Argümanlar:
        Yükseklik: ft [IP] veya m [SI] cinsinden yükseklik
        İadeler:
        Psi [IP] veya Pa [SI] cinsinden standart atmosfer barometrik basıncı
        Referans:
        ASHRAE El Kitabı - Temel Bilgiler (2017) böl. 1 eş 3
        "" "

    eğer isIP ():
        StandardAtmPressure = 14.696 * math.pow (1 - 6.8754e-06 * Rakım, 5.2559)
    Başka:
        StandardAtmPressure = 101325 * math.pow (1 - 2.25577e-05 * Rakım, 5.2559)
    dönüş StandardAtmPressure

def GetStandardAtmTemperature(Rakım: şamandıra) -> şamandıra:
    "" "
    Yükseklik (irtifa) verilen standart atmosfer sıcaklığını getirin.
        Argümanlar:
        Yükseklik: ft [IP] veya m [SI] cinsinden yükseklik
        İadeler:
        °F [IP] veya °C [SI] cinsinden standart atmosfer kuru termometre sıcaklığı
        Referans:
        ASHRAE El Kitabı - Temel Bilgiler (2017) böl. 1 eş 4
        "" "
    eğer isIP ():
        StandartAtm Sıcaklığı = 59 - 0.00356620 * Rakım
    Başka:
        StandartAtm Sıcaklığı = 15 - 0.0065 * Rakım
    dönüş StandartAtm Sıcaklığı

def GetSeaLevelPressure(İstasyon Basıncı: şamandıra, Rakım: şamandıra, TDryBulb: şamandıra) -> şamandıra:

    "" "
    Kuru termometre sıcaklığı, deniz seviyesinden yükseklik ve basınç verilen dönüş deniz seviyesi basıncı.
        Argümanlar:
        İstasyon Basıncı : Psi [IP] veya Pa [SI] cinsinden gözlemlenen istasyon basıncı
        Yükseklik: ft [IP] veya m [SI] cinsinden yükseklik
        TdryBulb : °F [IP] veya °C [SI] cinsinden kuru termometre sıcaklığı
        İadeler:
        Psi [IP] veya Pa [SI] cinsinden deniz seviyesi barometrik basıncı
        Referans:
        Hess SL, Teorik meteorolojiye giriş, Holt Rinehart ve Winston, NY 1959,
        bölüm 6.5; Stull RB, bilim adamları ve mühendisler için Meteoroloji, 2. baskı,
        Brooks/Cole 2000, bölüm. 1.
        Notlar:
        ABD için standart prosedür, TdryBulb için ortalama
        geçerli istasyon sıcaklığı ve 12 saat önceki istasyon sıcaklığı.
        "" "
    eğer isIP ():
        # Bir atlama oranı varsayarak, hava sütunundaki ortalama sıcaklığı hesaplayın
        3.6 ° F / 1000ft
        TColumn = TDryBulb + 0.0036 * Rakım / 2

        # Ölçek yüksekliğini belirleyin
        H = 53.351 * GetTRankineFromTFahrenheit(TColumn)
    Başka:
        # Bir atlama oranı varsayarak, hava sütunundaki ortalama sıcaklığı hesaplayın
        6.5 ° C / km içerisinde
        TColumn = TDryBulb + 0.0065 * Rakım / 2

        # Ölçek yüksekliğini belirleyin
        H = 287.055 * GetTKelvinFromTCelsius(TColumn) / 9.807

    # Deniz seviyesi basıncını hesaplayın
    Deniz Seviyesi Basıncı = İstasyon Basıncı * math.exp (Rakım / H)
    dönüş Deniz Seviyesi Basıncı

def GetStationPressure(Deniz Seviyesi Basıncı: şamandıra, Rakım: şamandıra, TDryBulb: şamandıra) -> şamandıra:
    "" "
    Deniz seviyesi basıncından dönüş istasyonu basıncı.
        Argümanlar:
        SeaLevelPressure : Psi [IP] veya Pa [SI] cinsinden deniz seviyesi barometrik basıncı
        Yükseklik: ft [IP] veya m [SI] cinsinden yükseklik
        TdryBulb : °F [IP] veya °C [SI] cinsinden kuru termometre sıcaklığı
        İadeler:
        Psi [IP] veya Pa [SI] cinsinden istasyon basıncı
        Referans:
        Bakınız 'GetSeaLevelPressure'
        Notlar:
        Bu işlev, 'GetSeaLevelPressure'ın tam tersidir.
        "" "
    İstasyon Basıncı = Deniz Seviyesi Basıncı / GetSeaLevelPressure (1, Rakım, TDryBulb)
    dönüş İstasyon Basıncı


#################################################################### #################################################################### ##
# Tüm psikrometrik değerleri ayarlama işlevleri
#################################################################### #################################################################### ###

def CalcPsychrometricsFromTWetBulb(TDryBulb: şamandıra, TWetBulb: şamandıra, Basınç: şamandıra) -> tuple:
    "" "
    Nem oranını, çiy noktası sıcaklığını, bağıl nemi hesaplamak için yardımcı fonksiyon,
    buhar basıncı, nemli hava entalpisi, nemli hava hacmi ve verilen havanın doyma derecesi
    kuru termometre sıcaklığı, yaş termometre sıcaklığı ve basınç.
        Argümanlar:
        TdryBulb : °F [IP] veya °C [SI] cinsinden kuru termometre sıcaklığı
        TWetBulb : °F [IP] veya °C [SI] cinsinden yaş termometre sıcaklığı
        Basınç : Psi [IP] veya Pa [SI] cinsinden atmosferik basınç
        İadeler:
        lb_H₂O lb_Air⁻¹ [IP] veya kg_H₂O kg_Air⁻¹ [SI] cinsinden nem oranı
        °F [IP] veya °C [SI] cinsinden çiğlenme noktası sıcaklığı
        [0, 1] aralığında bağıl nem
        Nemli havadaki su buharının Psi [IP] veya Pa [SI] cinsinden kısmi basıncı
        Btu lb⁻¹ [IP] veya J kg⁻¹ [SI] cinsinden nemli hava entalpisi
        Nemli havanın özgül hacmi ft³ lb⁻¹ [IP] veya m³ kg⁻¹ [SI] cinsinden
        Doygunluk derecesi [birimsiz]
        "" "
    HumRatio = GetHumRatioFromTWetBulb(TDryBulb, TWetBulb, Basınç)
    TDewPoint = GetTDewPointFromHumRatio(TDryBulb, HumRatio, Basınç)
    RelHum = GetRelHumFromHumRatio(TDryBulb, HumRatio, Basınç)
    VapPres = GetVapPresFromHumRatio(HumRatio, Basınç)
    MoistAirEnthalpy = GetMoistAirEnthalpy (TDryBulb, HumRatio)
    MoistAirVolume = GetMoistAirVolume (TDryBulb, HumRatio, Basınç)
    Doygunluk Derecesi = GetDegreeOfSaturation(TDryBulb, HumRatio, Basınç)
    dönüş HumRatio, TDewPoint, RelHum, VapPres, MoistAirEnthalpy, MoistAirVolume, Doygunluk Derecesi

def CalcPsychrometricsFromTDewPoint(TDryBulb: şamandıra, TDewPoint: şamandıra, Basınç: şamandıra) -> tuple:
    "" "
    Nem oranını, yaş termometre sıcaklığını, bağıl nemi hesaplamak için yardımcı fonksiyon,
    buhar basıncı, nemli hava entalpisi, nemli hava hacmi ve verilen havanın doyma derecesi
    kuru termometre sıcaklığı, çiğ noktası sıcaklığı ve basınç.
        Argümanlar:
        TdryBulb : °F [IP] veya °C [SI] cinsinden kuru termometre sıcaklığı
        TDewPoint : °F [IP] veya °C [SI] cinsinden çiğlenme noktası sıcaklığı
        Basınç : Psi [IP] veya Pa [SI] cinsinden atmosferik basınç
        İadeler:
        lb_H₂O lb_Air⁻¹ [IP] veya kg_H₂O kg_Air⁻¹ [SI] cinsinden nem oranı
        °F [IP] veya °C [SI] cinsinden yaş termometre sıcaklığı
        [0, 1] aralığında bağıl nem
        Nemli havadaki su buharının Psi [IP] veya Pa [SI] cinsinden kısmi basıncı
        Btu lb⁻¹ [IP] veya J kg⁻¹ [SI] cinsinden nemli hava entalpisi
        Nemli havanın özgül hacmi ft³ lb⁻¹ [IP] veya m³ kg⁻¹ [SI] cinsinden
        Doygunluk derecesi [birimsiz]
        "" "
    HumRatio = GetHumRatioFromTDewPoint(TDewPoint, Basınç)
    TWetBulb = GetTWetBulbFromHumRatio(TDryBulb, HumRatio, Basınç)
    RelHum = GetRelHumFromHumRatio(TDryBulb, HumRatio, Basınç)
    VapPres = GetVapPresFromHumRatio(HumRatio, Basınç)
    MoistAirEnthalpy = GetMoistAirEnthalpy (TDryBulb, HumRatio)
    MoistAirVolume = GetMoistAirVolume (TDryBulb, HumRatio, Basınç)
    Doygunluk Derecesi = GetDegreeOfSaturation(TDryBulb, HumRatio, Basınç)
    dönüş HumRatio, TWetBulb, RelHum, VapPres, MoistAirEnthalpy, MoistAirVolume, Doygunluk Derecesi

def CalcPsychrometricsFromRelHum(TDryBulb: şamandıra, RelHum: şamandıra, Basınç: şamandıra) -> tuple:
    "" "
    Nem oranı, yaş termometre sıcaklığı, çiy noktası sıcaklığı,
    buhar basıncı, nemli hava entalpisi, nemli hava hacmi ve verilen havanın doyma derecesi
    kuru termometre sıcaklığı, bağıl nem ve basınç.
        Argümanlar:
        TdryBulb : °F [IP] veya °C [SI] cinsinden kuru termometre sıcaklığı
        RelHum : [0, 1] aralığında bağıl nem
        Basınç : Psi [IP] veya Pa [SI] cinsinden atmosferik basınç
        İadeler:
        lb_H₂O lb_Air⁻¹ [IP] veya kg_H₂O kg_Air⁻¹ [SI] cinsinden nem oranı
        °F [IP] veya °C [SI] cinsinden yaş termometre sıcaklığı
        °F [IP] veya °C [SI] cinsinden çiğlenme noktası sıcaklığı.
        Nemli havadaki su buharının Psi [IP] veya Pa [SI] cinsinden kısmi basıncı
        Btu lb⁻¹ [IP] veya J kg⁻¹ [SI] cinsinden nemli hava entalpisi
        Nemli havanın özgül hacmi ft³ lb⁻¹ [IP] veya m³ kg⁻¹ [SI] cinsinden
        Doygunluk derecesi [birimsiz]
        "" "
    HumRatio = GetHumRatioFromRelHum(TDryBulb, RelHum, Basınç)
    TWetBulb = GetTWetBulbFromHumRatio(TDryBulb, HumRatio, Basınç)
    TDewPoint = GetTDewPointFromHumRatio(TDryBulb, HumRatio, Basınç)
    VapPres = GetVapPresFromHumRatio(HumRatio, Basınç)
    MoistAirEnthalpy = GetMoistAirEnthalpy (TDryBulb, HumRatio)
    MoistAirVolume = GetMoistAirVolume (TDryBulb, HumRatio, Basınç)
    Doygunluk Derecesi = GetDegreeOfSaturation(TDryBulb, HumRatio, Basınç)
    dönüş HumRatio, TWetBulb, TDewPoint, VapPres, MoistAirEnthalpy, MoistAirVolume, Doygunluk Derecesi

C_sharp

   1
   2
   3
   4
   5
   6
   7
   8
   9
  10
  11
  12
  13
  14
  15
  16
  17
  18
  19
  20
  21
  22
  23
  24
  25
  26
  27
  28
  29
  30
  31
  32
  33
  34
  35
  36
  37
  38
  39
  40
  41
  42
  43
  44
  45
  46
  47
  48
  49
  50
  51
  52
  53
  54
  55
  56
  57
  58
  59
  60
  61
  62
  63
  64
  65
  66
  67
  68
  69
  70
  71
  72
  73
  74
  75
  76
  77
  78
  79
  80
  81
  82
  83
  84
  85
  86
  87
  88
  89
  90
  91
  92
  93
  94
  95
  96
  97
  98
  99
 100
 101
 102
 103
 104
 105
 106
 107
 108
 109
 110
 111
 112
 113
 114
 115
 116
 117
 118
 119
 120
 121
 122
 123
 124
 125
 126
 127
 128
 129
 130
 131
 132
 133
 134
 135
 136
 137
 138
 139
 140
 141
 142
 143
 144
 145
 146
 147
 148
 149
 150
 151
 152
 153
 154
 155
 156
 157
 158
 159
 160
 161
 162
 163
 164
 165
 166
 167
 168
 169
 170
 171
 172
 173
 174
 175
 176
 177
 178
 179
 180
 181
 182
 183
 184
 185
 186
 187
 188
 189
 190
 191
 192
 193
 194
 195
 196
 197
 198
 199
 200
 201
 202
 203
 204
 205
 206
 207
 208
 209
 210
 211
 212
 213
 214
 215
 216
 217
 218
 219
 220
 221
 222
 223
 224
 225
 226
 227
 228
 229
 230
 231
 232
 233
 234
 235
 236
 237
 238
 239
 240
 241
 242
 243
 244
 245
 246
 247
 248
 249
 250
 251
 252
 253
 254
 255
 256
 257
 258
 259
 260
 261
 262
 263
 264
 265
 266
 267
 268
 269
 270
 271
 272
 273
 274
 275
 276
 277
 278
 279
 280
 281
 282
 283
 284
 285
 286
 287
 288
 289
 290
 291
 292
 293
 294
 295
 296
 297
 298
 299
 300
 301
 302
 303
 304
 305
 306
 307
 308
 309
 310
 311
 312
 313
 314
 315
 316
 317
 318
 319
 320
 321
 322
 323
 324
 325
 326
 327
 328
 329
 330
 331
 332
 333
 334
 335
 336
 337
 338
 339
 340
 341
 342
 343
 344
 345
 346
 347
 348
 349
 350
 351
 352
 353
 354
 355
 356
 357
 358
 359
 360
 361
 362
 363
 364
 365
 366
 367
 368
 369
 370
 371
 372
 373
 374
 375
 376
 377
 378
 379
 380
 381
 382
 383
 384
 385
 386
 387
 388
 389
 390
 391
 392
 393
 394
 395
 396
 397
 398
 399
 400
 401
 402
 403
 404
 405
 406
 407
 408
 409
 410
 411
 412
 413
 414
 415
 416
 417
 418
 419
 420
 421
 422
 423
 424
 425
 426
 427
 428
 429
 430
 431
 432
 433
 434
 435
 436
 437
 438
 439
 440
 441
 442
 443
 444
 445
 446
 447
 448
 449
 450
 451
 452
 453
 454
 455
 456
 457
 458
 459
 460
 461
 462
 463
 464
 465
 466
 467
 468
 469
 470
 471
 472
 473
 474
 475
 476
 477
 478
 479
 480
 481
 482
 483
 484
 485
 486
 487
 488
 489
 490
 491
 492
 493
 494
 495
 496
 497
 498
 499
 500
 501
 502
 503
 504
 505
 506
 507
 508
 509
 510
 511
 512
 513
 514
 515
 516
 517
 518
 519
 520
 521
 522
 523
 524
 525
 526
 527
 528
 529
 530
 531
 532
 533
 534
 535
 536
 537
 538
 539
 540
 541
 542
 543
 544
 545
 546
 547
 548
 549
 550
 551
 552
 553
 554
 555
 556
 557
 558
 559
 560
 561
 562
 563
 564
 565
 566
 567
 568
 569
 570
 571
 572
 573
 574
 575
 576
 577
 578
 579
 580
 581
 582
 583
 584
 585
 586
 587
 588
 589
 590
 591
 592
 593
 594
 595
 596
 597
 598
 599
 600
 601
 602
 603
 604
 605
 606
 607
 608
 609
 610
 611
 612
 613
 614
 615
 616
 617
 618
 619
 620
 621
 622
 623
 624
 625
 626
 627
 628
 629
 630
 631
 632
 633
 634
 635
 636
 637
 638
 639
 640
 641
 642
 643
 644
 645
 646
 647
 648
 649
 650
 651
 652
 653
 654
 655
 656
 657
 658
 659
 660
 661
 662
 663
 664
 665
 666
 667
 668
 669
 670
 671
 672
 673
 674
 675
 676
 677
 678
 679
 680
 681
 682
 683
 684
 685
 686
 687
 688
 689
 690
 691
 692
 693
 694
 695
 696
 697
 698
 699
 700
 701
 702
 703
 704
 705
 706
 707
 708
 709
 710
 711
 712
 713
 714
 715
 716
 717
 718
 719
 720
 721
 722
 723
 724
 725
 726
 727
 728
 729
 730
 731
 732
 733
 734
 735
 736
 737
 738
 739
 740
 741
 742
 743
 744
 745
 746
 747
 748
 749
 750
 751
 752
 753
 754
 755
 756
 757
 758
 759
 760
 761
 762
 763
 764
 765
 766
 767
 768
 769
 770
 771
 772
 773
 774
 775
 776
 777
 778
 779
 780
 781
 782
 783
 784
 785
 786
 787
 788
 789
 790
 791
 792
 793
 794
 795
 796
 797
 798
 799
 800
 801
 802
 803
 804
 805
 806
 807
 808
 809
 810
 811
 812
 813
 814
 815
 816
 817
 818
 819
 820
 821
 822
 823
 824
 825
 826
 827
 828
 829
 830
 831
 832
 833
 834
 835
 836
 837
 838
 839
 840
 841
 842
 843
 844
 845
 846
 847
 848
 849
 850
 851
 852
 853
 854
 855
 856
 857
 858
 859
 860
 861
 862
 863
 864
 865
 866
 867
 868
 869
 870
 871
 872
 873
 874
 875
 876
 877
 878
 879
 880
 881
 882
 883
 884
 885
 886
 887
 888
 889
 890
 891
 892
 893
 894
 895
 896
 897
 898
 899
 900
 901
 902
 903
 904
 905
 906
 907
 908
 909
 910
 911
 912
 913
 914
 915
 916
 917
 918
 919
 920
 921
 922
 923
 924
 925
 926
 927
 928
 929
 930
 931
 932
 933
 934
 935
 936
 937
 938
 939
 940
 941
 942
 943
 944
 945
 946
 947
 948
 949
 950
 951
 952
 953
 954
 955
 956
 957
 958
 959
 960
 961
 962
 963
 964
 965
 966
 967
 968
 969
 970
 971
 972
 973
 974
 975
 976
 977
 978
 979
 980
 981
 982
 983
 984
 985
 986
 987
 988
 989
 990
 991
 992
 993
 994
 995
 996
 997
 998
 999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
/ *
 * PsychroLib (sürüm 2.3.0) (https://github.com/psychrometrics/psychrolib)
 * Telif Hakkı (c) 2018 D. Thevenard ve D. Meyer, D. Gosnell, mevcut kitaplık uygulaması için
 * Telif Hakkı (c) 2017 ASHRAE El Kitabı — ASHRAE denklemleri ve katsayıları için temel bilgiler
 * https://github.com/DJGosnell tarafından C#'a taşındı
 * MIT Lisansı altında lisanslanmıştır.
  * /

kullanma sistem;

ad alanı PsychroLib
{
    /// <özet>
    /// Nemli ve kuru havanın psikrometrik özelliklerinin hesaplanmasını sağlayan fonksiyon sınıfı.
    /// </summary>
    halka açık sınıf Psikrometrik
    {
        /********************************************** ************************************************ ***
                  * Global sabitler
         ************************************************ ************************************************ */

        /// <özet>
        /// Derece Rankine (°R) olarak ifade edilen sıfır derece Fahrenheit (°F).
        /// Referans: ASHRAE El Kitabı - Temel Bilgiler (2017) bölüm. 39.
        /// </summary>
        özel sabit çift ZERO_FAHRENHEIT_AS_RANKINE = 459.67;

        /// <özet>
        /// Kelvin (K) olarak ifade edilen sıfır santigrat derece (°C).
        /// Referans: ASHRAE El Kitabı - Temel Bilgiler (2017) bölüm. 39.
        /// </summary>
        özel sabit çift ZERO_CELSIUS_AS_KELVIN = 273.15;

        /// <özet>
        /// Kuru hava için evrensel gaz sabiti (IP versiyonu) ft lb_Force lb_DryAir⁻¹ R⁻¹ cinsinden.
        /// Referans: ASHRAE El Kitabı - Temel Bilgiler (2017) bölüm. 1.
        /// </summary>
        özel sabit çift R_DA_IP = 53.350;

        /// <özet>
        /// J kg_DryAir⁻¹ K⁻¹ cinsinden kuru hava (SI versiyonu) için evrensel gaz sabiti.
        /// Referans: ASHRAE El Kitabı - Temel Bilgiler (2017) bölüm. 1.
        /// </summary>
        özel sabit çift R_DA_SI = 287.042;

        /// <özet>
        /// Geçersiz değer (boyutsuz).
        /// </summary>
        özel sabit çift GEÇERSİZ = -99999;

        /// <özet>
        /// while döngülerinden çıkmadan önceki maksimum yineleme sayısı.
        /// </summary>
        özel sabit çift MAX_ITER_COUNT = 100;

        /// <özet>
        /// Herhangi bir fonksiyon tarafından kullanılan/döndürülen minimum kabul edilebilir nem oranı.
        /// 0'ın üzerindeki veya MIN_HUM_RATIO'nun altındaki herhangi bir değer bu değere sıfırlanacaktır.
        /// </summary>
        özel sabit çift MIN_HUM_RATIO = 1e-7;

        /// <özet>
        /// Fahrenheit cinsinden suyun donma noktası.
        /// </summary>
        özel sabit çift FREEZING_POINT_WATER_IP = 32.0;

        /// <özet>
        /// Santigrat cinsinden suyun donma noktası.
        /// </summary>
        özel sabit çift FREEZING_POINT_WATER_SI = 0.0;

        /// <özet>
        /// Fahrenheit cinsinden üçlü su noktası.
        /// </summary>
        özel sabit çift TRIPLE_POINT_WATER_IP = 32.018;

        /// <özet>
        /// Santigrat cinsinden suyun üçlü noktası.
        /// </summary>
        özel sabit çift TRIPLE_POINT_WATER_SI = 0.01;

        /// <özet>
        /// Hesaplamalar için geçerli birim sistemini alır veya ayarlar.
        /// </summary>
        halka açık Ölçü sistemi Ölçü sistemi
        {
            almak => _ölçü sistemi;
            set
            {
                _ölçü sistemi = değer;
                eğer (değer == UnitSystem.IP)
                    PSYCHROLIB_TOLERANCE = 0.001 * 9.0 / 5.0;
                Başka
                    PSYCHROLIB_TOLERANCE = 0.001;
            }
        }

        özel çift PSYCHROLIB_TOLERANCE;
        özel Ölçü sistemi _ölçü sistemi;

        /// <özet>
        ///Belirtilen birim sistemiyle örnek oluşturmak için yapıcı.
        /// </summary>
        /// <param name="unitSystem">Hesaplamalar için kullanılacak birim sistemi.</param>
        halka açık Psikrometrik(Ölçü sistemi ölçü sistemi)
        {
            Ölçü sistemi = ölçü sistemi;
        }


        /********************************************** ************************************************ ***
         * Sıcaklık birimleri arasında dönüştürme
         ************************************************ ************************************************ */

        /// <özet>
        /// Sıcaklığı derece Rankine'e (°R) dönüştürmek için yardımcı işlev
        /// Fahrenheit (°F) derecesi cinsinden verilen sıcaklık.
        /// Referans: ASHRAE El Kitabı - Temel Bilgiler (2017) bölüm. 1 bölüm 3
        /// </summary>
        /// <param name="tF">Sıcaklık Fahrenhayt (°F) cinsinden</param>
        /// <geri döner>Derece (°R)</geri döner>
        halka açık çift GetTRankineFromTFahrenheit(çift tF)
        {
            dönüş tF + ZERO_FAHRENHEIT_AS_RANKINE; / * tam * /
        }

        /// <özet>
        /// Sıcaklığı Fahrenheit (°F) derecesine dönüştürmek için yardımcı işlev
        /// derece Rankine (°R) cinsinden verilen sıcaklık.
        /// Referans: ASHRAE El Kitabı - Temel Bilgiler (2017) bölüm. 1 bölüm 3
        /// </summary>
        /// <param name="tR">Rankine cinsinden sıcaklık (°R)</param>
        /// <dönüş>Fahrenhayt (°F)</dönüş>
        halka açık çift GetTFahrenheitFromTRankine(çift tR)
        {
            dönüş tR - ZERO_FAHRENHEIT_AS_RANKINE; / * tam * /
        }

        /// <özet>
        /// Sıcaklığı Kelvin'e (K) dönüştürmek için yardımcı işlev
        /// santigrat derece (°C) cinsinden verilen sıcaklık.
        /// Referans: ASHRAE El Kitabı - Temel Bilgiler (2017) bölüm. 1 bölüm 3
        /// </summary>
        /// <param name="tC">Celsius cinsinden sıcaklık (°C)</param>
        /// <geri döner>Derece (°R)</geri döner>
        halka açık çift GetTKelvinFromTCelsius(çift tC)
        {
            dönüş tC + ZERO_CELSIUS_AS_KELVIN; / * tam * /
        }

        /// <özet>
        /// Sıcaklığı Santigrat dereceye (°C) dönüştürmek için yardımcı işlev
        /// Kelvin (K) cinsinden verilen sıcaklık.
        /// Referans: ASHRAE El Kitabı - Temel Bilgiler (2017) bölüm. 1 bölüm 3
        /// </summary>
        /// <param name="tK">Rankine cinsinden sıcaklık (°R)</param>
        /// <dönüş>Santigrat (°C)</dönüş>
        halka açık çift GetTCelsiusFromTKelvin(çift tK)
        {
            dönüş tK - ZERO_CELSIUS_AS_KELVIN; / * tam * /
        }


        /********************************************** ************************************************ ***
         * Çiy noktası, yaş termometre ve bağıl nem arasındaki dönüşümler
         ************************************************ ************************************************ */

        /// <özet>
        /// Kuru termometre sıcaklığı, çiy noktası sıcaklığı ve basınç verilen yaş termometre sıcaklığına dönüş.
        /// Referans: ASHRAE El Kitabı - Temel Bilgiler (2017) bölüm. 1
        /// </summary>
        /// <param name="tDryBulb">°F [IP] veya °C [SI] cinsinden kuru termometre sıcaklığı</param>
        /// <param name="tDewPoint">°F [IP] veya °C [SI] cinsinden çiğlenme noktası sıcaklığı</param>
        /// <param name="pressure">Psi [IP] veya Pa [SI] cinsinden atmosfer basıncı</param>
        /// <dönüş>°F [IP] veya °C [SI] cinsinden yaş termometre sıcaklığı</dönüş>
        halka açık çift GetTWetBulbFromTDewPoint(çift tDryBulb, çift tDewPoint, çift basınç)
        {
            eğer (! (tDewPoint <= tDryBulb))
                atmak yeni InvalidOperationException("Çiy noktası sıcaklığı kuru termometre sıcaklığının üzerinde");

            var humRatio = GetHumRatioFromTDewPoint(tDewPoint, basınç);
            dönüş GetTWetBulbFromHumRatio(tDryBulb, humRatio, basınç);
        }


        /// <özet>
        /// Kuru termometre sıcaklığı, bağıl nem ve basınç verildiğinde yaş termometre sıcaklığına dönüş.
        /// Referans: ASHRAE El Kitabı - Temel Bilgiler (2017) bölüm. 1
        /// </summary>
        /// <param name="tDryBulb">°F [IP] veya °C [SI] cinsinden kuru termometre sıcaklığı</param>
        /// <param name="relHum">Bağıl nem [0-1]</param>
        /// <param name="pressure">Psi [IP] veya Pa [SI] cinsinden atmosfer basıncı</param>
        /// <dönüş>°F [IP] veya °C [SI] cinsinden yaş termometre sıcaklığı</dönüş>
        halka açık çift GetTWetBulbFromRelHum(çift tDryBulb, çift relHum, çift basınç)
        {
            eğer (! (relHum > = 0.0 && relHum <= 1.0))
                atmak yeni InvalidOperationException("Bağıl nem [0,1] aralığının dışında");

            var humRatio = GetHumRatioFromRelHum(tDryBulb, relHum, basınç);
            dönüş GetTWetBulbFromHumRatio(tDryBulb, humRatio, basınç);
        }


        /// <özet>
        /// Kuru termometre sıcaklığı ve çiy noktası sıcaklığı verilen bağıl nemi iade edin.
        /// Referans: ASHRAE El Kitabı - Temel Bilgiler (2017) bölüm. 1 eş 22
        /// </summary>
        /// <param name="tDryBulb">°F [IP] veya °C [SI] cinsinden kuru termometre sıcaklığı</param>
        /// <param name="tDewPoint">°F [IP] veya °C [SI] cinsinden çiğlenme noktası sıcaklığı</param>
        /// <dönüş>Bağıl nem [0-1]</dönüş>
        halka açık çift GetRelHumFromTDewPoint(çift tDryBulb, çift tDewPoint)
        {
            eğer (! (tDewPoint <= tDryBulb))
                atmak yeni InvalidOperationException("Çiy noktası sıcaklığı kuru termometre sıcaklığının üzerinde");

            var vapPres = GetSatVapPres (tDewPoint);
            var satVapPres = GetSatVapPres (tDryBulb);
            dönüş vapPres / satVapPres;
        }

        /// <özet>
        /// Kuru termometre sıcaklığı, yaş termometre sıcaklığı ve basıncı verilen bağıl nemi geri getirin.
        /// Referans: ASHRAE El Kitabı - Temel Bilgiler (2017) bölüm. 1
        /// </summary>
        /// <param name="tDryBulb">°F [IP] veya °C [SI] cinsinden kuru termometre sıcaklığı</param>
        /// <param name="tWetBulb">°F [IP] veya °C [SI] cinsinden ıslak hazne sıcaklığı</param>
        /// <param name="pressure">Psi [IP] veya Pa [SI] cinsinden atmosfer basıncı</param>
        /// <dönüş>Bağıl nem [0-1]</dönüş>
        halka açık çift GetRelHumFromTWetBulb(çift tDryBulb, çift tWetBulb, çift basınç)
        {
            eğer (! (tWetBulb <= tDryBulb))
                atmak yeni InvalidOperationException("Islak hazne sıcaklığı kuru hazne sıcaklığının üzerinde");

            var humRatio = GetHumRatioFromTWetBulb(tDryBulb, tWetBulb, basınç);
            dönüş GetRelHumFromHumRatio(tDryBulb, humRatio, basınç);
        }

        /// <özet>
        /// Kuru termometre sıcaklığı ve bağıl nem verildiğinde dönüş çiğlenme noktası sıcaklığı.
        /// Referans: ASHRAE El Kitabı - Temel Bilgiler (2017) bölüm. 1
        /// </summary>
        /// <param name="tDryBulb">°F [IP] veya °C [SI] cinsinden kuru termometre sıcaklığı</param>
        /// <param name="relHum">Bağıl nem [0-1]</param>
        /// <dönüş>°F [IP] veya °C [SI] cinsinden Çiy Noktası sıcaklığı</dönüş>
        halka açık çift GetTDewPointFromRelHum(çift tDryBulb, çift relHum)
        {
            eğer (! (relHum > = 0.0 && relHum <= 1.0))
                atmak yeni InvalidOperationException("Bağıl nem [0,1] aralığının dışında");

            var vapPres = GetVapPresFromRelHum (tDryBulb, relHum);
            dönüş GetTDewPointFromVapPres(tDryBulb, vapPres);
        }

        /// <özet>
        /// Kuru termometre sıcaklığı, yaş termometre sıcaklığı ve basınç verildiğinde dönüş çiğlenme noktası sıcaklığı.
        /// Referans: ASHRAE El Kitabı - Temel Bilgiler (2017) bölüm. 1
        /// </summary>
        /// <param name="tDryBulb">°F [IP] veya °C [SI] cinsinden kuru termometre sıcaklığı</param>
        /// <param name="tWetBulb">°F [IP] veya °C [SI] cinsinden ıslak hazne sıcaklığı</param>
        /// <param name="pressure">Psi [IP] veya Pa [SI] cinsinden atmosfer basıncı</param>
        /// <dönüş>°F [IP] veya °C [SI] cinsinden Çiy Noktası sıcaklığı</dönüş>
        halka açık çift GetTDewPointFromTWetBulb(çift tDryBulb, çift tWetBulb, çift basınç)
        {
            eğer (! (tWetBulb <= tDryBulb))
                atmak yeni InvalidOperationException("Islak hazne sıcaklığı kuru hazne sıcaklığının üzerinde");

            var humRatio = GetHumRatioFromTWetBulb(tDryBulb, tWetBulb, basınç);
            dönüş GetTDewPointFromHumRatio(tDryBulb, humRatio, basınç);
        }


        /********************************************** ************************************************ ***
         * Çiy noktası veya bağıl nem ve buhar basıncı arasındaki dönüşümler
         ************************************************ ************************************************ */

        /// <özet>
        /// Bağıl nem ve sıcaklığın bir fonksiyonu olarak su buharının kısmi basıncını geri getirin.
        /// Referans: ASHRAE El Kitabı - Temel Bilgiler (2017) bölüm. 1 eş 12, 22
        /// </summary>
        /// <param name="tDryBulb">°F [IP] veya °C [SI] cinsinden kuru termometre sıcaklığı</param>
        /// <param name="relHum">Bağıl nem [0-1]</param>
        /// <dönüş>Nemli havadaki su buharının Psi [IP] veya Pa [SI] cinsinden kısmi basıncı</dönüş>
        halka açık çift GetVapPresFromRelHum(çift tDryBulb, çift relHum)
        {
            eğer (! (relHum > = 0.0 && relHum <= 1.0))
                atmak yeni InvalidOperationException("Bağıl nem [0,1] aralığının dışında");

            dönüş relHum * GetSatVapPres (tDryBulb);
        }

        /// <özet>
        /// Kuru termometre sıcaklığı ve buhar basıncı verilen bağıl nemi iade edin.
        /// Referans: ASHRAE El Kitabı - Temel Bilgiler (2017) bölüm. 1 eş 12, 22
        /// </summary>
        /// <param name="tDryBulb">°F [IP] veya °C [SI] cinsinden kuru termometre sıcaklığı</param>
        /// <param name="vapPres">Nemli havadaki su buharının Psi [IP] veya Pa [SI] cinsinden kısmi basıncı</param>
        /// <dönüş>Bağıl nem [0-1]</dönüş>
        halka açık çift GetRelHumFromVapPres(çift tDryBulb, çift vapPres)
        {
            eğer (! (vapPres > = 0.0))
                atmak yeni InvalidOperationException("Nemli havadaki su buharının kısmi basıncı negatiftir");

            dönüş vapPres / GetSatVapPres (tDryBulb);
        }

        /// <özet>
        /// Doymuş buhar basıncının doğal logaritmasının türevini döndüren yardımcı işlev
        /// kuru termometre sıcaklığının bir fonksiyonu olarak.
        /// Referans: ASHRAE El Kitabı - Temel Bilgiler (2017) bölüm. 1 eş. 5 & ​​amp; 6
        /// </summary>
        /// <param name="tDryBulb">°F [IP] veya °C [SI] cinsinden kuru termometre sıcaklığı</param>
        /// <dönüşler>Doymuş havanın buhar basıncının Psi [IP] veya Pa [SI] cinsinden doğal logaritmasının türevi</dönüşler>
        özel çift dLnPws_(çift tDryBulb)
        {
            çift dLnPws, T;

            eğer (Ölçü sistemi == UnitSystem.IP)
            {
                T = GetTRankineFromTFahrenheit(tDryBulb);

                eğer (tDryBulb <= TRIPLE_POINT_WATER_IP)
                    dLnPws = 1.0214165E+04 / Math.Pow (T, 2) - 5.3765794E-03 + 2 * 1.9202377E-07 * T
                             + 3 * 3.5575832E-10 * Math.Pow (T, 2) - 4 * 9.0344688E-14 * Math.Pow (T, 3) 
                             + 4.1635019 / T;
                Başka
                    dLnPws = 1.0440397E+04 / Math.Pow (T, 2) - 2.7022355E-02 + 2 * 1.2890360E-05 * T
                             - 3 * 2.4780681E-09 * Math.Pow (T, 2) + 6.5459673 / T;
            }
            Başka
            {
                T = GetTKelvinFromTCelsius(tDryBulb);

                eğer (tDryBulb <= TRIPLE_POINT_WATER_SI)
                    dLnPws = 5.6745359E+03 / Math.Pow (T, 2) - 9.677843E-03 + 2 * 6.2215701E-07 * T
                             + 3 * 2.0747825E-09 * Math.Pow (T, 2) - 4 * 9.484024E-13 * Math.Pow (T, 3) 
                             + 4.1635019 / T;
                Başka
                    dLnPws = 5.8002206E+03 / Math.Pow (T, 2) - 4.8640239E-02 + 2 * 4.1764768E-05 * T
                             - 3 * 1.4452093E-08 * Math.Pow (T, 2) + 6.5459673 / T;
            }

            dönüş dLnPws;
        }

        /// <özet>
        /// Kuru termometre sıcaklığı ve buhar basıncı verilen dönüş çiğlenme noktası sıcaklığı.
        /// Referans: ASHRAE El Kitabı - Temel Bilgiler (2017) bölüm. 1 eş. 5 ve 6
        /// Notlar: çiğ noktası sıcaklığı, su buharı basıncını veren denklem ters çevrilerek çözülür
        /// sağlanan regresyonları kullanmak yerine sıcaklıktan doygunlukta
        /// ASHRAE tarafından (eqn. 37 ve 38), çok daha az doğru ve
        /// daha dar geçerlilik aralığı.
        /// Su buharının logaritması için Newton-Raphson (NR) yöntemi kullanılır
        /// sıcaklığın bir fonksiyonu olarak basınç, ki bu çok düzgün bir fonksiyondur
        /// Yakınsama genellikle 3 ila 5 yinelemede elde edilir.
        /// tDryBulb burada gerçekten gerekli değil, sadece rahatlık için kullanılıyor.
        /// </summary>
        /// <param name="tDryBulb">°F [IP] veya °C [SI] cinsinden kuru termometre sıcaklığı</param>
        /// <param name="vapPres">Nemli havadaki su buharının Psi [IP] veya Pa [SI] cinsinden kısmi basıncı</param>
        /// <dönüş>(o) °F [IP] veya °C [SI] cinsinden Çiy Noktası sıcaklığı</dönüş>
        halka açık çift GetTDewPointFromVapPres(çift tDryBulb, çift vapPres)
        {
            // Birimler sisteminin sınır fonksiyonu

            var sınırlar = Ölçü sistemi == UnitSystem.IP
                ? yeni[] {-148.0, 392.0}
                : yeni[] {-100.0, 200.0};

            // Dışında çözüm bulunamayan sınırlar
            eğer (vapPres < GetSatVapPres (sınırlar []) || vapPres > GetSatVapPres (sınırlar [1]))
                atmak yeni InvalidOperationException(
                    "Su buharının kısmi basıncı, denklemlerin geçerlilik aralığının dışında");

            // Çözüme yaklaşmak için NR kullanıyoruz.
            // İlk tahmin
            var tDewPoint =
                tDryBulb; // °F [IP] veya °C [SI] olarak yinelemeli olarak çözülen çiğlenme noktası sıcaklıklarının hesaplanan değeri
            var lnVP = Math.Log (vapPres); // Nemli havadaki su buharı basıncının kısmi basıncının doğal logaritması

            çift tDewPoint_iter; // NR hesaplamasında kullanılan tDewPoint değeri
            çift lnVP_iter; // NR hesaplamasında kullanılan buhar su basıncı log değeri
            var indeks = 1;
            yapmak
            {
                // Geçerli nokta
                tDewPoint_iter = tDewPoint;
                lnVP_iter = Math.Log(GetSatVapPres(tDewPoint_iter));

                // Analitik olarak hesaplanan fonksiyonun türevi
                var d_lnVP = dLnPws_ (tDewPoint_iter);

                // Denklem'in geçerlilik alanıyla sınırlanan yeni tahmin. 5 ve 6
                tDewPoint = tDewPoint_iter - (lnVP_iter - lnVP) / d_lnVP;
                tDewPoint = Math.Max ​​(tDewPoint, sınırlar []);
                tDewPoint = Math.Min (tDewPoint, sınırlar [1]);

                eğer (indeks > MAX_ITER_COUNT)
                    atmak yeni InvalidOperationException(
                        "GetTDewPointFromVapPres'te yakınsamaya ulaşılamadı. Durduruluyor.");

                indeks ++;
            } süre (Math.Abs ​​(tDewPoint - tDewPoint_iter) > PSYCHROLIB_TOLERANCE);

            dönüş Math.Min (tDewPoint, tDryBulb);
        }

        /// <özet>
        /// Çiylenme noktası sıcaklığı verilen dönüş buhar basıncı.
        /// Referans: ASHRAE El Kitabı - Temel Bilgiler (2017) bölüm. 1 eş. 36
        /// </summary>
        /// <param name="tDewPoint">°F [IP] veya °C [SI] cinsinden çiğlenme noktası sıcaklığı</param>
        /// <dönüş>Nemli havadaki su buharının Psi [IP] veya Pa [SI] cinsinden kısmi basıncı</dönüş>
        halka açık çift GetVapPresFromTDewPoint(çift tDewPoint)
        {
            dönüş GetSatVapPres(tDewPoint);
        }


        /********************************************** ************************************************ ***
         * Yaş termometre sıcaklığından, çiy noktası sıcaklığından veya bağıl nemden nem oranına dönüşümler
         ************************************************ ************************************************ */

        /// <özet>
        /// Kuru termometre sıcaklığı, nem oranı ve basınç verildiğinde yaş termometre sıcaklığına dönüş.
        /// Referans: ASHRAE El Kitabı - Temel Bilgiler (2017) bölüm. 1 eqn 33 ve 35, Tstar için çözüldü
        /// </summary>
        /// <param name="tDryBulb">°F [IP] veya °C [SI] cinsinden kuru termometre sıcaklığı</param>
        /// <param name="humRatio">lb_H₂O lb_Air⁻¹ [IP] veya kg_H₂O kg_Air⁻¹ [SI] cinsinden nem oranı</param>
        /// <param name="pressure">Psi [IP] veya Pa [SI] cinsinden atmosfer basıncı</param>
        /// <dönüş>°F [IP] veya °C [SI] cinsinden yaş termometre sıcaklığı</dönüş>
        halka açık çift GetTWetBulbFromHumRatio(çift tDryBulb, çift humRatio, çift basınç)
        {
            // Bildirimler
            çift yıldız;
            çift tDewPoint, tWetBulb, tIslakBulbSup, tIslakBulbInf, sınırlıHumRatio;
            var indeks = 1;

            eğer (!(humRatio > = 0.0))
                atmak yeni InvalidOperationException("Nem oranı negatiftir");
            sınırlıHumRatio = Math.Max(humRatio, MIN_HUM_RATIO);

            tDewPoint = GetTDewPointFromHumRatio(tDryBulb, sınırlıHumRatio, basınç);

            // İlk tahminler
            tIslakAmpulSup = tDryBulb;
            tIslakBulbInf = tDewPoint;
            tIslak Ampul = (tWetBulbInf + tIslakAmpulSup) / 2.0;

            // İkiye bölme döngüsü
            süre ((tIslakBulbSup - tIslakBulbInf) > PSYCHROLIB_TOLERANCE)
            {
                // Tstar sıcaklığındaki nem oranını hesapla
                Wstar = GetHumRatioFromTWetBulb(tDryBulb, tWetBulb, basınç);

                // Yeni sınırlar al
                eğer (Wstar > sınırlıHumRatio)
                    tIslakAmpulSup = tIslak Ampul;
                Başka
                    tIslakBulbInf = tIslak Ampul;

                // Yaş termometre sıcaklığının yeni tahmini
                tIslak Ampul = (Islak AmpulSup + tIslakBulbInf) / 2.0;

                eğer (indeks > MAX_ITER_COUNT)
                    atmak yeni InvalidOperationException(
                        "GetTWetBulbFromHumRatio'da yakınsama sağlanamadı. Duruyor.");

                indeks ++;
            }

            dönüş tIslak Ampul;
        }

        /// <özet>
        /// Kuru termometre sıcaklığı, yaş termometre sıcaklığı ve basınç verilen dönüş nemi oranı.
        /// Referans: ASHRAE El Kitabı - Temel Bilgiler (2017) bölüm. 1 eş 33 ve 35
        /// </summary>
        /// <param name="tDryBulb">°F [IP] veya °C [SI] cinsinden kuru termometre sıcaklığı</param>
        /// <param name="tWetBulb">°F [IP] veya °C [SI] cinsinden ıslak hazne sıcaklığı</param>
        /// <param name="pressure">Psi [IP] veya Pa [SI] cinsinden atmosfer basıncı</param>
        /// <dönüşler>lb_H₂O lb_Air⁻¹ [IP] veya kg_H₂O kg_Air⁻¹ [SI] cinsinden Nem Oranı</dönüşler>
        halka açık çift GetHumRatioFromTWetBulb(çift tDryBulb, çift tWetBulb, çift basınç)
        {
            çift wsstar;
            çift humRatio = GEÇERSİZ;

            eğer (! (tWetBulb <= tDryBulb))
                atmak yeni InvalidOperationException("Islak hazne sıcaklığı kuru hazne sıcaklığının üzerinde");

            wsstar = GetSatHumRatio(tWetBulb, basınç);

            eğer (Ölçü sistemi == UnitSystem.IP)
            {
                eğer (Islak Ampul > = FREEZING_POINT_WATER_IP)
                    humRatio = ((1093.0 - 0.556 * tIslak Ampul) * wsstar - 0.240 * (tDryBulb - tIslak Ampul))
                               / (1093.0 + 0.444 * Kuru Ampul - tWetBulb);
                Başka
                    humRatio = ((1220.0 - 0.04 * tIslak Ampul) * wsstar - 0.240 * (tDryBulb - tIslak Ampul))
                               / (1220.0 + 0.444 * Kuru Ampul - 0.48 * tWetBulb);
            }
            Başka
            {
                eğer (Islak Ampul > = FREEZING_POINT_WATER_SI)
                    humRatio = ((2501.0 - 2.326 * tIslak Ampul) * wsstar - 1.006 * (tDryBulb - tIslak Ampul))
                               / (2501.0 + 1.86 * Kuru Ampul - 4.186 * tWetBulb);
                Başka
                    humRatio = ((2830.0 - 0.24 * tIslak Ampul) * wsstar - 1.006 * (tDryBulb - tIslak Ampul))
                               / (2830.0 + 1.86 * Kuru Ampul - 2.1 * tWetBulb);
            }

            // Geçerlilik kontrolü.
            dönüş Math.Max(humRatio, MIN_HUM_RATIO);
        }


        /// <özet>
        /// Kuru termometre sıcaklığı, bağıl nem ve basınç verilen dönüş nem oranı.
        /// Referans: ASHRAE El Kitabı - Temel Bilgiler (2017) bölüm. 1
        /// </summary>
        /// <param name="tDryBulb">°F [IP] veya °C [SI] cinsinden kuru termometre sıcaklığı</param>
        /// <param name="relHum">Bağıl nem [0-1]</param>
        /// <param name="pressure">Psi [IP] veya Pa [SI] cinsinden atmosfer basıncı</param>
        /// <dönüşler>lb_H₂O lb_Air⁻¹ [IP] veya kg_H₂O kg_Air⁻¹ [SI] cinsinden Nem Oranı</dönüşler>
        halka açık çift GetHumRatioFromRelHum(çift tDryBulb, çift relHum, çift basınç)
        {
            eğer (! (relHum > = 0.0 && relHum <= 1.0))
                atmak yeni InvalidOperationException("Bağıl nem [0,1] aralığının dışında");

            var vapPres = GetVapPresFromRelHum (tDryBulb, relHum);
            dönüş GetHumRatioFromVapPres(vapPres, basınç);
        }


        /// <özet>
        /// Kuru termometre sıcaklığı, nem oranı ve basınç verilen bağıl nemi döndürür.
        /// Referans: ASHRAE El Kitabı - Temel Bilgiler (2017) bölüm. 1
        /// </summary>
        /// <param name="tDryBulb">°F [IP] veya °C [SI] cinsinden kuru termometre sıcaklığı</param>
        /// <param name="humRatio">lb_H₂O lb_Air⁻¹ [IP] veya kg_H₂O kg_Air⁻¹ [SI] cinsinden nem oranı</param>
        /// <param name="pressure">Psi [IP] veya Pa [SI] cinsinden atmosfer basıncı</param>
        /// <dönüş>Bağıl nem [0-1]</dönüş>
        halka açık çift GetRelHumFromHumRatio(çift tDryBulb, çift humRatio, çift basınç)
        {
            eğer (!(humRatio > = 0.0))
                atmak yeni InvalidOperationException("Nem oranı negatiftir");

            var vapPres = GetVapPresFromHumRatio(humRatio, basınç);
            dönüş GetRelHumFromVapPres(tDryBulb, vapPres);
        }

        /// <özet>
        /// Çiğlenme noktası sıcaklığı ve basıncı verilen dönüş nem oranı.
        /// Referans: ASHRAE El Kitabı - Temel Bilgiler (2017) bölüm. 1
        /// </summary>
        /// <param name="tDewPoint">°F [IP] veya °C [SI] cinsinden çiğlenme noktası sıcaklığı</param>
        /// <param name="pressure">Psi [IP] veya Pa [SI] cinsinden atmosfer basıncı</param>
        /// <dönüşler>lb_H₂O lb_Air⁻¹ [IP] veya kg_H₂O kg_Air⁻¹ [SI] cinsinden Nem Oranı</dönüşler>
        halka açık çift GetHumRatioFromTDewPoint(çift tDewPoint, çift basınç)
        {
            var vapPres = GetSatVapPres (tDewPoint);
            dönüş GetHumRatioFromVapPres(vapPres, basınç);
        }

        /// <özet>
        /// Kuru termometre sıcaklığı, nem oranı ve basınç verildiğinde dönüş çiy noktası sıcaklığı.
        /// Referans: ASHRAE El Kitabı - Temel Bilgiler (2017) bölüm. 1
        /// </summary>
        /// <param name="tDryBulb">°F [IP] veya °C [SI] cinsinden kuru termometre sıcaklığı</param>
        /// <param name="humRatio">lb_H₂O lb_Air⁻¹ [IP] veya kg_H₂O kg_Air⁻¹ [SI] cinsinden nem oranı</param>
        /// <param name="pressure">Psi [IP] veya Pa [SI] cinsinden atmosfer basıncı</param>
        /// <dönüş>°F [IP] veya °C [SI] cinsinden Çiy Noktası sıcaklığı</dönüş>
        halka açık çift GetTDewPointFromHumRatio(çift tDryBulb, çift humRatio, çift basınç)
        {
            eğer (!(humRatio > = 0.0))
                atmak yeni InvalidOperationException("Nem oranı negatiftir");

            var vapPres = GetVapPresFromHumRatio(humRatio, basınç);
            dönüş GetTDewPointFromVapPres(tDryBulb, vapPres);
        }


        /********************************************** ************************************************ ***
         * Nem oranı ve buhar basıncı arasındaki dönüşümler
         ************************************************ ************************************************ */

        /// <özet>
        /// Su buharı basıncı ve atmosferik basınç verildiğinde dönüş nem oranı.
        /// Referans: ASHRAE El Kitabı - Temel Bilgiler (2017) bölüm. 1 eşdeğer 20
        /// </summary>
        /// <param name="vapPres">Nemli havadaki su buharının Psi [IP] veya Pa [SI] cinsinden kısmi basıncı</param>
        /// <param name="pressure">Psi [IP] veya Pa [SI] cinsinden atmosfer basıncı</param>
        /// <dönüşler>lb_H₂O lb_Air⁻¹ [IP] veya kg_H₂O kg_Air⁻¹ [SI] cinsinden Nem Oranı</dönüşler>
        halka açık çift GetHumRatioFromVapPres(çift vapPres, çift basınç)
        {
            eğer (! (vapPres > = 0.0))
                atmak yeni InvalidOperationException("Nemli havadaki su buharının kısmi basıncı negatiftir");

            var humRatio = 0.621945 * vapPres / (basınç - vapPres);

            // Geçerlilik kontrolü.
            dönüş Math.Max(humRatio, MIN_HUM_RATIO);
        }


        /// <özet>
        /// Nem oranı ve basıncı verilen dönüş buhar basıncı.
        /// Referans: ASHRAE El Kitabı - Temel Bilgiler (2017) bölüm. 1 eqn 20 pw için çözüldü
        /// </summary>
        /// <param name="humRatio">lb_H₂O lb_Air⁻¹ [IP] veya kg_H₂O kg_Air⁻¹ [SI] cinsinden nem oranı</param>
        /// <param name="pressure">Psi [IP] veya Pa [SI] cinsinden atmosfer basıncı</param>
        /// <dönüş>Nemli havadaki su buharının Psi [IP] veya Pa [SI] cinsinden kısmi basıncı</dönüş>
        halka açık çift GetVapPresFromHumRatio(çift humRatio, çift basınç)
        {
            eğer (!(humRatio > = 0.0))
                atmak yeni InvalidOperationException("Nem oranı negatiftir");
            var sınırlıHumRatio = Math.Max(humRatio, MIN_HUM_RATIO);

            var vapPres = basınç * sınırlıHumRatio / (0.621945 + sınırlıHumRatio);
            dönüş vapPres;
        }


        /********************************************** ************************************************ ***
         * Nem oranı ve özgül nem arasındaki dönüşümler
         ************************************************ ************************************************ */

        /// <özet>
        /// Nem oranından (karıştırma oranı olarak da bilinir) özgül nemi döndürür
        /// Referans: ASHRAE El Kitabı - Temel Bilgiler (2017) bölüm. 1 eş 9b
        /// </summary>
        /// <param name="humRatio">lb_H₂O lb_Air⁻¹ [IP] veya kg_H₂O kg_Air⁻¹ [SI] cinsinden nem oranı</param>
        /// <dönüşler>lb_H₂O lb_Air⁻¹ [IP] veya kg_H₂O kg_Air⁻¹ [SI] cinsinden özgül nem oranı</dönüşler>
        halka açık çift GetSpecificHumFromHumRatio(çift humOran)
        {
            eğer (!(humRatio > = 0.0))
                atmak yeni InvalidOperationException("Nem oranı negatiftir");
            var sınırlıHumRatio = Math.Max(humRatio, MIN_HUM_RATIO);

            dönüş sınırlıHumRatio / (1.0 + sınırlıHumRatio);
        }


        /// <özet>
        /// Belirli nemden nem oranını (aka karışım oranı) döndürür
        /// Referans: ASHRAE El Kitabı - Temel Bilgiler (2017) bölüm. 1 eqn 9b (nem oranı için çözüldü)
        /// </summary>
        /// <param adı="belirliHum"></param>
        /// <dönüşler>lb_H₂O lb_Dry_Air⁻¹ [IP] veya kg_H₂O kg_Dry_Air⁻¹ [SI] cinsinden nem oranı</dönüşler>
        halka açık çift GetHumRatioFromSpecificHum(çift özelHum)
        {
            eğer (!(spesifik uğultu > = 0.0 && özel uğultu < 1.0))
                atmak yeni InvalidOperationException("Özgül nem [0, 1] aralığının dışında");

            var humRatio = özel uğultu / (1.0 - spesifikHum);

            // Geçerlilik kontrolü
            dönüş Math.Max(humRatio, MIN_HUM_RATIO);
        }


        /********************************************** ************************************************ ***
         * Kuru Hava Hesaplamaları
         ************************************************ ************************************************ */

        /// <özet>
        /// Verilen kuru termometre sıcaklığına göre kuru hava entalpisini döndürür.
        /// Referans: ASHRAE El Kitabı - Temel Bilgiler (2017) bölüm. 1 eş. 28
        /// </summary>
        /// <param name="tDryBulb">°F [IP] veya °C [SI] cinsinden kuru termometre sıcaklığı</param>
        /// <dönüş>Btu lb⁻¹ [IP] veya J kg⁻¹ [SI] cinsinden kuru hava entalpisi</dönüş>
        halka açık çift GetDryAirEnthalpy(çift tDryBulb)
        {
            eğer (Ölçü sistemi == UnitSystem.IP)
                dönüş 0.240 * tDryBulb;

            dönüş 1006.0 * tDryBulb;
        }


        /// <özet>
        /// Kuru termometre sıcaklığı ve basıncı verilen kuru hava yoğunluğunu geri getirin.
        /// Referans: ASHRAE El Kitabı - Temel Bilgiler (2017) bölüm. 1
        /// Notlar: kuru hava için mükemmel gaz ilişkisi için eqn 14.
        /// Üniversal gaz sabiti için Eqn 1.
        /// IP'deki 144 faktörü, Psi = lb in⁻²'nin lb ft⁻²'ye dönüştürülmesi içindir.
        /// </summary>
        /// <param name="tDryBulb">°F [IP] veya °C [SI] cinsinden kuru termometre sıcaklığı</param>
        /// <param name="pressure">Psi [IP] veya Pa [SI] cinsinden atmosfer basıncı</param>
        /// <dönüş>lb ft⁻³ [IP] veya kg m⁻³ [SI] cinsinden kuru hava yoğunluğu</dönüş>
        halka açık çift GetDryAirDensity(çift tDryBulb, çift basınç)
        {
            eğer (Ölçü sistemi == UnitSystem.IP)
                dönüş (144.0 * basınç) / R_DA_IP / GetTRankineFromTFahrenheit(tDryBulb);

            dönüş basınç / R_DA_SI / GetTKelvinFromTCelsius(tDryBulb);
        }


        /// <özet>
        /// Kuru termometre sıcaklığı ve basıncı verilen kuru hava hacmini döndürür.
        /// Referans: ASHRAE El Kitabı - Temel Bilgiler (2017) bölüm. 1.
        /// Notlar: kuru hava için mükemmel gaz ilişkisi için eqn 14.
        /// Üniversal gaz sabiti için Eqn 1.
        /// IP'deki 144 faktörü, Psi = lb in⁻²'nin lb ft⁻²'ye dönüştürülmesi içindir.
        /// </summary>
        /// <param name="tDryBulb">°F [IP] veya °C [SI] cinsinden kuru termometre sıcaklığı</param>
        /// <param name="pressure">Psi [IP] veya Pa [SI] cinsinden atmosfer basıncı</param>
        /// <dönüş>Kuru hava hacmi ft³ lb⁻¹ [IP] veya m³ kg⁻¹ [SI] cinsinden</dönüş>
        halka açık çift GetDryAirVolume(çift tDryBulb, çift basınç)
        {
            eğer (Ölçü sistemi == UnitSystem.IP)
                dönüş R_DA_IP * GetTRankineFromTFahrenheit(tDryBulb) / (144.0 * basınç);

            dönüş R_DA_SI * GetTKelvinFromTCelsius(tDryBulb) / basınç;
        }


        /// <özet>
        /// Entalpi ve nem oranından kuru termometre sıcaklığını döndürür.
        /// Referans: ASHRAE El Kitabı - Temel Bilgiler (2017) bölüm. 1 eş 30.
        /// Notlar: "GetMoistAirEnthalpy" işlevine dayalıdır, sıcaklık için yeniden düzenlenmiştir.
        /// </summary>
        /// <param name="moistAirEnthalpy">Btu lb⁻¹ [IP] veya J kg⁻¹ cinsinden nemli hava entalpisi</param>
        /// <param name="humRatio">lb_H₂O lb_Air⁻¹ [IP] veya kg_H₂O kg_Air⁻¹ [SI] cinsinden nem oranı</param>
        /// <dönüşler>°F [IP] veya °C [SI] cinsinden kuru termometre sıcaklığı</dönüşler>
        halka açık çift GetTDryBulbFromEnthalpyAndHumRatio(çift nemliHavaEntalpi, çift humOran)
        {
            eğer (!(humRatio > = 0.0))
                atmak yeni InvalidOperationException("Nem oranı negatiftir");
            var sınırlıHumRatio = Math.Max(humRatio, MIN_HUM_RATIO);

            eğer (Ölçü sistemi == UnitSystem.IP)
                dönüş (nemliAirEntalpi - 1061.0 * sınırlıHumRatio) / (0.240 + 0.444 * sınırlıHumRatio);

            dönüş (nemliAirEntalpi / 1000.0 - 2501.0 * sınırlıHumRatio) / (1.006 + 1.86 * sınırlıHumRatio);
        }


        /// <özet>
        /// Entalpi ve kuru termometre sıcaklığından dönüş nemi oranı.
        /// Referans: ASHRAE El Kitabı - Temel Bilgiler (2017) bölüm. 1 eş 30.
        /// Notlar: Nem oranı için yeniden düzenlenen 'GetMoistAirEnthalpy' işlevine dayalıdır.
        /// </summary>
        /// <param name="moistAirEnthalpy">Btu lb⁻¹ [IP] veya J kg⁻¹ cinsinden nemli hava entalpisi</param>
        /// <param name="tDryBulb">°F [IP] veya °C [SI] cinsinden kuru termometre sıcaklığı</param>
        /// <dönüş>lb_H₂O lb_Air⁻¹ [IP] veya kg_H₂O kg_Air⁻ cinsinden nem oranı</dönüş>
        halka açık çift GetHumRatioFromEnthalpyAndTDryBulb(çift nemliHavaEntalpi, çift tDryBulb)
        {
            {
                çift nemOranı;
                eğer (Ölçü sistemi == UnitSystem.IP)
                    humRatio = (nemliAirEntalpi - 0.240 * tDryBulb) / (1061.0 + 0.444 * tDryBulb);
                Başka
                    humRatio = (nemliAirEntalpi / 1000.0 - 1.006 * tDryBulb) / (2501.0 + 1.86 * tDryBulb);

                // Geçerlilik kontrolü.
                dönüş Math.Max(humRatio, MIN_HUM_RATIO);
            }
        }


        /********************************************** ************************************************ ***
         * Doymuş Hava Hesaplamaları
         ************************************************ ************************************************ */

        /// <özet>
        /// Kuru termometre sıcaklığında verilen doymuş buhar basıncını geri getirin.
        /// Referans: ASHRAE El Kitabı - Temel Bilgiler (2017) bölüm. 1 eş. 5 & ​​amp; 6
        /// Önemli not: ASHRAE formülleri donma noktasının üstünde ve altında tanımlanmıştır ancak
        /// donma noktasında bir süreksizlik. Bu, ASHRAE açısından küçük bir yanlışlıktır: formüller
        /// suyun üçlü noktasının (donma noktası değil) üstünde ve altında tanımlanmalıdır, bu durumda
        /// süreksizlik ortadan kalkar. Suyun üçlü noktasını kullanmak önemlidir, aksi takdirde işlev görür
        /// Mevcut işlevi tersine çeviren GetTDewPointFromVapPres, etrafında düzgün bir şekilde yakınsamıyor
        /// donma noktası.
        /// </summary>
        /// <param name="tDryBulb">°F [IP] veya °C [SI] cinsinden kuru termometre sıcaklığı</param>
        /// <dönüş>Doymuş havanın Psi [IP] veya Pa [SI] cinsinden buhar basıncı</dönüş>
        halka açık çift GetSatVapPres(çift tDryBulb)
        {
            çift lnPw'ler;

            eğer (Ölçü sistemi == UnitSystem.IP)
            {
                eğer (!(tDryBulb > = -148.0 && Kuru Ampul <= 392.0))
                    atmak yeni InvalidOperationException("Kuru hazne sıcaklığı [-148, 392] aralığının dışında");

                var T = GetTRankineFromTFahrenheit(tDryBulb);
                eğer (tDryBulb <= TRIPLE_POINT_WATER_IP)
                    lnPw'ler = (-1.0214165E+04 / T - 4.8932428 - 5.3765794E-03 * T + 1.9202377E-07 * T * T
                                                                                + 3.5575832E-10 * Math.Pow (T, 3) -
                             9.0344688E-14 * Math.Pow (T, 4) + 4.1635019 * Math.Log(T));
                Başka
                    lnPw'ler = -1.0440397E+04 / T - 1.1294650E+01 - 2.7022355E-02 * T + 1.2890360E-05 * T * T
                            - 2.4780681E-09 * Math.Pow (T, 3) + 6.5459673 * Math.Log(T);
            }
            Başka
            {
                eğer (!(tDryBulb > = -100.0 && Kuru Ampul <= 200.0))
                    atmak yeni InvalidOperationException("Kuru termometre sıcaklığı [-100, 200] aralığının dışında");

                var T = GetTKelvinFromTCelsius(tDryBulb);
                eğer (tDryBulb <= TRIPLE_POINT_WATER_SI)
                    lnPw'ler = -5.6745359E+03 / T + 6.3925247 - 9.677843E-03 * T + 6.2215701E-07 * T * T
                                                                              + 2.0747825E-09 * Math.Pow (T, 3) -
                            9.484024E-13 * Math.Pow (T, 4) + 4.1635019 * Math.Log(T);
                Başka
                    lnPw'ler = -5.8002206E+03 / T + 1.3914993 - 4.8640239E-02 * T + 4.1764768E-05 * T * T
                            - 1.4452093E-08 * Math.Pow (T, 3) + 6.5459673 * Math.Log(T);
            }

            dönüş Math.Exp(lnPws);
        }


        /// <özet>
        /// Kuru termometre sıcaklığı ve basıncı verilen doymuş havanın dönüş nem oranı.
        /// Referans: ASHRAE El Kitabı - Temel Bilgiler (2017) bölüm. 1 eqn 36, W için çözüldü
        /// </summary>
        /// <param name="tDryBulb">°F [IP] veya °C [SI] cinsinden kuru termometre sıcaklığı</param>
        /// <param name="pressure">Psi [IP] veya Pa [SI] cinsinden atmosfer basıncı</param>
        /// <dönüşler>lb_H₂O lb_Air⁻¹ [IP] veya kg_H₂O kg_Air⁻¹ [SI] cinsinden doymuş havanın nem oranı</dönüşler>
        halka açık çift GetSatHumRatio(çift tDryBulb, çift basınç)
        {
            var satBuharPres = GetSatVapPres (tDryBulb);
            var satHumRatio = 0.621945 * satBuharPres / (basınç - satVaporPres);

            // Geçerlilik kontrolü.
            dönüş Math.Max(satHumRatio, MIN_HUM_RATIO);
        }

        /// <özet>
        /// Kuru termometre sıcaklığı ve basıncı verilen doymuş hava entalpisini döndürür.
        /// Referans: ASHRAE El Kitabı - Temel Bilgiler (2017) bölüm. 1
        /// </summary>
        /// <param name="tDryBulb">°F [IP] veya °C [SI] cinsinden kuru termometre sıcaklığı</param>
        /// <param name="pressure">Psi [IP] veya Pa [SI] cinsinden atmosfer basıncı</param>
        /// <dönüş>Btu lb⁻¹ [IP] veya J kg⁻¹ [SI] cinsinden doymuş hava entalpisi</dönüş>
        halka açık çift GetSatAirEnthalpy(çift tDryBulb, çift basınç)
        {
            dönüş GetMoistAirEnthalpy(tDryBulb, GetSatHumRatio(tDryBulb, basınç));
        }


        /********************************************** ************************************************ ***
         * Nemli Hava Hesaplamaları
         ************************************************ ************************************************ */

        /// <özet>
        /// Kuru termometre sıcaklığı, nem oranı ve basınç verildiğinde Dönüş Buhar basıncı açığı.
        /// Referans: bkz. Oke (1987) eqn. 2.13a
        /// </summary>
        /// <param name="tDryBulb">°F [IP] veya °C [SI] cinsinden kuru termometre sıcaklığı</param>
        /// <param name="humRatio">lb_H₂O lb_Air⁻¹ [IP] veya kg_H₂O kg_Air⁻¹ [SI] cinsinden nem oranı</param>
        /// <param name="pressure">Psi [IP] veya Pa [SI] cinsinden atmosfer basıncı</param>
        /// <dönüş>Psi [IP] veya Pa [SI] cinsinden buhar basıncı açığı</dönüş>
        halka açık çift GetVaporPressureDeficit(çift tDryBulb, çift humRatio, çift basınç)
        {
            eğer (!(humRatio > = 0.0))
                atmak yeni InvalidOperationException("Nem oranı negatiftir");

            var relHum = GetRelHumFromHumRatio(tDryBulb, humRatio, basınç);
            dönüş GetSatVapPres(tKuru Ampul) * (1.0 - relHum);
        }


        /// <özet>
        /// Doyma derecesini döndürür (yani havanın nem oranı / doygunluktaki havanın nem oranı)
        /// aynı sıcaklık ve basınçta) kuru termometre sıcaklığı, nem oranı ve atmosferik basınç verildiğinde.
        /// Referans: ASHRAE El Kitabı - Temel Bilgiler (2009) böl. 1 eş. 12
        /// Notlar: tanım 2017 El Kitabında yoktur
        /// </summary>
        /// <param name="tDryBulb">°F [IP] veya °C [SI] cinsinden kuru termometre sıcaklığı</param>
        /// <param name="humRatio">lb_H₂O lb_Air⁻¹ [IP] veya kg_H₂O kg_Air⁻¹ [SI] cinsinden nem oranı</param>
        /// <param name="pressure">Psi [IP] veya Pa [SI] cinsinden atmosfer basıncı</param>
        /// <dönüş>Doygunluk derecesi (birimsiz)</dönüş>
        halka açık çift GetDegreeOfSaturation(çift tDryBulb, çift humRatio, çift basınç)
        {
            eğer (!(humRatio > = 0.0))
                atmak yeni InvalidOperationException("Nem oranı negatiftir");
            var sınırlıHumRatio = Math.Max(humRatio, MIN_HUM_RATIO);

            dönüş sınırlıHumRatio / GetSatHumRatio(tDryBulb, basınç);
        }

        /// <özet>
        /// Kuru termometre sıcaklığı ve nem oranı verilen nemli hava entalpisi.
        /// Referans: ASHRAE El Kitabı - Temel Bilgiler (2017) bölüm. 1 eş. 30
        /// </summary>
        /// <param name="tDryBulb">°F [IP] veya °C [SI] cinsinden kuru termometre sıcaklığı</param>
        /// <param name="humRatio">lb_H₂O lb_Air⁻¹ [IP] veya kg_H₂O kg_Air⁻¹ [SI] cinsinden nem oranı</param>
        /// <dönüş>Btu lb⁻¹ [IP] veya J kg⁻¹ [SI] cinsinden Nemli Hava Entalpisi</dönüş>
        halka açık çift GetMoistAirEnthalpy(çift tDryBulb, çift humOran)
        {
            eğer (!(humRatio > = 0.0))
                atmak yeni InvalidOperationException("Nem oranı negatiftir");

            var sınırlıHumRatio = Math.Max(humRatio, MIN_HUM_RATIO);

            eğer (Ölçü sistemi == UnitSystem.IP)
                dönüş 0.240 * Kuru Ampul + sınırlıHumRatio * (1061.0 + 0.444 * tDryBulb);

            dönüş (1.006 * Kuru Ampul + sınırlıHumRatio * (2501.0 + 1.86 * tDryBulb)) * 1000.0;
        }


        /// <özet>
        /// Kuru termometre sıcaklığı, nem oranı ve basınç verilen nemli havanın belirli hacmini döndürün.
        /// Referans: ASHRAE El Kitabı - Temel Bilgiler (2017) bölüm. 1 eş. 26
        /// Notlar: IP birimlerinde, R_DA_IP / 144, eqn 26'da görünen katsayı olan 0.370486'ya eşittir.
        /// 144 faktörü, Psi = lb in⁻²'nin lb ft⁻²'ye dönüştürülmesi içindir.
        /// </summary>
        /// <param name="tDryBulb">°F [IP] veya °C [SI] cinsinden kuru termometre sıcaklığı</param>
        /// <param name="humRatio">lb_H₂O lb_Air⁻¹ [IP] veya kg_H₂O kg_Air⁻¹ [SI] cinsinden nem oranı</param>
        /// <param name="pressure">Psi [IP] veya Pa [SI] cinsinden atmosfer basıncı</param>
        /// <dönüş>Özgül Hacim ft³ lb⁻¹ [IP] veya m³ kg⁻¹ [SI] cinsinden</dönüş>
        halka açık çift GetMoistAirVolume(çift tDryBulb, çift humRatio, çift basınç)
        {
            eğer (!(humRatio > = 0.0))
                atmak yeni InvalidOperationException("Nem oranı negatiftir");
            var sınırlıHumRatio = Math.Max(humRatio, MIN_HUM_RATIO);

            eğer (Ölçü sistemi == UnitSystem.IP)
                dönüş R_DA_IP * GetTRankineFromTFahrenheit(tDryBulb) * (1.0 + 1.607858 * sınırlıHumRatio) /
                       (144.0 * basınç);

            dönüş R_DA_SI * GetTKelvinFromTCelsius(tDryBulb) * (1.0 + 1.607858 * sınırlıHumRatio) / basınç;
        }


        /// <özet>
        /// Nemli havaya özgül hacim, nem oranı ve basınç verildiğinde kuru termometre sıcaklığını geri getirin.
        /// Referans:
        /// ASHRAE El Kitabı - Temel Bilgiler (2017) böl. 1 eş 26
        /// Notlar:
        /// IP birimlerinde, R_DA_IP / 144, eqn 26'da görünen katsayı olan 0.370486'ya eşittir.
        /// 144 faktörü, Psi = lb in⁻²'nin lb ft⁻²'ye dönüştürülmesi içindir.
        /// Kuru termometre sıcaklığı için yeniden düzenlenen "GetMoistAirVolume" işlevine dayalıdır.
        /// </summary>
        /// <param name="MoistAirVolume">ft³ lb⁻¹ kuru hava [IP] veya m³ kg⁻¹ kuru hava [SI] cinsinden nemli havanın özgül hacmi</param>
        /// <param name="humRatio">lb_H₂O lb_Air⁻¹ [IP] veya kg_H₂O kg_Air⁻¹ [SI] cinsinden nem oranı</param>
        /// <param name="pressure">Psi [IP] veya Pa [SI] cinsinden atmosfer basıncı</param>
        /// <dönüşler>°F [IP] veya °C [SI] cinsinden kuru termometre sıcaklığı</dönüşler>
        halka açık çift GetTDryBulbFromMoistAirVolumeAndHumRatio(çift MoistAirVolume, çift humRatio, çift basınç)
        {
            eğer (!(humRatio > = 0.0))
                atmak yeni InvalidOperationException("Nem oranı negatiftir");
            var sınırlıHumRatio = Math.Max(humRatio, MIN_HUM_RATIO);

            eğer (Ölçü sistemi == UnitSystem.IP)
                dönüş  GetTFahrenheitFromTRankine(Nemli Hava Hacmi * (144 * basınç) / (R_DA_IP * (1 + 1.607858 * sınırlıHumRatio)));

            dönüş GetTCelsiusFromTKelvin(Nemli Hava Hacmi * basınç / (R_DA_SI * (1 + 1.607858 * sınırlıHumRatio)));
        }


        /// <özet>
        /// Nem oranı, kuru termometre sıcaklığı ve basıncı verilen nemli hava yoğunluğunu geri getirin.
        /// Referans: ASHRAE El Kitabı - Temel Bilgiler (2017) bölüm. 1 eş. 11
        /// </summary>
        /// <param name="tDryBulb">°F [IP] veya °C [SI] cinsinden kuru termometre sıcaklığı</param>
        /// <param name="humRatio">lb_H₂O lb_Air⁻¹ [IP] veya kg_H₂O kg_Air⁻¹ [SI] cinsinden nem oranı</param>
        /// <param name="pressure">Psi [IP] veya Pa [SI] cinsinden atmosfer basıncı</param>
        /// <dönüş>lb ft⁻³ [IP] veya kg m⁻³ [SI] cinsinden nemli hava yoğunluğu</dönüş>
        halka açık çift GetMoistAirDensity(çift tDryBulb, çift humRatio, çift basınç)
        {
            eğer (!(humRatio > = 0.0))
                atmak yeni InvalidOperationException("Nem oranı negatiftir");

            var sınırlıHumRatio = Math.Max(humRatio, MIN_HUM_RATIO);

            dönüş (1.0 + sınırlıHumRatio) / GetMoistAirVolume(tDryBulb, sınırlıHumRatio, basınç);
        }


        /********************************************** ************************************************ ***
                  * Standart atmosfer
         ************************************************ ************************************************ */

        /// <özet>
        /// Verilen yükseklik (irtifa) standart atmosfer barometrik basıncını döndürür.
        /// Referans: ASHRAE El Kitabı - Temel Bilgiler (2017) bölüm. 1 eş 3
        /// </summary>
        /// <param name="altitude">ft [IP] veya m [SI] cinsinden yükseklik</param>
        /// <dönüş>Psi [IP] veya Pa [SI] cinsinden standart atmosfer barometrik basıncı</dönüş>
        halka açık çift GetStandardAtmPressure(çift yükseklik)
        {
            eğer (Ölçü sistemi == UnitSystem.IP)
                dönüş 14.696 * Matematik.Pow(1.0 - 6.8754e-06 * yükseklik, 5.2559);

            dönüş 101325.0 * Matematik.Pow(1.0 - 2.25577e-05 * yükseklik, 5.2559);
        }


        /// <özet>
        /// Verilen yükseklik (irtifa) standart atmosfer sıcaklığını döndürür.
        /// Referans: ASHRAE El Kitabı - Temel Bilgiler (2017) bölüm. 1 eş 4
        /// </summary>
        /// <param name="altitude">ft [IP] veya m [SI] cinsinden yükseklik</param>
        /// <dönüşler> °F [IP] veya °C [SI] cinsinden standart atmosfer kuru termometre sıcaklığı</dönüşler>
        halka açık çift GetStandardAtmTemperature(çift yükseklik)
        {
            eğer (Ölçü sistemi == UnitSystem.IP)
                dönüş 59.0 - 0.00356620 * yükseklik;

            dönüş 15.0 - 0.0065 * yükseklik;
        }

        /// <özet>
        /// Kuru termometre sıcaklığı, deniz seviyesinden yükseklik ve basınç verilen dönüş deniz seviyesi basıncı.
        /// Referans: Hess SL, Teorik meteorolojiye giriş, Holt Rinehart ve Winston, NY 1959,
        /// bölüm 6.5; Stull RB, bilim adamları ve mühendisler için Meteoroloji, 2. baskı,
        /// Brooks/Cole 2000, bölüm. 1.
        /// Notlar: ABD için standart prosedür, tDryBulb için ortalama
        /// mevcut istasyon sıcaklığı ve 12 saat önceki istasyon sıcaklığı.
        /// </summary>
        /// <param name="stnPressure">Psi [IP] veya Pa [SI] cinsinden gözlemlenen istasyon basıncı</param>
        /// <param name="altitude">ft [IP] veya m [SI] cinsinden deniz seviyesinden yükseklik</param>
        /// <param name="tDryBulb">°F [IP] veya °C [SI] cinsinden kuru termometre sıcaklığı</param>
        /// <dönüş>Psi [IP] veya Pa [SI] cinsinden deniz seviyesi barometrik basıncı</dönüş>
        halka açık çift GetSeaLevelPressure(çift stnBasınç, çift yükseklik, çift tDryBulb)
        {
            çift h;
            eğer (Ölçü sistemi == UnitSystem.IP)
            {
                // Hava sütunundaki ortalama sıcaklığı, bir atlama oranı varsayarak hesapla
                // 3,6 °F/1000ft
                var tSütun = Kuru Ampul + 0.0036 * yükseklik / 2.0;

                // Ölçek yüksekliğini belirle
                h = 53.351 * GetTRankineFromTFahrenheit(tColumn);
            }
            Başka
            {
                // Hava sütunundaki ortalama sıcaklığı, bir atlama oranı varsayarak hesapla
                // 6,5 °C/km
                var tSütun = Kuru Ampul + 0.0065 * yükseklik / 2.0;

                // Ölçek yüksekliğini belirle
                h = 287.055 * GetTKelvinFromTCelsius(tColumn) / 9.807;
            }

            // Deniz seviyesi basıncını hesapla
            var deniz seviyesiBasınç = stnBasınç * Matematik.Exp(yükseklik / h);
            dönüş deniz SeviyesiBasınç;
        }


        /// <özet>
        /// Deniz seviyesi basıncından dönüş istasyonu basıncı
        /// Referans: bkz. 'GetSeaLevelPressure'
        /// Notlar: Bu işlev, 'GetSeaLevelPressure' işlevinin tam tersidir.
        /// </summary>
        /// <param name="seaLevelPressure">Psi [IP] veya Pa [SI] cinsinden deniz seviyesi barometrik basıncı</param>
        /// <param name="altitude">ft [IP] veya m [SI] cinsinden deniz seviyesinden yükseklik</param>
        /// <param name="tDryBulb">°F [IP] veya °C [SI] cinsinden kuru termometre sıcaklığı</param>
        /// <dönüş>Psi [IP] veya Pa [SI] cinsinden istasyon basıncı</dönüş>
        halka açık çift GetStationPressure(çift denizSeviyeBasınç, çift yükseklik, çift tDryBulb)
        {
            dönüş deniz seviyesiBasınç / GetSeaLevelPressure (1.0, yükseklik, tDryBulb);
        }


        /********************************************** ************************************************ ***
         * Tüm psikrometrik değerleri ayarlama işlevleri
         ************************************************ ************************************************ */

        /// <özet>
        /// Nem oranını, çiy noktası sıcaklığını, bağıl nemi hesaplamak için yardımcı işlev,
        /// buhar basıncı, nemli hava entalpisi, nemli hava hacmi ve verilen havanın doyma derecesi
        /// kuru termometre sıcaklığı, yaş termometre sıcaklığı ve basınç.
        /// </summary>
        /// <param name="tDryBulb">°F [IP] veya °C [SI] cinsinden kuru termometre sıcaklığı</param>
        /// <param name="tWetBulb">°F [IP] veya °C [SI] cinsinden ıslak hazne sıcaklığı</param>
        /// <param name="pressure">Psi [IP] veya Pa [SI] cinsinden atmosfer basıncı</param>
        /// <dönüşler>Hesaplanan değerler</dönüşler>
        halka açık Psikrometrik Değer CalcPsychrometricsFromTWetBulb(çift tDryBulb, çift tWetBulb, çift basınç)
        {
            var değer = yeni Psikrometrik Değer
            {
                TDryBulb = tDryBulb,
                TWetBulb = tWetBulb,
                Basınç = basınç
            };

            değer.HumRatio = GetHumRatioFromTWetBulb(tDryBulb, tWetBulb, basınç);
            değer.TDwNoktası = GetTDewPointFromHumRatio(tDryBulb, değer.HumOran, basınç);
            değer.RelHum = GetRelHumFromHumRatio(tDryBulb, değer.HumOran, basınç);
            değer.VapPres = GetVapPresFromHumRatio(değer.HumOran, basınç);
            değer.MoistAirEntalpi = GetMoistAirEnthalpy(tDryBulb, değer.HumRatio);
            değer.MoistAirVolume = GetMoistAirVolume(tDryBulb, değer.HumOran, basınç);
            değer.Doygunluk Derecesi = GetDegreeOfSaturation(tDryBulb, değer.HumOran, basınç);

            dönüş değer;
        }


        /// <özet>
        /// Nem oranını, yaş termometre sıcaklığını, bağıl nemi hesaplamak için yardımcı fonksiyon,
        /// buhar basıncı, nemli hava entalpisi, nemli hava hacmi ve verilen havanın doyma derecesi
        /// kuru termometre sıcaklığı, çiy noktası sıcaklığı ve basınç.
        /// </summary>
        /// <param name="tDryBulb">°F [IP] veya °C [SI] cinsinden kuru termometre sıcaklığı</param>
        /// <param name="tDewPoint">°F [IP] veya °C [SI] cinsinden çiğlenme noktası sıcaklığı</param>
        /// <param name="pressure">Psi [IP] veya Pa [SI] cinsinden atmosfer basıncı</param>
        /// <dönüşler>Hesaplanan değerler</dönüşler>
        halka açık Psikrometrik Değer CalcPsychrometricsFromTDewPoint(çift tDryBulb, çift tDewPoint, çift basınç)
        {
            var değer = yeni Psikrometrik Değer
            {
                TDryBulb = tDryBulb,
                TDewPoint = tDewPoint,
                Basınç = basınç
            };

            değer.HumRatio = GetHumRatioFromTDewPoint(tDewPoint, basınç);
            değer.TWetBulb = GetTWetBulbFromHumRatio(tDryBulb, değer.HumOran, basınç);
            değer.RelHum = GetRelHumFromHumRatio(tDryBulb, değer.HumOran, basınç);
            değer.VapPres = GetVapPresFromHumRatio(değer.HumOran, basınç);
            değer.MoistAirEntalpi = GetMoistAirEnthalpy(tDryBulb, değer.HumRatio);
            değer.MoistAirVolume = GetMoistAirVolume(tDryBulb, değer.HumOran, basınç);
            değer.Doygunluk Derecesi = GetDegreeOfSaturation(tDryBulb, değer.HumOran, basınç);

            dönüş değer;
        }


        /// <özet>
        /// Nem oranı, yaş termometre sıcaklığı, çiy noktası sıcaklığı,
        /// buhar basıncı, nemli hava entalpisi, nemli hava hacmi ve verilen havanın doyma derecesi
        /// kuru termometre sıcaklığı, bağıl nem ve basınç.
        /// </summary>
        /// <param name="tDryBulb">°F [IP] veya °C [SI] cinsinden kuru termometre sıcaklığı</param>
        /// <param name="relHum">Bağıl nem [0-1]</param>
        /// <param name="pressure">Psi [IP] veya Pa [SI] cinsinden atmosfer basıncı</param>
        /// <dönüşler>Hesaplanan değerler</dönüşler>
        halka açık Psikrometrik Değer CalcPsychrometricsFromRelHum(çift tDryBulb, çift relHum, çift basınç)
        {
            var değer = yeni Psikrometrik Değer
            {
                TDryBulb = tDryBulb,
                RelHum = relHum,
                Basınç = basınç
            };

            değer.HumRatio = GetHumRatioFromRelHum(tDryBulb, relHum, basınç);
            değer.TWetBulb = GetTWetBulbFromHumRatio(tDryBulb, değer.HumOran, basınç);
            değer.TDwNoktası = GetTDewPointFromHumRatio(tDryBulb, değer.HumOran, basınç);
            değer.VapPres = GetVapPresFromHumRatio(değer.HumOran, basınç);
            değer.MoistAirEntalpi = GetMoistAirEnthalpy(tDryBulb, değer.HumRatio);
            değer.MoistAirVolume = GetMoistAirVolume(tDryBulb, değer.HumOran, basınç);
            değer.Doygunluk Derecesi = GetDegreeOfSaturation(tDryBulb, değer.HumOran, basınç);

            dönüş değer;
        }
    }

    /// <özet>
    /// Bir Psikrometrik hesaplamanın çıktı sonuçlarını içerir.
    /// </summary>
    halka açık sınıf Psikrometrik Değer
    {
        /// <özet>
        /// °F [IP] veya °C [SI] cinsinden kuru termometre sıcaklığı
        /// </summary>
        halka açık çift TDryBulb { almak; set; }

        /// <özet>
        /// °F [IP] veya °C [SI] cinsinden yaş termometre sıcaklığı
        /// </summary>
        halka açık çift TWetBulb { almak; set; }

        /// <özet>
        /// Psi [IP] veya Pa [SI] cinsinden atmosferik basınç
        /// </summary>
        halka açık çift Basınç { almak; set; }

        /// <özet>
        /// lb_H₂O lb_Air⁻¹ [IP] veya kg_H₂O kg_Air⁻¹ [SI] cinsinden nem oranı
        /// </summary>
        halka açık çift HumRatio { almak; set; }

        /// <özet>
        /// °F [IP] veya °C [SI] cinsinden çiğlenme noktası sıcaklığı
        /// </summary>
        halka açık çift TDewPoint { almak; set; }

        /// <özet>
        /// Bağıl nem [0-1]
        /// </summary>
        halka açık çift RelHum { almak; set; }

        /// <özet>
        /// Nemli havadaki su buharının Psi [IP] veya Pa [SI] cinsinden kısmi basıncı
        /// </summary>
        halka açık çift VapPres { almak; set; }

        /// <özet>
        /// Btu lb⁻¹ [IP] veya J kg⁻¹ [SI] cinsinden nemli hava entalpisi
        /// </summary>
        halka açık çift MoistAirEnthalpy { almak; set; }

        /// <özet>
        /// Belirli hacim ft³ lb⁻¹ [IP] veya m³ kg⁻¹ [SI] cinsinden
        /// </summary>
        halka açık çift MoistAirVolume { almak; set; }

        /// <özet>
        /// Doyma derecesi [birimsiz]
        /// </summary>
        halka açık çift Doygunluk Derecesi { almak; set; }
    }

    /// <özet>
    /// Standart birim sistemleri
    /// </summary>
    halka açık Sıralama Ölçü sistemi
    {
        /// <özet>
        /// İmparatorluk Birimleri
        /// </summary>
        IP = 1,

        /// <özet>
        /// Metrik Sistem Birimleri
        /// </summary>
         = 2
    }
}

Fortran

   1
   2
   3
   4
   5
   6
   7
   8
   9
  10
  11
  12
  13
  14
  15
  16
  17
  18
  19
  20
  21
  22
  23
  24
  25
  26
  27
  28
  29
  30
  31
  32
  33
  34
  35
  36
  37
  38
  39
  40
  41
  42
  43
  44
  45
  46
  47
  48
  49
  50
  51
  52
  53
  54
  55
  56
  57
  58
  59
  60
  61
  62
  63
  64
  65
  66
  67
  68
  69
  70
  71
  72
  73
  74
  75
  76
  77
  78
  79
  80
  81
  82
  83
  84
  85
  86
  87
  88
  89
  90
  91
  92
  93
  94
  95
  96
  97
  98
  99
 100
 101
 102
 103
 104
 105
 106
 107
 108
 109
 110
 111
 112
 113
 114
 115
 116
 117
 118
 119
 120
 121
 122
 123
 124
 125
 126
 127
 128
 129
 130
 131
 132
 133
 134
 135
 136
 137
 138
 139
 140
 141
 142
 143
 144
 145
 146
 147
 148
 149
 150
 151
 152
 153
 154
 155
 156
 157
 158
 159
 160
 161
 162
 163
 164
 165
 166
 167
 168
 169
 170
 171
 172
 173
 174
 175
 176
 177
 178
 179
 180
 181
 182
 183
 184
 185
 186
 187
 188
 189
 190
 191
 192
 193
 194
 195
 196
 197
 198
 199
 200
 201
 202
 203
 204
 205
 206
 207
 208
 209
 210
 211
 212
 213
 214
 215
 216
 217
 218
 219
 220
 221
 222
 223
 224
 225
 226
 227
 228
 229
 230
 231
 232
 233
 234
 235
 236
 237
 238
 239
 240
 241
 242
 243
 244
 245
 246
 247
 248
 249
 250
 251
 252
 253
 254
 255
 256
 257
 258
 259
 260
 261
 262
 263
 264
 265
 266
 267
 268
 269
 270
 271
 272
 273
 274
 275
 276
 277
 278
 279
 280
 281
 282
 283
 284
 285
 286
 287
 288
 289
 290
 291
 292
 293
 294
 295
 296
 297
 298
 299
 300
 301
 302
 303
 304
 305
 306
 307
 308
 309
 310
 311
 312
 313
 314
 315
 316
 317
 318
 319
 320
 321
 322
 323
 324
 325
 326
 327
 328
 329
 330
 331
 332
 333
 334
 335
 336
 337
 338
 339
 340
 341
 342
 343
 344
 345
 346
 347
 348
 349
 350
 351
 352
 353
 354
 355
 356
 357
 358
 359
 360
 361
 362
 363
 364
 365
 366
 367
 368
 369
 370
 371
 372
 373
 374
 375
 376
 377
 378
 379
 380
 381
 382
 383
 384
 385
 386
 387
 388
 389
 390
 391
 392
 393
 394
 395
 396
 397
 398
 399
 400
 401
 402
 403
 404
 405
 406
 407
 408
 409
 410
 411
 412
 413
 414
 415
 416
 417
 418
 419
 420
 421
 422
 423
 424
 425
 426
 427
 428
 429
 430
 431
 432
 433
 434
 435
 436
 437
 438
 439
 440
 441
 442
 443
 444
 445
 446
 447
 448
 449
 450
 451
 452
 453
 454
 455
 456
 457
 458
 459
 460
 461
 462
 463
 464
 465
 466
 467
 468
 469
 470
 471
 472
 473
 474
 475
 476
 477
 478
 479
 480
 481
 482
 483
 484
 485
 486
 487
 488
 489
 490
 491
 492
 493
 494
 495
 496
 497
 498
 499
 500
 501
 502
 503
 504
 505
 506
 507
 508
 509
 510
 511
 512
 513
 514
 515
 516
 517
 518
 519
 520
 521
 522
 523
 524
 525
 526
 527
 528
 529
 530
 531
 532
 533
 534
 535
 536
 537
 538
 539
 540
 541
 542
 543
 544
 545
 546
 547
 548
 549
 550
 551
 552
 553
 554
 555
 556
 557
 558
 559
 560
 561
 562
 563
 564
 565
 566
 567
 568
 569
 570
 571
 572
 573
 574
 575
 576
 577
 578
 579
 580
 581
 582
 583
 584
 585
 586
 587
 588
 589
 590
 591
 592
 593
 594
 595
 596
 597
 598
 599
 600
 601
 602
 603
 604
 605
 606
 607
 608
 609
 610
 611
 612
 613
 614
 615
 616
 617
 618
 619
 620
 621
 622
 623
 624
 625
 626
 627
 628
 629
 630
 631
 632
 633
 634
 635
 636
 637
 638
 639
 640
 641
 642
 643
 644
 645
 646
 647
 648
 649
 650
 651
 652
 653
 654
 655
 656
 657
 658
 659
 660
 661
 662
 663
 664
 665
 666
 667
 668
 669
 670
 671
 672
 673
 674
 675
 676
 677
 678
 679
 680
 681
 682
 683
 684
 685
 686
 687
 688
 689
 690
 691
 692
 693
 694
 695
 696
 697
 698
 699
 700
 701
 702
 703
 704
 705
 706
 707
 708
 709
 710
 711
 712
 713
 714
 715
 716
 717
 718
 719
 720
 721
 722
 723
 724
 725
 726
 727
 728
 729
 730
 731
 732
 733
 734
 735
 736
 737
 738
 739
 740
 741
 742
 743
 744
 745
 746
 747
 748
 749
 750
 751
 752
 753
 754
 755
 756
 757
 758
 759
 760
 761
 762
 763
 764
 765
 766
 767
 768
 769
 770
 771
 772
 773
 774
 775
 776
 777
 778
 779
 780
 781
 782
 783
 784
 785
 786
 787
 788
 789
 790
 791
 792
 793
 794
 795
 796
 797
 798
 799
 800
 801
 802
 803
 804
 805
 806
 807
 808
 809
 810
 811
 812
 813
 814
 815
 816
 817
 818
 819
 820
 821
 822
 823
 824
 825
 826
 827
 828
 829
 830
 831
 832
 833
 834
 835
 836
 837
 838
 839
 840
 841
 842
 843
 844
 845
 846
 847
 848
 849
 850
 851
 852
 853
 854
 855
 856
 857
 858
 859
 860
 861
 862
 863
 864
 865
 866
 867
 868
 869
 870
 871
 872
 873
 874
 875
 876
 877
 878
 879
 880
 881
 882
 883
 884
 885
 886
 887
 888
 889
 890
 891
 892
 893
 894
 895
 896
 897
 898
 899
 900
 901
 902
 903
 904
 905
 906
 907
 908
 909
 910
 911
 912
 913
 914
 915
 916
 917
 918
 919
 920
 921
 922
 923
 924
 925
 926
 927
 928
 929
 930
 931
 932
 933
 934
 935
 936
 937
 938
 939
 940
 941
 942
 943
 944
 945
 946
 947
 948
 949
 950
 951
 952
 953
 954
 955
 956
 957
 958
 959
 960
 961
 962
 963
 964
 965
 966
 967
 968
 969
 970
 971
 972
 973
 974
 975
 976
 977
 978
 979
 980
 981
 982
 983
 984
 985
 986
 987
 988
 989
 990
 991
 992
 993
 994
 995
 996
 997
 998
 999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
! PsychroLib (sürüm 2.3.0) (https://github.com/psychrometrics/psychrolib)
! Mevcut kütüphane uygulaması için Telif hakkı (c) 2018 D. Thevenard ve D. Meyer
! Telif Hakkı (c) 2017 ASHRAE El Kitabı — ASHRAE denklemleri ve katsayıları için temel bilgiler
! MIT Lisansı altında lisanslanmıştır.

modül  psikrolib
  !+ Modüle genel bakış
  !+ Gaz-buhar karışımlarının termodinamik özelliklerini hesaplamak için fonksiyonlar içerir
  !+ ve çoğu mühendislik, fiziksel ve meteorolojik durum için uygun standart atmosfer
  !+ uygulamalar.
  !+
  !+ İşlevlerin çoğu, içinde bulunan formüllerin bir uygulamasıdır.
  !+ 2017 ASHRAE El Kitabı - Temel Bilgiler, hem Uluslararası Sistemde (SI),
  !+ ve Imperial (IP) birimleri. Lütfen ekteki bilgilere bakın.
  !+ ilgili referansları için her işlev.
  !+
  !+ Örnek
  !+ yalnızca psikrolib kullanın: GetTDewPointFromRelHum, SetUnitSystem, SI
  !+ ! Birim sistemini örneğin SI olarak ayarlayın ('SI' veya 'IP' olabilir)
  !+ SetUnitSystem(SI) çağrısı
  !+ ! 25 C kuru termometre sıcaklığı ve %80 bağıl nem için çiğ noktası sıcaklığını hesaplayın
  !+ yazdır *, GetTDewPointFromRelHum(25.0, 0.80)
  !+ 21.3094
  !+
  !+ Telif hakkı
  !+ - Geçerli kitaplık uygulaması için
  !+ Telif Hakkı (c) 2018 D. Thevenard ve D. Meyer.
  !+ - Yayınlanan denklemler ve katsayılar için ASHRAE Handbook — Fundamentals, Chapter 1
  !+ Telif Hakkı (c) 2017 ASHRAE El Kitabı — Temel Bilgiler (https://www.ashrae.org)
  !+
  !+ Lisans
  !+ MİT (https://github.com/psychrometrics/psychrolib/LICENSE.txt)
  !+
  !+ Yazarlardan Not
  !+ Kodun yeterli olduğundan emin olmak için her türlü çabayı gösterdik, ancak
  !+ doğruluğuna göre gösterimi. Kendi sorumluluğunuzdadır kullanın. fark etmeli misin
  !+ bir hata veya bir öneriniz varsa, lütfen şu adresten GitHub aracılığıyla bize bildirin:
  !+ https://github.com/psychrometrics/psychrolib/issues.


  örtük hiçbiri

    özel
    halka açık :: IP
  halka açık :: 
  halka açık :: SetUnitSystem
  halka açık :: GetUnitSystem
  halka açık :: isIP
  halka açık :: GetTRankineFromTFahrenheit
  halka açık :: GetTFahrenheitFromTRankine
  halka açık :: GetTKelvinFromTCelsius
  halka açık :: GetTCelsiusFromTKelvin
  halka açık :: GetTWetBulbFromTDewPoint
  halka açık :: GetTWetBulbFromRelHum
  halka açık :: GetRelHumFromTDewPoint
  halka açık :: GetRelHumFromTWetBulb
  halka açık :: GetTDewPointFromRelHum
  halka açık :: GetTDewPointFromTWetBulb
  halka açık :: GetVapPresFromRelHum
  halka açık :: GetRelHumFromVapPres
  halka açık :: GetTDewPointFromVapPres
  halka açık :: GetVapPresFromTDewPoint
  halka açık :: GetTWetBulbFromHumRatio
  halka açık :: GetHumRatioFromTWetBulb
  halka açık :: GetHumRatioFromRelHum
  halka açık :: GetRelHumFromHumRatio
  halka açık :: GetHumRatioFromTDewPoint
  halka açık :: GetTDewPointFromHumRatio
  halka açık :: GetHumRatioFromVapPres
  halka açık :: GetVapPresFromHumRatio
  halka açık :: GetDryAirEnthalpy
  halka açık :: GetDryAirDensity
  halka açık :: GetDryAirVolume
  halka açık :: GetTDryBulbFromEnthalpyAndHumRatio
  halka açık :: GetHumRatioFromEnthalpyAndTDryBulb
  halka açık :: GetSatVapPres
  halka açık :: GetSatHumRatio
  halka açık :: GetSatAirEnthalpy
  halka açık :: GetVaporPressureDeficit
  halka açık :: GetDegreeOfSaturation
  halka açık :: GetMoistAirEnthalpy
  halka açık :: GetMoistAirVolume
  halka açık :: GetTDryBulbFromMoistAirVolumeAndHumRatio
  halka açık :: GetMoistAirDensity
  halka açık :: GetStandardAtmPressure
  halka açık :: GetStandardAtmTemperature
  halka açık :: GetSeaLevelPressure
  halka açık :: GetStationPressure
  halka açık :: GetSpecificHumFromHumRatio
  halka açık :: GetHumRatioFromSpecificHum
  halka açık :: CalcPsychrometricsFromTWetBulb
  halka açık :: CalcPsychrometricsFromTDewPoint
  halka açık :: CalcPsychrometricsFromRelHum
  halka açık :: dLnPws_


  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!
  ! genel sabitler
  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!

  gerçek, parametre ::  ZERO_FAHRENHEIT_AS_RANKINE = 459.67
    !+ Derece Rankine (°R) olarak ifade edilen sıfır derece Fahrenheit (°F).
    !+ Referans:
    !+ ASHRAE El Kitabı - Temel Bilgiler (2017) bölüm. 39.

  gerçek, parametre ::  ZERO_CELSIUS_AS_KELVIN = 273.15
    !+ Kelvin (K) olarak ifade edilen sıfır santigrat derece (°C).
    !+ Referans:
    !+ ASHRAE El Kitabı - Temel Bilgiler (2017) bölüm. 39.

  gerçek, parametre ::  R_DA_IP = 53.350
    !+ Kuru hava için evrensel gaz sabiti (IP versiyonu) ft lb_Force lb_DryAir⁻¹ R⁻¹ cinsinden.
    !+ Referans:
    !+ ASHRAE El Kitabı - Temel Bilgiler (2017) bölüm. 1.

  gerçek, parametre ::  R_DA_SI = 287.042
    !+ J kg_DryAir⁻¹ K⁻¹ cinsinden kuru hava (SI versiyonu) için evrensel gaz sabiti.
    !+ Referans:
    !+ ASHRAE El Kitabı - Temel Bilgiler (2017) bölüm. 1.

  tam sayı, parametre :: IP = 1
  tam sayı, parametre ::  = 2

  tam sayı  :: PSYCHROLIB_UNITS =  ! 0 = tanımsız.
    !+ Kullanılacak birim sistemi.

  gerçek ::  PSYCHROLIB_TOLERANCE = 1.0
    !+ Sıcaklık hesaplamalarının toleransı.

  tam sayı, parametre  :: MAX_ITER_COUNT = 100
    !+ While döngülerinden çıkmadan önceki maksimum yineleme sayısı.

  gerçek, parametre  :: MIN_HUM_RATIO = 1e-7
    !+ Herhangi bir fonksiyon tarafından kullanılan/dönen minimum kabul edilebilir nem oranı.
    !+ 0'ın üzerindeki veya MIN_HUM_RATIO'nun altındaki tüm değerler bu değere sıfırlanacaktır.

  gerçek, parametre  :: FREEZING_POINT_WATER_IP = 32.0
    !+ float: Fahrenheit cinsinden suyun donma noktası.

  gerçek, parametre  :: FREEZING_POINT_WATER_SI = 0.0
    !+ float: Santigrat cinsinden suyun donma noktası.

  gerçek, parametre  :: TRIPLE_POINT_WATER_IP = 32.018
    !+ float: Fahrenheit cinsinden üçlü su noktası.

  gerçek, parametre  :: TRIPLE_POINT_WATER_SI = 0.01
    !+ float: Santigrat cinsinden suyun üçlü noktası.


  içerir


  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!
  ! Yardımcı fonksiyonlar
  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!

  alt program  SetUnitSystem(Ölçü sistemi)
  !+ Kullanılacak birim sistemini ayarlayın (SI veya IP).
  !+ Notlar: Bu fonksiyon *ÇAĞIRILMALIDIR* kütüphane kullanılmadan önce

    tam sayı, niyet(içinde)    :: Ölçü sistemi
    !+ Birimler: seçilen birim sistemini gösteren dize (SI veya IP)

    eğer (.değil. (Ölçü sistemi ==  .veya. Ölçü sistemi == IP)) sonra
      hata Dur "Birim sistemi SI veya IP olmalıdır."
    eğer son

    PSYCHROLIB_UNITS = Ölçü sistemi

    ! Sıcaklık hesaplamalarında toleransı tanımlayın
    ! Tolerans IP ve SI'da aynıdır
    eğer (Ölçü sistemi == IP) sonra
      PSYCHROLIB_TOLERANCE = 0.001 * 9.0 / 5.0
    Başka
      PSYCHROLIB_TOLERANCE = 0.001
    eğer son
    bitiş alt programı  SetUnitSystem

  fonksiyon  GetUnitSystem() Sonuç(Ölçü sistemi)
    !+ Kullanımdaki birim sistemini iade edin.
    tam sayı :: Ölçü sistemi
    Ölçü sistemi = PSYCHROLIB_UNITS
  bitiş işlevi  GetUnitSystem

  fonksiyon  isIP()
    !+ Kullanılan sistemin IP mi yoksa SI mı olduğunu kontrol edin
    mantıklı :: isIP
    eğer (PSYCHROLIB_UNITS == IP) sonra
      isIP = .doğru.
    yoksa (PSYCHROLIB_UNITS == ) sonra
      isIP = .yanlış.
    Başka
      hata Dur "Birim sistemi tanımlanmadı."
    eğer son
    bitiş işlevi  isIP


  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!
  ! Sıcaklık birimleri arasında dönüşüm
  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!

  fonksiyon  GetTRankineFromTFahrenheit(TFahrenheit) Sonuç(TRankin)
    !+ Sıcaklığı Rankine (°R) derecesine dönüştürmek için yardımcı işlev
    !+ derece Fahrenheit (°F) cinsinden verilen sıcaklık.
    !+ Referans: ASHRAE El Kitabı - Temel Bilgiler (2017) bölüm. 1 bölüm 3

    gerçek, niyet(içinde)  :: TFahrenheit
      !+ Fahrenheit cinsinden sıcaklık
    gerçek              :: TRankin
      !+ Derece cinsinden sıcaklık Rankine

    TRankin = TFahrenheit + ZERO_FAHRENHEIT_AS_RANKINE
  bitiş işlevi  GetTRankineFromTFahrenheit

  fonksiyon  GetTFahrenheitFromTRankine(TRankin) Sonuç(TFahrenheit)
    !+ Sıcaklığı Fahrenheit (°F) derecesine dönüştürmek için yardımcı işlev
    !+ derece Rankine (°R) cinsinden verilen sıcaklık.
    !+ Referans: ASHRAE El Kitabı - Temel Bilgiler (2017) bölüm. 1 bölüm 3

    gerçek, niyet(içinde)  :: TRankin
      !+ Derece cinsinden sıcaklık Rankine
    gerçek              :: TFahrenheit
      !+ Fahrenheit cinsinden sıcaklık

    TFahrenheit = TRankin - ZERO_FAHRENHEIT_AS_RANKINE
  bitiş işlevi  GetTFahrenheitFromTRankine

  fonksiyon  GetTKelvinFromTCelsius(TCelsius) Sonuç(TKelvin)
    !+ Sıcaklığı Kelvin'e (K) dönüştürmek için yardımcı işlev
    !+ santigrat derece (°C) cinsinden verilen sıcaklık.
    !+ Referans: ASHRAE El Kitabı - Temel Bilgiler (2017) bölüm. 1 bölüm 3

    gerçek, niyet(içinde)  :: TCelsius
      !+ Santigrat derece cinsinden sıcaklık
    gerçek              :: TKelvin
      !+ Kelvin'de Tempearatyre

    TKelvin = TCelsius + ZERO_CELSIUS_AS_KELVIN
  bitiş işlevi  GetTKelvinFromTCelsius

  fonksiyon  GetTCelsiusFromTKelvin(TKelvin) Sonuç(TCelsius)
    !+ Sıcaklığı Celsius derecesine (°C) dönüştürmek için yardımcı işlev
    !+ Kelvin (K) cinsinden verilen sıcaklık.
    !+ Referans: ASHRAE El Kitabı - Temel Bilgiler (2017) bölüm. 1 bölüm 3

    gerçek, niyet(içinde)  :: TKelvin
      !+ Kelvin'de Tempearatyre
    gerçek              :: TCelsius
      !+ Santigrat derece cinsinden sıcaklık

    TCelsius = TKelvin - ZERO_CELSIUS_AS_KELVIN
  bitiş işlevi  GetTCelsiusFromTKelvin


  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!
  ! Çiy noktası, yaş termometre ve bağıl nem arasındaki dönüşümler
  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!

  fonksiyon  GetTWetBulbFromTDewPoint(TDryBulb, TDewPoint, Basınç) Sonuç(TWetBulb)
    !+ Kuru termometre sıcaklığı, çiy noktası sıcaklığı ve basınç verildiğinde yaş termometre sıcaklığına dönüş.
    !+ Referanslar:
    !+ ASHRAE El Kitabı - Temel Bilgiler (2017) bölüm. 1

    gerçek, niyet(içinde)  :: TDryBulb
      !+ °F [IP] veya °C [SI] cinsinden kuru termometre sıcaklığı
    gerçek, niyet(içinde)  :: TDewPoint
      !+ °F [IP] veya °C [SI] cinsinden çiğlenme noktası sıcaklığı
    gerçek, niyet(içinde)  :: Basınç
      !+ Psi [IP] veya Pa [SI] cinsinden atmosferik basınç
    gerçek              :: TWetBulb
      !+ °F [IP] veya °C [SI] cinsinden yaş termometre sıcaklığı
    gerçek              :: HumRatio
      !+ lb_H₂O lb_Air⁻¹ [IP] veya kg_H₂O kg_Air⁻¹ [SI] cinsinden nem oranı

    eğer (TDewPoint > TDryBulb) sonra
      hata Dur "Hata: çiğ noktası sıcaklığı kuru termometre sıcaklığının üzerinde"
    eğer son

    HumRatio = GetHumRatioFromTDewPoint(TDewPoint, Basınç)
    TWetBulb = GetTWetBulbFromHumRatio(TDryBulb, HumRatio, Basınç)
  bitiş işlevi  GetTWetBulbFromTDewPoint

  fonksiyon  GetTWetBulbFromRelHum(TDryBulb, RelHum, Basınç) Sonuç(TWetBulb)
    !+ Kuru termometre sıcaklığı, bağıl nem ve basınç verildiğinde yaş termometre sıcaklığına dönüş.
    !+ Referanslar:
    !+ ASHRAE El Kitabı - Temel Bilgiler (2017) bölüm. 1

    gerçek, niyet(içinde)  ::  TDryBulb
      !+ °F [IP] veya °C [SI] cinsinden kuru termometre sıcaklığı
    gerçek, niyet(içinde)  ::  RelHum
      !+ [0, 1] aralığında bağıl nem
    gerçek, niyet(içinde)  ::  Basınç
      !+ Psi [IP] veya Pa [SI] cinsinden atmosferik basınç
    gerçek              ::  TWetBulb
      !+ °F [IP] veya °C [SI] cinsinden yaş termometre sıcaklığı
    gerçek              ::  HumRatio
      !+ lb_H₂O lb_Air⁻¹ [IP] veya kg_H₂O kg_Air⁻¹ [SI] cinsinden nem oranı

    eğer (RelHum < 0.0 .veya. RelHum > 1.0) sonra
      hata Dur "Hata: bağıl nem [0,1] aralığının dışında"
    eğer son

    HumRatio = GetHumRatioFromRelHum(TDryBulb, RelHum, Basınç)
    TWetBulb = GetTWetBulbFromHumRatio(TDryBulb, HumRatio, Basınç)
  bitiş işlevi  GetTWetBulbFromRelHum

  fonksiyon  GetRelHumFromTDewPoint(TDryBulb, TDewPoint) Sonuç(RelHum)
    !+ Kuru termometre sıcaklığı ve çiy noktası sıcaklığı verilen bağıl nemi geri getirin.
    !+ Referanslar:
    !+ ASHRAE El Kitabı - Temel Bilgiler (2017) bölüm. 1 eş 22

    gerçek, niyet(içinde)  ::  TDryBulb
      !+ °F [IP] veya °C [SI] cinsinden kuru termometre sıcaklığı
    gerçek, niyet(içinde)  ::  TDewPoint
      !+ °F [IP] veya °C [SI] cinsinden çiğlenme noktası sıcaklığı
    gerçek              ::  RelHum
      !+ [0, 1] aralığında bağıl nem
    gerçek              ::  VapPres
      !+ Nemli havadaki su buharının Psi [IP] veya Pa [SI] cinsinden kısmi basıncı
    gerçek              ::  SatVapPres
      !+ Psi [IP] veya Pa [SI] cinsinden doymuş havanın buhar basıncı

    eğer (TDewPoint > TDryBulb) sonra
      hata Dur "Hata: çiğ noktası sıcaklığı kuru termometre sıcaklığının üzerinde"
    eğer son

    VapPres     = GetSatVapPres(TDewPoint)
    SatVapPres  = GetSatVapPres(TDryBulb)
    RelHum      = VapPres / SatVapPres
  bitiş işlevi  GetRelHumFromTDewPoint

  fonksiyon  GetRelHumFromTWetBulb(TDryBulb, TWetBulb, Basınç) Sonuç(RelHum)
    !+ Kuru termometre sıcaklığı, yaş termometre sıcaklığı ve basıncı verilen bağıl nemi geri getirin.
    !+ Referanslar:
    !+ ASHRAE El Kitabı - Temel Bilgiler (2017) bölüm. 1

    gerçek, niyet(içinde)  ::  TDryBulb
      !+ °F [IP] veya °C [SI] cinsinden kuru termometre sıcaklığı
    gerçek, niyet(içinde)  ::  TWetBulb
      !+ °F [IP] veya °C [SI] cinsinden yaş termometre sıcaklığı
    gerçek, niyet(içinde)  ::  Basınç
      !+ Psi [IP] veya Pa [SI] cinsinden atmosferik basınç
    gerçek              ::  RelHum
      !+ [0, 1] aralığında bağıl nem
    gerçek              ::  HumRatio
      !+ lb_H₂O lb_Air⁻¹ [IP] veya kg_H₂O kg_Air⁻¹ [SI] cinsinden nem oranı

    eğer (TWetBulb > TDryBulb) sonra
      hata Dur "Hata: yaş termometre sıcaklığı kuru termometre sıcaklığının üzerinde"
    eğer son

    HumRatio = GetHumRatioFromTWetBulb(TDryBulb, TWetBulb, Basınç)
    RelHum   = GetRelHumFromHumRatio(TDryBulb, HumRatio, Basınç)
  bitiş işlevi  GetRelHumFromTWetBulb

  fonksiyon  GetTDewPointFromRelHum(TDryBulb, RelHum) Sonuç(TDewPoint)
    !+ Kuru termometre sıcaklığı ve bağıl nem verildiğinde dönüş çiğlenme noktası sıcaklığı.
    !+ Referanslar:
    !+ ASHRAE El Kitabı - Temel Bilgiler (2017) bölüm. 1

    gerçek, niyet(içinde)  ::  TDryBulb
      !+ °F [IP] veya °C [SI] cinsinden kuru termometre sıcaklığı
    gerçek, niyet(içinde)  ::  RelHum
      !+ [0, 1] aralığında bağıl nem
    gerçek              ::  TDewPoint
      !+ °F [IP] veya °C [SI] cinsinden çiğlenme noktası sıcaklığı
    gerçek              ::  VapPres
      !+ Nemli havadaki su buharının Psi [IP] veya Pa [SI] cinsinden kısmi basıncı

    eğer (RelHum < 0.0 .veya. RelHum > 1.0) sonra
      hata Dur "Hata: bağıl nem [0,1] aralığının dışında"
    eğer son

    VapPres   = GetVapPresFromRelHum(TDryBulb, RelHum)
    TDewPoint = GetTDewPointFromVapPres(TDryBulb, VapPres)
  bitiş işlevi  GetTDewPointFromRelHum

  fonksiyon  GetTDewPointFromTWetBulb(TDryBulb, TWetBulb, Basınç) Sonuç(TDewPoint)
    !+ Kuru termometre sıcaklığı, yaş termometre sıcaklığı ve basınç verildiğinde dönüş çiy noktası sıcaklığı.
    !+ Referanslar:
    !+ ASHRAE El Kitabı - Temel Bilgiler (2017) bölüm. 1

    gerçek, niyet(içinde)  ::  TDryBulb
      !+ °F [IP] veya °C [SI] cinsinden kuru termometre sıcaklığı
    gerçek, niyet(içinde)  ::  TWetBulb
      !+ °F [IP] veya °C [SI] cinsinden yaş termometre sıcaklığı
    gerçek, niyet(içinde)  ::  Basınç
      !+ Psi [IP] veya Pa [SI] cinsinden atmosferik basınç
    gerçek              ::  TDewPoint
      !+ °F [IP] veya °C [SI] cinsinden çiğlenme noktası sıcaklığı
    gerçek              ::  HumRatio
      !+ lb_H₂O lb_Air⁻¹ [IP] veya kg_H₂O kg_Air⁻¹ [SI] cinsinden nem oranı

    eğer (TWetBulb > TDryBulb) sonra
      hata Dur "Hata: yaş termometre sıcaklığı kuru termometre sıcaklığının üzerinde"
    eğer son

    HumRatio  = GetHumRatioFromTWetBulb(TDryBulb, TWetBulb, Basınç)
    TDewPoint = GetTDewPointFromHumRatio(TDryBulb, HumRatio, Basınç)
  bitiş işlevi  GetTDewPointFromTWetBulb


  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!
  ! Çiy noktası veya bağıl nem ve buhar basıncı arasındaki dönüşümler
  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!

  fonksiyon  GetVapPresFromRelHum(TDryBulb, RelHum) Sonuç(VapPres)
    !+ Bağıl nem ve sıcaklığın bir fonksiyonu olarak su buharının kısmi basıncını geri getirin.
    !+ Referanslar:
    !+ ASHRAE El Kitabı - Temel Bilgiler (2017) bölüm. 1 eş 12, 22

    gerçek, niyet(içinde)  ::  TDryBulb
      !+ °F [IP] veya °C [SI] cinsinden kuru termometre sıcaklığı
    gerçek, niyet(içinde)  ::  RelHum
      !+ [0, 1] aralığında bağıl nem
    gerçek              ::  VapPres
      !+ Nemli havadaki su buharının Psi [IP] veya Pa [SI] cinsinden kısmi basıncı

    eğer (RelHum < 0.0 .veya. RelHum > 1.0) sonra
      hata Dur "Hata: bağıl nem [0,1] aralığının dışında"
    eğer son

    VapPres = RelHum * GetSatVapPres(TDryBulb)
  bitiş işlevi  GetVapPresFromRelHum

  fonksiyon  GetRelHumFromVapPres(TDryBulb, VapPres) Sonuç(RelHum)
    !+ Kuru termometre sıcaklığı ve buhar basıncı verilen bağıl nemi geri getirin.
    !+ Referanslar:
    !+ ASHRAE El Kitabı - Temel Bilgiler (2017) bölüm. 1 eş 12, 22

    gerçek, niyet(içinde)  ::  TDryBulb
      !+ °F [IP] veya °C [SI] cinsinden kuru termometre sıcaklığı
    gerçek, niyet(içinde)  ::  VapPres
      !+ Nemli havadaki su buharının Psi [IP] veya Pa [SI] cinsinden kısmi basıncı
    gerçek              ::  RelHum
      !+ [0, 1] aralığında bağıl nem

    eğer (VapPres < 0.0) sonra
      hata Dur "Hata: Nemli havadaki kısmi su buharı basıncı negatif olamaz"
    eğer son

    RelHum = VapPres / GetSatVapPres(TDryBulb)
  bitiş işlevi  GetRelHumFromVapPres

  fonksiyon  dLnPws_(TDryBulb) Sonuç(dLnPws)
    !+ Doymuş buhar basıncının doğal logaritmasının türevini veren yardımcı fonksiyon
    !+ kuru termometre sıcaklığının bir fonksiyonu olarak.
    !+ Referans:
    !+ ASHRAE El Kitabı - Temel Bilgiler (2017) bölüm. 1 eş 5

    gerçek, niyet(içinde)  ::  TDryBulb
      !+ °F [IP] veya °C [SI] cinsinden kuru termometre sıcaklığı
    gerçek              ::  dLnPws
      !+ Doymuş havanın buhar basıncının Psi [IP] veya Pa [SI] cinsinden doğal logaritmasının türevi
    gerçek              ::  T
      !+ R [IP] veya K [SI] cinsinden kuru termometre sıcaklığı

    eğer (isIP()) sonra

      T = GetTRankineFromTFahrenheit(TDryBulb)

      eğer (TDryBulb <= TRIPLE_POINT_WATER_IP) sonra
        dLnPws = 1.0214165E+04 / T**2 - 5.3765794E-03 + 2 * 1.9202377E-07 * T &
                 + 3 * 3.5575832E-10 * T**2 - 4 * 9.0344688E-14 * T**3 + 4.1635019 / T
      Başka
        dLnPws = 1.0440397E+04 / T**2 - 2.7022355E-02 + 2 * 1.2890360E-05 * T &
                 - 3 * 2.4780681E-09 * T**2 + 6.5459673 / T
      eğer son

        Başka

      T = GetTKelvinFromTCelsius(TDryBulb)

      eğer (TDryBulb <= TRIPLE_POINT_WATER_SI) sonra
        dLnPws = 5.6745359E+03 / T**2 - 9.677843E-03 + 2 * 6.2215701E-07 * T &
                 + 3 * 2.0747825E-09 * T**2 - 4 * 9.484024E-13 * T**3 + 4.1635019 / T
      Başka
        dLnPws = 5.8002206E+03 / T**2 - 4.8640239E-02 + 2 * 4.1764768E-05 * T &
                 - 3 * 1.4452093E-08 * T**2 + 6.5459673 / T
      eğer son
        eğer son
    bitiş işlevi  dLnPws_

  fonksiyon  GetTDewPointFromVapPres(TDryBulb, VapPres) Sonuç(TDewPoint)
    !+ Kuru termometre sıcaklığı ve buhar basıncı verilen dönüş çiğlenme noktası sıcaklığı.
    !+ Referanslar:
    !+ ASHRAE El Kitabı - Temel Bilgiler (2017) bölüm. 1 eş. 5 ve 6
    !+ Notlar:
    !+ Çiy noktası sıcaklığı, su buharı basıncını veren denklem ters çevrilerek çözülür
    Sağlanan regresyonları kullanmak yerine sıcaklıktan doygunlukta !+
    ASHRAE tarafından !+ (eqn. 37 ve 38) çok daha az doğru ve
    !+ daha dar geçerlilik aralığı.
    !+ Su buharının logaritması için Newton-Raphson (NR) yöntemi kullanılır
    !+ sıcaklığın bir fonksiyonu olarak basınç, ki bu çok düzgün bir fonksiyondur
    !+ Yakınsama genellikle 3 ila 5 yinelemede elde edilir.
    !+ Burada TdryBulb'a gerçekten ihtiyaç yoktur, sadece kolaylık sağlamak için kullanılır.

    gerçek, niyet(içinde)    ::  TDryBulb
      !+ °F [IP] veya °C [SI] cinsinden kuru termometre sıcaklığı
    gerçek, niyet(içinde)    ::  VapPres
      !+ Nemli havadaki su buharının Psi [IP] veya Pa [SI] cinsinden kısmi basıncı
    gerçek                ::  TDewPoint
      !+ °F [IP] veya °C [SI] cinsinden çiğlenme noktası sıcaklığı
    gerçek                ::  lnVP
      !+ Nemli havadaki su buharı basıncının kısmi basıncının doğal logaritması
    gerçek                ::  d_lnVP
      !+ Sayısal olarak hesaplanan fonksiyonun türevi
    gerçek                ::  lnVP_iter
      !+ NR hesaplamasında kullanılan buhar su basıncı log değeri
    gerçek                ::  TDewPoint_iter
      !+ NR hesaplamasında kullanılan TDewPoint değeri
    gerçek, boyut(2)  ::  SINIRLAR
      !+ °F [IP] veya °C [SI] cinsinden geçerli sıcaklık aralığı
    tam sayı             :: indeks
      !+ Hesaplamada kullanılan indeks

    ! Birim sisteminin bir fonksiyonu olarak sınırlar ve adım boyutu
    eğer (isIP()) sonra
        SINIRLAR(1) = -148.0
        SINIRLAR(2) =  392.0
    Başka
        SINIRLAR(1) = -100.0
        SINIRLAR(2) =  200.0
    eğer son

    ! Geçerlilik kontrolü -- dışında bir çözümün bulunamayacağı sınırlar
    eğer (VapPres < GetSatVapPres(SINIRLAR(1)) .veya. VapPres > GetSatVapPres(SINIRLAR(2))) sonra
      hata Dur "Hata: kısmi su buharı basıncı, denklemlerin geçerlilik aralığının dışında"
    eğer son

    ! Çözüme yaklaşmak için NR kullanıyoruz.
    TDewPoint = TDryBulb
    lnVP = günlük(VapPres)
    indeks = 1

    yaparken (.doğru.)
      TDewPoint_iter = TDewPoint ! NR hesaplamasında kullanılan TDewPoint_iter
      lnVP_iter = günlük(GetSatVapPres(TDewPoint_iter))

      ! Analitik olarak hesaplanan fonksiyonun türevi
      d_lnVP = dLnPws_(TDewPoint_iter)

      ! Yukarıda tanımlanan arama alanıyla sınırlı yeni tahmin
      TDewPoint = TDewPoint_iter - (lnVP_iter - lnVP) / d_lnVP
      TDewPoint = maksimum(TDewPoint, SINIRLAR(1))
      TDewPoint = dk(TDewPoint, SINIRLAR(2))

      eğer (karın kasları(TDewPoint - TDewPoint_iter) <= PSYCHROLIB_TOLERANCE) sonra
                çıkış
            eğer son

            Eğer (indeks > MAX_ITER_COUNT) sonra
        hata Dur "GetTDewPointFromVapPres'te yakınsamaya ulaşılamadı. Durduruluyor."
      eğer son

      indeks = indeks + 1
    bitirmek

  TDewPoint = dk(TDewPoint, TDryBulb)
  bitiş işlevi  GetTDewPointFromVapPres

  fonksiyon  GetVapPresFromTDewPoint(TDewPoint) Sonuç(VapPres)
    !+ Çiy noktası sıcaklığında verilen dönüş buhar basıncı.
    !+ Referanslar:
    !+ ASHRAE El Kitabı - Temel Bilgiler (2017) bölüm. 1 eş 36

    gerçek, niyet(içinde)  ::  TDewPoint
      !+ °F [IP] veya °C [SI] cinsinden çiğlenme noktası sıcaklığı
    gerçek              ::  VapPres
      !+ Nemli havadaki su buharının Psi [IP] veya Pa [SI] cinsinden kısmi basıncı

    VapPres = GetSatVapPres(TDewPoint)
  bitiş işlevi  GetVapPresFromTDewPoint


  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!
  ! Yaş termometre sıcaklığından, çiy noktası sıcaklığından veya bağıl nemden nem oranına dönüşümler
  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!

  fonksiyon  GetTWetBulbFromHumRatio(TDryBulb, HumRatio, Basınç) Sonuç(TWetBulb)
    !+ Kuru termometre sıcaklığı, nem oranı ve basınç verildiğinde yaş termometre sıcaklığına dönüş.
    !+ Referanslar:
    !+ ASHRAE El Kitabı - Temel Bilgiler (2017) bölüm. 1 eqn 33 ve 35, Tstar için çözüldü

    gerçek, niyet(içinde)  ::  TDryBulb
      !+ °F [IP] veya °C [SI] cinsinden kuru termometre sıcaklığı
    gerçek, niyet(içinde)  ::  HumRatio
      !+ lb_H₂O lb_Air⁻¹ [IP] veya kg_H₂O kg_Air⁻¹ [SI] cinsinden nem oranı
    gerçek, niyet(içinde)  ::  Basınç
      !+ Psi [IP] veya Pa [SI] cinsinden atmosferik basınç
    gerçek              ::  TWetBulb
      !+ °F [IP] veya °C [SI] cinsinden yaş termometre sıcaklığı
    gerçek              ::  TDewPoint
      !+ TDewPoint : °F [IP] veya °C [SI] cinsinden çiğlenme noktası sıcaklığı
    gerçek              ::  TWetBulbSup
      !+ Biseksiyon yöntemindeki yaş termometre sıcaklığının üst değeri (ilk tahmin kuru termometre sıcaklığındandır) °F [IP] veya °C [SI] cinsinden
    gerçek              ::  TWetBulbInf
      !+ °F [IP] veya °C [SI] olarak biseksiyon yönteminde (ilk tahmin çiy noktası sıcaklığındandır) yaş termometre sıcaklığının alt değeri
    gerçek              ::  Wstar
      !+ lb_H₂O lb_Air⁻¹ [IP] veya kg_H₂O kg_Air⁻¹ [SI] cinsinden Tstar sıcaklığında nem oranı
    gerçek              ::  BoundedHumRatio
      !+ Nem oranı MIN_HUM_RATIO olarak sınırlandırılmıştır
    tam sayı           ::  indeks
      yinelemede kullanılan !+ dizini

    eğer (HumRatio < 0.0) sonra
      hata Dur "Hata: nem oranı negatif olamaz"
    eğer son
    BoundedHumRatio = maksimum(HumRatio, MIN_HUM_RATIO)

    TDewPoint = GetTDewPointFromHumRatio(TDryBulb, BoundedHumRatio, Basınç)

    ! İlk tahminler
    TWetBulbSup = TDryBulb
    TWetBulbInf = TDewPoint
    TWetBulb = (TWetBulbInf + TWetBulbSup) / 2.0

    indeks = 1
    ! ikiye bölme döngüsü
    yaparken ((TWetBulbSup - TWetBulbInf) > PSYCHROLIB_TOLERANCE)

    ! Tstar sıcaklığındaki nem oranını hesaplayın
    Wstar = GetHumRatioFromTWetBulb(TDryBulb, TWetBulb, Basınç)

    ! Yeni sınırlar alın
    eğer (Wstar > BoundedHumRatio) sonra
      TWetBulbSup = TWetBulb
    Başka
      TWetBulbInf = TWetBulb
    eğer son

    ! Yaş termometre sıcaklığının yeni tahmini
    TWetBulb = (TWetBulbSup + TWetBulbInf) / 2.0

      eğer (indeks > MAX_ITER_COUNT) sonra
        hata Dur "GetTWetBulbFromHumRatio'da yakınsama sağlanamadı. Duruyor."
      eğer son

    indeks = indeks + 1
    bitirmek
    bitiş işlevi  GetTWetBulbFromHumRatio

  fonksiyon  GetHumRatioFromTWetBulb(TDryBulb, TWetBulb, Basınç) Sonuç(HumRatio)
    !+ Kuru termometre sıcaklığı, yaş termometre sıcaklığı ve basınç verilen dönüş nemi oranı.
    !+ Referanslar:
    !+ ASHRAE El Kitabı - Temel Bilgiler (2017) bölüm. 1 eş 33 ve 35

    gerçek, niyet(içinde)  ::  TDryBulb
      !+ °F [IP] veya °C [SI] cinsinden kuru termometre sıcaklığı
    gerçek, niyet(içinde)  ::  TWetBulb
      !+ °F [IP] veya °C [SI] cinsinden yaş termometre sıcaklığı
    gerçek, niyet(içinde)  ::  Basınç
      !+ Psi [IP] veya Pa [SI] cinsinden atmosferik basınç
    gerçek              ::  HumRatio
      !+ lb_H₂O lb_Air⁻¹ [IP] veya kg_H₂O kg_Air⁻¹ [SI] cinsinden nem oranı
    gerçek              ::  Wsstar
      !+ lb_H₂O lb_Air⁻¹ [IP] veya kg_H₂O kg_Air⁻¹ [SI] cinsinden Tstar sıcaklığında nem oranı

    eğer (TWetBulb > TDryBulb) sonra
      hata Dur "Hata: yaş termometre sıcaklığı kuru termometre sıcaklığının üzerinde"
    eğer son

    Wsstar = GetSatHumRatio(TWetBulb, Basınç)

    eğer (isIP()) sonra
            Eğer (TWetBulb > = FREEZING_POINT_WATER_IP) sonra
        HumRatio = ((1093.0 - 0.556 * TWetBulb) * Wsstar - 0.240 * (TDryBulb - TWetBulb))   &
                   / (1093.0 + 0.444 * TDryBulb - TWetBulb)
      Başka
        HumRatio = ((1220.0 - 0.04 * TWetBulb) * Wsstar - 0.240 * (TDryBulb - TWetBulb))    &
                   / (1220.0 + 0.444 * TDryBulb - 0.48 * TWetBulb)
      eğer son
        Başka
            Eğer (TWetBulb > = FREEZING_POINT_WATER_SI) sonra
        HumRatio = ((2501.0 - 2.326 * TWetBulb) * Wsstar - 1.006 * (TDryBulb - TWetBulb))   &
                   / (2501.0 + 1.86 * TDryBulb - 4.186 * TWetBulb)
      Başka
           HumRatio = ((2830.0 - 0.24 * TWetBulb) * Wsstar - 1.006 * (TDryBulb - TWetBulb)) &
                      / (2830.0 + 1.86 * TDryBulb - 2.1 * TWetBulb)
      eğer son
        eğer son

    ! Geçerlilik kontrolü.
    HumRatio = maksimum(HumRatio, MIN_HUM_RATIO)
  bitiş işlevi  GetHumRatioFromTWetBulb

  fonksiyon  GetHumRatioFromRelHum(TDryBulb, RelHum, Basınç) Sonuç(HumRatio)
    !+ Kuru termometre sıcaklığı, bağıl nem ve basınç verilen dönüş nem oranı.
    !+ Referans:
    !+ ASHRAE El Kitabı - Temel Bilgiler (2017) bölüm. 1

    gerçek, niyet(içinde)  ::  TDryBulb
      !+ °F [IP] veya °C [SI] cinsinden kuru termometre sıcaklığı
    gerçek, niyet(içinde)  ::  RelHum
      !+ [0, 1] aralığında bağıl nem
    gerçek, niyet(içinde)  ::  Basınç
      !+ Psi [IP] veya Pa [SI] cinsinden atmosferik basınç
    gerçek              ::  HumRatio
      !+ lb_H₂O lb_Air⁻¹ [IP] veya kg_H₂O kg_Air⁻¹ [SI] cinsinden nem oranı
    gerçek              ::  VapPres
      !+ Nemli havadaki su buharının Psi [IP] veya Pa [SI] cinsinden kısmi basıncı

    eğer (RelHum < 0.0 .veya. RelHum > 1.0) sonra
      hata Dur "Hata: bağıl nem [0,1] aralığının dışında"
    eğer son

    VapPres   = GetVapPresFromRelHum(TDryBulb, RelHum)
    HumRatio  = GetHumRatioFromVapPres(VapPres, Basınç)
  bitiş işlevi  GetHumRatioFromRelHum

  fonksiyon  GetRelHumFromHumRatio(TDryBulb, HumRatio, Basınç) Sonuç(RelHum)
  !+ Kuru termometre sıcaklığı, nem oranı ve basınç verilen bağıl nemi geri getirin.
  !+ Referans:
  !+ ASHRAE El Kitabı - Temel Bilgiler (2017) bölüm. 1

    gerçek, niyet(içinde)  ::  TDryBulb
      !+ °F [IP] veya °C [SI] cinsinden kuru termometre sıcaklığı
    gerçek, niyet(içinde)  ::  HumRatio
      !+ lb_H₂O lb_Air⁻¹ [IP] veya kg_H₂O kg_Air⁻¹ [SI] cinsinden nem oranı
    gerçek, niyet(içinde)  ::  Basınç
      !+ Psi [IP] veya Pa [SI] cinsinden atmosferik basınç
    gerçek              ::  RelHum
      !+ [0, 1] aralığında bağıl nem
    gerçek              ::  VapPres
      !+ Nemli havadaki su buharının Psi [IP] veya Pa [SI] cinsinden kısmi basıncı

    eğer (HumRatio < 0.0) sonra
      hata Dur "Hata: nem oranı negatif olamaz"
    eğer son

    VapPres = GetVapPresFromHumRatio(HumRatio, Basınç)
    RelHum  = GetRelHumFromVapPres(TDryBulb, VapPres)
  bitiş işlevi  GetRelHumFromHumRatio

  fonksiyon  GetHumRatioFromTDewPoint(TDewPoint, Basınç) Sonuç(HumRatio)
    !+ Çiy noktası sıcaklığı ve basıncına bağlı olarak dönüş nem oranı.
    !+ Referans:
    !+ ASHRAE El Kitabı - Temel Bilgiler (2017) bölüm. 1

    gerçek, niyet(içinde)  ::  TDewPoint
      !+ °F [IP] veya °C [SI] cinsinden çiğlenme noktası sıcaklığı
    gerçek, niyet(içinde)  ::  Basınç
      !+ Psi [IP] veya Pa [SI] cinsinden atmosferik basınç
    gerçek              ::  HumRatio
      !+ lb_H₂O lb_Air⁻¹ [IP] veya kg_H₂O kg_Air⁻¹ [SI] cinsinden nem oranı
    gerçek              ::  VapPres
      !+ Nemli havadaki su buharının Psi [IP] veya Pa [SI] cinsinden kısmi basıncı

    VapPres   = GetSatVapPres(TDewPoint)
    HumRatio  = GetHumRatioFromVapPres(VapPres, Basınç)
  bitiş işlevi  GetHumRatioFromTDewPoint

  fonksiyon  GetTDewPointFromHumRatio(TDryBulb, HumRatio, Basınç) Sonuç(TDewPoint)
    !+ Kuru termometre sıcaklığı, nem oranı ve basınç verildiğinde dönüş çiy noktası sıcaklığı.
    !+ Referans:
    !+ ASHRAE El Kitabı - Temel Bilgiler (2017) bölüm. 1

    gerçek, niyet(içinde)  ::  TDryBulb
      !+ °F [IP] veya °C [SI] cinsinden kuru termometre sıcaklığı
    gerçek, niyet(içinde)  ::  HumRatio
      !+ lb_H₂O lb_Air⁻¹ [IP] veya kg_H₂O kg_Air⁻¹ [SI] cinsinden nem oranı
    gerçek, niyet(içinde)  ::  Basınç
      !+ Psi [IP] veya Pa [SI] cinsinden atmosferik basınç
    gerçek              ::  TDewPoint
      !+ °F [IP] veya °C [SI] cinsinden çiğlenme noktası sıcaklığı
    gerçek              ::  VapPres
      !+ Nemli havadaki su buharının Psi [IP] veya Pa [SI] cinsinden kısmi basıncı

    eğer (HumRatio < 0.0) sonra
      hata Dur "Hata: nem oranı negatif olamaz"
    eğer son

    VapPres   = GetVapPresFromHumRatio(HumRatio, Basınç)
    TDewPoint = GetTDewPointFromVapPres(TDryBulb, VapPres)
  bitiş işlevi  GetTDewPointFromHumRatio


  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!
  ! Nem oranı ve buhar basıncı arasındaki dönüşümler
  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!

  fonksiyon  GetHumRatioFromVapPres(VapPres, Basınç) Sonuç(HumRatio)
    !+ Su buharı basıncı ve atmosferik basınç verildiğinde dönüş nem oranı.
    !+ Referans:
    !+ ASHRAE Temelleri (2005) bölüm. 6 eş. 22;
    !+ ASHRAE Temelleri (2009) bölüm. 1 eş. 22.

    gerçek, niyet(içinde)  ::  VapPres
      !+ Nemli havadaki su buharının Psi [IP] veya Pa [SI] cinsinden kısmi basıncı
    gerçek, niyet(içinde)  ::  Basınç
      !+ Psi [IP] veya Pa [SI] cinsinden atmosferik basınç
    gerçek              ::  HumRatio
      !+ lb_H₂O lb_Air⁻¹ [IP] veya kg_H₂O kg_Air⁻¹ [SI] cinsinden nem oranı

    eğer (VapPres < 0.0) sonra
      hata Dur "Hata: Nemli havadaki kısmi su buharı basıncı negatif olamaz"
    eğer son

    HumRatio = 0.621945 * VapPres / (Basınç-VapPres)

    ! Geçerlilik kontrolü.
    HumRatio = maksimum(HumRatio, MIN_HUM_RATIO)
  bitiş işlevi  GetHumRatioFromVapPres

  fonksiyon  GetVapPresFromHumRatio(HumRatio, Basınç) Sonuç(VapPres)
    !+ Nem oranı ve basıncı verilen dönüş buhar basıncı.
    !+ Referans:
    !+ ASHRAE El Kitabı - Temel Bilgiler (2017) bölüm. 1 eqn 20 pw için çözüldü

    gerçek, niyet(içinde)  ::  HumRatio
      !+ lb_H₂O lb_Air⁻¹ [IP] veya kg_H₂O kg_Air⁻¹ [SI] cinsinden nem oranı
    gerçek, niyet(içinde)  ::  Basınç
      !+ Psi [IP] veya Pa [SI] cinsinden atmosferik basınç
    gerçek              ::  VapPres
      !+ Nemli havadaki su buharının Psi [IP] veya Pa [SI] cinsinden kısmi basıncı
    gerçek              ::  BoundedHumRatio
      !+ Nem oranı MIN_HUM_RATIO olarak sınırlandırılmıştır

    eğer (HumRatio < 0.0) sonra
      hata Dur "Hata: nem oranı negatif"
    eğer son
    BoundedHumRatio = maksimum(HumRatio, MIN_HUM_RATIO)

    VapPres = Basınç * BoundedHumRatio / (0.621945 + BoundedHumRatio)
  bitiş işlevi  GetVapPresFromHumRatio


  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!
  ! Nem oranı ve özgül nem arasındaki dönüşümler
  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!

  fonksiyon  GetSpecificHumFromHumRatio(HumRatio) Sonuç(SpecificHum)
    !+ Nem oranından (karıştırma oranı olarak da bilinir) özgül nemi verir.
    !+ Referans:
    !+ ASHRAE El Kitabı - Temel Bilgiler (2017) bölüm. 1 eş 9b

    gerçek, niyet(içinde) :: HumRatio
      !+ lb_H₂O lb_Dry_Air⁻¹ [IP] veya kg_H₂O kg_Dry_Air⁻¹ [SI] cinsinden nem oranı
    gerçek             :: SpecificHum
      !+ lb_H₂O lb_Air⁻¹ [IP] veya kg_H₂O kg_Air⁻¹ [SI] cinsinden özgül nem
    gerçek              ::  BoundedHumRatio
      !+ Nem oranı MIN_HUM_RATIO olarak sınırlandırılmıştır

    eğer (HumRatio < 0.0) sonra
      hata Dur "Hata: nem oranı negatif olamaz"
    eğer son
    BoundedHumRatio = maksimum(HumRatio, MIN_HUM_RATIO)

    SpecificHum = BoundedHumRatio / (1.0 + BoundedHumRatio)
  bitiş işlevi  GetSpecificHumFromHumRatio

  fonksiyon  GetHumRatioFromSpecificHum(SpecificHum) Sonuç(HumRatio)
    !+ Belirli nemden nem oranını (diğer bir deyişle karışım oranı) döndürün.
    !+ Referans:
    !+ ASHRAE El Kitabı - Temel Bilgiler (2017) bölüm. 1 eqn 9b (nem oranı için çözüldü)

    gerçek, niyet(içinde)  :: SpecificHum
      !+ lb_H₂O lb_Air⁻¹ [IP] veya kg_H₂O kg_Air⁻¹ [SI] cinsinden özgül nem
    gerçek              :: HumRatio
      !+ lb_H₂O lb_Dry_Air⁻¹ [IP] veya kg_H₂O kg_Dry_Air⁻¹ [SI] cinsinden nem oranı

    eğer (SpecificHum < 0.0 .veya. SpecificHum > = 1.0) sonra
      hata Dur "Hata: özgül nem [0, 1[" aralığının dışında
    eğer son

    HumRatio = SpecificHum / (1.0 - SpecificHum)

    ! Geçerlilik kontrolü.
    HumRatio = maksimum(HumRatio, MIN_HUM_RATIO)
  bitiş işlevi  GetHumRatioFromSpecificHum


  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!
  ! Kuru Hava Hesapları
  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!

  fonksiyon  GetDryAirEnthalpy(TDryBulb) Sonuç(DryAirEntalpi)
    !+ Verilen kuru termometre sıcaklığındaki dönüş kuru hava entalpisi.
    !+ Referans:
    !+ ASHRAE El Kitabı - Temel Bilgiler (2017) bölüm. 1 eş 28

    gerçek, niyet(içinde)  ::  TDryBulb
      !+ °F [IP] veya °C [SI] cinsinden kuru termometre sıcaklığı
    gerçek              ::  DryAirEntalpi
      !+ Btu lb⁻¹ [IP] veya J kg⁻¹ [SI] cinsinden kuru hava entalpisi

    eğer (isIP()) sonra
      DryAirEntalpi = 0.240 * TDryBulb
    Başka
      DryAirEntalpi = 1006 * TDryBulb
    eğer son
    bitiş işlevi  GetDryAirEnthalpy

  fonksiyon  GetDryAirDensity(TDryBulb, Basınç) Sonuç(DryAirDensity)
    !+ Kuru termometre sıcaklığı ve basıncı verilen kuru hava yoğunluğunu geri getirin.
    !+ Referans:
    !+ ASHRAE El Kitabı - Temel Bilgiler (2017) bölüm. 1
    !+ Notlar:
    !+ Kuru hava için mükemmel gaz ilişkisi için Eqn 14.
    !+ Üniversal gaz sabiti için Eqn 1.
    !+ IP'deki 144 faktörü, Psi = lb in⁻²'nin lb ft⁻²'ye dönüştürülmesi içindir.

    gerçek, niyet(içinde)  ::  TDryBulb
      !+ °F [IP] veya °C [SI] cinsinden kuru termometre sıcaklığı
    gerçek, niyet(içinde)  ::  Basınç
      !+ Psi [IP] veya Pa [SI] cinsinden atmosferik basınç
    gerçek              ::  DryAirDensity
      !+ lb ft⁻³ [IP] veya kg m⁻³ [SI] cinsinden kuru hava yoğunluğu

    eğer (isIP()) sonra
      DryAirDensity = (144 * Basınç) / R_DA_IP / GetTRankineFromTFahrenheit(TDryBulb)
    Başka
      DryAirDensity = Basınç / R_DA_SI / GetTKelvinFromTCelsius(TDryBulb)
    eğer son
    bitiş işlevi  GetDryAirDensity

  fonksiyon  GetDryAirVolume(TDryBulb, Basınç) Sonuç(DryAirVolume)
    !+ Kuru termometre sıcaklığı ve basıncına göre dönüş kuru hava hacmi.
    !+ Referans:
    !+ ASHRAE El Kitabı - Temel Bilgiler (2017) bölüm. 1
    !+ Notlar:
    !+ Kuru hava için mükemmel gaz ilişkisi için Eqn 14.
    !+ Üniversal gaz sabiti için Eqn 1.
    !+ IP'deki 144 faktörü, Psi = lb in⁻²'nin lb ft⁻²'ye dönüştürülmesi içindir.

    gerçek, niyet(içinde)  ::  TDryBulb
      !+ °F [IP] veya °C [SI] cinsinden kuru termometre sıcaklığı
    gerçek, niyet(içinde)  ::  Basınç
      !+ Psi [IP] veya Pa [SI] cinsinden atmosferik basınç
    gerçek              ::  DryAirVolume
      !+ ft³ lb⁻¹ [IP] cinsinden veya m³ kg⁻¹ [SI] cinsinden kuru hava hacmi

    eğer (isIP()) sonra
      DryAirVolume = GetTRankineFromTFahrenheit(TDryBulb) * R_DA_IP / (144 * Basınç)
    Başka
      DryAirVolume = GetTKelvinFromTCelsius(TDryBulb) * R_DA_SI / Basınç
    eğer son
    bitiş işlevi  GetDryAirVolume

  fonksiyon  GetTDryBulbFromEnthalpyAndHumRatio(MoistAirEnthalpy, HumRatio) Sonuç(TDryBulb)
    !+ Entalpi ve nem oranından dönüş kuru termometre sıcaklığı.
    !+ Referans:
    !+ ASHRAE El Kitabı - Temel Bilgiler (2017) bölüm. 1 eş 30
    !+ Notlar:
    !+ Sıcaklık için yeniden düzenlenmiş "GetMoistAirEnthalpy" işlevine dayalıdır.

    gerçek, niyet(içinde)  ::  MoistAirEnthalpy
      !+ Btu lb⁻¹ [IP] veya J kg⁻¹ cinsinden nemli hava entalpisi
    gerçek, niyet(içinde)  ::  HumRatio
      !+ lb_H₂O lb_Air⁻¹ [IP] veya kg_H₂O kg_Air⁻¹ [SI] cinsinden nem oranı
    gerçek              ::  TDryBulb
      !+ °F [IP] veya °C [SI] cinsinden kuru termometre sıcaklığı
    gerçek              ::  BoundedHumRatio
      !+ Nem oranı MIN_HUM_RATIO olarak sınırlandırılmıştır

    eğer (HumRatio < 0.0) sonra
      hata Dur "Hata: nem oranı negatif"
    eğer son
    BoundedHumRatio = maksimum(HumRatio, MIN_HUM_RATIO)

    eğer (isIP()) sonra
      TDryBulb  = (MoistAirEnthalpy - 1061.0 * BoundedHumRatio) / (0.240 + 0.444 * BoundedHumRatio)
    Başka
      TDryBulb  = (MoistAirEnthalpy / 1000.0 - 2501.0 * BoundedHumRatio) / (1.006 + 1.86 * BoundedHumRatio)
    eğer son
    bitiş işlevi  GetTDryBulbFromEnthalpyAndHumRatio

  fonksiyon  GetHumRatioFromEnthalpyAndTDryBulb(MoistAirEnthalpy, TDryBulb) Sonuç(HumRatio)
    !+ Entalpi ve kuru termometre sıcaklığından dönüş nemi oranı.
    !+ Referans:
    !+ ASHRAE El Kitabı - Temel Bilgiler (2017) bölüm. 1 eş 30
    !+ Notlar:
    !+ `GetMoistAirEnthalpy` işlevine göre, nem oranı için yeniden düzenlenmiştir.

    gerçek, niyet(içinde)  ::  MoistAirEnthalpy
      !+ Btu lb⁻¹ [IP] veya J kg⁻¹ cinsinden nemli hava entalpisi
    gerçek, niyet(içinde)  ::  TDryBulb
      !+ °F [IP] veya °C [SI] cinsinden kuru termometre sıcaklığı
    gerçek              ::  HumRatio
      !+ lb_H₂O lb_Air⁻¹ [IP] veya kg_H₂O kg_Air⁻¹ [SI] cinsinden nem oranı

    eğer (isIP()) sonra
      HumRatio  = (MoistAirEnthalpy - 0.240 * TDryBulb) / (1061.0 + 0.444 * TDryBulb)
    Başka
      HumRatio  = (MoistAirEnthalpy / 1000.0 - 1.006 * TDryBulb) / (2501.0 + 1.86 * TDryBulb)
    eğer son

    ! Geçerlilik kontrolü.
    HumRatio = maksimum(HumRatio, MIN_HUM_RATIO)
  bitiş işlevi  GetHumRatioFromEnthalpyAndTDryBulb


  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!
  ! Doymuş Hava Hesapları
  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!

  fonksiyon  GetSatVapPres(TDryBulb) Sonuç(SatVapPres)
    !+ Kuru termometre sıcaklığına göre dönüş doymuş buhar basıncı.
    !+ Referans:
    !+ ASHRAE El Kitabı - Temel Bilgiler (2017) bölüm. 1 eş 5
    !+ Önemli not: ASHRAE formülleri donma noktasının üstünde ve altında tanımlanmıştır ancak
    !+ donma noktasında bir süreksizlik. Bu, ASHRAE açısından küçük bir yanlışlıktır: formüller
    !+, suyun üçlü noktasının (donma noktasının değil) üstünde ve altında tanımlanmalıdır, bu durumda 
    !+ süreksizlik ortadan kalkar. Suyun üçlü noktasını kullanmak önemlidir, aksi takdirde işlev görür
    !+ Mevcut işlevi tersine çeviren GetTDewPointFromVapPres, etrafında düzgün bir şekilde yakınsamıyor
    !+ donma noktası.

    gerçek, niyet(içinde)  ::  TDryBulb
      !+ °F [IP] veya °C [SI] cinsinden kuru termometre sıcaklığı
    gerçek              ::  SatVapPres
      !+ Psi [IP] veya Pa [SI] cinsinden doymuş havanın buhar basıncı
    gerçek              ::  LnPws
      !+ Doymuş havanın Buhar Basıncı Kaydı (boyutsuz)
    gerçek              ::  T
      !+ R [IP] veya K [SI] cinsinden kuru termometre sıcaklığı

    eğer (isIP()) sonra
            Eğer (TDryBulb < -148.0 .veya. TDryBulb > 392.0) sonra
        hata Dur "Hata: kuru termometre sıcaklığı [-148, 392]°F aralığında olmalıdır"
      eğer son

      T = GetTRankineFromTFahrenheit(TDryBulb)

      eğer (TDryBulb <= TRIPLE_POINT_WATER_IP) sonra
        LnPws = (-1.0214165E+04 / T - 4.8932428 - 5.3765794E-03 * T + 1.9202377E-07 * T**2    &
                + 3.5575832E-10 * T**3 - 9.0344688E-14 * T**4 + 4.1635019 * günlük(T))
      Başka
        LnPws = -1.0440397E+04 / T - 1.1294650E+01 - 2.7022355E-02* T + 1.2890360E-05 * T**2  &
                - 2.4780681E-09 * T**3 + 6.5459673 * günlük(T)
      eğer son

            Başka
                Eğer (TDryBulb < -100.0 .veya. TDryBulb > 200.0) sonra
          hata Dur "Hata: kuru termometre sıcaklığı [-100, 200]°C aralığında olmalıdır"
        eğer son

        T = GetTKelvinFromTCelsius(TDryBulb)

        eğer (TDryBulb <= TRIPLE_POINT_WATER_SI) sonra
          LnPws = -5.6745359E+03 / T + 6.3925247 - 9.677843E-03 * T + 6.2215701E-07 * T**2    &
                  + 2.0747825E-09 * T**3 - 9.484024E-13 * T**4 + 4.1635019 * günlük(T)
        Başka
          LnPws = -5.8002206E+03 / T + 1.3914993 - 4.8640239E-02 * T + 4.1764768E-05 * T**2   &
                  - 1.4452093E-08 * T**3 + 6.5459673 * günlük(T)
        eğer son
            eğer son

    SatVapPres = tecrübe(LnPws)
  bitiş işlevi  GetSatVapPres

  fonksiyon  GetSatHumRatio(TDryBulb, Basınç) Sonuç(SatHumRatio)
    !+ Kuru termometre sıcaklığı ve basıncı verilen doymuş havanın dönüş nem oranı.
    !+ Referans:
    !+ ASHRAE El Kitabı - Temel Bilgiler (2017) bölüm. 1 eqn 36, W için çözüldü

    gerçek, niyet(içinde)  ::  TDryBulb
      !+ °F [IP] veya °C [SI] cinsinden kuru termometre sıcaklığı
    gerçek, niyet(içinde)  ::  Basınç
      !+ Psi [IP] veya Pa [SI] cinsinden atmosferik basınç
    gerçek              ::  SatHumRatio
      !+ lb_H₂O lb_Air⁻¹ [IP] veya kg_H₂O kg_Air⁻¹ [SI] cinsinden doymuş havanın nem oranı
    gerçek              ::  SatVaporPres
      !+ Doymuş havanın buhar basıncı in lb_H₂O lb_Air⁻¹ [IP] veya kg_H₂O kg_Air⁻¹ [SI]

    SatVaporPres  = GetSatVapPres(TDryBulb)
    SatHumRatio   = 0.621945 * SatVaporPres / (Basınç-SatVaporPres)

    ! Geçerlilik kontrolü.
    SatHumRatio = maksimum(SatHumRatio, MIN_HUM_RATIO)
  bitiş işlevi  GetSatHumRatio

  fonksiyon  GetSatAirEnthalpy(TDryBulb, Basınç) Sonuç(SatAirEnthalpy)
    !+ Kuru termometre sıcaklığı ve basıncı verilen doymuş hava entalpisini geri getirin.
    !+ Referans:
    !+ ASHRAE El Kitabı - Temel Bilgiler (2017) bölüm. 1

    gerçek, niyet(içinde)  ::  TDryBulb
      !+ °F [IP] veya °C [SI] cinsinden kuru termometre sıcaklığı
    gerçek, niyet(içinde)  ::  Basınç
      !+ Psi [IP] veya Pa [SI] cinsinden atmosferik basınç
    gerçek              ::  SatAirEnthalpy
      !+ Btu lb⁻¹ [IP] veya J kg⁻¹ [SI] cinsinden doymuş hava entalpisi

    SatAirEnthalpy = GetMoistAirEnthalpy(TDryBulb, GetSatHumRatio(TDryBulb, Basınç))
  bitiş işlevi  GetSatAirEnthalpy


  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!
  ! Nemli Hava Hesapları
  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!

  fonksiyon  GetVaporPressureDeficit(TDryBulb, HumRatio, Basınç) Sonuç(Buhar Basıncı Eksikliği)
    !+ Kuru termometre sıcaklığı, nem oranı ve basınç verildiğinde Geri Dönüş Buhar basıncı açığı.
    !+ Referans:
    !+ Oke (1987) eqn 2.13a

    gerçek, niyet(içinde)  ::  TDryBulb
      !+ °F [IP] veya °C [SI] cinsinden kuru termometre sıcaklığı
    gerçek, niyet(içinde)  ::  HumRatio
      !+ lb_H₂O lb_Air⁻¹ [IP] veya kg_H₂O kg_Air⁻¹ [SI] cinsinden nem oranı
    gerçek, niyet(içinde)  ::  Basınç
      !+ Psi [IP] veya Pa [SI] cinsinden atmosferik basınç
    gerçek              ::  Buhar Basıncı Eksikliği
      !+ Psi [IP] veya Pa [SI] cinsinden buhar basıncı açığı
    gerçek              ::  RelHum
      !+ [0, 1] aralığında bağıl nem

    eğer (HumRatio < 0.0) sonra
      hata Dur "Hata: nem oranı negatif"
    eğer son

    RelHum = GetRelHumFromHumRatio(TDryBulb, HumRatio, Basınç)
    Buhar Basıncı Eksikliği = GetSatVapPres(TDryBulb) * (1.0 - RelHum)
  bitiş işlevi  GetVaporPressureDeficit

  fonksiyon  GetDegreeOfSaturation(TDryBulb, HumRatio, Basınç) Sonuç(Doygunluk Derecesi)
    !+ Doyma derecesini döndürür (yani havanın nem oranı / doygunluktaki havanın nem oranı)
    !+ aynı sıcaklık ve basınçta) kuru termometre sıcaklığı, nem oranı ve atmosfer basıncı verildiğinde.
    !+ Referans:
    !+ ASHRAE El Kitabı - Temel Bilgiler (2009) bölüm. 1 eş 12
    !+ Notlar:
    !+ Bu tanım 2017 El Kitabında yoktur. Bunun yerine 2009 sürümünü kullanma.

    gerçek, niyet(içinde)  ::  TDryBulb
      !+ °F [IP] veya °C [SI] cinsinden kuru termometre sıcaklığı
    gerçek, niyet(içinde)  ::  HumRatio
      !+ lb_H₂O lb_Air⁻¹ [IP] veya kg_H₂O kg_Air⁻¹ [SI] cinsinden nem oranı
    gerçek, niyet(içinde)  ::  Basınç
      !+ Psi [IP] veya Pa [SI] cinsinden atmosferik basınç
    gerçek              ::  Doygunluk Derecesi
      !+ İsteğe bağlı birimde doygunluk derecesi
    gerçek              ::  BoundedHumRatio
      !+ Nem oranı MIN_HUM_RATIO olarak sınırlandırılmıştır

    eğer (HumRatio < 0.0) sonra
      hata Dur "Hata: nem oranı negatif"
    eğer son
    BoundedHumRatio = maksimum(HumRatio, MIN_HUM_RATIO)

    Doygunluk Derecesi = BoundedHumRatio / GetSatHumRatio(TDryBulb, Basınç)
  bitiş işlevi  GetDegreeOfSaturation

  fonksiyon  GetMoistAirEnthalpy(TDryBulb, HumRatio) Sonuç(MoistAirEnthalpy)
    !+ Kuru termometre sıcaklığı ve nem oranı verilen nemli hava entalpisini geri getirin.
    !+ Referans:
    !+ ASHRAE El Kitabı - Temel Bilgiler (2017) bölüm. 1 eş 30

    gerçek, niyet(içinde)  ::  TDryBulb
      !+ °F [IP] veya °C [SI] cinsinden kuru termometre sıcaklığı
    gerçek, niyet(içinde)  ::  HumRatio
      !+ lb_H₂O lb_Air⁻¹ [IP] veya kg_H₂O kg_Air⁻¹ [SI] cinsinden nem oranı
    gerçek              ::  MoistAirEnthalpy
      !+ Btu lb⁻¹ [IP] veya J kg⁻¹ cinsinden nemli hava entalpisi
    gerçek              ::  BoundedHumRatio
      !+ Nem oranı MIN_HUM_RATIO olarak sınırlandırılmıştır

    eğer (HumRatio < 0.0) sonra
      hata Dur "Hata: nem oranı negatif"
    eğer son
    BoundedHumRatio = maksimum(HumRatio, MIN_HUM_RATIO)

    eğer (isIP()) sonra
        MoistAirEnthalpy = 0.240 * TDryBulb + BoundedHumRatio * (1061.0 + 0.444 * TDryBulb)
    Başka
        MoistAirEnthalpy = (1.006 * TDryBulb + BoundedHumRatio * (2501.0 + 1.86 * TDryBulb)) * 1000.0
    eğer son
    bitiş işlevi  GetMoistAirEnthalpy

  fonksiyon  GetMoistAirVolume(TDryBulb, HumRatio, Basınç) Sonuç(MoistAirVolume)
    !+ Kuru termometre sıcaklığı, nem oranı ve basınç verilen nemli havanın özgül hacmini geri getirin.
    !+ Referans:
    !+ ASHRAE El Kitabı - Temel Bilgiler (2017) bölüm. 1 eş 26
    !+ Notlar:
    !+ IP birimlerinde, R_DA_IP / 144, 26. denklemde görünen katsayı olan 0.370486'ya eşittir.
    !+ 144 faktörü, Psi = lb in⁻²'nin lb ft⁻²'ye dönüştürülmesi içindir.

    gerçek, niyet(içinde)  ::  TDryBulb
      !+ °F [IP] veya °C [SI] cinsinden kuru termometre sıcaklığı
    gerçek, niyet(içinde)  ::  HumRatio
      !+ lb_H₂O lb_Air⁻¹ [IP] veya kg_H₂O kg_Air⁻¹ [SI] cinsinden nem oranı
    gerçek, niyet(içinde)  ::  Basınç
      !+ Psi [IP] veya Pa [SI] cinsinden atmosferik basınç
    gerçek              ::  MoistAirVolume
      !+ Nemli havanın özgül hacmi ft³ lb⁻¹ kuru hava [IP] veya m³ kg⁻¹ kuru hava [SI]
    gerçek              ::  BoundedHumRatio
      !+ Nem oranı MIN_HUM_RATIO olarak sınırlandırılmıştır

    eğer (HumRatio < 0.0) sonra
      hata Dur "Hata: nem oranı negatif"
    eğer son
    BoundedHumRatio = maksimum(HumRatio, MIN_HUM_RATIO)

    eğer (isIP()) sonra
        MoistAirVolume = R_DA_IP * GetTRankineFromTFahrenheit(TDryBulb) * (1.0 + 1.607858 * BoundedHumRatio) / (144.0 * Basınç)
    Başka
        MoistAirVolume = R_DA_SI * GetTKelvinFromTCelsius(TDryBulb) * (1.0 + 1.607858 * BoundedHumRatio) / Basınç
    eğer son
    bitiş işlevi  GetMoistAirVolume

  fonksiyon  GetTDryBulbFromMoistAirVolumeAndHumRatio(MoistAirVolume, HumRatio, Basınç) Sonuç(TDryBulb)
    !+ Nemli havaya özgül hacim, nem oranı ve basınç verildiğinde kuru termometre sıcaklığını geri getirin.
    !+ Referans:
    !+ ASHRAE El Kitabı - Temel Bilgiler (2017) bölüm. 1 eş 26
    !+ Notlar:
    !+ IP birimlerinde, R_DA_IP / 144, 26. denklemde görünen katsayı olan 0.370486'ya eşittir.
    !+ 144 faktörü, Psi = lb in⁻²'nin lb ft⁻²'ye dönüştürülmesi içindir.
    !+ Kuru termometre sıcaklığı için yeniden düzenlenmiş "GetMoistAirVolume" işlevine dayalıdır.

    gerçek, niyet(içinde)  ::  MoistAirVolume
      !+ Nemli havanın özgül hacmi ft³ lb⁻¹ kuru hava [IP] veya m³ kg⁻¹ kuru hava [SI]
    gerçek, niyet(içinde)  ::  HumRatio
      !+ lb_H₂O lb_Air⁻¹ [IP] veya kg_H₂O kg_Air⁻¹ [SI] cinsinden nem oranı
    gerçek, niyet(içinde)  ::  Basınç
      !+ Psi [IP] veya Pa [SI] cinsinden atmosferik basınç
    gerçek              ::  TDryBulb
      !+ °F [IP] veya °C [SI] cinsinden kuru termometre sıcaklığı
    gerçek              ::  BoundedHumRatio
      !+ Nem oranı MIN_HUM_RATIO olarak sınırlandırılmıştır

    eğer (HumRatio < 0.0) sonra
      hata Dur "Hata: nem oranı negatif"
    eğer son
    BoundedHumRatio = maksimum(HumRatio, MIN_HUM_RATIO)

    eğer (isIP()) sonra
      TDryBulb = GetTFahrenheitFromTRankine(MoistAirVolume * (144 * Basınç) &
                                / (R_DA_IP * (1 + 1.607858 * BoundedHumRatio)))
    Başka
      TDryBulb = GetTCelsiusFromTKelvin(MoistAirVolume * Basınç &
                                / (R_DA_SI * (1 + 1.607858 * BoundedHumRatio)))
    eğer son
    bitiş işlevi  GetTDryBulbFromMoistAirVolumeAndHumRatio

  fonksiyon  GetMoistAirDensity(TDryBulb, HumRatio, Basınç) Sonuç(MoistAirDensity)
    !+ Nem oranı, kuru termometre sıcaklığı ve basıncı verilen nemli hava yoğunluğunu geri getirin.
    !+ Referans:
    !+ ASHRAE El Kitabı - Temel Bilgiler (2017) bölüm. 1 eş 11

    gerçek, niyet(içinde)  ::  TDryBulb
      !+ °F [IP] veya °C [SI] cinsinden kuru termometre sıcaklığı
    gerçek, niyet(içinde)  ::  HumRatio
      !+ lb_H₂O lb_Air⁻¹ [IP] veya kg_H₂O kg_Air⁻¹ [SI] cinsinden nem oranı
    gerçek, niyet(içinde)  ::  Basınç
      !+ Psi [IP] veya Pa [SI] cinsinden atmosferik basınç
    gerçek              ::  MoistAirDensity
      !+ lb ft⁻³ [IP] veya kg m⁻³ [SI] cinsinden nemli hava yoğunluğu
    gerçek              ::  BoundedHumRatio
      !+ Nem oranı MIN_HUM_RATIO olarak sınırlandırılmıştır

    eğer (HumRatio < 0.0) sonra
      hata Dur "Hata: nem oranı negatif"
    eğer son
    BoundedHumRatio = maksimum(HumRatio, MIN_HUM_RATIO)

    MoistAirDensity = (1.0 + BoundedHumRatio) / GetMoistAirVolume(TDryBulb, BoundedHumRatio, Basınç)
  bitiş işlevi  GetMoistAirDensity


  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!
  ! standart atmosfer
  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!

  fonksiyon  GetStandardAtmPressure(Rakım) Sonuç(StandardAtmPressure)
    !+ Yükseklik (irtifa) veriliyken standart atmosfer barometrik basıncını geri getirin.
    !+ Referans:
    !+ ASHRAE El Kitabı - Temel Bilgiler (2017) bölüm. 1 eş 3

    gerçek, niyet(içinde)  ::  Rakım
      !+ ft [IP] veya m [SI] cinsinden yükseklik
    gerçek              ::  StandardAtmPressure
      !+ Psi [IP] veya Pa [SI] cinsinden standart atmosfer barometrik basıncı

    eğer (isIP()) sonra
        StandardAtmPressure = 14.696 * (1.0 - 6.8754e-06 * Rakım)**5.2559
    Başka
        StandardAtmPressure = 101325 * (1 - 2.25577e-05 * Rakım)**5.2559
    eğer son
    bitiş işlevi  GetStandardAtmPressure

  fonksiyon  GetStandardAtmTemperature(Rakım) Sonuç(StandartAtm Sıcaklığı)
    !+ Verilen yükseklik (irtifa) standart atmosfer sıcaklığını döndürür.
    !+ Referans:
    !+ ASHRAE El Kitabı - Temel Bilgiler (2017) bölüm. 1 eş 4

    gerçek, niyet(içinde)  ::  Rakım
      !+ ft [IP] veya m [SI] cinsinden yükseklik
    gerçek              ::  StandartAtm Sıcaklığı
      !+ °F [IP] veya °C [SI] cinsinden standart atmosfer kuru termometre sıcaklığı

    eğer (isIP()) sonra
        StandartAtm Sıcaklığı = 59.0 - 0.00356620 * Rakım
    Başka
        StandartAtm Sıcaklığı = 15.0 - 0.0065 * Rakım
    eğer son
    bitiş işlevi  GetStandardAtmTemperature

  fonksiyon  GetSeaLevelPressure(StnBasıncı, Rakım, TDryBulb) Sonuç(Deniz Seviyesi Basıncı)
    !+ Kuru termometre sıcaklığı, deniz seviyesinden yükseklik ve basınç verilen dönüş deniz seviyesi basıncı.
    !+ Referans:
    !+ Hess SL, Teorik meteorolojiye giriş, Holt Rinehart ve Winston, NY 1959,
    !+ bölüm 6.5; Stull RB, bilim adamları ve mühendisler için Meteoroloji, 2. baskı,
    !+ Brooks/Cole 2000, ch. 1.
    !+ Notlar:
    !+ ABD için standart prosedür, TdryBulb için ortalama
    !+ mevcut istasyon sıcaklığı ve 12 saat önceki istasyon sıcaklığı.

    gerçek, niyet(içinde)  ::  StnBasıncı
      !+ Psi [IP] veya Pa [SI] cinsinden gözlenen istasyon basıncı
    gerçek, niyet(içinde)  ::  Rakım
      !+ ft [IP] veya m [SI] cinsinden yükseklik
    gerçek, niyet(içinde)  ::  TDryBulb
      !+ °F [IP] veya °C [SI] cinsinden kuru termometre sıcaklığı
    gerçek              ::  Deniz Seviyesi Basıncı
      !+ Psi [IP] veya Pa [SI] cinsinden deniz seviyesi barometrik basıncı
    gerçek              ::  TColumn
      !+ R [IP] veya K [SI] cinsinden hava sütunundaki ortalama sıcaklık
    gerçek              ::  H
      !+ ölçek yüksekliği (boyutsuz)

    eğer (isIP()) sonra
      ! Bir atlama oranı varsayarak, hava sütunundaki ortalama sıcaklığı hesaplayın
      ! 3,6 °F/1000ft
      TColumn = TDryBulb + 0.0036 * Rakım / 2.0

      ! Ölçek yüksekliğini belirleyin
      H = 53.351 * GetTRankineFromTFahrenheit(TColumn)
    Başka
      ! Bir atlama oranı varsayarak, hava sütunundaki ortalama sıcaklığı hesaplayın
      ! 6,5 °C/km
      TColumn = TDryBulb + 0.0065 * Rakım / 2.0

      ! Ölçek yüksekliğini belirleyin
      H = 287.055 * GetTKelvinFromTCelsius(TColumn) / 9.807
    eğer son

    ! Deniz seviyesi basıncını hesaplayın
    Deniz Seviyesi Basıncı = StnBasıncı * tecrübe(Rakım / H)
  bitiş işlevi  GetSeaLevelPressure

  fonksiyon  GetStationPressure(Deniz Seviyesi Basıncı, Rakım, TDryBulb) Sonuç(İstasyon Basıncı)
    !+ Deniz seviyesi basıncından dönüş istasyonu basıncı.
    !+ Referans:
    !+ 'GetSeaLevelPressure' konusuna bakın
    !+ Notlar:
    !+ Bu işlev, 'GetSeaLevelPressure' işlevinin tam tersidir.

    gerçek, niyet(içinde)  ::  Deniz Seviyesi Basıncı
      !+ Psi [IP] veya Pa [SI] cinsinden deniz seviyesi barometrik basıncı
    gerçek, niyet(içinde)  ::  Rakım
      !+ ft [IP] veya m [SI] cinsinden yükseklik
    gerçek, niyet(içinde)  ::  TDryBulb
      !+ °F [IP] veya °C [SI] cinsinden kuru termometre sıcaklığı
    gerçek              ::  İstasyon Basıncı
      !+ Psi [IP] veya Pa [SI] cinsinden istasyon basıncı

    İstasyon Basıncı = Deniz Seviyesi Basıncı / GetSeaLevelPressure(1.0, Rakım, TDryBulb)
  bitiş işlevi  GetStationPressure


  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!
  ! Tüm psikrometrik değerleri ayarlama işlevleri
  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!

  alt program  CalcPsychrometricsFromTWetBulb(TDryBulb,           &
                                            TWetBulb,           &
                                            Basınç,           &
                                            HumRatio,           &
                                            TDewPoint,          &
                                            RelHum,             &
                                            VapPres,            &
                                            MoistAirEnthalpy,   &
                                            MoistAirVolume,     &
                                            Doygunluk Derecesi)

    !+ Nem oranını, çiy noktası sıcaklığını, bağıl nemi hesaplamak için yardımcı fonksiyon,
    !+ buhar basıncı, nemli hava entalpisi, nemli hava hacmi ve verilen havanın doyma derecesi
    !+ kuru termometre sıcaklığı, yaş termometre sıcaklığı ve basınç.

    gerçek, niyet(içinde)    ::  TDryBulb
      !+ °F [IP] veya °C [SI] cinsinden kuru termometre sıcaklığı
    gerçek, niyet(içinde)    ::  TWetBulb
      !+ °F [IP] veya °C [SI] cinsinden yaş termometre sıcaklığı
    gerçek, niyet(içinde)    ::  Basınç
      !+ Psi [IP] veya Pa [SI] cinsinden atmosferik basınç
    gerçek, niyet(dışarı)   ::  HumRatio
      !+ lb_H₂O lb_Air⁻¹ [IP] veya kg_H₂O kg_Air⁻¹ [SI] cinsinden nem oranı
    gerçek, niyet(dışarı)   ::  TDewPoint
      !+ °F [IP] veya °C [SI] cinsinden çiğlenme noktası sıcaklığı
    gerçek, niyet(dışarı)   ::  RelHum
      !+ [0, 1] aralığında bağıl nem
    gerçek, niyet(dışarı)   ::  VapPres
      !+ Nemli havadaki su buharının Psi [IP] veya Pa [SI] cinsinden kısmi basıncı
    gerçek, niyet(dışarı)   ::  MoistAirEnthalpy
      !+ Btu lb⁻¹ [IP] veya J kg⁻¹ [SI] cinsinden nemli hava entalpisi
    gerçek, niyet(dışarı)   ::  MoistAirVolume
      !+ Nemli havanın özgül hacmi ft³ lb⁻¹ [IP] veya m³ kg⁻¹ [SI] cinsinden
    gerçek, niyet(dışarı)   ::  Doygunluk Derecesi
      !+ Doygunluk derecesi [birimsiz]

    HumRatio            = GetHumRatioFromTWetBulb(TDryBulb, TWetBulb, Basınç)
    TDewPoint           = GetTDewPointFromHumRatio(TDryBulb, HumRatio, Basınç)
    RelHum              = GetRelHumFromHumRatio(TDryBulb, HumRatio, Basınç)
    VapPres             = GetVapPresFromHumRatio(HumRatio, Basınç)
    MoistAirEnthalpy    = GetMoistAirEnthalpy(TDryBulb, HumRatio)
    MoistAirVolume      = GetMoistAirVolume(TDryBulb, HumRatio, Basınç)
    Doygunluk Derecesi  = GetDegreeOfSaturation(TDryBulb, HumRatio, Basınç)
  bitiş alt programı  CalcPsychrometricsFromTWetBulb

  alt program  CalcPsychrometricsFromTDewPoint(TDryBulb,           &
                                             TDewPoint,          &
                                             Basınç,           &
                                             HumRatio,           &
                                             TWetBulb,           &
                                             RelHum,             &
                                             VapPres,            &
                                             MoistAirEnthalpy,   &
                                             MoistAirVolume,     &
                                             Doygunluk Derecesi)

    !+ Nem oranını, yaş termometre sıcaklığını, bağıl nemi,
    !+ buhar basıncı, nemli hava entalpisi, nemli hava hacmi ve verilen havanın doyma derecesi
    !+ kuru termometre sıcaklığı, çiy noktası sıcaklığı ve basınç.

    gerçek, niyet(içinde)    ::  TDryBulb
      !+ °F [IP] veya °C [SI] cinsinden kuru termometre sıcaklığı
    gerçek, niyet(içinde)    ::  TDewPoint
      !+ °F [IP] veya °C [SI] cinsinden çiğlenme noktası sıcaklığı
    gerçek, niyet(içinde)    ::  Basınç
      !+ Psi [IP] veya Pa [SI] cinsinden atmosferik basınç
    gerçek, niyet(dışarı)   ::  HumRatio
      !+ lb_H₂O lb_Air⁻¹ [IP] veya kg_H₂O kg_Air⁻¹ [SI] cinsinden nem oranı
    gerçek, niyet(dışarı)   ::  TWetBulb
      !+ °F [IP] veya °C [SI] cinsinden yaş termometre sıcaklığı
    gerçek, niyet(dışarı)   ::  RelHum
      !+ [0, 1] aralığında bağıl nem
    gerçek, niyet(dışarı)   ::  VapPres
      !+ Nemli havadaki su buharının Psi [IP] veya Pa [SI] cinsinden kısmi basıncı
    gerçek, niyet(dışarı)   ::  MoistAirEnthalpy
      !+ Btu lb⁻¹ [IP] veya J kg⁻¹ [SI] cinsinden nemli hava entalpisi
    gerçek, niyet(dışarı)   ::  MoistAirVolume
      !+ Nemli havanın özgül hacmi ft³ lb⁻¹ [IP] veya m³ kg⁻¹ [SI] cinsinden
    gerçek, niyet(dışarı)   ::  Doygunluk Derecesi
      !+ Doygunluk derecesi [birimsiz]

    HumRatio            = GetHumRatioFromTDewPoint(TDewPoint, Basınç)
    TWetBulb            = GetTWetBulbFromHumRatio(TDryBulb, HumRatio, Basınç)
    RelHum              = GetRelHumFromHumRatio(TDryBulb, HumRatio, Basınç)
    VapPres             = GetVapPresFromHumRatio(HumRatio, Basınç)
    MoistAirEnthalpy    = GetMoistAirEnthalpy(TDryBulb, HumRatio)
    MoistAirVolume      = GetMoistAirVolume(TDryBulb, HumRatio, Basınç)
    Doygunluk Derecesi  = GetDegreeOfSaturation(TDryBulb, HumRatio, Basınç)
  bitiş alt programı  CalcPsychrometricsFromTDewPoint

  alt program  CalcPsychrometricsFromRelHum(TDryBulb,           &
                                          RelHum,             &
                                          Basınç,           &
                                          HumRatio,           &
                                          TWetBulb,           &
                                          TDewPoint,          &
                                          VapPres,            &
                                          MoistAirEnthalpy,   &
                                          MoistAirVolume,     &
                                          Doygunluk Derecesi)

    !+ Nem oranı, yaş termometre sıcaklığı, çiy noktası sıcaklığı,
    !+ buhar basıncı, nemli hava entalpisi, nemli hava hacmi ve verilen havanın doyma derecesi
    !+ kuru termometre sıcaklığı, bağıl nem ve basınç.

    gerçek, niyet(içinde)    ::  TDryBulb
      !+ °F [IP] veya °C [SI] cinsinden kuru termometre sıcaklığı
    gerçek, niyet(içinde)    ::  RelHum
      !+ [0, 1] aralığında bağıl nem
    gerçek, niyet(içinde)    ::  Basınç
      !+ Psi [IP] veya Pa [SI] cinsinden atmosferik basınç
    gerçek, niyet(dışarı)   ::  HumRatio
      !+ lb_H₂O lb_Air⁻¹ [IP] veya kg_H₂O kg_Air⁻¹ [SI] cinsinden nem oranı
    gerçek, niyet(dışarı)   ::  TWetBulb
      !+ °F [IP] veya °C [SI] cinsinden yaş termometre sıcaklığı
    gerçek, niyet(dışarı)   ::  TDewPoint
      !+ °F [IP] veya °C [SI] cinsinden çiğlenme noktası sıcaklığı
    gerçek, niyet(dışarı)   ::  VapPres
      !+ Nemli havadaki su buharının Psi [IP] veya Pa [SI] cinsinden kısmi basıncı
    gerçek, niyet(dışarı)   ::  MoistAirEnthalpy
      !+ Btu lb⁻¹ [IP] veya J kg⁻¹ [SI] cinsinden nemli hava entalpisi
    gerçek, niyet(dışarı)   ::  MoistAirVolume
      !+ Nemli havanın özgül hacmi ft³ lb⁻¹ [IP] veya m³ kg⁻¹ [SI] cinsinden
    gerçek, niyet(dışarı)   ::  Doygunluk Derecesi
      !+ Doygunluk derecesi [birimsiz]

    HumRatio            = GetHumRatioFromRelHum(TDryBulb, RelHum, Basınç)
    TWetBulb            = GetTWetBulbFromHumRatio(TDryBulb, HumRatio, Basınç)
    TDewPoint           = GetTDewPointFromHumRatio(TDryBulb, HumRatio, Basınç)
    VapPres             = GetVapPresFromHumRatio(HumRatio, Basınç)
    MoistAirEnthalpy    = GetMoistAirEnthalpy(TDryBulb, HumRatio)
    MoistAirVolume      = GetMoistAirVolume(TDryBulb, HumRatio, Basınç)
    Doygunluk Derecesi  = GetDegreeOfSaturation(TDryBulb, HumRatio, Basınç)
  bitiş alt programı  CalcPsychrometricsFromRelHum


son modül  psikrolib

Visual Basic, VBA

   1
   2
   3
   4
   5
   6
   7
   8
   9
  10
  11
  12
  13
  14
  15
  16
  17
  18
  19
  20
  21
  22
  23
  24
  25
  26
  27
  28
  29
  30
  31
  32
  33
  34
  35
  36
  37
  38
  39
  40
  41
  42
  43
  44
  45
  46
  47
  48
  49
  50
  51
  52
  53
  54
  55
  56
  57
  58
  59
  60
  61
  62
  63
  64
  65
  66
  67
  68
  69
  70
  71
  72
  73
  74
  75
  76
  77
  78
  79
  80
  81
  82
  83
  84
  85
  86
  87
  88
  89
  90
  91
  92
  93
  94
  95
  96
  97
  98
  99
 100
 101
 102
 103
 104
 105
 106
 107
 108
 109
 110
 111
 112
 113
 114
 115
 116
 117
 118
 119
 120
 121
 122
 123
 124
 125
 126
 127
 128
 129
 130
 131
 132
 133
 134
 135
 136
 137
 138
 139
 140
 141
 142
 143
 144
 145
 146
 147
 148
 149
 150
 151
 152
 153
 154
 155
 156
 157
 158
 159
 160
 161
 162
 163
 164
 165
 166
 167
 168
 169
 170
 171
 172
 173
 174
 175
 176
 177
 178
 179
 180
 181
 182
 183
 184
 185
 186
 187
 188
 189
 190
 191
 192
 193
 194
 195
 196
 197
 198
 199
 200
 201
 202
 203
 204
 205
 206
 207
 208
 209
 210
 211
 212
 213
 214
 215
 216
 217
 218
 219
 220
 221
 222
 223
 224
 225
 226
 227
 228
 229
 230
 231
 232
 233
 234
 235
 236
 237
 238
 239
 240
 241
 242
 243
 244
 245
 246
 247
 248
 249
 250
 251
 252
 253
 254
 255
 256
 257
 258
 259
 260
 261
 262
 263
 264
 265
 266
 267
 268
 269
 270
 271
 272
 273
 274
 275
 276
 277
 278
 279
 280
 281
 282
 283
 284
 285
 286
 287
 288
 289
 290
 291
 292
 293
 294
 295
 296
 297
 298
 299
 300
 301
 302
 303
 304
 305
 306
 307
 308
 309
 310
 311
 312
 313
 314
 315
 316
 317
 318
 319
 320
 321
 322
 323
 324
 325
 326
 327
 328
 329
 330
 331
 332
 333
 334
 335
 336
 337
 338
 339
 340
 341
 342
 343
 344
 345
 346
 347
 348
 349
 350
 351
 352
 353
 354
 355
 356
 357
 358
 359
 360
 361
 362
 363
 364
 365
 366
 367
 368
 369
 370
 371
 372
 373
 374
 375
 376
 377
 378
 379
 380
 381
 382
 383
 384
 385
 386
 387
 388
 389
 390
 391
 392
 393
 394
 395
 396
 397
 398
 399
 400
 401
 402
 403
 404
 405
 406
 407
 408
 409
 410
 411
 412
 413
 414
 415
 416
 417
 418
 419
 420
 421
 422
 423
 424
 425
 426
 427
 428
 429
 430
 431
 432
 433
 434
 435
 436
 437
 438
 439
 440
 441
 442
 443
 444
 445
 446
 447
 448
 449
 450
 451
 452
 453
 454
 455
 456
 457
 458
 459
 460
 461
 462
 463
 464
 465
 466
 467
 468
 469
 470
 471
 472
 473
 474
 475
 476
 477
 478
 479
 480
 481
 482
 483
 484
 485
 486
 487
 488
 489
 490
 491
 492
 493
 494
 495
 496
 497
 498
 499
 500
 501
 502
 503
 504
 505
 506
 507
 508
 509
 510
 511
 512
 513
 514
 515
 516
 517
 518
 519
 520
 521
 522
 523
 524
 525
 526
 527
 528
 529
 530
 531
 532
 533
 534
 535
 536
 537
 538
 539
 540
 541
 542
 543
 544
 545
 546
 547
 548
 549
 550
 551
 552
 553
 554
 555
 556
 557
 558
 559
 560
 561
 562
 563
 564
 565
 566
 567
 568
 569
 570
 571
 572
 573
 574
 575
 576
 577
 578
 579
 580
 581
 582
 583
 584
 585
 586
 587
 588
 589
 590
 591
 592
 593
 594
 595
 596
 597
 598
 599
 600
 601
 602
 603
 604
 605
 606
 607
 608
 609
 610
 611
 612
 613
 614
 615
 616
 617
 618
 619
 620
 621
 622
 623
 624
 625
 626
 627
 628
 629
 630
 631
 632
 633
 634
 635
 636
 637
 638
 639
 640
 641
 642
 643
 644
 645
 646
 647
 648
 649
 650
 651
 652
 653
 654
 655
 656
 657
 658
 659
 660
 661
 662
 663
 664
 665
 666
 667
 668
 669
 670
 671
 672
 673
 674
 675
 676
 677
 678
 679
 680
 681
 682
 683
 684
 685
 686
 687
 688
 689
 690
 691
 692
 693
 694
 695
 696
 697
 698
 699
 700
 701
 702
 703
 704
 705
 706
 707
 708
 709
 710
 711
 712
 713
 714
 715
 716
 717
 718
 719
 720
 721
 722
 723
 724
 725
 726
 727
 728
 729
 730
 731
 732
 733
 734
 735
 736
 737
 738
 739
 740
 741
 742
 743
 744
 745
 746
 747
 748
 749
 750
 751
 752
 753
 754
 755
 756
 757
 758
 759
 760
 761
 762
 763
 764
 765
 766
 767
 768
 769
 770
 771
 772
 773
 774
 775
 776
 777
 778
 779
 780
 781
 782
 783
 784
 785
 786
 787
 788
 789
 790
 791
 792
 793
 794
 795
 796
 797
 798
 799
 800
 801
 802
 803
 804
 805
 806
 807
 808
 809
 810
 811
 812
 813
 814
 815
 816
 817
 818
 819
 820
 821
 822
 823
 824
 825
 826
 827
 828
 829
 830
 831
 832
 833
 834
 835
 836
 837
 838
 839
 840
 841
 842
 843
 844
 845
 846
 847
 848
 849
 850
 851
 852
 853
 854
 855
 856
 857
 858
 859
 860
 861
 862
 863
 864
 865
 866
 867
 868
 869
 870
 871
 872
 873
 874
 875
 876
 877
 878
 879
 880
 881
 882
 883
 884
 885
 886
 887
 888
 889
 890
 891
 892
 893
 894
 895
 896
 897
 898
 899
 900
 901
 902
 903
 904
 905
 906
 907
 908
 909
 910
 911
 912
 913
 914
 915
 916
 917
 918
 919
 920
 921
 922
 923
 924
 925
 926
 927
 928
 929
 930
 931
 932
 933
 934
 935
 936
 937
 938
 939
 940
 941
 942
 943
 944
 945
 946
 947
 948
 949
 950
 951
 952
 953
 954
 955
 956
 957
 958
 959
 960
 961
 962
 963
 964
 965
 966
 967
 968
 969
 970
 971
 972
 973
 974
 975
 976
 977
 978
 979
 980
 981
 982
 983
 984
 985
 986
 987
 988
 989
 990
 991
 992
 993
 994
 995
 996
 997
 998
 999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
1733
1734
1735
1736
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
1799
1800
1801
1802
1803
1804
1805
1806
1807
1808
1809
1810
1811
1812
1813
1814
1815
1816
1817
1818
1819
1820
1821
1822
1823
1824
1825
1826
1827
1828
1829
1830
1831
1832
1833
1834
1835
1836
1837
1838
1839
1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
1853
PsychroLib (sürüm 2.3.0) (https://github.com/psychrometrics/psychrolib)
' Telif Hakkı (c) 2018 D. Thevenard ve D. Meyer, mevcut kütüphane uygulaması için
Telif Hakkı (c) 2017 ASHRAE El Kitabı — ASHRAE denklemleri ve katsayıları için temel bilgiler
MIT Lisansı altında lisanslıdır.
'
' psychrolib.vba
'
' Gaz-buhar karışımlarının termodinamik özelliklerini hesaplamak için fonksiyonlar içerir
' ve çoğu mühendislik, fiziksel ve meteorolojik durum için uygun standart atmosfer
' uygulamaları.
'
İşlevlerin çoğu, içinde bulunan formüllerin bir uygulamasıdır.
' 2017 ASHRAE El Kitabı - Temel Bilgiler, her iki Uluslararası Sistemde (SI),
' ve İmparatorluk (IP) birimleri. Lütfen ekteki bilgilere bakın.
' ilgili referans için her işlev.
'
' Misal
Birim sistemini örneğin SI olarak ayarlayın ("SI" veya "IP" olabilir)
psikrolib modülünde aşağıdaki satırın açıklamasını kaldırarak
' Const PSYCHROLIB_UNITS = UnitSystem.SI
'
25 C kuru termometre sıcaklığı ve %80 bağıl nem için çiğ noktası sıcaklığını hesaplayın
' TDewPoint = GetTDewPointFromRelHum(25.0, 0.80)
' Debug.Print(TDewPoint)
21.309397163661785
'
' Telif hakkı
' - Geçerli kitaplık uygulaması için
Telif Hakkı (c) 2018 D. Thevenard ve D. Meyer.
- Yayınlanan denklemler ve katsayılar için ASHRAE Handbook — Fundamentals, Chapter 1
' Telif Hakkı (c) 2017 ASHRAE El Kitabı — Temel Bilgiler (https://www.ashrae.org)
'
' Lisans
MİT (https://github.com/psychrometrics/psychrolib/LICENSE.txt)
'
'Yazarlardan Not
Kodun yeterli olduğundan emin olmak için her türlü çabayı gösterdik, ancak hiçbir şey yapmıyoruz.
' doğruluğuna göre gösterimi. Kendi sorumluluğunuzdadır kullanın. fark etmeli misin
' hatası veya bir öneriniz varsa, lütfen şu adresten GitHub aracılığıyla bize bildirin:
https://github.com/psychrometrics/psychrolib/issues.
'

seçenek Açık


'********************************************** ************************************************ ***
ÖNEMLİ: Kullanılacak birim sisteminin yorumunu manuel olarak kaldırın
'********************************************** ************************************************ ***

'Birim sistemlerini tanımlamak için numaralandırma
Sıralama Ölçü sistemi
  IP = 1
   = 2
Son Sıralama

Birim sistemini ("IP" veya "SI") tanımlamak için bu iki satırdan birinin açıklamasını kaldırın.
'Sabit PSYCHROLIB_UNITS = UnitSystem.IP
'Sabit PSYCHROLIB_UNITS = UnitSystem.SI


'********************************************** ************************************************ ***
' Küresel sabitler
'********************************************** ************************************************ ***

Özel Sabit ZERO_FAHRENHEIT_AS_RANKINE = 459.67   Derece Rankine (°R) olarak ifade edilen sıfır derece Fahrenheit (°F).
                                                    'Referans: ASHRAE El Kitabı - Temel Bilgiler (2017) böl. 39.

Özel Sabit ZERO_CELSIUS_AS_KELVIN = 273.15       Kelvin (K) olarak ifade edilen sıfır santigrat derece (°C).
                                                    Referans: ASHRAE El Kitabı - Temel Bilgiler (2017) bölüm. 39.

Özel Sabit R_DA_IP = 53.35                 ' Kuru hava (IP versiyonu) için ft lbf/lb_DryAir/R cinsinden evrensel gaz sabiti.

Özel Sabit R_DA_SI = 287.042               J/kg_DryAir/K cinsinden kuru hava için evrensel gaz sabiti (SI versiyonu).

Özel Sabit MAX_ITER_COUNT = 100            ' While döngülerinden çıkmadan önceki maksimum yineleme sayısı.

Özel Sabit MIN_HUM_RATIO = 1e-7            ' Herhangi bir fonksiyon tarafından kullanılan/dönen minimum kabul edilebilir nem oranı.
                                              0'ın üzerindeki veya MIN_HUM_RATIO'nun altındaki tüm değerler bu değere sıfırlanacaktır.

Özel Sabit FREEZING_POINT_WATER_IP = 32.0  °F cinsinden suyun donma noktası

Özel Sabit FREEZING_POINT_WATER_SI = 0.0   Suyun donma noktası, °C

Özel Sabit TRIPLE_POINT_WATER_IP = 32.018  ' °F cinsinden suyun üçlü noktası

Özel Sabit TRIPLE_POINT_WATER_SI = 0.01    °C cinsinden suyun üçlü noktası

'********************************************** ************************************************ ***
' Yardımcı fonksiyonlar
'********************************************** ************************************************ ***

Fonksiyon GetUnitSystem() Gibi Ölçü sistemi
'
Bu işlev, kullanımda olan birim sistemini (SI veya IP) döndürür.
'
'Arglar:
' Yok
'
' İadeler:
Şu anda kullanımda olan birimler sistemi ("SI" veya "IP")
'
' Not:
'
Burada bir hata alıyorsanız, bunun nedeni iki satırdan birini açıklamamış olmanızdır.
' PSYCHROLIB_UNITS'i tanımlıyor (Küresel Sabitler bölümüne bakın)
'
    GetUnitSystem = PSYCHROLIB_UNITS

Son Fonksiyon

Özel Fonksiyon isIP() Gibi varyant
'
Bu işlev, kullanımda olan birim sisteminin IP mi yoksa SI mı olduğunu kontrol eder.
'
'Arglar:
' Yok
'
' İadeler:
IP ise True, SI ise False ve tanımsızsa hata verir
'
  Eğer (PSYCHROLIB_UNITS = UnitSystem.IP) Sonra
    isIP = Doğru
  ElseIf (PSYCHROLIB_UNITS = BirimSistem.SI) Sonra
    isIP = Yanlış
  Başka
    Mesaj Kutusu ("Birim sistemi tanımlanmadı.")
    isIP = CVERr(xlErrNA)
  Son Eğer

Son Fonksiyon

Özel Fonksiyon GetTol() Gibi varyant
'
Bu işlev, yinelemeli çözme için kullanılan sıcaklık toleransını döndürür.
Değer fiziksel olarak IP veya SI'da aynıdır.
'
'Arglar:
' Yok
'
' İadeler:
Sıcaklık toleransı
'
  Eğer (PSYCHROLIB_UNITS = UnitSystem.IP) Sonra
    GetTol = 0.001 * 9 / 5
  Başka
    GetTol = 0.001
  Son Eğer
Son Fonksiyon

Özel Alt Mesaj Kutum(ByVal ErrMsg Gibi sicim)
'
' Hata mesajı çıktısı
Gerekirse bu işlevi kendi işlevinizle geçersiz kılın veya mesajları görmek istemiyorsanız kodunu yorumlayın
'
' Mesaj varsayılan olarak devre dışı
' MsgBox (ErrMsg)

Son Alt

Özel Fonksiyon Min(ByVal Sayı1 Gibi varyant, ByVal Sayı2 Gibi varyant) Gibi varyant
'
' Min işlevi, minimum iki sayı döndürmek için
'
  Eğer (Sayı1 <= Sayı2) Sonra
    Min = Sayı1
  Başka
    Min = Sayı2
  Son Eğer

Son Fonksiyon

Özel Fonksiyon maksimum(ByVal Sayı1 Gibi varyant, ByVal Sayı2 Gibi varyant) Gibi varyant
'
Maksimum iki sayı döndürmek için Max işlevi
'
  Eğer (Sayı1 > = Sayı2) Sonra
    maksimum = Sayı1
  Başka
    maksimum = Sayı2
  Son Eğer

Son Fonksiyon


'********************************************** **************************
Sıcaklık birimleri arasındaki dönüşümler
'********************************************** **************************

Fonksiyon GetTRankineFromTFahrenheit(ByVal T_Fahrenhayt Gibi varyant) Gibi varyant
'
Sıcaklığı Rankine derecesine (°R) dönüştürmek için yardımcı işlev
' Fahrenheit (°F) derecesi cinsinden verilen sıcaklık.
'
'Arglar:
' T_Fahrenheit: Derece Fahrenheit (°F) cinsinden sıcaklık
'
'İadeler:
Derece Rankine cinsinden sıcaklık (°R)
'
'Referans:
Referans: ASHRAE El Kitabı - Temel Bilgiler (2017) bölüm. 1 bölüm 3
'
Notlar:
'Kesin dönüşüm.
'
  üzerinde Hata Git Hata İşleyicisi

  GetTRankineFromTFahrenheit = (T_Fahrenhayt + ZERO_FAHRENHEIT_AS_RANKINE)
  çıkış Fonksiyon

Hata İşleyicisi:
  GetTRankineFromTFahrenheit = CVERr(xlErrNA)

Son Fonksiyon

Fonksiyon GetTFahrenheitFromTRankine(ByVal T_Rankine Gibi varyant) Gibi varyant
'
Sıcaklığı Fahrenheit (°F) derecesine dönüştürmek için yardımcı işlev
Derece Rankine (°R) cinsinden verilen sıcaklık.
'
'Arglar:
' TRankine: Rankine derecesi cinsinden sıcaklık (°R)
'
'İadeler:
' Derece Fahrenheit (°F) cinsinden sıcaklık
'
'Referans:
Referans: ASHRAE El Kitabı - Temel Bilgiler (2017) bölüm. 1 bölüm 3
'
Notlar:
'Kesin dönüşüm.
'
  üzerinde Hata Git Hata İşleyicisi

  GetTFahrenheitFromTRankine = (T_Rankine - ZERO_FAHRENHEIT_AS_RANKINE)
  çıkış Fonksiyon

Hata İşleyicisi:
  GetTFahrenheitFromTRankine = CVERr(xlErrNA)

Son Fonksiyon

Fonksiyon GetTKelvinFromTCelsius(ByVal T_Celsius Gibi varyant) Gibi varyant
'
Sıcaklığı Kelvin'e (K) dönüştürmek için yardımcı işlev
Santigrat derece (°C) cinsinden verilen sıcaklık.
'
'Arglar:
' TCelsius: Santigrat derece cinsinden sıcaklık (°C)
'
'İadeler:
Kelvin cinsinden sıcaklık (K)
'
'Referans:
Referans: ASHRAE El Kitabı - Temel Bilgiler (2017) bölüm. 1 bölüm 3
'
Notlar:
'Kesin dönüşüm.
'
  üzerinde Hata Git Hata İşleyicisi

  GetTKelvinFromTCelsius = (T_Celsius + ZERO_CELSIUS_AS_KELVIN)
  çıkış Fonksiyon

Hata İşleyicisi:
  GetTKelvinFromTCelsius = CVERr(xlErrNA)

Son Fonksiyon

Fonksiyon GetTCelsiusFromTKelvin(ByVal T_Kelvin Gibi varyant) Gibi varyant
'
Sıcaklığı santigrat dereceye (°C) dönüştürmek için yardımcı işlev
Kelvin (K) cinsinden verilen sıcaklık.
'
'Arglar:
TKelvin: Kelvin cinsinden sıcaklık (K)
'
'İadeler:
Santigrat derece cinsinden sıcaklık (°C)
'
'Referans:
Referans: ASHRAE El Kitabı - Temel Bilgiler (2017) bölüm. 1 bölüm 3
'
Notlar:
'Kesin dönüşüm.
'
  üzerinde Hata Git Hata İşleyicisi

  GetTCelsiusFromTKelvin = (T_Kelvin - ZERO_CELSIUS_AS_KELVIN)
  çıkış Fonksiyon

Hata İşleyicisi:
  GetTCelsiusFromTKelvin = CVERr(xlErrNA)

Son Fonksiyon


'********************************************** ************************************************ ***
Çiy noktası, yaş termometre ve bağıl nem arasındaki dönüşümler
'********************************************** ************************************************ ***

Fonksiyon GetTWetBulbFromTDewPoint(ByVal TDryBulb Gibi varyant, ByVal TDewPoint Gibi varyant, ByVal Basınç Gibi varyant) Gibi varyant
'
Kuru termometre sıcaklığı, çiy noktası sıcaklığı ve basınç verildiğinde dönüş yaş termometre sıcaklığı.
'
'Arglar:
' TDryBulb : °F [IP] veya °C [SI] cinsinden kuru termometre sıcaklığı
' TDewPoint : °F [IP] veya °C [SI] cinsinden çiy noktası sıcaklığı
' Basınç : Psi [IP] veya Pa [SI] cinsinden atmosferik basınç
'
' İadeler:
°F [IP] veya °C [SI] cinsinden yaş termometre sıcaklığı
'
' Referans:
ASHRAE El Kitabı - Temel Bilgiler (2017) bölüm. 1
'
  loş HumRatio Gibi varyant

  üzerinde Hata Git Hata İşleyicisi

  Eğer TDewPoint > TDryBulb Sonra
    Mesaj Kutum ("Çiy noktası sıcaklığı kuru termometre sıcaklığının üzerinde")
    Git Hata İşleyicisi
  Son Eğer

  HumRatio = GetHumRatioFromTDewPoint(TDewPoint, Basınç)
  GetTWetBulbFromTDewPoint = GetTWetBulbFromHumRatio(TDryBulb, HumRatio, Basınç)
  çıkış Fonksiyon

Hata İşleyicisi:
  GetTWetBulbFromTDewPoint = CVERr(xlErrNA)

Son Fonksiyon

Fonksiyon GetTWetBulbFromRelHum(ByVal TDryBulb Gibi varyant, ByVal RelHum Gibi varyant, ByVal Basınç Gibi varyant) Gibi varyant
'
Kuru termometre sıcaklığı, bağıl nem ve basınç verildiğinde yaş termometre sıcaklığına dönüş.
'
'Arglar:
' TDryBulb : °F [IP] veya °C [SI] cinsinden kuru termometre sıcaklığı
' RelHum : [0, 1] aralığında bağıl nem
' Basınç : Psi [IP] veya Pa [SI] cinsinden atmosferik basınç
'
' İadeler:
°F [IP] veya °C [SI] cinsinden yaş termometre sıcaklığı
'
' Referans:
ASHRAE El Kitabı - Temel Bilgiler (2017) bölüm. 1
'
  loş HumRatio Gibi varyant

  üzerinde Hata Git Hata İşleyicisi

  Eğer (RelHum <  Veya RelHum > 1) Sonra
    Mesaj Kutum ("Bağıl nem [0,1] aralığının dışında")
    Git Hata İşleyicisi
  Son Eğer

  HumRatio = GetHumRatioFromRelHum(TDryBulb, RelHum, Basınç)
  GetTWetBulbFromRelHum = GetTWetBulbFromHumRatio(TDryBulb, HumRatio, Basınç)
  çıkış Fonksiyon

Hata İşleyicisi:
  GetTWetBulbFromRelHum = CVERr(xlErrNA)

Son Fonksiyon

Fonksiyon GetRelHumFromTDewPoint(ByVal TDryBulb Gibi varyant, ByVal TDewPoint Gibi varyant) Gibi varyant
'
Kuru termometre sıcaklığı ve çiy noktası sıcaklığı verilen bağıl nemi geri getirin.
'
'Arglar:
' TDryBulb : °F [IP] veya °C [SI] cinsinden kuru termometre sıcaklığı
' TDewPoint : °F [IP] veya °C [SI] cinsinden çiy noktası sıcaklığı
'
' İadeler:
[0, 1] aralığında bağıl nem
'
' Referans:
ASHRAE El Kitabı - Temel Bilgiler (2017) bölüm. 1 eş 22
'
  loş VapPres Gibi varyant
  loş SatVapPres Gibi varyant

  üzerinde Hata Git Hata İşleyicisi

  Eğer (TDewNoktası > TDryBulb) Sonra
    Mesaj Kutum ("Çiy noktası sıcaklığı kuru termometre sıcaklığının üzerinde")
    Git Hata İşleyicisi
  Son Eğer

  VapPres = GetSatVapPres (TDewPoint)
  SatVapPres = GetSatVapPres (TDryBulb)
  GetRelHumFromTDewPoint = VapPres / SatVapPres
  çıkış Fonksiyon

Hata İşleyicisi:
  GetRelHumFromTDewPoint = CVERr(xlErrNA)

Son Fonksiyon

Fonksiyon GetRelHumFromTWetBulb(ByVal TDryBulb Gibi varyant, ByVal TWetBulb Gibi varyant, ByVal Basınç Gibi varyant) Gibi varyant
'
Kuru termometre sıcaklığı, yaş termometre sıcaklığı ve basıncı verilen bağıl nemi geri getirin.
'
'Arglar:
' TDryBulb : °F [IP] veya °C [SI] cinsinden kuru termometre sıcaklığı
' TWetBulb : °F [IP] veya °C [SI] cinsinden yaş termometre sıcaklığı
' Basınç : Psi [IP] veya Pa [SI] cinsinden atmosferik basınç
'
' İadeler:
[0, 1] aralığında bağıl nem
'
' Referans:
ASHRAE El Kitabı - Temel Bilgiler (2017) bölüm. 1
'
  loş HumRatio Gibi varyant

  üzerinde Hata Git Hata İşleyicisi

  Eğer TWetBulb > TDryBulb Sonra
    Mesaj Kutum ("Islak hazne sıcaklığı kuru hazne sıcaklığının üzerinde")
    Git Hata İşleyicisi
  Son Eğer

  HumRatio = GetHumRatioFromTWetBulb(TDryBulb, TWetBulb, Basınç)
  GetRelHumFromTWetBulb = GetRelHumFromHumRatio(TDryBulb, HumRatio, Basınç)
  çıkış Fonksiyon

Hata İşleyicisi:
  GetRelHumFromTWetBulb = CVERr(xlErrNA)

Son Fonksiyon

Fonksiyon GetTDewPointFromRelHum(ByVal TDryBulb Gibi varyant, ByVal RelHum Gibi varyant) Gibi varyant
'
Kuru termometre sıcaklığı ve bağıl nem verildiğinde dönüş çiy noktası sıcaklığı.
'
'Arglar:
' TDryBulb : °F [IP] veya °C [SI] cinsinden kuru termometre sıcaklığı
' RelHum: [0, 1] aralığında bağıl nem
'
' İadeler:
°F [IP] veya °C [SI] cinsinden çiğlenme noktası sıcaklığı
'
' Referans:
ASHRAE El Kitabı - Temel Bilgiler (2017) bölüm. 1
'

  loş VapPres Gibi varyant

  üzerinde Hata Git Hata İşleyicisi

  Eğer RelHum <  Veya RelHum > 1 Sonra
    Mesaj Kutum ("Bağıl nem [0, 1] aralığının dışında")
    Git Hata İşleyicisi
  Son Eğer

  VapPres = GetVapPresFromRelHum (TDryBulb, RelHum)
  GetTDewPointFromRelHum = GetTDewPointFromVapPres(TDryBulb, VapPres)
  çıkış Fonksiyon

Hata İşleyicisi:
  GetTDewPointFromRelHum = CVERr(xlErrNA)

Son Fonksiyon

Fonksiyon GetTDewPointFromTWetBulb(ByVal TDryBulb Gibi varyant, ByVal TWetBulb Gibi varyant, ByVal Basınç Gibi varyant) Gibi varyant
'
Kuru termometre sıcaklığı, yaş termometre sıcaklığı ve basınç verildiğinde dönüş çiy noktası sıcaklığı.
'
'Arglar:
' TDryBulb : °F [IP] veya °C [SI] cinsinden kuru termometre sıcaklığı
' TWetBulb : °F [IP] veya °C [SI] cinsinden yaş termometre sıcaklığı
' Basınç : Psi [IP] veya Pa [SI] cinsinden atmosferik basınç
'
' İadeler:
°F [IP] veya °C [SI] cinsinden çiğlenme noktası sıcaklığı
'
' Referans:
ASHRAE El Kitabı - Temel Bilgiler (2017) bölüm. 1
'
  loş HumRatio Gibi varyant

  üzerinde Hata Git Hata İşleyicisi

  Eğer TWetBulb > TDryBulb Sonra
    Mesaj Kutum ("Islak hazne sıcaklığı kuru hazne sıcaklığının üzerinde")
    Git Hata İşleyicisi
  Son Eğer

  HumRatio = GetHumRatioFromTWetBulb(TDryBulb, TWetBulb, Basınç)
  GetTDewPointFromTWetBulb = GetTDewPointFromHumRatio(TDryBulb, HumRatio, Basınç)
  çıkış Fonksiyon

Hata İşleyicisi:
  GetTDewPointFromTWetBulb = CVERr(xlErrNA)

Son Fonksiyon


'********************************************** ************************************************ ***
Çiy noktası veya bağıl nem ve buhar basıncı arasındaki dönüşümler
'********************************************** ************************************************ ***

Fonksiyon GetVapPresFromRelHum(ByVal TDryBulb Gibi varyant, ByVal RelHum Gibi varyant) Gibi varyant
'
Bağıl nem ve sıcaklığın bir fonksiyonu olarak su buharının kısmi basıncını geri getirin.
'
'Arglar:
' TDryBulb : °F [IP] veya °C [SI] cinsinden kuru termometre sıcaklığı
' RelHum : [0, 1] aralığında bağıl nem
'
' İadeler:
Nemli havadaki su buharının Psi [IP] veya Pa [SI] cinsinden kısmi basıncı
'
' Referans:
ASHRAE El Kitabı - Temel Bilgiler (2017) bölüm. 1 eş 12, 22
'
  üzerinde Hata Git Hata İşleyicisi

  Eğer RelHum <  Veya RelHum > 1 Sonra
    Mesaj Kutum ("Bağıl nem [0, 1] aralığının dışında")
    Git Hata İşleyicisi
  Son Eğer

  GetVapPresFromRelHum = RelHum * GetSatVapPres (TDryBulb)
  çıkış Fonksiyon

Hata İşleyicisi:
  GetVapPresFromRelHum = CVERr(xlErrNA)

Son Fonksiyon

Fonksiyon GetRelHumFromVapPres(ByVal TDryBulb Gibi varyant, ByVal VapPres Gibi varyant) Gibi varyant
Kuru termometre sıcaklığı ve buhar basıncı verilen bağıl nemi geri getirin.
'
'Arglar:
' TDryBulb : °F [IP] veya °C [SI] cinsinden kuru termometre sıcaklığı
' VapPres: Nemli havadaki su buharının Psi [IP] veya Pa [SI] cinsinden kısmi basıncı
'
' İadeler:
[0, 1] aralığında bağıl nem
'
' Referans:
ASHRAE El Kitabı - Temel Bilgiler (2017) bölüm. 1 eş 12, 22
'
  üzerinde Hata Git Hata İşleyicisi

  Eğer (VapPres < ) Sonra
    Mesaj Kutum ("Nemli havadaki su buharının kısmi basıncı negatiftir")
    Git Hata İşleyicisi
  Son Eğer

  GetRelHumFromVapPres = VapPres / GetSatVapPres (TDryBulb)
  çıkış Fonksiyon

Hata İşleyicisi:
  GetRelHumFromVapPres = CVERr(xlErrNA)

Son Fonksiyon


Özel Fonksiyon dLnPws_(TDryBulb Gibi varyant) Gibi varyant
'
Doymuş buhar basıncının doğal logaritmasının türevini döndüren yardımcı işlev
' kuru termometre sıcaklığının bir fonksiyonu olarak.
'
'Arglar:
' TDryBulb : °F [IP] veya °C [SI] cinsinden kuru termometre sıcaklığı
'
' İadeler:
Doymuş havanın buhar basıncının Psi [IP] veya Pa [SI] cinsinden doğal logaritmasının türevi
'
' Referans:
ASHRAE El Kitabı - Temel Bilgiler (2017) bölüm. 1 eş 5 & 6
'
  loş T Gibi varyant
  Eğer (isIP()) Sonra
    T = GetTRankineFromTFahrenheit(TDryBulb)
    Eğer (TDryBulb <= TRIPLE_POINT_WATER_IP) Sonra
      dLnPws_ = 10214.165 / T ^ 2 - 0.0053765794 + 2 * 0.00000019202377 * T _
             + 3 * 3.5575832E-10 * T ^ 2 - 4 * 9.0344688E-14 * T ^ 3 + 4.1635019 / T
    Başka
      dLnPws_ = 10440.397 / T ^ 2 - 0.027022355 + 2 * 0.00001289036 * T _
             - 3 * 2.4780681E-09 * T ^ 2 + 6.5459673 / T
    Son Eğer
  Başka
    T = GetTKelvinFromTCelsius(TDryBulb)
    Eğer (TDryBulb <= TRIPLE_POINT_WATER_SI) Sonra
      dLnPws_ = 5674.5359 / T ^ 2 - 0.009677843 + 2 * 0.00000062215701 * T _
             + 3 * 2.0747825E-09 * T ^ 2 - 4 * 9.484024E-13 * T ^ 3 + 4.1635019 / T
    Başka
      dLnPws_ = 5800.2206 / T ^ 2 - 0.048640239 + 2 * 0.000041764768 * T _
             - 3 * 0.000000014452093 * T ^ 2 + 6.5459673 / T
    Son Eğer
  Son Eğer
Son Fonksiyon

Fonksiyon GetTDewPointFromVapPres(ByVal TDryBulb Gibi varyant, ByVal VapPres Gibi varyant) Gibi varyant
'
Kuru termometre sıcaklığı ve buhar basıncı verilen dönüş çiğ noktası sıcaklığı.
'
'Arglar:
' TDryBulb : °F [IP] veya °C [SI] cinsinden kuru termometre sıcaklığı
' VapPres: Nemli havadaki su buharının Psi [IP] veya Pa [SI] cinsinden kısmi basıncı
'
' İadeler:
°F [IP] veya °C [SI] cinsinden çiğlenme noktası sıcaklığı
'
' Referans:
ASHRAE El Kitabı - Temel Bilgiler (2017) bölüm. 1 eş. 5 ve 6
'
Notlar:
Çiy noktası sıcaklığı, su buharı basıncını veren denklem ters çevrilerek çözülür.
' sağlanan regresyonları kullanmak yerine sıcaklıktan doygunlukta
ASHRAE tarafından (eqn. 37 ve 38) çok daha az doğru olan ve
' daha dar geçerlilik aralığı.
Su buharının logaritması için Newton-Raphson (NR) yöntemi kullanılır.
sıcaklığın bir fonksiyonu olarak basınç, ki bu çok düzgün bir fonksiyondur
Yakınsama genellikle 3 ila 5 yinelemede elde edilir.
TdryBulb burada gerçekten gerekli değil, sadece kolaylık sağlamak için kullanılıyor.
'
  loş SINIRLAR(2) Gibi varyant
  loş PSYCHROLIB_TOLERANCE Gibi varyant

  Eğer (isIP()) Sonra
    SINIRLAR(1) = -148.
    SINIRLAR(2) = 392.
  Başka
    SINIRLAR(1) = -100.
    SINIRLAR(2) = 200.
  Son Eğer

  üzerinde Hata Git Hata İşleyicisi

  Eğer ((VapPres < GetSatVapPres(SINIRLAR(1))) Veya (VapPres > GetSatVapPres(SINIRLAR(2)))) Sonra
    Mesaj Kutum ("Su buharının kısmi basıncı, denklemlerin geçerlilik aralığının dışında")
    Git Hata İşleyicisi
  Son Eğer

  PSYCHROLIB_TOLERANCE = GetTol()

  loş TDewPoint Gibi varyant
  loş lnVP Gibi varyant
  loş d_lnVP Gibi varyant
  loş TDewPoint_iter Gibi varyant
  loş lnVP_iter
  loş indeks Gibi varyant
  indeks = 1

  Çözüme yaklaşmak için NR kullanıyoruz.
  'İlk tahmin
  TDewPoint = TDryBulb        Çiy noktası sıcaklıklarının hesaplanan değeri, yinelemeli olarak çözüldü
  lnVP = Günlük(VapPres)         Nemli havadaki su buharının kısmi basıncı

  ' yineleme
  Yap
    TDewPoint_iter = TDewPoint   NR hesaplamasında kullanılan Tdp değeri
    lnVP_iter = Günlük(GetSatVapPres(TDewPoint_iter))

    Analitik olarak hesaplanan fonksiyonun türevi
    d_lnVP = dLnPws_ (TDewPoint_iter)

    Denklemin geçerlilik alanıyla sınırlanan yeni tahmin. 5 ve 6 ve donma noktasına göre
    TDewPoint = TDewPoint_iter - (lnVP_iter - lnVP) / d_lnVP
    TDewPoint = Maks(TDewNoktası, SINIRLAR(1))
    TDewPoint = Min(TDewNoktası, SINIRLAR(2))

    Eğer (indeks > MAX_ITER_COUNT) Sonra
      Git Hata İşleyicisi
    Son Eğer

    indeks = indeks + 1

  döngü Süre (Mutlak(TDewPoint - TDewPoint_iter) > PSYCHROLIB_TOLERANCE)

  TDewPoint = Min(TDewNoktası, TDryBulb)
  GetTDewPointFromVapPres = TDewPoint
  çıkış Fonksiyon

Hata İşleyicisi:
  GetTDewPointFromVapPres = CVERr(xlErrNA)

Son Fonksiyon

Fonksiyon GetVapPresFromTDewPoint(ByVal TDewPoint Gibi varyant) Gibi varyant
'
Çiy noktası sıcaklığı verilen dönüş buhar basıncı.
'
'Arglar:
' TDewPoint : °F [IP] veya °C [SI] cinsinden çiy noktası sıcaklığı
'
' İadeler:
Nemli havadaki su buharının Psi [IP] veya Pa [SI] cinsinden kısmi basıncı
'
' Referans:
ASHRAE El Kitabı - Temel Bilgiler (2017) bölüm. 1 eş 36
'
  üzerinde Hata Git Hata İşleyicisi
  GetVapPresFromTDewPoint = GetSatVapPres (TDewPoint)
  çıkış Fonksiyon

Hata İşleyicisi:
  GetVapPresFromTDewPoint = CVERr(xlErrNA)

Son Fonksiyon


'********************************************** ************************************************ ***
Yaş termometre sıcaklığından, çiy noktası sıcaklığından veya bağıl nemden nem oranına dönüşümler
'********************************************** ************************************************ ***

Fonksiyon GetTWetBulbFromHumRatio(ByVal TDryBulb Gibi varyant, ByVal HumRatio Gibi varyant, ByVal Basınç Gibi varyant) Gibi varyant
'
Kuru termometre sıcaklığı, nem oranı ve basınç verildiğinde yaş termometre sıcaklığını geri getirin.
'
'Arglar:
' TDryBulb : °F [IP] veya °C [SI] cinsinden kuru termometre sıcaklığı
' HumRatio : lb_H2O/lb_Air [IP] veya kg_H2O/kg_Air [SI] cinsinden nem oranı
' Basınç : Psi [IP] veya Pa [SI] cinsinden atmosferik basınç
'
' İadeler:
°F [IP] veya °C [SI] cinsinden yaş termometre sıcaklığı
'
' Referans:
ASHRAE El Kitabı - Temel Bilgiler (2017) bölüm. 1 eqn 33 ve 35, Tstar için çözüldü
'

  ' Beyannameler
  loş Wstar Gibi varyant
  loş TDewPoint Gibi varyant, TWetBulb Gibi varyant, TWetBulbSup Gibi varyant, TWetBulbInf Gibi varyant
  loş Tol Gibi varyant, BoundedHumRatio Gibi varyant, indeks Gibi varyant

  üzerinde Hata Git Hata İşleyicisi

  Eğer HumRatio <  Sonra
    Mesaj Kutum ("Nem oranı negatif olamaz")
    Git Hata İşleyicisi
  Son Eğer
  BoundedHumRatio = max(HumRatio, MIN_HUM_RATIO)

  TDewPoint = GetTDewPointFromHumRatio(TDryBulb, BoundedHumRatio, Basınç)

  'İlk tahminler
  TWetBulbSup = TDryBulb
  TWetBulbInf = TDewPoint
  TWetBulb = (TWetBulbInf + TWetBulbSup) / 2

  ' İkiye bölme döngüsü
  Tol = GetTol()
  indeks = 
  Süre ((TWetBulbSup - TWetBulbInf) > Tol)

    ' Tstar sıcaklığındaki nem oranını hesaplayın
    Wstar = GetHumRatioFromTWetBulb(TDryBulb, TWetBulb, Basınç)

    ' Yeni sınırlar alın
    Eğer (Wstar > BoundedHumRatio) Sonra
      TWetBulbSup = TWetBulb
    Başka
      TWetBulbInf = TWetBulb
    Son Eğer

    Yaş termometre sıcaklığının yeni tahmini
    TWetBulb = (TWetBulbSup + TWetBulbInf) / 2

    Eğer (indeks > MAX_ITER_COUNT) Sonra
      Git Hata İşleyicisi
    Son Eğer

    indeks = indeks + 1
  Wend

  GetTWetBulbFromHumRatio = TWetBulb
  çıkış Fonksiyon

Hata İşleyicisi:
  GetTWetBulbFromHumRatio = CVERr(xlErrNA)

Son Fonksiyon

Fonksiyon GetHumRatioFromTWetBulb(ByVal TDryBulb Gibi varyant, ByVal TWetBulb Gibi varyant, ByVal Basınç Gibi varyant) Gibi varyant
'
Kuru termometre sıcaklığı, yaş termometre sıcaklığı ve basınç verilen dönüş nemi oranı.
'
'Arglar:
' TDryBulb : °F [IP] veya °C [SI] cinsinden kuru termometre sıcaklığı
' TWetBulb : °F [IP] veya °C [SI] cinsinden yaş termometre sıcaklığı
' Basınç : Psi [IP] veya Pa [SI] cinsinden atmosferik basınç
'
' İadeler:
lb_H2O/lb_Air [IP] veya kg_H2O/kg_Air [SI] cinsinden nem oranı
'
' Referans:
ASHRAE El Kitabı - Temel Bilgiler (2017) bölüm. 1 eş 33 ve 35

  loş Wsstar Gibi varyant, HumRatio Gibi varyant
  Wsstar = GetSatHumRatio (TWetBulb, Basınç)

  üzerinde Hata Git Hata İşleyicisi

  Eğer TWetBulb > TDryBulb Sonra
    Mesaj Kutum ("Islak hazne sıcaklığı kuru hazne sıcaklığının üzerinde")
    Git Hata İşleyicisi
  Son Eğer

  Eğer isIP() Sonra
    Eğer (TWetBulb > = FREEZING_POINT_WATER_IP) Sonra
      HumRatio = ((1093 - 0.556 * TWetBulb) * Wsstar - 0.24 * (TDryBulb - TWetBulb)) / (1093 + 0.444 * TDryBulb - TWetBulb)
    Başka
      HumRatio = ((1220 - 0.04 * TWetBulb) * Wsstar - 0.24 * (TDryBulb - TWetBulb)) / (1220 + 0.444 * TDryBulb - 0.48 * TWetBulb)
    Son Eğer
  Başka
    Eğer (TWetBulb > = FREEZING_POINT_WATER_SI) Sonra
      HumRatio = ((2501 - 2.326 * TWetBulb) * Wsstar - 1.006 * (TDryBulb - TWetBulb)) / (2501 + 1.86 * TDryBulb - 4.186 * TWetBulb)
    Başka
      HumRatio = ((2830 - 0.24 * TWetBulb) * Wsstar - 1.006 * (TDryBulb - TWetBulb)) / (2830 + 1.86 * TDryBulb - 2.1 * TWetBulb)
    Son Eğer
  Son Eğer
  'Geçerlilik kontrolü.
  GetHumRatioFromTWetBulb = max(HumRatio, MIN_HUM_RATIO)
  çıkış Fonksiyon

Hata İşleyicisi:
  GetHumRatioFromTWetBulb = CVERr(xlErrNA)

Son Fonksiyon

Fonksiyon GetHumRatioFromRelHum(ByVal TDryBulb Gibi varyant, ByVal RelHum Gibi varyant, ByVal Basınç Gibi varyant) Gibi varyant
'
Kuru termometre sıcaklığı, bağıl nem ve basınç verilen dönüş nem oranı.
'
'Arglar:
' TDryBulb : °F [IP] veya °C [SI] cinsinden kuru termometre sıcaklığı
' RelHum : [0, 1] aralığında bağıl nem
' Basınç : Psi [IP] veya Pa [SI] cinsinden atmosferik basınç
'
' İadeler:
lb_H2O/lb_Air [IP] veya kg_H2O/kg_Air [SI] cinsinden nem oranı
'
' Referans:
ASHRAE El Kitabı - Temel Bilgiler (2017) bölüm. 1
'
  loş VapPres Gibi varyant

  üzerinde Hata Git Hata İşleyicisi

  Eğer RelHum <  Veya RelHum > 1 Sonra
    Mesaj Kutum ("Bağıl nem [0, 1] aralığının dışında")
    Git Hata İşleyicisi
  Son Eğer

  VapPres = GetVapPresFromRelHum (TDryBulb, RelHum)
  GetHumRatioFromRelHum = GetHumRatioFromVapPres(VapPres, Basınç)
  çıkış Fonksiyon

Hata İşleyicisi:
  GetHumRatioFromRelHum = CVERr(xlErrNA)

Son Fonksiyon

Fonksiyon GetRelHumFromHumRatio(ByVal TDryBulb Gibi varyant, ByVal HumRatio Gibi varyant, ByVal Basınç Gibi varyant) Gibi varyant
'
Kuru termometre sıcaklığı, nem oranı ve basınç verilen bağıl nemi geri getirin.
'
'Arglar:
' TDryBulb : °F [IP] veya °C [SI] cinsinden kuru termometre sıcaklığı
' HumRatio : lb_H2O/lb_Air [IP] veya kg_H2O/kg_Air [SI] cinsinden nem oranı
' Basınç : Psi [IP] veya Pa [SI] cinsinden atmosferik basınç
'
' İadeler:
[0, 1] aralığında bağıl nem
'
' Referans:
ASHRAE El Kitabı - Temel Bilgiler (2017) bölüm. 1
'
  loş VapPres Gibi varyant

  üzerinde Hata Git Hata İşleyicisi

  Eğer HumRatio <  Sonra
    Mesaj Kutum ("Nem oranı negatiftir")
    Git Hata İşleyicisi
  Son Eğer

  VapPres = GetVapPresFromHumRatio(HumRatio, Basınç)
  GetRelHumFromHumRatio = GetRelHumFromVapPres (TDryBulb, VapPres)
  çıkış Fonksiyon

Hata İşleyicisi:
  GetRelHumFromHumRatio = CVERr(xlErrNA)

Son Fonksiyon


Fonksiyon GetHumRatioFromTDewPoint(ByVal TDewPoint Gibi varyant, ByVal Basınç Gibi varyant) Gibi varyant
'
Çiy noktası sıcaklığı ve basıncı verilen dönüş nem oranı.
'
'Arglar:
' TDewPoint : °F [IP] veya °C [SI] cinsinden çiy noktası sıcaklığı
' Basınç : Psi [IP] veya Pa [SI] cinsinden atmosferik basınç
'
' İadeler:
lb_H2O/lb_Air [IP] veya kg_H2O/kg_Air [SI] cinsinden nem oranı
'
' Referans:
ASHRAE El Kitabı - Temel Bilgiler (2017) bölüm. 1 eş 13
'
  loş VapPres Gibi varyant

  üzerinde Hata Git Hata İşleyicisi

  VapPres = GetSatVapPres (TDewPoint)
  GetHumRatioFromTDewPoint = GetHumRatioFromVapPres(VapPres, Basınç)
  çıkış Fonksiyon

Hata İşleyicisi:
  GetHumRatioFromTDewPoint = CVERr(xlErrNA)

Son Fonksiyon

Fonksiyon GetTDewPointFromHumRatio(ByVal TDryBulb Gibi varyant, ByVal HumRatio Gibi varyant, ByVal Basınç Gibi varyant) Gibi varyant
'
Kuru termometre sıcaklığı, nem oranı ve basınç verildiğinde dönüş çiy noktası sıcaklığı.
'
'Arglar:
' TDryBulb : °F [IP] veya °C [SI] cinsinden kuru termometre sıcaklığı
' HumRatio : lb_H2O/lb_Air [IP] veya kg_H2O/kg_Air [SI] cinsinden nem oranı
' Basınç : Psi [IP] veya Pa [SI] cinsinden atmosferik basınç
'
' İadeler:
°F [IP] veya °C [SI] cinsinden çiğlenme noktası sıcaklığı
'
' Referans:
ASHRAE El Kitabı - Temel Bilgiler (2017) bölüm. 1
'
  loş VapPres Gibi varyant

  üzerinde Hata Git Hata İşleyicisi

  Eğer HumRatio <  Sonra
    Mesaj Kutum ("Nem oranı negatiftir")
    Git Hata İşleyicisi
  Son Eğer

  VapPres = GetVapPresFromHumRatio(HumRatio, Basınç)
  GetTDewPointFromHumRatio = GetTDewPointFromVapPres(TDryBulb, VapPres)
  çıkış Fonksiyon

Hata İşleyicisi:
  GetTDewPointFromHumRatio = CVERr(xlErrNA)
Son Fonksiyon


'********************************************** ************************************************ ***
' Nem oranı ve buhar basıncı arasındaki dönüşümler
'********************************************** ************************************************ ***

Fonksiyon GetHumRatioFromVapPres(ByVal VapPres Gibi varyant, ByVal Basınç Gibi varyant) Gibi varyant
'
Su buharı basıncı ve atmosferik basınç verildiğinde dönüş nemi oranı.
'
'Arglar:
' VapPres : Nemli havadaki su buharının Psi [IP] veya Pa [SI] cinsinden kısmi basıncı
' Basınç : Psi [IP] veya Pa [SI] cinsinden atmosferik basınç
'
' İadeler:
lb_H2O/lb_Air [IP] veya kg_H2O/kg_Air [SI] cinsinden nem oranı
'
' Referans:
ASHRAE El Kitabı - Temel Bilgiler (2017) bölüm. 1 eşdeğer 20
'
  loş HumRatio Gibi varyant

  üzerinde Hata Git Hata İşleyicisi

  Eğer VapPres <  Sonra
    Mesaj Kutum ("Nemli havadaki su buharının kısmi basıncı negatiftir")
    Git Hata İşleyicisi
  Son Eğer

  HumRatio = 0.621945 * VapPres / (Basınç - VapPres)
  'Geçerlilik kontrolü.
  GetHumRatioFromVapPres = max(HumRatio, MIN_HUM_RATIO)
  çıkış Fonksiyon

Hata İşleyicisi:
  GetHumRatioFromVapPres = CVERr(xlErrNA)

Son Fonksiyon

Fonksiyon GetVapPresFromHumRatio(ByVal HumRatio Gibi varyant, ByVal Basınç Gibi varyant) Gibi varyant
'
Nem oranı ve basıncı verilen dönüş buhar basıncı.
'
'Arglar:
' HumRatio : lb_H2O/lb_Air [IP] veya kg_H2O/kg_Air [SI] cinsinden nem oranı
' Basınç : Psi [IP] veya Pa [SI] cinsinden atmosferik basınç
'
' İadeler:
Nemli havadaki su buharının Psi [IP] veya Pa [SI] cinsinden kısmi basıncı
'
' Referans:
ASHRAE El Kitabı - Temel Bilgiler (2017) bölüm. 1 eqn 20 pw için çözüldü
'

  loş VapPres Gibi varyant, BoundedHumRatio Gibi varyant

  üzerinde Hata Git Hata İşleyicisi

  Eğer HumRatio <  Sonra
    Mesaj Kutum ("Nem oranı negatiftir")
    Git Hata İşleyicisi
  Son Eğer
  BoundedHumRatio = max(HumRatio, MIN_HUM_RATIO)

  VapPres = Basınç * BoundedHumRatio / (0.621945 + BoundedHumRatio)
  GetVapPresFromHumRatio = VapPres
  çıkış Fonksiyon

Hata İşleyicisi:
  GetVapPresFromHumRatio = CVERr(xlErrNA)

Son Fonksiyon


'********************************************** ************************************************ ***
' Nem oranı ve özgül nem arasındaki dönüşümler
'********************************************** ************************************************ ***

Fonksiyon GetSpecificHumFromHumRatio(ByVal HumRatio Gibi varyant) Gibi varyant
'
Nem oranından (karıştırma oranı olarak da bilinir) özgül nemi döndürür.
'
'Arglar:
' HumRatio : lb_H₂O lb_Dry_Air⁻¹ [IP] veya kg_H₂O kg_Dry_Air⁻¹ [SI] cinsinden nem oranı
'
' İadeler:
' lb_H₂O lb_Air⁻¹ [IP] veya kg_H₂O kg_Air⁻¹ [SI] cinsinden özgül nem
'
' Referans:
ASHRAE El Kitabı - Temel Bilgiler (2017) bölüm. 1 eş 9b
'
'
  loş SpecificHum Gibi varyant

  üzerinde Hata Git Hata İşleyicisi

  Eğer (HumRatio < ) Sonra
    Mesaj Kutum ("Nem oranı negatiftir")
    Git Hata İşleyicisi
  Son Eğer

  SpecificHum = HumRatio / (1.0 + HumRatio)
  GetSpecificHumFromHumRatio = SpecificHum
  çıkış Fonksiyon

Hata İşleyicisi:
  GetSpecificHumFromHumRatio = CVERr(xlErrNA)

Son Fonksiyon

Fonksiyon GetHumRatioFromSpecificHum(ByVal SpecificHum Gibi varyant) Gibi varyant
'
Nem oranını (aka karışım oranı) özgül nemden döndürün.
'
'Arglar:
' SpecificHum : lb_H₂O lb_Air⁻¹ [IP] veya kg_H₂O kg_Air⁻¹ [SI] cinsinden Özgül Nem
'
' İadeler:
lb_H₂O lb_Dry_Air⁻¹ [IP] veya kg_H₂O kg_Dry_Air⁻¹ [SI] cinsinden nem oranı
'
' Referans:
ASHRAE El Kitabı - Temel Bilgiler (2017) bölüm. 1 eqn 9b (nem oranı için çözüldü)
'
'
  loş HumRatio olarak varyant

  üzerinde Hata Git Hata İşleyicisi

  Eğer (SpesifikHum <  Veya SpecificHum > = 1) Sonra
    Mesaj Kutum ("Özgül nem [0, 1[" aralığının dışında)
    Git Hata İşleyicisi
  Son Eğer

    HumRatio = SpecificHum / (1.0 - SpecificHum)
    GetHumRatioFromSpecificHum = max(HumRatio, MIN_HUM_RATIO)
  çıkış Fonksiyon

Hata İşleyicisi:
  GetHumRatioFromSpecificHum = CVERr(xlErrNA)

Son Fonksiyon


'********************************************** ************************************************ ***
' Kuru Hava Hesapları
'********************************************** ************************************************ ***

Fonksiyon GetDryAirEnthalpy(ByVal TDryBulb Gibi varyant) Gibi varyant
'
Kuru termometre sıcaklığı verilen kuru hava entalpisini geri getirin.
'
'Arglar:
' TDryBulb : °F [IP] veya °C [SI] cinsinden kuru termometre sıcaklığı
'
' İadeler:
' Btu/lb [IP] veya J/kg [SI] cinsinden kuru hava entalpisi
'
' Referans:
ASHRAE El Kitabı - Temel Bilgiler (2017) bölüm. 1 eş 28
'
  üzerinde Hata Git Hata İşleyicisi

  Eğer (isIP()) Sonra
    GetDryAirEnthalpy = 0.24 * TDryBulb
  Başka
    GetDryAirEnthalpy = 1006 * TDryBulb
  Son Eğer
  çıkış Fonksiyon

Hata İşleyicisi:
  GetDryAirEnthalpy = CVERr(xlErrNA)

Son Fonksiyon

Fonksiyon GetDryAirDensity(ByVal TDryBulb Gibi varyant, ByVal Basınç Gibi varyant) Gibi varyant
'
Kuru termometre sıcaklığı ve basıncı verilen kuru hava yoğunluğunu geri getirin.
'
'Arglar:
' TDryBulb : °F [IP] veya °C [SI] cinsinden kuru termometre sıcaklığı
' Basınç : Psi [IP] veya Pa [SI] cinsinden atmosferik basınç
'
' İadeler:
lb/ft³ [IP] veya kg/m³ [SI] cinsinden kuru hava yoğunluğu
'
' Referans:
ASHRAE El Kitabı - Temel Bilgiler (2017) bölüm. 1
'
Notlar:
Kuru hava için mükemmel gaz ilişkisi için Denklem 14.
Evrensel gaz sabiti için Denklem 1.
IP'deki 144 faktörü, Psi = lb/in²'nin lb/ft²'ye dönüştürülmesi içindir.
'
  üzerinde Hata Git Hata İşleyicisi

  Eğer (isIP()) Sonra
    GetDryAirDensity = (144 * Basınç) / R_DA_IP / GetTRankineFromTFahrenheit(TDryBulb)
  Başka
    GetDryAirDensity = Basınç / R_DA_SI / GetTKelvinFromTCelsius(TDryBulb)
  Son Eğer
  çıkış Fonksiyon

Hata İşleyicisi:
  GetDryAirDensity = CVERr(xlErrNA)

Son Fonksiyon

Fonksiyon GetDryAirVolume(ByVal TDryBulb Gibi varyant, ByVal Basınç Gibi varyant) Gibi varyant
'
Kuru termometre sıcaklığı ve basıncı verilen dönüş kuru hava hacmi.
'
'Arglar:
' TDryBulb : °F [IP] veya °C [SI] cinsinden kuru termometre sıcaklığı
' Basınç : Psi [IP] veya Pa [SI] cinsinden atmosferik basınç
'
' İadeler:
' Ft³/lb [IP] veya m³/kg [SI] cinsinden kuru hava hacmi
'
' Referans:
ASHRAE El Kitabı - Temel Bilgiler (2017) bölüm. 1
'
Notlar:
Kuru hava için mükemmel gaz ilişkisi için Denklem 14.
Evrensel gaz sabiti için Denklem 1.
IP'deki 144 faktörü, Psi = lb/in²'nin lb/ft²'ye dönüştürülmesi içindir.
'
  üzerinde Hata Git Hata İşleyicisi

  Eğer (isIP()) Sonra
    GetDryAirVolume = GetTRankineFromTFahrenheit(TDryBulb) * R_DA_IP / (144 * Basınç)
  Başka:
    GetDryAirVolume = GetTKelvinFromTCelsius(TDryBulb) * R_DA_SI / Basınç
  Son Eğer
  çıkış Fonksiyon

Hata İşleyicisi:
  GetDryAirVolume = CVERr(xlErrNA)

Son Fonksiyon

Fonksiyon GetTDryBulbFromEnthalpyAndHumRatio(ByVal MoistAirEnthalpy Gibi varyant, ByVal HumRatio Gibi varyant) Gibi varyant
'
' Entalpi ve nem oranından kuru termometre sıcaklığını geri getirin.
'
'
'Arglar:
' MoistAirEnthalpy : Btu lb⁻¹ [IP] veya J kg⁻¹ cinsinden nemli hava entalpisi
' HumRatio : lb_H₂O lb_Air⁻¹ [IP] veya kg_H₂O kg_Air⁻¹ [SI] cinsinden nem oranı
'
' İadeler:
°F [IP] veya °C [SI] cinsinden kuru termometre sıcaklığı
'
' Referans:
ASHRAE El Kitabı - Temel Bilgiler (2017) bölüm. 1 eş 30
'
Notlar:
Sıcaklık için yeniden düzenlenmiş "GetMoistAirEnthalpy" işlevine dayalıdır.
'

  üzerinde Hata Git Hata İşleyicisi

  Eğer HumRatio <  Sonra
    Mesaj Kutum ("Nem oranı negatiftir")
    Git Hata İşleyicisi
  Son Eğer

  Eğer (isIP()) Sonra
    GetTDryBulbFromEnthalpyAndHumRatio = (MoistAirEnthalpy - 1061.0 * HumRatio) / (0.24 + 0.444 * HumRatio)
  Başka:
    GetTDryBulbFromEnthalpyAndHumRatio = (MoistAirEnthalpy / 1000.0 - 2501.0 * HumRatio) / (1.006 + 1.86 * HumRatio)
  Son Eğer
  çıkış Fonksiyon

Hata İşleyicisi:
  GetTDryBulbFromEnthalpyAndHumRatio = CVERr(xlErrNA)

Son Fonksiyon

Fonksiyon GetHumRatioFromEnthalpyAndTDryBulb(ByVal MoistAirEnthalpy Gibi varyant, ByVal TDryBulb Gibi varyant) Gibi varyant
'
Entalpi ve kuru termometre sıcaklığından dönüş nemi oranı.
'
'
'Arglar:
' MoistAirEnthalpy : Btu lb⁻¹ [IP] veya J kg⁻¹ cinsinden nemli hava entalpisi
' TDryBulb : °F [IP] veya °C [SI] cinsinden kuru termometre sıcaklığı
'
' İadeler:
lb_H₂O lb_Air⁻¹ [IP] veya kg_H₂O kg_Air⁻¹ [SI] cinsinden nem oranı
'
' Referans:
ASHRAE El Kitabı - Temel Bilgiler (2017) bölüm. 1 eş 30
'
Notlar:
'GetMoistAirEnthalpy' işlevine göre, nem oranı için yeniden düzenlenmiştir.
'

  üzerinde Hata Git Hata İşleyicisi

  Eğer (isIP()) Sonra
    GetHumRatioFromEnthalpyAndTDryBulb = (MoistAirEnthalpy - 0.24 * TDryBulb) / (1061.0 + 0.444 * TDryBulb)
  Başka:
    GetHumRatioFromEnthalpyAndTDryBulb = (MoistAirEnthalpy / 1000.0 - 1.006 * TDryBulb) / (2501.0 + 1.86 * TDryBulb)
  Son Eğer
  çıkış Fonksiyon

Hata İşleyicisi:
  GetHumRatioFromEnthalpyAndTDryBulb = CVERr(xlErrNA)

Son Fonksiyon


'********************************************** ************************************************ ***
' Doymuş Hava Hesapları
'********************************************** ************************************************ ***

Fonksiyon GetSatVapPres(ByVal TDryBulb Gibi varyant) Gibi varyant
'
Kuru termometre sıcaklığında verilen doygunluk buhar basıncını geri getirin.
'
'Arglar:
' TDryBulb : °F [IP] veya °C [SI] cinsinden kuru termometre sıcaklığı
'
' İadeler:
Psi [IP] veya Pa [SI] cinsinden doymuş havanın buhar basıncı
'
' Referans:
ASHRAE El Kitabı - Temel Bilgiler (2017) bölüm. 1 eş 5 & 6
Önemli not: ASHRAE formülleri donma noktasının üstünde ve altında tanımlanmıştır ancak
' donma noktasında bir süreksizlik. Bu, ASHRAE açısından küçük bir yanlışlıktır: formüller
', suyun üçlü noktasının üstünde ve altında tanımlanmalıdır (donma noktası değil), bu durumda
' süreksizlik ortadan kalkar. Suyun üçlü noktasını kullanmak önemlidir, aksi takdirde işlev görür
Mevcut işlevi tersine çeviren GetTDewPointFromVapPres, etrafında düzgün bir şekilde yakınsamıyor
' donma noktası.
'
  loş LnPws Gibi varyant, T Gibi varyant

  üzerinde Hata Git Hata İşleyicisi

  Eğer (isIP()) Sonra
    Eğer (TDryBulb < -148 Veya TDryBulb > 392) Sonra
      Mesaj Kutum ("Kuru hazne sıcaklığı [-148, 392] °F aralığının dışında")
      Git Hata İşleyicisi
    Son Eğer

    T = GetTRankineFromTFahrenheit(TDryBulb)

    Eğer (TDryBulb <= TRIPLE_POINT_WATER_IP) Sonra
      LnPws = (-10214.165 / T - 4.8932428 - 0.0053765794 * T + 0.00000019202377 * T ^ 2 _
            + 3.5575832E-10 * T ^ 3 - 9.0344688E-14 * T ^ 4 + 4.1635019 * Günlük(T))
    Başka
      LnPws = -10440.397 / T - 11.29465 - 0.027022355 * T + 0.00001289036 * T ^ 2 _
            - 2.4780681E-09 * T ^ 3 + 6.5459673 * Günlük(T)
    Son Eğer

  Başka
    Eğer (TDryBulb < -100 Veya TDryBulb > 200) Sonra
      Mesaj Kutum ("Kuru termometre sıcaklığı [-100, 200] °C aralığının dışında")
      Git Hata İşleyicisi
    Son Eğer

    T = GetTKelvinFromTCelsius(TDryBulb)

    Eğer (TDryBulb <= TRIPLE_POINT_WATER_SI) Sonra
        LnPws = -5674.5359 / T + 6.3925247 - 0.009677843 * T + 0.00000062215701 * T ^ 2 _
              + 2.0747825E-09 * T ^ 3 - 9.484024E-13 * T ^ 4 + 4.1635019 * Günlük(T)
    Başka
        LnPws = -5800.2206 / T + 1.3914993 - 0.048640239 * T + 0.000041764768 * T ^ 2 _
              - 0.000000014452093 * T ^ 3 + 6.5459673 * Günlük(T)
    Son Eğer
  Son Eğer

  GetSatVapPres = Uzm(LnPws)
  çıkış Fonksiyon

Hata İşleyicisi:
  GetSatVapPres = CVERr(xlErrNA)

Son Fonksiyon

Fonksiyon GetSatHumRatio(ByVal TDryBulb Gibi varyant, ByVal Basınç Gibi varyant) Gibi varyant
'
Kuru termometre sıcaklığı ve basıncı verilen doymuş havanın dönüş nem oranı.
'
'Arglar:
' TDryBulb : °F [IP] veya °C [SI] cinsinden kuru termometre sıcaklığı
' Basınç : Psi [IP] veya Pa [SI] cinsinden atmosferik basınç
'
' İadeler:
' lb_H2O/lb_Air [IP] veya kg_H2O/kg_Air [SI] cinsinden doymuş havanın nem oranı
'
' Referans:
ASHRAE El Kitabı - Temel Bilgiler (2017) bölüm. 1 eqn 36, W için çözüldü
'
  loş SatVaporPres Gibi varyant, SatHumRatio Gibi varyant

  üzerinde Hata Git Hata İşleyicisi

  SatVaporPres = GetSatVapPres (TDryBulb)
  SatHumRatio = 0.621945 * SatVaporPres / (Basınç - SatVaporPres)
  GetSatHumRatio = max(SatHumRatio, MIN_HUM_RATIO)
  çıkış Fonksiyon

Hata İşleyicisi:
  GetSatHumRatio = CVERr(xlErrNA)

Son Fonksiyon

Fonksiyon GetSatAirEnthalpy(ByVal TDryBulb Gibi varyant, ByVal Basınç Gibi varyant) Gibi varyant
'
Kuru termometre sıcaklığı ve basıncı verilen doymuş hava entalpisini geri getirin.
'
'Arglar:
TdryBulb: °F [IP] veya °C [SI] cinsinden kuru termometre sıcaklığı
' Basınç: Psi [IP] veya Pa [SI] cinsinden atmosferik basınç
'
' İadeler:
Btu/lb [IP] veya J/kg [SI] cinsinden doymuş hava entalpisi
'
' Referans:
ASHRAE El Kitabı - Temel Bilgiler (2017) bölüm. 1
'
  üzerinde Hata Git Hata İşleyicisi

  GetSatAirEnthalpy = GetMoistAirEnthalpy (TDryBulb, GetSatHumRatio (TDryBulb, Basınç))
  çıkış Fonksiyon

Hata İşleyicisi:
  GetSatAirEnthalpy = CVERr(xlErrNA)

Son Fonksiyon


'********************************************** ************************************************ ***
Nemli Hava Hesapları
'********************************************** ************************************************ ***


Fonksiyon GetVaporPressureDeficit(ByVal TDryBulb Gibi varyant, ByVal HumRatio Gibi varyant, ByVal Basınç Gibi varyant) Gibi varyant
'
Kuru termometre sıcaklığı, nem oranı ve basınç verildiğinde Dönüş Buhar basıncı açığı.
'
'Arglar:
' TDryBulb : °F [IP] veya °C [SI] cinsinden kuru termometre sıcaklığı
' HumRatio : lb_H2O/lb_Air [IP] veya kg_H2O/kg_Air [SI] cinsinden nem oranı
' Basınç : Psi [IP] veya Pa [SI] cinsinden atmosferik basınç
'
' İadeler:
Psi [IP] veya Pa [SI] cinsinden buhar basıncı açığı
'
' Referans:
' Oke (1987) eqn 2.13a
'
  loş RelHum Gibi varyant

  üzerinde Hata Git Hata İşleyicisi

  Eğer HumRatio <  Sonra
    Mesaj Kutum ("Nem oranı negatiftir")
    Git Hata İşleyicisi
  Son Eğer

  RelHum = GetRelHumFromHumRatio(TDryBulb, HumRatio, Basınç)
  GetVaporPressureDeficit = GetSatVapPres (TDryBulb) * (1 - RelHum)
  çıkış Fonksiyon

Hata İşleyicisi:
  GetVaporPressureDeficit = CVERr(xlErrNA)

Son Fonksiyon

Fonksiyon GetDegreeOfSaturation(ByVal TDryBulb Gibi varyant, ByVal HumRatio Gibi varyant, ByVal Basınç Gibi varyant) Gibi varyant
'
' Doygunluk derecesini (yani havanın nem oranı / doygunluktaki havanın nem oranı) döndürür.
kuru termometre sıcaklığı, nem oranı ve atmosferik basınç verildiğinde aynı sıcaklık ve basınçta).
'
'Arglar:
' TDryBulb : °F [IP] veya °C [SI] cinsinden kuru termometre sıcaklığı
' HumRatio : lb_H2O/lb_Air [IP] veya kg_H2O/kg_Air [SI] cinsinden nem oranı
' Basınç : Psi [IP] veya Pa [SI] cinsinden atmosferik basınç
'
' İadeler:
Keyfi birimde doygunluk derecesi
'
' Referans:
ASHRAE El Kitabı - Temel Bilgiler (2009) böl. 1 eş 12
'
Notlar:
Bu tanım 2017 El Kitabında yoktur. Bunun yerine 2009 sürümünü kullanma.
'
  loş BoundedHumRatio Gibi varyant

  üzerinde Hata Git Hata İşleyicisi

  Eğer HumRatio <  Sonra
    Mesaj Kutum ("Nem oranı negatiftir")
    Git Hata İşleyicisi
  Son Eğer
  BoundedHumRatio = max(HumRatio, MIN_HUM_RATIO)

  GetDegreeOfSaturation = BoundedHumRatio / GetSatHumRatio (TDryBulb, Basınç)
  çıkış Fonksiyon

Hata İşleyicisi:
  GetDegreeOfSaturation = CVERr(xlErrNA)

Son Fonksiyon

Fonksiyon GetMoistAirEnthalpy(ByVal TDryBulb Gibi varyant, ByVal HumRatio Gibi varyant) Gibi varyant
'
Kuru termometre sıcaklığı ve nem oranı verilen nemli hava entalpisini geri getirin.
'
'Arglar:
' TDryBulb : °F [IP] veya °C [SI] cinsinden kuru termometre sıcaklığı
' HumRatio : lb_H2O/lb_Air [IP] veya kg_H2O/kg_Air [SI] cinsinden nem oranı
'
' İadeler:
' Btu/lb [IP] veya J/kg cinsinden nemli hava entalpisi
'
' Referans:
ASHRAE El Kitabı - Temel Bilgiler (2017) bölüm. 1 eş 30
'