From cfe090c27e7dc08459e2fcfa05a68a6855091413 Mon Sep 17 00:00:00 2001 From: Weiye Wang Date: Wed, 13 Sep 2023 22:48:21 -0700 Subject: [PATCH] Re-organize the files, implement the CoolProp and revise the liquid/gas interface temperature BC --- CMakeLists.txt | 38 + bin/DropletCombustion | Bin 0 -> 683584 bytes bin/DropletCombustion11 | Bin 0 -> 268712 bytes bin/DropletCombustion8 | Bin 0 -> 268712 bytes bin/DropletCombustionTest4 | Bin 0 -> 268760 bytes bin/DropletCombustionTest5 | Bin 0 -> 268760 bytes bin/DropletCombustionTest7 | Bin 0 -> 273168 bytes bin/lagrangianCombustion2 | Bin 0 -> 264040 bytes build/CMakeCache.txt | 368 +++ build/CMakeFiles/3.16.4/CMakeCCompiler.cmake | 76 + .../CMakeFiles/3.16.4/CMakeCXXCompiler.cmake | 88 + .../3.16.4/CMakeDetermineCompilerABI_C.bin | Bin 0 -> 16440 bytes .../3.16.4/CMakeDetermineCompilerABI_CXX.bin | Bin 0 -> 16456 bytes build/CMakeFiles/3.16.4/CMakeSystem.cmake | 15 + .../3.16.4/CompilerIdC/CMakeCCompilerId.c | 671 ++++++ build/CMakeFiles/3.16.4/CompilerIdC/a.out | Bin 0 -> 16600 bytes .../CompilerIdCXX/CMakeCXXCompilerId.cpp | 660 ++++++ build/CMakeFiles/3.16.4/CompilerIdCXX/a.out | Bin 0 -> 16608 bytes .../CMakeDirectoryInformation.cmake | 16 + build/CMakeFiles/CMakeOutput.log | 457 ++++ .../DropletCombustion.dir/CXX.includecache | 768 ++++++ .../DropletCombustion.dir/DependInfo.cmake | 31 + .../DropletCombustion.dir/build.make | 173 ++ .../DropletCombustion.dir/cmake_clean.cmake | 15 + .../DropletCombustion.dir/depend.internal | 232 ++ .../DropletCombustion.dir/depend.make | 232 ++ .../DropletCombustion.dir/flags.make | 10 + .../CMakeFiles/DropletCombustion.dir/link.txt | 1 + .../DropletCombustion.dir/progress.make | 8 + .../DropletCombustion.dir/src/UserData.cpp.o | Bin 0 -> 821864 bytes .../src/gridRoutines.cpp.o | Bin 0 -> 16912 bytes .../DropletCombustion.dir/src/main.cpp.o | Bin 0 -> 106072 bytes .../DropletCombustion.dir/src/parse.cpp.o | Bin 0 -> 10840 bytes .../DropletCombustion.dir/src/residue.cpp.o | Bin 0 -> 277824 bytes .../DropletCombustion.dir/src/solution.cpp.o | Bin 0 -> 3776 bytes build/CMakeFiles/Makefile.cmake | 120 + build/CMakeFiles/Makefile2 | 106 + build/CMakeFiles/TargetDirectories.txt | 3 + build/CMakeFiles/cmake.check_cache | 1 + build/CMakeFiles/progress.marks | 1 + build/Makefile | 328 +++ build/cmake_install.cmake | 49 + include/UserData.h | 221 ++ include/gridRoutines.h | 89 + include/macros.h | 82 + include/parse.h | 36 + include/parse.hpp | 75 + include/residue.h | 129 + include/solution.h | 15 + include/timing.h | 2 + include/timing.hpp | 45 + src/UserData.cpp | 499 ++++ src/gridRoutines.cpp | 293 +++ src/main.cpp | 503 ++++ src/parse.cpp | 79 + src/residue.cpp | 2074 +++++++++++++++++ src/solution.cpp | 90 + 57 files changed, 8699 insertions(+) create mode 100644 CMakeLists.txt create mode 100755 bin/DropletCombustion create mode 100755 bin/DropletCombustion11 create mode 100755 bin/DropletCombustion8 create mode 100755 bin/DropletCombustionTest4 create mode 100755 bin/DropletCombustionTest5 create mode 100755 bin/DropletCombustionTest7 create mode 100755 bin/lagrangianCombustion2 create mode 100644 build/CMakeCache.txt create mode 100644 build/CMakeFiles/3.16.4/CMakeCCompiler.cmake create mode 100644 build/CMakeFiles/3.16.4/CMakeCXXCompiler.cmake create mode 100755 build/CMakeFiles/3.16.4/CMakeDetermineCompilerABI_C.bin create mode 100755 build/CMakeFiles/3.16.4/CMakeDetermineCompilerABI_CXX.bin create mode 100644 build/CMakeFiles/3.16.4/CMakeSystem.cmake create mode 100644 build/CMakeFiles/3.16.4/CompilerIdC/CMakeCCompilerId.c create mode 100755 build/CMakeFiles/3.16.4/CompilerIdC/a.out create mode 100644 build/CMakeFiles/3.16.4/CompilerIdCXX/CMakeCXXCompilerId.cpp create mode 100755 build/CMakeFiles/3.16.4/CompilerIdCXX/a.out create mode 100644 build/CMakeFiles/CMakeDirectoryInformation.cmake create mode 100644 build/CMakeFiles/CMakeOutput.log create mode 100644 build/CMakeFiles/DropletCombustion.dir/CXX.includecache create mode 100644 build/CMakeFiles/DropletCombustion.dir/DependInfo.cmake create mode 100644 build/CMakeFiles/DropletCombustion.dir/build.make create mode 100644 build/CMakeFiles/DropletCombustion.dir/cmake_clean.cmake create mode 100644 build/CMakeFiles/DropletCombustion.dir/depend.internal create mode 100644 build/CMakeFiles/DropletCombustion.dir/depend.make create mode 100644 build/CMakeFiles/DropletCombustion.dir/flags.make create mode 100644 build/CMakeFiles/DropletCombustion.dir/link.txt create mode 100644 build/CMakeFiles/DropletCombustion.dir/progress.make create mode 100644 build/CMakeFiles/DropletCombustion.dir/src/UserData.cpp.o create mode 100644 build/CMakeFiles/DropletCombustion.dir/src/gridRoutines.cpp.o create mode 100644 build/CMakeFiles/DropletCombustion.dir/src/main.cpp.o create mode 100644 build/CMakeFiles/DropletCombustion.dir/src/parse.cpp.o create mode 100644 build/CMakeFiles/DropletCombustion.dir/src/residue.cpp.o create mode 100644 build/CMakeFiles/DropletCombustion.dir/src/solution.cpp.o create mode 100644 build/CMakeFiles/Makefile.cmake create mode 100644 build/CMakeFiles/Makefile2 create mode 100644 build/CMakeFiles/TargetDirectories.txt create mode 100644 build/CMakeFiles/cmake.check_cache create mode 100644 build/CMakeFiles/progress.marks create mode 100644 build/Makefile create mode 100644 build/cmake_install.cmake create mode 100644 include/UserData.h create mode 100644 include/gridRoutines.h create mode 100644 include/macros.h create mode 100644 include/parse.h create mode 100644 include/parse.hpp create mode 100644 include/residue.h create mode 100644 include/solution.h create mode 100644 include/timing.h create mode 100644 include/timing.hpp create mode 100644 src/UserData.cpp create mode 100644 src/gridRoutines.cpp create mode 100644 src/main.cpp create mode 100644 src/parse.cpp create mode 100644 src/residue.cpp create mode 100644 src/solution.cpp diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..41aa819 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,38 @@ +cmake_minimum_required(VERSION 3.0.0) +project(demo) + +set(CMAKE_CXX_STANDARD 11) + + +# Define path to header files and libraries +set(HOME /opt/scientific) +set(CANTERA_DIR ${HOME}/cantera-2.4_gnu_blas) +set(IDA_DIR ${HOME}/sundials-3.1.1_intel_mkl) +set(GSL_DIR /usr/lib) +set(COOLPROP_DIR /backup/weiye/CoolProp) +set(FMT_DIR /backup/weiye/fmt) + +set(CANTERA_INCLUDES ${CANTERA_DIR}/include) +set(IDA_INCLUDES ${IDA_DIR}/include) +set(GSL_INCLUDES /usr/include/gsl) +set(COOLPROP_INCLUDES ${COOLPROP_DIR}/include) +set(FMT_INCLUDES ${FMT_DIR}/include) + +# Search for source files +aux_source_directory(${PROJECT_SOURCE_DIR}/src SRC_LIST) +add_executable(DropletCombustion ${SRC_LIST}) + +# Set the RPATH parameter +set(CMAKE_INSTALL_RPATH "${IDA_DIR}/lib;${CANTERA_DIR}/lib;${COOLPROP_DIR}/lib;${FMT_DIR}/lib") + +# Link libraries +target_link_directories(DropletCombustion PRIVATE ${CANTERA_DIR}/lib ${IDA_DIR}/lib ${GSL_DIR} ${COOLPROP_DIR}/lib ${FMT_DIR}/lib) +target_link_libraries(DropletCombustion + PRIVATE cantera_shared sundials_nvecopenmp sundials_ida sundials_sunlinsollapackband gsl gslcblas CoolProp fmt) + +# Include directories +target_include_directories(DropletCombustion + PRIVATE ${PROJECT_SOURCE_DIR}/include ${CANTERA_INCLUDES} ${IDA_INCLUDES} ${GSL_INCLUDES} ${COOLPROP_INCLUDES} ${FMT_INCLUDES}) + +# Set the output path +set(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin) diff --git a/bin/DropletCombustion b/bin/DropletCombustion new file mode 100755 index 0000000000000000000000000000000000000000..a043808fdf0540193ecac4ddb2b5657e64b982c8 GIT binary patch literal 683584 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