Ideas to solve air pollution problems. Things you may not know about air. The blog owner T E Miller (Swayseeker) will not accept liability or responsibility for any problems or mistakes. You can contact me at millertrader@gmail.com Also see my profile at https://mewe.com/i/thomasmiller13
Friday, June 6, 2025
Compare the mixing ratio of two air parcels
Tuesday, May 20, 2025
Evaporative cooling of air
procedure EvapCool;
var
iocode:integer;
ch:char;
Tap1,Tap2,HR1,HR2,T1,T2,RHwb,Twb,Pwb,effc,Pv1,Pv2,Psat1,Psat2,
RH1,RH2,Pa1,Pa2,Tk1,Tk2,P,V,Tw,A1,B1,C1,A2,B2,C2,RHwb1,mwe,mwen,
mwed,ma1,mv1,ma2,mv2,Ad1,Bd1,Cd1,Ad2,Bd2,Cd2,Psatd1,Psatd2,LCL1,
LCL2,eff,D1,d2,mv11,ma11,mv21,ma21,VPD1,VPD2,
Td1,Td2,VPDr,ew,fw,gw,hw,iw,Enth1,Enth2:extended;
begin
repeat
clrscr;
repeat
write('Enter initial T1 in deg C ');
{$I-}
readln(T1);
{$I+}
iocode:=ioresult;
until (iocode=0) and (T1>0) and (T1<100);
repeat
write('Enter relative humidity RH1% ');
{$I-}
readln(RH1);
{$I+}
iocode:=ioresult;
until (iocode=0) and (RH1>0) and (RH1<=100);
repeat
write('Enter atmospheric pressure P in kPa ');
{$I-}
readln(P);
{$I+}
iocode:=ioresult;
until (iocode=0) and (P>50) and (P<=130);
repeat
write('Enter volume of air V in cubic m ');
{$I-}
readln(V);
{$I+}
iocode:=ioresult;
until (iocode=0) and (V>0);
repeat
write('Enter efficiency of evaporative cooling ');
{$I-}
readln(eff);
{$I+}
iocode:=ioresult;
until (iocode=0) and (eff>0) and (eff<100);
Pwb:=P/101.325;
RHwb1:=RH1;
RH1:=RH1/100;
Tk1:=T1+273.15;
Psat1:=0.61121*exp((18.678-T1/234.5)*(T1/(257.14+T1)));
Pv1:=Psat1*RH1;
Pa1:=P-Pv1;
ma1:=Pa1*V/(0.287*Tk1);
mv1:=Pv1*V/(0.4615*Tk1);
D1:=(ma1+mv1)/V;
HR1:=mv1/ma1;
Twb:=T1;
repeat
Twb:=Twb-0.001;
ew:=17.502*Twb;
fw:=240.97+Twb;
gw:=ew/fw;
hw:=66.8745*(1+0.00115*Twb);
iw:=6.112*exp(17.502*T1/(240.97+T1));
RHwb:=(611.2*exp(gw)-hw*Pwb*(T1-Twb))/iw;
until (RHwb<=RHwb1);
T2:=T1-(eff/100)*(T1-Twb);
mwen:=ma1*1.006*(T1-T2)+1.88*mv1*(T1-T2);
mwed:=2501.3+1.88*T2;
mwe:=mwen/mwed;
HR2:=(mwe+mv1)/ma1;
Psat2:=0.61121*exp((18.678-T2/234.5)*(T2/(257.14+T2)));
RH2:=HR2*P/((0.62185+HR2)*Psat2);
Pv2:=RH2*Psat2;
Tk2:=T2+273.15;
Pv2:=Psat2*RH2;
Pa2:=P-Pv2;
ma2:=Pa2*V/(0.287*Tk2);
mv2:=Pv2*V/(0.4615*Tk2);
D2:=(mv2+ma2)/V;
ad2:=9.81*(1-D1/D2);
Enth1:=ma1*1.006*T1+mv1*(2501.3+1.88*T1);
Enth2:=ma1*1.006*T2+(mv1+mwe)*(2501.3+1.88*T2);
writeln;
writeln('RESULTS:');
writeln('HR1 = ',HR1:13:5,' kg vapour/kg dry air');
writeln('HR2 = ',HR2:13:5,' kg vapour/kg dry air');
writeln('ma1 = ',ma1:15:5,' kg');
writeln('mv1 = ',mv1:15:5,' kg');
writeln('Initial wet bulb Twb = ',Twb:15:3,' deg C');
writeln('Mass of water evaporated mwe = ',mwe:15:4,' kg');
writeln('Mass of water evaporated = ',mwe/1000:15:6,' tonnes');
writeln('Air cooled to ',T2:15:4,' deg C');
writeln('Final RH = ',RH2*100:15:2,'%');
writeln('Initial density D1 = ',D1:15:4,' kg per cubic m');
writeln('Final density D2 = ',D2:15:4,' kg per cubic m');
writeln('Enth1 = ',enth1:15:3,' kJ, Enth2 = ',enth2:15:3,' kJ');
write('Another Y/N?');
repeat
ch:=readkey
until (ch in ['Y','N','y','n']);
until (ch in ['N','n']);
end;
Tuesday, April 29, 2025
Percentage of oxygen in air
procedure PercO;
var
iocode:integer;
ch,chm:char;
t1,rh1,rh2,pv1,pa1,mv1,ma1,psat1,
a1,b1,c1,tk1,p1,PO2,Perco2:extended;
begin
repeat
clrscr;
repeat
write('Enter air temp T1 deg C ');
{$I-}
readln(T1);
{$I+}
iocode:=ioresult;
until (iocode=0) and (T1>0) and (T1<100);
repeat
write('Enter relative humidity RH1% ');
{$I-}
readln(RH1);
{$I+}
iocode:=ioresult;
until (iocode=0) and (RH1>0) and (RH1<=100);
repeat
write('Enter atmospheric pressure P1 in kPa ');
{$I-}
readln(P1);
{$I+}
iocode:=ioresult;
until (iocode=0) and (P1>20) and (P1<=150);
Tk1:=T1+273.15;
A1:=18.678-T1/234.5;
B1:=T1/(257.14+T1);
C1:=A1*B1;
Psat1:=0.61121*exp(C1);
Pv1:=Psat1*(Rh1/100);
Pa1:=P1-Pv1;
PO2:=Pa1*(21/100);
ma1:=Pa1*1000/(0.287*Tk1);
mv1:=Pv1*1000/(0.4615*Tk1);
PercO2:=100*(PO2/P1);
writeln;
writeln('Percentage of oxygen in air by volume is: ',PercO2:12:3,'%');
writeln('Mass of water vapour per 1000 cubic m of air is:',mv1:12:3,' kg');
writeln('Mass of dry air per 1000 cubic m of air is: ',ma1:12:3,' kg');
writeln;
write('Another Y/N?');
repeat
ch:=readkey
until (ch in ['Y','N','y','n']);
until (ch in ['N','n']);
end;
Saturday, April 19, 2025
Air density after adding water vapour Turbo Pascal code
procedure RHnew;
var
iocode:integer;
ch,chm:char;
Dens1,dens2,hr1,hr2,t2,t1,rh1,rh2,pv1,pa1,pa2,mv1,mv2,ma1,psat1,psat2,
mf1,mf2,pv2,a1,b1,c1,tk1,tk2,p1,p2,mwa1,a2,b2,c2,v1,v2,ma2,
vpd1,vpd2,v2t,twb1,twb2,rhwb,ew,fw,gw,hw,iw,rhwb1,rhwb2,
pwb1,pwb2:extended;
begin
repeat
clrscr;
repeat
write('Enter air temp T1 deg C ');
{$I-}
readln(T1);
{$I+}
iocode:=ioresult;
until (iocode=0) and (T1>0) and (T1<100);
repeat
write('Enter RH1 % ');
{$I-}
readln(RH1);
{$I+}
iocode:=ioresult;
until (iocode=0) and (RH1>0) and (RH1<=100);
repeat
write('Enter atm P1 in kPa ');
{$I-}
readln(P1);
{$I+}
iocode:=ioresult;
until (iocode=0) and (P1>20) and (P1<=150);
repeat
write('Enter V1 in cubic m ');
{$I-}
readln(V1);
{$I+}
iocode:=ioresult;
until (iocode=0) and (V1>0);
repeat
write('Enter mass mwa1 of water added in kg ');
{$I-}
readln(mwa1);
{$I+}
iocode:=ioresult;
until (iocode=0) and (mwa1>=0);
repeat
write('Enter T2 in deg C ');
{$I-}
readln(T2);
{$I+}
iocode:=ioresult;
until (iocode=0) and (T2>0) and (T2<100);
repeat
write('Enter P2 in kPa ');
{$I-}
readln(P2);
{$I+}
iocode:=ioresult;
until (iocode=0) and (P2>=20) and (P2<=150);
Tk1:=T1+273.15;
Tk2:=T2+273.15;
A1:=18.678-T1/234.5;
B1:=T1/(257.14+T1);
C1:=A1*B1;
Psat1:=0.61121*exp(C1);
Pv1:=Psat1*(Rh1/100);
Pa1:=P1-Pv1;
mf1:=Pv1/P1;
ma1:=Pa1*V1/(0.287*Tk1);
mv1:=Pv1*V1/(0.4615*Tk1);
VPD1:=Psat1-Pv1;
mv2:=mwa1+mv1;
HR1:=mv1/ma1;
HR2:=mv2/ma1;
A2:=18.678-T2/234.5;
B2:=T2/(257.14+T2);
C2:=A2*B2;
Psat2:=0.61121*exp(C2);
RH2:=HR2*P2/((0.62185+HR2)*Psat2);
Pv2:=Psat2*RH2;
Pa2:=P2-Pv2;
mf2:=Pv2/P2;
ma2:=ma1;
V2:=mv2*(0.4615*Tk2)/Pv2;
V2t:=ma2*(0.287*Tk2)/Pa2;
VPD2:=Psat2-Pv2;
Pwb1:=P1/101.325;
RHwb1:=RH1;
TWB1:=T1;
repeat
Twb1:=Twb1-0.001;
ew:=17.502*Twb1;
fw:=240.97+Twb1;
gw:=ew/fw;
hw:=66.8745*(1.0+0.00115*Twb1);
iw:=6.112*exp(17.502*T1/(240.97+T1));
RHwb:=(611.2*exp(gw)-hw*Pwb1*(T1-Twb1))/iw;
until (RHwb<=RHwb1);
Pwb2:=P2/101.325;
RHwb2:=RH2*100;
Twb2:=T2;
repeat
Twb2:=Twb2-0.001;
ew:=17.502*Twb2;
fw:=240.97+Twb2;
gw:=ew/fw;
hw:=66.8745*(1.0+0.00115*Twb2);
iw:=6.112*exp(17.502*T2/(240.97+T2));
RHwb:=(611.2*exp(gw)-hw*Pwb2*(T2-Twb2))/iw;
until (RHwb<=RHwb2);
dens1:=(ma1+mv1)/V1;
dens2:=(ma2+mv2)/V2;
writeln('ma1 = ',ma1:12:5,' kg');
writeln('mv1 = ',mv1:12:5,' kg');
writeln('mole fraction of water vapour mf1 = ',mf1:12:5,' ');
writeln('VPD1 = ',VPD1:12:5,' kPa');
writeln('mv2 = ',(mv1+mwa1):12:5,' kg');
writeln('mole fraction of water vapour mf2 = ',mf2:12:5,' ');
writeln('VPD2 = ',VPD2:12:5,' kPa');
writeln('RH2 = ',(RH2*100):12:3,'%');
writeln('V2 = ',(V2):15:4,' cubic m');
writeln('V2 test = ',(V2t):15:4,' cubic m');
writeln('Twb1 = ',Twb1:15:4,' deg C');
writeln('Twb2 = ',Twb2:15:4,' deg C');
writeln('Dens1 = ',dens1:15:4,' kg/cubic m, Dens2 = ',dens2:15:4,' kg/cubic m');
writeln('');
write('Another? Y/N');
repeat
ch:=readkey
until (ch in ['Y','y','N','n']);
until (ch in ['N','n']);
end;
Air density after adding water vapour Delphi Code
label 1;
var
hr1,hr2,t2,t1,rh1,rh2,pv1,pa1,pa2,mv1,mv2,ma1,psat1,psat2,
mf1,mf2,pv2,a1,b1,c1,tk1,tk2,p1,p2,mwa1,a2,b2,c2,v1,v2,ma2,
vpd1,vpd2,v2t,twb1,twb2,rhwb,ew,fw,gw,hw,iw,rhwb1,rhwb2,
pwb1,pwb2,dens1,dens2:extended;
errors1:boolean;
calcstr1,calcstr2,calcstr3,calcstr4,calcstr5,calcstr6,calcstr7,calcstr8,calcstr9,
calcstr10,calcstr11,calcstr12,calcstr13,calcstr14: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);
V1:=strtofloat(form1.edit4.text);
mwa1:=strtofloat(form1.edit5.text);
T2:=strtofloat(form1.edit6.text);
P2:=strtofloat(form1.edit7.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 (V1<=0)
or (mwa1<=0) or (T2<0.01) or (T2>80) or (P2<30) or (P2>140)
then begin
form1.memo1.lines.add('Check Entries');
goto 1
end;
Tk1:=T1+273.15;
Tk2:=T2+273.15;
A1:=18.678-T1/234.5;
B1:=T1/(257.14+T1);
C1:=A1*B1;
Psat1:=0.61121*exp(C1);
Pv1:=Psat1*(Rh1/100);
Pa1:=P1-Pv1;
mf1:=Pv1/P1;
ma1:=Pa1*V1/(0.287*Tk1);
mv1:=Pv1*V1/(0.4615*Tk1);
VPD1:=Psat1-Pv1;
mv2:=mwa1+mv1;
HR1:=mv1/ma1;
HR2:=mv2/ma1;
A2:=18.678-T2/234.5;
B2:=T2/(257.14+T2);
C2:=A2*B2;
Psat2:=0.61121*exp(C2);
RH2:=HR2*P2/((0.62185+HR2)*Psat2);
Pv2:=Psat2*RH2;
Pa2:=P2-Pv2;
mf2:=Pv2/P2;
ma2:=ma1;
V2:=mv2*(0.4615*Tk2)/Pv2;
V2t:=ma2*(0.287*Tk2)/Pa2;
VPD2:=Psat2-Pv2;
Pwb1:=P1/101.325;
RHwb1:=RH1;
TWB1:=T1;
repeat
Twb1:=Twb1-0.001;
ew:=17.502*Twb1;
fw:=240.97+Twb1;
gw:=ew/fw;
hw:=66.8745*(1.0+0.00115*Twb1);
iw:=6.112*exp(17.502*T1/(240.97+T1));
RHwb:=(611.2*exp(gw)-hw*Pwb1*(T1-Twb1))/iw;
until (RHwb<=RHwb1);
Pwb2:=P2/101.325;
RHwb2:=RH2*100;
Twb2:=T2;
repeat
Twb2:=Twb2-0.001;
ew:=17.502*Twb2;
fw:=240.97+Twb2;
gw:=ew/fw;
hw:=66.8745*(1.0+0.00115*Twb2);
iw:=6.112*exp(17.502*T2/(240.97+T2));
RHwb:=(611.2*exp(gw)-hw*Pwb2*(T2-Twb2))/iw;
until (RHwb<=RHwb2);
dens1:=(ma1+mv1)/V1;
dens2:=(ma1+mv2)/V2;
str(ma1:15:3,calcstr1);
form1.memo1.lines.add('ma1 is: '+calcstr1+' kg');
str(mv1:15:3,calcstr2);
form1.memo1.lines.add('mv1 is: '+calcstr2+' kg');
str(mf1:15:3,calcstr3);
form1.memo1.lines.add('mf1 is: '+calcstr3+' ');
str(VPD1:15:3,calcstr4);
form1.memo1.lines.add('VPD1 is: '+calcstr4+' kPa');
str(mv2:15:3,calcstr5);
form1.memo1.lines.add('mv2 is: '+calcstr5+' kg');
str(mf2:15:3,calcstr6);
form1.memo1.lines.add('mf2 is: '+calcstr6+' ');
str(VPD2:15:3,calcstr7);
form1.memo1.lines.add('VPD2 is: '+calcstr7+' kPa');
str((RH2*100):15:3,calcstr8);
form1.memo1.lines.add('RH2 is: '+calcstr8+'%');
str(V2:15:3,calcstr9);
form1.memo1.lines.add('V2 is: '+calcstr9+' cubic m');
str(V2t:15:3,calcstr10);
form1.memo1.lines.add('V2t (check on line above) is: '+calcstr10+' cubic m');
str(Twb1:15:3,calcstr11);
form1.memo1.lines.add('Wet bulb initial Twb1 is: '+calcstr11+' deg C');
str(Twb2:15:3,calcstr12);
form1.memo1.lines.add('Wet bulb final Twb2 is: '+calcstr12+' deg C');
str(dens1:15:3,calcstr13);
form1.memo1.lines.add('Air density Dens1 is: '+calcstr13+' kg/cubic m');
str(dens2:15:3,calcstr14);
form1.memo1.lines.add('Air density Dens2 is: '+calcstr14+' kg/cubic m');
1: end;