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

📄 dump.f90

📁 FDS为火灾动力学模拟软件源代码,该软件为开源项目,代码语言主要为FORTRAN,可在WINDOWS和LINUX下编译运行,详细说明可参考http://fire.nist.gov/fds/官方网址
💻 F90
📖 第 1 页 / 共 5 页
字号:
         WRITE(LU_DEVC(1),TCFORM) 's',(TRIM(OUTPUT_QUANTITY(DEVICE(N)%OUTPUT_INDEX)%UNITS),N=1,N_DEVC)         WRITE(TCFORM,'(A,I4.4,A)') "(",N_DEVC,"(A,','),A)"         WRITE(LU_DEVC(1),TCFORM) 'FDS Time',(TRIM(DEVICE(N)%ID),N=1,N_DEVC)      ENDIF   ENDIFENDIF! Initialize control output file (CHID_ctrl.csv) IF (N_CTRL>0) THEN   IF (COLUMN_DUMP_LIMIT) THEN      DO I = 1,N_CTRL_FILES         IF (APPEND) THEN            OPEN(LU_CTRL(I),FILE=FN_CTRL(I),FORM='FORMATTED',STATUS='OLD',POSITION='APPEND')         ELSE            OPEN(LU_CTRL(I),FILE=FN_CTRL(I),FORM='FORMATTED',STATUS='REPLACE')            WRITE(TCFORM,'(A,I4.4,A)') "(",MIN(254, N_CTRL - 254 * (I - 1)),"(A,','),A)"            WRITE(LU_CTRL(I),TCFORM) 's',('status',N=254 * (I - 1) + 1,MIN(N_CTRL, I * 254))            WRITE(TCFORM,'(A,I4.4,A)') "(",MIN(254, N_CTRL - 254 * (I - 1)),"(A,','),A)"            WRITE(LU_CTRL(I),TCFORM) 'FDS Time',(TRIM(CONTROL(N)%ID),N=254 * (I - 1) + 1,MIN(N_CTRL, I * 254))         ENDIF      ENDDO   ELSE      IF (APPEND) THEN         OPEN(LU_CTRL(1),FILE=FN_CTRL(1),FORM='FORMATTED',STATUS='OLD',POSITION='APPEND')      ELSE         OPEN(LU_CTRL(1),FILE=FN_CTRL(1),FORM='FORMATTED',STATUS='REPLACE')         WRITE(TCFORM,'(A,I4.4,A)') "(",N_CTRL,"(A,','),A)"         WRITE(LU_CTRL(1),TCFORM) 's',('status',N=1,N_CTRL)         WRITE(TCFORM,'(A,I4.4,A)') "(",N_CTRL,"(A,','),A)"         WRITE(LU_CTRL(1),TCFORM) 'FDS Time',(TRIM(CONTROL(N)%ID),N=1,N_CTRL)      ENDIF   ENDIFENDIF! Open heat release rate file (CHID_hrr.csv) IF (APPEND) THEN   OPEN(LU_HRR,FILE=FN_HRR,FORM='FORMATTED',STATUS='OLD',POSITION='APPEND')ELSE   OPEN(LU_HRR,FILE=FN_HRR,FORM='FORMATTED',STATUS='REPLACE')   WRITE(TCFORM,'(A,I4.4,A)') "(",5+N_ZONE,"(A,','),A)"   WRITE(LU_HRR,TCFORM) 's','kW','kW','kW','kW','kg/s',('atm',N=1,N_ZONE)    WRITE(LU_HRR,TCFORM) 'FDS_HRR_Time','HRR','RAD_LOSS','CONV_LOSS','COND_LOSS','BURN_RATE',(TRIM(P_ZONE(N)%ID),N=1,N_ZONE) ENDIF ! Write out info about mixture fraction-based state relationships for all mixture fraction SPECies DO N=1,N_SPECIES   IF (SPECIES(N)%MODE==MIXTURE_FRACTION_SPECIES) THEN      DZZ = 1._EB/10000._EB      OPEN(LU_STATE(N),FILE=FN_STATE(N),FORM='FORMATTED',STATUS='REPLACE')      WRITE(TCFORM,'(A,I4.4,A)') "(",10,"(A,','),A)"      WRITE(LU_STATE(N),TCFORM) ('kg/kg',NN=1,10),'g/mol'      WRITE(LU_STATE(N),TCFORM) 'Z','Fuel','O2','N2','H2O','CO2','CO','H2','Soot','Other','Wgt'      WRITE(LU_STATE(N),'(10(ES12.4,","),ES12.4)') (K*DZZ,(SPECIES(N)%Y_MF(K,J),J=1,9),SPECIES(N)%MW_MF(K),K=0,10000,10)      CLOSE(LU_STATE(N))   ENDIFENDDO ! Open species mass file IF_DUMP_SPECIES_INFO: IF (MASS_FILE) THEN   IF (APPEND) THEN      OPEN(LU_MASS,FILE=FN_MASS,FORM='FORMATTED',STATUS='OLD',POSITION='APPEND')   ELSE      OPEN(LU_MASS,FILE=FN_MASS,FORM='FORMATTED',STATUS='REPLACE')      IF (MIXTURE_FRACTION) THEN         LABEL(1) = 'Time'         LABEL(2) = 'Total'         LABEL(3) = 'Fuel'         LABEL(4) = 'O2'         LABEL(5) = 'N2'         LABEL(6) = 'H2O'         LABEL(7) = 'CO2'         LABEL(8) = 'CO'         LABEL(9) = 'H2'         LABEL(10)= 'Soot'         LABEL(11)= 'Other'                  NN = 11         DO N=1,N_SPECIES            IF (SPECIES(N)%MODE==GAS_SPECIES) THEN               NN = NN+1               LABEL(NN) = SPECIES(N)%NAME            ENDIF         ENDDO         WRITE(TCFORM,'(A,I4.4,A)') "(",NN-1,"(A,','),A)"         WRITE(LU_MASS,TCFORM) 's',('kg',N=1,NN-1)         WRITE(LU_MASS,TCFORM) (TRIM(LABEL(N)),N=1,NN)      ELSE         WRITE(TCFORM,'(A,I4.4,A)') "(",N_SPECIES+1,"(A,','),A)"         WRITE(LU_MASS,TCFORM) 's',('kg',N=0,N_SPECIES)         WRITE(LU_MASS,TCFORM)'FDS Time','Total',(TRIM(SPECIES(N)%NAME),N=1,N_SPECIES)      ENDIF   ENDIFENDIF IF_DUMP_SPECIES_INFOTUSED(7,:) = TUSED(7,:) + SECOND() - TNOWEND SUBROUTINE INITIALIZE_GLOBAL_DUMPS  SUBROUTINE INITIALIZE_MESH_DUMPS(NM)USE COMP_FUNCTIONS, ONLY : SECONDUSE MEMORY_FUNCTIONS, ONLY:RE_ALLOCATE_STRINGS,CHKMEMERR INTEGER, INTENT(IN) :: NMINTEGER :: IOR,IZERO,I,J,K,N,ERROR,I1,I2,J1,J2,K1,K2,I1B,I2B,IW,NN,NFCHARACTER(30) :: LABEL1,LABEL2,LABEL3REAL(EB) :: TNOW TNOW=SECOND()  M => MESHES(NM) IBAR=>M%IBARJBAR=>M%JBARKBAR=>M%KBARIBP1=>M%IBP1JBP1=>M%JBP1KBP1=>M%KBP1 ! Compute grid coords in single precision for output ALLOCATE(M%XPLT(0:IBAR),STAT=IZERO)CALL ChkMemErr('DUMP','XPLT',IZERO)ALLOCATE(M%YPLT(0:JBAR),STAT=IZERO)CALL ChkMemErr('DUMP','YPLT',IZERO)ALLOCATE(M%ZPLT(0:KBAR),STAT=IZERO)CALL ChkMemErr('DUMP','ZPLT',IZERO) DO I=0,IBAR   M%XPLT(I) = M%X(I)ENDDODO J=0,JBAR   M%YPLT(J) = M%Y(J)ENDDODO K=0,KBAR   M%ZPLT(K) = M%Z(K)ENDDO ! Initialize PLOT3D grid file (CHID.xyz) ALLOCATE(M%IBLK(0:IBAR,0:JBAR,0:KBAR),STAT=IZERO)CALL ChkMemErr('DUMP','IBLK',IZERO)ALLOCATE(M%QQ(0:IBP1,0:JBP1,0:KBP1,5),STAT=IZERO)CALL ChkMemErr('DUMP','QQ',IZERO)M%QQ=0._FB WRITE_XYZ_FILE: IF (WRITE_XYZ .AND..NOT.EVACUATION_ONLY(NM)) THEN   OPEN(LU_XYZ(NM),FILE=FN_XYZ(NM),FORM='UNFORMATTED',STATUS='REPLACE')   DO K=0,KBAR      DO J=0,JBAR         DO I=0,IBAR            IF (M%SOLID(M%CELL_INDEX(I,J,K))    .AND. M%SOLID(M%CELL_INDEX(I+1,J,K))   .AND. &                M%SOLID(M%CELL_INDEX(I,J+1,K))  .AND. M%SOLID(M%CELL_INDEX(I,J,K+1))   .AND. &                M%SOLID(M%CELL_INDEX(I+1,J+1,K)).AND. M%SOLID(M%CELL_INDEX(I+1,J,K+1)) .AND. &                M%SOLID(M%CELL_INDEX(I,J+1,K+1)).AND. M%SOLID(M%CELL_INDEX(I+1,J+1,K+1)) ) THEN               M%IBLK(I,J,K) = 0            ELSE               M%IBLK(I,J,K) = 1            ENDIF         ENDDO         ENDDO      ENDDO      WRITE(LU_XYZ(NM)) IBP1,JBP1,KBP1   WRITE(LU_XYZ(NM)) (((M%XPLT(I),I=0,IBAR),J=0,JBAR),K=0,KBAR),(((M%YPLT(J),I=0,IBAR),J=0,JBAR),K=0,KBAR), &                     (((M%ZPLT(K),I=0,IBAR),J=0,JBAR),K=0,KBAR),(((M%IBLK(I,J,K),I=0,IBAR),J=0,JBAR),K=0,KBAR)   CLOSE(LU_XYZ(NM))   IF (M%N_STRINGS+2>M%N_STRINGS_MAX) THEN      CALL RE_ALLOCATE_STRINGS(NM)   ENDIF   M%N_STRINGS = M%N_STRINGS + 1   WRITE(M%STRING(M%N_STRINGS),'(A)') 'XYZ'   M%N_STRINGS = M%N_STRINGS + 1   WRITE(M%STRING(M%N_STRINGS),'(A)') FN_XYZ(NM)ENDIF WRITE_XYZ_FILE ! Re-allocate IBLK array for use with isosurface generation DEALLOCATE(M%IBLK)ALLOCATE(M%IBLK(1:IBAR,1:JBAR,1:KBAR),STAT=IZERO)CALL ChkMemErr('DUMP','IBLK',IZERO) ! Initialize isosurface file IF (.NOT.APPEND .AND. .NOT.EVACUATION_ONLY(NM)) THEN    DO N=1,N_ISOF      IS => ISOSURFACE_FILE(N)      IF (M%N_STRINGS+5>M%N_STRINGS_MAX) CALL RE_ALLOCATE_STRINGS(NM)      M%N_STRINGS = M%N_STRINGS + 1      IF (IS%INDEX2==0) THEN         WRITE(M%STRING(M%N_STRINGS),'(A,1X,I2)') 'ISOF',NM      ELSE         WRITE(M%STRING(M%N_STRINGS),'(A,1X,I2)') 'TISOF',NM      ENDIF      M%N_STRINGS = M%N_STRINGS + 1      WRITE(M%STRING(M%N_STRINGS),'(A)') FN_ISOF(N,NM)      M%N_STRINGS = M%N_STRINGS + 1      WRITE(M%STRING(M%N_STRINGS),'(A)') OUTPUT_QUANTITY(IS%INDEX)%NAME      M%N_STRINGS = M%N_STRINGS + 1      WRITE(M%STRING(M%N_STRINGS),'(A)') OUTPUT_QUANTITY(IS%INDEX)%SHORT_NAME      M%N_STRINGS = M%N_STRINGS + 1      WRITE(M%STRING(M%N_STRINGS),'(A)') OUTPUT_QUANTITY(IS%INDEX)%UNITS             LABEL1 = TRIM(OUTPUT_QUANTITY(IS%INDEX)%NAME)//CHAR(0)      LABEL2 = TRIM(OUTPUT_QUANTITY(IS%INDEX)%SHORT_NAME)//CHAR(0)      LABEL3 = TRIM(OUTPUT_QUANTITY(IS%INDEX)%UNITS)//CHAR(0)      ERROR = 0      IF (IS%INDEX2==0) CALL ISOHEADER(TRIM(FN_ISOF(N,NM))//CHAR(0),LABEL1,LABEL2,LABEL3, &                                       IS%VALUE(1:IS%N_VALUES),IS%N_VALUES,ERROR)      IF (IS%INDEX2/=0) CALL TISOHEADER(TRIM(FN_ISOF(N,NM))//CHAR(0),LABEL1,LABEL2,LABEL3, &                                        IS%VALUE(1:IS%N_VALUES),IS%N_VALUES,ERROR)   ENDDO ENDIF ! Initialize Smoke3d file SMOKE3D_INITIALIZATION: IF (SMOKE3D .AND..NOT.EVACUATION_ONLY(NM)) THEN    IF (.NOT.APPEND) THEN      IF (M%N_STRINGS+5>M%N_STRINGS_MAX) CALL RE_ALLOCATE_STRINGS(NM)      M%N_STRINGS = M%N_STRINGS + 1      WRITE(M%STRING(M%N_STRINGS),'(A,1X,I4)') 'SMOKE3D',NM      M%N_STRINGS = M%N_STRINGS + 1      WRITE(M%STRING(M%N_STRINGS),'(A)') FN_SMOKE3D(1,NM)      M%N_STRINGS = M%N_STRINGS + 1      WRITE(M%STRING(M%N_STRINGS),'(A)') OUTPUT_QUANTITY(148)%NAME      M%N_STRINGS = M%N_STRINGS + 1      WRITE(M%STRING(M%N_STRINGS),'(A)') OUTPUT_QUANTITY(148)%SHORT_NAME      M%N_STRINGS = M%N_STRINGS + 1      WRITE(M%STRING(M%N_STRINGS),'(A)') OUTPUT_QUANTITY(148)%UNITS      CALL SMOKE3DHEADER(TRIM(FN_SMOKE3D(1,NM))//CHAR(0),0,M%IBAR,0,M%JBAR,0,M%KBAR)   ENDIF       IF (.NOT.APPEND) THEN      IF (M%N_STRINGS+5>M%N_STRINGS_MAX) CALL RE_ALLOCATE_STRINGS(NM)      M%N_STRINGS = M%N_STRINGS + 1      WRITE(M%STRING(M%N_STRINGS),'(A,1X,I4)') 'SMOKE3D',NM      M%N_STRINGS = M%N_STRINGS + 1      WRITE(M%STRING(M%N_STRINGS),'(A)') FN_SMOKE3D(2,NM)      M%N_STRINGS = M%N_STRINGS + 1      WRITE(M%STRING(M%N_STRINGS),'(A)') OUTPUT_QUANTITY(11)%NAME      M%N_STRINGS = M%N_STRINGS + 1      WRITE(M%STRING(M%N_STRINGS),'(A)') OUTPUT_QUANTITY(11)%SHORT_NAME      M%N_STRINGS = M%N_STRINGS + 1      WRITE(M%STRING(M%N_STRINGS),'(A)') OUTPUT_QUANTITY(11)%UNITS      CALL SMOKE3DHEADER(TRIM(FN_SMOKE3D(2,NM))//CHAR(0),0,M%IBAR,0,M%JBAR,0,M%KBAR)   ENDIF ENDIF SMOKE3D_INITIALIZATION ! Initialize Slice Files DO N=1,M%N_SLCF   SL => M%SLICE(N)   IF (APPEND) THEN      OPEN(LU_SLCF(N,NM),FILE=FN_SLCF(N,NM),FORM='UNFORMATTED',STATUS='OLD',POSITION='APPEND')   ELSE      IF (M%N_STRINGS+5>M%N_STRINGS_MAX) CALL RE_ALLOCATE_STRINGS(NM)      M%N_STRINGS = M%N_STRINGS + 1      WRITE(M%STRING(M%N_STRINGS),'(A,1X,I4)') 'SLCF',NM      M%N_STRINGS = M%N_STRINGS + 1      WRITE(M%STRING(M%N_STRINGS),'(A)') FN_SLCF(N,NM)      M%N_STRINGS = M%N_STRINGS + 1      WRITE(M%STRING(M%N_STRINGS),'(A)') OUTPUT_QUANTITY(SL%INDEX)%NAME      M%N_STRINGS = M%N_STRINGS + 1      WRITE(M%STRING(M%N_STRINGS),'(A)') OUTPUT_QUANTITY(SL%INDEX)%SHORT_NAME      M%N_STRINGS = M%N_STRINGS + 1      WRITE(M%STRING(M%N_STRINGS),'(A)') OUTPUT_QUANTITY(SL%INDEX)%UNITS      OPEN(LU_SLCF(N,NM),FILE=FN_SLCF(N,NM),FORM='UNFORMATTED',STATUS='REPLACE')      WRITE(LU_SLCF(N,NM)) OUTPUT_QUANTITY(SL%INDEX)%NAME      WRITE(LU_SLCF(N,NM)) OUTPUT_QUANTITY(SL%INDEX)%SHORT_NAME      WRITE(LU_SLCF(N,NM)) OUTPUT_QUANTITY(SL%INDEX)%UNITS      WRITE(LU_SLCF(N,NM)) SL%I1,SL%I2,SL%J1,SL%J2,SL%K1,SL%K2   ENDIFENDDO    ! Initialize Boundary Files IF_BOUNDARY_FILES: IF (N_BNDF>0 .AND. .NOT.EVACUATION_ONLY(NM)) THEN   I1B = MAX(IBP1,JBP1)   I2B = MAX(JBP1,KBP1)   ALLOCATE(M%PP(0:I1B,0:I2B),STAT=IZERO)   CALL ChkMemErr('DUMP','PP',IZERO)   ALLOCATE(M%PPN(0:I1B,0:I2B),STAT=IZERO)   CALL ChkMemErr('DUMP','PPN',IZERO)   ALLOCATE(M%IBK(0:I1B,0:I2B),STAT=IZERO)   CALL ChkMemErr('DUMP','IBK',IZERO)   IF_NOT_APPEND: IF (.NOT.APPEND) THEN      M%INC = 0      DO IW=1,M%NWC         IOR = M%IJKW(4,IW)         IF (M%BOUNDARY_TYPE(IW)==SOLID_BOUNDARY .OR. M%BOUNDARY_TYPE(IW)==NULL_BOUNDARY) M%INC(IOR,M%OBST_INDEX_W(IW)) = 1      ENDDO      M%NPATCH = 0      DO N=0,M%N_OBST         OB=>M%OBSTRUCTION(N)         DO I=-3,3            IF (.NOT.OB%SHOW_BNDF(I)) M%INC(I,N) = 0            IF (M%INC(I,N)==1) M%NPATCH = M%NPATCH + 1          ENDDO      ENDDO   ENDIF IF_NOT_APPENDENDIF IF_BOUNDARY_FILES BOUNDARY_FILES: DO NF=1,N_BNDF   BF => BOUNDARY_FILE(NF)    IF (M%NPATCH==0) EXIT BOUNDARY_FILES   IF (EVACUATION_ONLY(NM)) EXIT BOUNDARY_FILES    RESTART: IF (APPEND) THEN      OPEN(LU_BNDF(NF,NM),FILE=FN_BNDF(NF,NM),FORM='UNFORMATTED',STATUS='OLD',POSITION='APPEND')   ELSE RESTART      IF (M%N_STRINGS+5>M%N_STRINGS_MAX) CALL RE_ALLOCATE_STRINGS(NM)      M%N_STRINGS = M%N_STRINGS + 1      WRITE(M%STRING(M%N_STRINGS),'(A,1X,2I2)') 'BNDF',NM,1        M%N_STRINGS = M%N_STRINGS + 1      WRITE(M%STRING(M%N_STRINGS),'(A)') FN_BNDF(NF,NM)      M%N_STRINGS = M%N_STRINGS + 1      WRITE(M%STRING(M%N_STRINGS),'(A)') OUTPUT_QUANTITY(BF%INDEX)%NAME      M%N_STRINGS = M%N_STRINGS + 1      WRITE(M%STRING(M%N_STRINGS),'(A)') OUTPUT_QUANTITY(BF%INDEX)%SHORT_NAME      M%N_STRINGS = M%N_STRINGS + 1      WRITE(M%STRING(M%N_STRINGS),'(A)') OUTPUT_QUANTITY(BF%INDEX)%UNITS      OPEN(LU_BNDF(NF,NM),FILE=FN_BNDF(NF,NM),FORM='UNFORMATTED',STATUS='REPLACE')      WRITE(LU_BNDF(NF,NM)) OUTPUT_QUANTITY(BF%INDEX)%NAME      WRITE(LU_BNDF(NF,NM)) OUTPUT_QUANTITY(BF%INDEX)%SHORT_NAME      WRITE(LU_BNDF(NF,NM)) OUTPUT_QUANTITY(BF%INDEX)%UNITS      WRITE(LU_BNDF(NF,NM)) M%NPATCH      IF (M%INC(-3,0)==1) WRITE(LU_BNDF(NF,NM)) 0,IBAR,0,JBAR,KBAR,KBAR,-3,0,NM      IF (M%INC(-2,0)==1) WRITE(LU_BNDF(NF,NM)) 0,IBAR,JBAR,JBAR,0,KBAR,-2,0,NM      IF (M%INC(-1,0)==1) WRITE(LU_BNDF(NF,NM)) IBAR,IBAR,0,JBAR,0,KBAR,-1,0,NM      IF (M%INC( 1,0)==1) WRITE(LU_BNDF(NF,NM))    0,   0,0,JBAR,0,KBAR, 1,0,NM      IF (M%INC( 2,0)==1) WRITE(LU_BNDF(NF,NM))    0,IBAR,   0,0,0,KBAR, 2,0,NM      IF (M%INC( 3,0)==1) WRITE(LU_BNDF(NF,NM))    0,IBAR,   0,JBAR,0,0, 3,0,NM      DO N=1,M%N_OBST         OB=>M%OBSTRUCTION(N)         I1 = OB%I1         I2 = OB%I2         J1 = OB%J1         J2 = OB%J2         K1 = OB%K1         K2 = OB%K2         IF (M%INC(-3,N)==1) WRITE(LU_BNDF(NF,NM)) I1,I2,J1,J2,K1,K1,-3,N,NM         IF (M%INC(-2,N)==1) WRITE(LU_BNDF(NF,NM)) I1,I2,J1,J1,K1,K2,-2,N,NM         IF (M%INC(-1,N)==1) WRITE(LU_BNDF(NF,NM)) I1,I1,J1,J2,K1,K2,-1,N,NM         IF (M%INC( 1,N)==1) WRITE(LU_BNDF(NF,NM)) I2,I2,J1,J2,K1,K2, 1,N,NM         IF (M%INC( 2,N)==1) WRITE(LU_BNDF(NF,NM)) I1,I2,J2,J2,K1,K2, 2,N,NM         IF (M%INC( 3,N)==1) WRITE(LU_BNDF(NF,NM)) I1,I2,J1,J2,K2,K2, 3,N,NM      ENDDO   ENDIF RESTART ENDDO BOUNDARY_FILES ! Initialize particle dump file DROPLET_IF: IF ( (DROPLET_FILE .AND. .NOT.EVACUATION_ONLY(NM)).OR. (EVACUATION_ONLY(NM).AND.EVACUATION_GRID(NM)) ) THEN    APPEND_DROPLET_FILE: IF (APPEND) THEN      OPEN(LU_PART(NM),FILE=FN_PART(NM),FORM='UNFORMATTED',STATUS='OLD',POSITION='APPEND')   ELSE APPEND_DROPLET_FILE      IF (M%N_STRINGS+10*N_PART>M%N_STRINGS_MAX) CALL RE_ALLOCATE_STRINGS(NM)      EVAC_ONLY: IF (EVACUATION_ONLY(NM)) THEN         M%N_STRINGS = M%N_STRINGS + 1         WRITE(M%STRING(M%N_STRINGS),'(A,I3)') 'EVA5',NM         M%N_STRINGS = M%N_STRINGS + 1         WRITE(M%STRING(M%N_STRINGS),'(A)') FN_PART(NM)         M%N_STRINGS = M%N_STRINGS + 1         WRITE(M%STRING(M%N_STRINGS),'(I3)') N_EVAC         DO N=1,N_EVAC            M%N_STRINGS = M%N_STRINGS + 1            WRITE(M%STRING(M%N_STRINGS),'(I3)') N+N_PART         ENDDO      ELSE         M%N_STRINGS = M%N_STRINGS + 1         WRITE(M%STRING(M%N_STRINGS),'(A,I3)') 'PRT5',NM         M%N_STRINGS = M%N_STRINGS + 1         WRITE(M%STRING(M%N_STRINGS),'(A)') FN_PART(NM)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -