Et tilsynelatende enkelt sideprosjekt som endte i et dypdykk i damptabellenes verden.
Det begynte med et aldri så lite sideprosjekt for å se hvor kapabel den nylig lanserte AI chat bot`en ChatGPT var. En enkel ide om en mettet damp-kalkulator for konvertering av temp <-> trykk. Det er ikke noe nytt med en slik kalkulator, og det finnes mange varianter om man søker på nett. Uansett virket det som en enkel oppgave for ChatGPT som allerede hadde vist seg ganske nyttig til enkelte programeringsoppgaver.

Første spørsmål til AI`en:
I need a javascript conversion script where the input is temp in Celsius and output should be pressure in bar absolute. The equation has to calculate the saturated steam pressure for the given temperature.
Svaret jeg fikk var følgende:
function celsiusToBarAbsolute(tempCelsius) {
// Antoine equation coefficients for water
const A = 8.07131;
const B = 1730.63;
const C = 233.426;
// Calculate the saturated vapor pressure in mmHg (torr)
const pressureTorr = Math.pow(10, A - (B / (tempCelsius + C)));
// Convert the pressure from torr to bar
const pressureBar = pressureTorr * 0.00133322;
return pressureBar;
}
Ved testing og sammenligning mot tabell for mettet damp var det klart at denne ligningen ikke ga meg korrekte verdier. Ved 135C skilte det omtrent 20mbar mellom forventet verdi og hva ligningen ChatGPT ga som resultat.
Siden den allerede hadde skrevet hvilken ligning den tok som utgangspunkt i første utkast, altså «Antoine equation» ba jeg om å få en funksjon som brukte en annen ligning. Da kom den opp med et forslag om å bruke «Wagner equation».
Løsningen jeg fikk var:
function celsiusToBarAbsoluteWagner(tempCelsius) { // Wagner equation coefficients for water const Tc = 647.096; // Critical temperature (K) const Pc = 22064; // Critical pressure (kPa) const a1 = -7.85951783; const a2 = 1.84408259; const a3 = -11.7866497; const a4 = 22.6807411; const a5 = -15.9618719; const a6 = 1.80122502; // Convert Celsius to Kelvin const tempKelvin = tempCelsius + 273.15; // Calculate the reduced temperature const tau = 1 - (tempKelvin / Tc); // Calculate the saturated vapor pressure in kPa const pressureKpa = Pc * Math.exp((Tc / tempKelvin) * (a1 * tau + a2 * Math.pow(tau, 1.5) + a3 * Math.pow(tau, 3) + a4 * Math.pow(tau, 3.5) + a5 * Math.pow(tau, 4) + a6 * Math.pow(tau, 7.5))); // Convert the pressure from kPa to bar const pressureBar = pressureKpa * 0.01; return pressureBar; }