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:
- Ç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.
- 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() Sİ = Oto() IP = UnitSystem.IP Sİ = 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> Sİ = 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 :: Sİ 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 :: Sİ = 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 == Sİ .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 == Sİ) 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 Sİ = 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 ' |