diff --git a/cime_config/machines/config_machines.xml b/cime_config/machines/config_machines.xml index 36381d781535..bd39d417fc1b 100644 --- a/cime_config/machines/config_machines.xml +++ b/cime_config/machines/config_machines.xml @@ -1987,7 +1987,8 @@ commented out until "*** No rule to make target '.../libadios2pio-nm-lib.a'" iss /nfs/gce/projects/climate/software/perl5/lib/perl5 - $SHELL{if [ -z "$ADIOS2_ROOT" ]; then echo /nfs/gce/projects/climate/software/linux-ubuntu22.04-x86_64/adios2/2.9.1/mpich-4.1.2/gcc-12.1.0; else echo "$ADIOS2_ROOT"; fi} + $SHELL{if [ -z "$ADIOS2_ROOT" ]; then echo /nfs/gce/projects/climate/software/linux-ubuntu22.04-x86_64/adios2/2.10.1/mpich-4.1.2/gcc-12.1.0; else echo "$ADIOS2_ROOT"; fi} + $SHELL{if [ -z "$BLOSC2_ROOT" ]; then echo /nfs/gce/projects/climate/software/linux-ubuntu22.04-x86_64/c-blosc2/2.15.1/gcc-12.1.0; else echo "$BLOSC2_ROOT"; fi} diff --git a/cime_config/testmods_dirs/io/force_adiosc/shell_commands b/cime_config/testmods_dirs/io/force_adiosc/shell_commands new file mode 100644 index 000000000000..543d5dbfef07 --- /dev/null +++ b/cime_config/testmods_dirs/io/force_adiosc/shell_commands @@ -0,0 +1,2 @@ +#!/bin/bash +./xmlchange PIO_TYPENAME="adiosc" diff --git a/components/cmake/modules/FindPIO.cmake b/components/cmake/modules/FindPIO.cmake index 0277918ac8e0..5589dff0ed04 100644 --- a/components/cmake/modules/FindPIO.cmake +++ b/components/cmake/modules/FindPIO.cmake @@ -42,6 +42,9 @@ endif() # we can assume that an MPI case with ADIOS2_ROOT set is probably # using adios. if (NOT MPILIB STREQUAL "mpi-serial" AND DEFINED ENV{ADIOS2_ROOT}) + if(DEFINED ENV{BLOSC2_ROOT}) + set(ENV{Blosc2_DIR} "$ENV{BLOSC2_ROOT}") + endif() find_package(MPI REQUIRED COMPONENTS C) find_package(ADIOS2 REQUIRED COMPONENTS C) list(APPEND PIOLIBS adios2::adios2) diff --git a/driver-mct/cime_config/config_component.xml b/driver-mct/cime_config/config_component.xml index 8cddad0abf89..cdfca40befa4 100644 --- a/driver-mct/cime_config/config_component.xml +++ b/driver-mct/cime_config/config_component.xml @@ -2628,7 +2628,7 @@ char - netcdf,pnetcdf,netcdf4p,netcdf4c,adios,hdf5,default + netcdf,pnetcdf,netcdf4p,netcdf4c,adios,adiosc,hdf5,default run_pio env_run.xml pio io type diff --git a/driver-moab/cime_config/config_component.xml b/driver-moab/cime_config/config_component.xml index d3685126c61e..ac9e46a476e9 100644 --- a/driver-moab/cime_config/config_component.xml +++ b/driver-moab/cime_config/config_component.xml @@ -2620,7 +2620,7 @@ char - netcdf,pnetcdf,netcdf4p,netcdf4c,adios,hdf5,default + netcdf,pnetcdf,netcdf4p,netcdf4c,adios,adiosc,hdf5,default run_pio env_run.xml pio io type diff --git a/externals/scorpio b/externals/scorpio index 804f87c48fc9..59601f625e34 160000 --- a/externals/scorpio +++ b/externals/scorpio @@ -1 +1 @@ -Subproject commit 804f87c48fc9013009307b806d1aff2afa3a0d7c +Subproject commit 59601f625e34019de0e1d3411d07bdc9e70d0054 diff --git a/share/build/buildlib.spio b/share/build/buildlib.spio index d17627c4323d..064fa751e4ae 100755 --- a/share/build/buildlib.spio +++ b/share/build/buildlib.spio @@ -78,6 +78,8 @@ def buildlib(bldroot, installpath, case): # ADIOS2_ROOT. This is a workaround if "ADIOS2_ROOT" in os.environ: os.environ["ADIOS2_DIR"] = os.environ["ADIOS2_ROOT"] + if "BLOSC2_ROOT" in os.environ: + os.environ["Blosc2_DIR"] = os.environ["BLOSC2_ROOT"] # If variable PIO_VERSION_MAJOR is defined in the environment then # we assume that PIO is installed on the system @@ -105,10 +107,14 @@ def buildlib(bldroot, installpath, case): else: cmake_opts += f"-DGENF90_PATH={scorpio_src_dir}/src/genf90 " + adiosc_found = False if "ADIOS2_ROOT" in os.environ: cmake_opts += "-DWITH_ADIOS2:BOOL=ON " if "FROM_CREATE_TEST" in os.environ and os.environ["FROM_CREATE_TEST"] == "True": cmake_opts += "-DADIOS_BP2NC_TEST:BOOL=ON " + if "BLOSC2_ROOT" in os.environ: + cmake_opts += "-DADIOS_USE_COMPRESSION:BOOL=ON " + adiosc_found = True if debug: cmake_opts += "-DPIO_ENABLE_LOGGING=ON " @@ -281,6 +287,8 @@ def buildlib(bldroot, installpath, case): valid_values += ",netcdf4p,netcdf4c" if adios_found: valid_values += ",adios" + if adiosc_found: + valid_values += ",adiosc" if hdf5_found: valid_values += ",hdf5" diff --git a/share/util/shr_pio_mod.F90 b/share/util/shr_pio_mod.F90 index d500cbc680a2..11cefd725b54 100644 --- a/share/util/shr_pio_mod.F90 +++ b/share/util/shr_pio_mod.F90 @@ -679,6 +679,8 @@ subroutine shr_pio_getiotypefromname(typename, iotype, defaulttype) #ifndef PIO1 else if ( typename .eq. 'ADIOS') then iotype = pio_iotype_adios + else if ( typename .eq. 'ADIOSC') then + iotype = pio_iotype_adiosc else if ( typename .eq. 'HDF5') then iotype = pio_iotype_hdf5 #endif