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 / STRLP1.FOR < prev    next >
Text File  |  1992-05-08  |  10KB  |  321 lines

  1.       SUBROUTINE STRLP1(ACINFL, ACMAX, ACMIN, AVENC2, DQINT, DSOLRH,
  2.      +DTCR, DTCRW, DTIM1, DTOB, DWHM, DWINT, DWSPED, FLOWIN,
  3.      +IDAYM, IDUM, NZONG, POWA, QCONRF, QINFC, QINFS, QINT,
  4.      +QLOSRF,QRAD,QSKY, RHA, RLOADL, RLOADS, SOLRH, TDUM, TODDBR, TRO,
  5.      +TS, VBMAX,VBMIN, VENCRV, WINFC, WINFSS, WINT, WODFAC, WODHMR,
  6.      +IDBG) 
  7. C-----START OF OUTER TIME LOOP
  8. C-----CONSTANTS 
  9. CMDK FTR
  10. CMDK NZN
  11. CMDK NIWL
  12. CMDK NKONST
  13. CMDK NWN
  14. CMDK NWL
  15. CMDK NZW
  16. CMDK CPAIR
  17. CMDK RHOAIR
  18. CMDK SIGMA
  19. C-----COMMON BLOCKS 
  20. CMDK ACHBQ
  21. CMDK ACHLQ
  22. CMDK BAR
  23. CMDK BLKFMT
  24. CMDK BLKQS
  25. CMDK CNSTRK
  26. CMDK DUCTS2
  27. CMDK ENCBK1
  28. CMDK ENCBK2
  29. CMDK ENCBLK
  30. CMDK IWETHR
  31. CMDK IRDFQ
  32. CMDK IZWQ
  33. CMDK IZZQ
  34. CMDK MRTBLK
  35. CMDK MZON1
  36. CMDK OWETHR
  37. CMDK QUAYLE
  38. CMDK SOLARB
  39. CMDK STRUCA
  40. CMDK SURFAR
  41. CMDK TEMPB
  42. CMDK TIMEB
  43. CMDK BLKTM2
  44. CMDK TSTATC
  45. CMDK TSTB2
  46.       REAL ACINFL(NZN), ACMAX(NZN), ACMIN(NZN), DQINT(24), DSOLRH(24),
  47.      +     DTOB(24), DWHM(24), DWINT(24), DWSPED(24), FLOWIN(NZN),
  48.      +         QINFS(NZN), QINFC(NZN), WINFC(NZN), WINFSS(NZN) 
  49. C-----INITIALIZATIONS 
  50.       DATA IWATC  /1/ ,IZDAT/1/
  51.       DTIME=DTIM1
  52.       IF(IZDAT.EQ.1)THEN
  53.         WRITE(60,545)
  54.         DO 550 IJ=1,NROOMS
  55.           NRM=NRMA(IJ)
  56.           N2=NWALLA(NRM)
  57.           DO 550 K2=1,N2
  58.             IZW=NENC(NRM,K2)
  59.             NZONC=NZNC(IZW)
  60.             ID=IDEXP(IZW)
  61.             KON=KONSTA(IZW)
  62.             NLM=NLMP(KON)
  63.             WRITE(60,546)NRM,IZW,ID,NZONC,KON,NLM
  64.   550   CONTINUE
  65.         WRITE(60,547)
  66.         IZDAT=0
  67.       ENDIF
  68. C  ZERO ENERGY LOSS SUMS ON OUTSIDE SURFACES      
  69.       DO 12 JT=1,NZN
  70.       QLOSWL(JT)=0. 
  71.       QLOSFL(JT)=0.
  72.    12 CONTINUE
  73. C     WETHR BLOCK 5: INCREMENT WEATHER TO CURRENT TIME STEP 
  74.       IF (NSEQW.EQ.0 .OR. NSEQW.EQ.1 .OR. NSEQW.EQ.3) THEN
  75.          TODDB=TODDB+DTOB (IT)
  76.          WODHUM=WODHUM+DWHM (IT)
  77.          WSPED=WSPED+DWSPED (IT)
  78.          SOLRH=SOLRH+DSOLRH (IT)
  79.          IF(IGARAGT.EQ.0)TGARAG=TODDB 
  80.       ELSE IF (NSEQW.EQ.2) THEN 
  81. C NOTE: TGARAG GETS SET IN WETHR WITH NSEQW=2!      
  82.          CALL WETHR (5, NSEQW)
  83.          TODDB=TODDB+TOFFSET
  84.       END IF
  85.       DO 10 I=1,NIJ 
  86.    10 SOLARL(I)=SOLARL(I)+DSOLAR(IT,I)
  87.       IF (IGARAGT.GT.0) CALL GARAGA (IGARAGT,NZONG,SOLRH) 
  88.       HO=1.0
  89. C         WSPED UNITS:  MILES/HR  (CORRELATION FOR HO IS FROM CARRIER)
  90. C                        SEE P. VII-13 OF PH IV REPT FOR COMPARISONS.      
  91.       IF (WSPED.GT..4) HO=WSPED**.5/.6584 
  92.       TODBR4=(TODDB+FTR)**4 
  93. C  GET TEMPERATURES OF EACH --ROOF--LAYER 
  94.       CALL ROOFC(HO,TODBR4, ISKY, FAROOF, NSUBR, EATTC1,EATTC2, 
  95.      +           DTIM1,TRO, QLOSRF, QSKY, QCONRF,IDBG) 
  96. C  IZWC  CEILING
  97. C     F  FLOOR OVER BSMT W/O DUCTS BELOW
  98. C     G  FLOOR OVER BSMT W/ DUCTS BELOW 
  99. C     H  FLOOR OVER CRWSPC W/O DUCTS BELOW
  100. C     I  FLOOR OVER CRWSPC W/ DUCTS BELOW 
  101. C     J  GARAGE WALL
  102. C  SET INDICES FOR ENCLOSURES TO THAT FOR ZERO AREA 
  103.       IZWC=IZT+1
  104.       IZWF=IZT+1
  105.       IZWG=IZT+1
  106.       IZWH=IZT+1
  107.       IZWI=IZT+1
  108.       IZWJ=IZT+1
  109. C  NOTE: - - HRADC, HRADF, HRADFD, HRADW ARE SET IN STRDAY
  110.       DO 502 J=1,NROOMS 
  111.       TWIA=0. 
  112.       AWIA=0. 
  113.       NRM=NRMA(J) 
  114.       N2=NWALLA(NRM)
  115.       DO 500 K2=1,N2
  116.       IZW=NENC(NRM,K2)
  117.       KON=KONSTA(IZW) 
  118.       ID=IDEXP(IZW) 
  119.       NZONC=NZNC(IZW) 
  120.       IF(ID.LE.4)THEN 
  121. C  GET TEMPERATURES OF EACH --OUTSIDE WALL--LAYER 
  122.           WALLF=WALLFO(IZW) 
  123.           IF(ID.EQ.1)IZWS(1)=IZW
  124.           IF(ID.EQ.2)IZWS(2)=IZW
  125.           IF(ID.EQ.3)IZWS(3)=IZW
  126.           IF(ID.EQ.4)IZWS(4)=IZW
  127.           CALL OWALLS(NRM, IZW, ID, KON, WALLF, FAWLOD,
  128.      +                HO, TODBR4,  IDBG)
  129.           ENDIF 
  130.       IF(ID.EQ.5)THEN 
  131. C  GET TEMPERATURES OF EACH --CEILING--LAYER
  132. C    IZWC FOR CEILING ELEMENT BELOW ATTIC NO.1 IN ZONE 1
  133.           IF(NZONC.EQ.4.AND.NRM.EQ.1)IZWC=IZW 
  134.           CALL CEIL(NRM, IZW, KON, NZONC, IDBG)
  135.           ENDIF 
  136.       IF(ID.EQ.6)THEN 
  137.           IF(NZONC.EQ.2.OR.NZONC.EQ.7)THEN
  138. C---CALCULATE TEMPS OF EACH LUMP OF --FLOOR ABOVE BASEMENT----
  139. C     WITH OR WITHOUT DUCTS BELOW 
  140.               IF(NZONC.EQ.2)THEN
  141.                   IF(NRM.EQ.1)IZWF=IZW
  142.                   ENDIF 
  143.               IF(NZONC.EQ.7)THEN
  144.                   IF(NRM.EQ.1)IZWG=IZW
  145.                   ENDIF 
  146.               CALL FLOOR(NRM, IZW, ID, KON, NZONC, TBASA, 
  147.      +                   DCTFLR, IDBG)
  148.               ENDIF 
  149.           IF(NZONC.EQ.3.OR.NZONC.EQ.8)THEN
  150. C-----CALCULATE TEMPS OF EACH LUMP OF --FLOOR ABOVE CRAWL SPACE---
  151. C      WITH OR WITHOUT DUCTS BELOW
  152.               IF(NZONC.EQ.3)THEN
  153.                   IF(NRM.EQ.1)IZWH=IZW
  154.                   ENDIF 
  155. C  ??? CHECK WHY THERE WAS NRM.EQ.1 BELOW   SOMETIME  !!!!! 
  156.               IF(NZONC.EQ.8)IZWI=IZW
  157.               CALL FLOOR(NRM, IZW, ID, KON, NZONC, TCRWA, 
  158.      +                   DCTFLR, IDBG)
  159.               ENDIF 
  160.           ENDIF 
  161.       IF(ID.EQ.7.AND.NZONC.EQ.6)THEN
  162. C-----CALCULATE TEMPS OF EACH LUMP OF --GARAGE--WALL
  163. C          CANT HAVE THERMOSTAT ON LVG SPC/GARAGE WALL, 0.,0. BELW 
  164.           CALL IWALLS(NRM, IZW, KON, NZONC, 0.,0.,IDBG)
  165.           ENDIF 
  166.       IF(ID.EQ.7.AND.NZONC.GT.8)THEN
  167. C   ---INTERIOR PARTITION---WALL
  168.               CALL IWALLS(NRM, IZW, KON, NZONC, TWIA, AWIA,IDBG) 
  169.           ENDIF 
  170.       IF(ID.EQ.8)THEN 
  171. C             BASEMENT FLOOR
  172. C         TODAG1 IS NOT USED IN FLOOR FOR BSMT FLOOR! (OK - RDF)
  173.           CALL FLOOR(NRM,IZW,ID,KON,0,TODAG1,1.,IDBG) 
  174.           ENDIF 
  175.       IF(ID.EQ.9.OR.ID.EQ.10)THEN 
  176.           IF(ID.EQ.10)WALLF=WALLFO(IZW) 
  177.           CALL OWALLS(NRM,IZW,ID,KON,WALLF,FAWLOD,HO, 
  178.      +                TODBR4, IDBG) 
  179.           ENDIF 
  180.   500 CONTINUE
  181.       IF(AWIA.EQ.0.)THEN
  182.           WRITE(60,600)
  183.           STOP 'STRLP1:AT 500, NO PARTITION WALL FOR TSTAT TEMP!!!' 
  184.           ENDIF 
  185. C * * * * * * * * 
  186. C         TWSTAT IS AREA-WEIGHTED WALL TEMP AT TSTAT
  187.       TWSTAT(NRM)=TWIA/AWIA 
  188.   502 CONTINUE
  189. C* * * * * *
  190. C-----INTERNAL HEAT AND MOISTURE GAINS
  191.       QINT=QINT+DQINT (IT)
  192.       IF (IWAT.EQ.1) THEN 
  193.          WINT=WINT+DWINT (IT) 
  194.       ELSE
  195.          IF (TINDEX.LT.WT (IWATC)) THEN 
  196.             WINT=WINTL (IWATC)
  197.          ELSE 
  198.             IWATC=IWATC+1 
  199.          END IF 
  200.       END IF
  201. C-----MEAN RADIENT TEMPERATURE CALCULATION
  202.       CALL MRTHRI(QINT,QRAD,IDBG)
  203. C-----CALCULATE BASEMENT AIR CHANGE RATE IF SPECIFIED 
  204. C     OTHERWISE, USE CONSTANT INPUT AS VENBAS 
  205.       IF (NRNAVB.GT.0) THEN 
  206.          IF (MODE.EQ.2) THEN
  207.             VENBAS=ACHB2 (TODDB, TBASA, WSPED, TS)
  208.          ELSE 
  209.             VENBAS=ACHB (TODDB, TBASA, WSPED, TS) 
  210.          END IF
  211.       ELSE IF(NRNAVB.LT.0)THEN 
  212. C   NRNAVB LT 0 TO SIGNAL USE OF COEF FOR DAILY ACH 
  213.          IF(IDAYM.EQ.1)VENBAS=ACMB 
  214.          IF(IDAYM.EQ.2)VENBAS=ACWSB
  215.          IF(IDAYM.EQ.3)VENBAS=ACBB 
  216.          IF(IDAYM.EQ.4)VENBAS=ACSB 
  217.          IF(IDAYM.EQ.5)VENBAS=ACCNB
  218.          IF(IDAYM.GT.5)VENBAS=(ACMB+ACWSB+ACBB+ACSB+ACCNB)/5.
  219.       ENDIF
  220.       IF (VENBAS.GT.VBMAX) VBMAX=VENBAS 
  221.       IF (VENBAS.LT.VBMIN) VBMIN=VENBAS 
  222. C  MISCELLANEOUS FACTORS FOR INFILTRATION 
  223. C   1.329=144.*.4923/53.34
  224.       WODFAC=1.329*29.921*(1.+WODHUM)/(1.+1.608*WODHUM)*BARRAT
  225.       RAIROD=WODFAC/(TODDB+460.)
  226.       TODDBR=TODDB*RAIROD 
  227.       AVENC2=VENCRV*RAIROD
  228.       WODHMR=WODHUM*RAIROD
  229.       DTCRW=DTCR/RAIROD 
  230. C-----CALCULATE INFILTRATION (AIR CHANGES) RATE IN LIVING SPACE 
  231. C        IF STORY < 0 THEN INFILTRATION RATES IN AIR-CHANGES PER
  232. C           HOUR ARE READ FROM TAPE22 IN SUB.ACHL ENTRY.ACHLTIM 
  233. C        IF STORY = 0 THEN THE FIVE INFILTRATION CONSTANTS ARE
  234. C           DAILY INFILTRATION RATE AVERAGES (4/6/84 FEJ QUICK FIX) 
  235.       DO 532 JT=1,NROOMS
  236.       NRM=NRMA(JT)
  237.       IF(NRM.EQ.NZNBAS)THEN 
  238.           ACINFL(NRM)=VENBAS
  239.           GO TO 530 
  240.           ENDIF 
  241.       IF (STORY.GT.0.0) THEN
  242.          IF (MODE.EQ.2) THEN
  243.             CALL ACHL2(NRM,TODDB,TA,WSPED,TS,ACINFL)
  244.          ELSE 
  245.             CALL ACHL(NRM,TODDB,TA,WSPED,TS,ACINFL) 
  246.          END IF 
  247.       ELSE IF (STORY.LT.0.0) THEN 
  248.          CALL ACHLTIM(NRM,TODDB,TA,WSPED,TS,ACINFL)
  249. C  STORY = 0. HERE!         
  250.       ELSE IF (IDAYM.EQ.1) THEN 
  251.          ACINFL(NRM)=ACML(NRM)
  252.       ELSE IF (IDAYM.EQ.2) THEN 
  253.          ACINFL(NRM)=ACWSL(NRM) 
  254.       ELSE IF (IDAYM.EQ.3) THEN 
  255.          ACINFL(NRM)=ACBL(NRM)
  256.       ELSE IF (IDAYM.EQ.4) THEN 
  257.          ACINFL(NRM)=ACSL(NRM)
  258.       ELSE IF (IDAYM.EQ.5) THEN 
  259.          ACINFL(NRM)=ACCNL(NRM) 
  260.       ELSE
  261.          ACINFL(NRM)=(ACML(NRM)+ACWSL(NRM)+ACBL(NRM)+ 
  262.      +               ACSL(NRM)+ACCNL(NRM))/5. 
  263.       END IF
  264.   530 IF (ACINFL(NRM).GT.ACMAX(NRM)) ACMAX(NRM)=ACINFL(NRM) 
  265.       IF (ACINFL(NRM).LT.ACMIN(NRM)) ACMIN(NRM)=ACINFL(NRM) 
  266.   531 FLOWIN(NRM)=ACINFL(NRM)*ROMVOL(NRM) 
  267.       WINFC(NRM)=FLOWIN(NRM)*WODHUM*RAIROD
  268.       WINFSS(NRM)=RHOAIR*FLOWIN(NRM)*BARRAT 
  269.       QINFC(NRM)=FLOWIN(NRM)*CPAIR*TODDBR 
  270.       QINFS(NRM)=FLOWIN(NRM)*BARRAT*CPAIR*RHOAIR
  271.   532 CONTINUE
  272.       DO 540 I=1,NZN
  273.       QDCTBA(I)=0.
  274.   540 TA(I)=0.
  275.       TATTA(1)=0.0
  276.       TATTA(2)=0.0
  277.       TBASA=0.0 
  278.       TCRWA=0.0 
  279.       TS=0.0
  280.       RHA=0.0 
  281.       DO 542 I=1,NZW
  282.       QCSURF(I)=0.
  283.   542 CONTINUE
  284.       DO 544 I=1,2
  285.       QCEIL(I)=0. 
  286.       QROOF(I)=0. 
  287.   544 CONTINUE
  288.       IF (IMODE.EQ.1) CALL ACND1 (IDUM, TDUM, TDUM) 
  289. C     INITIALIZE COOLING SYSTEM OUTPUT QUANTITES
  290.       RLOADS=0. 
  291.       RLOADL=0. 
  292.       POWA=0. 
  293.       RETURN
  294.   545 FORMAT(/////'   ****   LIST OF FINAL ENCLOSURE ELEMENTS   ****',
  295.      +  /'    ZONE   IZW    ID  NZONC  KON   NLM')        
  296.   546 FORMAT(1X,6(I6))
  297.   547 FORMAT(/////1X)        
  298.   600 FORMAT(/1X,'STRLP1:NO PARTITIONS FOR TSTAT TEMP.  MUST HAVE', 
  299.      +' PARTITIONS, SO CHECK INPUT.') 
  300.       END 
  301.