Detta är en bruksanvisning för hs som används för beräkning av termodynamiska data för vatten och vattenånga.
Funktionsbiblioteket hs (från programbiblioteket CHEEP skrivet Tapio Westerlund) används för beräkning av termodynamiska data för vatten och vattenånga (samma information som i HS-diagrammet). Värdet på två termodynamiska storheter måste anges för att de övriga skall kunna räknas ut. Storheterna och den enhet de skall anges i är
Förutom de givna storheternas värden måste man även ange vilka dessa storheter är med ett sexsiffrigt heltal, här benämnt kod. Koden 101000 anger att tryck och temperatur är givna medan de övriga storheternas värden skall beräknas.
Funktionen hs finns i flera versioner och visas med enkla exempel för
Funktionen returnerar en felkod, ier, i form av ett heltal. Om värdet på detta heltal är olikt noll är resultatet osäkert eller fel.
Huvudprogrammet måste, för fortran- och C-versionen, kompileras och länkas till funktionen hs. Kompileringsproceduren är lite olika och visas därför, tillsammans med utskrift från körningarna, för de olika versionerna (enbart resultat för matlab-versionen)
Man kan notera att resultaten skiljer sig en aning i de de sista decimalerna vilken beror på att den numeriska behandlingen är lite olika i de olika programmeringspråken.
C file.f C inga fördefinierade variabler IMPLICIT NONE REAL P, V, T, X, H, S INTEGER KOD, IER C tryck och temperatur givna P = 1.013 T = 100 KOD = 101000 CALL HS(P,V,T,X,H,S,KOD,IER) IF (IER .NE. 0) THEN WRITE(*,*)'Resultatet fel eller osäkert' ENDIF WRITE(*,*)'P = ',P,' bar' WRITE(*,*)'V = ',V,' m3/kg' WRITE(*,*)'T = ',T,' C' WRITE(*,*)'X = ',X,' kg ånga/kg fuktig ånga' WRITE(*,*)'H = ',H,' kJ/kg' WRITE(*,*)'S = ',S,' kJ/kgK' END
% f77 -o exe-file -L/home/aton/fbjondah/cheep/lib file.f -lcheep file.f: MAIN: % exe-file P = 1.01300 bar V = 1.04778E-03 m3/kg T = 100.0000 C X = 0. kg ånga/kg fuktig ånga H = 418.980 kJ/kg S = 1.30522 kJ/kgK
/* file.c */ #include <stdio.h> /* inkluderar headerfil för IO */ #include <hs.h> /* inkluderar headerfil för hs */ int main (void) { double p, v, t, x, h, s; int ier, kod; /* givna data */ kod = 101000; /* tryck och temperatur givna */ p = 1.103; /* bar */ t = 100; /* grader C */ ier = hs (&p, &v, &t, &x, &h, &s, kod); if (ier != 0) { fprintf(stderr,"Resultatet fel eller osäkert!\n"); } fprintf(stdout,"p = %f bar\n", p); fprintf(stdout,"v = %f m3/kg\n", v); fprintf(stdout,"t = %f C\n", t); fprintf(stdout,"x = %f kh ånga/kg fuktig ånga\n", x); fprintf(stdout,"h = %f kJ/kg\n", h); fprintf(stdout,"s = %f kJ/kgK\n", s); return 0; }
% gcc -Wall -pedantic -o exe-file -L/home/aton/fbjondah/cheep/lib -I/home/aton/fbjondah/cheep/include file.c -lhs -lm % exe-file p = 1.103000 bar v = 0.001006 m3/kg t = 100.000000 C x = 0.000000 kh ånga/kg fuktig ånga h = 418.987246 kJ/kg s = 1.305208 kJ/kgK
Ett paket med matlab-funktioner finns tillgängligt i
Paketet packas upp och placeras i någon lämplig plats t.ex. på hemområdet H:\HS\. En path till directoryn innehållande HS måste anges (se exemplet). Hjälp kan också fås med matlab:s help kommando (help HS).
% file.m % addera hs-directoryn till pathen path(path,'H:\HS'); % på ÅA:s windowsmaskiner % tryck och temperatur är givna p = 1.013; v = 0; t = 100; x = 0; h = 0; s = 0; kod = 101000; [p,v,t,x,h,s,ier] = hs(p,v,t,x,h,s,kod); if (ier ~= 0) then fprintf(1,'Resultatet är osäkert eller fel\n'); end fprintf(1,'p = %10f bar\n',p); fprintf(1,'v = %10f m3/kg\n',v); fprintf(1,'t = %10f C\n',t); fprintf(1,'x = %10f kg ånga/kg fuktig ånga\n',x); fprintf(1,'h = %10f kJ/kg\n',h); fprintf(1,'s = %10f kJ/kgK\n',s);
>> file p = 1.013000 bar v = 0.001048 m3/kg t = 100.000000 C x = 0.000000 kg ånga/kg fuktig ånga h = 418.980438 kJ/kg s = 1.305215 kJ/kgK
Ett paket med matlab-funktioner finns tillgängligt i
Paketet packas upp och placeras i någon lämplig plats t.ex. på hemområdet H:\HS\. Funktionen laddas in med exec('h:\HS\hs-all.sce',-1);.
// file.sce // ladda in funktionerna i hs exec('H:\HS\hs-all.sce',-1); // tryck och temperatur är givna p = 1.013; v = 0; t = 100; x = 0; h = 0; s = 0; kod = 101000; [p,v,t,x,h,s,ier] = hs(p,v,t,x,h,s,kod); if (ier ~= 0) then mprintf('Resultatet är osäkert eller fel\n'); end mprintf('p = %10f bar\n',p); mprintf('v = %10f m3/kg\n',v); mprintf('t = %10f C\n',t); mprintf('x = %10f kg ånga/kg fuktig ånga\n',x); mprintf('h = %10f kJ/kg\n',h); mprintf('s = %10f kJ/kgK\n',s);
-->exec('C:\Documents and Settings\fbjondah\Desktop\file.sce', -1)
p = 1.013000 bar
v = 0.001048 m3/kg
t = 100.000000 C
x = 0.000000 kg ånga/kg fuktig ånga
h = 418.980306 kJ/kg
s = 1.305215 kJ/kgK