🔧 Gereksinimler
- PHP 8.2 veya üstü
- JSON extension (varsayılan olarak etkin)
📦 Kurulum
Dosyaları projenize kopyalayın:
psychrolib_php/
├── src/
│ ├── UnitSystem.php
│ ├── PsychrometricValue.php
│ ├── Psychrometrics.php
│ └── PsyLibApi.php
├── api.php
└── README_TR.md
🚀 Hızlı Başlangıç
Temel Kullanım
<?php
require_once 'src/UnitSystem.php';
require_once 'src/PsychrometricValue.php';
require_once 'src/Psychrometrics.php';
use PsyLib\Psychrometrics;
use PsyLib\UnitSystem;
// SI birimleri ile psikrometrik hesaplayıcı oluştur
$psy = new Psychrometrics(UnitSystem::SI);
// Kuru termometre sıcaklığı: 25°C
// Bağıl nem: %50
// Basınç: 101325 Pa (deniz seviyesi)
$tDryBulb = 25.0;
$relHum = 0.50;
$pressure = 101325.0;
// Tüm psikrometrik değerleri hesapla
$result = $psy->calcPsychrometricsFromRelHum($tDryBulb, $relHum, $pressure);
echo "Kuru Termometre Sıcaklığı: " . $result->tDryBulb . " °C\n";
echo "Yaş Termometre Sıcaklığı: " . $result->tWetBulb . " °C\n";
echo "Çiy Noktası Sıcaklığı: " . $result->tDewPoint . " °C\n";
echo "Nem Oranı: " . $result->humRatio . " kg/kg\n";
echo "Entalpi: " . $result->moistAirEnthalpy . " J/kg\n";
echo "Özgül Hacim: " . $result->moistAirVolume . " m³/kg\n";
Elektrikli Isıtıcı API Kullanımı
<?php
require_once 'src/UnitSystem.php';
require_once 'src/PsychrometricValue.php';
require_once 'src/Psychrometrics.php';
require_once 'src/PsyLibApi.php';
use PsyLib\PsyLibApi;
use PsyLib\UnitSystem;
$api = new PsyLibApi(UnitSystem::SI);
$input = [
'tAin' => 20.0, // Giriş sıcaklığı (°C)
'electric_heater_power' => 5.0, // Isıtıcı gücü (kW)
'rHAin' => 0.50, // Giriş bağıl nemi (0-1)
'flow' => 1000.0 // Hava debisi (m³/h)
];
$results = $api->getResults($input);
echo "Giriş Sıcaklığı: " . $results['tAin'] . " °C\n";
echo "Çıkış Sıcaklığı: " . $results['tAout'] . " °C\n";
echo "Giriş Bağıl Nem: " . ($results['rHAin'] * 100) . " %\n";
echo "Çıkış Bağıl Nem: " . ($results['rHAout'] * 100) . " %\n";
📏 Birim Sistemleri
Kütüphane iki birim sistemini destekler:
SI (Metrik Sistem)
- Sıcaklık: °C (Celsius)
- Basınç: Pa (Pascal)
- Kütle: kg (kilogram)
- Hacim: m³ (metreküp)
- Entalpi: J/kg (Joule/kilogram)
IP (Imperial/ABD Sistemi)
- Sıcaklık: °F (Fahrenheit)
- Basınç: Psi (pound/inç²)
- Kütle: lb (pound)
- Hacim: ft³ (kübik feet)
- Entalpi: Btu/lb
use PsyLib\Psychrometrics;
use PsyLib\UnitSystem;
// SI birimleri
$psySI = new Psychrometrics(UnitSystem::SI);
// Imperial birimleri
$psyIP = new Psychrometrics(UnitSystem::IP);
// Birim sistemini değiştir
$psySI->setUnitSystem(UnitSystem::IP);
🔧 Metodlar
Sıcaklık Dönüşümleri
| Metod |
Açıklama |
getTRankineFromTFahrenheit(float $tF) |
Fahrenheit → Rankine |
getTFahrenheitFromTRankine(float $tR) |
Rankine → Fahrenheit |
getTKelvinFromTCelsius(float $tC) |
Celsius → Kelvin |
getTCelsiusFromTKelvin(float $tK) |
Kelvin → Celsius |
Yaş Termometre Sıcaklığı Hesaplamaları
| Metod |
Açıklama |
getTWetBulbFromTDewPoint($tDryBulb, $tDewPoint, $pressure) |
Çiy noktasından yaş termometre |
getTWetBulbFromRelHum($tDryBulb, $relHum, $pressure) |
Bağıl nemden yaş termometre |
getTWetBulbFromHumRatio($tDryBulb, $humRatio, $pressure) |
Nem oranından yaş termometre |
Bağıl Nem Hesaplamaları
| Metod |
Açıklama |
getRelHumFromTDewPoint($tDryBulb, $tDewPoint) |
Çiy noktasından bağıl nem |
getRelHumFromTWetBulb($tDryBulb, $tWetBulb, $pressure) |
Yaş termometreden bağıl nem |
getRelHumFromHumRatio($tDryBulb, $humRatio, $pressure) |
Nem oranından bağıl nem |
getRelHumFromVapPres($tDryBulb, $vapPres) |
Buhar basıncından bağıl nem |
Çiy Noktası Hesaplamaları
| Metod |
Açıklama |
getTDewPointFromRelHum($tDryBulb, $relHum) |
Bağıl nemden çiy noktası |
getTDewPointFromTWetBulb($tDryBulb, $tWetBulb, $pressure) |
Yaş termometreden çiy noktası |
getTDewPointFromHumRatio($tDryBulb, $humRatio, $pressure) |
Nem oranından çiy noktası |
getTDewPointFromVapPres($tDryBulb, $vapPres) |
Buhar basıncından çiy noktası |
Nem Oranı Hesaplamaları
| Metod |
Açıklama |
getHumRatioFromTWetBulb($tDryBulb, $tWetBulb, $pressure) |
Yaş termometreden nem oranı |
getHumRatioFromRelHum($tDryBulb, $relHum, $pressure) |
Bağıl nemden nem oranı |
getHumRatioFromTDewPoint($tDewPoint, $pressure) |
Çiy noktasından nem oranı |
getHumRatioFromVapPres($vapPres, $pressure) |
Buhar basıncından nem oranı |
getHumRatioFromSpecificHum($specificHum) |
Özgül nemden nem oranı |
getHumRatioFromEnthalpyAndTDryBulb($enthalpy, $tDryBulb) |
Entalpi ve sıcaklıktan nem oranı |
Buhar Basıncı Hesaplamaları
| Metod |
Açıklama |
getVapPresFromRelHum($tDryBulb, $relHum) |
Bağıl nemden buhar basıncı |
getVapPresFromTDewPoint($tDewPoint) |
Çiy noktasından buhar basıncı |
getVapPresFromHumRatio($humRatio, $pressure) |
Nem oranından buhar basıncı |
getSatVapPres($tDryBulb) |
Doymuş buhar basıncı |
Entalpi Hesaplamaları
| Metod |
Açıklama |
getDryAirEnthalpy($tDryBulb) |
Kuru hava entalpisi |
getMoistAirEnthalpy($tDryBulb, $humRatio) |
Nemli hava entalpisi |
getSatAirEnthalpy($tDryBulb, $pressure) |
Doymuş hava entalpisi |
Hacim ve Yoğunluk Hesaplamaları
| Metod |
Açıklama |
getDryAirVolume($tDryBulb, $pressure) |
Kuru hava hacmi |
getDryAirDensity($tDryBulb, $pressure) |
Kuru hava yoğunluğu |
getMoistAirVolume($tDryBulb, $humRatio, $pressure) |
Nemli hava özgül hacmi |
getMoistAirDensity($tDryBulb, $humRatio, $pressure) |
Nemli hava yoğunluğu |
Standart Atmosfer Hesaplamaları
| Metod |
Açıklama |
getStandardAtmPressure($altitude) |
Standart atmosfer basıncı |
getStandardAtmTemperature($altitude) |
Standart atmosfer sıcaklığı |
getSeaLevelPressure($stnPressure, $altitude, $tDryBulb) |
Deniz seviyesi basıncı |
getStationPressure($seaLevelPressure, $altitude, $tDryBulb) |
İstasyon basıncı |
Toplu Hesaplama Metodları
| Metod |
Açıklama |
calcPsychrometricsFromTWetBulb($tDryBulb, $tWetBulb, $pressure) |
Yaş termometreden tüm değerler |
calcPsychrometricsFromTDewPoint($tDryBulb, $tDewPoint, $pressure) |
Çiy noktasından tüm değerler |
calcPsychrometricsFromRelHum($tDryBulb, $relHum, $pressure) |
Bağıl nemden tüm değerler |
🌐 REST API Kullanımı
Endpoint
POST /api.php
Content-Type: application/json
İstek Gövdesi
{
"tAin": 20.0,
"electric_heater_power": 5.0,
"rHAin": 0.50,
"flow": 1000.0,
"unitSystem": "SI"
}
| Parametre |
Tip |
Açıklama |
tAin |
float |
Giriş kuru termometre sıcaklığı (°C veya °F) |
electric_heater_power |
float |
Elektrikli ısıtıcı gücü (kW) |
rHAin |
float |
Giriş bağıl nemi (0-1 arası) |
flow |
float |
Hava debisi (m³/h veya ft³/min) |
unitSystem |
string |
Birim sistemi: "SI" veya "IP" (opsiyonel, varsayılan: "SI") |
Başarılı Yanıt
{
"success": true,
"data": {
"tAout": 33.89,
"rHAout": 0.215,
"outTWetBulb": 18.23,
"outPressure": 101325,
"outHumRatio": 0.00729,
"outTDewPoint": 10.15,
"outRelHum": 0.215,
"outVapPres": 1171.23,
"outMoistAirEnthalpy": 52456.78,
"outMoistAirVolume": 0.876,
"outDegreeOfSaturation": 0.213,
"tAin": 20.0,
"rHAin": 0.50,
"inTWetBulb": 13.67,
"inPressure": 101325,
"inHumRatio": 0.00729,
"inTDewPoint": 10.15,
"inRelHum": 0.50,
"inVapPres": 1171.23,
"inMoistAirEnthalpy": 38567.89,
"inMoistAirVolume": 0.839,
"inDegreeOfSaturation": 0.498
},
"unitSystem": "Metric (SI)"
}
Hata Yanıtı
{
"success": false,
"error": "Hata mesajı"
}
cURL Örneği
curl -X POST http://localhost/api.php \
-H "Content-Type: application/json" \
-d '{
"tAin": 20.0,
"electric_heater_power": 5.0,
"rHAin": 0.50,
"flow": 1000.0
}'
💡 Örnek Hesaplamalar
Örnek 1: Yaş Termometre Sıcaklığı Hesaplama
$psy = new Psychrometrics(UnitSystem::SI);
// 25°C, %60 bağıl nem, deniz seviyesi
$tWetBulb = $psy->getTWetBulbFromRelHum(25.0, 0.60, 101325.0);
echo "Yaş Termometre: {$tWetBulb} °C\n"; // ~19.4 °C
Örnek 2: Çiy Noktası Hesaplama
$psy = new Psychrometrics(UnitSystem::SI);
// 30°C, %70 bağıl nem
$tDewPoint = $psy->getTDewPointFromRelHum(30.0, 0.70);
echo "Çiy Noktası: {$tDewPoint} °C\n"; // ~23.9 °C
Örnek 3: Nem Oranı Hesaplama
$psy = new Psychrometrics(UnitSystem::SI);
// 22°C, %55 bağıl nem, 101325 Pa
$humRatio = $psy->getHumRatioFromRelHum(22.0, 0.55, 101325.0);
echo "Nem Oranı: {$humRatio} kg/kg\n"; // ~0.00912 kg/kg
Örnek 4: Yüksekliğe Göre Basınç
$psy = new Psychrometrics(UnitSystem::SI);
// 1000 metre yükseklikte standart atmosfer basıncı
$pressure = $psy->getStandardAtmPressure(1000.0);
echo "Basınç: {$pressure} Pa\n"; // ~89875 Pa
Örnek 5: HVAC Sistemi Analizi
$psy = new Psychrometrics(UnitSystem::SI);
$pressure = 101325.0;
// Oda koşulları: 24°C, %50 bağıl nem
$room = $psy->calcPsychrometricsFromRelHum(24.0, 0.50, $pressure);
// Dış hava: 35°C, %80 bağıl nem
$outdoor = $psy->calcPsychrometricsFromRelHum(35.0, 0.80, $pressure);
echo "=== Oda Havası ===\n";
echo "Entalpi: " . round($room->moistAirEnthalpy / 1000, 2) . " kJ/kg\n";
echo "Özgül Hacim: " . round($room->moistAirVolume, 4) . " m³/kg\n";
echo "\n=== Dış Hava ===\n";
echo "Entalpi: " . round($outdoor->moistAirEnthalpy / 1000, 2) . " kJ/kg\n";
echo "Özgül Hacim: " . round($outdoor->moistAirVolume, 4) . " m³/kg\n";
// Entalpi farkı (soğutma yükü hesabı için)
$enthalpyDiff = $outdoor->moistAirEnthalpy - $room->moistAirEnthalpy;
echo "\nEntalpi Farkı: " . round($enthalpyDiff / 1000, 2) . " kJ/kg\n";
📚 Psikrometrik Terimler Sözlüğü
| Terim |
İngilizce |
Birim |
Açıklama |
| Kuru Termometre Sıcaklığı |
Dry-Bulb Temperature |
°C / °F |
Normal termometre ile ölçülen hava sıcaklığı |
| Yaş Termometre Sıcaklığı |
Wet-Bulb Temperature |
°C / °F |
Islak fitilli termometre ile ölçülen sıcaklık |
| Çiy Noktası Sıcaklığı |
Dew-Point Temperature |
°C / °F |
Havanın doygunluğa ulaştığı sıcaklık |
| Bağıl Nem |
Relative Humidity |
% |
Havadaki nem miktarının doygunluk değerine oranı |
| Nem Oranı |
Humidity Ratio |
kg/kg |
Kuru havadaki su buharı kütlesi oranı |
| Özgül Nem |
Specific Humidity |
kg/kg |
Toplam havadaki su buharı kütlesi oranı |
| Entalpi |
Enthalpy |
J/kg |
Havanın toplam ısı içeriği |
| Özgül Hacim |
Specific Volume |
m³/kg |
Birim kütle başına hacim |
| Buhar Basıncı |
Vapor Pressure |
Pa |
Su buharının kısmi basıncı |
| Doygunluk Derecesi |
Degree of Saturation |
- |
Nem oranının doymuş nem oranına oranı |
⚠️ Hata Yönetimi
Kütüphane, geçersiz giriş değerleri için InvalidArgumentException fırlatır:
try {
$psy = new Psychrometrics(UnitSystem::SI);
// Geçersiz bağıl nem değeri
$result = $psy->getHumRatioFromRelHum(25.0, 1.5, 101325.0);
} catch (InvalidArgumentException $e) {
echo "Hata: " . $e->getMessage();
// Çıktı: "getHumRatioFromRelHum: Bağıl nem [0,1] aralığı dışında"
}