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 / GROUND.FOR < prev    next >
Text File  |  1992-05-09  |  30KB  |  1,007 lines

  1.       SUBROUTINE GRNDEX(TODDB,WSPED,SOLRH,KM) 
  2. C TAPE60 WRITE.  ECHO OF NAMELIST INPUT 
  3. C TAPE18 READ.   NAMELIST INPUT 
  4. C TAPE41 READ.   SEQUENTIAL COMPRESSED WEATHER DATA  (WORKING FILE) 
  5. C TAPE43 WRITE/READ. GROUND TEMPERATURES(INTERNAL TO THIS ROUTINE)
  6. C  EXECUTIVE CODE FOR DETAILED GROUND HEAT TRANSFER 
  7. C   BY R D FISCHER, BATTELLE, WITH SUGGESTIONS FOR APPROACH FROM
  8. C   TOM BECKEY OF HONEYWELL 
  9. C  ICODE = 1  READ NAMELIST INPGND, INITIALIZE NODAL GEOM 
  10. C             AND HEAT TRANSFER COEFS (ICODE=2 IS 
  11. C             INCLUDED IN ICODE = 1 FOR NOW)
  12. C        =2   RUN PRECONDITIONING MONTHS
  13. C        =3   HOURLY GROUND HEAT TRANSFER CALC. 
  14. C             (USES MEAN HRLY VALUES FOR TODDB,WSPED,SOLRH) 
  15. C        =4   FINISH GROUND CALCULATIONS FOR THE MONTH
  16. C             FOR THE MONTH  INT(DAYMON/(NDAYS-1) TIMES TO
  17. C                 INITIALIZE FOR NEXT MONTH.
  18. C  TODDB  MEAN HRLY OUTDOOR DRYBULB AIR TEMP, F 
  19. C  WSPED  MEAN HRLY WIND SPEED,MPH
  20. C  SOLRH  MEAN HRLY TOTAL SOLAR RADIATION ON HORIZONTAL SURFACE 
  21. C  TIMEYR   TIME OF YEAR AT START OF GROUND PRECONDITIONING 
  22. C           (SET IN WWEATH) 
  23. C  NMNPRE  NO. OF MONTHS OF PRECONDITIONING(READ IN WWEATH) 
  24. C  NDHRS  NO. OF HOURS PER MONTH(INCL PRECONDITIONING DAY-- 
  25. C            SET IN WWEATH) 
  26. C  IGINIT =1 TO USE TSOILI FOR INITIAL GROUND TEMPS 
  27. C         =2 TO USE TG VALUES FROM TAPE43 FOR INITIALIZATION
  28. C        =-2 WRITE INITIAL TG'S AT START OF FIRST PRECOND DAY TO TAPE43 
  29. CMDK NKONST
  30. CMDK NWL
  31. CMDK NWN
  32. CMDK NZN
  33. CMDK NZW
  34. CMDK BLK53
  35. CMDK BLK55
  36. CMDK BLKBSF
  37. CMDK BLKHWG
  38. CMDK BLKQS
  39. CMDK CNSTRK
  40. CMDK ENCBK1
  41. CMDK ENCBK2
  42. CMDK ENCBLK
  43. CMDK IZWQ
  44. CMDK SOILB
  45. CMDK SURFAR
  46. CMDK TEMPB
  47. CMDK TYRGND
  48. CMDK UABAS
  49.       DIMENSION ODDB(24,4),WSPEED(24,4),SOLARH(24,4), 
  50.      +TDBT(24), WSPDT(24), SOLRT(24),TPR(28),IP(28) 
  51.      +,NDYM(12)
  52.       INTEGER*4 LAST1
  53.       NAMELIST/INPGND/ABSRPG,CPSOIL,IGINIT,NPRINT,PHASE,
  54.      +                RFIELD,RHSOIL,TEAMP,TEAV,TSOILI,
  55.      +                UBASF,UBWBG,XKSOIL,ZDEPTH
  56. C INPUTS IN NAMELIST INPGND:
  57. C  ABSRPG - ABSORPTIVITY OF GROUND TO SOLAR RADIATION
  58. C  CPSOIL - SPECIFIC HEAT OF SOIL AROUND BASEMENT, BTU/LBM-F
  59. C  IGINIT - =1 USE TSOILI FOR INITAIL GROUND TEMPERATURES
  60. C           =2 USE GROUND TEMP FROM TAPE43 FOR INITIALIZATION
  61. C              (SET IN A PREV RUN WITH IGINIT = -1 -- THIS OPTION
  62. C              WILL REDUCE EXECUTION TIME FOR HANDBOOK RUNS)
  63. C           = -2 INITIAL SOIL TEMPS WILL BE CALC FROM A KUSUDA
  64. C             RELATIONSHIP AND WRITTEN TO TAPE43
  65. C    NOTE: YOU MUST RUN ONCE WITH -2 AND THEN CHANGE TO 2!!!
  66. C  NPRINT - PRINT GROUND TEMP EVERY NPRINT HOURS
  67. C  PHASE  - PHASE ANGLE OF EARTH TEMP AT SURFACE(SEE KUSUDA REF.),
  68. C           RADIANS
  69. C  RFIELD - RADIUS FROM CENTER OF BASEMENT TO FAR-FIELD NODE, FT      
  70. C  RHSOIL - DENSITY OF SOIL, LBM/FT3
  71. C  TEAMP  - TEMPERATURE AMPLITUDE AT EARTHS SURFACE, F
  72. C  TEAV   - AVERAGE ANNUAL EARTH TEMPERATURE, F
  73. C  TSOILI - INITIAL VALUE FOR SOIL TEMPERATURE, F
  74. C  UBASF AND UBWBG  -  OVERALL HEAT FLOW TERMS AS USED IN
  75. C         THE SINGLE ZONE MODEL AND USED HERE FOR PRECONDITIONING
  76. C         THE GROUND NEAR THE BSMT WALLS AND FLOOR,(USE 0.5 FOR BOTH)     
  77. C         THESE VALUES ARE USED IN BSMTPRE.FOR
  78. C  XKSOIL - THERMAL CONDUCTIVITY OF SOIL, BTU/HR-FT-F
  79. C  ZDEPTH - DEPTH FROM GROUND SURFACE TO CONSTANT TEMP NODE, FT
  80.       DATA IP/1,3,5,6,7,2,4,8,10,12,13,14,
  81.      +        9,11,15,27,17,18,16,28,19,20, 
  82.      +        21,22,23,24,25,26/
  83.       DATA NDAYQ/1/,NDBG/0/ ,IPRBG/1/
  84.       DATA NDYM/31,28,31,30,31,30,31,31,30,31,30,31/ 
  85.       GO TO (100,200,300,400),ICODE 
  86.   100 CONTINUE
  87. C   
  88.       OPEN(18,FILE='TAPE18',STATUS='OLD',IOSTAT=IO18)
  89.       IF(IO18.NE.0)THEN
  90.         WRITE(60,*) ' GROUND: CANT OPEN TAPE18 WITH NAMELIST INPGND'
  91.         STOP ' GROUND: CANT OPEN TAPE18 WITH NAMELIST INPGND'
  92.         END IF
  93.       READ(18,INPGND,END=999)
  94.       CLOSE(18)
  95.       WRITE(60,INPGND)
  96. C     
  97. C  FIND BSMT FLOOR AND WALL DATA FROM ENCLOSURE DATA
  98.       KF=KONSTA(IZWD(1))
  99.       KW=KONSTA(IZWE(1))
  100.       NLMF=NLMP(KF) 
  101.       NLMW=NLMP(KW) 
  102.       THFLR=0.
  103.       THWAL=0.
  104.       DO 102 I=1,NLMF 
  105.   102 THFLR=THFLR+WX(I,KF)
  106.       DO 104 I=1,NLMW 
  107.   104 THWAL=THWAL+WX(I,KW)
  108.       ABASFT=ABASF(1)+ABASF(2)
  109.       HWBG=0. 
  110.       ABWBGT=0. 
  111.       DO 106 I=1,4
  112.       IZW=IZWE(I) 
  113.       ABWBGT=ABWBGT+AWALLA(IZW) 
  114.   106 HWBG=HWBG+HGTA(IZW) 
  115. C  NOTE: HEIGHT OF NODES IN BLW GRND BSMT WALL IS SET BY ENCL INPUT DATA
  116. C        SUGGESTION: WITH BASEMENT, SET CENTER OF NODE 8 TO 3 FT TO 
  117. C                    AGREE WITH MSMT OF SOIL TEMP IN HSE A AND B. 
  118. C                    WITH CRWSPC, SET NODE HEIGHTS = .1,.2,.3,.4 X
  119. C                    CRWSPC HEIGHT. 
  120.       DZN(1)=HGTA(IZWE(1))
  121.       DZN(2)=HGTA(IZWE(2))
  122.       DZN(8)=HGTA(IZWE(3))
  123.       DZN(9)=HGTA(IZWE(4))
  124.       IF(IGINIT.EQ.1)THEN 
  125.           DO 110 I=1,28 
  126.   110     TG(I)=TSOILI
  127.           ENDIF 
  128. C  SET UP NODAL GEOMETRY AND HEAT TRANSFER PARAMETERS 
  129.       CALL SETNOD(TIMEYR,HOGRND)
  130.       CALL SETND1(TIMEYR,HOGRND)
  131.       IF (IGINIT.EQ.2)THEN
  132. C  GET INITIAL GROUND TEMPS FROM TAPE43 
  133. C    TAPE41 TO FIRST PRECONDITIONING DAY AND ADVANCE POINTER ON TAPE41
  134. C    TO 1ST PRECONDITIONING DAY
  135.           OPEN(43,FILE='TAPE43',STATUS='UNKNOWN',IOSTAT=IO43) 
  136.           IF(IO43.NE.0)THEN
  137.             WRITE(60,*)' GRNDEX: CANT OPEN TAPE43 FILE'
  138.             STOP ' GRNDEX: CANT OPEN TAPE43 FILE'
  139.             ENDIF
  140.           READ(43,*,END=420)(TG(I),I=1,28)
  141.           CLOSE(43) 
  142.           NREAD=NDHRS*NMNPRE
  143.           DO 112 I=1,NREAD
  144. C              NMONTQ IS A DUMMY          
  145.           READ(41,503,END=430)NMONTQ 
  146.   112     CONTINUE
  147.           NMONTQ=NMNPRE 
  148.           NDAYT=NDHRS/24
  149.           NDAYTQ=NDAYT-1
  150.           ASSIGN 270 TO LAST1 
  151.           GO TO 260 
  152.           ENDIF 
  153. C  RUN GROUND PRECOND FOR NMPRE MONTHS
  154. C   FINAL NDAYS-1 WEATHER VALUES WILL BE STORED FOR REPEAT CALC 
  155. C     (NOTE:  ARRAYS ARE DIM FOR MAX OF NDAYS-1=4)
  156.   200 NMONTQ=1
  157.       ASSIGN 270 TO LAST1 
  158.       IF(NPRINT.GT.0)THEN 
  159.           DO 201 I=1,28 
  160.           IPQ=IP(I) 
  161.   201     TPR(I)=TG(IPQ)
  162.           WRITE(60,504)(TPR(I),I=1,28) 
  163.           ENDIF 
  164.       NDAYT=NDHRS/24
  165.       NDAYTQ=NDAYT-1
  166.   207 NDAY=0
  167.   208 NDAY=NDAY+1 
  168.       IF(NDAY.GT.NDAYT)GO TO 220
  169.       IF(NDAY.GT.1)NDY=NDAY-1 
  170. C  READ 24 HOURS OF DATA
  171.       DO 209 I=1,24 
  172. C         TPR(1) BELOW IS A DUMMY VAR      
  173.       READ(41,*)TDBT(I),TPR(1),WSPDT(I),SOLRT(I),TPR(1),MONLST 
  174. C  SAVE VALUES   FOR REPEAT CALC
  175.       IF(NDAY.GT.1.AND.NDY.LE.4)THEN 
  176.           ODDB(I,NDY)=TDBT(I) 
  177.           WSPEED(I,NDY)=WSPDT(I)
  178.           SOLARH(I,NDY)=SOLRT(I)
  179.           ENDIF 
  180.   209 CONTINUE
  181.       IHR=0 
  182.   210 IHR=IHR+1 
  183.       IF(IHR.EQ.25)THEN 
  184.           IF(NDBG.EQ.1)WRITE(60,505)NDAYQ
  185.           NDAYQ=NDAYQ+1 
  186.           GO TO 208 
  187.           ENDIF 
  188.       IF(IPRBG.EQ.1)THEN
  189.         CALL CURS(20)
  190.         WRITE(*,542)IHR,NDAY,NDAYQ,MONLST,KM
  191.   542 FORMAT(1X,'GRNDEX 1: INITIAL DAYS; IHR,NDAY,NDAYQ,MONLST,KM= ',
  192.      + 5I4)     
  193.       ENDIF
  194.       TODDB=TDBT(IHR) 
  195.       WSPED=WSPDT(IHR)
  196.       SOLRH=SOLRT(IHR)
  197. C  GET GROUND HEAT TRANSFER COEF
  198.       HOGRND=HGRN(WSPED)
  199.       CALL SETND2(TIMEYR,HOGRND)
  200.       CALL EXPLCT(TODDB,SOLRH,HOGRND,ABSRPG) 
  201.       GO TO 210 
  202. C  NOW REPEAT CALCULATIONS TO APPROX THE EFFECT ON GROUND 
  203. C   OF AN ENTIRE MONTH OF WEATHER 
  204. C  NOTE: ONLY ABOUT 20 DAYS ARE NEEDED, SO TOTAL DAYS/MON < MAX IS OK 
  205.   220 IEND=INT((NDYM(MONLST)-NDAYT)/NDAYTQ)
  206.       IRPEAT=0
  207.   230 IRPEAT=IRPEAT+1 
  208.       IF(IRPEAT.GT.IEND)GO TO 260 
  209.       NDAY=0
  210.   240 NDAY=NDAY+1 
  211.       IF(NDAY.GT.NDAYTQ)GO TO 230 
  212.       IHR=0 
  213.   250 IHR=IHR+1 
  214.       IF(IHR.EQ.25)THEN 
  215.           IF(NDBG.EQ.1)WRITE(60,505)NDAYQ
  216.           NDAYQ=NDAYQ+1 
  217.           GO TO 240 
  218.           ENDIF 
  219.       IF(IPRBG.EQ.1)THEN
  220.         CALL CURS(21)
  221.         IF(ICODE.EQ.4)THEN
  222.           WRITE(*,545)IHR,NDAY,NDAYQ,MONLST,KM
  223.         ELSE
  224.           WRITE(*,543)IHR,NDAY,NDAYQ,MONLST,KM
  225.         ENDIF
  226.   543 FORMAT(1X,'GRNDEX 2: REPEAT INITIAL DAYS; IHR,NDAY,NDAYQ,MONLST,',
  227.      +       'KM= ',5I4)     
  228.   545 FORMAT(1X,'GRNDEX 4: FINISH MONTH; IHR,NDAY,NDAYQ,MONLST,',
  229.      +       'KM= ',5I4)     
  230.       ENDIF
  231.       TODDB=ODDB(IHR,NDAY)
  232.       WSPED=WSPEED(IHR,NDAY)
  233.       SOLRH=SOLARH(IHR,NDAY)
  234.       HOGRND=HGRN(WSPED)
  235.       CALL SETND2(TIMEYR,HOGRND)
  236.       CALL EXPLCT(TODDB,SOLRH,HOGRND,ABSRPG) 
  237.       GO TO 250 
  238. C  NOW DO PRECONDITIONING FOR THE NEXT MONTH
  239.   260 IF(NPRINT.GT.0)THEN 
  240.           DO 262 I=1,28 
  241.           IPQ=IP(I) 
  242.   262     TPR(I)=TG(IPQ)
  243.           WRITE(60,504)(TPR(I),I=1,28)
  244.           ENDIF 
  245.       GO TO LAST1,(270,410) 
  246.   270 NMONTQ=NMONTQ+1 
  247.       IF(NMONTQ.LE.NMNPRE)GO TO 207 
  248.       IF(IGINIT.EQ.-2)THEN
  249.           OPEN(43,FILE='TAPE43',STATUS='UNKNOWN') 
  250.           WRITE(43,502)(TG(I),I=1,28)
  251.           CLOSE(43) 
  252.           ENDIF 
  253.       IHR=0 
  254.       NDY=0 
  255.       GO TO 500 
  256. C  HOURLY GROUND HEAT TRANSFER CALCULATIONS 
  257.   300 HOGRND=HGRN(WSPED)
  258.       CALL SETND2(TIMEYR,HOGRND)
  259.       CALL EXPLCT(TODDB,SOLRH,HOGRND,ABSRPG) 
  260. C  SAVE WEATHER DATA AFTER THE FIRST DAY
  261.   304 IHR=IHR+1 
  262.       IF(IHR.EQ.25)THEN 
  263.           IF(NDBG.EQ.1)WRITE(60,505)NDAYQ
  264.           NDAYQ=NDAYQ+1 
  265.           NDY=NDY+1 
  266.           IHR=0 
  267.           GO TO 304 
  268.         ENDIF 
  269.       IF(IPRBG.EQ.1)THEN
  270.         CALL CURS(22)
  271.         WRITE(*,544)IHR
  272.   544 FORMAT(16X,'GRNDEX 3: HOURLY CALCULATIONS FOR HR= ',I3)
  273.       ENDIF
  274.       IF(NDY.GE.1.AND.NDY.LE.4)THEN
  275.           ODDB(IHR,NDY)=TODDB 
  276.           WSPEED(IHR,NDY)=WSPED 
  277.           SOLARH(IHR,NDY)=SOLRH 
  278.           ENDIF 
  279.       GO TO 500 
  280. C  REPEAT CALC OF LAST FOUR DAYS TO FINISH MONTH
  281.   400 ASSIGN 410 TO LAST1 
  282. C  !!!
  283. C  USE HEAT FLOWS FROM WALLS AT LAST HOUR OF LAST DAY TO FINISH MONTH 
  284.       MONLST=KM 
  285. C         GET AVERAGES FOR THE PREVIOUS 24 HOURS
  286.       IF(NTBASM.EQ.0)STOP ' GRNDEX:NTBASM=0.! '      
  287.       DATA NTMQU/0/
  288.       IF(NTMQU.EQ.0)THEN
  289.         UBASFRF=UBASF
  290.         UBWBGRF=UBWBG
  291.         TBASMRF=TBASM
  292.         NTMQU=1
  293.       ENDIF
  294.       TBASM=TBASM/NTBASM
  295.       UBASF=0.
  296.       DO 402 I=1,2
  297.       IZW=IZWD(I)
  298.       IJ=15
  299.       IF(I.EQ.2)IJ=27
  300.       QCSURF(IZW)=QCSURFS(IZW)/NTBASM
  301.       UBASF=UBASF+(QCSURF(IZW)/(TBASM-TG(IJ)) - DDWKL(I+4))/AWALLA(IZW)
  302.       QCSURFS(IZW)=0.
  303.   402 CONTINUE
  304.       UBASF=0.5*UBASF
  305.       UBWBG=0.
  306.       DO 404 I=1,4
  307.       IZW=IZWE(I)
  308.       IJ=I
  309.       IF(I.EQ.3)IJ=8
  310.       IF(I.EQ.4)IJ=9
  311.       QCSURF(IZW)=QCSURFS(IZW)/NTBASM
  312.       UBWBG=UBWBG+(QCSURF(IZW)/(TBASM-TG(IJ)) - DDWKL(I))/AWALLA(IZW)
  313.       QCSURFS(IZW)=0.
  314.   404 CONTINUE
  315.       UBWBG=UBWBG/4.
  316.       WRITE(60,*)' GRNDEX 4: REPEAT CALC OF LAST 4 DAYS TO FINISH MONTH'
  317.       WRITE(60,*)' GRNDEX: ADJUSTING TBASM,UBASF,UBWBG VALUES..'
  318.       WRITE(60,*)' INPUT VALUES OF UBASF AND UBWBG= ',UBASFRF,UBWBGRF
  319.       WRITE(60,*)'  AT KM= ',KM,' NEW VALUES OF UBASF,UBWBG= ',UBASF,
  320.      +             UBWBG
  321.       WRITE(60,*)' INPUT VALUE OF BSMT AIR TEMP = ',TBASMRF
  322.       WRITE(60,*)'  MEAN VALUE OF BSMT AIR TEMP(LAST 24 HRS)= ',TBASM
  323.       WRITE(60,*)'  NTBASM= ',NTBASM
  324.       NTBASM=0
  325.       CALL CURS(23)
  326.       WRITE(*,*)' GRNDEX 4: REPEAT CALC OF LAST 4 DAYS TO FINISH MONTH'
  327.       GO TO 220 
  328.   410 CONTINUE
  329.       CALL CURS(21)
  330.       WRITE(*,*)' GRNDEX 4: COMPLETED FINISHING MONTH!                '
  331.       NDY=0 
  332.       IHR=0 
  333.       GO TO 500 
  334.   420 STOP 'GRNDEX:EOF READING TGS FROM TAPE43; SET IGINIT=-2 AND RERUN' 
  335.   430 STOP 'GRNDEX:EOF WHILE ADVANCING ON TAPE41' 
  336. C  ZERO HEAT FLOW ARRAYS
  337.   500 CALL ZERV(6,QBASF(1),QBASF(2),QBWBG(1),QBWBG(2),
  338.      +          QBWBG(3),QBWBG(4),0.,0.,0.,0.)
  339.       TBASM=0.
  340.       CALL CURS(20)
  341.       WRITE(*,506)
  342.       CALL CURS(21)
  343.       WRITE(*,506)
  344.       CALL CURS(23)
  345.       WRITE(*,506)
  346.       RETURN
  347.   999 STOP ' GROUND: EOF ON TAPE18 WITH NAMELIST INPGND'
  348.   502 FORMAT((1X,7(1X,E11.5)))
  349.   503 FORMAT(A10) 
  350.   504 FORMAT(1H0,'T S= ',8X,2G13.5/ 
  351.      +1X,39X,3G13.5/
  352.      +1X,13X,2G13.5/
  353.      +1X,13X,2G13.5/
  354.      +1X,39X,3G13.5/
  355.      +1X,13X,2G13.5/1X,2G13.5/1X,19X,G13.5,7X,G13.5/
  356.      +1X,2G13.5/
  357.      +1X,52X,2G13.5/1X,G13.5,13X,G13.5/ 
  358.      +1X,G13.5,19X,G13.5,20X,G13.5/1X,32X,G13.5)
  359.   505 FORMAT(1X,'GRNDEX:END OF DAY= ',I5) 
  360.   506 FORMAT(80(1H ))
  361.       END 
  362.       FUNCTION HGRN(WSPED)
  363. C  CONVECTIVE HEAT TRANSFER COEF AT GROUND DUE TO WIND VELOCITY 
  364. C    USE CARRIER CORRELATION FOR H AT GROUND SURF 
  365. C    (AN ALTERNATE WHICH GIVES SOMEWHAT LOWER VALUES IS THAT FOR
  366. C     A FLAT PLATE,IE: H=0.431*WSPED**.8 FOR L=10 FT. OR
  367. C     H*(1.0./L)**.2 FOR LOWER L) 
  368. C     UNITS: WSPED, MPH      HGRN, BTU/HR-FT2-F 
  369.       IF(WSPED.LT..4)THEN 
  370.           HGRN=1. 
  371.       ELSE
  372.           HGRN=SQRT(WSPED)/.6584
  373.           ENDIF 
  374.       RETURN
  375.       END 
  376.       SUBROUTINE SETNOD(TIMEYR,HOGRND)
  377. C  SET NODE VALUES FOR BASEMENT TO GROUND HEAT TRANSFER 
  378.       DIMENSION         DRN(28),RR(5),DN(28),DNO(28),VOL(28), 
  379.      +DDZ1(28),DDZ2(28),DDR1(28),DDR2(28),
  380.      +DDZ(6),IR(28),IZ(28),IA(28),A(16),DDWL(6),DRWL(6)
  381.      +,XK(28),I19(4),DDZK(7),I17(6)
  382. CMDK BLK52
  383. CMDK BLK53
  384. CMDK BLK55
  385. CMDK BLK57
  386. CMDK BLKHWG
  387. CMDK ENCBK2
  388. CMDK SOILB
  389. CMDK UABAS
  390.       LOGICAL NDEBG 
  391. C  F1F GIVES THE AVG RADIUS THAT HEAT MUST TRAVEL (ref: ANDREWS,
  392. C  A TRNSYS-COMPATIBLE MODEL OF GROUND-COUPLED STORAGE,SEPT 1979,
  393. C  BNL 51061 UC-59c)
  394.       F1F(Z1,Z2)=2./3.*(Z2**3-Z1**3)/(Z2**2-Z1**2)
  395.       F2F(Z3,Z4)=PI4*(Z4*Z4-Z3*Z3)
  396. C SETUP RADIAL CONNECTIONS (IR IS RADIAL CONNECTED NODE FOR NODE I
  397.       DATA IR/3,4,5,5,6,7,0,10,11,12,12,13,14,0,27, 
  398.      +28,18,19,20,0,22,19,24,25,0,0,17,17/
  399. C  SETUP AXIAL CONNECTIONS
  400.       DATA IZ/2,8,4,10,12,13,14,9,17,11,17,18,
  401.      +19,20,16,21,22,22,24,25,23,24,26,26,26,0,28,21/ 
  402. C  SET AREA INDICATOR 
  403.       DATA IA/1,1,2,2,3,4,6,1,1,
  404.      +2,2,3,4,6,14,14,7,3,4,6,5,
  405.      +8,5,9,6,0,15,15/
  406.       DATA I19/1,2,8,9/ 
  407.       DATA I17/1,3,5,6,0,7/ 
  408.       NDEBG=.FALSE. 
  409.       DATA PI/3.141596/ 
  410.       PI2=2.*PI 
  411.       PI4=PI/4. 
  412.       DO 10 I=1,30
  413.       DO 10 J=1,30
  414.    10 AK(I,J)=0.
  415.       REQBAS=SQRT(ABASFT/PI)
  416.       DEQBAS=2.*REQBAS
  417.       ABWBGC=PI*DEQBAS*HWBG 
  418. C   RATH IS AMPLIFICATION OF HEAT FLOW TO BASEMENT AIR AT WALL
  419. C     TO ACCOUNT  FOR SMALLER WALL AREA WITH CYL COORDINATES
  420.       RATH=ABWBGC/ABWBGT
  421.       REQ1=SQRT(REQBAS**2. - ABASF(2)/PI)
  422.       DEQ1=2.*REQ1
  423.       REQ2=REQBAS+THWAL 
  424.       A(14)=PI*REQ1*REQ1
  425.       A(15)=PI*(REQ2*REQ2-REQ1*REQ1)
  426.       A(16)=ABASFT-A(14)
  427.       DZN(5)=DZN(1)+DZN(2)
  428.       DZN(6)=DZN(5) 
  429.       DZN(7)=DZN(5) 
  430.       DZN(12)=DZN(8)+DZN(9) 
  431.       DZN(13)=DZN(12) 
  432.       DZN(14)=DZN(12) 
  433.       DZN(3)=DZN(1) 
  434.       DZN(4)=DZN(2) 
  435.       DZN(10)=DZN(8)
  436.       DZN(11)=DZN(9)
  437.       ZTF=ZDEPTH-HWBG-THFLR 
  438.       DZN(15)=ZTF/22. 
  439.       DZN(16)=3.*ZTF/22.
  440.       DZN(17)=DZN(15)+DZN(16) 
  441.       DZN(18)=DZN(17) 
  442.       DZN(21)=6.*ZTF/22.
  443.       DZN(22)=DZN(21) 
  444.       DZN(19)=DZN(18)+DZN(22) 
  445.       DZN(20)=DZN(19) 
  446.       DZN(23)=12.*ZTF/22. 
  447.       DZN(24)=DZN(23) 
  448.       DZN(25)=DZN(24) 
  449.       DZN(26)=2.*DZN(23)
  450.       DZN(27)=DZN(15) 
  451.       DZN(28)=DZN(16) 
  452.       IF(IGINIT.EQ.1)GO TO 16 
  453. C   SET INITIAL SOIL TEMPS USING KUSUDA RELATIONSHIP
  454. C     SET DEPTH TO CENTER OF NODES(ZN)
  455. C     (USED TO SET INITIAL GROUND TEMPS)
  456.       ZN(1)=0.5*DZN(1)
  457.       ZN(2)=DZN(1)+0.5*DZN(2) 
  458.       ZN(3)=ZN(1) 
  459.       ZN(4)=ZN(2) 
  460.       ZN(8)=DZN(1)+DZN(2)+0.5*DZN(8)
  461.       ZN(9)=DZN(1)+DZN(2)+DZN(8)+0.5*DZN(9) 
  462.       ZN(10)=ZN(8)
  463.       ZN(11)=ZN(9)
  464.       ZN(5)=0.5*DZN(5)
  465.       ZN(12)=DZN(5)+0.5*DZN(12) 
  466.       ZN(6)=ZN(5) 
  467.       ZN(13)=ZN(12) 
  468.       ZN(7)=ZN(5) 
  469.       ZN(14)=ZN(12) 
  470.       ZN(15)=HWBG+THFLR+0.5*DZN(15) 
  471.       ZN(16)=HWBG+THFLR+DZN(15)+0.5*DZN(16) 
  472.       ZN(17)=DZN(5)+DZN(12)+0.5*DZN(17) 
  473.       ZN(18)=ZN(17) 
  474.       ZN(19)=ZN(6)+ZN(13)+0.5*DZN(19) 
  475.       ZN(20)=ZN(19) 
  476.       ZN(21)=DZN(6)+DZN(13)+DZN(17)+0.5*DZN(21) 
  477.       ZN(22)=ZN(21) 
  478.       ZN(23)=DZN(6)+DZN(13)+DZN(19)+0.5*DZN(23) 
  479.       ZN(24)=ZN(23) 
  480.       ZN(25)=ZN(24) 
  481.       ZN(26)=DZN(6)+DZN(13)+DZN(19)+DZN(24)+0.5*DZN(24) 
  482.       ZN(27)=ZN(15) 
  483.       ZN(28)=ZN(16) 
  484.       ALFZ=XKSOIL/(RHSOIL*CPSOIL) 
  485.       IF(IGINIT.NE.2)THEN
  486.         DO 12 I=1,28
  487.         ZNODE=ZN(I) 
  488.         TG(I)=TGKUS(TIMEYR)
  489.    12   CONTINUE
  490.       ENDIF
  491. C   SET RADIAL WIDTHS OF NODES
  492.    16 DRN(1)=RFIELD/28. 
  493.       DRN(2)=DRN(1) 
  494.       DRN(8)=DRN(1) 
  495.       DRN(9)=DRN(1) 
  496.       DRN(3)=3.*RFIELD/28.
  497.       DRN(4)=DRN(3) 
  498.       DRN(10)=DRN(3)
  499.       DRN(11)=DRN(3)
  500.       DRN(5)=6.*RFIELD/28.
  501.       DRN(12)=DRN(5)
  502.       DRN(17)=DRN(1)+DRN(3) 
  503.       DRN(18)=DRN(5)
  504.       DRN(22)=DRN(17)+DRN(18) 
  505.       DRN(6)=18.*RFIELD/28. 
  506.       DRN(13)=DRN(6)
  507.       DRN(19)=DRN(6)
  508.       DRN(24)=DRN(22)+DRN(19) 
  509.       DRN(15)=REQ1
  510.       DRN(16)=DRN(15) 
  511.       DRN(21)=REQ2
  512.       DRN(23)=DRN(21) 
  513.       DRN(25)=0.
  514.       DRN(26)=0.
  515.       DRN(27)=REQ2-REQ1 
  516.       DRN(28)=DRN(27) 
  517.       RR(1)=REQ2
  518.       RR(2)=RR(1)+DRN(1)
  519.       RR(3)=RR(2)+DRN(3)
  520.       RR(4)=RR(3)+DRN(5)
  521.       RR(5)=RR(4)+DRN(6)
  522. C   DN VALUES ARE DIA TO NODE CENTROID
  523. C   DNO VALUES ARE DIA TO OUTER WALL OF NODE
  524.       DNO(1)=2.*RR(2) 
  525.       D=2.*RR(1)
  526.       DN(1)=F1F(D,DNO(1)) 
  527.       DN(2)=DN(1) 
  528.       DN(8)=DN(1) 
  529.       DN(9)=DN(1) 
  530.       DNO(2)=DNO(1) 
  531.       DNO(8)=DNO(1) 
  532.       DNO(9)=DNO(1) 
  533.       DNO(3)=DNO(1)+2.*DRN(3) 
  534.       DNO(4)=DNO(3) 
  535.       DNO(10)=DNO(3)
  536.       DNO(11)=DNO(3)
  537.       DN(3)=F1F(DNO(1),DNO(3))
  538.       DN(4)=DN(3) 
  539.       DN(10)=DN(3)
  540.       DN(11)=DN(3)
  541.       DNO(5)=DNO(3)+2.0*DRN(5)
  542.       DNO(12)=DNO(5)
  543.       DNO(18)=DNO(5)
  544.       DNO(22)=DNO(5)
  545.       DN(5)=F1F(DNO(3),DNO(5))
  546.       DN(12)=DN(5)
  547.       DN(18)=DN(5)
  548.       DNO(17)=DNO(3)
  549.       DN(17)=F1F(D,DNO(17)) 
  550.       DNO(6)=DNO(5)+2.*DRN(6) 
  551.       DNO(13)=DNO(6)
  552.       DNO(19)=DNO(6)
  553.       DNO(24)=DNO(6)
  554.       DN(6)=F1F(DNO(5),DNO(6))
  555.       DN(13)=DN(6)
  556.       DN(19)=DN(6)
  557.       DN(22)=F1F(D,DNO(22)) 
  558.       DN(15)=2./3.*DEQ1 
  559.       DN(16)=DN(15) 
  560.       DN(21)=2./3.*D
  561.       DN(23)=DN(21) 
  562.       DNO(15)=DEQ1
  563.       DNO(16)=DNO(15) 
  564.       DNO(21)=D 
  565.       DNO(23)=DNO(21) 
  566.       DN(24)=F1F(DNO(23),DNO(24)) 
  567.       DN(7)=DNO(6)+DRN(6) 
  568.       DN(14)=DN(7)
  569.       DN(20)=DN(7)
  570.       DN(25)=DN(7)
  571.       DNO(27)=DNO(21) 
  572.       DNO(28)=DNO(27) 
  573.       DN(27)=F1F(DNO(15),DNO(27)) 
  574.       DN(28)=DN(27) 
  575. C  CALC HEAT FLOW AREAS IN DEPTH DIRECTION
  576.       A(1)=F2F(D,DNO(1))
  577.       A(2)=F2F(DNO(1),DNO(3)) 
  578.       A(3)=F2F(DNO(3),DNO(5)) 
  579.       A(4)=F2F(DNO(5),DNO(6)) 
  580.       A(5)=PI4*D*D
  581.       A(6)=6.*A(4)
  582.       A(7)=A(1)+A(2)
  583.       A(8)=A(7)+A(3)
  584.       A(9)=A(8)+A(4)
  585.       A(10)=PI2*REQBAS*RATH*DZN(1)
  586.       A(11)=PI2*REQBAS*RATH*DZN(2)
  587.       A(12)=PI2*REQBAS*RATH*DZN(8)
  588.       A(13)=PI2*REQBAS*RATH*DZN(9)
  589. C  CALC NODE VOLUMES
  590.       DO 20 I=1,28
  591.       IF(I.EQ.26)GO TO 20 
  592.       L=IA(I) 
  593.       AZ=A(L) 
  594.       VOL(I)=AZ*DZN(I)
  595.    20 CONTINUE
  596.       DO 30 I=1,28
  597.       IF(I.EQ.26)GO TO 30 
  598.       K=IZ(I) 
  599.       L=IA(I) 
  600.       AZ=A(L) 
  601.       DDZ1(I)=0.5*DZN(I)/AZ 
  602.       DDZ2(I)=0.5*DZN(K)/AZ 
  603.    30 CONTINUE
  604. C  CALC DDZ'S FOR SURFACE CONNECTIONS 
  605.       DDZ(1)=0.5*DZN(1)/A(1)
  606.       DDZ(2)=0.5*DZN(3)/A(2)
  607.       DDZ(3)=0.5*DZN(5)/A(3)
  608.       DDZ(4)=0.5*DZN(6)/A(4)
  609.       DDZ(5)=0. 
  610.       DDZ(6)=0.5*DZN(7)/A(6)
  611. C   CALC DDR'S FOR RADIAL CONDUCTION
  612.       DO 40 I=1,28
  613.       IF(I.EQ.26)GO TO 40 
  614.       IF(I.EQ.7.OR.I.EQ.14)GO TO 40 
  615.       IF(I.EQ.20.OR.I.EQ.25)GO TO 40
  616.       J=IR(I) 
  617.       DENOM=PI2*DZN(I)
  618.       DDR1(I)=ALOG(DNO(I)/DN(I))/DENOM
  619.       DDR2(I)=ALOG(DN(J)/DNO(I))/DENOM
  620.    40 CONTINUE
  621. C  DDWL IS FROM OUTER SURF OF BASEMENT WALL TO ADJACENT GROUND CENTROID
  622.       DO 50 I=1,4 
  623.       L=I 
  624.       IF(I.EQ.3)L=8 
  625.       IF(I.EQ.4)L=9 
  626. C           DRWL IS THE RADIAL DISTANCE HEAT HAS TO FLOW FROM OUTER
  627. C           SURF OF BASEMENT WALL TO CENTROID OF ADJACENT GRND NODE      
  628.       DRWL(I)=0.5*(DN(L) - D)
  629.    50 DDWL(I)=ALOG(DN(L)/D)/(PI2*DZN(L))
  630.       DDWL(5)=0.5*DZN(15)/A(14)
  631.       DDWL(6)=0.5*DZN(27)/A(15) 
  632.       RETURN
  633. C * * * * 
  634.       ENTRY SETND1(TIMEYR,HOGRND) 
  635. C    CALC AK'S (CONDUCTANCES BETWEEN NODES) 
  636. C  SETUP FOR VARIABLE K, IF NEEDED LATER
  637.       DO 60 I=1,28
  638.    60 XK(I)=XKSOIL
  639.       DDWKL(1)=DDWL(1)/XK(1)
  640.       DDWKL(2)=DDWL(2)/XK(2)
  641.       DDWKL(3)=DDWL(3)/XK(8)
  642.       DDWKL(4)=DDWL(4)/XK(9)
  643. C         CONDWL(1-4) VALUES ARE USED IN OWALL.FOR      
  644.       CONDWL(1)=XK(1)/DRWL(1)
  645.       CONDWL(2)=XK(2)/DRWL(2)
  646.       CONDWL(3)=XK(8)/DRWL(3)
  647.       CONDWL(4)=XK(9)/DRWL(4)
  648.       DDWKL(5)=DDWL(5)/XK(15) 
  649.       DDWKL(6)=DDWL(6)/XK(27) 
  650. C         CONDWL(5,6) VALUES ARE USED IN FLOOR.FOR      
  651.       CONDWL(5)=XK(15)/(0.5*DZN(15))
  652.       CONDWL(6)=XK(27)/(0.5*DZN(27))
  653.       DO 62 I=1,6 
  654.       IF(I.EQ.5)GO TO 62
  655.       IQ=I17(I) 
  656.       DDZK(I)=DDZ(I)/XK(IQ) 
  657.    62 CONTINUE
  658. C  CALC INNER AK'S
  659.       DO 80 I=1,28
  660.       IF(I.EQ.26)GO TO 80 
  661.       J=IR(I) 
  662.       IF(J.EQ.0)GO TO 70
  663.       AK(I,J)=1./(DDR1(I)/XK(I)+DDR2(I)/XK(J))
  664.       AK(J,I)=AK(I,J) 
  665.    70 K=IZ(I) 
  666.       AK(I,K)=1./(DDZ1(I)/XK(I)+DDZ2(I)/XK(K))
  667.       AK(K,I)=AK(I,K) 
  668.    80 CONTINUE
  669. C   CALC BOUNDARY AK'S
  670. C  BOUNDARY AT BSMT FLR OR WALL IS SOIL TEMP OUTSIDE FLR OR WALL
  671.       AK(15,29)=1./DDWKL(5) 
  672.       AK(29,15)=AK(15,29) 
  673.       AK(27,29)=1./DDWKL(6) 
  674.       AK(29,27)=AK(27,29) 
  675.       DO 82 I=1,4 
  676.       IJ=I19(I) 
  677.       AK(IJ,29)=1./DDWKL(I) 
  678.       AK(29,IJ)=AK(IJ,29) 
  679.    82 CONTINUE
  680. C   CALC THERMAL CAPACITANCE VALUES (S'S) 
  681.       RCP=RHSOIL*CPSOIL 
  682.       DO 90 I=1,28
  683.       IF(I.EQ.26)GO TO 90 
  684.       RCPV=RCP*VOL(I) 
  685.       S(I)=1./RCPV
  686.    90 CONTINUE
  687.       IF(NDEBG)THEN 
  688.           WRITE(60,500)(DZN(I),I=1,28) 
  689.            WRITE(60,512)(ZN(I),I=1,28) 
  690.           WRITE(60,501)(DRN(I),I=1,28) 
  691.           WRITE(60,502)(RR(I),I=1,5) 
  692.           WRITE(60,503)(DN(I),DNO(I),I=1,28) 
  693.           WRITE(60,511)(A(I),I=1,15) 
  694.           WRITE(60,504)(VOL(I),I=1,28) 
  695.           WRITE(60,505)(DDZ1(I),DDZ2(I),I=1,28)
  696.           WRITE(60,506)(DDR1(I),DDR2(I),I=1,28)
  697.           WRITE(60,507)(DDZ(I),I=1,6)
  698.           WRITE(60,508)(DDWL(I),I=1,6) 
  699.           WRITE(60,510)(S(I),I    =1,28) 
  700.           ENDIF 
  701.       NDEBG=.FALSE. 
  702.       RETURN
  703.       ENTRY SETND2(TIMEYR,HOGRND) 
  704.       AK(1,30)=1./(DDZK(1)+1./(HOGRND*A(1)))
  705.       AK(30,1)=AK(1,30) 
  706.       AK(3,30)=1./(DDZK(2)+1./(HOGRND*A(2)))
  707.       AK(30,3)=AK(3,30) 
  708.       AK(5,30)=1./(DDZK(3)+1./(HOGRND*A(3)))
  709.       AK(30,5)=AK(5,30) 
  710.       AK(6,30)=1./(DDZK(4)+1./(HOGRND*A(4)))
  711.       AK(30,6)=AK(6,30) 
  712.       AK(7,30)=1./(DDZK(6)+1./(HOGRND*A(6)))
  713.       AK(30,7)=AK(7,30) 
  714.       IF(ICODE.EQ.2)THEN
  715. C         SET PARAMETERS FOR HEAT FLOW FROM BSMT AIR TO FLOOR AND WALLS      
  716.       ENDIF
  717.       RETURN
  718.   500 FORMAT(1X,'DZN S= ',/6(1X,5G13.5/)) 
  719.   501 FORMAT(1X,'DRN S= '/6(1X,5G13.5/))
  720.   502 FORMAT(1X,'RR S= '/5G13.5)
  721.   503 FORMAT(1X,'DN,DNO S= '/5(F7.2,1X,F7.2)/ 
  722.      +5(F7.2,1X,F7.2)/5(F7.2,1X,F7.2))
  723.   504 FORMAT(1X,'VOL S= '/6(1X,5G13.5/))
  724.   505 FORMAT(1X,'DDZ1,DDZ2= '/5(1X,G12.4,G12.4)/
  725.      +5(1X,G12.4,G12.4)/5(1X,G12.4,G12.4))
  726.   506 FORMAT(1X,'DDR1,DDR2= '/5(1X,G12.4,G12.4)/
  727.      +5(1X,G12.4,G12.4)/5(1X,G12.4,G12.4))
  728.   507 FORMAT(1X,'DDZ S= ',6G13.5) 
  729.   508 FORMAT(1X,'DDWL S= ',6G13.5)
  730.   509 FORMAT(11X,'I,J= ',2I5,'AK= ',G13.5)
  731.   510 FORMAT(1X,'S S= ',6(1X,5G13.5/))
  732.   511 FORMAT(1X,'A= ',5G13.5/4X,5G13.5/4X,6G13.5) 
  733.   512 FORMAT(1X,'ZN S= ',/6(1X,5G13.5/))
  734.       END 
  735.       SUBROUTINE EXPLCT(TODDB,SOLARH,HOGRND,ABSRPG)
  736. C  COMPUTE NEW TEMPS FOR GROUND AROUND BASEMENT USING 
  737. C          EXPLICIT,FORWARD,FINITE DIFFERENCE TECHNIQUE 
  738. C  --METHOD ORIGINATED WITH G. WHITACRE AT BATTELLE-- 
  739. C    THERMAL CONNECTIONS BETWEEN NODES ARE REFERENCED TO TOP,RIGHT
  740. C          BOTTOM,AND LEFT IN NODAL SKETCH
  741.       DIMENSION ITOP(28,2),ILFT(28,2),IRGT(28),IBOT(28) 
  742.      +,JTOP(28),JLFT(28),ISL(6)
  743. C      REAL STAB(28)
  744. CMDK NZN
  745. CMDK NZW
  746. CMDK IZWQ
  747. CMDK BLK52
  748. CMDK SOILB
  749. CMDK TEMPB
  750. CMDK UABAS
  751.       DATA ITOP/30, 1, 30,  3, 30, 30, 30,  2,  8,  4,
  752.      +          10,  5,  6,  7, 29, 15,  9, 12, 13, 14, 
  753.      +          16, 17, 21, 22, 20,  0, 29, 27, 16*0,11,3*0,28,18,0,19, 
  754.      +          4*0/
  755.       DATA IRGT/ 3,  4,  5,  5,  6,  7,  0, 10, 11, 12, 
  756.      +          12, 13, 14,  0, 27, 28, 18, 19, 20,  0, 
  757.      +          22, 19, 24, 25,  0,  0, 17, 17/ 
  758.       DATA IBOT/ 2,  8,  4,  10, 12, 13, 14,  9, 17, 11,
  759.      +          17, 18, 19, 20, 16, 21, 22, 22, 24, 25, 
  760.      +          23, 24, 26, 26, 26,  0, 28, 21/ 
  761.       DATA ILFT/29, 29,  1,  2,  3,  5,  6, 29, 29,  8, 
  762.      +           9, 10, 12, 13,  0,  0, 27, 17, 18, 19, 
  763.      +           0, 21,  0, 23, 24,  0, 15, 16, 4*0,4,6*0,11,4*0,28,0,
  764.      +            22,7*0,15,16/ 
  765.       DATA NU,NS1,NS2/1,1,0/
  766.       DATA JTOP/16*1,2,3*1,2,2,1,2,1,0,1,1/ 
  767.       DATA JLFT/4*1,2,6*1,2,2*1,2*0,2,1,2,1,0,1,0,2*1,0,1,1/
  768.       DATA SMAX/1./ 
  769.       DATA ISL/1,2,8,9,15,27/ 
  770.       DATA NV/0/,NSQ/0/ 
  771. C  NOTE: TIME BETWEEN CALLS TO THIS SUBPROGRAM SHOULD BE 1.0 HR (SET BELOW) 
  772.       DATA DTIMEG/1.0/ 
  773. C  SET SOIL TEMPS AT BACK-SIDE OF BSMT FLOOR AND BLW GRND BSMT WALL 
  774.       IF(ICODE.EQ.3)THEN
  775.         DO 2 I=1,6
  776.         IL=ISL(I) 
  777.         ISOIL=I 
  778.         IF(I.EQ.6)ISOIL=11
  779.         IF(I.LE.4)THEN
  780.           IZ=IZWE(I)
  781.         ELSE
  782.           IZ=IZWD(I-4)
  783.         ENDIF
  784.         TSOIL(ISOIL)=TMP(1,IZ)
  785.     2   CONTINUE      
  786.       ELSE
  787. C         SET TSOIL AT BSMT WALLS AND FLOOR AND UPDATE NODE TEMPS
  788. C         DURING PRECONDITIONING AND END-OF-MONTH CALCULATIONS.
  789.         CALL BSMTPRE
  790.       ENDIF
  791.       TG(30)=TODDB+ABSRPG*SOLARH/HOGRND 
  792. C   LOOP STARTS HERE
  793.       SMIN=20.
  794.       IQ=0
  795.    10 IQ=IQ+1 
  796.       IF(IQ.EQ.7)IQ=IQ+1
  797.       IF(IQ.EQ.14)IQ=IQ+1
  798.       IF(IQ.EQ.20)IQ=IQ+1
  799.       IF(IQ.EQ.25)IQ=IQ+2
  800.       IF(IQ.EQ.15)TG(29)=TSOIL(5) 
  801.       IF(IQ.EQ.27)TG(29)=TSOIL(11)
  802.       AKT=0.
  803.       SUM=0.
  804.       SUM1=0. 
  805.       JT=JTOP(IQ) 
  806.       DO 20 L=1,JT
  807.       IT=ITOP(IQ,L) 
  808.       IF(IT.EQ.0)GO TO 20 
  809.       AKT=AK(IQ,IT) 
  810.       IF(NU.EQ.0)WRITE(60,500)IQ,IT,AKT
  811.       SUM=SUM+AKT 
  812.       SUM1=SUM1+AKT*TG(IT)
  813.    20 CONTINUE
  814.       IR=IRGT(IQ) 
  815.       IF(IR.EQ.0)GO TO 30 
  816.       AKR=AK(IQ,IR) 
  817.       IF(NU.EQ.0)WRITE(60,500)IQ,IR,AKR
  818.       SUM=SUM+AKR 
  819.       SUM1=SUM1+AKR*TG(IR)
  820.    30 CONTINUE
  821.       IB=IBOT(IQ) 
  822.       IF(IB.EQ.0)GO TO 32 
  823.       AKB=AK(IQ,IB) 
  824.       IF(NU.EQ.0)WRITE(60,500)IQ,IB,AKB
  825.       SUM=SUM+AKB 
  826.       SUM1=SUM1+AKB*TG(IB)
  827.    32 CONTINUE
  828.       JR=JLFT(IQ) 
  829.       IF(JR.EQ.0)GO TO 50 
  830.       DO 40 L=1,JR
  831.       IL=ILFT(IQ,L) 
  832.       IF(IL.EQ.0)GO TO 40 
  833.       AKL=AK(IQ,IL) 
  834.       IF(NU.EQ.0)WRITE(60,500)IQ,IL,AKL
  835.       SUM=SUM+AKL 
  836.       IF(IQ.EQ.1)TG(29)=TSOIL(1)
  837.       IF(IQ.EQ.2)TG(29)=TSOIL(2)
  838.       IF(IQ.EQ.8)TG(29)=TSOIL(3)
  839.       IF(IQ.EQ.9)TG(29)=TSOIL(4)
  840.       SUM1=SUM1+AKL*TG(IL)
  841.    40 CONTINUE
  842.    50 TCN=DTIMEG*S(IQ) 
  843.       STB=1.-TCN*SUM
  844.       IF(STB.GT.SMIN)GO TO 60 
  845.       SMIN=STB
  846.       ISMIN=IQ
  847.    60 TG(IQ)=TG(IQ)*STB+TCN*SUM1
  848.       IF(IQ.LT.28)GO TO 10
  849.       TSOIL(6)=TG(7)
  850.       TSOIL(7)=TG(14) 
  851.       TSOIL(8)=TG(20) 
  852.       TSOIL(9)=TG(25) 
  853.       TSOIL(10)=TG(26)
  854.       NU=1
  855. C   END OF LOOP 
  856. C  CHECK TO SEE IF ALL GROUND TEMPS ARE STABLE
  857.       IF(SMIN.GT.SMAX)GO TO 70
  858.       IF(SMIN.LT.0.)GO TO 80
  859.       GO TO 90
  860.    70 IF(NS1.EQ.0)THEN
  861.       WRITE(60,501)ISMIN,SMIN,DTIMEG
  862.       NS1=1 
  863.       GO TO 90
  864.       ENDIF 
  865.    80 IF(NS2.EQ.0)THEN
  866.       WRITE(60,502)ISMIN,SMIN,DTIMEG
  867.       NS2=1 
  868.       NSQ=1 
  869.       GO TO 92
  870.       ENDIF 
  871.    90 CONTINUE
  872.       IF(NV.EQ.0.AND.NSQ.EQ.0)WRITE(60,503)ISMIN,SMIN
  873.       NV=1
  874.    92 CONTINUE
  875.       RETURN
  876.   500 FORMAT(1X,'I,J,AK= ',2I5,G13.5) 
  877.   501 FORMAT(1X,'OKAY TO INCR TIMSTP FOR GROUND T CALC'/
  878.      +1X,'ISMIN,SMAX,DTIME= ',I5,2G13.5)
  879.   502 FORMAT(1X,'--OOPS,TIMSTP FOR GROUND T CALC MUST BE DECR'/ 
  880.      +1X,'ISMIN,SMIN,DTIME= ',I5,2G13.5)
  881.   503 FORMAT(1H0,'*** STABLE GROUND-TEMP CALC---IQ,SMIN= ',I5,G13.5)
  882.       END 
  883.       FUNCTION TGKUS(TIME)
  884. C  KUSUDA RELATIONSHIP FOR FAR-FIELD GROUND TEMP
  885. C    ASHRAE TRANS VOL71(1) 1965,P61-75
  886. CMDK BLK55
  887.       DATA NTQ/0/ 
  888.       DATA PI/3.141596/ 
  889.       DATA HRYR/8766./
  890.       IF(NTQ.NE.0)GO TO 10
  891.       NTQ=1 
  892.       PI2H=2.*PI/HRYR 
  893.       C1=SQRT(PI/(ALFZ*HRYR)) 
  894.    10 C2=C1*ZNODE 
  895.       C3=PI2H*TIME-C2-PHASE 
  896.       TGKUS=TEAV-TEAMP/EXP(C2)*COS(C3)
  897.       RETURN
  898.       END 
  899.       SUBROUTINE BSMTPRE
  900. C
  901. C         CALC TEMPS OF BSMT WALLS AND FLOOR DURING PRECONDITIONING
  902. C         AND END OF MONTH CALCULATIONS.
  903. CMDK NWN
  904. CMDK NZN
  905. CMDK NZW
  906. CMDK IZWQ
  907. CMDK BLKBSF
  908. CMDK ENCBLK
  909. CMDK ENCBK2
  910. CMDK BLKQS
  911. CMDK SOILB
  912. CMDK SURFAR
  913. CMDK TEMP1
  914. CMDK TEMPB
  915. CMDK UABAS
  916.       NRM=NZNBAS
  917.       ID=9
  918. C              UPDATE BSMT WALL TEMPS BELOW GROUND      
  919. C              MUST DO THIS 3600/120 TIMES! (GROUND IS ON 1 HR 
  920. C              TIMESTEP, WHILE OWALLS IS ON A 2 MIN TIMESTEP
  921. C         NTGHR IS 3600/120      
  922.       DO 10 IU=1,NTGHR
  923.       DO 2 I = 1,4
  924. C         BSMT WALL NODES BELOW GROUND      
  925.       IZW=IZWE(I)
  926.       IJ=I
  927.       IF(I.GT.2)IJ=I+5
  928.       RB=1./(UBWBG * AWALLA(IZW) + DDWKL(I))
  929.       QCSURF(IZW)=1./RB * (TBASM - TG(IJ))
  930.       TSOIL(I)=TG(IJ) + QCSURF(IZW) * DDWKL(I)
  931.     2 CONTINUE
  932. C      DATA IQUU/0/
  933. C      IQUU=IQUU+1
  934.       DO 4 I=1,4
  935.       IZW=IZWE(I)
  936.       IJ=I
  937.       IF(I.GT.2)IJ=I+5
  938.       KON=KONSTA(IZW)
  939.       CALL OWALLS(NRM,IZW,ID,KON,DM,DM,DM,DM,IDM)
  940. C         UPDATE TMP VALUES (IS DONE IN ENDLP2 WHEN NOT PRECONDITIONING)      
  941.       DO 3 J=1,4
  942.     3 TMP(J,IZW)=TMPN(J,IZW)
  943.     4 CONTINUE
  944.    10 CONTINUE
  945. C   
  946.       ID=8
  947.       DO 20 IU=1,NTGHR
  948.       DO 12 I = 1, 2
  949. C         BASEMENT FLOOR NODES      
  950.       IZW=IZWD(I)
  951.       KON=KONSTA(IZW)
  952.       IF(I.EQ.1)THEN
  953.         IJ=15
  954.         ISOIL = 5
  955.       ELSEIF(I.EQ.2)THEN
  956.         IJ=27
  957.         ISOIL = 11
  958.       ENDIF
  959.       RB=1./(UBASF * AWALLA(IZW)  + DDWKL(I+4))
  960.       QCSURF(IZW) = 1./RB * (TBASM - TG(IJ))
  961.       TSOIL(ISOIL)=TG(IJ) + QCSURF(IZW) * DDWKL(I+4)
  962.    12 CONTINUE
  963.       DO 14 I = 1, 2
  964.       IZW=IZWD(I)
  965.       KON=KONSTA(IZW)
  966.       IF(I.EQ.1)THEN
  967.         ISOIL = 5
  968.       ELSEIF(I.EQ.2)THEN
  969.         ISOIL = 11
  970.       ENDIF
  971.       CALL FLOOR(NRM,IZW,ID,KON,IDM,TSOIL(ISOIL),DM,IDM)
  972.       DO 13 J=1,4
  973.    13 TMP(J,IZW)=TMPN(J,IZW)
  974.    14 CONTINUE
  975.    20 CONTINUE
  976.       RETURN
  977.       END      
  978.