Tuesday, November 26, 2019

Lift for a balloon by adding water vapour

Example: Surrounding air is at 25 deg C and RH=60% and P=100 kPa.
A cubic metre of the surrounding air has 1.6 kg of water evaporated into it and ends up at 95 deg C (so the system is a cubic metre of air at 25 deg C and 1.6 kg of water both heated to 95 deg C). The buoyancy of 1 cubic metre of this hot expanded air is now 0.462 kg. The RH is now 82.03% (after water added and heated). With no water added but surrounding air heated to 95 deg C the RH would be 2.25% and the buoyancy would be 0.221 kg.

Here is some computer code that will work out the details for you - I wrote it is Delphi. 
Inputs are Tair1 (temperature of surrounding air in deg C), 
RH1 (relative humidity of surrounding air (percent), 
P (atmospheric pressure in kPa, 
Tair2 (temperature to which air and water will be heated to become moist air), 
ng (number of grams of water that will be heated with 1 cubic metre of surrounding air to Tair2).
Delphi code is below:
label 1;
var
HR1,HR2,Tk1,Tk2,Tair1,RH1,RH2,P,Tair2,ng,Psatv1,Psatv2,Pv1,Pv2,Mv1,Ma1,Mv2,Ma2,
denss,densp,F,a,Dair1,Dair2,Psati,Enth1,Enth2,Enth2m1,Tav,Enthv,Enthvkg,mf1,mf2:extended;
errors1:boolean;
calcstr1,calcstr2,calcstr3,calcstr4,calcstr5,calcstr6,calcstr7,calcstr8,
calcstr9,calcstr10,calcstr11,calcstr12,calcstr13,calcstr14,calcstr15,calcstr16,
calcstr17,calcstr18,calcstr19,calcstr20:string[30];
begin
errors1:=false;
form20.hide;
form20.show;
try
Tair1:=strtofloat(form20.edit1.Text);
RH1:=strtofloat(form20.edit2.Text);
P:=strtofloat(form20.edit3.Text);
Tair2:=strtofloat(form20.edit4.Text);
ng:=strtofloat(form20.edit5.Text);
except
errors1:=true;
end;
if (errors1=true) or
(Tair1<0.1) or (Tair1>80) or (Rh1<1) or (RH1>100) or (P<50) or (P>150) or (Tair2<0.1) or (Tair2>98)
or (ng<0) or (ng>10000)
then begin
form20.canvas.textout(0,100,'CHECK ENTRIES.');
goto 1
end;
Tk1:=Tair1+273.15;
Tk2:=Tair2+273.15;
Psatv1:=0.61121*exp((18.678-Tair1/234.5)*Tair1/(257.14+Tair1));
Pv1:=Psatv1*RH1/100;
Mv1:=Pv1/(0.4615*Tk1);
Ma1:=(P-Pv1)/(0.287*Tk1);
HR1:=Mv1/Ma1;
HR2:=(Mv1+(ng/1000))/Ma1;
Psatv2:=0.61121*exp((18.678-Tair2/234.5)*Tair2/(257.14+Tair2));
RH2:=(HR2*P)/((0.622+HR2)*Psatv2);
Pv2:=Psatv2*RH2;
Mv2:=Pv2/(0.4615*Tk2);
Ma2:=(P-Pv2)/(0.287*Tk2);
Enth1:=ma1*1.005*Tair1+(ma1)*HR1*(2501.3+1.88*Tair1)+(ng/1000)*4.18*Tair1;
Enth2:=ma1*1.005*Tair2+(ma1)*HR2*(2501.3+1.88*Tair2);
Enth2m1:=Enth2-Enth1;
Dair1:=(Mv1+Ma1);
Dair2:=(Mv2+Ma2);
denss:=Dair1;
Densp:=Dair2;
F:=9.80665*(Denss-densp);
a:=9.80665*((denss/densp)-1);
Tav:=(Tair1+Tair2)/2;
mf1:=Pv1/P;
mf2:=Pv2/P;
Enthv:=2501.3-2.4432443*(Tav-0.01);
Enthvkg:=ng*Enthv/3600;
str(Mv1:12:6,calcstr1);
str(Ma1:12:6,calcstr2);
str(Dair1:12:6,calcstr3);
str(HR1:12:6,calcstr4);
str(Mv2:12:6,calcstr5);
str(Ma2:12:6,calcstr6);
str(Dair2:12:6,calcstr7);
str(HR2:12:6,calcstr8);
str(RH2*100:12:2,calcstr9);
str(F:12:3,calcstr10);
str((F/9.80665):12:3,calcstr11);
str(a:12:3,calcstr12);
str(Enth1:12:3,calcstr13);
str(Enth2:12:3,calcstr14);
str(Enth2m1:12:3,calcstr15);
str(Enth2m1*(1000/3600):12:3,calcstr16);
str(Enthv:12:3,calcstr17);
str(Enthvkg:12:3,calcstr18);

str(mf1:12:3,calcstr19);
str(mf2:12:3,calcstr20);

form20.canvas.textout(0,100,'For surrounding air, mass of vapour Mv1 is: '+calcstr1+' kg/m^3.');
form20.canvas.textout(0,130,'For surrounding air, mass of air Ma1 is: '+calcstr2+' kg/m^3.');
form20.canvas.textout(0,160,'For surrounding air, density of air Dair1 is: '+calcstr3+' kg/m^3.');
form20.canvas.textout(0,190,'For surrounding air, humidity ratio HR1 is: '+calcstr4+' kg/kg.');
form20.canvas.textout(0,230,'For parcel, Mv2 is: '+calcstr5+' kg/m^3.');
form20.canvas.textout(0,260,'For parcel, Ma2 is: '+calcstr6+' kg/m^3.');
form20.canvas.textout(0,290,'For parcel, Dair2 is: '+calcstr7+' kg/m^3.');
form20.canvas.textout(0,320,'For parcel, HR2 is: '+calcstr8+' kg/kg.');
form20.canvas.textout(0,350,'For parcel at Tair2 deg C, relative humidity RH2 after adding water is: '+calcstr9+'%.');
form20.canvas.textout(0,390,'Buoyancy force on a 1 cubic metre parcel of air is: '+calcstr10+' N ('+calcstr11+' kg force).');
form20.canvas.textout(0,420,'Initial acceleration of the parcel of air is: '+calcstr12+' m/(s.s).');
form20.canvas.textout(0,460,'For 1 m^3 Enth1 is: '+calcstr13+' kJ.      Enth2 is: '+calcstr14+' kJ.');
form20.canvas.textout(0,490,'Enthalpy difference for the two situations is Enth2 - Enth1, which is: '+calcstr15+' kJ.');
form20.canvas.textout(0,520,'Enthalpy difference starting with 1000 m^3 is 1000(Enth2 - Enth1) is: '+calcstr16+' kWh.');
form20.canvas.textout(0,550,'Enthalpy of vaporisation at Tav=(Tair1+Tair2)/2 is: '+calcstr17+' kJ/kg.');
form20.canvas.textout(0,580,'Enthalpy of vaporisation at Tav=(Tair1+Tair2)/2 for ng kg is: '+calcstr18+' kWh.');
form20.canvas.textout(0,610,'For surrounding air, mole fraction of water vapour mf1 is: '+calcstr19+' For parcel, mf2 is: '+calcstr20+'.');

1: end;

Friday, November 1, 2019

Amount of basalt to react with CO2 in air

I believe we will need to take CO2, SO2, NOx, etc, out of the air with powdered basalt and other alkaline rocks. You can join my group https://mewe.com/group/5dca2395b0d95521915ec355
Here is Delphi computer code that will calculate approximately how much basalt powder is needed The inputs are T (air temperature in deg C), RH in %, P (atmospheric pressure in kPa - at the coast P is about 101 kPa), ppm (parts per million of CO2 (probably 415 or more parts).
Code is below:
label 1;
var
Dair,Ma,Tk,Mv,Pv,HR,P,RH,T,Psatw,Pdair,PCO2,MCO2,
Dairkg,PercCV,PercVV,ppm,molH2O,molCO2,thirdc,mbthirdc:extended;
errors1:boolean;
calcstr1,calcstr2,calcstr3,calcstr4,calcstr5,calcstr6,calcstr7,
calcstr8,calcstr9,calcstr10,calcstr11,calcstr12,calcstr13:string[30];
begin
errors1:=false;
form21.hide;
form21.show;
try
T:=strtofloat(form21.edit1.Text);
RH:=strtofloat(form21.edit2.Text);
P:=strtofloat(form21.edit3.Text);
ppm:=strtofloat(form21.edit4.Text);
except
errors1:=true;
end;
if (errors1=true) or
(T<0) or (T>70) or (RH<1) or (RH>100) or (P<10) or (P>150) or
(ppm<100) or (ppm>2500)
then begin
form21.canvas.textout(0,100,'CHECK ENTRIES.');
goto 1
end;
Tk:=T+273.15;
Psatw:=0.61121*exp((18.678-T/234.5)*T/(257.14+T));
Pv:=Psatw*RH/100;
Pdair:=(P-Pv);
PCO2:=Pdair*ppm/1000000;
{HR:=0.622*Pv/(P-Pv);}
Mv:=Pv/(0.4615*Tk);
Ma:=(P-Pv)/(0.287*Tk);
MCO2:=PCO2/(0.1889*Tk);
HR:=Mv/Ma;
Dair:=Mv+Ma;
PercCV:=(PCO2/P)*100;
PercVV:=(Pv/P)*100;
molH2O:=Pv/(0.00831447*Tk);
molCO2:=PCO2/(0.00831447*Tk);
thirdc:=MCO2*1000000*(1/3);
mbthirdc:=thirdC*3.33333;
str(Psatw:13:4,calcstr1);
str(Pv:13:4,calcstr2);
str(HR:13:6,calcstr3);
str(Mv*1000:13:3,calcstr4);
str(Ma*1000:13:3,calcstr5);
str(Dair*1000:13:3,calcstr6);
str(MCO2*1000:13:3,calcstr7);
str(MCO2*1000000:13:2,calcstr8);
str(PercCV:13:3,calcstr9);
str(PercVV:13:3,calcstr10);
str(molCO2:13:4,calcstr11);
str(molH2O:13:4,calcstr12);
str(mbthirdc:13:1,calcstr13);
form21.canvas.textout(0,120,'Saturation vapour pressure over water (Psatwater) is: '+calcstr1+' kPa.');
form21.canvas.textout(0,150,'Pv (actual vapour pressure over water) is: '+calcstr2+' kPa.');
form21.canvas.textout(0,180,'HR (humidity ratio over water) is: '+calcstr3+' kg/kg.');
form21.canvas.textout(0,210,'Mass of vapour in one cubic metre is: '+calcstr4+' grams.');
form21.canvas.textout(0,240,'Mass of DRY air in one cubic metre is: '+calcstr5+' grams.');
form21.canvas.textout(0,270,'Density of air (includes water vapour) is: '+calcstr6+' grams per cubic metre.');
form21.canvas.textout(0,300,'Mass of carbon dioxide in one cubic metre is: '+calcstr7+' grams.');
form21.canvas.textout(0,330,'Mass of carbon dioxide in one cubic kilometre is: '+calcstr8+' tonnes.');
form21.canvas.textout(0,360,'Carbon dioxide (volume percent) is: '+calcstr9+'%.');
form21.canvas.textout(0,390,'Water vapour (volume percent) is: '+calcstr10+'%.');
form21.canvas.textout(0,420,'Moles of carbon dioxide in one cubic metre is: '+calcstr11+' mol.');
form21.canvas.textout(0,450,'Moles of water vapour in one cubic metre is: '+calcstr12+' mol.');
form21.canvas.textout(0,480,'Mass of basalt needed to take out a third of the CO2 in one cubic km is: '+calcstr13+' tonnes.');
1: end;