Skip to content

Prototype CGNS blueprint mesh relay output #1364

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 3 commits into
base: develop
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 13 additions & 0 deletions src/cmake/Setup3rdParty.cmake
Original file line number Diff line number Diff line change
@@ -123,6 +123,19 @@ if(HDF5_DIR)
endif()
endif()

################################
# Setup CGNS if available
################################
# Search for CGNS.
if(CGNS_DIR)
include(cmake/thirdparty/SetupCGNS.cmake)
include_directories(${CGNS_INCLUDE_DIRS})
# if we don't find CGNS, throw a fatal error
if(NOT CGNS_FOUND)
message(FATAL_ERROR "CGNS_DIR is set, but CGNS wasn't found.")
endif()
endif()

################################
# Setup Silo if available
################################
15 changes: 15 additions & 0 deletions src/cmake/thirdparty/SetupCGNS.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@

# first Check for CGNS_DIR
if(NOT CGNS_DIR)
MESSAGE(FATAL_ERROR "CGNS support needs explicit CGNS_DIR")
endif()

set(CGNS_ROOT ${CGNS_DIR})

find_package(CGNS REQUIRED)

get_target_property(CGNS_INCLUDE_DIRS CGNS::cgns_shared INTERFACE_INCLUDE_DIRECTORIES)
message(STATUS "CGNS Include Directory: ${CGNS_INCLUDE_DIRS}")

# some versions of openmpi (4.1.6 on ubuntu 24.04) lead to C++ mpi linker errors
add_definitions(-DOMPI_SKIP_MPICXX)
1 change: 1 addition & 0 deletions src/config/ConduitConfig.cmake.in
Original file line number Diff line number Diff line change
@@ -37,6 +37,7 @@ if(NOT CONDUIT_FOUND)
set(CONDUIT_PYTHON_MODULE_DIR "@CONDUIT_INSTALL_PYTHON_MODULE_DIR@")
set(CONDUIT_ZLIB_DIR "@ZLIB_DIR@")
set(CONDUIT_HDF5_DIR "@HDF5_DIR@")
set(CONDUIT_CGNS_DIR "@CGNS_DIR@" )
set(CONDUIT_ADIOS_DIR "@ADIOS_DIR@")
set(CONDUIT_SILO_DIR "@SILO_DIR@")
set(CONDUIT_METIS_DIR "@METIS_DIR@")
14 changes: 12 additions & 2 deletions src/config/conduit_config.mk.in
Original file line number Diff line number Diff line change
@@ -30,6 +30,7 @@ CONDUIT_USE_OPENMP = @CONDUIT_USE_OPENMP@

CONDUIT_SILO_DIR = @SILO_DIR@
CONDUIT_ADIOS_DIR = @ADIOS_DIR@
CONDUIT_CGNS_DIR = @CGNS_DIR@
CONDUIT_ZFP_DIR = @ZFP_DIR@

CONDUIT_METIS_DIR = @METIS_DIR@
@@ -49,6 +50,7 @@ CONDUIT_LINK_RPATH = -Wl,-rpath,$(CONDUIT_DIR)/lib
# which will undermine parsing of the makefile
CONDUIT_SILO_RPATH_FLAGS_VALUE = -Wl,-rpath,$(CONDUIT_SILO_DIR)/lib
CONDUIT_HDF5_RPATH_FLAGS_VALUE = -Wl,-rpath,$(CONDUIT_HDF5_DIR)/lib
CONDUIT_CGNS_RPATH_FLAGS_VALUE = -Wl,-rpath,$(CONDUIT_CGNS_DIR)/lib
CONDUIT_ADIOS_RPATH_FLAGS_VALUE = -Wl,-rpath,$(CONDUIT_ADIOS_DIR)/lib
CONDUIT_ZFP_RPATH_FLAGS_VALUE = -Wl,-rpath,$(CONDUIT_ZFP_DIR)/lib
CONDUIT_METIS_RPATH_FLAGS_VALUE = -Wl,-rpath,$(CONDUIT_METIS_DIR)/lib
@@ -58,6 +60,7 @@ CONDUIT_ADIAK_RPATH_FLAGS_VALUE = -Wl,-rpath,$(CONDUIT_ADIAK_DIR)/lib

