My Facebook profile is at https://www.facebook.com/profile.php
For other sites of mine see https://temsites.blogspot.com
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
Thursday, January 9, 2020
Wednesday, January 8, 2020
Cheap Energy for Africa with Carbon Dioxide Reduction
For reliable renewable energy one needs costly batteries for steady supply and it seems unlikely we will be able to afford sufficient supplies of batteries in the near future. Here is the only solution I can see:
1) Allow mines to install their own gas turbine power stations so mines can operate well and cheaply all the time
2) Encourage gas and oil companies to set up in South Africa, but legislate that they must distribute alkaline rock dust (from alkaline mine tailings, etc), to react with carbon dioxide and remove it from the atmosphere.
3) Also allow smelters to set up their own gas turbine power stations so that aluminium smelters, etc, can operate well all the time.
Africa and other regions need reliable power and it is unlikely that greenhouse gas concentrations will be reduced. The world could use gas and also alkaline rock to remove carbon dioxide in general from the air and the carbon dioxide created by burning the gas. We could cool Earth like this.
Taking CO2 out of the air: Here is some mathematics for all: Basalt has a density of about 3 tonnes per cubic metre.
A 1 mm thick layer of basalt spread over an area of 1 square km has a volume of (1/1000)x(1000)x(1000) = 1000 cubic metres.
Mass of 1 mm thick basalt layer on 1 square km = volumexdensity = (1000 cubic metres)x(3 tonnes per cubic metre) =3000 tonnes.
1 tonne of basalt can react with about 0.3 tonnes of CO2.
Therefore 3000 tones of basalt can react with about 3000x0.3 = 900 tonnes of CO2.
In a cubic metre of air in a polluted city there could be about 900 tonnes of CO2 in a cubic km.
Conclusion: A 1 mm thick layer of basalt could take out all the CO2 for a km above the basalt layer. Powdered basalt should be used to make the reaction thousands of times faster.
See https://insideclimatenews.org/news/ 20022018/ global-warming-solutions-carbon-storage-f arm-soil-crushed-volcanic-rock-research? and
https://arstechnica.com/science/2018/02/ spreading-crushed-rock-on-farms-could-imp rove-soil-and-lower-co₂/ and
https://gulfnews.com/world/gulf/oman/ oman-rocks-to-help-fight-global-warming-1 .1810841 and
https://arctic-news.blogspot.com/2016/ 07/ olivine-weathering-to-capture-co2-and-cou nter-climate-change.html?
1) Allow mines to install their own gas turbine power stations so mines can operate well and cheaply all the time
2) Encourage gas and oil companies to set up in South Africa, but legislate that they must distribute alkaline rock dust (from alkaline mine tailings, etc), to react with carbon dioxide and remove it from the atmosphere.
3) Also allow smelters to set up their own gas turbine power stations so that aluminium smelters, etc, can operate well all the time.
Africa and other regions need reliable power and it is unlikely that greenhouse gas concentrations will be reduced. The world could use gas and also alkaline rock to remove carbon dioxide in general from the air and the carbon dioxide created by burning the gas. We could cool Earth like this.
Taking CO2 out of the air: Here is some mathematics for all: Basalt has a density of about 3 tonnes per cubic metre.
A 1 mm thick layer of basalt spread over an area of 1 square km has a volume of (1/1000)x(1000)x(1000) = 1000 cubic metres.
Mass of 1 mm thick basalt layer on 1 square km = volumexdensity = (1000 cubic metres)x(3 tonnes per cubic metre) =3000 tonnes.
1 tonne of basalt can react with about 0.3 tonnes of CO2.
Therefore 3000 tones of basalt can react with about 3000x0.3 = 900 tonnes of CO2.
In a cubic metre of air in a polluted city there could be about 900 tonnes of CO2 in a cubic km.
Conclusion: A 1 mm thick layer of basalt could take out all the CO2 for a km above the basalt layer. Powdered basalt should be used to make the reaction thousands of times faster.
See https://insideclimatenews.org/news/
https://arstechnica.com/science/2018/02/
https://gulfnews.com/world/gulf/oman/
https://arctic-news.blogspot.com/2016/
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.
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;
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;
Saturday, September 14, 2019
Water from air Delphi2 Code
THE CODE BELOW IS FREEWARE:
T1 is the temperature of the surrounding air in deg C, RH1 is the relative humidity in percent, P1 is the atmospheric pressure in kPa (at sea level it is about 101.325 kPa), T2 is the temperature to which the air will be cooled, V1 is the volume of air you are going to cool in cubic metres. Code below:
label 1;
var
EnthV1MWh,EnthV1kWh,EnthV1,NokgdaV1,Enthd,Psatw1,Psatw2,Tk1,Tk2,Mvpa1,Enth1,Enth2,Ma1,Mv1,HR1,HR2,
Pv1,PV2,T1,RH1,P1,P2,T2,V1,kgDryAir,EdpkgDA,EnthDV,HR1mHR2,HR1mHR2V,kgpkWh,Td,RH,Psat,Pv,Tdew:extended;
errors1:boolean;
calcstr2,calcstr1,calcstr3,calcstr4,calcstr5,calcstr6,calcstr7,
calcstr8,calcstr9,calcstr10,calcstr11,calcstr12,calcstr13,calcstr14,
calcstr15,calcstr16,calcstr17,calcstr18:string[30];
begin
errors1:=false;
form2.hide;
form2.show;
try
T1:=strtofloat(form2.edit1.Text);
RH1:=strtofloat(form2.edit2.Text);
P1:=strtofloat(form2.edit3.Text);
T2:=strtofloat(form2.edit4.Text);
V1:=strtofloat(form2.edit5.Text);
except
errors1:=true;
end;
if (errors1=true) or
(T1<0.1) or (T1>100) or (RH1<0.1) or (RH1>100) or (P1<50) or (P1>150) or (T2<0.1) or
(T2>100) or (V1<0) or (T2>=T1-0.01)
then begin
form2.canvas.textout(0,100,'CHECK ENTRIES.');
goto 1
end;
Tk1:=T1+273.15;
Tk2:=T2+273.15;
Td:=T1;
RH:=RH1;
Psat:=0.61121*exp((18.678-Td/234.5)*Td/(257.14+Td));
Pv:=(RH/100)*Psat;
Tdew:=Td;
repeat
Tdew:=Tdew-0.001;
Psat:=0.61121*exp((18.678-Tdew/234.5)*Tdew/(257.14+Tdew));
until (Psat<=Pv);
str(Tdew:12:2,calcstr18);
Psatw1:=0.61121*exp((18.678-T1/234.5)*T1/(257.14+T1));
Pv1:=Psatw1*RH1/100;
HR1:=0.622*Pv1/(P1-Pv1);
Ma1:=(P1-Pv1)/(0.287*Tk1);
Enth1:=(1.005*T1)+HR1*(2501.3+1.88*T1);
Psatw2:=0.61121*exp((18.678-T2/234.5)*T2/(257.14+T2));
HR2:=Hr1;
P2:=P1;
if (Psatw2<PV1) then begin
Pv2:=Psatw2;
HR2:=0.622*Pv2/(P2-Pv2);
form2.canvas.textout(0,90,'Water condenses out. Dew point is:'+calcstr18+' deg C');
end;
Enth2:=(1.005*T2)+HR2*(2501.3+1.88*T2);
kgDryAir:=V1*Ma1;
EdpkgDA:=(Enth2-Enth1);
EnthDV:=kgDryAir*EdpkgDA;
HR1mHR2:=HR1-HR2;
HR1mHR2V:=kgDryAir*HR1mHR2;
kgpkWh:=(-1)*HR1mHR2V/(EnthDV/3600);
str(Enth1:13:4,calcstr1);
str(Enth2:13:4,calcstr2);
str(EdpkgDA:13:6,calcstr3);
str(Ma1:13:4,calcstr4);
str(kgDryAir,calcstr5);
str(EnthDV,calcstr6);
str((EnthDV/3600),calcstr7);
str((EnthDV/3600000),calcstr8);
str((HR1mHR2*1000):13:4,calcstr9);
str(HR1mHR2V,calcstr10);
str((HR1*1000):13:4,calcstr11);
str((HR2*1000):13:4,calcstr12);
str(EnthV1MWh,calcstr16);
str(kgpkWh:13:4,calcstr17);
form2.canvas.textout(0,120,'Enthalpy1 per kg dry air is: '+calcstr1+' kJ/kg dry air.');
form2.canvas.textout(0,150,'Enthalpy2 per kg dry air is: '+calcstr2+' kJ/kg dry air.');
form2.canvas.textout(0,180,'Enthalpy difference per kg dry air is: '+calcstr3+' kJ/kg dry air.');
form2.canvas.textout(0,210,'Mass of DRY air in one cubic metre of original air is: '+calcstr4+' kg.');
form2.canvas.textout(0,240,'Number of kg of dry air in V1 is: '+calcstr5+' kg.');
form2.canvas.textout(0,270,'FOR VOLUME V1: Heat added to volume V1 of air (Enthalpy difference for volume V1) is: '+calcstr6+' kJ.');
form2.canvas.textout(0,300,'FOR VOLUME V1: Heat added to volume V1 of air is: '+calcstr7+' kWh.');
form2.canvas.textout(0,330,'FOR VOLUME V1: Heat added to volume V1 of air is: '+calcstr8+' MWh.');
form2.canvas.textout(0,370,'HR1 - HR2 g/kg is: '+calcstr9+' grams of water vapour per kg dry air (CONDENSES OUT).');
form2.canvas.textout(0,400,'(HR1 - HR2 kg/kg)x(number of kg dry air in volume V1) is: '+calcstr10+' kg of water (CONDENSES OUT).');
form2.canvas.textout(0,440,'HR1 is: '+calcstr11+' g/kg.');
form2.canvas.textout(0,470,'HR2 is: '+calcstr12+' g/kg.');
form2.canvas.textout(0,520,'SUMMARY. Total mass of water condensing out of the air is: '+calcstr10+' kg.');
form2.canvas.textout(0,550,'SUMMARY: Total heat added to the air is: '+calcstr7+' kWh.');
form2.canvas.textout(0,580,'SUMMARY: kg of water produced per kWh of heat removed from air: '+calcstr17+' kg/kWh.');
form2.canvas.textout(0,610,'SUMMARY: Dew point temperature is: '+calcstr18+' deg C.');
1: end;
T1 is the temperature of the surrounding air in deg C, RH1 is the relative humidity in percent, P1 is the atmospheric pressure in kPa (at sea level it is about 101.325 kPa), T2 is the temperature to which the air will be cooled, V1 is the volume of air you are going to cool in cubic metres. Code below:
label 1;
var
EnthV1MWh,EnthV1kWh,EnthV1,NokgdaV1,Enthd,Psatw1,Psatw2,Tk1,Tk2,Mvpa1,Enth1,Enth2,Ma1,Mv1,HR1,HR2,
Pv1,PV2,T1,RH1,P1,P2,T2,V1,kgDryAir,EdpkgDA,EnthDV,HR1mHR2,HR1mHR2V,kgpkWh,Td,RH,Psat,Pv,Tdew:extended;
errors1:boolean;
calcstr2,calcstr1,calcstr3,calcstr4,calcstr5,calcstr6,calcstr7,
calcstr8,calcstr9,calcstr10,calcstr11,calcstr12,calcstr13,calcstr14,
calcstr15,calcstr16,calcstr17,calcstr18:string[30];
begin
errors1:=false;
form2.hide;
form2.show;
try
T1:=strtofloat(form2.edit1.Text);
RH1:=strtofloat(form2.edit2.Text);
P1:=strtofloat(form2.edit3.Text);
T2:=strtofloat(form2.edit4.Text);
V1:=strtofloat(form2.edit5.Text);
except
errors1:=true;
end;
if (errors1=true) or
(T1<0.1) or (T1>100) or (RH1<0.1) or (RH1>100) or (P1<50) or (P1>150) or (T2<0.1) or
(T2>100) or (V1<0) or (T2>=T1-0.01)
then begin
form2.canvas.textout(0,100,'CHECK ENTRIES.');
goto 1
end;
Tk1:=T1+273.15;
Tk2:=T2+273.15;
Td:=T1;
RH:=RH1;
Psat:=0.61121*exp((18.678-Td/234.5)*Td/(257.14+Td));
Pv:=(RH/100)*Psat;
Tdew:=Td;
repeat
Tdew:=Tdew-0.001;
Psat:=0.61121*exp((18.678-Tdew/234.5)*Tdew/(257.14+Tdew));
until (Psat<=Pv);
str(Tdew:12:2,calcstr18);
Psatw1:=0.61121*exp((18.678-T1/234.5)*T1/(257.14+T1));
Pv1:=Psatw1*RH1/100;
HR1:=0.622*Pv1/(P1-Pv1);
Ma1:=(P1-Pv1)/(0.287*Tk1);
Enth1:=(1.005*T1)+HR1*(2501.3+1.88*T1);
Psatw2:=0.61121*exp((18.678-T2/234.5)*T2/(257.14+T2));
HR2:=Hr1;
P2:=P1;
if (Psatw2<PV1) then begin
Pv2:=Psatw2;
HR2:=0.622*Pv2/(P2-Pv2);
form2.canvas.textout(0,90,'Water condenses out. Dew point is:'+calcstr18+' deg C');
end;
Enth2:=(1.005*T2)+HR2*(2501.3+1.88*T2);
kgDryAir:=V1*Ma1;
EdpkgDA:=(Enth2-Enth1);
EnthDV:=kgDryAir*EdpkgDA;
HR1mHR2:=HR1-HR2;
HR1mHR2V:=kgDryAir*HR1mHR2;
kgpkWh:=(-1)*HR1mHR2V/(EnthDV/3600);
str(Enth1:13:4,calcstr1);
str(Enth2:13:4,calcstr2);
str(EdpkgDA:13:6,calcstr3);
str(Ma1:13:4,calcstr4);
str(kgDryAir,calcstr5);
str(EnthDV,calcstr6);
str((EnthDV/3600),calcstr7);
str((EnthDV/3600000),calcstr8);
str((HR1mHR2*1000):13:4,calcstr9);
str(HR1mHR2V,calcstr10);
str((HR1*1000):13:4,calcstr11);
str((HR2*1000):13:4,calcstr12);
str(EnthV1MWh,calcstr16);
str(kgpkWh:13:4,calcstr17);
form2.canvas.textout(0,120,'Enthalpy1 per kg dry air is: '+calcstr1+' kJ/kg dry air.');
form2.canvas.textout(0,150,'Enthalpy2 per kg dry air is: '+calcstr2+' kJ/kg dry air.');
form2.canvas.textout(0,180,'Enthalpy difference per kg dry air is: '+calcstr3+' kJ/kg dry air.');
form2.canvas.textout(0,210,'Mass of DRY air in one cubic metre of original air is: '+calcstr4+' kg.');
form2.canvas.textout(0,240,'Number of kg of dry air in V1 is: '+calcstr5+' kg.');
form2.canvas.textout(0,270,'FOR VOLUME V1: Heat added to volume V1 of air (Enthalpy difference for volume V1) is: '+calcstr6+' kJ.');
form2.canvas.textout(0,300,'FOR VOLUME V1: Heat added to volume V1 of air is: '+calcstr7+' kWh.');
form2.canvas.textout(0,330,'FOR VOLUME V1: Heat added to volume V1 of air is: '+calcstr8+' MWh.');
form2.canvas.textout(0,370,'HR1 - HR2 g/kg is: '+calcstr9+' grams of water vapour per kg dry air (CONDENSES OUT).');
form2.canvas.textout(0,400,'(HR1 - HR2 kg/kg)x(number of kg dry air in volume V1) is: '+calcstr10+' kg of water (CONDENSES OUT).');
form2.canvas.textout(0,440,'HR1 is: '+calcstr11+' g/kg.');
form2.canvas.textout(0,470,'HR2 is: '+calcstr12+' g/kg.');
form2.canvas.textout(0,520,'SUMMARY. Total mass of water condensing out of the air is: '+calcstr10+' kg.');
form2.canvas.textout(0,550,'SUMMARY: Total heat added to the air is: '+calcstr7+' kWh.');
form2.canvas.textout(0,580,'SUMMARY: kg of water produced per kWh of heat removed from air: '+calcstr17+' kg/kWh.');
form2.canvas.textout(0,610,'SUMMARY: Dew point temperature is: '+calcstr18+' deg C.');
1: end;
Saturday, August 31, 2019
Removal of methane from the atmosphere
https://en.wikipedia.org/wiki/ Atmospheric_methane#Removal_processes says " Furthermore, in an attempt to absorb the methane that is already being produced from landfills, experiments in which nutrients were added to the soil to allow methanotrophs to thrive have been conducted. These nutrient supplemented landfills have been shown to act as a small scale methane sink, allowing the abundance of methanotrophs to sponge the methane from the air to use as energy, effectively reducing the landfill's emissions." Also says: "Forest soils act as good sinks for atmospheric methane because soils are optimally moist for methanotroph activity, and the movement of gases between soil and atmosphere (soil diffusivity) is high " So forests could be good.
Tuesday, August 20, 2019
Humidification for rain
This triangular cloth-covered framework device shown will deflect a huge volume of air into the almost saturated layer just above the sea during the course of a day and will facilitate the evaporation of spray above the surface by creating turbulence with the downwards direction of the air. Just before a sea breeze develops (breeze from sea to land) the air that is being warmed on land expands upwards and outwards, keeping the sea breeze from developing. Warm dry air from this expanded volume of air will be mixed, by this device, into the spray and almost-saturated air region just above the sea just before the sea breeze develops. A deeper moist layer will then blow in with the sea breeze, facilitating rain.
If the spray was just rising a few cm without the device and is forced a few m upwards by the wind with the device there will be a big increase in evaporation. If a few cubic km of air per day is directed down by the device you will have a huge amount of moist air. Imagine the device is 1 km long, 1/100 km high and wind blows at 10 km/hour for 20 hours. Then 2 cubic km of air per day could be forced down.
When there is a drought the land gets hotter because of no evaporation (hot deserts are hotter than tropical forests where there is evaporation). When land gets hotter the air above the land gets hotter and then relative humidity of the air drops and the vapour pressure deficit (VPD) increases a lot. From what I have read plants generally like a vapour pressure deficit (VPD) of between 0.8 kPa and 1.2 kPa. This means that the vapour pressure inside the plant minus the vapour pressure in the air should be 0.8 to 1.2 kPa. Failing this there is wilting, etc. Even if you do not get rain it might be worthwhile humidifying the air around the coast or planting more trees
If the spray was just rising a few cm without the device and is forced a few m upwards by the wind with the device there will be a big increase in evaporation. If a few cubic km of air per day is directed down by the device you will have a huge amount of moist air. Imagine the device is 1 km long, 1/100 km high and wind blows at 10 km/hour for 20 hours. Then 2 cubic km of air per day could be forced down.
When there is a drought the land gets hotter because of no evaporation (hot deserts are hotter than tropical forests where there is evaporation). When land gets hotter the air above the land gets hotter and then relative humidity of the air drops and the vapour pressure deficit (VPD) increases a lot. From what I have read plants generally like a vapour pressure deficit (VPD) of between 0.8 kPa and 1.2 kPa. This means that the vapour pressure inside the plant minus the vapour pressure in the air should be 0.8 to 1.2 kPa. Failing this there is wilting, etc. Even if you do not get rain it might be worthwhile humidifying the air around the coast or planting more trees
Friday, August 16, 2019
Wetter or drier?
Will the world become wetter or drier overall? The article https://www.aaas.org/news/ drying-atmosphere-spurs-decline-vegetatio n-growth says: "The findings reveal that atmospheric water vapor is expected to further wane throughout the 21st century due to rising air temperatures and a decline in the evaporation of the world's oceans."
People might find it strange that as air temperatures increase the evaporation from oceans decreases, but here is an explanation: When it comes to evaporation from the sea, most evaporation occurs when the sea is hotter than the air above it. With global warming the land heats up more than the sea and so you might tend to get air that is relatively hotter than the sea blowing to sea. When hotter air is above the sea the sea cools the air above and the relative humidity (RH) of this air increases and less evaporation results into the air because RH is higher. When The sea is warmer than the air above it the sea heats the air above it and the RH of the air decreases and more evaporation occurs because RH is low. When you have cold sea near to hot land you can get "negative evaporation" - the water vapour condenses out of the hot air above the cold sea and fog occurs.
One factor that could increase the evaporation is increased downwelling sky radiation from hotter air, but the effect of increasing RH of hotter air above cold water appears to be a clear winner in certain regions at present.
Solution: A stagnant saturated layer builds up just above the sea surface so a sheet along the coast and above the sea that deflects air downwards and gives turbulence could partially solve the problem and increase evaporation. Also see https://journals.ametsoc.org/doi/full/10.1175/JCLI3519.1
I have been dealing with evaporation equations for a while and I take the average of 5 equations (equations from Fitzgerald, Rohwer, Engineering Toolbox, Horton, Meyer) and here are some results: Suppose wind speed is 10 km per hour, RH=80% above the sea, sea temperature is 18 deg C and atmospheric pressure is 760 mm of mercury.
If we increase the air temperature above the sea we get this.
Tair= 0 deg C then evaporation is 13 mm per day.
Tair=10 deg C then evaporation is 9 mm per day.
Tair= 20 deg C then evaporation is 1 mm per day.
Tair=30 deg C then fog forms above water.
People might find it strange that as air temperatures increase the evaporation from oceans decreases, but here is an explanation: When it comes to evaporation from the sea, most evaporation occurs when the sea is hotter than the air above it. With global warming the land heats up more than the sea and so you might tend to get air that is relatively hotter than the sea blowing to sea. When hotter air is above the sea the sea cools the air above and the relative humidity (RH) of this air increases and less evaporation results into the air because RH is higher. When The sea is warmer than the air above it the sea heats the air above it and the RH of the air decreases and more evaporation occurs because RH is low. When you have cold sea near to hot land you can get "negative evaporation" - the water vapour condenses out of the hot air above the cold sea and fog occurs.
One factor that could increase the evaporation is increased downwelling sky radiation from hotter air, but the effect of increasing RH of hotter air above cold water appears to be a clear winner in certain regions at present.
Solution: A stagnant saturated layer builds up just above the sea surface so a sheet along the coast and above the sea that deflects air downwards and gives turbulence could partially solve the problem and increase evaporation. Also see https://journals.ametsoc.org/doi/full/10.1175/JCLI3519.1
I have been dealing with evaporation equations for a while and I take the average of 5 equations (equations from Fitzgerald, Rohwer, Engineering Toolbox, Horton, Meyer) and here are some results: Suppose wind speed is 10 km per hour, RH=80% above the sea, sea temperature is 18 deg C and atmospheric pressure is 760 mm of mercury.
If we increase the air temperature above the sea we get this.
Tair= 0 deg C then evaporation is 13 mm per day.
Tair=10 deg C then evaporation is 9 mm per day.
Tair= 20 deg C then evaporation is 1 mm per day.
Tair=30 deg C then fog forms above water.
Friday, July 26, 2019
Cooling cities near the coast
For cities near the coast one could use mirrors to shade the ground and also reflect solar energy to old floating abandoned ships. The old ships will heat up and transfer infrared radiation to the the sea surface. Infrared radiation only penetrates the sea a few mm. This could cause clouds to form to shade and cool and bring rain. Rising moist hot air from the sea could increase air circulation and reduce air pollution in cities.
Tuesday, July 23, 2019
Carbon dioxide and drowsy accidents
The world is drifting towards drowsiness and accident-proneness: If one calculates, using equations related to the Keeling Curve, one finds that by 2070 the concentration of carbon dioxide in the atmosphere will be about 700 ppm (at present it is around 400 ppm). By 2095 it will be about 1000 ppm. Now when the concentration becomes 1000 ppm people start to feel drowsy and will lose concentration.
But another problem is that when atmospheric carbon dioxide levels are high and one enters an enclosure (room and so on) the carbon dioxide levels quickly reach dangerous levels because of breathing. So if there are 10 people in a room of volume 100 cubic metres and atmospheric concentration of carbon dioxide is 400 ppm then it will take about 22 minutes for levels to reach 1000 ppm. If you start with atmospheric levels of carbon dioxide at 700 ppm then it takes only about 11 minutes for levels to reach 1000 ppm.
Fires (which produce carbon dioxide) will become far more dangerous regarding breathing.
But another problem is that when atmospheric carbon dioxide levels are high and one enters an enclosure (room and so on) the carbon dioxide levels quickly reach dangerous levels because of breathing. So if there are 10 people in a room of volume 100 cubic metres and atmospheric concentration of carbon dioxide is 400 ppm then it will take about 22 minutes for levels to reach 1000 ppm. If you start with atmospheric levels of carbon dioxide at 700 ppm then it takes only about 11 minutes for levels to reach 1000 ppm.
Fires (which produce carbon dioxide) will become far more dangerous regarding breathing.
Wednesday, July 17, 2019
Density of breath and surrounding air
The Delphi 2 code (Pascal) below calculates the density of breath and of the surrounding air. If you enter a hollow or lift or tank and so on and your breath is more dense than the surrounding air it will sink and you could surround yourself with air that has a lot of carbon dioxide in. This could happen during heatwave conditions.
The inputs to the program are: Ts (temperature in deg C of the surrounding air, eg 38), RHs (relative humidity of the surrounding air in %, eg 34), P (the atmospheric air pressure in kPa, eg 100), PercO (the percentage of oxygen used up in breathing, eg 25), Tbr (the temperature of the breath in deg C, eg 37). The Delph1 2 code is below:
label 1;
var
PvBr,Mas,Mvs,Pvs,Psatws,PercO,Ts,Tsk,P,RHs,Tbr,Tbrk,Psatwbr,Denssa,Densbr,a,molDaBr,
MolNBr,MolOBri,MolOBrf,molCO2Bri,molCO2Brf,MolVBr,MolArBr,MolNeBr,MolHeBr,Mol,
MolKrBr,MolXeBr,VN,VO,VCO2,VV,VArg,VNe,VHe,VKr,VXe,MNbr,MOBrf,MCO2brf,MVBr,
MArBr,MNeBr,MHeBr,MKrBr,MXeBr,MBr,VolBr,TDI,Td,RHDI,DI,Pw,Tw,Aw,Bw,RHSw,Psat,
Tdew,Pvd,RH,LCL:extended;
errors1:boolean;
calcstr2,calcstr1,calcstr3,calcstr4,calcstr5,calcstr6,calcstr7,
calcstr8,calcstr9,calcstr10,calcstr11,calcstr12,calcstr13,calcstr14,calcstr15,calcstr16,
calcstr17,calcstr18,calcstr19,calcstr20,calcstr21,calcstr22,calcstr23,calcstr24:string[30];
begin
errors1:=false;
form16.hide;
form16.show;
try
Ts:=strtofloat(form16.edit1.Text);
RHs:=strtofloat(form16.edit2.Text);
P:=strtofloat(form16.edit3.Text);
PercO:=strtofloat(form16.edit4.Text);
Tbr:=strtofloat(form16.edit5.Text);
except
errors1:=true;
end;
if (errors1=true) or
(Ts<0) or (Ts>70) or (RHs<=0) or (RHs>100) or (P<10) or (P>150) or(percO<0) or (percO>90)
or (Tbr<0) or (Tbr>70) then begin
form16.canvas.textout(0,100,'CHECK ENTRIES.');
goto 1
end;
Tsk:=Ts+273.15;
Tbrk:=Tbr+273.15;
Psatws:=0.61121*exp((18.678-Ts/234.5)*Ts/(257.14+Ts));
Psatwbr:=0.61121*exp((18.678-Tbr/234.5)*Tbr/(257.14+Tbr));
Pvs:=Psatws*RHs/100;
Mvs:=Pvs/(0.4615*Tsk);
Mas:=(P-Pvs)/(0.287*Tsk);
PvBr:=Psatwbr;
molDaBr:=100-(PvBr/P)*100;
MolNBr:=78.03/100*moldaBr;
MolOBri:=20.99/100*molDaBr;
MolOBrf:=MolOBri-(percO/100*molObri);
MolCO2bri:=(0.033/100)*moldaBr;
MolCO2Brf:=molCO2bri+(percO/100*molObri);
molVbr:=100*Pvbr/P;
molArBr:=(0.94/100)*moldabr;
molNeBr:=(0.0015/100)*moldabr;
molHeBr:=(0.000524/100)*moldabr;
molKrBr:=(0.00014/100)*moldabr;
molXeBr:=(0.000006/100)*moldabr;
MNbr:=molNbr*0.028013;
MObrf:=molOBrf*0.031999;
MCO2Brf:=molCO2Brf*0.04401;
MVBr:=molVBr*0.018015;
MArBr:=molArBr*0.039948;
MNeBr:=molNeBr*0.020183;
MHeBr:=molHeBr*0.004003;
MKrBr:=molKrBr*0.08380;
MXeBr:=molXeBr*0.13130;
Denssa:=Mvs+Mas;
MBr:=MNbr+MOBrf+MCO2Brf+MVBr+MArBr+MNeBr+MHeBr+MKrBr+MXeBr;
VolBr:=100*0.00831447*Tbrk/P;
DensBr:=MBr/VolBr;
a:=9.80665*((denssa/densbr)-1);
VN:=100*MolNBr*(0.00831447*TBrk/P)/VolBr;
VO:=100*MolOBrf*(0.00831447*TBrk/P)/VolBr;
VCO2:=100*MolCO2Brf*(0.00831447*TBrk/P)/VolBr;
VV:=100*MolVBr*(0.00831447*TBrk/P)/VolBr;
VArg:=100*MolArBr*(0.00831447*TBrk/P)/VolBr;
VNe:=100*MolNeBr*(0.00831447*TBrk/P)/VolBr;
VHe:=100*MolHeBr*(0.00831447*TBrk/P)/VolBr;
VKr:=100*MolKrBr*(0.00831447*TBrk/P)/VolBr;
VXe:=100*MolXeBr*(0.00831447*TBrk/P)/VolBr;
str(Denssa:13:3,calcstr1);
str(DensBr:13:3,calcstr2);
str(a:13:2,calcstr3);
str(VN:13:4,calcstr4);
str(VO:13:4,calcstr5);
str(VCO2:13:4,calcstr6);
str(VV:13:4,calcstr7);
str(VArg:13:4,calcstr8);
str(VNe:13:4,calcstr9);
str(VHe:13:4,calcstr10);
str(VKr:13:4,calcstr11);
str(VXe:13:4,calcstr12);
form16.canvas.textout(0,100,'SURROUNDING AIR: DENSITY is: '+calcstr1+' kg/m^3.');
form16.canvas.textout(0,130,'BREATH: DENSITY is: '+calcstr2+' kg/m^3.');
form16.canvas.textout(0,170,'BREATH: ACCELERATION (negative is down and positive is up) is: '+calcstr3+' m/s^2.');
form16.canvas.textout(0,210,'Breath % vol N2: '+calcstr4+'%.');
form16.canvas.textout(0,240,'Breath % vol O2: '+calcstr5+'%.');
form16.canvas.textout(0,270,'Breath % vol CO2: '+calcstr6+'%.');
form16.canvas.textout(0,300,'Breath % vol H20(g): '+calcstr7+'%.');
form16.canvas.textout(0,330,'Breath % vol Ar: '+calcstr8+'%.');
form16.canvas.textout(0,360,'Breath % vol Ne: '+calcstr9+'%.');
form16.canvas.textout(0,390,'Breath % vol He: '+calcstr10+'%.');
form16.canvas.textout(0,420,'Breath % vol Kr: '+calcstr11+'%.');
form16.canvas.textout(0,450,'Breath % vol Xe: '+calcstr12+'%.');
Td:=Ts;
TDI:=Td;
RHDI:=RHs;
DI:= (2*TDI) + (RHDI/100*TDI)+24;
Pw:=P/101.325;
Tw:=Td;
repeat
Tw:=Tw-0.001;
Aw:=611.2*exp(17.502*Tw/(240.97+Tw))-66.8745*(1+0.00115*Tw)*Pw*(Td-Tw);
Bw:=6.112*exp(17.502*Td/(240.97+Td));
RHSw:=Aw/Bw;
until (RHSw<=rhs);
RH:=RHs;
Tdew:=Td;
Psat:=0.61121*exp((18.678-Td/234.5)*Td/(257.14+Td));
Pvd:=(RH/100)*Psat;
repeat
Tdew:=Tdew-0.001;
Psat:=0.61121*exp((18.678-Tdew/234.5)*Tdew/(257.14+Tdew));
until (Psat<=Pvd);
LCL:=125*(Td-Tdew);
str(DI:13:1,calcstr13);
str(Tw:13:2,calcstr14);
str(Tdew:13:2,calcstr15);
str(LCL:13:2,calcstr16);
form16.canvas.textout(0,490,'Discomfort Index: '+calcstr13+' (90 to 100 very uncomfortable, 100 to 110 extremely uncomfortable, >110 hazardous).');
form16.canvas.textout(0,520,'Wet Bulb T: '+calcstr14+' deg C');
form16.canvas.textout(0,550,'Dew point: '+calcstr15+' deg C.');
form16.canvas.textout(0,580,'LCL: '+calcstr16+' m.');
1: end;
The inputs to the program are: Ts (temperature in deg C of the surrounding air, eg 38), RHs (relative humidity of the surrounding air in %, eg 34), P (the atmospheric air pressure in kPa, eg 100), PercO (the percentage of oxygen used up in breathing, eg 25), Tbr (the temperature of the breath in deg C, eg 37). The Delph1 2 code is below:
label 1;
var
PvBr,Mas,Mvs,Pvs,Psatws,PercO,Ts,Tsk,P,RHs,Tbr,Tbrk,Psatwbr,Denssa,Densbr,a,molDaBr,
MolNBr,MolOBri,MolOBrf,molCO2Bri,molCO2Brf,MolVBr,MolArBr,MolNeBr,MolHeBr,Mol,
MolKrBr,MolXeBr,VN,VO,VCO2,VV,VArg,VNe,VHe,VKr,VXe,MNbr,MOBrf,MCO2brf,MVBr,
MArBr,MNeBr,MHeBr,MKrBr,MXeBr,MBr,VolBr,TDI,Td,RHDI,DI,Pw,Tw,Aw,Bw,RHSw,Psat,
Tdew,Pvd,RH,LCL:extended;
errors1:boolean;
calcstr2,calcstr1,calcstr3,calcstr4,calcstr5,calcstr6,calcstr7,
calcstr8,calcstr9,calcstr10,calcstr11,calcstr12,calcstr13,calcstr14,calcstr15,calcstr16,
calcstr17,calcstr18,calcstr19,calcstr20,calcstr21,calcstr22,calcstr23,calcstr24:string[30];
begin
errors1:=false;
form16.hide;
form16.show;
try
Ts:=strtofloat(form16.edit1.Text);
RHs:=strtofloat(form16.edit2.Text);
P:=strtofloat(form16.edit3.Text);
PercO:=strtofloat(form16.edit4.Text);
Tbr:=strtofloat(form16.edit5.Text);
except
errors1:=true;
end;
if (errors1=true) or
(Ts<0) or (Ts>70) or (RHs<=0) or (RHs>100) or (P<10) or (P>150) or(percO<0) or (percO>90)
or (Tbr<0) or (Tbr>70) then begin
form16.canvas.textout(0,100,'CHECK ENTRIES.');
goto 1
end;
Tsk:=Ts+273.15;
Tbrk:=Tbr+273.15;
Psatws:=0.61121*exp((18.678-Ts/234.5)*Ts/(257.14+Ts));
Psatwbr:=0.61121*exp((18.678-Tbr/234.5)*Tbr/(257.14+Tbr));
Pvs:=Psatws*RHs/100;
Mvs:=Pvs/(0.4615*Tsk);
Mas:=(P-Pvs)/(0.287*Tsk);
PvBr:=Psatwbr;
molDaBr:=100-(PvBr/P)*100;
MolNBr:=78.03/100*moldaBr;
MolOBri:=20.99/100*molDaBr;
MolOBrf:=MolOBri-(percO/100*molObri);
MolCO2bri:=(0.033/100)*moldaBr;
MolCO2Brf:=molCO2bri+(percO/100*molObri);
molVbr:=100*Pvbr/P;
molArBr:=(0.94/100)*moldabr;
molNeBr:=(0.0015/100)*moldabr;
molHeBr:=(0.000524/100)*moldabr;
molKrBr:=(0.00014/100)*moldabr;
molXeBr:=(0.000006/100)*moldabr;
MNbr:=molNbr*0.028013;
MObrf:=molOBrf*0.031999;
MCO2Brf:=molCO2Brf*0.04401;
MVBr:=molVBr*0.018015;
MArBr:=molArBr*0.039948;
MNeBr:=molNeBr*0.020183;
MHeBr:=molHeBr*0.004003;
MKrBr:=molKrBr*0.08380;
MXeBr:=molXeBr*0.13130;
Denssa:=Mvs+Mas;
MBr:=MNbr+MOBrf+MCO2Brf+MVBr+MArBr+MNeBr+MHeBr+MKrBr+MXeBr;
VolBr:=100*0.00831447*Tbrk/P;
DensBr:=MBr/VolBr;
a:=9.80665*((denssa/densbr)-1);
VN:=100*MolNBr*(0.00831447*TBrk/P)/VolBr;
VO:=100*MolOBrf*(0.00831447*TBrk/P)/VolBr;
VCO2:=100*MolCO2Brf*(0.00831447*TBrk/P)/VolBr;
VV:=100*MolVBr*(0.00831447*TBrk/P)/VolBr;
VArg:=100*MolArBr*(0.00831447*TBrk/P)/VolBr;
VNe:=100*MolNeBr*(0.00831447*TBrk/P)/VolBr;
VHe:=100*MolHeBr*(0.00831447*TBrk/P)/VolBr;
VKr:=100*MolKrBr*(0.00831447*TBrk/P)/VolBr;
VXe:=100*MolXeBr*(0.00831447*TBrk/P)/VolBr;
str(Denssa:13:3,calcstr1);
str(DensBr:13:3,calcstr2);
str(a:13:2,calcstr3);
str(VN:13:4,calcstr4);
str(VO:13:4,calcstr5);
str(VCO2:13:4,calcstr6);
str(VV:13:4,calcstr7);
str(VArg:13:4,calcstr8);
str(VNe:13:4,calcstr9);
str(VHe:13:4,calcstr10);
str(VKr:13:4,calcstr11);
str(VXe:13:4,calcstr12);
form16.canvas.textout(0,100,'SURROUNDING AIR: DENSITY is: '+calcstr1+' kg/m^3.');
form16.canvas.textout(0,130,'BREATH: DENSITY is: '+calcstr2+' kg/m^3.');
form16.canvas.textout(0,170,'BREATH: ACCELERATION (negative is down and positive is up) is: '+calcstr3+' m/s^2.');
form16.canvas.textout(0,210,'Breath % vol N2: '+calcstr4+'%.');
form16.canvas.textout(0,240,'Breath % vol O2: '+calcstr5+'%.');
form16.canvas.textout(0,270,'Breath % vol CO2: '+calcstr6+'%.');
form16.canvas.textout(0,300,'Breath % vol H20(g): '+calcstr7+'%.');
form16.canvas.textout(0,330,'Breath % vol Ar: '+calcstr8+'%.');
form16.canvas.textout(0,360,'Breath % vol Ne: '+calcstr9+'%.');
form16.canvas.textout(0,390,'Breath % vol He: '+calcstr10+'%.');
form16.canvas.textout(0,420,'Breath % vol Kr: '+calcstr11+'%.');
form16.canvas.textout(0,450,'Breath % vol Xe: '+calcstr12+'%.');
Td:=Ts;
TDI:=Td;
RHDI:=RHs;
DI:= (2*TDI) + (RHDI/100*TDI)+24;
Pw:=P/101.325;
Tw:=Td;
repeat
Tw:=Tw-0.001;
Aw:=611.2*exp(17.502*Tw/(240.97+Tw))-66.8745*(1+0.00115*Tw)*Pw*(Td-Tw);
Bw:=6.112*exp(17.502*Td/(240.97+Td));
RHSw:=Aw/Bw;
until (RHSw<=rhs);
RH:=RHs;
Tdew:=Td;
Psat:=0.61121*exp((18.678-Td/234.5)*Td/(257.14+Td));
Pvd:=(RH/100)*Psat;
repeat
Tdew:=Tdew-0.001;
Psat:=0.61121*exp((18.678-Tdew/234.5)*Tdew/(257.14+Tdew));
until (Psat<=Pvd);
LCL:=125*(Td-Tdew);
str(DI:13:1,calcstr13);
str(Tw:13:2,calcstr14);
str(Tdew:13:2,calcstr15);
str(LCL:13:2,calcstr16);
form16.canvas.textout(0,490,'Discomfort Index: '+calcstr13+' (90 to 100 very uncomfortable, 100 to 110 extremely uncomfortable, >110 hazardous).');
form16.canvas.textout(0,520,'Wet Bulb T: '+calcstr14+' deg C');
form16.canvas.textout(0,550,'Dew point: '+calcstr15+' deg C.');
form16.canvas.textout(0,580,'LCL: '+calcstr16+' m.');
1: end;
Friday, April 26, 2019
Rain from dry and wet air layers
When wind blows up a mountain the air cools at about 9.8 deg C for every 1000 m rise (the dry adiabatic lapse rate for air that is not saturated). However, if the air is moist, one might have pockets where condensation occurs and this releases heat of condensation, keeping the air warmer.
What sometimes happens is that one has a layer of moist air under a layer of drier air and as it blows up the mountain the top dry layer cools at 9.8 deg C for every 1000 m rise and the moist layer below might cool at an average of, say, 8 deg C per 1000m m rise.
So the bottom moist layer is continuously getting warmer relative to the top dry layer. This causes the bottom layer to continuously get less dense than the top layer and so the bottom rises by convection as well as by being blown up the mountain. The bottom layer could rise high enough by this method for rain to form, even if the mountains are low.
It does not take much to heat moist air, but it does take a lot of heat to evaporate water to make air moist. So if one could heat the air just above the sea, where it is moist, by infrared radiation (evaporation of spray would also occur), then one could have more rain even with low mountains. One could do this using solar power to heat dark objects on land and then reflect the infrared heat from the dark objects to the air above the sea surface. When the wind blows to land rain could result even with low mountains.
From
https://journals.ametsoc.org/doi/pdf/10.1175/1520-0442%281991%29004<1023%3AHPOTO>2.0.CO%3B2
it appears that the RH is usually greatest at about 940 mb (about 600 m above the ocean). If one could increase RH to about 90% in the first 500 m or so above the ocean the above method could work well.
What sometimes happens is that one has a layer of moist air under a layer of drier air and as it blows up the mountain the top dry layer cools at 9.8 deg C for every 1000 m rise and the moist layer below might cool at an average of, say, 8 deg C per 1000m m rise.
So the bottom moist layer is continuously getting warmer relative to the top dry layer. This causes the bottom layer to continuously get less dense than the top layer and so the bottom rises by convection as well as by being blown up the mountain. The bottom layer could rise high enough by this method for rain to form, even if the mountains are low.
It does not take much to heat moist air, but it does take a lot of heat to evaporate water to make air moist. So if one could heat the air just above the sea, where it is moist, by infrared radiation (evaporation of spray would also occur), then one could have more rain even with low mountains. One could do this using solar power to heat dark objects on land and then reflect the infrared heat from the dark objects to the air above the sea surface. When the wind blows to land rain could result even with low mountains.
From
https://journals.ametsoc.org/doi/pdf/10.1175/1520-0442%281991%29004<1023%3AHPOTO>2.0.CO%3B2
it appears that the RH is usually greatest at about 940 mb (about 600 m above the ocean). If one could increase RH to about 90% in the first 500 m or so above the ocean the above method could work well.
Friday, March 1, 2019
Delphi Code Example
START
form5.canvas.font.size:=10;
form5.canvas.font.style:=[fsbold];
form5.canvas.font.color:=clblack;
form5.edit1.text:='';
form5.edit2.text:='';
form5.edit3.text:='';
form5.show;
PROCEDURE
label 1;
var
TdewC,T1C,T2C,Ht,LCL,RHd,Tdew,td,T1,T2,densair,m,T,Rh,Rh1,Rh2,P,V,Tsat,Pa,Pv,
Pvd,Psat,omega,tdp,pdp,Va,Vv,Pvs,Pas,omegas,Mv,Ma,Psat1,Psat2,
relh,Tw,LCLC,HTC,LCLT1:extended;
errors1:boolean;
calcstr8,calcstr2,calcstr1,calcstr3,calcstr4,calcstr5,calcstr6,calcstr7:string[30];
begin
errors1:=false;
form5.hide;
form5.show;
Memo1.clear;
Memo1.font.size:=12;
Memo1.font.style:=[fsbold];
Memo1.font.color:=clblack;
try
T1:=strtofloat(form5.edit1.Text);
Rh1:=strtofloat(form5.edit2.Text);
T2:=strtofloat(form5.edit3.Text);
except
errors1:=true;
end;
if (errors1=true) or
(t1<0.01) or (t1>69) or (rh1<0) or (rh1>100) or
(t2<0.1) or (t2>70) or (T2<T1+0.02)
then begin
form5.Memo1.Lines.Add('CHECK ENTRIES.');
goto 1
end;
T1C:=T1;
ht:=1000*(T2-T1)/3.3;
RH1:=RH1/100;
Psat1:=0.61121*exp((18.678-T1/234.5)*T1/(257.14+T1));
Pv:=Psat1*RH1;
Psat2:=0.61121*exp((18.678-T2/234.5)*T2/(257.14+T2));
Rh2:=Pv/Psat2; {ie partial pressure of water vapour/psat2}
str(rh2*100:9:2,calcstr1);
form5.Memo1.lines.Add('Final relative humidity (at T2) is: '+calcstr1+'%.');
Tdew:=T1;
repeat
Tdew:=Tdew-0.001;
Psat:=0.61121*exp((18.678-Tdew/234.5)*Tdew/(257.14+Tdew));
until (Psat<=Pv);
str(Tdew:12:2,calcstr2);
form5.Memo1.Lines.Add('Dew point is: '+calcstr2+' deg C.');
1: end;
form5.canvas.font.size:=10;
form5.canvas.font.style:=[fsbold];
form5.canvas.font.color:=clblack;
form5.edit1.text:='';
form5.edit2.text:='';
form5.edit3.text:='';
form5.show;
PROCEDURE
label 1;
var
TdewC,T1C,T2C,Ht,LCL,RHd,Tdew,td,T1,T2,densair,m,T,Rh,Rh1,Rh2,P,V,Tsat,Pa,Pv,
Pvd,Psat,omega,tdp,pdp,Va,Vv,Pvs,Pas,omegas,Mv,Ma,Psat1,Psat2,
relh,Tw,LCLC,HTC,LCLT1:extended;
errors1:boolean;
calcstr8,calcstr2,calcstr1,calcstr3,calcstr4,calcstr5,calcstr6,calcstr7:string[30];
begin
errors1:=false;
form5.hide;
form5.show;
Memo1.clear;
Memo1.font.size:=12;
Memo1.font.style:=[fsbold];
Memo1.font.color:=clblack;
try
T1:=strtofloat(form5.edit1.Text);
Rh1:=strtofloat(form5.edit2.Text);
T2:=strtofloat(form5.edit3.Text);
except
errors1:=true;
end;
if (errors1=true) or
(t1<0.01) or (t1>69) or (rh1<0) or (rh1>100) or
(t2<0.1) or (t2>70) or (T2<T1+0.02)
then begin
form5.Memo1.Lines.Add('CHECK ENTRIES.');
goto 1
end;
T1C:=T1;
ht:=1000*(T2-T1)/3.3;
RH1:=RH1/100;
Psat1:=0.61121*exp((18.678-T1/234.5)*T1/(257.14+T1));
Pv:=Psat1*RH1;
Psat2:=0.61121*exp((18.678-T2/234.5)*T2/(257.14+T2));
Rh2:=Pv/Psat2; {ie partial pressure of water vapour/psat2}
str(rh2*100:9:2,calcstr1);
form5.Memo1.lines.Add('Final relative humidity (at T2) is: '+calcstr1+'%.');
Tdew:=T1;
repeat
Tdew:=Tdew-0.001;
Psat:=0.61121*exp((18.678-Tdew/234.5)*Tdew/(257.14+Tdew));
until (Psat<=Pv);
str(Tdew:12:2,calcstr2);
form5.Memo1.Lines.Add('Dew point is: '+calcstr2+' deg C.');
1: end;
Monday, February 25, 2019
Shortened Water from Air code
T1 is the temperature of the surrounding air in deg C, RH1 is the relative humidity in percent, P1 is the atmospheric pressure in kPa (at sea level it is about 101.325 kPa), T2 is the temperature to which the air will be cooled, V1 is the volume of air you are going to cool in cubic metres. Code below:
label 1;
var
EnthV1MWh,EnthV1kWh,EnthV1,NokgdaV1,Enthd,Psatw1,Psatw2,Tk1,Tk2,Mvpa1,Enth1,Enth2,Ma1,Mv1,HR1,HR2,
Pv1,PV2,T1,RH1,P1,P2,T2,V1,kgDryAir,EdpkgDA,EnthDV,HR1mHR2,HR1mHR2V,kgpkWh,Td,RH,Psat,Pv,Tdew:extended;
errors1:boolean;
calcstr2,calcstr1,calcstr3,calcstr4,calcstr5,calcstr6,calcstr7,
calcstr8,calcstr9,calcstr10,calcstr11,calcstr12,calcstr13,calcstr14,
calcstr15,calcstr16,calcstr17,calcstr18:string[30];
begin
errors1:=false;
form3.hide;
form3.show;
try
T1:=strtofloat(form3.edit1.Text);
RH1:=strtofloat(form3.edit2.Text);
P1:=strtofloat(form3.edit3.Text);
T2:=strtofloat(form3.edit4.Text);
V1:=strtofloat(form3.edit5.Text);
except
errors1:=true;
end;
if (errors1=true) or
(T1<1) or (T1>60) or (RH1<=0) or (RH1>100) or (P1<20) or (P1>120) or (T2<1) or
(T2>60) or (V1<0)
then begin
form3.canvas.textout(0,100,'CHECK ENTRIES.');
goto 1
end;
Tk1:=T1+273.15;
Tk2:=T2+273.15;
Td:=T1;
RH:=RH1;
Psat:=0.61121*exp((18.678-Td/234.5)*Td/(257.14+Td));
Pv:=(RH/100)*Psat;
Tdew:=Td;
repeat
Tdew:=Tdew-0.001;
Psat:=0.61121*exp((18.678-Tdew/234.5)*Tdew/(257.14+Tdew));
until (Psat<=Pv);
str(Tdew:12:2,calcstr18);
Psatw1:=0.61121*exp((18.678-T1/234.5)*T1/(257.14+T1));
Pv1:=Psatw1*RH1/100;
HR1:=0.622*Pv1/(P1-Pv1);
Ma1:=(P1-Pv1)/(0.287*Tk1);
Enth1:=(1.005*T1)+HR1*(2501.3+1.82*T1);
Psatw2:=0.61121*exp((18.678-T2/234.5)*T2/(257.14+T2));
HR2:=Hr1;
P2:=P1;
if (Psatw2<PV1) then begin
Pv2:=Psatw2;
HR2:=0.622*Pv2/(P2-Pv2);
form3.canvas.textout(0,120,'Water condenses out. Dew point is:'+calcstr18+' deg C');
end;
Enth2:=(1.005*T2)+HR2*(2501.3+1.82*T2);
kgDryAir:=V1*Ma1;
EdpkgDA:=(Enth2-Enth1);
EnthDV:=kgDryAir*EdpkgDA;
HR1mHR2:=HR1-HR2;
HR1mHR2V:=kgDryAir*HR1mHR2;
kgpkWh:=(-1)*HR1mHR2V/(EnthDV/3600);
str((EnthDV/3600),calcstr7);
str(HR1mHR2V,calcstr10);
str(kgpkWh:13:4,calcstr17);
form3.canvas.textout(0,150,'Total mass of water condensing out of the air is: '+calcstr10+' kg.');
form3.canvas.textout(0,180,'Total heat added to the air is: '+calcstr7+' kWh.');
form3.canvas.textout(0,210,'Number of kg of water produced per kWh of heat removed from air: '+calcstr17+' kg/kWh.');
form3.canvas.textout(0,240,'Dew point temperature is: '+calcstr18+' deg C.');
1: end;
label 1;
var
EnthV1MWh,EnthV1kWh,EnthV1,NokgdaV1,Enthd,Psatw1,Psatw2,Tk1,Tk2,Mvpa1,Enth1,Enth2,Ma1,Mv1,HR1,HR2,
Pv1,PV2,T1,RH1,P1,P2,T2,V1,kgDryAir,EdpkgDA,EnthDV,HR1mHR2,HR1mHR2V,kgpkWh,Td,RH,Psat,Pv,Tdew:extended;
errors1:boolean;
calcstr2,calcstr1,calcstr3,calcstr4,calcstr5,calcstr6,calcstr7,
calcstr8,calcstr9,calcstr10,calcstr11,calcstr12,calcstr13,calcstr14,
calcstr15,calcstr16,calcstr17,calcstr18:string[30];
begin
errors1:=false;
form3.hide;
form3.show;
try
T1:=strtofloat(form3.edit1.Text);
RH1:=strtofloat(form3.edit2.Text);
P1:=strtofloat(form3.edit3.Text);
T2:=strtofloat(form3.edit4.Text);
V1:=strtofloat(form3.edit5.Text);
except
errors1:=true;
end;
if (errors1=true) or
(T1<1) or (T1>60) or (RH1<=0) or (RH1>100) or (P1<20) or (P1>120) or (T2<1) or
(T2>60) or (V1<0)
then begin
form3.canvas.textout(0,100,'CHECK ENTRIES.');
goto 1
end;
Tk1:=T1+273.15;
Tk2:=T2+273.15;
Td:=T1;
RH:=RH1;
Psat:=0.61121*exp((18.678-Td/234.5)*Td/(257.14+Td));
Pv:=(RH/100)*Psat;
Tdew:=Td;
repeat
Tdew:=Tdew-0.001;
Psat:=0.61121*exp((18.678-Tdew/234.5)*Tdew/(257.14+Tdew));
until (Psat<=Pv);
str(Tdew:12:2,calcstr18);
Psatw1:=0.61121*exp((18.678-T1/234.5)*T1/(257.14+T1));
Pv1:=Psatw1*RH1/100;
HR1:=0.622*Pv1/(P1-Pv1);
Ma1:=(P1-Pv1)/(0.287*Tk1);
Enth1:=(1.005*T1)+HR1*(2501.3+1.82*T1);
Psatw2:=0.61121*exp((18.678-T2/234.5)*T2/(257.14+T2));
HR2:=Hr1;
P2:=P1;
if (Psatw2<PV1) then begin
Pv2:=Psatw2;
HR2:=0.622*Pv2/(P2-Pv2);
form3.canvas.textout(0,120,'Water condenses out. Dew point is:'+calcstr18+' deg C');
end;
Enth2:=(1.005*T2)+HR2*(2501.3+1.82*T2);
kgDryAir:=V1*Ma1;
EdpkgDA:=(Enth2-Enth1);
EnthDV:=kgDryAir*EdpkgDA;
HR1mHR2:=HR1-HR2;
HR1mHR2V:=kgDryAir*HR1mHR2;
kgpkWh:=(-1)*HR1mHR2V/(EnthDV/3600);
str((EnthDV/3600),calcstr7);
str(HR1mHR2V,calcstr10);
str(kgpkWh:13:4,calcstr17);
form3.canvas.textout(0,150,'Total mass of water condensing out of the air is: '+calcstr10+' kg.');
form3.canvas.textout(0,180,'Total heat added to the air is: '+calcstr7+' kWh.');
form3.canvas.textout(0,210,'Number of kg of water produced per kWh of heat removed from air: '+calcstr17+' kg/kWh.');
form3.canvas.textout(0,240,'Dew point temperature is: '+calcstr18+' deg C.');
1: end;
Subscribe to:
Posts (Atom)