Skip to content

Commit 5905c08

Browse files
authored
Merge pull request #15653 from cxp484/master
FDS Build: Update Sundials to v7.5.0
2 parents c545bd8 + 741d810 commit 5905c08

File tree

12 files changed

+44
-44
lines changed

12 files changed

+44
-44
lines changed

Build/Scripts/HYPRE/build_hypre.bat

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
@echo off
2-
set LIB_TAG=v2.33.0
2+
set LIB_TAG=v3.0.0
33

44
::*** library and tag name are the same
55

Build/Scripts/HYPRE/build_hypre.sh

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,10 @@ fi
1414

1515
echo "Checking for hypre library..."
1616

17-
if [ -d "$FIREMODELS/libs/hypre" ]; then
17+
if [ -d "$FIREMODELS/libs/hypre/$HYPRE_LIB_TAG" ]; then
1818
echo "Hypre library exists. Skipping hypre build."
1919
# List all directories under $FIREMODELS/libs/hypre
20-
hypre_lib_dir=$(ls -d $FIREMODELS/libs/hypre/*/)
20+
hypre_lib_dir=$(ls -d $FIREMODELS/libs/hypre/$HYPRE_LIB_TAG/)
2121
# Extract the version part (removes the leading path)
2222
HYPRE_VERSION=$(basename $hypre_lib_dir)
2323
export HYPRE_HOME=$FIREMODELS/libs/hypre/$HYPRE_VERSION

Build/Scripts/SUNDIALS/build_sundials.bat

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
@echo off
2-
set LIB_TAG=v6.7.0
2+
set LIB_TAG=v7.5.0
33

44
::*** library and tag name are the same
55

@@ -123,8 +123,8 @@ cmake ..\ ^
123123
-DBUILD_SHARED_LIBS=OFF ^
124124
-DCMAKE_INSTALL_LIBDIR="lib" ^
125125
-DCMAKE_MAKE_PROGRAM="%CMAKE_MAKE_PROGRAM%" ^
126-
-DCMAKE_C_FLAGS_RELEASE="${CMAKE_C_FLAGS_RELEASE} /MT" ^
127-
-DCMAKE_C_FLAGS_DEBUG="${CMAKE_C_FLAGS_DEBUG} /MTd"
126+
-DCMAKE_MSVC_RUNTIME_LIBRARY="MultiThreaded" ^
127+
-DSUNDIALS_LOGGING_LEVEL=0
128128

129129
::*** build and install sundials
130130

Build/Scripts/SUNDIALS/build_sundials.sh

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
#!/bin/bash
2-
SUNDIALS_LIB_TAG=v6.7.0
2+
SUNDIALS_LIB_TAG=v7.5.0
33

44
CONFMAKE=$1
55
CLEAN_SUNDIALS=$2
@@ -15,10 +15,10 @@ fi
1515

1616
echo "Checking for sundials library..."
1717

18-
if [ -d "$FIREMODELS/libs/sundials" ]; then
18+
if [ -d "$FIREMODELS/libs/sundials/$SUNDIALS_LIB_TAG" ]; then
1919
echo "Sundials library exists. Skipping sundials build."
2020
# List all directories under $FIREMODELS/libs/sundials
21-
sundials_lib_dir=$(ls -d $FIREMODELS/libs/sundials/*/)
21+
sundials_lib_dir=$(ls -d $FIREMODELS/libs/sundials/$SUNDIALS_LIB_TAG/)
2222
# Extract the version part (removes the leading path)
2323
SUNDIALS_VERSION=$(basename $sundials_lib_dir)
2424
export SUNDIALS_HOME=$FIREMODELS/libs/sundials/$SUNDIALS_VERSION
@@ -47,7 +47,6 @@ if [ -d "$FIREMODELS/sundials" ]; then
4747
else
4848
echo "Your SUNDIALS repository is not up to date with the required tag: $SUNDIALS_LIB_TAG."
4949
echo "The FDS build requires SUNDIALS version $SUNDIALS_LIB_TAG. Please update your SUNDIALS repository."
50-
exit 1
5150
fi
5251
mkdir $FIREMODELS/sundials/BUILDDIR
5352
cd $FIREMODELS/sundials/BUILDDIR

Build/Scripts/SUNDIALS/confmake.sh

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ cmake_args=(
1212
-DEXAMPLES_ENABLE_F2003=OFF
1313
-DENABLE_OPENMP=OFF
1414
-DCMAKE_INSTALL_LIBDIR="lib"
15+
-DSUNDIALS_LOGGING_LEVEL=0
1516
)
1617

1718
# Add OSX deployment target if building for macOS

Build/makefile

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,8 @@
1111

1212
VPATH = ../Source
1313

14-
# 3rd party library versions
1514
HYPRE_VERSION=v3.0.0
16-
SUNDIALS_VERSION=v6.7.0
15+
SUNDIALS_VERSION=v7.5.0
1716

1817
ifeq ($(shell echo "check_quotes"),"check_quotes")
1918
# windows
@@ -113,8 +112,8 @@ endif # MKLROOT test
113112
ifdef SUNDIALS_HOME # This assumes the SUNDIALS library is available.
114113
FFLAGS_SUNDIALS = -DWITH_SUNDIALS ${SUNDIALS_INFO} -I"${SUNDIALS_HOME}/fortran"
115114
FFLAGS_SUNDIALS_WIN = -DWITH_SUNDIALS ${SUNDIALS_INFO} /I"${SUNDIALS_HOME}\fortran"
116-
LFLAGS_SUNDIALS = ${SUNDIALS_HOME}/lib/libsundials_fcvode_mod.a ${SUNDIALS_HOME}/lib/libsundials_fnvecserial_mod.a ${SUNDIALS_HOME}/lib/libsundials_cvode.a
117-
LFLAGS_SUNDIALS_WIN = ${SUNDIALS_HOME}\lib\sundials_fcvode_mod.lib ${SUNDIALS_HOME}\lib\sundials_fnvecserial_mod.lib ${SUNDIALS_HOME}\lib\sundials_cvode.lib /link /NODEFAULTLIB:MSVCRTD /NODEFAULTLIB:libcmtd.lib
115+
LFLAGS_SUNDIALS = ${SUNDIALS_HOME}/lib/libsundials_fcvode_mod.a ${SUNDIALS_HOME}/lib/libsundials_fnvecserial_mod.a ${SUNDIALS_HOME}/lib/libsundials_cvode.a ${SUNDIALS_HOME}/lib/libsundials_fcore_mod.a ${SUNDIALS_HOME}/lib/libsundials_core.a
116+
LFLAGS_SUNDIALS_WIN = ${SUNDIALS_HOME}\lib\sundials_fcvode_mod_static.lib ${SUNDIALS_HOME}\lib\sundials_fnvecserial_mod_static.lib ${SUNDIALS_HOME}\lib\sundials_cvode_static.lib ${SUNDIALS_HOME}\lib\sundials_fcore_mod.lib ${SUNDIALS_HOME}\lib\sundials_core_static.lib /link /NODEFAULTLIB:MSVCRTD /NODEFAULTLIB:libcmtd.lib
118117
endif
119118

120119
ifdef HYPRE_HOME # This assumes the HYPRE library is available.

CMakeLists.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -148,7 +148,7 @@ if(USE_HYPRE)
148148
include(FetchContent)
149149
# As we are not using the system hypre, we need to choose the version we
150150
# want
151-
set(HYPRE_GIT_VERSION "2.32.0" )
151+
set(HYPRE_GIT_VERSION "3.0.0" )
152152
FetchContent_Declare(
153153
HYPRE
154154
GIT_REPOSITORY https://github.com/hypre-space/hypre.git
@@ -186,7 +186,7 @@ if(USE_SUNDIALS)
186186
include(FetchContent)
187187
# As we are not using the system sundials, we need to choose the version
188188
# we want
189-
set(SUNDIALS_GIT_VERSION "6.7.0")
189+
set(SUNDIALS_GIT_VERSION "7.5.0")
190190
FetchContent_Declare(
191191
SUNDIALS
192192
GIT_REPOSITORY https://github.com/LLNL/sundials.git

Source/chem.f90

Lines changed: 18 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ MODULE CVODE_INTERFACE
1515
USE TYPES
1616
USE CHEMCONS
1717
USE, INTRINSIC :: ISO_C_BINDING
18+
USE FSUNDIALS_CORE_MOD
1819

1920
IMPLICIT NONE
2021

@@ -44,7 +45,6 @@ MODULE CVODE_INTERFACE
4445
INTEGER(C_INT) FUNCTION RHSFN(TN_C, SUNVEC_Y, SUNVEC_F, C_USER_DATA) &
4546
RESULT(IERR) BIND(C,NAME='RHSFN')
4647

47-
USE FSUNDIALS_NVECTOR_MOD
4848

4949
! CALLING VARIABLES
5050
REAL(C_DOUBLE), VALUE :: TN_C ! CURRENT TIME
@@ -268,9 +268,7 @@ INTEGER(C_INT) FUNCTION JACFN(TN_C, SUNVEC_Y, SUNVEC_F, SUNMAT_J, &
268268
C_USER_DATA, TMP1, TMP2, TMP3) &
269269
RESULT(IERR) BIND(C,NAME='JACFN')
270270

271-
USE FSUNDIALS_NVECTOR_MOD
272271
USE FSUNMATRIX_DENSE_MOD
273-
USE FSUNDIALS_MATRIX_MOD
274272

275273
! CALLING VARIABLES
276274
REAL(C_DOUBLE), VALUE :: TN_C ! CURRENT TIME
@@ -810,13 +808,9 @@ SUBROUTINE CVODE_SERIAL(CC,ZZ_0, TMP_IN, TMP_UNMIX, PR_IN, ZETA0, TAU_MIX, CELL_
810808
USE CHEMCONS, ONLY: CVODE_WARNING_CELLS,CVODE_ERR_CODE_MIN,CVODE_ERR_CODE_MAX
811809
USE GLOBAL_CONSTANTS
812810
USE FCVODE_MOD ! FORTRAN INTERFACE TO CVODE
813-
USE FSUNDIALS_CONTEXT_MOD ! FORTRAN INTERFACE TO SUNCONTEXT
814811
USE FNVECTOR_SERIAL_MOD ! FORTRAN INTERFACE TO SERIAL N_VECTOR
815812
USE FSUNMATRIX_DENSE_MOD ! FORTRAN INTERFACE TO DENSE SUNMATRIX
816813
USE FSUNLINSOL_DENSE_MOD ! FORTRAN INTERFACE TO DENSE SUNLINEARSOLVER
817-
USE FSUNDIALS_LINEARSOLVER_MOD ! FORTRAN INTERFACE TO GENERIC SUNLINEARSOLVER
818-
USE FSUNDIALS_MATRIX_MOD ! FORTRAN INTERFACE TO GENERIC SUNMATRIX
819-
USE FSUNDIALS_NVECTOR_MOD ! FORTRAN INTERFACE TO GENERIC N_VECTOR
820814

821815
REAL(EB), INTENT(INOUT) :: CC(N_TRACKED_SPECIES)
822816
REAL(EB), INTENT(IN) :: ZZ_0(N_TRACKED_SPECIES),TMP_IN,TMP_UNMIX,PR_IN,ZETA0,TAU_MIX,CELL_MASS,TCUR,TEND
@@ -864,7 +858,7 @@ SUBROUTINE CVODE_SERIAL(CC,ZZ_0, TMP_IN, TMP_UNMIX, PR_IN, ZETA0, TAU_MIX, CELL_
864858
ATOLVEC_C(N_TRACKED_SPECIES+2) = 0.001_EB
865859

866860
! CREATE SUNDIALS CONTEXT
867-
IERR_C = FSUNCONTEXT_CREATE(C_NULL_PTR, SUNCTX)
861+
IERR_C = FSUNCONTEXT_CREATE(SUN_COMM_NULL, SUNCTX)
868862

869863
! CREATE SUNDIALS N_VECTOR
870864
SUNVEC_Y => FN_VMAKE_SERIAL(NEQ, CVEC_C, SUNCTX)
@@ -943,7 +937,7 @@ SUBROUTINE CVODE_SERIAL(CC,ZZ_0, TMP_IN, TMP_UNMIX, PR_IN, ZETA0, TAU_MIX, CELL_
943937
ENDIF
944938

945939
! SET ERROR HANDLER
946-
IERR_C = FCVODESETERRHANDLERFN(CVODE_MEM, C_FUNLOC(FDS_CVODE_ERR_HANDLER), C_NULL_PTR)
940+
IERR_C = FSUNCONTEXT_PUSHERRHANDLER(SUNCTX, C_FUNLOC(FDS_CVODE_ERR_HANDLER), C_NULL_PTR)
947941
IF (IERR_C /= 0) THEN
948942
WRITE(LU_ERR,*) 'ERROR IN FCVODESETMAXNUMSTEPS, IERR = ', IERR_C, '; HALTING'
949943
STOP 1
@@ -1069,21 +1063,25 @@ END SUBROUTINE CVODE_SERIAL
10691063
!> \param FUNC_NAME The functio name where error occured send by CVODE
10701064
!> \param MESSAGE The error message
10711065
!> \param USER_DATA User data, not used in FDS.
1072-
SUBROUTINE FDS_CVODE_ERR_HANDLER( ERR_CODE, MOD_NAME, FUNC_NAME, MESSAGE, USER_DATA) &
1066+
SUBROUTINE FDS_CVODE_ERR_HANDLER(LINE, FUNC_NAME, FILE_NAME, MESSAGE, ERR_CODE, USER_DATA, CTX) &
10731067
BIND(C,NAME='FDS_CVODE_ERR_HANDLER')
1074-
INTEGER(C_INT), VALUE :: ERR_CODE
1075-
CHARACTER(KIND=C_CHAR),DIMENSION(*),INTENT(IN) :: MOD_NAME
1076-
CHARACTER(KIND=C_CHAR),DIMENSION(*),INTENT(IN) :: FUNC_NAME
1077-
CHARACTER(KIND=C_CHAR),DIMENSION(*),INTENT(IN) :: MESSAGE
1078-
TYPE(C_PTR), VALUE :: USER_DATA ! USER-DEFINED DATA
1068+
1069+
INTEGER(C_INT), VALUE :: LINE
1070+
CHARACTER(KIND=C_CHAR),DIMENSION(*),INTENT(IN):: FUNC_NAME
1071+
CHARACTER(KIND=C_CHAR),DIMENSION(*),INTENT(IN):: FILE_NAME
1072+
CHARACTER(KIND=C_CHAR),DIMENSION(*),INTENT(IN):: MESSAGE
1073+
INTEGER(C_INT), VALUE :: ERR_CODE
1074+
TYPE(C_PTR), VALUE :: USER_DATA
1075+
TYPE(C_PTR), VALUE :: CTX ! SUNCONTEXT POINTER
1076+
10791077
CHARACTER(LEN=200) :: TEMP_STRING
10801078
LOGICAL :: FOUND_NULL
10811079
INTEGER :: J
10821080

1083-
10841081
IF (DEBUG) THEN
10851082
WRITE(LU_ERR,'(A, E18.8)')" WARN: CVODE message at CFD time. CUR_CFD_TIME=", CUR_CFD_TIME
10861083
WRITE(LU_ERR,*) ' CVODE CODE : ', ERR_CODE
1084+
WRITE(LU_ERR,*) ' LINE NUMBER : ', LINE
10871085

10881086
! Print Message
10891087
FOUND_NULL = .FALSE.
@@ -1104,14 +1102,14 @@ SUBROUTINE FDS_CVODE_ERR_HANDLER( ERR_CODE, MOD_NAME, FUNC_NAME, MESSAGE, USER_D
11041102
TEMP_STRING = ''
11051103
J = 1
11061104
DO WHILE (.NOT. FOUND_NULL)
1107-
IF (MOD_NAME(J) == C_NULL_CHAR) THEN
1105+
IF (FILE_NAME(J) == C_NULL_CHAR) THEN
11081106
FOUND_NULL = .TRUE.
11091107
ELSE
1110-
TEMP_STRING(J:J) = MOD_NAME(J)
1108+
TEMP_STRING(J:J) = FILE_NAME(J)
11111109
J = J + 1
11121110
END IF
11131111
END DO
1114-
WRITE(LU_ERR,*) ' MODULE : ', TRIM(TEMP_STRING)
1112+
WRITE(LU_ERR,*) ' FILE NAME : ', TRIM(TEMP_STRING)
11151113

11161114
! Print func name
11171115
FOUND_NULL = .FALSE.
@@ -1128,6 +1126,7 @@ SUBROUTINE FDS_CVODE_ERR_HANDLER( ERR_CODE, MOD_NAME, FUNC_NAME, MESSAGE, USER_D
11281126
WRITE(LU_ERR,*) ' FUNCTION : ', TRIM(TEMP_STRING)
11291127

11301128
IF (.NOT. C_ASSOCIATED(USER_DATA)) WRITE(LU_ERR,*)" NO USER_DATA IS PROVIDED"
1129+
IF (.NOT. C_ASSOCIATED(CTX)) WRITE(LU_ERR,*)" SUNCONTEXT IS NOT VALID"
11311130
ENDIF
11321131

11331132
END SUBROUTINE FDS_CVODE_ERR_HANDLER

Utilities/Python/FDS_verification_script.py

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,6 @@
1010
print("Using:", fdsplotlib.__file__)
1111
# Scripts to run prior to dataplot
1212

13-
# print("ignition_delay..."); runpy.run_path("./scripts/cantera_ignition_delay.py", run_name="__main__")
14-
# print("reaction_rates..."); runpy.run_path("./scripts/cantera_reaction_rates.py", run_name="__main__")
15-
# print("turbulent_batch_reactor..."); runpy.run_path("./scripts/cantera_turbulent_batch_reactor.py", run_name="__main__")
1613
print("ashrae_7..."); runpy.run_path("./scripts/ashrae_7.py", run_name="__main__")
1714
print('burke_schumann...'); runpy.run_path("./scripts/burke_schumann.py", run_name="__main__")
1815
print('cat_propane_depo...'); runpy.run_path("./scripts/cat_propane_depo.py", run_name="__main__")

Utilities/Python/scripts/cantera_ignition_delay.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
"""
2+
This script calculates ignition delays of different chamical mechanisms using Cantera.
3+
This script creates the cantera_ignition_delay.csv file under Verification/Chemistry folder.
4+
"""
15
import numpy as np
26
import time
37
import os

0 commit comments

Comments
 (0)