diff --git a/CMakeLists.txt b/CMakeLists.txt index c8ef2d8f..cb164efb 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -52,6 +52,7 @@ option( ENABLE_SCOTCH "" ON ) option( ENABLE_SUITESPARSE "" ON ) option( ENABLE_VTK "" ON ) option( ENABLE_VTK_WRAP_PYTHON "" OFF ) +option( ENABLE_CATALYST "Enable building catalyst2" ON) option( ENABLE_FESAPI "" ON ) option( ENABLE_NINJA "" OFF ) @@ -234,7 +235,7 @@ list(APPEND build_list hdf5 ) # Conduit ################################ set(CONDUIT_DIR "${CMAKE_INSTALL_PREFIX}/conduit") -set(CONDUIT_URL "${TPL_MIRROR_DIR}/conduit-0.8.2.tar.gz") +set(CONDUIT_URL "${TPL_MIRROR_DIR}/conduit-0.8.6.zip") message(STATUS "Building Conduit found at ${CONDUIT_URL}") if( ${ENABLE_MPI} ) @@ -1109,7 +1110,8 @@ endif() ################################ if( ENABLE_VTK ) set( VTK_DIR "${CMAKE_INSTALL_PREFIX}/vtk" ) - set( VTK_URL "${TPL_MIRROR_DIR}/VTK-9.2.6.tar.gz" ) + set( VTK_URL "${TPL_MIRROR_DIR}/VTK-59d89108f4.tar.gz" ) + message( STATUS "Building VTK found at ${VTK_URL}" ) @@ -1119,6 +1121,12 @@ if( ENABLE_VTK ) # I'm no cmake expert and I do not know if there was a better way to deal with it. set( VTK_CMAKE_INSTALL_LIBDIR "lib" ) + # This compile option will enclose all of the VTK library within a vtk_geosx namespace. + # This mangling is needed in order to ensure that the VTK included with geosx does + # not interfere with another VTK version that may be linked dynamically at runtime + # (when using ParaView's Catalyst implementation for example). + set( VTK_ABI_NAMESPACE_NAME "vtk_geos" ) + if( ENABLE_MPI ) set( VTK_C_COMPILER ${MPI_C_COMPILER} ) set( VTK_CXX_COMPILER ${MPI_CXX_COMPILER} ) @@ -1137,9 +1145,9 @@ endif( ENABLE_MPI ) PREFIX ${PROJECT_BINARY_DIR}/vtk URL ${VTK_URL} INSTALL_DIR ${VTK_DIR} - PATCH_COMMAND patch -p0 < ${TPL_MIRROR_DIR}/vtkXMLReader-fpe.patch BUILD_COMMAND ${TPL_BUILD_COMMAND} INSTALL_COMMAND "${TPL_INSTALL_COMMAND}" + PATCH_COMMAND patch -p1 < ${TPL_MIRROR_DIR}/VTK-ABI.patch CMAKE_GENERATOR ${TPL_GENERATOR} CMAKE_ARGS -D CMAKE_C_COMPILER=${VTK_C_COMPILER} -D CMAKE_BUILD_TYPE:STRING=${CMAKE_BUILD_TYPE} @@ -1165,11 +1173,102 @@ endif( ENABLE_MPI ) -D VTK_MODULE_ENABLE_VTK_IOXML=YES -D VTK_MODULE_ENABLE_VTK_IOLegacy=YES -D VTK_BUILD_TESTING=OFF - -D VTK_LEGACY_REMOVE=ON ) + -D VTK_LEGACY_REMOVE=ON + -D VTK_ABI_NAMESPACE_NAME=${VTK_ABI_NAMESPACE_NAME} ) list( APPEND build_list vtk ) endif( ENABLE_VTK ) +################################ +# Catalyst +################################ + +if (ENABLE_CATALYST) + + # Catalyst supports different implementations of its interface + set( CATALYST_IMPLEMENTATION_NAME "ADIOS2" CACHE STRING "The name of the catalyst implementation you would like to use") + + # Set the type of implementations that GEOSX-TPL provides as options here + set_property(CACHE CATALYST_IMPLEMENTATION_NAME PROPERTY STRINGS ADIOS2) + + + message(STATUS "Catalyst implementation: " ${CATALYST_IMPLEMENTATION_NAME}) + if (NOT CATALYST_IMPLEMENTATION_NAME STREQUAL "ADIOS2") + message(FATAL_ERROR "TPL only provides catalyst-adios2 implementation for now") + endif () + + if (NOT ENABLE_MPI) + message (FATAL_ERROR "ADIOS2 requires MPI in its build") + endif () + + set(ADIOS_DIR "${CMAKE_INSTALL_PREFIX}/adios") + set(ADIOS_URL "${TPL_MIRROR_DIR}/ADIOS2-2.9.0.zip") + + ExternalProject_Add( adios + URL ${ADIOS_URL} + PREFIX ${PROJECT_BINARY_DIR}/adios + INSTALL_DIR ${ADIOS_DIR} + BUILD_COMMAND ${TPL_BUILD_COMMAND} + INSTALL_COMMAND ${TPL_INSTALL_COMMAND} + CMAKE_GENERATOR ${TPL_GENERATOR} + CMAKE_ARGS -DCMAKE_C_COMPILER=${MPI_C_COMPILER} + -DCMAKE_CXX_COMPILER=${MPI_CXX_COMPILER} + -DCMAKE_INSTALL_PREFIX= + -DCMAKE_CXX_STANDARD=11 + -DADIOS2_USE_Fortran=OFF + -DADIOS2_USE_MPI=ON + -DNoGitVersionString:BOOL=ON + ) + + set(CATALYST_DIR "${CMAKE_INSTALL_PREFIX}/catalyst") + set(CATALYST_URL "${TPL_MIRROR_DIR}/catalyst-afa7ec79.tar.gz") + + ExternalProject_Add( catalyst + URL ${CATALYST_URL} + PREFIX ${PROJECT_BINARY_DIR}/catalyst + INSTALL_DIR ${CATALYST_DIR} + BUILD_COMMAND ${TPL_BUILD_COMMAND} + INSTALL_COMMAND ${TPL_INSTALL_COMMAND} + CMAKE_GENERATOR ${TPL_GENERATOR} + CMAKE_ARGS -DCMAKE_C_COMPILER=${MPI_C_COMPILER} + -DCMAKE_CXX_COMPILER=${MPI_CXX_COMPILER} + -DCMAKE_INSTALL_PREFIX= + -DCMAKE_CXX_STANDARD=11 + -DNoGitVersionString:BOOL=ON + ) + + + set(CATALYST_IMPLEMENTATION_DIR "${CMAKE_INSTALL_PREFIX}/catalyst_implementation") + set(CATALYST_IMPLEMENTATION_URL "${TPL_MIRROR_DIR}/adioscatalyst-72a75a88.tar.gz") + + set(ADIOS_CMAKE_PREFIX ${ADIOS_DIR}/${CMAKE_INSTALL_LIBDIR}/cmake/adios2/) + + set(CATALYST_CMAKE_PREFIX ${CATALYST_DIR}/${CMAKE_INSTALL_LIBDIR}/cmake/catalyst-2.0/) + + ExternalProject_Add( catalyst_implementation + URL ${CATALYST_IMPLEMENTATION_URL} + PREFIX ${PROJECT_BINARY_DIR}/catalyst_implementation + INSTALL_DIR ${CATALYST_IMPLEMENTATION_DIR} + PATCH_COMMAND patch CMakeLists.txt < ${TPL_MIRROR_DIR}/adioscatalyst-cmake-version.patch + BUILD_COMMAND ${TPL_BUILD_COMMAND} + INSTALL_COMMAND ${TPL_INSTALL_COMMAND} + DEPENDS adios catalyst + CMAKE_GENERATOR ${TPL_GENERATOR} + CMAKE_ARGS -DCMAKE_C_COMPILER=${MPI_C_COMPILER} + -DCMAKE_CXX_COMPILER=${MPI_CXX_COMPILER} + -DCMAKE_INSTALL_PREFIX= + -DCMAKE_CXX_STANDARD=11 + -DADIOS2_DIR=${ADIOS_CMAKE_PREFIX} + -Dcatalyst_DIR=${CATALYST_CMAKE_PREFIX} + -DNoGitVersionString:BOOL=ON + ) + + + + list(APPEND build_list adios catalyst catalyst_implementation) + +endif (ENABLE_CATALYST) + ################################ # FMT ################################ diff --git a/tplMirror/ADIOS2-2.9.0.zip b/tplMirror/ADIOS2-2.9.0.zip new file mode 100644 index 00000000..3515075c --- /dev/null +++ b/tplMirror/ADIOS2-2.9.0.zip @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:71b85bdc3d98b38d2bc0d5cf73d0a964979eb61df9b1255782fe5b4d33be7510 +size 8047119 diff --git a/tplMirror/VTK-59d89108f4.tar.gz b/tplMirror/VTK-59d89108f4.tar.gz new file mode 100644 index 00000000..a8295dfe --- /dev/null +++ b/tplMirror/VTK-59d89108f4.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f922d7e9f917ec9da5ce0a4dda60d8eb89f91c157658269e0f8be532bf958c2a +size 42559503 diff --git a/tplMirror/VTK-9.2.6.tar.gz b/tplMirror/VTK-9.2.6.tar.gz deleted file mode 100644 index 429e5d3c..00000000 --- a/tplMirror/VTK-9.2.6.tar.gz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:06fc8d49c4e56f498c40fcb38a563ed8d4ec31358d0101e8988f0bb4d539dd12 -size 53810904 diff --git a/tplMirror/VTK-ABI.patch b/tplMirror/VTK-ABI.patch new file mode 100644 index 00000000..f8f1fd8a --- /dev/null +++ b/tplMirror/VTK-ABI.patch @@ -0,0 +1,65 @@ +diff --git a/Common/Core/vtkValueFromString.cxx b/Common/Core/vtkValueFromString.cxx +index 9e619a87a5..93ca79486d 100644 +--- a/Common/Core/vtkValueFromString.cxx ++++ b/Common/Core/vtkValueFromString.cxx +@@ -203,6 +203,8 @@ const char* ParseInt(const char* it, const char* end, bool minus_sign, int base, + } + } + ++VTK_ABI_NAMESPACE_BEGIN ++ + // Overload for integers + template ::value && !std::is_same::value, bool>::type = +diff --git a/Filters/Core/vtkFieldDataToDataSetAttribute.cxx b/Filters/Core/vtkFieldDataToDataSetAttribute.cxx +index 9a8b23c67b..d8a451eca8 100644 +--- a/Filters/Core/vtkFieldDataToDataSetAttribute.cxx ++++ b/Filters/Core/vtkFieldDataToDataSetAttribute.cxx +@@ -28,6 +28,7 @@ + + #include + ++VTK_ABI_NAMESPACE_BEGIN + vtkStandardNewMacro(vtkFieldDataToDataSetAttribute); + + //------------------------------------------------------------------------------ +diff --git a/Rendering/LICOpenGL2/vtkCompositeSurfaceLICMapper.cxx b/Rendering/LICOpenGL2/vtkCompositeSurfaceLICMapper.cxx +index 6b00e7ff0f..b8d879ac9b 100644 +--- a/Rendering/LICOpenGL2/vtkCompositeSurfaceLICMapper.cxx ++++ b/Rendering/LICOpenGL2/vtkCompositeSurfaceLICMapper.cxx +@@ -54,6 +54,8 @@ + + #include "vtkSurfaceLICInterface.h" + ++VTK_ABI_NAMESPACE_BEGIN ++ + vtkStandardNewMacro(vtkCompositeSurfaceLICMapper); + //------------------------------------------------------------------------------ + vtkCompositeSurfaceLICMapper::vtkCompositeSurfaceLICMapper() = default; +diff --git a/Rendering/OpenGL2/vtkOpenGLBatchedPolyDataMapper.cxx b/Rendering/OpenGL2/vtkOpenGLBatchedPolyDataMapper.cxx +index d46b537d33..1ea50351bf 100644 +--- a/Rendering/OpenGL2/vtkOpenGLBatchedPolyDataMapper.cxx ++++ b/Rendering/OpenGL2/vtkOpenGLBatchedPolyDataMapper.cxx +@@ -42,7 +42,6 @@ + #include "vtkUnsignedIntArray.h" + #include + +-VTK_ABI_NAMESPACE_BEGIN + namespace + { + template +@@ -64,6 +63,8 @@ private: + + } // end anonymous namespace + ++VTK_ABI_NAMESPACE_BEGIN ++ + //------------------------------------------------------------------------------ + vtkStandardNewMacro(vtkOpenGLBatchedPolyDataMapper); + +@@ -1643,3 +1644,5 @@ int vtkOpenGLBatchedPolyDataMapper::CanUseTextureMapForColoring(vtkDataObject*) + + return 1; + } ++ ++VTK_ABI_NAMESPACE_END diff --git a/tplMirror/adioscatalyst-72a75a88.tar.gz b/tplMirror/adioscatalyst-72a75a88.tar.gz new file mode 100644 index 00000000..c9ba59cc --- /dev/null +++ b/tplMirror/adioscatalyst-72a75a88.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:837cdda1f9886cd8b395be6fe62ee948f8fa314bd56e102cb44c75d579de27bc +size 124480 diff --git a/tplMirror/adioscatalyst-cmake-version.patch b/tplMirror/adioscatalyst-cmake-version.patch new file mode 100644 index 00000000..f7f2854f --- /dev/null +++ b/tplMirror/adioscatalyst-cmake-version.patch @@ -0,0 +1,10 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 0b2691e..58d0f82 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -1,4 +1,4 @@ +-cmake_minimum_required(VERSION 3.20) ++cmake_minimum_required(VERSION 3.15) + + project(AdiosCatalyst LANGUAGES C CXX) + diff --git a/tplMirror/catalyst-afa7ec79.tar.gz b/tplMirror/catalyst-afa7ec79.tar.gz new file mode 100644 index 00000000..97c5ee6a --- /dev/null +++ b/tplMirror/catalyst-afa7ec79.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a9fc68a5f8e8bef5af10570231fc3e79577d6c0dbfe0a4a4d8fafde9bdb9b801 +size 837854 diff --git a/tplMirror/conduit-0.8.2.tar.gz b/tplMirror/conduit-0.8.2.tar.gz deleted file mode 100644 index 4d6a6613..00000000 --- a/tplMirror/conduit-0.8.2.tar.gz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:3f2445040f62c8249fb4e0fa236b27bc59353df623a838cf396fc906dcf80dfb -size 14702531 diff --git a/tplMirror/conduit-0.8.6.zip b/tplMirror/conduit-0.8.6.zip new file mode 100644 index 00000000..2769ef70 --- /dev/null +++ b/tplMirror/conduit-0.8.6.zip @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bec464b6b7a399fcd61c1507b151c732acfc90a33e3ad4a60b4023cc40e240c4 +size 15760628 diff --git a/tplMirror/vtkXMLReader-fpe.patch b/tplMirror/vtkXMLReader-fpe.patch deleted file mode 100644 index c7621502..00000000 --- a/tplMirror/vtkXMLReader-fpe.patch +++ /dev/null @@ -1,19 +0,0 @@ ---- IO/XML/vtkXMLReader.cxx 2023-02-14 20:03:53.000000000 -0800 -+++ IO/XML/vtkXMLReader.cxx.patch 2023-05-12 08:52:36.017274000 -0700 -@@ -53,6 +53,7 @@ - #include - #include - #include -+#include - #include - #include // C++ locale - #include -@@ -1958,7 +1959,7 @@ - if (!this->AbortExecute) - { - // Round progress to nearest 100th. -- float rounded = static_cast(int((progress * 100) + 0.5f)) / 100.f; -+ float const rounded = std::round(progress * 100) * 0.01; - if (this->GetProgress() != rounded) - { - this->UpdateProgress(rounded);