⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 read_open.f90

📁 1D有限差分波动方程模拟
💻 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 + -