diff --git a/Source/chem.f90 b/Source/chem.f90 index 424e8995d89..60a8ff48a4f 100644 --- a/Source/chem.f90 +++ b/Source/chem.f90 @@ -928,13 +928,14 @@ SUBROUTINE CVODE_SERIAL(CC,ZZ_0, TMP_IN, TMP_UNMIX, PR_IN, ZETA0, TAU_MIX, CELL_ END IF ! SET MAX ORDER -MAXORD_C = 5 -IF (IS_EXPONENT_LT_1) MAXORD_C = 1 -IERR_C = FCVODESETMAXORD(CVODE_MEM, MAXORD_C) -IF (IERR_C /= 0) THEN - WRITE(LU_ERR,*) 'ERROR IN FCVODESETMAXORD, IERR = ', IERR_C, '; HALTING' - STOP 1 -END IF +IF (CVODE_ORDER > 0) THEN + MAXORD_C = CVODE_ORDER + IERR_C = FCVODESETMAXORD(CVODE_MEM, MAXORD_C) + IF (IERR_C /= 0) THEN + WRITE(LU_ERR,*) 'ERROR IN FCVODESETMAXORD, IERR = ', IERR_C, '; HALTING' + STOP 1 + END IF +ENDIF ! SET ERROR HANDLER IERR_C = FCVODESETERRHANDLERFN(CVODE_MEM, C_FUNLOC(FDS_CVODE_ERR_HANDLER), C_NULL_PTR) diff --git a/Source/cons.f90 b/Source/cons.f90 index c2308c3e016..c567f1e078d 100644 --- a/Source/cons.f90 +++ b/Source/cons.f90 @@ -905,7 +905,7 @@ MODULE CHEMCONS LOGICAL :: DO_CHEM_LOAD_BALANCE = .FALSE. INTEGER :: MAX_CVODE_SUBSTEPS=100000 INTEGER :: CVODE_MAX_TRY=4 -LOGICAL :: IS_EXPONENT_LT_1 = .FALSE. +INTEGER :: CVODE_ORDER=0 ! FOR WRITING CVODE SUBSTEPS LOGICAL :: WRITE_CVODE_SUBSTEPS = .FALSE. diff --git a/Source/fire.f90 b/Source/fire.f90 index a4b7069b225..7108b636a8e 100644 --- a/Source/fire.f90 +++ b/Source/fire.f90 @@ -1066,6 +1066,7 @@ SUBROUTINE CVODE(ZZ, TMP_IN, PRES_IN, ZETA_IN, ZETA_OUT, TAU_MIX, CELL_MASS, IG ELSE IF (SIM_MODE .NE. DNS_MODE .AND. USE_MIXED_ZN_AFT_TMP) THEN CALL CALC_ADIABATIC_FLAME_TEMPERATURE(ZZ,TMP_IN,AFT) + IF (AFT < FINITE_RATE_MIN_TEMP) RETURN TMP_IN_MOD = MAX(TMP_IN,AFT) ! TO DO: Ideal would be a equilibrium temperature based on ZZ(:) and TMP_IN ENDIF ENDIF diff --git a/Source/read.f90 b/Source/read.f90 index 7b42b419d6b..757e15f2f79 100644 --- a/Source/read.f90 +++ b/Source/read.f90 @@ -4506,11 +4506,11 @@ END SUBROUTINE PROC_SPEC_2 !> \brief Read the COMBustion namelist line SUBROUTINE READ_COMB -USE CHEMCONS, ONLY: ODE_MIN_ATOL, EQUIV_RATIO_CHECK, MIN_EQUIV_RATIO, MAX_EQUIV_RATIO, DO_CHEM_LOAD_BALANCE, & +USE CHEMCONS, ONLY: ODE_MIN_ATOL,CVODE_ORDER,EQUIV_RATIO_CHECK, MIN_EQUIV_RATIO, MAX_EQUIV_RATIO, DO_CHEM_LOAD_BALANCE, & FUEL_ID_FOR_AFT,USE_MIXED_ZN_AFT_TMP REAL(EB) :: ODE_REL_ERROR CHARACTER(LABEL_LENGTH) :: RAMP_ZETA_0='null' -NAMELIST /COMB/ CHECK_REALIZABILITY,COMPUTE_ADIABATIC_FLAME_TEMPERATURE, DO_CHEM_LOAD_BALANCE, EQUIV_RATIO_CHECK, & +NAMELIST /COMB/ CHECK_REALIZABILITY,COMPUTE_ADIABATIC_FLAME_TEMPERATURE,CVODE_ORDER,DO_CHEM_LOAD_BALANCE, EQUIV_RATIO_CHECK, & EXTINCTION_MODEL,FINITE_RATE_MIN_TEMP, FIXED_MIX_TIME,FREE_BURN_TEMPERATURE, & FUEL_ID_FOR_AFT,INITIAL_UNMIXED_FRACTION, MAX_CHEMISTRY_SUBSTEPS, MAX_EQUIV_RATIO, MIN_EQUIV_RATIO, & N_FIXED_CHEMISTRY_SUBSTEPS, ODE_MIN_ATOL,ODE_REL_ERROR,ODE_SOLVER,SUPPRESSION,TAU_CHEM, & @@ -5092,7 +5092,7 @@ END SUBROUTINE READ_REAC SUBROUTINE PROC_REAC_1 -USE CHEMCONS, ONLY: YP2ZZ,IS_EXPONENT_LT_1,FUEL_ID_FOR_AFT,I_FUEL,I_CO2,I_H2O,I_O2,I_N2 +USE CHEMCONS, ONLY: YP2ZZ,FUEL_ID_FOR_AFT,I_FUEL,I_CO2,I_H2O,I_O2,I_N2 USE PROPERTY_DATA, ONLY : PARSE_EQUATION, SHUTDOWN_ATOM REAL(EB) :: MASS_PRODUCT,MASS_REACTANT,REACTION_BALANCE(118),NU_Y(N_SPECIES) INTEGER :: NS,NS2, NR @@ -5315,16 +5315,6 @@ SUBROUTINE PROC_REAC_1 ENDIF ENDDO - IF(TRIM(ODE_SOLVER)=='CVODE' .AND. .NOT. IS_EXPONENT_LT_1) THEN - DO NS=1,RN%N_SPEC - IF (RN%N_S(NS) .LT. 1) THEN - IS_EXPONENT_LT_1 = .TRUE. - IF (MY_RANK==0) WRITE(LU_ERR,'(A)')"INFO: CVODE solver order set to 1 because one REAC has an N_S < 1." - EXIT - ENDIF - ENDDO - ENDIF - ! Normalize the stoichiometric coefficients by that of the fuel. RN%NU_FUEL_0 = -RN%NU(RN%FUEL_SMIX_INDEX) RN%NU_NN = RN%NU