Friday, June 6, 2025

Compare the mixing ratio of two air parcels

Sometimes it is useful to know whether land air is more or less humid than air from the sea. Here is my Delphi code that allows comparison via the mixing ratio (humidity ratio). 
procedure TForm1.Button1Click(Sender: TObject);
label 1;

var
T1,T2,RH1,RH2,P1,P2,HR1,HR2,psat1,Psat2,Pv1,Pv2,Pa1,Pa2,ma1,ma2,
mv1,mv2,HR1c,HR2c,Tk1,Tk2,D1,D2:extended;

errors1:boolean;
calcstr1,calcstr2,calcstr3,calcstr4,calcstr5,calcstr6,
calcstr7:string[30];

begin
errors1:=false;
form1.hide;
form1.show;
form1.memo1.SelectAll;
form1.memo1.clearselection;
try
T1:=strtofloat(form1.edit1.text);
RH1:=strtofloat(form1.edit2.text);
P1:=strtofloat(form1.edit3.text);
T2:=strtofloat(form1.edit4.text);
RH2:=strtofloat(form1.edit5.text);
P2:=strtofloat(form1.edit6.text);
except errors1:=true;
end;
if (errors1=true) or
 (t1<0.01) or (T1>80) or (rh1<1) or (rh1>100) or (P1<30) or (p1>140)
  or (T2<0.01) or (T2>80) or (P2<30) or (P2>140)
 then begin
 form1.memo1.lines.add('Check Entries');
 goto 1
 end;

Psat1:=0.61121*exp((18.678-(T1/234.5))*(T1/(257.14+T1)));
Pv1:=Psat1*(Rh1/100);
Pa1:=P1-Pv1;
HR1:=0.62185*Pv1/Pa1;
Tk1:=T1+273.15;
ma1:=Pa1*1/(0.287*Tk1);
mv1:=Pv1*1/(0.4615*Tk1);
HR1c:=mv1/ma1;
D1:=(ma1+mv1)/1;
Psat2:=0.61121*exp((18.678-(T2/234.5))*(T2/(257.14+T2)));
Pv2:=Psat2*(Rh2/100);
Pa2:=P2-Pv2;
HR2:=0.62185*Pv2/Pa2;
Tk2:=T2+273.15;
ma2:=Pa2*1/(0.287*Tk2);
mv2:=Pv2*1/(0.4615*Tk2);
HR2c:=mv2/ma2;
D2:=(ma2+mv2)/1;
str(HR1:15:5,calcstr1);
 form1.memo1.lines.add('Humidity ratio HR1 = '+calcstr1+' kg/kg');
str(HR2:15:5,calcstr2);
 form1.memo1.lines.add('Humidity ratio HR2 = '+calcstr2+' kg/kg');
 str(D1:15:3,calcstr3);
 form1.memo1.lines.add('Density D1 = '+calcstr3+' kg per cubic m');
str(D2:15:3,calcstr4);
 form1.memo1.lines.add('Density D2 = '+calcstr4+' kg per cubic m');
 str(HR1c:15:5,calcstr5);
 form1.memo1.lines.add('Check Humidity ratio HR1 = '+calcstr5+' kg/kg');
str(HR2c:15:5,calcstr6);
 form1.memo1.lines.add('Check Humidity ratio HR2 = '+calcstr6+' kg/kg');
 1: end;