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 / ACHB.FOR next >
Text File  |  1991-08-16  |  3KB  |  100 lines

  1.       FUNCTION ACHB( TODDB, TBAS, WSPED, TSTACK )
  2. C
  3. C SUBROUTINE FOR GASASHR INFILTRATION MODEL IN BASEMENT
  4. C      THE OPTION FOR CONSTANT INFILTRATION HAS BEEN ADDED AS
  5. C       ACMB=0, ACCNB=INFILTRATION
  6. C     VARIABLE   DEFINITION
  7. C     --------   ----------------------------
  8. C     XIN(I)     1=OUTDOOR TEMPERATURE, TODDB
  9. C                2=INDOOR  TEMPERATUE,  TBAS
  10. C                3=WIND WPEED,          WSPED
  11. C                4=STACK TEMPERATURE,   TSTACK
  12. C     RUNAVE     RUNNING AVERAGE OF THE PAST NRNAVB XIN'S
  13. C     RUNINF     THE PAST NRNAVB VALUES OF XIN
  14. C     NRNAVB       THE NUMBER OF PAST VALUES TO KEEP RUNNING
  15. C                AVERAGES OF (ONE FOR EACH TIME STEP, EG. FOR AN OUTER
  16. C                OF 2 MIN, NRNAVB=3 IS 4 MINUTES OF DATA
  17. C     IOLD       POINTS TO THE OLDEST VALUE IN THE RUNINF ARRAY
  18. C
  19. C
  20. CMDK ACHBQ
  21.       DIMENSION RUNINF(180,4), RUNAVE(4), XIN(4)
  22.       LOGICAL DEBUG,FIRST
  23. C
  24.       DATA IOLD,MAXNR,  DEBUG,FIRST/9999,180,  .FALSE.,.TRUE./
  25.       DATA RUNINF/180*40., 180*70., 180*5., 180*80./
  26.       DATA RUNAVE/   40.,    70.,    5.,    80./
  27. C
  28.       IF(ACMB.LE.1.0E-37) THEN
  29.           ACHB=ACCNB
  30.           RETURN
  31.       ENDIF
  32.       IF(FIRST) THEN
  33.           FIRST=.FALSE.
  34.           ACDTOI=ACBB
  35.           ACDTOS=ACSB
  36.           IF(NRNAVB.GT.MAXNR) THEN
  37.             WRITE(60,*) 'NRNAVB=',NRNAVB,'. RESET TO ',MAXNR
  38.             NRNAVB=MAXNR
  39.           ENDIF
  40.       ENDIF
  41. C
  42.       XIN(1)=TODDB
  43.       XIN(2)=TBAS
  44.       XIN(3)=WSPED
  45.       XIN(4)=TSTACK
  46. C
  47. C
  48. C *** CREATE AND MAINTAIN RUNNING AVERAGES
  49. C
  50.       IF(IOLD.GE.NRNAVB) IOLD=0
  51.       IOLD=IOLD+1
  52. C
  53.       DO 210 I=1,4
  54.       RUNAVE(I)=RUNAVE(I)+(XIN(I)-RUNINF(IOLD,I))/FLOAT(NRNAVB)
  55.       RUNINF(IOLD,I)=XIN(I)
  56.   210 CONTINUE
  57.       IF(DEBUG) WRITE(60,*) IOLD,RUNAVE
  58. C
  59.       RTO= 1.0/( RUNAVE(1)+460.)
  60.       TDOI=ABS( RTO - 1.0/(RUNAVE(2)+460.) )
  61.       WS  = RUNAVE(3)*RUNAVE(3)*RTO
  62.       TDOS=ABS( RTO - 1.0/(RUNAVE(4)+460.) )
  63. C
  64. C *** CALCULATE AIR CHANGES BASED ON AVE VALUES
  65. C
  66.       ACHB=ACMB*SQRT(ACDTOI*TDOI+ACWSB*WS+ACDTOS*TDOS) + ACCNB
  67.       IF(ACHB.LT.0.) ACHB=0.
  68.       RETURN
  69. C
  70. C---------------------------------------------------------
  71. C     ENTRY FOR INSTANTANEOUS INFILTRATION
  72. C
  73.       ENTRY ACHIB( TODDB, TBAS, WSPED, TSTACK )
  74.       RTO= 1.0/( TODDB+460.)
  75.       TDOI=ABS( RTO - 1.0/(TBAS+460.) )
  76.       WS  = WSPED*WSPED*RTO
  77.       TDOS=ABS( RTO - 1.0/(TSTACK+460.) )
  78. C
  79.       ACHIB=ACMB*SQRT(ACDTOI*TDOI+ACWSB*WS+ACDTOS*TDOS) + ACCNB
  80.       IF(ACHIB.LT.0.) ACHIB=0.
  81.       RETURN
  82. C
  83. C---------------------------------------------------------
  84. C     ENTRY FOR INSTANTANEOUS INFILTRATION - COOLING MODE
  85. C
  86.       ENTRY ACHB2( TODDB, TA, WSPED, TSTACK )
  87.       IF(ACMB.LE.1.E-37) THEN
  88.          ACHB2=ACCNB
  89.          RETURN
  90.          ENDIF
  91.       RTO= 1.0/( TODDB+480.)
  92.       TDOI=ABS( RTO - 1.0/(TA+460.) )
  93.       WS  = WSPED*WSPED*RTO
  94.       TDOS=ABS( RTO - 1.0/(TSTACK+460.) )
  95. C
  96.       ACHB2=ACMB*SQRT(ACDTOI*TDOI+ACWSB*WS+ACDTOS*TDOS) - ACCNB
  97.       IF(ACHB2.LT.0.) ACHB2=0.
  98.       RETURN
  99.       END
  100.