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
/
POST
/
TCYC.FOR
< prev
next >
Wrap
Text File
|
1992-05-11
|
11KB
|
332 lines
C PROGRAM TCYC(INPUT,OUTPUT,TAPE5=INPUT,TAPE6=OUTPUT,TAPE1,
C +TAPE2,TAPE3,TAPE7,TAPE8)
C
C THERMOSTAT CYCLING RATES. EVTIS.DAT FILE IS TAPE3 EDITED FOR
C STARTING/STOPPING TIME AND ANY GAPS TO AGREE WITH EXP DATA.
C NOTE: TAPE3 IS ACTIVATED BY SETTING IEVPRT=1 IN FILE FUR1AH1A.DAT.
C CALC CPH VS PCTON VALUES FROM ON-OFF TSTAT DATA
DIMENSION TGAP(10,2)
CHARACTER*10 NHEAD(8)
CHARACTER*1 IA1
OPEN(1,FILE='TCY1.OUT',STATUS='NEW')
OPEN(2,FILE='TCY2.OUT',STATUS='NEW')
OPEN(3,FILE='TCY3.OUT',STATUS='NEW')
OPEN(7,FILE='TCYC.OUT',STATUS='NEW')
OPEN(4,FILE='CYCDATA',STATUS='OLD')
OPEN(5,FILE='EVTIS.DAT',STATUS='OLD')
TIMLS=0.
TMONQ1=0.
TMOFQ1=0.
TMONQ2=0.
TMOFQ2=0.
TMONQ3=0.
TMOFQ3=0.
ICLS1=0
ICLS2=0
ICLS3=0
NDYUU=1
IQ1=0
IQ2=0
IQ3=0
NCY1=0
NCY2=0
NCY3=0
ILOLD=1
NAFTER=0
READ(4,517,END=997)NHEAD
WRITE(7,518)NHEAD
C ITYP = 1 MEASURED DATA
C ITYP = 2 PREDICTED DATA
READ(4,*)ITYP,IPR,TMSTRT,TMSTOP
READ(4,*)NGAP
IF(NGAP.NE.0)THEN
READ(4,*)((TGAP(I,J),J=1,2),I=1,NGAP)
WRITE(7,520)((TGAP(I,J),J=1,2),I=1,NGAP)
ENDIF
IF(ITYP.EQ.2)THEN
C IDAMP = 1 TO USE DAMPER EVENTS, = 0, TO USE THERMOSTAT EVENTS
C (NOTE: IF EXPERIMENTAL DATA (ITYP = 1) IDAMP SET = 0
OPEN(8,FILE='TCYC.DAT',STATUS='OLD')
READ(8,*)IDAMP
C TMSTRT AND TMSTOP ARE TIME OF YR FOR START AND STOP OF EXP DATA
C HAVE TO DO SOME JUGGLING OF TIME HERE BECAUSE 24-HR CLOCK IS
C USED ON PREDICTED DATA, NOT TIME OF YR.
TSTRT=TMSTRT-INT(TMSTRT/24.)*24.
NDAYS=INT(TMSTOP/24.)-INT(TMSTRT/24.)+1
TSTOP=TMSTOP-INT(TMSTOP/24)*24.
WRITE(7,*)' TMSTRT,TMSTOP= ',TMSTRT,TMSTOP
WRITE(7,*)' TSTRT,TSTOP,NDAYS= ',TSTRT,TSTOP,NDAYS
TIMHR=24.*INT(TMSTRT/24.)
ENDIF
11 IF(ITYP.EQ.1)THEN
C NOTE:::::: FOR HOUSE A IC2 AND IC3 ARE INTERCHANGED!
READ(5,*,END=999)TIMEHR,NDY,NHR,NMN,NSC,NDSC,ICODE,IYR,
+ IC1,IC3,IC2
TIMHR=TIMEHR
ELSE
C SET TO READ THE TAPE3 A87D1Y/EVTIS FILES ON FILESET A87D1Y, FOR EXAMPLE
C 5/22/90 NOTE: PC VERSION DOES NOT PRINT OUT 2 HEADER FILES!
C BELOW CODE WILL WORK OK ANYWAY!
READ(5,519,END=999)IA1
C THE TWO HEADER LINES FOR EACH DAY HAVE A 1 IN COLUMN 1
IF(IA1.EQ.'1')THEN
READ(5,519,END=999)IA1
ELSE
C BACKUP ONE LINE BECAUSE THE LINE CONTAINS GOOD DATA!!!
BACKSPACE 5
ENDIF
IF(IDAMP.EQ.0)THEN
READ(5,*,END=999)TIMEHR,ICODE,TA1,TA1,TA1,TA1,TA1,
+ IC1,IC2,IC3
ELSE
READ(5,*,END=999)TIMEHR,ICODE,TA1,TA1,TA1,TA1,TA1,
+ IC1,IC1,IC1,IC1,IC1,IC1,IC2,IC3
ENDIF
WRITE(7,530)TIMEHR,ICODE,IC1,IC2,IC3
DTIMHR=TIMEHR-TIMLS
IF(TIMLS.GT.TIMEHR)THEN
NDYUU=NDYUU+1
DTIMHR=24.-TIMLS+TIMEHR
ENDIF
TIMHR=TIMHR+DTIMHR
ENDIF
ILNEW=0
IF(IC1.EQ.1)ILNEW=1
IF(IC2.EQ.1)ILNEW=1
IF(IC3.EQ.1)ILNEW=1
IF(ILOLD.EQ.1.AND.ILNEW.EQ.0)THEN
NAFTER=NAFTER+1
ENDIF
ILOLD=ILNEW
TIMLS=TIMEHR
IF(NDYUU.EQ.1.AND.TIMEHR.LT.TSTRT)GO TO 11
IF(NDYUU.EQ.NDAYS.AND.TIMEHR.GT.TSTOP)GO TO 999
C WRITE(7,*)' TIMEHR,ICODE,IC1,IC2,IC3= ',TIMEHR,ICODE,IC1,IC2,IC3
C
20 IF(IQ1.EQ.0.AND.IC1.EQ.1)THEN
C FIRST ON SIGNAL IN TSTAT NO. 1
IQ1=1
TMELS1=TIMHR
WRITE(7,531)TIMEHR,TMELS1
ICLS1=1
ENDIF
IF(IQ2.EQ.0.AND.IC2.EQ.1)THEN
C FIRST ON SIGNAL IN TSTAT NO. 2
IQ2=1
TMELS2=TIMHR
WRITE(7,532)TIMEHR,TMELS2
ICLS2=1
ENDIF
IF(IQ3.EQ.0.AND.IC3.EQ.1)THEN
C FIRST ON SIGNAL IN TSTAT NO. 3
IQ3=1
TMELS3=TIMHR
WRITE(7,533)TIMEHR,TMELS3
ICLS3=1
ENDIF
IF(NGP.EQ.1)THEN
NGP=0
GOTO 11
ENDIF
C
IF(IC1.EQ.1.AND.ICLS1.EQ.0)THEN
C TSTAT TURNED ON IN ZONE 1
TMEOF1=TIMHR-TMELS1
WRITE(7,534)TIMEHR,TMEOF1
TMQOF1=TIMHR
TCYC1=TMEOF1+TMEON1
CYHR1=1./TCYC1
PCTON1=100.*TMEON1/TCYC1
SLOP1=CYHR1/PCTON1
NGP=0
IF(NGAP.NE.0)THEN
DO 30 I=1,NGAP
C SEE IF ANY PORTION OF THIS CYCLE FALLS WITHIN GAP
NGP1=0
IF(TMQOF1.GT.TGAP(I,1).AND.TMQOF1.LT.TGAP(I,2))NGP1=1
IF(TMQON1.GT.TGAP(I,1).AND.TMQON1.LT.TGAP(I,2))NGP1=1
IF(TMQON1.LT.TGAP(I,1).AND.TMQOF1.GT.TGAP(I,2))NGP1=1
TMGAP=0.5*(TGAP(I,1)+TGAP(I,2))
IF(TMQON1.LE.TMGAP.AND.TMQOF1.GE.TMGAP)NGP1=1
IF(NGP1.EQ.1)THEN
WRITE(7,510)TGAP(I,1),1
NGP=1
IQ1=0
ENDIF
30 CONTINUE
ENDIF
IF(NGP.NE.1)THEN
WRITE(1,501)TIMHR,PCTON1,CYHR1
WRITE(7,506)1,TIMHR,PCTON1,CYHR1,SLOP1
NCY1=NCY1+1
TMONQ1=TMONQ1+TMEON1
TMOFQ1=TMOFQ1+TMEOF1
WRITE(7,514)TMONQ1,TMOFQ1
ENDIF
TMELS1=TIMHR
ICLS1=IC1
ENDIF
C
IF(IC2.EQ.1.AND.ICLS2.EQ.0)THEN
C TSTAT TURNED ON IN ZONE 2
TMEOF2=TIMHR-TMELS2
WRITE(7,535)TIMEHR,TMEOF2
TMQOF2=TIMHR
TCYC2=TMEOF2+TMEON2
CYHR2=1./TCYC2
PCTON2=100.*TMEON2/TCYC2
SLOP2=CYHR2/PCTON2
NGP=0
IF(NGAP.NE.0)THEN
DO 31 I=1,NGAP
C SEE IF ANY PORTION OF THIS CYCLE FALLS WITHIN GAP
NGP2=0
IF(TMQOF2.GT.TGAP(I,1).AND.TMQOF2.LT.TGAP(I,2))NGP2=1
IF(TMQON2.GT.TGAP(I,1).AND.TMQON2.LT.TGAP(I,2))NGP2=1
IF(TMQON2.LT.TGAP(I,1).AND.TMQOF2.GT.TGAP(I,2))NGP2=1
TMGAP=0.5*(TGAP(I,1)+TGAP(I,2))
IF(TMQON2.LE.TMGAP.AND.TMQOF2.GE.TMGAP)NGP2=1
IF(NGP2.EQ.1)THEN
WRITE(7,510)TGAP(I,1),2
NGP=1
IQ2=0
ENDIF
31 CONTINUE
ENDIF
IF(NGP.NE.1)THEN
WRITE(2,501)TIMHR,PCTON2,CYHR2
WRITE(7,507)2,TIMHR,PCTON2,CYHR2,SLOP2
NCY2=NCY2+1
TMONQ2=TMONQ2+TMEON2
TMOFQ2=TMOFQ2+TMEOF2
WRITE(7,515)TMONQ2,TMOFQ2
ENDIF
TMELS2=TIMHR
ICLS2=IC2
ENDIF
C
IF(IC3.EQ.1.AND.ICLS3.EQ.0)THEN
C TSTAT TURNED ON IN ZONE 3
TMEOF3=TIMHR-TMELS3
WRITE(7,536)TIMEHR,TMEOF3
TMQOF3=TIMHR
TCYC3=TMEOF3+TMEON3
CYHR3=1./TCYC3
PCTON3=100.*TMEON3/TCYC3
SLOP3=CYHR3/PCTON3
NGP=0
IF(NGAP.NE.0)THEN
DO 32 I=1,NGAP
C SEE IF ANY PORTION OF THIS CYCLE FALLS WITHIN GAP
NGP3=0
IF(TMQOF3.GT.TGAP(I,1).AND.TMQOF3.LT.TGAP(I,2))NGP3=1
IF(TMQON3.GT.TGAP(I,1).AND.TMQON3.LT.TGAP(I,2))NGP3=1
IF(TMQON3.LT.TGAP(I,1).AND.TMQOF3.GT.TGAP(I,2))NGP3=1
TMGAP=0.5*(TGAP(I,1)+TGAP(I,2))
IF(TMQON3.LE.TMGAP.AND.TMQOF3.GE.TMGAP)NGP3=1
IF(NGP3.EQ.1)THEN
WRITE(7,510)TGAP(I,1),3
NGP=1
IQ3=0
ENDIF
32 CONTINUE
ENDIF
IF(NGP.NE.1)THEN
WRITE(3,501)TIMHR,PCTON3,CYHR3
WRITE(7,508)3,TIMHR,PCTON3,CYHR3,SLOP3
NCY3=NCY3+1
TMONQ3=TMONQ3+TMEON3
TMOFQ3=TMOFQ3+TMEOF3
WRITE(7,516)TMONQ3,TMOFQ3
ENDIF
TMELS3=TIMHR
ICLS3=IC3
ENDIF
C
IF(IC1.EQ.0.AND.ICLS1.EQ.1)THEN
C TSTAT TURNED OFF IN ZONE 1
TMEON1=TIMHR-TMELS1
WRITE(7,537)TIMEHR,TMEON1
TMQON1=TMELS1
TMELS1=TIMHR
ICLS1=IC1
ENDIF
IF(IC2.EQ.0.AND.ICLS2.EQ.1)THEN
C TSTAT TURNED OFF IN ZONE 2
TMEON2=TIMHR-TMELS2
WRITE(7,538)TIMEHR,TMEON2
TMQON2=TMELS2
TMELS2=TIMHR
ICLS2=IC2
ENDIF
IF(IC3.EQ.0.AND.ICLS3.EQ.1)THEN
C TSTAT TURNED OFF IN ZONE 3
TMEON3=TIMHR-TMELS3
WRITE(7,539)TIMEHR,TMEON3
TMQON3=TMELS3
TMELS3=TIMHR
ICLS3=IC3
ENDIF
TIMLS=TIMEHR
NGPQ=NGP1+NGP2+NGP3
IF(NGPQ.NE.0)THEN
NGP=1
GO TO 20
ENDIF
GO TO 11
997 STOP 'TCYC:EOF ON TOP OF FILE TAPE8'
999 WRITE(7,509)NCY1,NCY2,NCY3
DENOM1 = TMONQ1+TMOFQ1
IF(DENOM1.EQ.0.)THEN
PCTON1 = 0.
ELSE
PCTON1=100.*TMONQ1/(TMONQ1+TMOFQ1)
ENDIF
DENOM2 = TMONQ2+TMOFQ2
IF(DENOM2.EQ.0.)THEN
PCTON2=0.
ELSE
PCTON2=100.*TMONQ2/(TMONQ2+TMOFQ2)
ENDIF
DENOM3 = TMONQ3+TMOFQ3
IF(DENOM3.EQ.0.)THEN
PCTON3=0.
ELSE
PCTON3=100.*TMONQ3/(TMONQ3+TMOFQ3)
ENDIF
WRITE(7,511)PCTON1,TMONQ1,TMOFQ1
WRITE(7,512)PCTON2,TMONQ2,TMOFQ2
WRITE(7,513)PCTON3,TMONQ3,TMOFQ3
WRITE(7,540)NAFTER
STOP 'ENDED OK'
500 FORMAT(F12.0,22X,3I2)
501 FORMAT(1X,F12.4,2G13.5)
503 FORMAT(A1)
506 FORMAT(1X,'ZONE= ',I2,F12.5,2X,F5.2,2X,F5.2,2X,F5.3)
507 FORMAT(1X,'ZONE= ',I2,F12.5,23X,F5.2,2X,F5.2,2X,F5.3)
508 FORMAT(1X,'ZONE= ',I2,F12.5,44X,F5.2,2X,F5.2,2X,F5.3)
509 FORMAT(1X,'NO. OF TSTAT CYCLES IN Z1-3= ',3I5)
510 FORMAT(1X,'GAP AT TIME= ',G13.5,' HR IN ZONE ',I3)
511 FORMAT(1X,'ZONE 1: PCTON,TIME ON,TIME OFF= ',3G13.5)
512 FORMAT(1X,'ZONE 2: PCTON,TIME ON,TIME OFF= ',3G13.5)
513 FORMAT(1X,'ZONE 3: PCTON,TIME ON,TIME OFF= ',3G13.5)
514 FORMAT(1X,'TMONQ1,TMOFQ1= ',2G13.5)
515 FORMAT(1X,'TMONQ2,TMOFQ2= ',2G13.5)
516 FORMAT(1X,'TMONQ3,TMOFQ3= ',2G13.5)
517 FORMAT(8A10)
518 FORMAT(1X,8A10)
519 FORMAT(A1)
520 FORMAT((1X,'GAP AT TIME ',F12.4,' TO ',F12.4/))
530 FORMAT(1X,'TIM,ICODE,IC1,IC2,IC3= ',F12.4,I5,3X,3I3)
531 FORMAT(1X,'TIMEHR,TMELS1= ',F12.5,F12.5)
532 FORMAT(10X,'TIMEHR,TMELS2= ',F12.5,F12.5)
533 FORMAT(20X,'TIMEHR,TMELS3= ',F12.5,F12.5)
534 FORMAT(15X,'TIMEHR,TMEOF1= ',F12.5,F12.5)
535 FORMAT(25X,'TIMEHR,TMEOF2= ',F12.5,F12.5)
536 FORMAT(35X,'TIMEHR,TMEOF3= ',F12.5,F12.5)
537 FORMAT(16X,'TIMEHR,TMEON1= ',F12.5,F12.5)
538 FORMAT(26X,'TIMEHR,TMEON2= ',F12.5,F12.5)
539 FORMAT(36X,'TIMEHR,TMEON3= ',F12.5,F12.5)
540 FORMAT(15X,' NO. OF BLOWER AFTERRUNS= ',I6)
END