📄 read_open.f90
字号:
!=======================================================================SUBROUTINE READ_OPEN ( WORK_NAME ) USE PRECISION , ONLY: & WP USE GRID_MEDIUM , ONLY: & TEXT, H USE CONTROL_DATA, ONLY: & KEY_TLD, KEY_SND, & MZ, MT1, MT2, IPAS1, IPAS2, MR, & KTTO, KTBO, & DT, & OMG, WB, & LREC, LS, & FRJMAX, FRANGE, NRFREQ USE WAVEFIELD , ONLY: & SEIS!----------------------------------------------------------------------- IMPLICIT NONE CHARACTER (LEN=*), INTENT (IN) :: WORK_NAME CHARACTER (LEN=20) :: LOG_FILE_NAME, IN_FILE_NAME, & MO_FILE_NAME, Q_FILE_NAME LOGICAL :: EX INTEGER :: IOS, I, IOLENINT, ALLOSTAT NAMELIST /NAMES/ MO_FILE_NAME, Q_FILE_NAME NAMELIST /KEYS/ KEY_TLD, KEY_SND NAMELIST /CONTROLDATA/ MT1 , MT2 , IPAS1, & MZ, H, DT NAMELIST /ATTEN/ FRJMAX, FRANGE, NRFREQ NAMELIST /NONREF/ OMG, WB, & KTTO, KTBO NAMELIST /TXT/ TEXT NAMELIST /SNAP/ IPAS2 NAMELIST /SOURCE/ LS NAMELIST /REC/ MR!______________________________________________ LOG FILE __________ 11 _ LOG_FILE_NAME = WORK_NAME//'.LOG' OPEN (11, FILE = LOG_FILE_NAME, STATUS='UNKNOWN' ) WRITE (11,*) 'LOG_FILE: JOB_NAME =', WORK_NAME!______________________________________________ CONTROL DATA FILE _ 12 _ IN_FILE_NAME = WORK_NAME//'.IN' INQUIRE ( FILE = IN_FILE_NAME, EXIST=EX, IOSTAT=IOS ) IF ( IOS > 0 ) THEN WRITE (11,*) 'ERROR HAS OCCURED DURING THE EXECUTION & &OF THE INQUIRE STATEMENT.', & 'IOSTAT (IN_FILE_NAME)=',IOS STOP END IF IF ( .NOT.EX ) THEN WRITE (11,*) IN_FILE_NAME,' NOT FOUND' STOP END IF OPEN (12, FILE = IN_FILE_NAME, STATUS='OLD' )!______________________________________________ READ CONTROL DATA ______ READ (12, NML=NAMES) WRITE (11, NML=NAMES) READ (12, NML=KEYS) WRITE (11, NML=KEYS) IF ( .NOT. ( KEY_TLD .OR. KEY_SND ) ) THEN WRITE (11,*) ' NONE OF TL_ AND SN_ OUTPUT FILES IS REQUIRED' STOP END IF READ (12, NML=CONTROLDATA) WRITE (11, NML=CONTROLDATA) NRFREQ = 4 READ (12, NML=ATTEN) WRITE (11, NML=ATTEN) WB = 0.4_WP READ (12, NML=NONREF) WRITE (11, NML=NONREF) READ (12, NML=TXT) WRITE (11, NML=TXT) IPAS1 = 1 IPAS2 = 1 IF ( KEY_SND ) THEN READ (12, NML=SNAP) WRITE (11, NML=SNAP) END IF READ (12, NML=SOURCE) WRITE (11, NML=SOURCE) IF ( KEY_TLD ) THEN READ (12, NML=REC) WRITE (11, NML=REC) ALLOCATE ( LREC (1:MR), STAT=ALLOSTAT ) IF ( ALLOSTAT > 0 ) THEN WRITE (11,*) ' ALLOCATION ERROR R_O_02, STAT=', ALLOSTAT STOP END IF READ (12,*) ( LREC(I), I=1,MR ) END IF CLOSE (12)!______________________________________________ MODEL FILES _ 14,15 _ INQUIRE ( FILE = MO_FILE_NAME, EXIST=EX, IOSTAT=IOS ) IF ( IOS > 0 ) THEN WRITE (11,*) 'ERROR HAS OCCURED DURING THE EXECUTION & &OF THE INQUIRE STATEMENT.', & 'IOSTAT (MO_FILE_NAME)=',IOS STOP END IF IF ( .NOT.EX ) THEN WRITE (11,*) MO_FILE_NAME,' NOT FOUND' STOP END IF INQUIRE ( FILE = Q_FILE_NAME, EXIST=EX, IOSTAT=IOS ) IF ( IOS > 0 ) THEN WRITE (11,*) 'ERROR HAS OCCURED DURING THE EXECUTION & &OF THE INQUIRE STATEMENT.', & 'IOSTAT (DE_FILE_NAME)=',IOS STOP END IF IF ( .NOT.EX ) THEN WRITE (11,*) Q_FILE_NAME,' NOT FOUND' STOP END IF OPEN ( 14, FILE = MO_FILE_NAME, FORM = 'UNFORMATTED', STATUS='OLD' ) OPEN ( 15, FILE = Q_FILE_NAME, FORM = 'UNFORMATTED', STATUS='OLD' )!__________________________________SEISMOMETERS OUTPUT FILES _ 21, 22 _ IF ( KEY_TLD ) THEN INQUIRE ( FILE = WORK_NAME//'_D.DAT', EXIST=EX, IOSTAT=IOS ) IF ( IOS > 0 ) THEN WRITE (11,*) 'ERROR HAS OCCURED DURING THE EXECUTION & &OF THE INQUIRE STATEMENT.', & 'IOSTAT (MO_FILE_NAME)=',IOS STOP END IF IF ( EX ) THEN WRITE (11,*) WORK_NAME//'_D.DAT',' EXISTS' STOP END IF OPEN ( 21, FILE=WORK_NAME//'_D.DAT', STATUS='NEW' ) END IF!__________________________________SNAPSHOTS OUTPUT FILES _ 23, 24 _ IF ( KEY_SND ) THEN INQUIRE ( FILE = WORK_NAME//'_SD.DAT', EXIST=EX, IOSTAT=IOS ) IF ( IOS > 0 ) THEN WRITE (11,*) 'ERROR HAS OCCURED DURING THE EXECUTION & &OF THE INQUIRE STATEMENT.', & 'IOSTAT (MO_FILE_NAME)=',IOS STOP END IF IF ( EX ) THEN WRITE (11,*) WORK_NAME//'_SD.DAT',' EXISTS' STOP END IF OPEN ( 23, FILE=WORK_NAME//'_SD.DAT', & FORM = 'FORMATTED', STATUS='NEW' ) WRITE( 23, * ) "{" WRITE( 23, * ) "'title': '"//WORK_NAME//"_SD.DAT'," WRITE( 23, * ) "'xlabel':'Time'," WRITE( 23, * ) "'ylabel':'Space'," WRITE( 23, * ) "'traces':", MR,"," WRITE( 23, * ) "'samples':",(MT2-MT1+1)/IPAS2,"," WRITE( 23, * ) "'tracestep':",1,"," WRITE( 23, * ) "'timestep':",DT*IPAS2,"," WRITE( 23, * ) "'data':[" ALLOCATE ( SEIS(MR, (MT2-MT1+1)/IPAS2) ) END IFEND SUBROUTINE READ_OPEN
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -