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 / ACHL.FOR < prev    next >
Text File  |  1992-04-10  |  4KB  |  133 lines

  1.       SUBROUTINE ACHL(NRM, TODDB, TA, WSPED, TSTACK, ACINFL)
  2. C
  3. C SUBROUTINE FOR GASASHR INFILTRATION MODEL IN LIVING SPACE
  4. C      THE OPTION FOR CONSTANT INFILTRATION IS OBTAINED IF:
  5. C       ACML=0, ACCNL=INFILTRATION
  6. C      10/85 OPTION FOR INFILTRATION=F(TIME) ADDED. FEJ
  7. C
  8. C     VARIABLE   DEFINITION
  9. C     --------   ----------------------------
  10. C     XIN(I)     1=OUTDOOR TEMPERATURE, TODDB
  11. C                2=INDOOR  TEMPERATUE,  TA
  12. C                3=WIND WPEED,          WSPED
  13. C                4=STACK TEMPERATURE,   TSTACK
  14. C     RUNAVE     RUNNING AVERAGE OF THE PAST NRNAVL XIN'S
  15. C     RUNINF     THE PAST NRNAVL VALUES OF XIN
  16. C     NRNAVL       THE NUMBER OF PAST VALUES TO KEEP RUNNING
  17. C                AVERAGES OF (ONE FOR EACH TIME STEP, EG. FOR AN OUTER
  18. C                OF 2 MIN, NRNAVL=3 IS 4 MINUTES OF DATA
  19. C     IOLD       POINTS TO THE OLDEST VALUE IN THE RUNINF ARRAY
  20. C
  21. CMDK NWL
  22. CMDK NZN
  23. CMDK NZW
  24. CMDK ACHLQ
  25. CMDK BLKTM2
  26. CMDK ENCBK1
  27.       DOUBLE PRECISION TINF
  28.       REAL ACDTOI(NZN), ACDTOS(NZN), ACINFL(NZN), RUNAVE(4),
  29.      +     RUNINF(180,4), TA(NZN), XIN(4), XINF(NZN)
  30.       LOGICAL DEBUG,FIRST,I22F
  31. C
  32.       DATA IOLD,MAXNR,  DEBUG,FIRST/9999,180,  .FALSE.,.TRUE./
  33.       DATA RUNINF/180*40., 180*70., 180*5., 180*80./
  34.       DATA RUNAVE/   40.,    70.,    5.,    80./
  35. C
  36.       IF(ACML(NRM).LE.1.0E-37) THEN
  37.           ACINFL(NRM)=ACCNL(NRM)
  38.           RETURN
  39.       ENDIF
  40.       IF(FIRST) THEN
  41.           FIRST=.FALSE.
  42.           ACDTOI(NRM)=ACBL(NRM)*STORY
  43.           ACDTOS(NRM)=ACSL(NRM)*STORY
  44.           IF(NRNAVL.GT.MAXNR) THEN
  45.             WRITE(60,*) 'NRNAVL=',NRNAVL,'. RESET TO ',MAXNR
  46.             NRNAVL=MAXNR
  47.           ENDIF
  48.       ENDIF
  49. C
  50.       XIN(1)=TODDB
  51.       XIN(2)=TA(NRM)
  52.       XIN(3)=WSPED
  53.       XIN(4)=TSTACK
  54. C
  55. C
  56. C *** CREATE AND MAINTAIN RUNNING AVERAGES
  57. C
  58.       IF(IOLD.GE.NRNAVL) IOLD=0
  59.       IOLD=IOLD+1
  60. C
  61.       DO 210 I=1,4
  62.       RUNAVE(I)=RUNAVE(I)+(XIN(I)-RUNINF(IOLD,I))/FLOAT(NRNAVL)
  63.       RUNINF(IOLD,I)=XIN(I)
  64.   210 CONTINUE
  65.       IF(DEBUG) WRITE(60,*) IOLD,RUNAVE
  66. C
  67.       RTO= 1.0/( RUNAVE(1)+460.)
  68.       TDOI=ABS( RTO - 1.0/(RUNAVE(2)+460.) )
  69.       WS  = RUNAVE(3)*RUNAVE(3)*RTO
  70.       TDOS=ABS( RTO - 1.0/(RUNAVE(4)+460.) )
  71. C
  72. C *** CALCULATE AIR CHANGES BASED ON AVE VALUES
  73. C
  74.       ACINFL(NRM)=ACML(NRM)*SQRT(ACDTOI(NRM)*TDOI+ACWSL(NRM)*WS+
  75.      +     ACDTOS(NRM)*TDOS)+ACCNL(NRM)
  76.       IF(ACINFL(NRM).LT.0.) ACINFL(NRM)=0.
  77.       RETURN
  78. C
  79. C---------------------------------------------------------
  80. C     ENTRY FOR INSTANTANEOUS INFILTRATION
  81. C
  82.       ENTRY ACHIL(NRM, TODDB, TA, WSPED, TSTACK, ACINFL)
  83.       RTO= 1.0/( TODDB+460.)
  84.       TDOI=ABS( RTO - 1.0/(TA(NRM)+460.) )
  85.       WS  = WSPED*WSPED*RTO
  86.       TDOS=ABS( RTO - 1.0/(TSTACK+460.) )
  87. C
  88.       ACINFL(NRM)=ACML(NRM)*SQRT(ACDTOI(NRM)*TDOI+ACWSL(NRM)*WS+
  89.      +     ACDTOS(NRM)*TDOS)+ACCNL(NRM)
  90.       IF(ACINFL(NRM).LT.0.) ACINFL(NRM)=0.
  91.       RETURN
  92. C
  93. C----------------------------------------------------------------
  94. C     ENTRY FOR INFILTRATION = F(TIME). TAPE22 CONTAINS THE TIME
  95. C     AND INFILTRATION DATA .
  96. C
  97.       ENTRY ACHLTIM(NRM,TODDB,TA,WSPED,TSTACK,ACINFL)
  98.       DATA IO22/0/, TINF,XINF/0.,NZN*0.0/
  99.       DATA I22F/.TRUE./
  100.       IF(I22F)THEN
  101.          OPEN(22,FILE='TAPE22',STATUS='OLD')
  102.       I22F=.FALSE.
  103.       ENDIF
  104.   300 IF(IO22.NE.0 .OR. TINDEX.LE.TINF)THEN
  105.          DO 310 JT=1,NROOMS
  106.          NRM=NRMA(JT)
  107.   310    ACINFL(NRM)=XINF(NRM)
  108.       ELSE
  109.          READ(22,*,IOSTAT=IO22)TINF,(XINF(JT),JT=1,NROOMS)
  110.          IF(TINF.EQ.0.)STOP 'SUB.ACHL ERR300'
  111.          GOTO 300
  112.       ENDIF
  113.       RETURN
  114. C
  115. C---------------------------------------------------------
  116. C     ENTRY FOR INSTANTANEOUS INFILTRATION - COOLING MODE
  117. C
  118.       ENTRY ACHL2(NRM, TODDB, TA, WSPED, TSTACK, ACINFL)
  119.       IF(ACML(NRM).LE.1.E-37) THEN
  120.          ACINFL(NRM)=ACCNL(NRM)
  121.          RETURN
  122.          ENDIF
  123.       RTO= 1.0/( TODDB+480.)
  124.       TDOI=ABS( RTO - 1.0/(TA(NRM)+460.) )
  125.       WS  = WSPED*WSPED*RTO
  126.       TDOS=ABS( RTO - 1.0/(TSTACK+460.) )
  127. C
  128.       ACINFL(NRM)=ACML(NRM)*SQRT(ACDTOI(NRM)*TDOI+ACWSL(NRM)*WS+
  129.      +          ACDTOS(NRM)*TDOS)-ACCNL(NRM)
  130.       IF(ACINFL(NRM).LT.0.) ACINFL(NRM)=0.
  131.       RETURN
  132.       END
  133.