visit: Add NetCDF format support (#40065)
This commit is contained in:
		
				
					committed by
					
						
						GitHub
					
				
			
			
				
	
			
			
			
						parent
						
							4e37084ed4
						
					
				
				
					commit
					46062d98fd
				
			@@ -78,6 +78,7 @@ class Visit(CMakePackage):
 | 
				
			|||||||
    variant("osmesa", default=False, description="Use OSMesa for off-screen CPU rendering")
 | 
					    variant("osmesa", default=False, description="Use OSMesa for off-screen CPU rendering")
 | 
				
			||||||
    variant("adios2", default=True, description="Enable ADIOS2 file format")
 | 
					    variant("adios2", default=True, description="Enable ADIOS2 file format")
 | 
				
			||||||
    variant("hdf5", default=True, description="Enable HDF5 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("silo", default=True, description="Enable Silo file format")
 | 
				
			||||||
    variant("python", default=True, description="Enable Python support")
 | 
					    variant("python", default=True, description="Enable Python support")
 | 
				
			||||||
    variant("mpi", default=True, description="Enable parallel engine")
 | 
					    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")
 | 
				
			||||||
    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
 | 
					    # 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
 | 
					    # 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")
 | 
					    depends_on("silo@4.10: +shared", when="+silo")
 | 
				
			||||||
@@ -189,6 +195,11 @@ def patch(self):
 | 
				
			|||||||
        for filename in find("src", "CMakeLists.txt"):
 | 
					        for filename in find("src", "CMakeLists.txt"):
 | 
				
			||||||
            filter_file(r"\bvtk(tiff|jpeg|png)", r"${vtk\1_LIBRARIES}", filename)
 | 
					            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):
 | 
					    def flag_handler(self, name, flags):
 | 
				
			||||||
        if name in ("cflags", "cxxflags"):
 | 
					        if name in ("cflags", "cxxflags"):
 | 
				
			||||||
            # NOTE: This is necessary in order to allow VisIt to compile a couple
 | 
					            # NOTE: This is necessary in order to allow VisIt to compile a couple
 | 
				
			||||||
@@ -292,6 +303,14 @@ def cmake_args(self):
 | 
				
			|||||||
            if "+mpi" in spec and "+mpi" in spec["hdf5"]:
 | 
					            if "+mpi" in spec and "+mpi" in spec["hdf5"]:
 | 
				
			||||||
                args.append(self.define("VISIT_HDF5_MPI_DIR", spec["hdf5"].prefix))
 | 
					                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:
 | 
					        if "+silo" in spec:
 | 
				
			||||||
            args.append(self.define("VISIT_SILO_DIR", spec["silo"].prefix))
 | 
					            args.append(self.define("VISIT_SILO_DIR", spec["silo"].prefix))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user