home *** CD-ROM | disk | FTP | other *** search
/ The World of Computer Software / World_Of_Computer_Software-02-387-Vol-3of3.iso / h / house_ii.zip / FOR / HOUS_II.FOR < prev    next >
Text File  |  1992-05-11  |  11KB  |  334 lines

  1. C  HOUS_II.FOR  FILE
  2. C-----RESIDENTIAL SPACE-CONDITIONING PROGRAM
  3. C  This program simulates the dynamic operation of a space conditioning
  4. C  system in a residential environment. Structure dynamic temperatures
  5. C  are computed from structure information in response to weather data.
  6. C
  7. C  Please read the README screens, if you have not already done so.
  8. C-----
  9. CMDK NHRO
  10. CMDK NHRP
  11. CMDK NZN
  12. CMDK NIWL
  13. CMDK NOUTDY
  14. CMDK NHBK
  15. CMDK NWL
  16. CMDK NZN7
  17. CMDK NZW
  18. CMDK ACHBQ
  19. CMDK ACHLQ
  20. CMDK BLKSV
  21. CMDK TSTB4
  22. CMDK COLLEC
  23. CMDK EBALA
  24. CMDK ENCBK1
  25. CMDK HANDBK
  26. CMDK IWETHR
  27. CMDK IZZQ
  28. CMDK OUTPUT
  29. CMDK OWETHR
  30. CMDK PRT1
  31. CMDK QACCMQ
  32. CMDK QUAYCH
  33. CMDK QUAYLE
  34. CMDK SIMA
  35. CMDK SOILB
  36. CMDK SOLARB
  37. CMDK STRUCA
  38. CMDK TEMP1
  39. CMDK TIMEB
  40. CMDK BLKTM2
  41. CMDK TSTATC
  42. CMDK UABAS
  43.       CHARACTER*8 CDAY (7)
  44.       INTEGER NDAYCUM(12), NROUT(24)
  45.       INTEGER IPASS(NOUTDY),IPASY(NOUTDY)
  46.       REAL    ACINFL(NZN), ATOUT(12,24), C(5),
  47.      +        DQINT (24), DSOLRH(24), DTOB(24), DWHM(24), DWINT(24),
  48.      +        DWSPED(24),                FLOWIN(NZN),
  49.      +        QINFC(NZN), QINFS(NZN),  ODDBM(25),
  50.      +        TIMEAN(NZN), TISUM(NZN), TMRMN(NZN), TMRSUM(NZN),
  51.      +        WINFC(NZN), WINFSS(NZN)
  52. C     REAL COMFTT(11,21), XHUM1(22), COMFTS(11,21)
  53. C
  54. C
  55.       OPEN(60,FILE='TAPE60',STATUS='NEW',IOSTAT=IO6)
  56.       IF(IO6.NE.0)THEN
  57.         WRITE(60,*)' HOUS_II: CANT OPEN MAIN OUTPUT FILE ON TAPE60'
  58.         STOP ' HOUS_II: CANT OPEN MAIN OUTPUT FILE ON TAPE60'
  59.         ENDIF
  60.       OPEN(1,FILE='TAPE1',STATUS='NEW',IOSTAT=IO1)
  61.       IF(IO1.NE.0)THEN
  62.         WRITE(60,*)' HOUS_II: PROBLEM WITH OPENING TAPE1'
  63.         STOP ' HOUS_II: CANT OPEN TAPE1 FOR OUTPUT OF REL HUM SWINGS!!!'
  64.         ENDIF
  65.       OPEN(5,FILE='TAPE5',STATUS='OLD',IOSTAT=IO5)
  66.       IF(IO5.NE.0)THEN
  67.         WRITE(60,*)' HOUS_II: CANT OPEN MAIN INPUT FILE ON TAPE5'
  68.         STOP ' HOUS_II: CANT OPEN MAIN INPUT FILE ON TAPE5'
  69.         ENDIF
  70.       OPEN(11,FILE='TAPE11',STATUS='NEW',IOSTAT=IO11)
  71.       IF(IO11.NE.0)THEN
  72.         WRITE(60,*)' HOUS_II: PROBLEM WITH OPENING TAPE11'
  73.         STOP ' HOUS_II: CANT OPEN TAPE11 FOR OUTPUT OF TEMP SWINGS!!!'
  74.       ENDIF
  75. C-----INITIALIZATIONS
  76.       DATA CDAY   /'1ST DAY', '2ND DAY', '3RD DAY', '4TH DAY',
  77.      +   '5TH DAY ', '6TH DAY', '7TH/DAY'/
  78.       DATA IPASS  /NOUTDY*1.0/
  79.       DATA NDAYCUM/31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334,
  80.      +   365/
  81.       DATA TBAS   /80.0/
  82.       DATA WINT   /0.0/
  83.       DATA ITMLS/-1/
  84. C      DATA XHUM1  /0.030, 0.020, 0.019, 0.018, 0.017, 0.016, 0.015,
  85. C     1   0.014, 0.013, 0.012, 0.011, 0.010, 0.009, 0.008, 0.007, 0.006,
  86. C     2   0.005, 0.004, 0.003, 0.002, 0.001, 0.00001/
  87. C
  88.       TIME=.00001
  89. C
  90.       CALL VERSION
  91. C
  92. C-----START EXECUTION
  93. C  IDBG - =1, DEBUG PRINTS; =0, NO DEBUG PRINTS
  94.       READ(5,*)IDBG
  95.       WRITE(60,7091)IDBG
  96.       WRITE(*,*)' --> CALLING STRRUN FROM HOUS_II'
  97.       CALL STRRUN
  98.       CALL VERSION
  99.       CALL CURS(10)
  100.       WRITE(*,*)'             #########   BEGIN TIME-BASED CALCULAT',
  101.      +          'IONS  ##########'
  102. C              ITM1MAX IS MAX NO. OF DTIM1 TIMESTEPS IN 1 HR      
  103.       ITM1MAX=INT(1./DTIM1 + .01)
  104. C
  105. CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA START
  106. CAAAA START OF MONTHLY CYCLE LOOP
  107. CAAA
  108.       IMONTH=1
  109.   180 CONTINUE
  110.       IREP=0
  111.       KM=MONTH(IMONTH)
  112. C     WRITE(60,182)
  113.   182 FORMAT(1X,'CALLING STRMON HERE')
  114.       CALL STRMON (C, HDUM, IFWL, IPASS, IPASY, IWR, IWRB,
  115.      +   NDAYTOT, ODDBM, ODHUM, RDUM, TDUM, TEMPDV, WSC, WTFCT,IDBG)
  116. C
  117. C
  118. CBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB START
  119. CBBBB START OF SIZING LOOP
  120. CBBB
  121. 230   IDAYM=1
  122.       DO 241 J=1, NOUTDY
  123.          DO 240 I=1, 8
  124.             OUTDY (I, J)=0.
  125. 240         CONTINUE
  126. 241      CONTINUE
  127.       OUTDY (8, 44)=999.
  128. CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC START
  129. CCCCC** START OF LOOP ON MEAN, MAX, AND MIN DAYS
  130. CCCC          OR  IDAYM=...1....2........3....., 4, 5, 6, 7 (NDAYM MAX)
  131.   250 CONTINUE
  132. C     WRITE(60,252)
  133.   252 FORMAT(1X,'CALLING STRDAY HERE')
  134.       TIME=.00001
  135.       CALL STRDAY (ATOUT, C, CDAY, DQINT, DSOLRH, DTCR, DTIM1,
  136.      + DTIM2, DTOB, DWHM, DWINT, DWSPED, ENDT, HDUM, HUMON, ICYCCP,
  137.      + ICYC1, ICYC6, IDAYM, IDUM, INC, IREP, IRH, ISWING, KDAYM,
  138.      + MPRINT, NROUT, NZONG,ODDBM, ODHUM, QBASVN, QHUMT, QSPT, QWAS,
  139.      + RELHMI, RHDIR, RHIO, RODB, TBAS, TDIR, TDUM, TEMPDV, TIMAX,
  140.      + TIMAXN, TIMIN, TIO, TONMAX, TRO, VENCRV, WATER, WSC, IDBG)
  141. C
  142. C-----START LOOP OF NREP HRDY PERIODS FOR EACH SET OF HRDY DATA
  143. 480   TIME=0.00001
  144. C     NOTE:  TINDEX = HOUR-OF-YEAR PLUS 24. IT IS THE SAME AS THE TIME
  145. C                     INDEX IN THE SP43 DATA FILES
  146. C           TIMEOY = TIME OF YEAR
  147. C           JULDAY = JULIAN DAY OF THE YEAR
  148.       JULDAY=NDAYCUM (KM)-NDAYTOT (KM)+KDAYM
  149.       IF (ISDAY.NE.0) JULDAY=ISDAY+IDAYM-1
  150.       TINDEX=JULDAY*24.+TIME
  151.       TIMEOY=TINDEX-24.0
  152.       DO 488 JT=1,NROOMS
  153.       TMRSUM(JT)=0.
  154.   488 TISUM(JT)=0.
  155.       CALL ZERV(6,QBASF(1),QBASF(2),QBWBG(1),QBWBG(2),
  156.      +          QBWBG(3),QBWBG(4),0.,0.,0.,0.)
  157.       ISUM=0
  158.       IT=1
  159.       DATA ITRFU/0/
  160. C
  161. C-----START OF NEW HOUR
  162.   490 CONTINUE
  163.       IF (IGRND.GT.0) THEN
  164. C        CALL GROUND TEMP ROUTINE.     NOTE: TBASM LAGS ONE HOUR
  165.          SOLRHM=0.5*(SOLARH (IT+1)+SOLARH (IT))
  166.          TODDBM=0.5*(ODDB (IT+1)+ODDB (IT))
  167.          WSPEDM=0.5*(WSPEED (IT+1)+WSPEED (IT))
  168. C        WRITE(60,447)
  169.   447    FORMAT(1X,'CALLING GRNDEX HERE')
  170.          ICODE=3
  171.          CALL GRNDEX (TODDBM, WSPEDM, SOLRHM, KM)
  172.          ICODE=0
  173.       END IF
  174. C
  175. C-----WETHR BLOCK 4: PREPARE WEATHER DATA FOR FIRST TIME INCREMENT
  176.       IF (NSEQW.EQ.0 .OR. NSEQW.EQ.1 .OR. NSEQW.EQ.3) THEN
  177.          TODDB=ODDB (IT)-DTOB (IT)+TOFFSET
  178.          WODHUM=ODHUM (IT)-DWHM (IT)
  179.          WSPED=WSPEED (IT)-DWSPED (IT)
  180.          SOLRH=SOLARH (IT)-DSOLRH (IT)
  181.       ELSE IF (NSEQW.EQ.2) THEN
  182. C        WRITE(60,448)
  183.   448    FORMAT(1X,'CALLING WETHR HERE')
  184.          CALL WETHR (4, NSEQW)
  185.       END IF
  186.       DO 500 I=1, NIJ
  187.          SOLARL (I)=SOLAR (IT, I)-DSOLAR (IT, I)
  188. 500      CONTINUE
  189.       QINT=QINTL (IT)-DQINT (IT)
  190.       IF (IWAT.EQ.1) WINT=WINTL (IT)-DWINT (IT)
  191. CDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD START
  192. CDDDDD START OUTER TIME LOOP - FOR A HRDY PERIOD
  193. CDDDDD                       - NEW VALUES HAVE SUFFIX "N"
  194. CDDD
  195.       ITM1HR=0
  196.   510 CONTINUE
  197.       ITMQQ=INT(TIME+.001)
  198.       IF(ITMQQ.NE.ITMLS.AND.ITMQQ.NE.24)THEN
  199.         CALL CURS(12)
  200.         WRITE(*,7081)ITMQQ+1,JULDAY
  201.       ENDIF
  202.       ITMLS=ITMQQ
  203.       ITRFU=ITRFU+1
  204.       IDBG=0
  205. C     WRITE(60,449)
  206.   449 FORMAT(1X,'CALLING STRLP1 HERE')
  207.       CALL STRLP1 (ACINFL, ACMAX, ACMIN, AVENC2, DQINT, DSOLRH,
  208.      +DTCR, DTCRW, DTIM1, DTOB, DWHM, DWINT, DWSPED, FLOWIN,
  209.      +IDAYM, IDUM, NZONG,POWA, QCONRF, QINFC, QINFS, QINT,
  210.      +QLOSRF,QRAD,QSKY, RHA, RLOADL, RLOADS, SOLRH, TDUM, TODDBR,
  211.      +TRO, TS,VBMAX,VBMIN, VENCRV, WINFC, WINFSS, WINT, WODFAC,
  212.      +WODHMR, IDBG)
  213. C
  214. CEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE START
  215. CEEEE START OF INNER TIME LOOP
  216. CEEE
  217. C     WRITE(60,451)
  218.   451 FORMAT(1X,'CALLING LOOP HERE')
  219.       CALL LOOP (ACINFL, ATOUT, AVENC2, DTIM2, DTCRW, FLOC,
  220.      +FLOWIN, HDUM, HUMON, ICL1, ICYC1, ICYC6, ICYCCP, IDAYM, ILINES,
  221.      +INC, ISUM, MPRINT, NROUT, POWA, QBASVN, QCONRF, QCRAD,
  222.      +QHUMT, QINFC, QINFS, QINT, QLOSRF,  QRAD, QSKY, QSPT,
  223.      +QWAS, RDUM, RELHMI,RHA, RLOADL, RLOADS, TBAS, TDUM, TISUM,
  224.      +TMRSUM, TODDBR, TONMAX, TRO, TS, WATER, WINFC, WINFSS,
  225.      +WINT, WODFAC, WODHMR, IDBG)
  226.       ITM1HR=ITM1HR+1
  227. CEEE
  228. CEEEE END OF INNER TIMELOOP
  229. CEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE END
  230. C
  231.       CALL ENDLP1 (IDAYM,IREP, IRH, ISWING,
  232.      +NROOMS, POWA, RHA, RHDIR, RHIO, RLOADL, RLOADS, TDIR, TIMAX,
  233.      +TIMAXN, TIMIN, TIO, TS, IDBG)
  234. C
  235. C-----USE INTERPOLATED WEATHER VALUES BETWEEN HOURLY VALUES
  236.       IF(ITM1HR.LT.ITM1MAX)GO TO 510
  237. C              ADJUST TIME TO THE EXACT HOUR SO ERRORS DONT PROPAGATE
  238.       TIME=FLOAT(IT)
  239. C-----NEW HOUR. SAVE CYCLES. AVE BSMT. INCREMENT HOUR COUNTER
  240.       HROUT (28, IT)=ICYC1/2
  241.       CALL QACCUMH
  242.       IF (TIME.LT.ENDT) THEN
  243.          IT=IT+1
  244.          GOTO 490
  245.       END IF
  246. CDDD
  247. CDDDD END OF OUTER TIME LOOP
  248. CDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD END
  249. C-----END OF DAY REACHED
  250. C-----CALCULATE MEAN ROOM TEMPERATURES FOR DAY
  251.       DO 520 JT=1,NROOMS
  252.       TMRMN(JT)=TMRSUM(JT)/ISUM
  253.   520 TIMEAN(JT)=TISUM(JT)/ISUM
  254.       WRITE(60,2300)(JT,TIMEAN(JT),JT=1,NROOMS)
  255.       WRITE(60,2302)(JT,TMRMN(JT),JT=1,NROOMS)
  256.       IREP=IREP+1
  257.       IF (IREP.EQ.NDPRE .OR. NDPRE.EQ.0) ILINES=2
  258.       IF (IREP.LE.NREP .OR. IREP.LE.NDPRE) GO TO 480
  259. C
  260. C-----DO THE END-OF-DAY CALCULATIONS
  261.       CALL ENDLP2 (ATOUT, CDAY, DTIM1, HUMON, ICYC1, ICYC6,
  262.      +ICYCCP, IDAYM, ILINES, IPASS, IPASY, IRH, ISWING, KDAYM,
  263.      +NROUT, QHUMT, QSPT, QWAS, TIMAX, TIMAXN, TIMIN, TONMAX,
  264.      +WATER, WEIGHT, WTFCT)
  265. C
  266. C-----CHECK FOR MEAN DAY CALC
  267.       IDAYM=IDAYM+1
  268. C  MONTHLY SUMMARIES AFTER EACH DAY????
  269.       IF(IDAYMN.NE.0)GO TO 530
  270.       IF (IDAYM.LE.NDAYM) GO TO 250
  271. CCCC
  272. CCCCC END OF MEAN DAY LOOP
  273. CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC END
  274. C-----PERFORM OPERATIONS FOR END OF MEAN DAY
  275.  530  CALL ENDDAY 
  276.       WRITE(60,7082)
  277.       DO 532 JT=1,NROOMS
  278.       NRM=NRMA(JT)
  279.       IF(EBALT(NRM).NE.0.)THEN
  280.          EBL=EBAL(NRM)/EBALT(NRM)*100.
  281.       ELSE
  282.          EBL=99999.
  283.          ENDIF
  284.       WRITE(60,7084)NRM,EBL
  285.   532 CONTINUE
  286.       IF(IDAYMN.NE.0)THEN
  287.          IF(IDAYM.LE.NDAYM)GO TO 250
  288.       ENDIF
  289. CBBB
  290. CBBBB END OF SIZING LOOP
  291. CBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB END
  292. C
  293.   540 CALL ENDMON 
  294. C
  295.       IMONTH=IMONTH+1
  296.       IF (IMONTH.LE.NMONTH) THEN
  297. C        FINISH THERMAL CALCULATIONS IN GROUND FOR REST OF MONTH
  298.          IF (IGRND.GT.0) THEN
  299.            ICODE=4
  300.            CALL GRNDEX (TODDBM, WSPEDM, SOLRHM, KM)
  301.            ICODE=0
  302.          ENDIF
  303.          GO TO 180
  304.       END IF
  305. CAAA
  306. CAAAA END OF MONTHLY LOOP
  307. CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA END
  308. C-----DO THE END-OF-RUN CALCULATIONS
  309. C      CALL ENDRUN (IPASS, XHUM1)
  310.       CALL ENDRUN (IPASS)
  311. C
  312. 1210  WRITE(60, 7080) VBMAX,VBMIN,(NRM,ACMAX(NRM),ACMIN(NRM),
  313.      +NRM=1,NROOMS)
  314.       WRITE(60,7082)
  315.       DO 1212 JT=1,NROOMS
  316.       NRM=NRMA(JT)
  317.       EBL=EBAL(NRM)/EBALT(NRM)*100.
  318.       WRITE(60,7084)NRM,EBL
  319.  1212 CONTINUE
  320.       STOP 'END OF RUN'
  321. C
  322. 2300  FORMAT (1H0/' MEAN ZONE AIR TEMPERATURES: '/
  323.      +10X,5(I2,2X,F10.2))
  324. 2302  FORMAT (1H0/' AVERAGE MEAN RADIANT TEMPS: '/
  325.      +10X,5(I2,2X,F10.2))
  326. 7080  FORMAT (/, '0BASEMENT INFILTRATION(ACH/HR) MAX, MIN=',2G13.5/
  327.      +,(' ZONE NO.,ZONE INFILTRATION(ACH/HR) MAX,MIN= ',I5,2G13.5/))
  328.  7081 FORMAT(27X,'HOUR= ',I3,'    DAY= ',I4)
  329.  7082 FORMAT(1H0,'ENERGY BALANCES IN EACH ZONE * * * * * * * * *')
  330.  7084 FORMAT(15X,'ZONE= ',I3,' ENERGY BAL= ',G13.5,' PCT')
  331.  7091 FORMAT(1X,' IDBG -- FROM HOUS_II-- = ',I5)
  332. C
  333.       END
  334.