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 / WWEATH.FOR < prev    next >
Text File  |  1992-04-14  |  6KB  |  155 lines

  1.        SUBROUTINE WWEATH(NMONTH,MONTH,NDPRE,NDAYM)
  2. C  PREPARE WORKING TAPE COPY OF COMPRESSED WEATHER
  3. C    NMONTH  NO. OF MONTHS OF DATA IN WORKING COPY(INCL GRND PRECOND)
  4. C    MONTH CONSEC ORDER BY MONTH OF DATA IN WORKING COPY
  5. C    NDPRE  NO. OF PRECONDITIONING DAYS ON TAPE40 (USUALLY 1)
  6. C    NDAYM  NO. OF 24-HR DAYS OF DATA PER MONTH(INCL. PRECOND. DAY)
  7. C
  8. C  TAPE60 WRITE. ECHO OF NAMELIST INPUT
  9. C  TAPE30 READ.  NAMELIST INPUT
  10. C  TAPE40 READ.  ANNUAL COMPRESSED WEATHER FOR A CITY
  11. C                TDB,TWB,WSPD,HORIZ. SOLAR,BAROMETRIC PRESS,MON,DAY,HR
  12. C  TAPE41 WRITE. WORKING COPY OF COMPRESSED WEATHER DATA
  13. C                HAS CONTENTS OF COMMON BLK TYRGND AS 1ST RECORD
  14. C
  15. CMDK TYRGND
  16. CMDK SIMA
  17. C
  18.       DIMENSION X(5),IX(3),MONTH(12),NDAYTOT(12),MNTH(20)
  19. C
  20. C  NMNPRE NO. OF PRECONDITIONING MONTHS
  21. C  IPRINT = 1 TO PRINT WEATHER DATA IN WORKING COPY
  22. C
  23.       DATA IPRINT/0/
  24.       DATA NDAYTOT/31,28,31,30,31,30,31,31,30,31,30,31/
  25. C
  26.       WRITE(60,*) 'SUB.WWEATH COMPRESSED WEATHER PRE-PROCESSING'
  27.       WRITE(60,*) '   NMONTH,MONTH...',NMONTH,(MONTH(I),I=1,NMONTH)
  28.       WRITE(60,*) '   NDAYM,NMNPRE,IPRINT...',NDAYM,NMNPRE,IPRINT
  29. C  NDHRS IS THE NO. OF HOURS IN A MONTH ON THE COMPRESSED WEATHER FILE
  30. C  IT INCLUDES ANY PRECONDITIONING DAY(S). NOTE NDAYM HERE IS NDAYM
  31. C  (IN STRRUN)+NDPRE (IN STRRUN)
  32. C  
  33.       NDHRS=NDAYM*24
  34.       DO 10 I=1,NMNPRE
  35.       MNTH(I)=MONTH(1)-NMNPRE+(I-1)
  36. 10    IF(MNTH(I).LT.1)MNTH(I)=MNTH(I)+12
  37.       DO 20 I=1,NMONTH
  38.    20 MNTH(I+NMNPRE)=MONTH(I)
  39.       WRITE(60,*) '  MNTH...',(MNTH(I),I=1,(NMONTH+NMNPRE))
  40. C
  41. C * * * PREPARE WORKING COPY
  42. C
  43.       KMONLST=12
  44.       NTM=0
  45.       DO 100 IMONTH=1,NMONTH+NMNPRE
  46.          KMONTH=MNTH(IMONTH)
  47.          IF(KMONTH.LE.KMONLST)THEN
  48.             KMONLST=0
  49.             REWIND 40
  50.          ENDIF
  51. C * * *    SKIP TO END OF MONTH BEFORE DESIRED MONTH
  52.          IF(KMONTH.GT.1)THEN
  53. C * * *        AVOID HAVING TO REWIND 40 BEFORE EACH SKIP(TO REDUCE READING)
  54.           IF( KMONLST.LT.(KMONTH-1)) THEN
  55.             NHRSI=NDHRS*KMONLST+1
  56.             NHRSE=NDHRS*(KMONTH-1)
  57.             DO 25 J=NHRSI,NHRSE
  58.    25       READ(40,*,END=998)(X(I),I=1,5),(IX(I),I=1,3)
  59.           ENDIF
  60.          ENDIF
  61. C * * *    NOW READ DATA FOR MONTH
  62.          IHR=1
  63.          KMOLS=9999
  64.    30    DO 40 I=1,NDHRS
  65. C  X(1) - TDB -- OUTDOOR DRY BULB TEMP, F
  66. C  X(2) - TWB -- OUTDOOR WET BULB TEMP, F
  67. C  X(3) - WSPED -- WIND SPEED, MILES/HR
  68. C  X(4) - SOLARH -- TOTAL SOLAR RADIATION ON A HORIZONTAL SURFACE,
  69. C         BTU/HR-FT2            
  70. C  X(5) - BARPSI -- BAROMETRIC PRESSURE, PSI
  71. C  IX(1) - MONTH; IX(2) - DAY; IX(3) - HOUR
  72.          READ(40,*,END=997)(X(J),J=1,5),(IX(J),J=1,3)
  73.          IF(NTM.EQ.0)THEN
  74. C * * *  FIND TIME OF YEAR AT MIDMONTH OF FIRST MONTH
  75. C        USED TO INITIALIZE GROUND TEMPS WITH KUSUDA CORRELATION
  76.            KMON=IX(1)
  77.            IF(KMON.EQ.1)THEN
  78.               TIMEYR=14*24.
  79.               MN1=12
  80.            ELSE
  81.               MN1=KMON-1
  82.               NDYRS=0
  83.               DO 32 L=1,MN1
  84.    32         NDYRS=NDYRS+NDAYTOT(L)
  85.               NDYRS=NDYRS+14
  86.               TIMEYR=NDYRS*24.
  87.            ENDIF
  88. C          FIND TIME OF YR(TIMEI) AT FIRST BLDG PRECOND DAY
  89. C          IT FALLS NMNPRE MONTHS AFTER TIMEYR
  90.            TIMEI=TIMEYR
  91.            IF(MN1.EQ.12)THEN
  92.                TIMEI=TIMEI+(NDAYTOT(1)/2+NDAYTOT(2)+NDAYTOT(3)/2)*24.
  93.            ELSE
  94.                TIMEI=TIMEI+(NDAYTOT(KMON)/2)*24.
  95.                MNEXT=KMON+1
  96.                IF(MNEXT.GT.12)MNEXT=1
  97.                TIMEI=TIMEI+NDAYTOT(MNEXT)*24.
  98.                MNEXT=MNEXT+1
  99.                IF(MNEXT.GT.12)MNEXT=1
  100.                TIMEI=TIMEI+(NDAYTOT(MNEXT)/2)*24.
  101.            ENDIF
  102.            WRITE(60,502)TIMEYR,TIMEI
  103.            NTM=1
  104.          ENDIF
  105.          IF(IMONTH.LE.NMNPRE)THEN
  106.            WRITE(41,500)(X(J),J=1,5),(IX(J),J=1,3)
  107.            IF(IPRINT.EQ.1)WRITE(60,500)(X(J),J=1,5),(IX(J),J=1,3)
  108. C              WRITE SOLAR DATA ON TAPE19 IF PAST GRND PRECOND DAYS         
  109. C              NOTE: SKIP 1ST PRECOND DAY EACH MONTH(IT IS SAME AS 2ND )
  110.          ELSE
  111.            IF(NDPRE.GT.0)THEN
  112.              IF(IDY.GE.NDPRE.AND.KMO.EQ.KMOLS)THEN
  113.                WRITE(41,500)(X(J),J=1,5),(IX(J),J=1,3)
  114.              ENDIF
  115.            ELSE
  116.              WRITE(41,500)(X(J),J=1,5),(IX(J),J=1,3)
  117.            ENDIF
  118.            SOLARH(IHR)=X(4)
  119.            IHR = IHR + 1
  120.            IF(IHR.EQ.25)THEN
  121.              IF(KMO.NE.KMOLS)IDY=0
  122.              IDY=IDY+1
  123.              IF(IDY.GT.NDPRE)THEN
  124.                WRITE(19,534)KMO,KDY
  125.                WRITE(19,533)(SOLARH(IHR),IHR=1,24)
  126.              ENDIF
  127.              IHR=1
  128.              KMOLS=KMO
  129.            ENDIF
  130.            KMO=IX(1)
  131.            KDY=IX(2)
  132.          ENDIF
  133.    40   CONTINUE
  134.         KMONLST=KMONTH
  135.   100 CONTINUE
  136.       CLOSE(40)
  137. C     ADD THE FIRST HOUR OF NEXT DAY TO FILE FOR COMPATIBILIBY IN MAIN
  138.       IX(2)=IX(2)+1
  139.       IX(3)=0
  140.       WRITE(41,500)(X(J),J=1,5),(IX(J),J=1,3)
  141.       IF(IPRINT.EQ.1)WRITE(60,500)(X(J),J=1,5),(IX(J),J=1,3)
  142.       REWIND 41
  143.       REWIND 19
  144.       RETURN
  145. C 996 STOP 'WWEATH:EOF ON TAPE30!!'
  146.   997 STOP 'WWEATH:EOF ON TAPE40 BELOW LABEL 30!!'
  147.   998 STOP 'WWEATH:EOF ON TAPE40 ABOVE LABEL 30!!'
  148.   500 FORMAT((1X,3(F5.1,2X),F6.1,2X,F6.2,2X,3(I2,3X)))
  149.   501 FORMAT(' SUB.WWEATH:  KMONTH= ',I5,' NDHRS= ',I5)
  150.   502 FORMAT(1X,'HOUR OF YR AT START OF GROUND PRECOND= ',F12.5/
  151.      +1X,'HOUR OF YR AT FIRST BLDG PRECOND DAY= ',F12.5)
  152.   533 FORMAT(1X,6G13.5/1X,6G13.5/1X,6G13.5/1X,6G13.5)
  153.   534 FORMAT(1X,2I7)
  154.       END
  155.