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

📄 func.f90

📁 FDS为火灾动力学模拟软件源代码,该软件为开源项目,代码语言主要为FORTRAN,可在WINDOWS和LINUX下编译运行,详细说明可参考http://fire.nist.gov/fds/官方网址
💻 F90
📖 第 1 页 / 共 3 页
字号:
ZZ = Z_1 + Z_2 + Z_3WGT =MIN(ZZ*10000._EB,10000._EB)IZ1 = FLOOR(WGT)IZ2 = MIN(10000,IZ1+1)WGT = WGT - IZ1z1z2z3: IF(ZZ <= 0._EB .OR. ZZ >= 1._EB) THEN   C = 0._EB   F = 0._EB   Z_F = REACTION(1)%Z_FELSE   IF (Z_1==ZZ) THEN      F = 1._EB      C = 0._EB      Z_F = REACTION(1)%Z_F   ELSE      IF (Z_2 == 0._EB) THEN         C = 1._EB         Z_F = REACTION(2)%Z_F      ELSE         C = Z_3 / (Z_3 + Z_2)         Z_F = 1._EB/(1._EB+(1._EB - C)*REACTION(1)%Z_F_CONS + C * REACTION(2)%Z_F_CONS)      ENDIF      IF (ZZ < Z_F) THEN         F = Z_1 / ZZ      ELSE         F = (Z_1 * (1._EB - Z_F) - ZZ + Z_F) / (Z_F * (1._EB - ZZ))            ENDIF            Z_3_MAX = (1._EB-WGT)*SPECIES(I_PROG_CO)%Z_MAX(IZ1)+ WGT*SPECIES(I_PROG_CO)%Z_MAX(IZ2)      C = MAX(0._EB,MIN(1._EB,Z_3 / Z_3_MAX / (1._EB - F)))   ENDIFENDIF z1z2z3F = MIN(1._EB,MAX(0._EB,F))END SUBROUTINE GET_F_CSUBROUTINE GET_F(Z_1,Z_3,F,Z_F)!Returns progress variables for Mixture Fraction functions for suppression onlyREAL(EB), INTENT(IN) :: Z_1,Z_3,Z_FREAL(EB), INTENT(OUT) :: FREAL(EB) :: ZZZZ = Z_1 + Z_3IF (ZZ > Z_F) THEN   IF (ZZ >= 1._EB) THEN      F = 1._EB   ELSE      F = (Z_1 * (1._EB - Z_F) - ZZ + Z_F) / (Z_F * (1._EB - ZZ))   ENDIFELSE   IF (ZZ <= 0._EB) THEN      F = 0._EB   ELSE      F = Z_1 / ZZ   ENDIFENDIFF = MIN(1._EB,MAX(0._EB,F))   END SUBROUTINE GET_FSUBROUTINE GET_MASS_FRACTION2(Z1,Z2,Z3,INDEX,YY_SUM,Y_MF)! Y_MF returns the mass fraction of species INDEXINTEGER, INTENT(IN) :: INDEXREAL(EB), INTENT(IN) :: Z1,Z2,Z3,YY_SUMREAL(EB) :: Z_1,Z_2,Z_3,Y_MF,ZZTYPE(REACTION_TYPE), POINTER :: RNIF (YY_SUM >=1._EB) THEN   Y_MF = 0._EB   RETURNELSE   Z_1 = MAX(0._EB,Z1)/(1._EB - MAX(0._EB,YY_SUM))   Z_2 = MAX(0._EB,Z2)/(1._EB - MAX(0._EB,YY_SUM))            Z_3 = MAX(0._EB,Z3)/(1._EB - MAX(0._EB,YY_SUM))             ZZ  = Z_1 + Z_2 + Z_3ENDIFIF (CO_PRODUCTION) THEN   RN => REACTION(2)ELSE   RN => REACTION(1)ENDIFSELECT CASE(INDEX)   CASE(FUEL_INDEX)      Y_MF = Z_1 * RN%Y_F_INLET   CASE(N2_INDEX)      Y_MF = (1._EB - ZZ) * RN%Y_N2_INFTY + Z_1 * RN%Y_N2_INLET + (Z_2 + Z_3) * RN%Y_F_INLET / RN%MW_FUEL * MW_N2 * RN%NU_N2   CASE(O2_INDEX)      Y_MF = (1._EB - ZZ) * RN%Y_O2_INFTY - Z_3 * RN%Y_F_INLET / RN%MW_FUEL * MW_O2 * RN%NU_O2      IF (CO_PRODUCTION) Y_MF = Y_MF - Z_2 * RN%Y_F_INLET / RN%MW_FUEL * MW_O2 * REACTION(1)%NU_O2   CASE(CO_INDEX)      IF (CO_PRODUCTION) THEN         Y_MF = Z_2 * RN%Y_F_INLET / RN%MW_FUEL * MW_CO * REACTION(1)%NU_CO      ELSE         Y_MF = Z_3 * RN%Y_F_INLET / RN%MW_FUEL * MW_CO * RN%NU_CO      ENDIF   CASE(CO2_INDEX)      Y_MF = Z_3 * RN%Y_F_INLET / RN%MW_FUEL * MW_CO2 * RN%NU_CO2   CASE(H2O_INDEX)      Y_MF = (Z_2 + Z_3) * RN%Y_F_INLET / RN%MW_FUEL * MW_H2O * RN%NU_H2O   CASE(H2_INDEX)      Y_MF = (Z_2 + Z_3) * RN%Y_F_INLET / RN%MW_FUEL * MW_H2 * RN%NU_H2     CASE(SOOT_INDEX)      Y_MF = (Z_2 + Z_3) * RN%Y_F_INLET / RN%MW_FUEL * MW_SOOT * RN%NU_SOOT   CASE(OTHER_INDEX)      Y_MF = (Z_2 + Z_3) * RN%Y_F_INLET / RN%MW_FUEL * RN%MW_OTHER * RN%NU_OTHEREND SELECTY_MF = MIN(1._EB,MAX(0._EB,Y_MF)) * (1._EB - MAX(YY_SUM,0._EB))END SUBROUTINE GET_MASS_FRACTION2SUBROUTINE GET_MASS_FRACTION_ALL(Z1,Z2,Z3,YY_SUM,Y_MF)! Y_MF returns the mass fraction of all mixture fraction speciesREAL(EB), INTENT(IN) :: Z1,Z2,Z3,YY_SUMREAL(EB) :: ZZ,Z_1,Z_2,Z_3,Y_MF(9)TYPE(REACTION_TYPE), POINTER :: RNIF (YY_SUM >=1._EB) THEN   Y_MF = 0._EB   RETURNELSE   Z_1 = MAX(0._EB,Z1)/(1._EB - MAX(0._EB,YY_SUM))   Z_2 = MAX(0._EB,Z2)/(1._EB - MAX(0._EB,YY_SUM))            Z_3 = MAX(0._EB,Z3)/(1._EB - MAX(0._EB,YY_SUM))             ZZ = Z_1 + Z_2 + Z_3ENDIFIF (CO_PRODUCTION) THEN   RN => REACTION(2)ELSE   RN => REACTION(1)ENDIFY_MF(FUEL_INDEX) = Z_1 * RN%Y_F_INLETY_MF(N2_INDEX) = (1._EB - ZZ) * RN%Y_N2_INFTY + Z_1 * RN%Y_N2_INLET + (Z_2 + Z_3) * RN%Y_F_INLET / RN%MW_FUEL * MW_N2 * RN%NU_N2Y_MF(O2_INDEX) = (1._EB - ZZ) * RN%Y_O2_INFTY - Z_3 * RN%Y_F_INLET / RN%MW_FUEL * MW_O2 * RN%NU_O2IF (CO_PRODUCTION) Y_MF(O2_INDEX) = Y_MF(O2_INDEX) - Z_2 * RN%Y_F_INLET / RN%MW_FUEL * MW_O2 * REACTION(1)%NU_O2IF (CO_PRODUCTION) THEN   Y_MF(CO_INDEX) = Z_2 * RN%Y_F_INLET / RN%MW_FUEL * MW_CO * REACTION(1)%NU_COELSE   Y_MF(CO_INDEX) = Z_3 * RN%Y_F_INLET / RN%MW_FUEL * MW_CO * RN%NU_COENDIFY_MF(CO2_INDEX) = Z_3 * RN%Y_F_INLET / RN%MW_FUEL * MW_CO2 * RN%NU_CO2Y_MF(H2O_INDEX) = (Z_2 + Z_3) * RN%Y_F_INLET / RN%MW_FUEL * MW_H2O * RN%NU_H2OY_MF(H2_INDEX) = (Z_2 + Z_3) * RN%Y_F_INLET / RN%MW_FUEL * MW_H2 * RN%NU_H2  Y_MF(SOOT_INDEX) = (Z_2 + Z_3) * RN%Y_F_INLET / RN%MW_FUEL * MW_SOOT * RN%NU_SOOTY_MF(OTHER_INDEX) = (Z_2 + Z_3) * RN%Y_F_INLET / RN%MW_FUEL * RN%MW_OTHER * RN%NU_OTHERY_MF = MIN(1._EB,MAX(0._EB,Y_MF)) * (1._EB - MAX(YY_SUM,0._EB))END SUBROUTINE GET_MASS_FRACTION_ALLSUBROUTINE GET_MOLECULAR_WEIGHT2(Z1,Z2,Z3,YY_SUM, MW_MF)! Y_MF returns the mass fraction of species INDEXREAL(EB), INTENT(IN) :: Z1,Z2,Z3,YY_SUMREAL(EB) :: Z_1,Z_2,Z_3,MW_MF,Y_MF(9)TYPE(REACTION_TYPE), POINTER :: RNIF (YY_SUM >=1._EB) THEN   MW_MF = MW_AIR   RETURNELSE   Z_1 = MAX(0._EB,Z1)/(1._EB - MAX(0._EB,YY_SUM))   Z_2 = MAX(0._EB,Z2)/(1._EB - MAX(0._EB,YY_SUM))            Z_3 = MAX(0._EB,Z3)/(1._EB - MAX(0._EB,YY_SUM))          ENDIFCALL GET_MASS_FRACTION_ALL(Z_1,Z_2,Z_3,0._EB,Y_MF)RN => REACTION(1)MW_MF = 1._EB/(Y_MF(FUEL_INDEX)/RN%MW_FUEL + Y_MF(O2_INDEX)/MW_O2     + Y_MF(N2_INDEX)/MW_N2   + &               Y_MF(H2O_INDEX)/MW_H2O      + Y_MF(CO2_INDEX)/MW_CO2   + Y_MF(CO_INDEX)/MW_CO   + &               Y_MF(H2_INDEX)/MW_H2        + Y_MF(SOOT_INDEX)/MW_SOOT + Y_MF(OTHER_INDEX)/RN%MW_OTHER)END SUBROUTINE GET_MOLECULAR_WEIGHT2SUBROUTINE GET_MU2(Z1,Z2,Z3,YY_SUM,MU_MF,ITMP)! GET_MU returns the viscosity of the mixture fractionINTEGER, INTENT(IN) :: ITMPREAL(EB), INTENT(IN) :: Z1,Z2,Z3,YY_SUMREAL(EB) :: Z_1,Z_2,Z_3,MU_MF,Y_MF(9),MW_MFTYPE(SPECIES_TYPE), POINTER :: SSTYPE(REACTION_TYPE), POINTER :: RNIF (YY_SUM >=1._EB) THEN   MU_MF = SPECIES(0)%MU(ITMP)   RETURNELSE   Z_1 = MAX(0._EB,Z1)/(1._EB - MAX(0._EB,YY_SUM))   Z_2 = MAX(0._EB,Z2)/(1._EB - MAX(0._EB,YY_SUM))            Z_3 = MAX(0._EB,Z3)/(1._EB - MAX(0._EB,YY_SUM))          ENDIFCALL GET_MASS_FRACTION_ALL(Z_1,Z_2,Z_3,0._EB,Y_MF)SS => SPECIES(I_FUEL)RN => REACTION(1)MW_MF = 1._EB/(Y_MF(FUEL_INDEX)/RN%MW_FUEL + Y_MF(O2_INDEX)/MW_O2     + Y_MF(N2_INDEX)/MW_N2   + &        Y_MF(H2O_INDEX)/MW_H2O      + Y_MF(CO2_INDEX)/MW_CO2   + Y_MF(CO_INDEX)/MW_CO   + &        Y_MF(H2_INDEX)/MW_H2        + Y_MF(SOOT_INDEX)/MW_SOOT + Y_MF(OTHER_INDEX)/RN%MW_OTHER)MU_MF = (Y_MF(FUEL_INDEX)*SS%MU_MF2(FUEL_INDEX,ITMP)/RN%MW_FUEL + Y_MF(O2_INDEX)*SS%MU_MF2(O2_INDEX,ITMP)/MW_O2 + &         Y_MF(N2_INDEX)*SS%MU_MF2(N2_INDEX,ITMP)/MW_N2          + Y_MF(H2O_INDEX)*SS%MU_MF2(H2O_INDEX,ITMP)/MW_H2O + &          Y_MF(CO2_INDEX)*SS%MU_MF2(CO2_INDEX,ITMP)/MW_CO2       + Y_MF(CO_INDEX)*SS%MU_MF2(CO_INDEX,ITMP)/MW_CO   + &         Y_MF(H2_INDEX)*SS%MU_MF2(H2_INDEX,ITMP)/MW_H2          + Y_MF(SOOT_INDEX)*SS%MU_MF2(SOOT_INDEX,ITMP)/MW_SOOT + &         Y_MF(OTHER_INDEX)*SS%MU_MF2(OTHER_INDEX,ITMP)/RN%MW_OTHER) * MW_MFEND SUBROUTINE GET_MU2SUBROUTINE GET_D2(Z1,Z2,Z3,YY_SUM,D_MF,ITMP)! GET_D returns the diffusivity of the mixture fractionINTEGER, INTENT(IN) :: ITMPREAL(EB), INTENT(IN) :: Z1,Z2,Z3,YY_SUMREAL(EB) :: Z_1,Z_2,Z_3,D_MF,Y_MF(9)TYPE(SPECIES_TYPE), POINTER :: SSIF (YY_SUM >=1._EB) THEN   D_MF = SPECIES(0)%D(ITMP)   RETURNELSE   Z_1 = MAX(0._EB,Z1)/(1._EB - MAX(0._EB,YY_SUM))   Z_2 = MAX(0._EB,Z2)/(1._EB - MAX(0._EB,YY_SUM))            Z_3 = MAX(0._EB,Z3)/(1._EB - MAX(0._EB,YY_SUM))          ENDIFCALL GET_MASS_FRACTION_ALL(Z_1,Z_2,Z_3,0._EB,Y_MF)SS => SPECIES(I_FUEL)D_MF = DOT_PRODUCT(Y_MF,SS%D_MF2(:,ITMP))END SUBROUTINE GET_D2SUBROUTINE GET_CP2(Z1,Z2,Z3,YY_SUM,CP_MF,ITMP)! GET_D returns the specific heat of the mixture fractionINTEGER, INTENT(IN) :: ITMPREAL(EB), INTENT(IN) :: Z1,Z2,Z3,YY_SUMREAL(EB) :: Z_1,Z_2,Z_3,CP_MF,Y_MF(9)TYPE(SPECIES_TYPE), POINTER :: SSIF (YY_SUM >=1._EB) THEN   CP_MF = SPECIES(0)%CP(ITMP)   RETURNELSE   Z_1 = MAX(0._EB,Z1)/(1._EB - MAX(0._EB,YY_SUM))   Z_2 = MAX(0._EB,Z2)/(1._EB - MAX(0._EB,YY_SUM))            Z_3 = MAX(0._EB,Z3)/(1._EB - MAX(0._EB,YY_SUM))          ENDIFCALL GET_MASS_FRACTION_ALL(Z_1,Z_2,Z_3,0._EB,Y_MF)SS => SPECIES(I_FUEL)CP_MF = DOT_PRODUCT(Y_MF,SS%CP_MF2(:,ITMP))END SUBROUTINE GET_CP2SUBROUTINE GET_K2(Z1,Z2,Z3,YY_SUM,K_MF,ITMP)! GET_D returns the specific heat of the mixture fractionINTEGER, INTENT(IN) :: ITMPREAL(EB), INTENT(IN) :: Z1,Z2,Z3,YY_SUMREAL(EB) :: Z_1,Z_2,Z_3,K_MF,Y_MF(9),MW_MFTYPE(SPECIES_TYPE), POINTER :: SSTYPE(REACTION_TYPE), POINTER :: RNIF (YY_SUM >=1._EB) THEN   K_MF = SPECIES(0)%K(ITMP)   RETURNELSE   Z_1 = MAX(0._EB,Z1)/(1._EB - MAX(0._EB,YY_SUM))   Z_2 = MAX(0._EB,Z2)/(1._EB - MAX(0._EB,YY_SUM))            Z_3 = MAX(0._EB,Z3)/(1._EB - MAX(0._EB,YY_SUM))          ENDIFCALL GET_MASS_FRACTION_ALL(Z_1,Z_2,Z_3,0._EB,Y_MF)SS => SPECIES(I_FUEL)RN => REACTION(1)MW_MF = 1._EB/(Y_MF(FUEL_INDEX)/RN%MW_FUEL + Y_MF(O2_INDEX)/MW_O2     + Y_MF(N2_INDEX)/MW_N2   + &        Y_MF(H2O_INDEX)/MW_H2O      + Y_MF(CO2_INDEX)/MW_CO2   + Y_MF(CO_INDEX)/MW_CO   + &        Y_MF(H2_INDEX)/MW_H2        + Y_MF(SOOT_INDEX)/MW_SOOT + Y_MF(OTHER_INDEX)/RN%MW_OTHER)K_MF = (Y_MF(FUEL_INDEX)*SS%K_MF2(FUEL_INDEX,ITMP)/RN%MW_FUEL + Y_MF(O2_INDEX)*SS%K_MF2(O2_INDEX,ITMP)/MW_O2 + &        Y_MF(N2_INDEX)*SS%K_MF2(N2_INDEX,ITMP)/MW_N2          + Y_MF(H2O_INDEX)*SS%K_MF2(H2O_INDEX,ITMP)/MW_H2O + &         Y_MF(CO2_INDEX)*SS%K_MF2(CO2_INDEX,ITMP)/MW_CO2       + Y_MF(CO_INDEX)*SS%K_MF2(CO_INDEX,ITMP)/MW_CO   + &        Y_MF(H2_INDEX)*SS%K_MF2(H2_INDEX,ITMP)/MW_H2          + Y_MF(SOOT_INDEX)*SS%K_MF2(SOOT_INDEX,ITMP)/MW_SOOT + &        Y_MF(OTHER_INDEX)*SS%K_MF2(OTHER_INDEX,ITMP)/RN%MW_OTHER) * MW_MFEND SUBROUTINE GET_K2REAL(EB) FUNCTION DRAG(RE) ! Droplet drag coefficientREAL(EB) :: RE IF (RE<=1._EB) THEN   DRAG = 24._EB/REELSEIF (RE>1._EB .AND. RE<1000._EB) THEN   DRAG = 24._EB*(1._EB+0.15_EB*RE**0.687_EB)/REELSEIF (RE>=1000._EB) THEN   DRAG = 0.44_EBENDIF END FUNCTION DRAGSUBROUTINE DROPLET_SIZE_DISTRIBUTION(DM,RR,CNF,NPT,GAMMA,SIGMA) ! Compute droplet Cumulative Number Fraction (CNF) REAL(EB), INTENT(IN) :: DM,GAMMA,SIGMAINTEGER, INTENT(IN) :: NPTREAL(EB) :: SUM1,DD1,DI,ETRM,GFAC,SFACINTEGER  :: JREAL(EB), INTENT(OUT) :: RR(0:NPT),CNF(0:NPT) RR(0)  = 0._EBCNF(0) = 0._EBSUM1   = 0._EBDD1    = (-LOG(1._EB-0.99_EB)/0.693_EB)**(1._EB/GAMMA)*DM/REAL(NPT,EB)GFAC   = 0.693_EB*GAMMA*DD1/(DM**GAMMA)SFAC   = DD1/(SQRT(TWOPI)*SIGMA) INTLOOP: DO J=1,NPT   DI = (J-.5_EB)*DD1   RR(J) = .5_EB*DI   IF (DI<=DM) THEN      ETRM = EXP(-(LOG(DI/DM))**2/(2._EB*SIGMA**2))      SUM1 = SUM1 + (SFAC/DI**4)*ETRM   ELSE      ETRM = EXP(-0.693_EB*(DI/DM)**GAMMA)      SUM1 = SUM1 + GFAC*DI**(GAMMA-4._EB)*ETRM   ENDIF   CNF(J) = SUM1ENDDO INTLOOP CNF = CNF/SUM1 END SUBROUTINE DROPLET_SIZE_DISTRIBUTIONEND MODULE PHYSICAL_FUNCTIONS MODULE MATH_FUNCTIONSUSE PRECISION_PARAMETERSIMPLICIT NONE  CONTAINS REAL(EB) FUNCTION AFILL(A111,A211,A121,A221,A112,A212,A122,A222,P,R,S)! Linear interpolation functionREAL(EB) :: A111,A211,A121,A221,A112,A212,A122,A222,P,R,S,PP,RR,SSPP = 1._EB-PRR = 1._EB-RSS = 1._EB-SAFILL = ((PP*A111+P*A211)*RR+(PP*A121+P*A221)*R)*SS+((PP*A112+P*A212)*RR+(PP*A122+P*A222)*R)*SEND FUNCTION AFILL REAL(EB) FUNCTION AFILL2(A,I,J,K,P,R,S)! Linear interpolation function. Same as AFILL, only it reads in entire array.REAL(EB), INTENT(IN), DIMENSION(0:,0:,0:) :: AINTEGER, INTENT(IN) :: I,J,KREAL(EB) A111,A211,A121,A221,A112,A212,A122,A222,P,R,S,PP,RR,SSA111 = A(I,J,K)A211 = A(I+1,J,K)A121 = A(I,J+1,K)A221 = A(I+1,J+1,K)A112 = A(I,J,K+1)A212 = A(I+1,J,K+1)A122 = A(I,J+1,K+1)A222 = A(I+1,J+1,K+1)PP = 1._EB-PRR = 1._EB-RSS = 1._EB-SAFILL2 = ((PP*A111+P*A211)*RR+(PP*A121+P*A221)*R)*SS+ ((PP*A112+P*A212)*RR+(PP*A122+P*A222)*R)*SEND FUNCTION AFILL2 REAL(EB) FUNCTION POLYVAL(N,TEMP,COEF)! Calculate the value of polynomial function.INTEGER N,IREAL(EB) TEMP, COEF(N), VALVAL = 0._EBDO I=1,N   VAL  = VAL  + COEF(I)*TEMP**(I-1)ENDDOPOLYVAL = VALEND FUNCTION POLYVAL  SUBROUTINE GET_RAMP_INDEX(ID,TYPE,RAMP_INDEX)USE GLOBAL_CONSTANTS, ONLY: N_RAMP,RAMP_ID,RAMP_TYPECHARACTER(*), INTENT(IN) :: ID,TYPEINTEGER, INTENT(OUT) :: RAMP_INDEXINTEGER :: NR IF (ID=='null') THEN   RAMP_INDEX = 0   RETURNENDIF SEARCH: DO NR=1,N_RAMP   IF (ID==RAMP_ID(NR)) THEN      RAMP_INDEX = NR      RETURN   ENDIFENDDO SEARCH N_RAMP                = N_RAMP + 1RAMP_INDEX            = N_RAMPRAMP_ID(RAMP_INDEX)   = IDRAMP_TYPE(RAMP_INDEX) = TYPEEND SUBROUTINE GET_RAMP_INDEXSUBROUTINE GET_TABLE_INDEX(ID,TYPE,TABLE_INDEX)USE GLOBAL_CONSTANTS, ONLY: N_TABLE,TABLE_ID,TABLE_TYPECHARACTER(*), INTENT(IN) :: IDINTEGER, INTENT(IN) :: TYPEINTEGER, INTENT(OUT) :: TABLE_INDEXINTEGER :: NT IF (ID=='null') THEN   TABLE_INDEX = 0   RETURNENDIF SEARCH: DO NT=1,N_TABLE   IF (ID==TABLE_ID(NT)) THEN      TABLE_INDEX = NT      RETURN   ENDIFENDDO SEARCH N_TABLE                = N_TABLE + 1TABLE_INDEX            = N_TABLETABLE_ID(TABLE_INDEX)   = IDTABLE_TYPE(TABLE_INDEX) = TYPEEND SUBROUTINE GET_TABLE_INDEXREAL(EB) FUNCTION EVALUATE_RAMP(RAMP_INPUT,TAU,RAMP_INDEX)USE TYPES, ONLY: RAMPSUSE DEVICE_VARIABLES, ONLY: DEVICEUSE CONTROL_VARIABLES, ONLY:CONTROL! General time ramp up

⌨️ 快捷键说明

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