CONDUIT_LINK_RPATH += $(if $(CONDUIT_SILO_DIR), $(CONDUIT_SILO_RPATH_FLAGS_VALUE))
CONDUIT_LINK_RPATH += $(if $(CONDUIT_HDF5_DIR), $(CONDUIT_HDF5_RPATH_FLAGS_VALUE))
CONDUIT_LINK_RPATH += $(if $(CONDUIT_CGNS_DIR), $(CONDUIT_CGNS_RPATH_FLAGS_VALUE))
CONDUIT_LINK_RPATH += $(if $(CONDUIT_ADIOS_DIR), $(CONDUIT_ADIOS_RPATH_FLAGS_VALUE))
CONDUIT_LINK_RPATH += $(if $(CONDUIT_ZFP_DIR), $(CONDUIT_ZFP_RPATH_FLAGS_VALUE))
CONDUIT_LINK_RPATH += $(if $(CONDUIT_METIS_DIR), $(CONDUIT_METIS_RPATH_FLAGS_VALUE))
@@ -84,6 +87,8 @@ CONDUIT_INCLUDE_FLAGS += -I $(CONDUIT_DIR)/include

CONDUIT_INCLUDE_FLAGS += $(if $(CONDUIT_ADIOS_DIR),-I$(CONDUIT_ADIOS_DIR)/include)

CONDUIT_INCLUDE_FLAGS += $(if $(CONDUIT_CGNS_DIR),-I$(CONDUIT_CGNS_DIR)/include)

CONDUIT_INCLUDE_FLAGS += $(if $(CONDUIT_SILO_DIR),-I$(CONDUIT_SILO_DIR)/include)

CONDUIT_INCLUDE_FLAGS += $(if $(CONDUIT_HDF5_DIR),-I$(CONDUIT_HDF5_DIR)/include)
@@ -123,6 +128,11 @@ CONDUIT_SILO_LIB_FLAGS = $(if $(CONDUIT_SILO_DIR),-L $(CONDUIT_SILO_DIR)/lib -ls
CONDUIT_HDF5_LIB_FLAGS = $(if $(CONDUIT_HDF5_DIR),-L $(CONDUIT_HDF5_DIR)/lib -lhdf5)
CONDUIT_HDF5_LIB_FLAGS += $(if $(CONDUIT_HDF5_DIR),$(CONDUIT_HDF5_EXTRA_LIB_FLAGS))

##########
# CGNS
##########
CONDUIT_CGNS_LIB_FLAGS = $(if $(CONDUIT_CGNS_DIR),-L $(CONDUIT_CGNS_DIR)/lib -lcgns)

##########
# ZFP
##########
@@ -147,7 +157,7 @@ CONDUIT_CALIPER_LIB_FLAGS = $(if $(CONDUIT_CALIPER_DIR),-L $(CONDUIT_CALIPER_DI
CONDUIT_LIB_FLAGS = -L $(CONDUIT_DIR)/lib \
-lconduit_relay \
-lconduit_blueprint \
-lconduit $(CONDUIT_ADIOS_LIB_FLAGS) $(CONDUIT_SILO_LIB_FLAGS) $(CONDUIT_HDF5_LIB_FLAGS) $(CONDUIT_ZFP_LIB_FLAGS) $(CONDUIT_CALIPER_LIB_FLAGS) $(CONDUIT_ADIAK_LIB_FLAGS) $(CONDUIT_ZLIB_LIB_FLAGS) $(CONDUIT_EXTRA_LIB_FLAGS) $(CONDUIT_OPENMP_LINK_FLAGS)
-lconduit $(CONDUIT_ADIOS_LIB_FLAGS) $(CONDUIT_SILO_LIB_FLAGS) $(CONDUIT_HDF5_LIB_FLAGS) $(CONDUIT_CGNS_LIB_FLAGS) $(CONDUIT_ZFP_LIB_FLAGS) $(CONDUIT_CALIPER_LIB_FLAGS) $(CONDUIT_ADIAK_LIB_FLAGS) $(CONDUIT_ZLIB_LIB_FLAGS) $(CONDUIT_EXTRA_LIB_FLAGS) $(CONDUIT_OPENMP_LINK_FLAGS)

# All conduit libs, with MPI
CONDUIT_MPI_LIB_FLAGS = -L $(CONDUIT_DIR)/lib \
@@ -156,4 +166,4 @@ CONDUIT_MPI_LIB_FLAGS = -L $(CONDUIT_DIR)/lib \
-lconduit_relay \
-lconduit_blueprint_mpi \
-lconduit_blueprint \
-lconduit $(CONDUIT_ADIOS_MPI_LIB_FLAGS) $(CONDUIT_SILO_LIB_FLAGS) $(CONDUIT_HDF5_LIB_FLAGS) $(CONDUIT_ZFP_LIB_FLAGS) $(CONDUIT_METIS_LIB_FLAGS) $(CONDUIT_PARMETIS_LIB_FLAGS) $(CONDUIT_CALIPER_LIB_FLAGS) $(CONDUIT_ZLIB_LIB_FLAGS) $(CONDUIT_ADIAK_LIB_FLAGS) $(CONDUIT_EXTRA_LIB_FLAGS) $(CONDUIT_OPENMP_LINK_FLAGS)
-lconduit $(CONDUIT_ADIOS_MPI_LIB_FLAGS) $(CONDUIT_SILO_LIB_FLAGS) $(CONDUIT_HDF5_LIB_FLAGS) $(CONDUIT_CGNS_LIB_FLAGS) $(CONDUIT_ZFP_LIB_FLAGS) $(CONDUIT_METIS_LIB_FLAGS) $(CONDUIT_PARMETIS_LIB_FLAGS) $(CONDUIT_CALIPER_LIB_FLAGS) $(CONDUIT_ZLIB_LIB_FLAGS) $(CONDUIT_ADIAK_LIB_FLAGS) $(CONDUIT_EXTRA_LIB_FLAGS) $(CONDUIT_OPENMP_LINK_FLAGS)
21 changes: 21 additions & 0 deletions src/config/conduit_setup_deps.cmake
Original file line number Diff line number Diff line change
@@ -129,6 +129,27 @@ if(CONDUIT_ZLIB_DIR)
find_package(ZLIB REQUIRED)
endif()

###############################################################################
# Setup CGNS
###############################################################################
if(CONDUIT_CGNS_DIR)
if(NOT Conduit_FIND_QUIETLY)
message(STATUS "Conduit was built with CGNS Support")
endif()

if(NOT CGNS_DIR)
# if conduit was configured with CGNS, we need to include it
set(CGNS_DIR ${CONDUIT_CGNS_DIR})
endif()
set(CGNS_ROOT ${CGNS_DIR})

if(NOT Conduit_FIND_QUIETLY)
message(STATUS "Looking for CGNS at: " ${CGNS_DIR})
endif()

find_package(CGNS REQUIRED)
endif()

###############################################################################
# Setup HDF5
###############################################################################
8 changes: 8 additions & 0 deletions src/config/conduit_setup_targets.cmake
Original file line number Diff line number Diff line change
@@ -41,6 +41,12 @@ else()
set(CONDUIT_RELAY_HDF5_ENABLED FALSE)
endif()

if(EXISTS ${_IMPORT_ROOT}/include/conduit/conduit_relay_io_cgns_api.hpp)
set(CONDUIT_RELAY_CGNS_ENABLED TRUE)
else()
set(CONDUIT_RELAY_CGNS_ENABLED FALSE)
endif()

if(EXISTS ${_IMPORT_ROOT}/include/conduit/conduit_relay_io_adios_api.hpp)
set(CONDUIT_RELAY_ADIOS_ENABLED TRUE)
else()
@@ -116,6 +122,8 @@ if(NOT Conduit_FIND_QUIETLY)
message(STATUS " CONDUIT_RELAY_WEBSERVER_ENABLED = ${CONDUIT_RELAY_WEBSERVER_ENABLED}")
message(STATUS " CONDUIT_RELAY_HDF5_ENABLED = ${CONDUIT_RELAY_HDF5_ENABLED}")
message(STATUS " CONDUIT_HDF5_DIR = ${CONDUIT_HDF5_DIR}")
message(STATUS " CONDUIT_RELAY_CGNS_ENABLED = ${CONDUIT_RELAY_CGNS_ENABLED}")
message(STATUS " CONDUIT_CGNS_DIR = ${CONDUIT_CGNS_DIR}")
message(STATUS " CONDUIT_RELAY_ADIOS_ENABLED = ${CONDUIT_RELAY_ADIOS_ENABLED}")
message(STATUS " CONDUIT_ADIOS_DIR = ${CONDUIT_ADIOS_DIR}")
message(STATUS " CONDUIT_RELAY_SILO_ENABLED = ${CONDUIT_RELAY_SILO_ENABLED}")
3 changes: 3 additions & 0 deletions src/docs/sphinx/building.rst
Original file line number Diff line number Diff line change
@@ -143,6 +143,9 @@ CMake Options for Third-party Library Paths
* - ``ZLIB_DIR``
- Path to a Zlib install (optional). (Needed for HDF5 support)

* - ``CGNS_DIR``
- Path to a CGNS install (optional). Controls if CGNS I/O support is built into *conduit_relay*.
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Also requires HDF5 support.


* - ``SILO_DIR``
- Path to a Silo install (optional). Controls if Silo I/O support is built into *conduit_relay*. Requires HDF5.

16 changes: 16 additions & 0 deletions src/libs/relay/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -16,6 +16,10 @@ if(HDF5_FOUND)
SET(CONDUIT_RELAY_IO_HDF5_ENABLED TRUE)
endif()

if(CGNS_FOUND)
SET(CONDUIT_RELAY_IO_CGNS_ENABLED TRUE)
endif()

if(H5ZZFP_FOUND)
SET(CONDUIT_RELAY_IO_H5ZZFP_ENABLED TRUE)
endif()
@@ -119,6 +123,14 @@ if(HDF5_FOUND)
list(APPEND conduit_relay_sources conduit_relay_io_hdf5.cpp)
endif()

if(CGNS_FOUND)
list(APPEND conduit_relay_headers
conduit_relay_io_cgns.hpp
conduit_relay_io_cgns_api.hpp
)
list(APPEND conduit_relay_sources conduit_relay_io_cgns.cpp)
endif()

if(SILO_FOUND)
list(APPEND conduit_relay_headers
conduit_relay_silo.hpp
@@ -193,6 +205,10 @@ if(HDF5_FOUND)
endif()
endif()

if(CGNS_FOUND)
list(APPEND conduit_relay_deps CGNS::cgns_shared)
endif()

if(H5ZZFP_FOUND)
list(APPEND conduit_relay_deps h5zzfp)
endif()
2 changes: 2 additions & 0 deletions src/libs/relay/conduit_relay_config.h.in
Original file line number Diff line number Diff line change
@@ -22,6 +22,8 @@

#cmakedefine CONDUIT_RELAY_IO_HDF5_ENABLED

#cmakedefine CONDUIT_RELAY_IO_CGNS_ENABLED

#cmakedefine CONDUIT_RELAY_IO_H5ZZFP_ENABLED

#cmakedefine CONDUIT_RELAY_IO_SILO_ENABLED
23 changes: 23 additions & 0 deletions src/libs/relay/conduit_relay_io.cpp
Original file line number Diff line number Diff line change
@@ -27,6 +27,10 @@
#include "conduit_relay_io_silo.hpp"
#endif

#ifdef CONDUIT_RELAY_IO_CGNS_ENABLED
#include "conduit_relay_io_cgns.hpp"
#endif

#ifdef CONDUIT_RELAY_IO_ADIOS_ENABLED
#include "conduit_relay_io_adios.hpp"
#endif
@@ -98,6 +102,12 @@ about(Node &n)
io_protos["sidre_hdf5"] = "enabled";
#endif

#ifdef CONDUIT_RELAY_IO_CGNS_ENABLED
io_protos["cgns"] = "enabled";
#else
io_protos["cgns"] = "disabled";
#endif

#ifdef CONDUIT_RELAY_IO_H5ZZFP_ENABLED
io_protos["h5z-zfp"] = "enabled";
#else
@@ -318,6 +328,9 @@ save(const Node &node,
const std::string &protocol_,
const Node &options)
{
std::cout << "save: " << path << " protocol: " << protocol_ << std::endl;
std::cout << "options: " << std::endl;
options.print();
// we expect options to unused if all 3rd party i/o options are disabled
// avoid warning using CONDUIT_UNUSED macro.
CONDUIT_UNUSED(options);
@@ -392,6 +405,16 @@ save(const Node &node,
#else
CONDUIT_ERROR("conduit_relay lacks Silo support: " <<
"Failed to save conduit node to path " << path);
#endif
}
else if( protocol == "blueprint/mesh/cgns")
{
#ifdef CONDUIT_RELAY_IO_CGNS_ENABLED
// Node
cgns_write(node,path);
#else
CONDUIT_ERROR("conduit_relay lacks CGNS support: " <<
"Failed to save conduit node to path " << path);
#endif
}
else if( protocol == "adios")
4 changes: 3 additions & 1 deletion src/libs/relay/conduit_relay_io_blueprint.cpp
Original file line number Diff line number Diff line change
@@ -603,7 +603,9 @@ identify_protocol(const std::string &path)
std::string("."),
file_name_ext,
file_name_base);

std::cout << "identify_protocol: file_path = " << file_path << std::endl;
std::cout << "identify_protocol: file_name_base = " << file_name_base << std::endl;
std::cout << "identify_protocol: file_name_ext = " << file_name_ext << std::endl;
// default
std::string io_type = "bin";

Loading