You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

110 lines
3.4 KiB
Fortran

SUBROUTINE SAVEEQ
USE WINTERACTER
USE BLKELTLD
include 'D.inc'
character*255 fnamein,filter
CHARACTER *24 DATAOUT
filter='Element Input files|*.elt|'
CALL WSelectFile(filter,SaveDialog+PromptOn+AppendExt+DirChange,FNAMEIN,'Element Load File Name')
IF (WInfoDialog(ExitButtonCommon).EQ.CommonOpen) THEN
OPEN(202,FILE=FNAMEIN,STATUS='UNKNOWN')
ELSE
RETURN
ENDIF
IF(IRMATYP .EQ. 11) WRITE(202,6000)
6000 FORMAT('TI')
IF(IRMATYP .EQ. 2 .OR. IRMATYP .EQ. 10) WRITE(202,6001)
6001 FORMAT('TE')
DO I=1,NQHYD
HRYEAR=365*24.
IYR=IYDATE(I)
IF(MOD(IYDATE(I),4) .EQ. 0) HRYEAR=HRYEAR+24.
IF(IRMATYP .EQ. 2 .OR. IRMATYP .EQ. 10) THEN
WRITE(202,6002) NCLINE(I),NEST(I),IYDATE(I),XYCEL(I,1),XYCEL(I,2)
!6002 FORMAT('QEI',5X,3I8)
6002 FORMAT('QEI',5X,3I8,2F16.2)
NST=NHYE(I)
DO N=1,NST
IF(TAE(N,I) .GE. HRYEAR) THEN
TAOUT=TAE(N,I)-HRYEAR
IYR=IYR+1
ELSE
IF(N .GT. 1) THEN
IF(TAE(N,I) .LT.TAE(N-1,I)) IYR=IYR+1
ENDIF
TAOUT=TAE(N,I)
ENDIF
CALL ENCODDAT(DATAOUT,TAE(N,I),IYR)
IF(IRMATYP .EQ. 2) THEN
WRITE(202,6003) DATAOUT,HAE(N,I)
6003 FORMAT(A24,F8.3)
ELSE
WRITE(202,6004) DATAOUT,ILAYRE(N,I),HAE(N,I),(HDE(N,I,K),K=1,3)
6004 FORMAT(A24,I8,F8.3,3F8.2)
ENDIF
ENDDO
ELSEIF(IRMATYP .EQ. 11) THEN
WRITE(202,6002) NCLINE(I),NEST(I),IYDATE(I),XYCEL(I,1),XYCEL(I,2)
NST=NHYE(I)
DO N=1,NST
IF(TAE(N,I) .GE. HRYEAR) THEN
TAOUT=TAE(N,I)-HRYEAR
IYR=IYR+1
ELSE
IF(N .GT. 1 .AND. TAE(N,I) .LT.TAE(N-1,I)) IYR=IYR+1
TAOUT=TAE(N,I)
ENDIF
CALL ENCODDAT(DATAOUT,TAE(N,I),IYR)
WRITE(202,6006) DATAOUT,HAE(N,I),(HDE(N,I,K),K=1,3)
6006 FORMAT(A24,4F8.3)
ENDDO
ENDIF
ENDDO
WRITE(202,6010)
6010 FORMAT('ENDDATA')
CLOSE (202)
RETURN
END
SUBROUTINE ENCODDAT(DATAOUT,DAYJUL,IYR)
CHARACTER*24 DATAOUT
REAL DAYJUL,TIME
INTEGER IMTS(12,2),IDAY,IMO,IYR,RMIN
DATA IMTS/0,31,59,90,120,151,181,212,243,273,304,334,0,31,60,91,121,152,182,213,244,274,305,335/
LP=1
IF(MOD(IYR,4) .EQ. 0) LP=2
DO K=1,12
IF(DAYJUL/24. .LT. IMTS(K,LP)) THEN
IMO=K-1
IDAY=DAYJUL/24.-IMTS(IMO,LP)+1
IDT=DAYJUL/24.
HR=DAYJUL-FLOAT(IDT)*24.
IHR=HR
RMIN=(HR-FLOAT(IHR))*60.+.5
GO TO 100
ENDIF
ENDDO
IMO=12
IDAY=DAYJUL/24.-(334+LP-1)+1
IDT=DAYJUL/24.
HR=DAYJUL-FLOAT(IDT)*24.
IHR=HR
RMIN=(HR-FLOAT(IHR))*60.+.5
100 IF(IHR .LT. 10) THEN
WRITE(DATAOUT(1:24),6000) IDAY,IMO,IYR,IHR,RMIN
6000 FORMAT('QM',7X,I2.2,'/',I2.2,'/',I4,I2,':',I2.2)
ELSE
WRITE(DATAOUT(1:24),6001) IDAY,IMO,IYR,IHR,RMIN
6001 FORMAT('QM',6X,I2.2,'/',I2.2,'/',I4,I3,':',I2.2)
ENDIF
RETURN
END