From 46062d98fd44de689aac5341cdb4ec505f2f0aee Mon Sep 17 00:00:00 2001 From: Brian Vanderwende Date: Sun, 24 Sep 2023 09:26:34 -0600 Subject: visit: Add NetCDF format support (#40065) --- var/spack/repos/builtin/packages/visit/package.py | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/var/spack/repos/builtin/packages/visit/package.py b/var/spack/repos/builtin/packages/visit/package.py index ed8b2a8a45..d26f8b6fa0 100644 --- a/var/spack/repos/builtin/packages/visit/package.py +++ b/var/spack/repos/builtin/packages/visit/package.py @@ -78,6 +78,7 @@ class Visit(CMakePackage): variant("osmesa", default=False, description="Use OSMesa for off-screen CPU rendering") variant("adios2", default=True, description="Enable ADIOS2 file format") variant("hdf5", default=True, description="Enable HDF5 file format") + variant("netcdf", default=True, description="Enable NetCDF file format") variant("silo", default=True, description="Enable Silo file format") variant("python", default=True, description="Enable Python support") variant("mpi", default=True, description="Enable parallel engine") @@ -142,6 +143,11 @@ class Visit(CMakePackage): depends_on("hdf5+mpi", when="+hdf5+mpi") depends_on("hdf5~mpi", when="+hdf5~mpi") + # Enable netCDF library based on MPI variant and OLD C++ interface + depends_on("netcdf-c+mpi", when="+netcdf+mpi") + depends_on("netcdf-c~mpi", when="+netcdf~mpi") + depends_on("netcdf-cxx", when="+netcdf") + # VisIt uses Silo's 'ghost zone' data structures, which are only available # in v4.10+ releases: https://wci.llnl.gov/simulation/computer-codes/silo/releases/release-notes-4.10 depends_on("silo@4.10: +shared", when="+silo") @@ -189,6 +195,11 @@ class Visit(CMakePackage): for filename in find("src", "CMakeLists.txt"): filter_file(r"\bvtk(tiff|jpeg|png)", r"${vtk\1_LIBRARIES}", filename) + # NetCDF components are in separate directories using Spack, which is + # not what Visit's CMake logic expects + if "+netcdf" in self.spec: + filter_file(r"(set\(NETCDF_CXX_DIR)", r"#\1", "src/CMake/FindNetcdf.cmake") + def flag_handler(self, name, flags): if name in ("cflags", "cxxflags"): # NOTE: This is necessary in order to allow VisIt to compile a couple @@ -292,6 +303,14 @@ class Visit(CMakePackage): if "+mpi" in spec and "+mpi" in spec["hdf5"]: args.append(self.define("VISIT_HDF5_MPI_DIR", spec["hdf5"].prefix)) + if "+netcdf" in spec: + args.extend( + [ + self.define("NETCDF_DIR", spec["netcdf-c"].prefix), + self.define("NETCDF_CXX_DIR", spec["netcdf-cxx"].prefix), + ] + ) + if "+silo" in spec: args.append(self.define("VISIT_SILO_DIR", spec["silo"].prefix)) -- cgit v1.2.3-60-g2f50