Don Hull wrote:
> What would be the definitive book on passive solar?
I don't know of a good current book. I use basic high-school physics,
eg Ohm's law for heatflow. My back of the envelope solar house heating
designs start by finding the worst-case month with TMY2 monthly
average data, the one with the least Btu/DD, eg an average 30 F
January day in Phila with 1000 Btu/ft^2 of sun per day on a south wall
and 1000/(65-30) = 29 Btu/DD.
Then I figure cloudy days are like coin flips, so a house that can
store enough heat for 1 cloudy day can be at most 50% solar heated,
with 75% for 2 days... and 97% for 5 days. If a house cools from 70 to
60 F over 5 30 F cloudy days, RC = -5x24/ln((60-30)/(70-30)) = 417
hours. Direct gain doesn't do well... an 8' R32 cube with an 8'x8' R4
window with 50% solar transmission and a G = 26 Btu/h-F conductance
needs C = RCxG = 417x26 = 10.8K Btu/F, eg 2168 8"x8"x16" hollow
concrete blocks inside, 2.5X the cube volume, which doesn't leave much
room for people.
With another R32 wall behind the window, G = 12 on cloudy days,
approximately, with a mere 1001 blocks. If the blocks are under the
ceiling with foil beneath, as in the Barra system, they can be warmer
than 70 F and store more heat. If 8'x8' of R2 air heater glazing with
80% solar transmission collects 0.8x1000x64ft^2 = 51.2K Btu/day =
6h(T-30)64/R2 during the day + 18h(70-30)64/R32 at night + 24h(T-30)64/
R32 for the ceiling + 24h(70-30)4x64ft^2/R32 for the other 4 walls,
then the ceiling mass temp T = 205 F. If it's only 130 because of
radiation loss through the glazing and it can keep the cube 70 F when
it's 80 F and its average temperature is (130+80)/2 = 105 over 5
cloudy days when it loses 120h(105-30)64/R2 = 18K Btu through the
ceiling while the lower part of the cube loses 120h(70-30)5x64/R32 =
48K and 18K+48K = (130-80)C, C = 1320 Btu/F, only 264 blocks or 21.2
ft^3 of water in 4" trays under the ceiling, or a 2.77' 130 F water
cube.
Line 460 below uses thermosyphoning sunspace air with an old empirical
chimney rule: cfm = 16.6Asqrt(HdT), with Btu/h = cfmxdT,
approximately. The warmstore below is a 2'x3'x4' 140 F max water tank
heated and cooled by a 1000 Btu/h-F car radiator with its 2 12V fans,
which use 20 watts in series.
Nick
10 PI=4*ATN(1)
20 CLS:SCREEN 9:LINE (0,0)-(639,349),,B
30 TMIN=-20:TMAX=140:V=350/(TMAX-TMIN)'vertical scaling
40 FOR TR=0 TO TMAX STEP 20'plot temp ref lines
50 LINE (0,349-V*(TR-TMIN))-(639,349-V*(TR-TMIN)):NEXT
60 DS=0:DE=365'start and end display days
70 HS=24*DS:HE=24*DE'start and end display hours
80 XSF=640/(HE-HS)'horizontal scaling factor
90 AWWIND=36*60/144'west window area (ft^2)
100 GWWIND=AWWIND/4'west window conductance (Btu/h-F)
110 AWWALL=72-AWWIND'net west wall area (ft^2)
120 GWWALL=GWWIND+AWWALL/33'total west wall conductance (Btu/h-F)
130 GNWALL=90/28'north wall conductance (Btu/h-F)
140 GEWALL=72/28+0/(28+19)'east wall conductance (Btu/h-F)
150 GSWALL=90/33'south wall conductance (Btu/h-F)
160 GCEIL=72/33'ceiling conductance--6"FG + 2"board (Btu/h-F)
170 GH=GWWALL+GNWALL+GEWALL+GSWALL+GCEIL'cube conductance (Btu/h-F)
180 CH=800'cube capacitance--16 9'x4" ceiling pipes (Btu/F)
190 AHA=2*46.5*93/144'air heater area (ft^2)
200 AVA=.5'air heater vent area (ft^2)
210 AVH=(93-4)/12'vent height difference (ft)
220 KT=16.6*SQR(AVH)'thermosyphoning air constant
230 CW=2*3*4*62.33'warm store capacitance (Btu/F)
240 RCFM=1000'radiator fan cfm
250 RAH=2/AHA'air heater equivalent resistance
260 TW=110'initial warm store temp (F)
270 TH=70'initial cube temp
280 TAMIN=100'initialize min outdoor temp (F)
290 FOR YEAR=1 TO 2
300 AHMIN=1000'min cube temp (F)
310 EE=0'initialize electrical energy use (kWh)
320 OPEN "cutyear" FOR INPUT AS #1:LINE INPUT#1,H$
330 FOR H=1 TO 8760'TMY2 hours
340 INPUT#1,MONTH,DAY,HOUR,TA,WIND,TDP,SH,SS,SW,SN,SE
350 IH=(TH-TA)*GH'cube heat loss (Btu/h)
360 TH=TH-IH/CH'new cube temp
370 TTA=TA+2*.8*SS'Thevenin equivalent air heater temp (F)
380 IF HOUR>6 AND HOUR<22 THEN TT=70 ELSE TT=60
390 QHEAT=(TT-TH)*CH'cube heating need
400 IF QHEAT<0 THEN QHEAT=0:GOTO 570'cube needs no heat. Charge warm
store?
410 IF TTA<TH GOTO 500'no ss heat available. Warm cube with warmstore?
420 IF TTA-QHEAT*RAH-TH<0 GOTO 450'partial sunspace heating
430 KTH=QHEAT/(TTA-QHEAT*RAH-TH)^1.5'Kth for full sunspace heating
440 IF KTH<KT THEN TH=TT:GOTO 570'full sunspace heating
450 IAL=0
460 IA=(TTA-TH-(IAL/KT)^(2/3))/RAH'partial sunspace heating (Btu/h)
470 IF ABS(IA-IAL)>1 AND IA>0 THEN IAL=IA:GOTO 460'iterate
480 TH=TH+IA/CH
490 QHEAT=(TT-TH)*CH
500 AWARM=(TW-TH)*CW'available warmstore heat
510 IF AWARM<0 THEN GOTO 570'no warmstore heat available
520 IF QHEAT<AWARM THEN TH=TT:SHEAT=QHEAT:GOTO 540'full target heating
530 TH=TH+AWARM/CH:SHEAT=AWARM'partial target heating
540 TW=TW-SHEAT/CW'new warmstore temp (F)
550 IF MONTH<>12 AND MONTH<>1 GOTO 570
560 EE=EE+.12*SHEAT/(TW-TH)/1000'energy used for pump and fan (kWh)
570 IF TTA-QHEAT*RAH<TW GOTO 640'no heat available for warmstore
580 QWARM=(140-TW)*CW'warmstore heating need (Btu)
590 IF QWARM<0 GOTO 640'warmstore needs no heat
600 IW=(TTA-QHEAT*RAH-TW)/(RAH+1/RCFM)'warmstore charging (Btu/h)
610 IF IW<QWARM THEN TW=TW+IW/CW ELSE TW=140'new warmstore temp
620 IF MONTH<>12 AND MONTH<>1 GOTO 640
630 IF QWARM<IW THEN EE=EE+.12*QWARM/IW ELSE EE=EE+.12'pump+fan energy
640 IF TH<AHMIN THEN AHMIN=TH'min cube temp (F)
650 IF H>HE OR YEAR=1 GOTO 730
660 X=(H-HS)*XSF'horizontal screen coordinate
670 PSET(X,349-V*(TA-TMIN))'plot ambient temp
680 IF TA<TAMIN THEN TAMIN=TA
690 'PSET(X,349-V*(SS/4-TMIN))'plot south sun
700 PSET(X,349-V*(TH-TMIN))'plot cube temp
710 'PSET(X,349-V*(TW-TMIN))'plot warm temp
720 IF DAY=1 AND HOUR=.5 THEN LINE (X,349)-(X,345)'mark months
730 NEXT H
740 CLOSE #1
750 NEXT YEAR
760 PA=1000*EE/2/30/24'average winter fan+pump power (watts)
770 PRINT "2000'";CH,,AHA,GH,TAMIN
780 PRINT "2010'";CW,TW,AHMIN,PA
800 60.0625 16.17208 -20.92
1495.92 138.2261 60 19.96858
Here's a 55-line program that converts a TMY2 file's global and
diffuse horizontal and direct normal radiation numbers into
Btu/h-ft^2 numbers on the ground and ESWN walls:
10 SCREEN 9:KEY OFF:CLS:PI=4*ATN(1)
15 LINE (0,0)-(639,349),,B
20 TMAX=100'max display temp (F)
40 XDF=640/8760:YDF=350/TMAX
50 FOR TR= 0 TO TMAX STEP 20'temp ref lines
60 LINE (0,349-YDF*(TR))-(639,349-YDF*(TR)):NEXT
70 OPEN "13739.tm2" FOR INPUT AS #1'NREL TMY2 file name (Phila)
80 OPEN "ecayear" FOR OUTPUT AS #2
90 LINE INPUT#1,S$'read header
100 CITY$=MID$(S$,8,25)
110 LAT=VAL(MID$(S$,40,2))+VAL(MID$(S$,43,2))/60
120 LON=VAL(MID$(S$,48,3))+VAL(MID$(S$,52,2))/60
130 PRINT#2,CITY$,LAT,LON
140 FOR H=1 TO 8760'hour of year
150 LINE INPUT#1,S$
160 MONTH=VAL(MID$(S$,4,2))'month of year (1-12)
170 DAY=VAL(MID$(S$,6,2))'day of month
180 HOUR=VAL(MID$(S$,8,2))-.5'hour of day
190 N=1+H/24'day of year (1 to 365)
200 TDB=VAL(MID$(S$,68,4))*.18+32'dry bulb temp (F)
210 TDP=VAL(MID$(S$,74,4))*.18+32'dew point temp (F)
220 PSET(XDF*H,349-YDF*(TDB))
230 IF DAY=1 AND HOUR=.5 THEN LINE (XDF*H,349)-(XDF*H,345)'tick months
240 WIND=VAL(MID$(S$,96,3))*.22371'wind velocity (mph)
250 IGLOH=VAL(MID$(S$,18,4))*.317'global horizontal radiation (Btu/
ft^2)
260 PRINT#2,MONTH;DAY;HOUR;TDB;WIND;TDP;IGLOH;
270 IDIF=VAL(MID$(S$,30,4))*.317'diffuse horizontal radiation (Btu/
ft^2)
280 IDIR=VAL(MID$(S$,24,4))*.317'direct normal radiation (Btu/ft^2)
290 L=PI*LAT/180'Phila latitude (radians)
300 T=HOUR'solar time (EST)
310 X=-SIN(PI*23.45/180)*COS(2*PI*(N+10)/365.25)
320 D=ATN(X/SQR(-X*X+1))'sin^-1(x) = declination (radians)
330 W=2*PI*(T-12)/24'hour angle (radians)
340 X=COS(L)*COS(D)*COS(W)+SIN(L)*SIN(D)
350 THETAS=-ATN(X/SQR(-X*X+1))+PI/2'cos^-1(x) = sun zenith angle
(radians)
360 X=COS(D)*SIN(W)/SIN(THETAS)
370 IF X^2 >=1 THEN PHIS=-1.570796327#:GOTO 390
380 PHIS=ATN(X/SQR(-X*X+1))'sin^-1(x) = sun azimuth angle (radians)
390 FOR PHIPD=0 TO 180 STEP 90'azimuth angle of plane (degrees)
400 PHIP=PI*PHIPD/180
410 X=SIN(THETAS)*COS(PHIS-PHIP)
420 THETAI=-ATN(X/SQR(-X*X+1))+PI/2'incidence angle to surface
(radians)
430 IF THETAI>=PI/2 THEN THETAI=PI/2
440 RHOG=.2'ground reflectance
450 IGLOP=IDIR*COS(THETAI)+IDIF/2+IGLOH*RHOG/2'radiation on surface
(Btu/ft^2)
460 PRINT#2,IGLOP;
470 'IF PHIPD = 0 THEN PSET(XDF*H,349-IGLOP)
480 NEXT PHIPD
490 PHIP=PI*270/180
500 X=SIN(THETAS)*COS(PHIS-PHIP)
510 THETAI=-ATN(X/SQR(-X*X+1))+PI/2'incidence angle to surface
(radians)
520 IF THETAI>=PI/2 THEN THETAI=PI/2
530 IGLOP=IDIR*COS(THETAI)+IDIF/2+IGLOH*RHOG/2'radiation on surface
Btu/ft^2)
540 PRINT#2,IGLOP
550 NEXT H
Nick