diff --git a/CHANGELOG.md b/CHANGELOG.md index 4b0f3546..db8f5296 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,28 +8,47 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Removed - Removed all ExtData.rc files + ### Changed - Modified the file paths in carbon, sulfate, and nitrate ExtData.yaml files to used the revised version of the CEDS anthropogenic emissions. Note the previous version has an incorrect seasonal cycle. + + +## [Unreleased] - 2024-05-14 + +### Added + +- Required attributes for the 2D GOCART export fields in AERO_DP bundle have been set in subroutine append_to_bundle in Chem_AeroGeneric.F90. These export fields are imported by OBIO via Surface GC, and the missing of the attributes was causing the writing of surface import checkpoint to fail. The issue has been explained in detail on https://github.com/GEOS-ESM/GOCART/issues/258 + + ## [Unreleased] - 2023-07-24 + ### Fixed + +- corrected reading variable 'rhod' from files ( it was mispelled as 'rhop') + - Silenced unwarranted error messages from wavelength/channel retrieval functions occurring when 470nm and/or 870nm channels are not included in GOCART resource file. + - Add explicit `find_package()` calls for missing dependencies for MAPL for builds with spack-stack. Will eventually be fixed in MAPL in later versions - Corrected the units of the gravimetric soil moisture to percent instead of fractional in the FENGSHA dust scheme. +- Fix issue of GOCART/GEOSgcm circular CMake dependencies when used as external project ### Added - Additional tuning parameters for the soil moisture and drylimit calculations for application specific tuning. ### Changed --Modified ExtData.yaml files to persist as climatological anthropogenic emissions after the end of the CEDS dataset in 2019. Analogous rc files removed as this capability is only available with ExtData2G -- Update `components.yaml` to match that of GEOSgcm v11.3.3 - - ESMA_env v4.20.6 (Baselibs 7.14.0, Updates for SLES15 at NCCS) - - ESMA_cmake v3.36.0 (Fixes for NAS, debug flags, Updates for SLES15 at NCCS) - - GMAO_Shared v1.9.6 (Bug fix for MITgcm, CI fixes, SLES15 Updates) - - MAPL 2.42.0 (Various fixes and features) +- State Spec RC files for GOCART2G, CA, DU, NI, SU, and SS were updated such that the long names for AOD are more intuitive + +- Modified ExtData.yaml files to persist as climatological anthropogenic emissions after the end of the CEDS dataset in 2019. Analogous rc files removed as this capability is only available with ExtData2G + +- Update `components.yaml` to match that of GEOSgcm v11.6.1 + - ESMA_env v4.29.0 (Baselibs 7.24.0, Updates for SLES15 at NCCS, various fixes) + - ESMA_cmake v3.48.0 (Fixes for NAS, debug flags, Updates for SLES15 at NCCS, MPI detection, ESMF and MPI CMake fixes for Spack) + - GMAO_Shared v1.9.8 (Bug fix for MITgcm, CI fixes, SLES15 Updates) + - MAPL 2.47.1 (Various fixes and features, support for Spack) - Update CI to use Baselibs by default from CircleCI Orb - Correct soil moisture parameterization in FENGSHA - Add `soil_moisture_factor` to the DU2G_instance_DU.rc (same name used in the K14 scheme) and DU2G_GridCompMod.F90 files for FENGSHA @@ -37,6 +56,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Moved process library macros to header file. + ## [v2.2.1] - 2023-05-30 ### Fixed diff --git a/CMakeLists.txt b/CMakeLists.txt index d59c2b4c..b3cb6d8e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -2,24 +2,42 @@ cmake_minimum_required (VERSION 3.17) cmake_policy (SET CMP0053 NEW) cmake_policy (SET CMP0054 NEW) -project ( - GOCART - VERSION 2.2.1 - LANGUAGES Fortran CXX C) # Note - CXX is required for ESMF - -if ("${PROJECT_SOURCE_DIR}" STREQUAL "${PROJECT_BINARY_DIR}") - message(SEND_ERROR "In-source builds are disabled. Please - issue cmake command in separate build directory.") -endif ("${PROJECT_SOURCE_DIR}" STREQUAL "${PROJECT_BINARY_DIR}") - -# Set the default build type to release -if (NOT CMAKE_BUILD_TYPE) - message (STATUS "Setting build type to 'Release' as none was specified.") - set (CMAKE_BUILD_TYPE Release CACHE STRING "Choose the type of build." FORCE) - # Set the possible values of build type for cmake-gui - set_property (CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS - "Debug" "Release" "MinSizeRel" "RelWithDebInfo") -endif () +# Let's look for the ESMA cmake directory in a few places +# to see if we are building standalone +set (ESMA_CMAKE_DIRS + cmake + @cmake + cmake@ + ) + +foreach (dir IN LISTS ESMA_CMAKE_DIRS) + if (EXISTS ${CMAKE_CURRENT_LIST_DIR}/${dir}) + list (APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/${dir}") + set (ESMA_CMAKE_PATH "${CMAKE_CURRENT_LIST_DIR}/${dir}" CACHE PATH "Path to ESMA_cmake code") + set(GOCART_STANDALONE TRUE) + endif () +endforeach () + +if (GOCART_STANDALONE) + project ( + GOCART + VERSION 2.2.1 + LANGUAGES Fortran CXX C) # Note - CXX is required for ESMF + + if ("${PROJECT_SOURCE_DIR}" STREQUAL "${PROJECT_BINARY_DIR}") + message(SEND_ERROR "In-source builds are disabled. Please + issue cmake command in separate build directory.") + endif ("${PROJECT_SOURCE_DIR}" STREQUAL "${PROJECT_BINARY_DIR}") + + # Set the default build type to release + if (NOT CMAKE_BUILD_TYPE) + message (STATUS "Setting build type to 'Release' as none was specified.") + set (CMAKE_BUILD_TYPE Release CACHE STRING "Choose the type of build." FORCE) + # Set the possible values of build type for cmake-gui + set_property (CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS + "Debug" "Release" "MinSizeRel" "RelWithDebInfo") + endif () +endif() # Set build options option (UFS_GOCART "Build GOCART component for UFS" OFF) @@ -41,11 +59,12 @@ if (UFS_GOCART) endif() if (NOT COMMAND esma) - list (APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/cmake@") include (esma) endif() -ecbuild_declare_project() +if(GOCART_STANDALONE) + ecbuild_declare_project() +endif() if (NOT Baselibs_FOUND) # Find dependencies @@ -87,7 +106,9 @@ include_directories(${MPI_Fortran_INCLUDE_PATH}) add_subdirectory (ESMF) add_subdirectory (Process_Library) -ecbuild_install_project (NAME GOCART) +if(GOCART_STANDALONE) + ecbuild_install_project (NAME GOCART) +endif() # https://www.scivision.dev/cmake-auto-gitignore-build-dir/ # --- auto-ignore build directory diff --git a/ESMF/GOCART2G_GridComp/CA2G_GridComp/CA2G_StateSpecs.rc b/ESMF/GOCART2G_GridComp/CA2G_GridComp/CA2G_StateSpecs.rc index de20e655..f0fe0eb4 100644 --- a/ESMF/GOCART2G_GridComp/CA2G_GridComp/CA2G_StateSpecs.rc +++ b/ESMF/GOCART2G_GridComp/CA2G_GridComp/CA2G_StateSpecs.rc @@ -97,10 +97,10 @@ category: EXPORT *PSOA | kg m-2 s-1 | xy | N | | * Aerosol SOA Production *SMASS | kg m-3 | xy | N | | * Aerosol Surface Mass Concentration *CMASS | kg m-2 | xy | N | | * Aerosol Column Mass Density - *EXTTAU | 1 | xy | N | size(self%wavelengths_vertint) | * Aerosol Extinction AOT - *STEXTTAU | 1 | xy | N | size(self%wavelengths_vertint) | * Aerosol Extinction AOT Stratosphere - *SCATAU | 1 | xy | N | size(self%wavelengths_vertint) | * Aerosol Scattering AOT - *STSCATAU | 1 | xy | N | size(self%wavelengths_vertint) | * Aerosol Scattering AOT Stratosphere + *EXTTAU | 1 | xy | N | size(self%wavelengths_vertint) | * Aerosol Optical Depth + *STEXTTAU | 1 | xy | N | size(self%wavelengths_vertint) | * Stratospheric Aerosol Optical Thickness + *SCATAU | 1 | xy | N | size(self%wavelengths_vertint) | * Aerosol Optical Depth Due to Scattering + *STSCATAU | 1 | xy | N | size(self%wavelengths_vertint) | * Stratospheric Aerosol Optical Thickness Due to Scattering *ANGSTR | 1 | xy | N | | * Aerosol Angstrom parameter [470-870 nm] *FLUXU | kg m-1 s-1 | xy | N | | * Aerosol column u-wind mass flux *FLUXV | kg m-1 s-1 | xy | N | | * Aerosol column v-wind mass flux diff --git a/ESMF/GOCART2G_GridComp/DU2G_GridComp/DU2G_StateSpecs.rc b/ESMF/GOCART2G_GridComp/DU2G_GridComp/DU2G_StateSpecs.rc index a53bdd55..d5fc35fc 100644 --- a/ESMF/GOCART2G_GridComp/DU2G_GridComp/DU2G_StateSpecs.rc +++ b/ESMF/GOCART2G_GridComp/DU2G_GridComp/DU2G_StateSpecs.rc @@ -71,19 +71,19 @@ category: EXPORT #........................................................................................ DUSMASS | kg m-3 | xy | N | | Dust Surface Mass Concentration DUCMASS | kg m-2 | xy | N | | Dust Column Mass Density - DUEXTTAU | 1 | xy | N | size(self%wavelengths_vertint) | Dust Extinction AOT - DUSTEXTTAU | 1 | xy | N | size(self%wavelengths_vertint) | Dust Extinction AOT Stratosphere - DUSCATAU | 1 | xy | N | size(self%wavelengths_vertint) | Dust Scattering AOT - DUSTSCATAU | 1 | xy | N | size(self%wavelengths_vertint) | Dust Scattering AOT Stratosphere - DUSMASS25 | kg m-3 | xy | N | | Dust Surface Mass Concentration - PM 2.5 - DUCMASS25 | kg m-2 | xy | N | | Dust Column Mass Density - PM 2.5 - DUEXTT25 | 1 | xy | N | size(self%wavelengths_vertint) | Dust Extinction AOT - PM 2.5 - DUSCAT25 | 1 | xy | N | size(self%wavelengths_vertint) | Dust Scattering AOT - PM 2.5 + DUEXTTAU | 1 | xy | N | size(self%wavelengths_vertint) | Dust Aerosol Optical Depth + DUSTEXTTAU | 1 | xy | N | size(self%wavelengths_vertint) | Dust Stratospheric Aerosol Optical Thickness + DUSCATAU | 1 | xy | N | size(self%wavelengths_vertint) | Dust Aerosol Optical Depth Due to Scattering + DUSTSCATAU | 1 | xy | N | size(self%wavelengths_vertint) | Dust Stratospheric Aerosol Optical Thickness Due to Scattering + DUSMASS25 | kg m-3 | xy | N | | Dust Surface Mass Concentration of Particulate Matter < 2.5 microns (PM 2.5) + DUCMASS25 | kg m-2 | xy | N | | Dust Column Mass Density of Particulate Matter < 2.5 microns (PM 2.5) + DUEXTT25 | 1 | xy | N | size(self%wavelengths_vertint) | Dust Aerosol Optical Depth from Particulate Matter < 2.5 microns (PM2.5) + DUSCAT25 | 1 | xy | N | size(self%wavelengths_vertint) | Dust Aerosol Optical Depth Due to Scattering from Particulate Matter < 2.5 microns (PM2.5) DUAERIDX | 1 | xy | N | | Dust TOMS UV Aerosol Index DUFLUXU | kg m-1 s-1 | xy | N | | Dust column u-wind mass flux DUFLUXV | kg m-1 s-1 | xy | N | | Dust column v-wind mass flux - DUEXTTFM | 1 | xy | N | size(self%wavelengths_vertint) | Dust Extinction AOT - PM 1.0 um - DUSCATFM | 1 | xy | N | size(self%wavelengths_vertint) | Dust Scattering AOT - PM 1.0 um + DUEXTTFM | 1 | xy | N | size(self%wavelengths_vertint) | Dust Aerosol Optical Depth from Particulate Matter < 1 micron (PM1.0) + DUSCATFM | 1 | xy | N | size(self%wavelengths_vertint) | Dust Aerosol Optical Depth Due to Scattering from Particulate Matter < 1 micron (PM1.0) DUANGSTR | 1 | xy | N | | Dust Angstrom parameter [470-870 nm] DUEM | kg m-2 s-1 | xy | N | self%nbins | Dust Emission (Bin %d) DUSD | kg m-2 s-1 | xy | N | self%nbins | Dust Sedimentation (Bin %d) diff --git a/ESMF/GOCART2G_GridComp/GOCART2G_StateSpecs.rc b/ESMF/GOCART2G_GridComp/GOCART2G_StateSpecs.rc index ba8ca591..7a7cbe90 100644 --- a/ESMF/GOCART2G_GridComp/GOCART2G_StateSpecs.rc +++ b/ESMF/GOCART2G_GridComp/GOCART2G_StateSpecs.rc @@ -21,14 +21,14 @@ category: EXPORT #---------------------------------------------------------------------------------------- PSO4TOT | kg m-2 s-1 | xyz | C | | Total Sulfate Produced in GOCART #........................................................................................ - TOTEXTTAU | 1 | xy | N | size(self%wavelengths_vertint) | Total Aerosol Extinction AOT [550 nm] - TOTSTEXTTAU | 1 | xy | N | size(self%wavelengths_vertint) | Total Aerosol Extinction AOT [550 nm] Stratosphere - TOTSCATAU | 1 | xy | N | size(self%wavelengths_vertint) | Total Aerosol Scattering AOT [550 nm] - TOTSTSCATAU | 1 | xy | N | size(self%wavelengths_vertint) | Total Aerosol Scattering AOT [550 nm] Stratosphere - TOTEXTT25 | 1 | xy | N | size(self%wavelengths_vertint) | Total Aerosol Extinction AOT [550 nm] - PM2.5 - TOTSCAT25 | 1 | xy | N | size(self%wavelengths_vertint) | Total Aerosol Extinction AOT [550 nm] - PM2.5 - TOTEXTTFM | 1 | xy | N | size(self%wavelengths_vertint) | Total Aerosol Extinction AOT [550 nm] - PM1.0 - TOTSCATFM | 1 | xy | N | size(self%wavelengths_vertint) | Total Aerosol Extinction AOT [550 nm] - PM1.0 + TOTEXTTAU | 1 | xy | N | size(self%wavelengths_vertint) | Total Aerosol Optical Depth at 550 nm + TOTSTEXTTAU | 1 | xy | N | size(self%wavelengths_vertint) | Total Stratospheric Aerosol Optical Thickness at 550 nm + TOTSCATAU | 1 | xy | N | size(self%wavelengths_vertint) | Total Aerosol Optical Depth at 550 nm Due to Scattering + TOTSTSCATAU | 1 | xy | N | size(self%wavelengths_vertint) | Total Stratospheric Aerosol Optical Thickness at 550 nm Due to Scattering + TOTEXTT25 | 1 | xy | N | size(self%wavelengths_vertint) | Total Aerosol Optical Depth at 550 nm from Particluate Matter < 2.5 microns (PM2.5) + TOTSCAT25 | 1 | xy | N | size(self%wavelengths_vertint) | Total Aerosol Optical Depth at 550 nm Due to Scattering from Particulate Matter < 2.5 microns (PM2.5) + TOTEXTTFM | 1 | xy | N | size(self%wavelengths_vertint) | Total Aerosol Optical Depth at 550 nm from Particluate Matter < 1 micron (PM1.0) + TOTSCATFM | 1 | xy | N | size(self%wavelengths_vertint) | Total Aerosol Optical Depth at 550 nm Due to Scattering from Particulate Matter < 1 micron (PM1.0) TOTANGSTR | 1 | xy | N | | Total Aerosol Angstrom parameter [470-870 nm] TOTEXTCOEF | m-1 | xyz | C | size(self%wavelengths_profile) | Total Aerosol Extinction coefficient TOTEXTCOEFRH20 | m-1 | xyz | C | size(self%wavelengths_profile) | Total Aerosol Extinction coefficient - Fixed RH=20% @@ -39,12 +39,12 @@ category: EXPORT TOTBCKCOEF | m-1 sr-1 | xyz | C | size(self%wavelengths_profile) | Total Aerosol Single Scattering Backscatter coefficient TOTABCKTOA | m-1 sr-1 | xyz | C | | Total Attenuated Backscatter Coefficient from TOA [532nm] TOTABCKSFC | m-1 sr-1 | xyz | C | | Total Attenuated Backscatter Coefficient from surface [532nm] - PM | kg m-3 | xy | N | | Total reconstructed PM - PM_RH35 | kg m-3 | xy | N | | Total reconstructed PM(RH=35%) - PM_RH50 | kg m-3 | xy | N | | Total reconstructed PM(RH=50%) - PM25 | kg m-3 | xy | N | | Total reconstructed PM2.5 - PM25_RH35 | kg m-3 | xy | N | | Total reconstructed PM2.5(RH=35%) - PM25_RH50 | kg m-3 | xy | N | | Total reconstructed PM2.5(RH=50%) + PM | kg m-3 | xy | N | | Total Reconstructed Dry Particulate Matter + PM_RH35 | kg m-3 | xy | N | | Total Reconstructed Particulate Matter at 35% Relative Humidity + PM_RH50 | kg m-3 | xy | N | | Total Reconstructed Particulate Matter at 50% Relative Humidity + PM25 | kg m-3 | xy | N | | Total Reconstructed Dry Particulate Matter < 2.5 microns (PM2.5) + PM25_RH35 | kg m-3 | xy | N | | Total Reconstructed Particulate Matter < 2.5 microns (PM2.5) at 35% Relative Humidity + PM25_RH50 | kg m-3 | xy | N | | Total Reconstructed Particulate Matter < 2.5 microns (PM2.5) at 50% Relative Humidity category: INTERNAL #---------------------------------------------------------------------------------------- diff --git a/ESMF/GOCART2G_GridComp/NI2G_GridComp/NI2G_StateSpecs.rc b/ESMF/GOCART2G_GridComp/NI2G_GridComp/NI2G_StateSpecs.rc index cf42893a..b0cc0632 100644 --- a/ESMF/GOCART2G_GridComp/NI2G_GridComp/NI2G_StateSpecs.rc +++ b/ESMF/GOCART2G_GridComp/NI2G_GridComp/NI2G_StateSpecs.rc @@ -49,12 +49,12 @@ category: EXPORT NH3MASS | kg/kg | xyz | C | | Ammonia Mass Mixing Ratio NH4MASS | kg/kg | xyz | C | | Ammonium Aerosol Mass Mixing Ratio NIMASS | kg/kg | xyz | C | | Nitrate Mass Mixing Ratio - NIMASS25 | kg/kg | xyz | C | | Nitrate Mass Mixing Ratio [PM2.5] + NIMASS25 | kg/kg | xyz | C | | Nitrate Mass Mixing Ratio of Particulate Matter < 2.5 microns (PM2.5) HNO3CONC | kg m-3 | xyz | C | | Nitric Acid Mass Concentration NH3CONC | kg m-3 | xyz | C | | Ammonia Mass Concentration NH4CONC | kg m-3 | xyz | C | | Ammonium Mass Concentration NICONC | kg m-3 | xyz | C | | Nitrate Mass Concentration - NICONC25 | kg m-3 | xyz | C | | Nitrate Mass Concentration [PM2.5] + NICONC25 | kg m-3 | xyz | C | | Nitrate Mass Concentration of Particulate Matter < 2.5 microns (PM2.5) NIEXTCOEF | m-1 | xyz | C | size(self%wavelengths_profile) | Nitrate Extinction Coefficient NIEXTCOEFRH20 | m-1 | xyz | C | size(self%wavelengths_profile) | Nitrate Extinction Coefficient - fixed RH=20% NIEXTCOEFRH80 | m-1 | xyz | C | size(self%wavelengths_profile) | Nitrate Extinction Coefficient - fixed RH=80% @@ -83,20 +83,20 @@ category: EXPORT NH3SMASS | kg m-3 | xy | N | | Ammonia Surface Mass Concentration NH4SMASS | kg m-3 | xy | N | | Ammonium Surface Mass Concentration NISMASS | kg m-3 | xy | N | | Nitrate Surface Mass Concentration - NISMASS25 | kg m-3 | xy | N | | Nitrate Surface Mass Concentration [PM2.5] + NISMASS25 | kg m-3 | xy | N | | Nitrate Surface Mass Concentration of Particulate Matter < 2.5 microns (PM2.5) HNO3CMASS | kg m-3 | xy | N | | Nitric Acid Column Mass Density NH3CMASS | kg m-3 | xy | N | | Ammonia Column Mass Density NH4CMASS | kg m-3 | xy | N | | Ammonium Column Mass Density NICMASS | kg m-2 | xy | N | | Nitrate Column Mass Density - NICMASS25 | kg m-2 | xy | N | | Nitrate Column Mass Density [PM2.5] - NIEXTTFM | 1 | xy | N | size(self%wavelengths_vertint) | Nitrate Extinction AOT - PM 1.0 um - NISCATFM | 1 | xy | N | size(self%wavelengths_vertint) | Nitrate Scattering AOT - PM 1.0 um - NIEXTT25 | 1 | xy | N | size(self%wavelengths_vertint) | Nitrate Extinction AOT - PM 2.5 um - NISCAT25 | 1 | xy | N | size(self%wavelengths_vertint) | Nitrate Scattering AOT - PM 2.5 um - NIEXTTAU | 1 | xy | N | size(self%wavelengths_vertint) | Nitrate Extinction AOT - NISTEXTTAU | 1 | xy | N | size(self%wavelengths_vertint) | Nitrate Extinction AOT Stratosphere - NISCATAU | 1 | xy | N | size(self%wavelengths_vertint) | Nitrate Scattering AOT - NISTSCATAU | 1 | xy | N | size(self%wavelengths_vertint) | Nitrate Scattering AOT Stratosphere + NICMASS25 | kg m-2 | xy | N | | Nitrate Column Mass Density of Particulate Matter < 2.5 microns (PM2.5) + NIEXTTFM | 1 | xy | N | size(self%wavelengths_vertint) | Nitrate Aerosol Optical Depth from Particulate Matter < 1 micron (PM1.0) + NISCATFM | 1 | xy | N | size(self%wavelengths_vertint) | Nitrate Aerosol Optical Depth Due to Scattering from Particulate Matter < 1 micron (PM1.0) + NIEXTT25 | 1 | xy | N | size(self%wavelengths_vertint) | Nitrate Aerosol Optical Depth from Particulate Matter < 2.5 microns (PM2.5) + NISCAT25 | 1 | xy | N | size(self%wavelengths_vertint) | Nitrate Aerosol Optical Depth Due to Scattering from Particulate Matter < 2.5 microns (PM2.5) + NIEXTTAU | 1 | xy | N | size(self%wavelengths_vertint) | Nitrate Aerosol Optical Depth + NISTEXTTAU | 1 | xy | N | size(self%wavelengths_vertint) | Nitrate Stratospheric Aerosol Optical Thickness + NISCATAU | 1 | xy | N | size(self%wavelengths_vertint) | Nitrate Aerosol Optical Depth Due to Scattering + NISTSCATAU | 1 | xy | N | size(self%wavelengths_vertint) | Nitrate Stratospheric Aerosol Optical Thickness Due to Scattering NIANGSTR | 1 | xy | N | | Nitrate Angstrom parameter [470-870 nm] NIFLUXU | kg m-1 s-1 | xy | N | | Nitrate column u-wind mass flux NIFLUXV | kg m-1 s-1 | xy | N | | Nitrate column v-wind mass flux diff --git a/ESMF/GOCART2G_GridComp/SS2G_GridComp/SS2G_StateSpecs.rc b/ESMF/GOCART2G_GridComp/SS2G_GridComp/SS2G_StateSpecs.rc index 4feb4050..6adfe688 100644 --- a/ESMF/GOCART2G_GridComp/SS2G_GridComp/SS2G_StateSpecs.rc +++ b/ESMF/GOCART2G_GridComp/SS2G_GridComp/SS2G_StateSpecs.rc @@ -42,7 +42,7 @@ category: EXPORT NAME | UNITS | DIMS | VLOC | UNGRIDDED | LONG NAME #---------------------------------------------------------------------------------------- SSMASS | kg kg-1 | xyz | C | | Sea Salt Mass Mixing Ratio - SSMASS25 | kg kg-1 | xyz | C | | Sea Salt Mass Mixing Ratio - PM 2.5 + SSMASS25 | kg kg-1 | xyz | C | | Sea Salt Mass Mixing Ratio of Particulate Matter < 2.5 microns (PM2.5) SSCONC | kg m-3 | xyz | C | | Sea Salt Mass Concentration SSEXTCOEF | m-1 | xyz | C | size(self%wavelengths_profile) | Sea Salt Extinction Coefficient SSEXTCOEFRH20 | m-1 | xyz | C | size(self%wavelengths_profile) | Sea Salt Extinction Coefficient - Fixed RH=20% @@ -59,17 +59,17 @@ category: EXPORT SSSV | kg m-2 s-1 | xy | N | self%nbins | Sea Salt Convective Scavenging (Bin %d) SSSMASS | kg m-3 | xy | N | | Sea Salt Surface Mass Concentration SSCMASS | kg m-2 | xy | N | | Sea Salt Column Mass Density - SSEXTTAU | 1 | xy | N | size(self%wavelengths_vertint) | Sea Salt Extinction AOT - SSSTEXTTAU | 1 | xy | N | size(self%wavelengths_vertint) | Sea Salt Extinction AOT Stratosphere - SSSCATAU | 1 | xy | N | size(self%wavelengths_vertint) | Sea Salt Scattering AOT - SSSTSCATAU | 1 | xy | N | size(self%wavelengths_vertint) | Sea Salt Scattering AOT Stratosphere - SSSMASS25 | kg m-3 | xy | N | | Sea Salt Surface Mass Concentration - PM 2.5 - SSCMASS25 | kg m-2 | xy | N | | Sea Salt Column Mass Density - PM 2.5 - SSEXTT25 | 1 | xy | N | size(self%wavelengths_vertint) | Sea Salt Extinction AOT - PM 2.5 - SSSCAT25 | 1 | xy | N | size(self%wavelengths_vertint) | Sea Salt Scattering AOT - PM 2.5 + SSEXTTAU | 1 | xy | N | size(self%wavelengths_vertint) | Sea Salt Aerosol Optical Depth + SSSTEXTTAU | 1 | xy | N | size(self%wavelengths_vertint) | Sea Salt Stratospheric Aerosol Optical Thickness + SSSCATAU | 1 | xy | N | size(self%wavelengths_vertint) | Sea Salt Aerosol Optical Depth Due to Scattering + SSSTSCATAU | 1 | xy | N | size(self%wavelengths_vertint) | Sea Salt Stratospheric Aerosol Optical Thickness Due to Scattering + SSSMASS25 | kg m-3 | xy | N | | Sea Salt Surface Mass Concentration of Particulate Matter < 2.5 microns (PM2.5) + SSCMASS25 | kg m-2 | xy | N | | Sea Salt Column Mass Density of Particulate Matter < 2.5 microns (PM2.5) + SSEXTT25 | 1 | xy | N | size(self%wavelengths_vertint) | Sea Salt Aerosol Optical Depth from Particulate Matter < 2.5 microns (PM2.5) + SSSCAT25 | 1 | xy | N | size(self%wavelengths_vertint) | Sea Salt Aerosol Optical Depth Due to Scattering from Particulate Matter < 2.5 microns (PM2.5) SSAERIDX | 1 | xy | N | | Sea Salt TOMS UV Aerosol Index - SSEXTTFM | 1 | xy | N | size(self%wavelengths_vertint) | Sea Salt Extinction AOT [550 nm] - PM 1.0 um - SSSCATFM | 1 | xy | N | size(self%wavelengths_vertint) | Sea Salt Scattering AOT [550 nm] - PM 1.0 um + SSEXTTFM | 1 | xy | N | size(self%wavelengths_vertint) | Sea Salt Aerosol Optical Depth from Particulate Matter < 1 micron (PM1.0) + SSSCATFM | 1 | xy | N | size(self%wavelengths_vertint) | Sea Salt Aerosol Optical Depth Due to Scattering from Particulate Matter < 1 micron (PM1.0) SSANGSTR | 1 | xy | N | | Sea Salt Angstrom parameter [470-870 nm] SSFLUXU | kg m-1 s-1 | xy | N | | Sea Salt column u-wind mass flux SSFLUXV | kg m-1 s-1 | xy | N | | Sea Salt column v-wind mass flux diff --git a/ESMF/GOCART2G_GridComp/SU2G_GridComp/SU2G_StateSpecs.rc b/ESMF/GOCART2G_GridComp/SU2G_GridComp/SU2G_StateSpecs.rc index b8f051b4..ddcdf0b2 100644 --- a/ESMF/GOCART2G_GridComp/SU2G_GridComp/SU2G_StateSpecs.rc +++ b/ESMF/GOCART2G_GridComp/SU2G_GridComp/SU2G_StateSpecs.rc @@ -53,10 +53,10 @@ category: EXPORT #---------------------------------------------------------------------------------------- NAME | UNITS | DIMS | VLOC | UNGRIDDED | LONG NAME #---------------------------------------------------------------------------------------- - SUEM | kg m-2 s-1 | xy | N | self%nbins | Sulfer Emission (Bin %d) - SUDP | kg m-2 s-1 | xy | N | self%nbins | Sulfate Dry Deposition (Bin %d) - SUSD | kg m-2 s-1 | xy | N | self%nbins | Sulfate Settling (Bin %d) - SUWT | kg m-2 s-1 | xy | N | self%nbins | Sulfate Wet Deposition (Bin %d) + SUEM | kg m-2 s-1 | xy | N | self%nbins | Sulfur Emission (Bin %d) + SUDP | kg m-2 s-1 | xy | N | self%nbins | Sulfur Dry Deposition (Bin %d) + SUSD | kg m-2 s-1 | xy | N | self%nbins | Sulfur Settling (Bin %d) + SUWT | kg m-2 s-1 | xy | N | self%nbins | Sulfur Wet Deposition (Bin %d) SUSV | kg m-2 s-1 | xy | N | self%nbins | Sulfate Convective Scavenging (Bin %d) SO4EMAN | kg m-2 s-1 | xy | N | | SO4 Anthropogenic Emissions SO2EMAN | kg m-2 s-1 | xy | N | | SO2 Anthropogenic Emissions @@ -95,10 +95,10 @@ category: EXPORT SUFLUXU | kg m-1 s-1 | xy | N | | SO4 column u-wind mass flux SUFLUXV | kg m-1 s-1 | xy | N | | SO4 column v-wind mass flux SO4MASS | kg kg-1 | xyz | C | | SO4 Aerosol Mass Mixing Ratio - SUEXTTAU | 1 | xy | N | size(self%wavelengths_vertint) | SO4 Extinction AOT - SUSTEXTTAU | 1 | xy | N | size(self%wavelengths_vertint) | SO4 Extinction AOT Stratosphere - SUSCATAU | 1 | xy | N | size(self%wavelengths_vertint) | SO4 Scattering AOT - SUSTSCATAU | 1 | xy | N | size(self%wavelengths_vertint) | SO4 Scattering AOT Stratosphere + SUEXTTAU | 1 | xy | N | size(self%wavelengths_vertint) | SO4 Aerosol Optical Depth + SUSTEXTTAU | 1 | xy | N | size(self%wavelengths_vertint) | SO4 Stratospheric Aerosol Optical Thickness + SUSCATAU | 1 | xy | N | size(self%wavelengths_vertint) | SO4 Aerosol Optical Depth Due to Scattering + SUSTSCATAU | 1 | xy | N | size(self%wavelengths_vertint) | SO4 Stratospheric Aerosol Optical Thickness Due to Scattering SO4SAREA | m2 m-3 | xyz | C | | SO4 Surface Area Density SO4SNUM | m-3 | xyz | C | | SO4 Number Density diff --git a/ESMF/Shared/CMakeLists.txt b/ESMF/Shared/CMakeLists.txt index e9a3f721..4763e354 100644 --- a/ESMF/Shared/CMakeLists.txt +++ b/ESMF/Shared/CMakeLists.txt @@ -12,10 +12,12 @@ if( EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/@GSW ) set (gsw_ECBUILD_SYSTEM_INCLUDED TRUE) endif() -if ( IS_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/MAPL@ ) - esma_add_subdirectories ( - MAPL - ) +if (NOT TARGET MAPL) + if ( IS_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/MAPL@ ) + esma_add_subdirectories ( + MAPL + ) + endif () endif () if ( IS_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/GMAO_Shared@ ) diff --git a/ESMF/Shared/Chem_AeroGeneric.F90 b/ESMF/Shared/Chem_AeroGeneric.F90 index e1da972b..a0f8bbb1 100644 --- a/ESMF/Shared/Chem_AeroGeneric.F90 +++ b/ESMF/Shared/Chem_AeroGeneric.F90 @@ -7,8 +7,8 @@ !BOP ! -! !MODULE: Chem_AeroGeneric - Utilitarian subroutines used by GOCART2G children. -! +! !MODULE: Chem_AeroGeneric - Utilitarian subroutines used by GOCART2G children. +! ! ! !INTERFACE: ! @@ -48,7 +48,7 @@ module Chem_AeroGeneric !==================================================================================== subroutine add_aero (state, label, label2, grid, typekind, ptr, rc) -! Description: Adds fields to aero state for aerosol optics calcualtions. +! Description: Adds fields to aero state for aerosol optics calcualtions. implicit none @@ -109,7 +109,7 @@ recursive subroutine determine_data_driven(COMP_NAME, data_driven, RC) __Iam__('determine_data_driven') -! Begin... +! Begin... ! Is DU data driven? ! ------------------ @@ -142,7 +142,7 @@ subroutine append_to_bundle(varName, providerState, prefix, bundle, rc) integer :: dimCount, i real, pointer :: orig_ptr(:,:,:) real, pointer :: ptr2d(:,:) - character(len=ESMF_MAXSTR) :: bin_index, varNameNew + character(len=ESMF_MAXSTR) :: bin_index, varNameNew, units, longname ! Description: Adds deposition variables to deposition bundle @@ -155,18 +155,25 @@ subroutine append_to_bundle(varName, providerState, prefix, bundle, rc) call ESMF_FieldGet (field, dimCount=dimCount, __RC__) if (dimCount == 2) then ! this handles data instances - call MAPL_FieldBundleAdd (bundle, field, __RC__) + call MAPL_FieldBundleAdd (bundle, field, __RC__) else if (dimCount == 3) then ! this handles computational instances call ESMF_FieldGet (field, grid=grid, __RC__) call MAPL_GetPointer (providerState, orig_ptr, trim(prefix)//trim(varName), __RC__) + call ESMF_AttributeGet(field, name='UNITS', value=units, __RC__) + call ESMF_AttributeGet(field, name='LONG_NAME', value=longname, __RC__) + longname=longname(1:index(trim(longname), '(Bin')-1) if ((index(trim(varname), 'DU') > 0) .or. (index(trim(varname), 'SS') > 0)) then do i = 1, size(orig_ptr, 3) write (bin_index,'(A, I0.3)') '', i ptr2d => orig_ptr(:,:,i) - field2D = ESMF_FieldCreate(grid=grid, datacopyflag=ESMF_DATACOPY_REFERENCE, farrayPtr=ptr2d,& - name=trim(varName)//trim(bin_index) , __RC__) + field2D = ESMF_FieldCreate(grid=grid, datacopyflag=ESMF_DATACOPY_REFERENCE, farray=ptr2d,& + name=trim(varName)//trim(bin_index) , indexflag=ESMF_INDEX_DELOCAL, __RC__) + call ESMF_AttributeSet(field2d, name='DIMS', value=MAPL_DimsHorzOnly, _RC) + call ESMF_AttributeSet(field2d, name='VLOCATION', value=MAPL_VLocationNone, _RC) + call ESMF_AttributeSet(field2d, name='UNITS', value=trim(units), _RC) + call ESMF_AttributeSet(field2d, name='LONG_NAME', value=trim(longname)//' Bin '//trim(bin_index), _RC) call MAPL_AllocateCoupling (field2D, __RC__) call MAPL_FieldBundleAdd (bundle, field2D, __RC__) end do @@ -174,8 +181,12 @@ subroutine append_to_bundle(varName, providerState, prefix, bundle, rc) if (index(trim(varname), 'SU') > 0) then ! only use SO4, which is the 3rd index ptr2d => orig_ptr(:,:,3) - field2D = ESMF_FieldCreate(grid=grid, datacopyflag=ESMF_DATACOPY_REFERENCE, farrayPtr=ptr2d,& - name=trim(varName)//'003' , __RC__) + field2D = ESMF_FieldCreate(grid=grid, datacopyflag=ESMF_DATACOPY_REFERENCE, farray=ptr2d,& + name=trim(varName)//'003' , indexflag=ESMF_INDEX_DELOCAL, __RC__) + call ESMF_AttributeSet(field2d, name='DIMS', value=MAPL_DimsHorzOnly, _RC) + call ESMF_AttributeSet(field2d, name='VLOCATION', value=MAPL_VLocationNone, _RC) + call ESMF_AttributeSet(field2d, name='UNITS', value=units, _RC) + call ESMF_AttributeSet(field2d, name='LONG_NAME', value=trim(longname)//' Bin 003', _RC) call MAPL_AllocateCoupling (field2D, __RC__) call MAPL_FieldBundleAdd (bundle, field2D, __RC__) end if @@ -185,8 +196,12 @@ subroutine append_to_bundle(varName, providerState, prefix, bundle, rc) write (bin_index,'(A, I0.3)') '', i ptr2d => orig_ptr(:,:,i) varNameNew = 'OC'//varName(6:7) - field2D = ESMF_FieldCreate(grid=grid, datacopyflag=ESMF_DATACOPY_REFERENCE, farrayPtr=ptr2d,& - name=trim(varNameNew)//trim(bin_index) , __RC__) + field2D = ESMF_FieldCreate(grid=grid, datacopyflag=ESMF_DATACOPY_REFERENCE, farray=ptr2d,& + name=trim(varNameNew)//trim(bin_index) , indexflag=ESMF_INDEX_DELOCAL, __RC__) + call ESMF_AttributeSet(field2d, name='DIMS', value=MAPL_DimsHorzOnly, _RC) + call ESMF_AttributeSet(field2d, name='VLOCATION', value=MAPL_VLocationNone, _RC) + call ESMF_AttributeSet(field2d, name='UNITS', value=units, _RC) + call ESMF_AttributeSet(field2d, name='LONG_NAME', value=trim(longname)//' Bin '//trim(bin_index), _RC) call MAPL_AllocateCoupling (field2D, __RC__) call MAPL_FieldBundleAdd (bundle, field2D, __RC__) end do @@ -197,8 +212,12 @@ subroutine append_to_bundle(varName, providerState, prefix, bundle, rc) write (bin_index,'(A, I0.3)') '', i ptr2d => orig_ptr(:,:,i) varNameNew = 'BC'//varName(6:7) - field2D = ESMF_FieldCreate(grid=grid, datacopyflag=ESMF_DATACOPY_REFERENCE, farrayPtr=ptr2d,& - name=trim(varNameNew)//trim(bin_index) , __RC__) + field2D = ESMF_FieldCreate(grid=grid, datacopyflag=ESMF_DATACOPY_REFERENCE, farray=ptr2d,& + name=trim(varNameNew)//trim(bin_index) , indexflag=ESMF_INDEX_DELOCAL, __RC__) + call ESMF_AttributeSet(field2d, name='DIMS', value=MAPL_DimsHorzOnly, _RC) + call ESMF_AttributeSet(field2d, name='VLOCATION', value=MAPL_VLocationNone, _RC) + call ESMF_AttributeSet(field2d, name='UNITS', value=units, _RC) + call ESMF_AttributeSet(field2d, name='LONG_NAME', value=trim(longname)//' Bin '//trim(bin_index), _RC) call MAPL_AllocateCoupling (field2D, __RC__) call MAPL_FieldBundleAdd (bundle, field2D, __RC__) end do @@ -206,7 +225,7 @@ subroutine append_to_bundle(varName, providerState, prefix, bundle, rc) else if (dimCount > 3) then if(mapl_am_i_root()) print*,'Chem_AeroGenric::append_to_bundle does not currently support fields greater than 3 dimensions' - VERIFY_(824) + VERIFY_(824) end if RETURN_(ESMF_SUCCESS) @@ -232,7 +251,7 @@ subroutine setZeroKlid(km, klid, int_ptr) ! ! !REVISION HISTORY: ! -! 25Aug2020 E.Sherman - Written +! 25Aug2020 E.Sherman - Written ! ! !Local Variables integer :: k @@ -269,7 +288,7 @@ subroutine setZeroKlid4d (km, klid, int_ptr) ! ! !REVISION HISTORY: ! -! 25Aug2020 E.Sherman - Written +! 25Aug2020 E.Sherman - Written ! ! !Local Variables integer :: k, n @@ -312,7 +331,7 @@ subroutine findKlid (klid, plid, ple, rc) ! ! !REVISION HISTORY: ! -! 25Aug2020 E.Sherman - Written +! 25Aug2020 E.Sherman - Written ! ! !Local Variables integer :: k, j, i diff --git a/Process_Library/GOCART2G_MieMod.F90 b/Process_Library/GOCART2G_MieMod.F90 index 15966ba2..572963d7 100644 --- a/Process_Library/GOCART2G_MieMod.F90 +++ b/Process_Library/GOCART2G_MieMod.F90 @@ -291,7 +291,7 @@ type(GOCART2G_Mie) function GOCART2G_MieCreate ( MieFile, wavelengths, nmom, rc endif ! Dry particle density (will be pulled from wet particle radius) - rc = nf90_inq_varid(ncid,'rhop',ivarid) + rc = nf90_inq_varid(ncid,'rhod',ivarid) if(rc .ne. NF90_NOERR) then ! not in table, fill in dummy variable rhod_table = -999. else diff --git a/Process_Library/MieQuery.H b/Process_Library/MieQuery.H index 51db0438..bda4f08d 100644 --- a/Process_Library/MieQuery.H +++ b/Process_Library/MieQuery.H @@ -130,6 +130,10 @@ gf = __RHINTERP2__(this%gf, irh, arh, bin, gf) endif + if(present(rhop)) then + rhop = __RHINTERP2__(this%rhop, irh, arh, bin, rhop) + endif + if(present(rhod)) then rhod = __RHINTERP2__(this%rhod, irh, arh, bin, rhod) endif diff --git a/components.yaml b/components.yaml index faf25a7d..5330f040 100644 --- a/components.yaml +++ b/components.yaml @@ -5,13 +5,13 @@ GOCART: env: local: ./env@ remote: ../ESMA_env.git - tag: v4.24.0 + tag: v4.29.0 develop: main cmake: local: ./cmake@ remote: ../ESMA_cmake.git - tag: v3.36.0 + tag: v3.48.0 develop: develop ecbuild: @@ -28,12 +28,12 @@ HEMCO: GMAO_Shared: local: ./ESMF/Shared/GMAO_Shared@ remote: ../GMAO_Shared.git - tag: v1.9.6 + tag: v1.9.8 sparse: ./config/GMAO_Shared.sparse develop: main MAPL: local: ./ESMF/Shared/MAPL@ remote: ../MAPL.git - tag: v2.43.0 + tag: v2.47.1 develop: develop