diff --git a/CMOR/drive_input4MIPs_bcs.json b/CMOR/drive_input4MIPs_bcs.json deleted file mode 100755 index 26f3e63..0000000 --- a/CMOR/drive_input4MIPs_bcs.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "institution_id": "PCMDI", - "source_id": "PCMDI-AMIP-1-1-10", - "product": "derived", - - "#outpath": "/p/user_pub/climate_work/durack1", - "outpath": ".", - "_history_template": "%s; CMOR rewrote data to be consistent with , CMIP6, and standards", - "output_path_template": "", - "output_file_template": "", - "tracking_prefix": "hdl:21.14100", - - - "_controlled_vocabulary_file": "input4MIPs_CV.json", - "_AXIS_ENTRY_FILE": "input4MIPs_coordinate.json", - "_FORMULA_VAR_FILE": "input4MIPs_formula_terms.json", - "activity_id": "input4MIPs" -} diff --git a/CMOR/drive_input4MIPs_obs.json b/CMOR/drive_input4MIPs_obs.json deleted file mode 100755 index 8fd5925..0000000 --- a/CMOR/drive_input4MIPs_obs.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "institution_id": "PCMDI", - "source_id": "PCMDI-AMIP-1-1-10", - - "#outpath": "/p/user_pub/climate_work/durack1", - "outpath": ".", - "_history_template": "%s; CMOR rewrote data to be consistent with , CMIP6, and standards", - "output_path_template": "", - "output_file_template": "", - "tracking_prefix": "hdl:21.14100", - - "_controlled_vocabulary_file": "input4MIPs_CV.json", - "_AXIS_ENTRY_FILE": "input4MIPs_coordinate.json", - "_FORMULA_VAR_FILE": "input4MIPs_formula_terms.json", - "activity_id": "input4MIPs" -} diff --git a/CVs/input4MIPs_institution_id.json b/CVs/input4MIPs_institution_id.json index 51e6830..ca95b0d 100644 --- a/CVs/input4MIPs_institution_id.json +++ b/CVs/input4MIPs_institution_id.json @@ -1,5 +1,5 @@ { "institution_id":{ - "PCMDI":"Program for Climate Model Diagnosis and Intercomparison, Lawrence Livermore National Laboratory, Livermore, CA 94550, USA" + "PCMDI":"Program for Climate Model Diagnosis and Intercomparison, Lawrence Livermore National Laboratory, Livermore, CA 94550, USA (ROR: https://ror.org/02k3nmd98)" } } \ No newline at end of file diff --git a/CVs/input4MIPs_license.json b/CVs/input4MIPs_license.json index 7de2f93..3f52967 100644 --- a/CVs/input4MIPs_license.json +++ b/CVs/input4MIPs_license.json @@ -1,3 +1,15 @@ { - "license":" data produced by is licensed under a Creative Commons Attribution 4.0 International License (CC BY 4.0; https://creativecommons.org/licenses/by/4.0/). Consult https://pcmdi.llnl.gov/CMIP6/TermsOfUse for terms of use governing input4MIPs output, including citation requirements and proper acknowledgment. Further information about this data, including some limitations, can be found via the further_info_url (recorded as a global attribute in this file). The data producers and data providers make no warranty, either express or implied, including, but not limited to, warranties of merchantability and fitness for a particular purpose. All liabilities arising from the supply of the information (including any liability arising in negligence) are excluded to the fullest extent permitted by law." + "license":{ + "license_id":{ + "CC BY 4.0":{ + "license_type":"Creative Commons Attribution 4.0 International", + "license_url":"https://creativecommons.org/licenses/by/4.0/" + }, + "CC0 1.0":{ + "license_type":"Creative Commons CC0 1.0 Universal Public Domain Dedication", + "license_url":"https://creativecommons.org/publicdomain/zero/1.0/" + } + }, + "license_template":"; input4MIPs data produced by is licensed under a License (). Consult https://pcmdi.llnl.gov/CMIP6/TermsOfUse for terms of use governing input4MIPs output, including citation requirements and proper acknowledgment. The data producers and data providers make no warranty, either express or implied, including, but not limited to, warranties of merchantability and fitness for a particular purpose. All liabilities arising from the supply of the information (including any liability arising in negligence) are excluded to the fullest extent permitted by law." + } } \ No newline at end of file diff --git a/CVs/input4MIPs_mip_era.json b/CVs/input4MIPs_mip_era.json index aac7195..7ea8401 100644 --- a/CVs/input4MIPs_mip_era.json +++ b/CVs/input4MIPs_mip_era.json @@ -8,6 +8,7 @@ "CMIP5", "CMIP6", "CMIP6Plus", - "CMIP7" + "CMIP7", + "CMIP7Plus" ] } \ No newline at end of file diff --git a/CVs/input4MIPs_required_global_attributes.json b/CVs/input4MIPs_required_global_attributes.json index e714f83..78d44db 100644 --- a/CVs/input4MIPs_required_global_attributes.json +++ b/CVs/input4MIPs_required_global_attributes.json @@ -11,6 +11,7 @@ "institution", "institution_id", "license", + "license_id", "mip_era", "nominal_resolution", "realm", diff --git a/CVs/input4MIPs_source_id.json b/CVs/input4MIPs_source_id.json index 524888c..b448d40 100644 --- a/CVs/input4MIPs_source_id.json +++ b/CVs/input4MIPs_source_id.json @@ -1,25 +1,103 @@ { "source_id":{ + "PCMDI-AMIP-1-1-0":{ + "comment":"Based on Hurrell SST/sea ice consistency criteria applied to merged HadISST v1.0 (1870-01 to 1981-10) & NCEP-0I2 v2.0 (1981-11 to 2015-12)", + "contact":"Paul J. Durack (durack1@llnl.gov; pauldurack@gmail.com); Karl E. Taylor (taylor13@llnl.gov); PCMDI (pcmdi-cmip@llnl.gov)", + "data_repo":"https://github.com/PCMDI/amipbcs", + "dataset_category":"SSTsAndSeaIce", + "doi":"10.22033/ESGF/input4MIPs.1120", + "further_info_url":"https://pcmdi.llnl.gov/mips/amip", + "grid":"1x1 degree longitude x latitude", + "grid_label":"gn", + "institution":"Program for Climate Model Diagnosis and Intercomparison, Lawrence Livermore National Laboratory, Livermore, CA 94550, USA (ROR: https://ror.org/02k3nmd98)", + "institution_id":"PCMDI", + "license_id":"CC BY 4.0", + "mip_era":"CMIP6", + "nominal_resolution":"1x1 degree", + "product":"observations", + "references_bcs":"Taylor, K.E., D. Williamson and F. Zwiers, 2000: The sea surface temperature and sea ice concentration boundary conditions for AMIP II simulations. PCMDI Report 60, Program for Climate Model Diagnosis and Intercomparison, Lawrence Livermore National Laboratory, 25 pp. Available online: https://pcmdi.llnl.gov/report/pdf/60.pdf", + "references_obs":"Hurrell, J. W., J. J. Hack, D. Shea, J. M. Caron, and J. Rosinski (2008) A New Sea Surface Temperature and Sea Ice Boundary Dataset for the Community Atmosphere Model. J. Climate, 22 (19), pp 5145-5153. doi: 10.1175/2008JCLI2292.1", + "region":[ + "global_ocean" + ], + "release_year":"2016", + "source":"PCMDI-AMIP 1.1.0: Merged SST based on UK MetOffice HadISST v1.0 and NCEP OI2 v2.0", + "source_description":"Sea surface temperature and sea-ice datasets produced by PCMDI (LLNL) for the AMIP (DECK) experiment of CMIP6", + "source_id":"PCMDI-AMIP-1-1-0", + "source_type":"satellite_blended", + "source_variables":[ + "areacello", + "sftof", + "siconc", + "siconcbcs", + "tos", + "tosbcs" + ], + "source_version":"1.1.0", + "target_mip":"CMIP", + "title":"PCMDI-AMIP 1.1.0 dataset prepared for input4MIPs" + }, + "PCMDI-AMIP-1-1-1":{ + "comment":"Based on Hurrell SST/sea ice consistency criteria applied to merged HadISST v1.0 (1870-01 to 1981-10) & NCEP-0I2 v2.0 (1981-11 to 2016-06)", + "contact":"Paul J. Durack (durack1@llnl.gov; pauldurack@gmail.com); Karl E. Taylor (taylor13@llnl.gov); PCMDI (pcmdi-cmip@llnl.gov)", + "data_repo":"https://github.com/PCMDI/amipbcs", + "dataset_category":"SSTsAndSeaIce", + "doi":"10.22033/ESGF/input4MIPs.1128", + "further_info_url":"https://pcmdi.llnl.gov/mips/amip", + "grid":"1x1 degree longitude x latitude", + "grid_label":"gn", + "institution":"Program for Climate Model Diagnosis and Intercomparison, Lawrence Livermore National Laboratory, Livermore, CA 94550, USA (ROR: https://ror.org/02k3nmd98)", + "institution_id":"PCMDI", + "license_id":"CC BY 4.0", + "mip_era":"CMIP6", + "nominal_resolution":"1x1 degree", + "product":"observations", + "references_bcs":"Taylor, K.E., D. Williamson and F. Zwiers, 2000: The sea surface temperature and sea ice concentration boundary conditions for AMIP II simulations. PCMDI Report 60, Program for Climate Model Diagnosis and Intercomparison, Lawrence Livermore National Laboratory, 25 pp. Available online: https://pcmdi.llnl.gov/report/pdf/60.pdf", + "references_obs":"Hurrell, J. W., J. J. Hack, D. Shea, J. M. Caron, and J. Rosinski (2008) A New Sea Surface Temperature and Sea Ice Boundary Dataset for the Community Atmosphere Model. J. Climate, 22 (19), pp 5145-5153. doi: 10.1175/2008JCLI2292.1", + "region":[ + "global_ocean" + ], + "release_year":"2016", + "source":"PCMDI-AMIP 1.1.1: Merged SST based on UK MetOffice HadISST v1.0 and NCEP OI2 v2.0", + "source_description":"Sea surface temperature and sea-ice datasets produced by PCMDI (LLNL) for the AMIP (DECK) experiment of CMIP6", + "source_id":"PCMDI-AMIP-1-1-1", + "source_type":"satellite_blended", + "source_variables":[ + "areacello", + "sftof", + "siconc", + "siconcbcs", + "tos", + "tosbcs" + ], + "source_version":"1.1.1", + "target_mip":"CMIP", + "title":"PCMDI-AMIP 1.1.1 dataset prepared for input4MIPs" + }, "PCMDI-AMIP-1-1-10":{ "calendar":"gregorian", - "comment":"Based on Hurrell SST/sea ice consistency criteria applied to merged HadISST (1870-01 to 1981-10) & NCEP-0I2 (1981-11 to 2022-12)", - "contact":"PCMDI (pcmdi-cmip@llnl.gov)", + "comment":"Based on Hurrell SST/sea ice consistency criteria applied to merged HadISST v1.0 (1870-01 to 1981-10) & NCEP-0I2 v2.0 (1981-11 to 2022-12)", + "contact":"Paul J. Durack (durack1@llnl.gov; pauldurack@gmail.com); Karl E. Taylor (taylor13@llnl.gov); PCMDI (pcmdi-cmip@llnl.gov)", + "data_repo":"https://github.com/PCMDI/amipbcs", + "data_update_notes":"v1.1.9 and v1.1.10 differences: this update changes a single month (Dec-22) erroneous sea ice concentration (siconc). Due to the tapering affect of the 'diddling' method, some very small changes (<1 percent) can be seen starting in August 2022 in diddled fields (siconcbcs). For v1.1.10 a climatology-anomaly infill was undertaken, replacing the Dec-22 problem values. For more details, see https://nbviewer.org/github/durack1/notebooks/blob/main/jlnbs/PCMDI-AMIP-queryOISST2-0Data.ipynb; There are no changes to either the SST (tos) or diddled SST (tosbcs) fields; NOAA OISST v2.0 data was deprecated in February 2023, and no further PCMDI-AMIP-1-x-y updates will be produced. Ongoing discussions focused on a v2.0 product continue, see https://github.com/PCMDI/amipbcs/issues/6.", "dataset_category":"SSTsAndSeaIce", + "doi":"10.25981/ESGF.input4MIPs.CMIP7/2575015", "further_info_url":"https://pcmdi.llnl.gov/mips/amip", "grid":"1x1 degree longitude x latitude", "grid_label":"gn", - "institution":"Program for Climate Model Diagnosis and Intercomparison, Lawrence Livermore National Laboratory, Livermore, CA 94550, USA", + "institution":"Program for Climate Model Diagnosis and Intercomparison, Lawrence Livermore National Laboratory, Livermore, CA 94550, USA (ROR: https://ror.org/02k3nmd98)", "institution_id":"PCMDI", - "license":"AMIP boundary condition data produced by PCMDI is licensed under a Creative Commons Attribution 4.0 International License (CC BY 4.0; https://creativecommons.org/licenses/by/4.0). Consult https://pcmdi.llnl.gov/CMIP6/TermsOfUse for terms of use governing input4MIPs output, including citation requirements and proper acknowledgment. Further information about this data, including some limitations, can be found via the further_info_url (recorded as a global attribute in this file). The data producers and data providers make no warranty, either express or implied, including, but not limited to, warranties of merchantability and fitness for a particular purpose. All liabilities arising from the supply of the information (including any liability arising in negligence) are excluded to the fullest extent permitted by law", + "license_id":"CC BY 4.0", "mip_era":"CMIP7", "nominal_resolution":"1x1 degree", "product":"observations", - "references":"Taylor, K.E., D. Williamson and F. Zwiers, 2000: The sea surface temperature and sea ice concentration boundary conditions for AMIP II simulations. PCMDI Report 60, Program for Climate Model Diagnosis and Intercomparison, Lawrence Livermore National Laboratory, 25 pp. Available online: https://pcmdi.llnl.gov/report/pdf/60.pdf", + "references_bcs":"Taylor, K.E., D. Williamson and F. Zwiers, 2000: The sea surface temperature and sea ice concentration boundary conditions for AMIP II simulations. PCMDI Report 60, Program for Climate Model Diagnosis and Intercomparison, Lawrence Livermore National Laboratory, 25 pp. Available online: https://pcmdi.llnl.gov/report/pdf/60.pdf", + "references_obs":"Hurrell, J. W., J. J. Hack, D. Shea, J. M. Caron, and J. Rosinski (2008) A New Sea Surface Temperature and Sea Ice Boundary Dataset for the Community Atmosphere Model. J. Climate, 22 (19), pp 5145-5153. doi: 10.1175/2008JCLI2292.1", "region":[ "global_ocean" ], "release_year":"2025", - "source":"PCMDI-AMIP 1.1.10: Merged SST based on UK MetOffice HadISST and NCEP OI2", + "source":"PCMDI-AMIP 1.1.10: Merged SST based on UK MetOffice HadISST v1.0 and NCEP OI2 v2.0", "source_description":"Sea surface temperature and sea-ice datasets produced by PCMDI (LLNL) for the AMIP (DECK) experiment of CMIP7", "source_id":"PCMDI-AMIP-1-1-10", "source_type":"satellite_blended", @@ -35,28 +113,102 @@ "target_mip":"CMIP", "title":"PCMDI-AMIP 1.1.10 dataset prepared for input4MIPs" }, + "PCMDI-AMIP-1-1-2":{ + "comment":"Based on Hurrell SST/sea ice consistency criteria applied to merged HadISST v1.0 (1870-01 to 1981-10) & NCEP-0I2 v2.0 (1981-11 to 2016-12)", + "contact":"Paul J. Durack (durack1@llnl.gov; pauldurack@gmail.com); Karl E. Taylor (taylor13@llnl.gov); PCMDI (pcmdi-cmip@llnl.gov)", + "data_repo":"https://github.com/PCMDI/amipbcs", + "dataset_category":"SSTsAndSeaIce", + "doi":"10.22033/ESGF/input4MIPs.1161", + "further_info_url":"https://pcmdi.llnl.gov/mips/amip", + "grid":"1x1 degree longitude x latitude", + "grid_label":"gn", + "institution":"Program for Climate Model Diagnosis and Intercomparison, Lawrence Livermore National Laboratory, Livermore, CA 94550, USA (ROR: https://ror.org/02k3nmd98)", + "institution_id":"PCMDI", + "license_id":"CC BY 4.0", + "mip_era":"CMIP6", + "nominal_resolution":"1x1 degree", + "product":"observations", + "references_bcs":"Taylor, K.E., D. Williamson and F. Zwiers, 2000: The sea surface temperature and sea ice concentration boundary conditions for AMIP II simulations. PCMDI Report 60, Program for Climate Model Diagnosis and Intercomparison, Lawrence Livermore National Laboratory, 25 pp. Available online: https://pcmdi.llnl.gov/report/pdf/60.pdf", + "references_obs":"Hurrell, J. W., J. J. Hack, D. Shea, J. M. Caron, and J. Rosinski (2008) A New Sea Surface Temperature and Sea Ice Boundary Dataset for the Community Atmosphere Model. J. Climate, 22 (19), pp 5145-5153. doi: 10.1175/2008JCLI2292.1", + "region":[ + "global_ocean" + ], + "release_year":"2017", + "source":"PCMDI-AMIP 1.1.2: Merged SST based on UK MetOffice HadISST v1.0 and NCEP OI2 v2.0", + "source_description":"Sea surface temperature and sea-ice datasets produced by PCMDI (LLNL) for the AMIP (DECK) experiment of CMIP6", + "source_id":"PCMDI-AMIP-1-1-2", + "source_type":"satellite_blended", + "source_variables":[ + "areacello", + "sftof", + "siconc", + "siconcbcs", + "tos", + "tosbcs" + ], + "source_version":"1.1.2", + "target_mip":"CMIP", + "title":"PCMDI-AMIP 1.1.2 dataset prepared for input4MIPs" + }, "PCMDI-AMIP-1-1-3":{ + "comment":"Based on Hurrell SST/sea ice consistency criteria applied to merged HadISST v1.0 (1870-01 to 1981-10) & NCEP-0I2 v2.0 (1981-11 to 2017-06)", + "contact":"Paul J. Durack (durack1@llnl.gov; pauldurack@gmail.com); Karl E. Taylor (taylor13@llnl.gov); PCMDI (pcmdi-cmip@llnl.gov)", + "data_repo":"https://github.com/PCMDI/amipbcs", + "dataset_category":"SSTsAndSeaIce", + "doi":"10.22033/ESGF/input4MIPs.1735", + "further_info_url":"https://pcmdi.llnl.gov/mips/amip", + "grid":"1x1 degree longitude x latitude", + "grid_label":"gn", + "institution":"Program for Climate Model Diagnosis and Intercomparison, Lawrence Livermore National Laboratory, Livermore, CA 94550, USA (ROR: https://ror.org/02k3nmd98)", + "institution_id":"PCMDI", + "license_id":"CC BY 4.0", "mip_era":"CMIP6", - "source":"PCMDI-AMIP 1.1.3: Merged SST based on UK MetOffice HadISST and NCEP OI2" + "nominal_resolution":"1x1 degree", + "product":"observations", + "references_bcs":"Taylor, K.E., D. Williamson and F. Zwiers, 2000: The sea surface temperature and sea ice concentration boundary conditions for AMIP II simulations. PCMDI Report 60, Program for Climate Model Diagnosis and Intercomparison, Lawrence Livermore National Laboratory, 25 pp. Available online: https://pcmdi.llnl.gov/report/pdf/60.pdf", + "references_obs":"Hurrell, J. W., J. J. Hack, D. Shea, J. M. Caron, and J. Rosinski (2008) A New Sea Surface Temperature and Sea Ice Boundary Dataset for the Community Atmosphere Model. J. Climate, 22 (19), pp 5145-5153. doi: 10.1175/2008JCLI2292.1", + "region":[ + "global_ocean" + ], + "release_year":"2017", + "source":"PCMDI-AMIP 1.1.3: Merged SST based on UK MetOffice HadISST v1.0 and NCEP OI2 v2.0", + "source_description":"Sea surface temperature and sea-ice datasets produced by PCMDI (LLNL) for the AMIP (DECK) experiment of CMIP6", + "source_id":"PCMDI-AMIP-1-1-3", + "source_type":"satellite_blended", + "source_variables":[ + "areacello", + "sftof", + "siconc", + "siconcbcs", + "tos", + "tosbcs" + ], + "source_version":"1.1.3", + "target_mip":"CMIP", + "title":"PCMDI-AMIP 1.1.3 dataset prepared for input4MIPs" }, "PCMDI-AMIP-1-1-4":{ - "comment":"Based on Hurrell SST/sea ice consistency criteria applied to merged HadISST (1870-01 to 1981-10) & NCEP-0I2 (1981-11 to 2017-12)", - "contact":"PCMDI (pcmdi-cmip@llnl.gov)", + "comment":"Based on Hurrell SST/sea ice consistency criteria applied to merged HadISST v1.0 (1870-01 to 1981-10) & NCEP-0I2 v2.0 (1981-11 to 2017-12)", + "contact":"Paul J. Durack (durack1@llnl.gov; pauldurack@gmail.com); Karl E. Taylor (taylor13@llnl.gov); PCMDI (pcmdi-cmip@llnl.gov)", + "data_repo":"https://github.com/PCMDI/amipbcs", "dataset_category":"SSTsAndSeaIce", + "doi":"10.22033/ESGF/input4MIPs.2204", "further_info_url":"https://pcmdi.llnl.gov/mips/amip", "grid":"1x1 degree longitude x latitude", "grid_label":"gn", - "institution":"Program for Climate Model Diagnosis and Intercomparison, Lawrence Livermore National Laboratory, Livermore, CA 94550, USA", + "institution":"Program for Climate Model Diagnosis and Intercomparison, Lawrence Livermore National Laboratory, Livermore, CA 94550, USA (ROR: https://ror.org/02k3nmd98)", "institution_id":"PCMDI", + "license_id":"CC BY 4.0", "mip_era":"CMIP6", "nominal_resolution":"1x1 degree", "product":"observations", - "references":"Taylor, K.E., D. Williamson and F. Zwiers, 2000: The sea surface temperature and sea ice concentration boundary conditions for AMIP II simulations. PCMDI Report 60, Program for Climate Model Diagnosis and Intercomparison, Lawrence Livermore National Laboratory, 25 pp. Available online: https://pcmdi.llnl.gov/report/pdf/60.pdf", + "references_bcs":"Taylor, K.E., D. Williamson and F. Zwiers, 2000: The sea surface temperature and sea ice concentration boundary conditions for AMIP II simulations. PCMDI Report 60, Program for Climate Model Diagnosis and Intercomparison, Lawrence Livermore National Laboratory, 25 pp. Available online: https://pcmdi.llnl.gov/report/pdf/60.pdf", + "references_obs":"Hurrell, J. W., J. J. Hack, D. Shea, J. M. Caron, and J. Rosinski (2008) A New Sea Surface Temperature and Sea Ice Boundary Dataset for the Community Atmosphere Model. J. Climate, 22 (19), pp 5145-5153. doi: 10.1175/2008JCLI2292.1", "region":[ "global_ocean" ], "release_year":"2018", - "source":"PCMDI-AMIP 1.1.4: Merged SST based on UK MetOffice HadISST and NCEP OI2", + "source":"PCMDI-AMIP 1.1.4: Merged SST based on UK MetOffice HadISST v1.0 and NCEP OI2 v2.0", "source_description":"Sea surface temperature and sea-ice datasets produced by PCMDI (LLNL) for the AMIP (DECK) experiment of CMIP6", "source_id":"PCMDI-AMIP-1-1-4", "source_type":"satellite_blended", @@ -73,23 +225,27 @@ "title":"PCMDI-AMIP 1.1.4 dataset prepared for input4MIPs" }, "PCMDI-AMIP-1-1-5":{ - "comment":"Based on Hurrell SST/sea ice consistency criteria applied to merged HadISST (1870-01 to 1981-10) & NCEP-0I2 (1981-11 to 2018-06)", - "contact":"PCMDI (pcmdi-cmip@llnl.gov)", + "comment":"Based on Hurrell SST/sea ice consistency criteria applied to merged HadISST v1.0 (1870-01 to 1981-10) & NCEP-0I2 v2.0 (1981-11 to 2018-06)", + "contact":"Paul J. Durack (durack1@llnl.gov; pauldurack@gmail.com); Karl E. Taylor (taylor13@llnl.gov); PCMDI (pcmdi-cmip@llnl.gov)", + "data_repo":"https://github.com/PCMDI/amipbcs", "dataset_category":"SSTsAndSeaIce", + "doi":"10.22033/ESGF/input4MIPs.9942", "further_info_url":"https://pcmdi.llnl.gov/mips/amip", "grid":"1x1 degree longitude x latitude", "grid_label":"gn", - "institution":"Program for Climate Model Diagnosis and Intercomparison, Lawrence Livermore National Laboratory, Livermore, CA 94550, USA", + "institution":"Program for Climate Model Diagnosis and Intercomparison, Lawrence Livermore National Laboratory, Livermore, CA 94550, USA (ROR: https://ror.org/02k3nmd98)", "institution_id":"PCMDI", + "license_id":"CC BY 4.0", "mip_era":"CMIP6", "nominal_resolution":"1x1 degree", "product":"observations", - "references":"Taylor, K.E., D. Williamson and F. Zwiers, 2000: The sea surface temperature and sea ice concentration boundary conditions for AMIP II simulations. PCMDI Report 60, Program for Climate Model Diagnosis and Intercomparison, Lawrence Livermore National Laboratory, 25 pp. Available online: https://pcmdi.llnl.gov/report/pdf/60.pdf", + "references_bcs":"Taylor, K.E., D. Williamson and F. Zwiers, 2000: The sea surface temperature and sea ice concentration boundary conditions for AMIP II simulations. PCMDI Report 60, Program for Climate Model Diagnosis and Intercomparison, Lawrence Livermore National Laboratory, 25 pp. Available online: https://pcmdi.llnl.gov/report/pdf/60.pdf", + "references_obs":"Hurrell, J. W., J. J. Hack, D. Shea, J. M. Caron, and J. Rosinski (2008) A New Sea Surface Temperature and Sea Ice Boundary Dataset for the Community Atmosphere Model. J. Climate, 22 (19), pp 5145-5153. doi: 10.1175/2008JCLI2292.1", "region":[ "global_ocean" ], "release_year":"2018", - "source":"PCMDI-AMIP 1.1.5: Merged SST based on UK MetOffice HadISST and NCEP OI2", + "source":"PCMDI-AMIP 1.1.5: Merged SST based on UK MetOffice HadISST v1.0 and NCEP OI2 v2.0", "source_description":"Sea surface temperature and sea-ice datasets produced by PCMDI (LLNL) for the AMIP (DECK) experiment of CMIP6", "source_id":"PCMDI-AMIP-1-1-5", "source_type":"satellite_blended", @@ -106,23 +262,27 @@ "title":"PCMDI-AMIP 1.1.5 dataset prepared for input4MIPs" }, "PCMDI-AMIP-1-1-6":{ - "comment":"Based on Hurrell SST/sea ice consistency criteria applied to merged HadISST (1870-01 to 1981-10) & NCEP-0I2 (1981-11 to 2018-12)", - "contact":"PCMDI (pcmdi-cmip@llnl.gov)", + "comment":"Based on Hurrell SST/sea ice consistency criteria applied to merged HadISST v1.0 (1870-01 to 1981-10) & NCEP-0I2 v2.0 (1981-11 to 2018-12)", + "contact":"Paul J. Durack (durack1@llnl.gov; pauldurack@gmail.com); Karl E. Taylor (taylor13@llnl.gov); PCMDI (pcmdi-cmip@llnl.gov)", + "data_repo":"https://github.com/PCMDI/amipbcs", "dataset_category":"SSTsAndSeaIce", + "doi":"10.22033/ESGF/input4MIPs.12381", "further_info_url":"https://pcmdi.llnl.gov/mips/amip", "grid":"1x1 degree longitude x latitude", "grid_label":"gn", - "institution":"Program for Climate Model Diagnosis and Intercomparison, Lawrence Livermore National Laboratory, Livermore, CA 94550, USA", + "institution":"Program for Climate Model Diagnosis and Intercomparison, Lawrence Livermore National Laboratory, Livermore, CA 94550, USA (ROR: https://ror.org/02k3nmd98)", "institution_id":"PCMDI", + "license_id":"CC BY 4.0", "mip_era":"CMIP6", "nominal_resolution":"1x1 degree", "product":"observations", - "references":"Taylor, K.E., D. Williamson and F. Zwiers, 2000: The sea surface temperature and sea ice concentration boundary conditions for AMIP II simulations. PCMDI Report 60, Program for Climate Model Diagnosis and Intercomparison, Lawrence Livermore National Laboratory, 25 pp. Available online: https://pcmdi.llnl.gov/report/pdf/60.pdf", + "references_bcs":"Taylor, K.E., D. Williamson and F. Zwiers, 2000: The sea surface temperature and sea ice concentration boundary conditions for AMIP II simulations. PCMDI Report 60, Program for Climate Model Diagnosis and Intercomparison, Lawrence Livermore National Laboratory, 25 pp. Available online: https://pcmdi.llnl.gov/report/pdf/60.pdf", + "references_obs":"Hurrell, J. W., J. J. Hack, D. Shea, J. M. Caron, and J. Rosinski (2008) A New Sea Surface Temperature and Sea Ice Boundary Dataset for the Community Atmosphere Model. J. Climate, 22 (19), pp 5145-5153. doi: 10.1175/2008JCLI2292.1", "region":[ "global_ocean" ], "release_year":"2019", - "source":"PCMDI-AMIP 1.1.6: Merged SST based on UK MetOffice HadISST and NCEP OI2", + "source":"PCMDI-AMIP 1.1.6: Merged SST based on UK MetOffice HadISST v1.0 and NCEP OI2 v2.0", "source_description":"Sea surface temperature and sea-ice datasets produced by PCMDI (LLNL) for the AMIP (DECK) experiment of CMIP6", "source_id":"PCMDI-AMIP-1-1-6", "source_type":"satellite_blended", @@ -140,23 +300,27 @@ }, "PCMDI-AMIP-1-1-7":{ "calendar":"gregorian", - "comment":"Based on Hurrell SST/sea ice consistency criteria applied to merged HadISST (1870-01 to 1981-10) & NCEP-0I2 (1981-11 to 2021-06)", - "contact":"PCMDI (pcmdi-cmip@llnl.gov)", + "comment":"Based on Hurrell SST/sea ice consistency criteria applied to merged HadISST v1.0 (1870-01 to 1981-10) & NCEP-0I2 v2.0 (1981-11 to 2021-06)", + "contact":"Paul J. Durack (durack1@llnl.gov; pauldurack@gmail.com); Karl E. Taylor (taylor13@llnl.gov); PCMDI (pcmdi-cmip@llnl.gov)", + "data_repo":"https://github.com/PCMDI/amipbcs", "dataset_category":"SSTsAndSeaIce", + "doi":"10.22033/ESGF/input4MIPs.16485", "further_info_url":"https://pcmdi.llnl.gov/mips/amip", "grid":"1x1 degree longitude x latitude", "grid_label":"gn", - "institution":"Program for Climate Model Diagnosis and Intercomparison, Lawrence Livermore National Laboratory, Livermore, CA 94550, USA", + "institution":"Program for Climate Model Diagnosis and Intercomparison, Lawrence Livermore National Laboratory, Livermore, CA 94550, USA (ROR: https://ror.org/02k3nmd98)", "institution_id":"PCMDI", + "license_id":"CC BY 4.0", "mip_era":"CMIP6", "nominal_resolution":"1x1 degree", "product":"observations", - "references":"Taylor, K.E., D. Williamson and F. Zwiers, 2000: The sea surface temperature and sea ice concentration boundary conditions for AMIP II simulations. PCMDI Report 60, Program for Climate Model Diagnosis and Intercomparison, Lawrence Livermore National Laboratory, 25 pp. Available online: https://pcmdi.llnl.gov/report/pdf/60.pdf", + "references_bcs":"Taylor, K.E., D. Williamson and F. Zwiers, 2000: The sea surface temperature and sea ice concentration boundary conditions for AMIP II simulations. PCMDI Report 60, Program for Climate Model Diagnosis and Intercomparison, Lawrence Livermore National Laboratory, 25 pp. Available online: https://pcmdi.llnl.gov/report/pdf/60.pdf", + "references_obs":"Hurrell, J. W., J. J. Hack, D. Shea, J. M. Caron, and J. Rosinski (2008) A New Sea Surface Temperature and Sea Ice Boundary Dataset for the Community Atmosphere Model. J. Climate, 22 (19), pp 5145-5153. doi: 10.1175/2008JCLI2292.1", "region":[ "global_ocean" ], "release_year":"2022", - "source":"PCMDI-AMIP 1.1.7: Merged SST based on UK MetOffice HadISST and NCEP OI2", + "source":"PCMDI-AMIP 1.1.7: Merged SST based on UK MetOffice HadISST v1.0 and NCEP OI2 v2.0", "source_description":"Sea surface temperature and sea-ice datasets produced by PCMDI (LLNL) for the AMIP (DECK) experiment of CMIP6", "source_id":"PCMDI-AMIP-1-1-7", "source_type":"satellite_blended", @@ -174,24 +338,27 @@ }, "PCMDI-AMIP-1-1-8":{ "calendar":"gregorian", - "comment":"Based on Hurrell SST/sea ice consistency criteria applied to merged HadISST (1870-01 to 1981-10) & NCEP-0I2 (1981-11 to 2021-12)", - "contact":"PCMDI (pcmdi-cmip@llnl.gov)", + "comment":"Based on Hurrell SST/sea ice consistency criteria applied to merged HadISST v1.0 (1870-01 to 1981-10) & NCEP-0I2 v2.0 (1981-11 to 2021-12)", + "contact":"Paul J. Durack (durack1@llnl.gov; pauldurack@gmail.com); Karl E. Taylor (taylor13@llnl.gov); PCMDI (pcmdi-cmip@llnl.gov)", + "data_repo":"https://github.com/PCMDI/amipbcs", "dataset_category":"SSTsAndSeaIce", + "doi":"10.22033/ESGF/input4MIPs.16921", "further_info_url":"https://pcmdi.llnl.gov/mips/amip", "grid":"1x1 degree longitude x latitude", "grid_label":"gn", - "institution":"Program for Climate Model Diagnosis and Intercomparison, Lawrence Livermore National Laboratory, Livermore, CA 94550, USA", + "institution":"Program for Climate Model Diagnosis and Intercomparison, Lawrence Livermore National Laboratory, Livermore, CA 94550, USA (ROR: https://ror.org/02k3nmd98)", "institution_id":"PCMDI", - "license":"AMIP boundary condition data produced by PCMDI is licensed under a Creative Commons Attribution 4.0 International License (CC BY 4.0; https://creativecommons.org/licenses/by/4.0). Consult https://pcmdi.llnl.gov/CMIP6/TermsOfUse for terms of use governing input4MIPs output, including citation requirements and proper acknowledgment. Further information about this data, including some limitations, can be found via the further_info_url (recorded as a global attribute in this file). The data producers and data providers make no warranty, either express or implied, including, but not limited to, warranties of merchantability and fitness for a particular purpose. All liabilities arising from the supply of the information (including any liability arising in negligence) are excluded to the fullest extent permitted by law", + "license_id":"CC BY 4.0", "mip_era":"CMIP6", "nominal_resolution":"1x1 degree", "product":"observations", - "references":"Taylor, K.E., D. Williamson and F. Zwiers, 2000: The sea surface temperature and sea ice concentration boundary conditions for AMIP II simulations. PCMDI Report 60, Program for Climate Model Diagnosis and Intercomparison, Lawrence Livermore National Laboratory, 25 pp. Available online: https://pcmdi.llnl.gov/report/pdf/60.pdf", + "references_bcs":"Taylor, K.E., D. Williamson and F. Zwiers, 2000: The sea surface temperature and sea ice concentration boundary conditions for AMIP II simulations. PCMDI Report 60, Program for Climate Model Diagnosis and Intercomparison, Lawrence Livermore National Laboratory, 25 pp. Available online: https://pcmdi.llnl.gov/report/pdf/60.pdf", + "references_obs":"Hurrell, J. W., J. J. Hack, D. Shea, J. M. Caron, and J. Rosinski (2008) A New Sea Surface Temperature and Sea Ice Boundary Dataset for the Community Atmosphere Model. J. Climate, 22 (19), pp 5145-5153. doi: 10.1175/2008JCLI2292.1", "region":[ "global_ocean" ], "release_year":"2022", - "source":"PCMDI-AMIP 1.1.8: Merged SST based on UK MetOffice HadISST and NCEP OI2", + "source":"PCMDI-AMIP 1.1.8: Merged SST based on UK MetOffice HadISST v1.0 and NCEP OI2 v2.0", "source_description":"Sea surface temperature and sea-ice datasets produced by PCMDI (LLNL) for the AMIP (DECK) experiment of CMIP6", "source_id":"PCMDI-AMIP-1-1-8", "source_type":"satellite_blended", @@ -209,24 +376,27 @@ }, "PCMDI-AMIP-1-1-9":{ "calendar":"gregorian", - "comment":"Based on Hurrell SST/sea ice consistency criteria applied to merged HadISST (1870-01 to 1981-10) & NCEP-0I2 (1981-11 to 2022-12)", - "contact":"PCMDI (pcmdi-cmip@llnl.gov)", + "comment":"Based on Hurrell SST/sea ice consistency criteria applied to merged HadISST v1.0 (1870-01 to 1981-10) & NCEP-0I2 v2.0 (1981-11 to 2022-12)", + "contact":"Paul J. Durack (durack1@llnl.gov; pauldurack@gmail.com); Karl E. Taylor (taylor13@llnl.gov); PCMDI (pcmdi-cmip@llnl.gov)", + "data_repo":"https://github.com/PCMDI/amipbcs", "dataset_category":"SSTsAndSeaIce", + "doi":"10.25981/ESGF.input4MIPs.CMIP6Plus/2583903", "further_info_url":"https://pcmdi.llnl.gov/mips/amip", "grid":"1x1 degree longitude x latitude", "grid_label":"gn", - "institution":"Program for Climate Model Diagnosis and Intercomparison, Lawrence Livermore National Laboratory, Livermore, CA 94550, USA", + "institution":"Program for Climate Model Diagnosis and Intercomparison, Lawrence Livermore National Laboratory, Livermore, CA 94550, USA (ROR: https://ror.org/02k3nmd98)", "institution_id":"PCMDI", - "license":"AMIP boundary condition data produced by PCMDI is licensed under a Creative Commons Attribution 4.0 International License (CC BY 4.0; https://creativecommons.org/licenses/by/4.0). Consult https://pcmdi.llnl.gov/CMIP6/TermsOfUse for terms of use governing input4MIPs output, including citation requirements and proper acknowledgment. Further information about this data, including some limitations, can be found via the further_info_url (recorded as a global attribute in this file). The data producers and data providers make no warranty, either express or implied, including, but not limited to, warranties of merchantability and fitness for a particular purpose. All liabilities arising from the supply of the information (including any liability arising in negligence) are excluded to the fullest extent permitted by law", + "license_id":"CC BY 4.0", "mip_era":"CMIP7", "nominal_resolution":"1x1 degree", "product":"observations", - "references":"Taylor, K.E., D. Williamson and F. Zwiers, 2000: The sea surface temperature and sea ice concentration boundary conditions for AMIP II simulations. PCMDI Report 60, Program for Climate Model Diagnosis and Intercomparison, Lawrence Livermore National Laboratory, 25 pp. Available online: https://pcmdi.llnl.gov/report/pdf/60.pdf", + "references_bcs":"Taylor, K.E., D. Williamson and F. Zwiers, 2000: The sea surface temperature and sea ice concentration boundary conditions for AMIP II simulations. PCMDI Report 60, Program for Climate Model Diagnosis and Intercomparison, Lawrence Livermore National Laboratory, 25 pp. Available online: https://pcmdi.llnl.gov/report/pdf/60.pdf", + "references_obs":"Hurrell, J. W., J. J. Hack, D. Shea, J. M. Caron, and J. Rosinski (2008) A New Sea Surface Temperature and Sea Ice Boundary Dataset for the Community Atmosphere Model. J. Climate, 22 (19), pp 5145-5153. doi: 10.1175/2008JCLI2292.1", "region":[ "global_ocean" ], "release_year":"2025", - "source":"PCMDI-AMIP 1.1.10: Merged SST based on UK MetOffice HadISST and NCEP OI2", + "source":"PCMDI-AMIP 1.1.9: Merged SST based on UK MetOffice HadISST v1.0 and NCEP OI2 v2.0", "source_description":"Sea surface temperature and sea-ice datasets produced by PCMDI (LLNL) for the AMIP (DECK) experiment of CMIP7", "source_id":"PCMDI-AMIP-1-1-10", "source_type":"satellite_blended", @@ -241,6 +411,111 @@ "source_version":"1.1.10", "target_mip":"CMIP", "title":"PCMDI-AMIP 1.1.10 dataset prepared for input4MIPs" + }, + "PCMDI-AMIP-ERSST5-1-0":{ + "calendar":"gregorian", + "comment":"Based on Hurrell SST/sea ice consistency criteria applied to merged HadISST v1.0 (1870-01 to 1981-10) & NCEP-0ISST v2.0 (1981-11 to 2022-12) and overwritten with ERSST v5.0 data where present (1870-01 to 2022-12)", + "contact":"Paul J. Durack (durack1@llnl.gov; pauldurack@gmail.com); Mark D. Zelinka (zelinka1@llnl.gov); PCMDI (pcmdi-cmip@llnl.gov)", + "data_repo":"https://github.com/PCMDI/amipbcs", + "dataset_category":"SSTsAndSeaIce", + "doi":"10.25981/ESGF.input4MIPs.CMIP7Plus/2584105", + "further_info_url":"https://pcmdi.llnl.gov/mips/amip", + "grid":"1x1 degree longitude x latitude", + "grid_label":"gn", + "institution":"Program for Climate Model Diagnosis and Intercomparison, Lawrence Livermore National Laboratory, Livermore, CA 94550, USA (ROR: https://ror.org/02k3nmd98)", + "institution_id":"PCMDI", + "license_id":"CC BY 4.0", + "mip_era":"CMIP7Plus", + "mip_specs":"AMIP CMIP5 CMIP6 CMIP6Plus CMIP7 CMIP7Plus", + "nominal_resolution":"1x1 degree", + "product":"observations", + "references_bcs":"Taylor, K.E., D. Williamson and F. Zwiers, 2000: The sea surface temperature and sea ice concentration boundary conditions for AMIP II simulations. PCMDI Report 60, Program for Climate Model Diagnosis and Intercomparison, Lawrence Livermore National Laboratory, 25 pp. Available online: https://pcmdi.llnl.gov/report/pdf/60.pdf", + "references_obs":"Hurrell, J. W., J. J. Hack, D. Shea, J. M. Caron, and J. Rosinski (2008) A New Sea Surface Temperature and Sea Ice Boundary Dataset for the Community Atmosphere Model. J. Climate, 22 (19), pp 5145-5153. doi: 10.1175/2008JCLI2292.1", + "region":[ + "global_ocean" + ], + "release_year":"2025", + "source":"PCMDI-AMIP ERSST5 1.0: Merged SST based on UK MetOffice HadISST v1.0 and NCEP OI2 v2.0. SST values are overwritten with ERSST v5.0 data where present", + "source_description":"Sea surface temperature datasets produced by PCMDI (LLNL) for the AMIP (DECK) experiment of CMIP7Plus - prototype data for quantifying forcing uncertainty", + "source_id":"PCMDI-AMIP-ERSST5-1-0", + "source_type":"satellite_blended", + "source_variables":[ + "tos", + "tosbcs" + ], + "source_version":"1.0", + "target_mip":"CMIP", + "title":"PCMDI-AMIP ERSST5 1.0 dataset prepared for input4MIPs" + }, + "PCMDI-AMIP-Had1p1-1-0":{ + "calendar":"gregorian", + "comment":"Based on Hurrell SST/sea ice consistency criteria applied to merged HadISST v1.0 (1870-01 to 1981-10) & NCEP-0ISST v2.0 (1981-11 to 2022-12) and overwritten with HadISST v1.1 data where present (1870-01 to 2022-12)", + "contact":"Paul J. Durack (durack1@llnl.gov; pauldurack@gmail.com); Mark D. Zelinka (zelinka1@llnl.gov); PCMDI (pcmdi-cmip@llnl.gov)", + "data_repo":"https://github.com/PCMDI/amipbcs", + "dataset_category":"SSTsAndSeaIce", + "doi":"10.25981/ESGF.input4MIPs.CMIP7Plus/2584106", + "further_info_url":"https://pcmdi.llnl.gov/mips/amip", + "grid":"1x1 degree longitude x latitude", + "grid_label":"gn", + "institution":"Program for Climate Model Diagnosis and Intercomparison, Lawrence Livermore National Laboratory, Livermore, CA 94550, USA (ROR: https://ror.org/02k3nmd98)", + "institution_id":"PCMDI", + "license_id":"CC BY 4.0", + "mip_era":"CMIP7Plus", + "mip_specs":"AMIP CMIP5 CMIP6 CMIP6Plus CMIP7 CMIP7Plus", + "nominal_resolution":"1x1 degree", + "product":"observations", + "references_bcs":"Taylor, K.E., D. Williamson and F. Zwiers, 2000: The sea surface temperature and sea ice concentration boundary conditions for AMIP II simulations. PCMDI Report 60, Program for Climate Model Diagnosis and Intercomparison, Lawrence Livermore National Laboratory, 25 pp. Available online: https://pcmdi.llnl.gov/report/pdf/60.pdf", + "references_obs":"Hurrell, J. W., J. J. Hack, D. Shea, J. M. Caron, and J. Rosinski (2008) A New Sea Surface Temperature and Sea Ice Boundary Dataset for the Community Atmosphere Model. J. Climate, 22 (19), pp 5145-5153. doi: 10.1175/2008JCLI2292.1", + "region":[ + "global_ocean" + ], + "release_year":"2025", + "source":"PCMDI-AMIP HadISST1p1 1.0: Merged SST based on UK MetOffice HadISST v1.0 and NCEP OI2 v2.0. SST values are overwritten with HadISST v1.1 data where present", + "source_description":"Sea surface temperature datasets produced by PCMDI (LLNL) for the AMIP (DECK) experiment of CMIP7Plus - prototype data for quantifying forcing uncertainty", + "source_id":"PCMDI-AMIP-Had1p1-1-0", + "source_type":"satellite_blended", + "source_variables":[ + "tos", + "tosbcs" + ], + "source_version":"1.0", + "target_mip":"CMIP", + "title":"PCMDI-AMIP Had1p1 1.0 dataset prepared for input4MIPs" + }, + "PCMDI-AMIP-OI2p1-1-0":{ + "calendar":"gregorian", + "comment":"Based on Hurrell SST/sea ice consistency criteria applied to merged HadISST v1.0 (1870-01 to 1981-10) & NCEP-0ISST v2.0 (1981-11 to 2022-12) and overwritten with NCEP-OISST v2.1 data where present (1981-09 to 2022-12)", + "contact":"Paul J. Durack (durack1@llnl.gov; pauldurack@gmail.com); Mark D. Zelinka (zelinka1@llnl.gov); PCMDI (pcmdi-cmip@llnl.gov)", + "data_repo":"https://github.com/PCMDI/amipbcs", + "dataset_category":"SSTsAndSeaIce", + "doi":"10.25981/ESGF.input4MIPs.CMIP7Plus/2584107", + "further_info_url":"https://pcmdi.llnl.gov/mips/amip", + "grid":"1x1 degree longitude x latitude", + "grid_label":"gn", + "institution":"Program for Climate Model Diagnosis and Intercomparison, Lawrence Livermore National Laboratory, Livermore, CA 94550, USA (ROR: https://ror.org/02k3nmd98)", + "institution_id":"PCMDI", + "license_id":"CC BY 4.0", + "mip_era":"CMIP7Plus", + "mip_specs":"AMIP CMIP5 CMIP6 CMIP6Plus CMIP7 CMIP7Plus", + "nominal_resolution":"1x1 degree", + "product":"observations", + "references_bcs":"Taylor, K.E., D. Williamson and F. Zwiers, 2000: The sea surface temperature and sea ice concentration boundary conditions for AMIP II simulations. PCMDI Report 60, Program for Climate Model Diagnosis and Intercomparison, Lawrence Livermore National Laboratory, 25 pp. Available online: https://pcmdi.llnl.gov/report/pdf/60.pdf", + "references_obs":"Hurrell, J. W., J. J. Hack, D. Shea, J. M. Caron, and J. Rosinski (2008) A New Sea Surface Temperature and Sea Ice Boundary Dataset for the Community Atmosphere Model. J. Climate, 22 (19), pp 5145-5153. doi: 10.1175/2008JCLI2292.1", + "region":[ + "global_ocean" + ], + "release_year":"2025", + "source":"PCMDI-AMIP OISST2p1 1.0: Merged SST based on UK MetOffice HadISST v1.0 and NCEP OI2 v2.0. SST values are overwritten with NCEP OI2p1 v2.1 data where present", + "source_description":"Sea surface temperature datasets produced by PCMDI (LLNL) for the AMIP (DECK) experiment of CMIP7Plus - prototype data for quantifying forcing uncertainty", + "source_id":"PCMDI-AMIP-OI2p1-1-0", + "source_type":"satellite_blended", + "source_variables":[ + "tos", + "tosbcs" + ], + "source_version":"1.0", + "target_mip":"CMIP", + "title":"PCMDI-AMIP OI2p1 1.0 dataset prepared for input4MIPs" } } } \ No newline at end of file diff --git a/SST_1-1-9-release/230503.tar.bz2 b/SST_1-1-9-release/230503.tar.bz2 deleted file mode 100644 index 71dc79a..0000000 Binary files a/SST_1-1-9-release/230503.tar.bz2 and /dev/null differ diff --git a/SST_1-1-9-release/230503_log.txt b/SST_1-1-9-release/230503_log.txt deleted file mode 100644 index 063ae34..0000000 --- a/SST_1-1-9-release/230503_log.txt +++ /dev/null @@ -1,21 +0,0 @@ -2023-05-03 11:01:14 URL: ftp://ftp.cpc.ncep.noaa.gov/precip/PORT/sst/oimonth_v2/ [3302] -> ".listing" [1] -2023-05-03 11:01:14 URL: ftp://ftp.cpc.ncep.noaa.gov/precip/PORT/sst/oimonth_v2/oiv2mon.202301.gz [197648] -> "oiv2mon.202301.gz" [1] -FINISHED --2023-05-03 11:01:14-- -Total wall clock time: 1.9s -Downloaded: 1 files, 193K in 0.3s (682 KB/s) -2023-05-03 11:01:15 URL: ftp://ftp.cpc.ncep.noaa.gov/precip/PORT/sst/oimonth_v2/ [3302] -> ".listing" [1] -2023-05-03 11:01:16 URL: ftp://ftp.cpc.ncep.noaa.gov/precip/PORT/sst/oimonth_v2/oiv2mon.202201.gz [197350] -> "oiv2mon.202201.gz" [1] -2023-05-03 11:01:16 URL: ftp://ftp.cpc.ncep.noaa.gov/precip/PORT/sst/oimonth_v2/oiv2mon.202202.gz [195449] -> "oiv2mon.202202.gz" [1] -2023-05-03 11:01:17 URL: ftp://ftp.cpc.ncep.noaa.gov/precip/PORT/sst/oimonth_v2/oiv2mon.202203.gz [196505] -> "oiv2mon.202203.gz" [1] -2023-05-03 11:01:18 URL: ftp://ftp.cpc.ncep.noaa.gov/precip/PORT/sst/oimonth_v2/oiv2mon.202204.gz [196248] -> "oiv2mon.202204.gz" [1] -2023-05-03 11:01:18 URL: ftp://ftp.cpc.ncep.noaa.gov/precip/PORT/sst/oimonth_v2/oiv2mon.202205.gz [196443] -> "oiv2mon.202205.gz" [1] -2023-05-03 11:01:19 URL: ftp://ftp.cpc.ncep.noaa.gov/precip/PORT/sst/oimonth_v2/oiv2mon.202206.gz [197521] -> "oiv2mon.202206.gz" [1] -2023-05-03 11:01:20 URL: ftp://ftp.cpc.ncep.noaa.gov/precip/PORT/sst/oimonth_v2/oiv2mon.202207.gz [196986] -> "oiv2mon.202207.gz" [1] -2023-05-03 11:01:20 URL: ftp://ftp.cpc.ncep.noaa.gov/precip/PORT/sst/oimonth_v2/oiv2mon.202208.gz [196787] -> "oiv2mon.202208.gz" [1] -2023-05-03 11:01:21 URL: ftp://ftp.cpc.ncep.noaa.gov/precip/PORT/sst/oimonth_v2/oiv2mon.202209.gz [196653] -> "oiv2mon.202209.gz" [1] -2023-05-03 11:01:21 URL: ftp://ftp.cpc.ncep.noaa.gov/precip/PORT/sst/oimonth_v2/oiv2mon.202210.gz [197653] -> "oiv2mon.202210.gz" [1] -2023-05-03 11:01:22 URL: ftp://ftp.cpc.ncep.noaa.gov/precip/PORT/sst/oimonth_v2/oiv2mon.202211.gz [198409] -> "oiv2mon.202211.gz" [1] -2023-05-03 11:01:23 URL: ftp://ftp.cpc.ncep.noaa.gov/precip/PORT/sst/oimonth_v2/oiv2mon.202212.gz [198594] -> "oiv2mon.202212.gz" [1] -FINISHED --2023-05-03 11:01:23-- -Total wall clock time: 8.5s -Downloaded: 12 files, 2.3M in 4.3s (536 KB/s) diff --git a/SST_1-1-9-release/SSTICE.Update.unf.csh b/SST_1-1-9-release/SSTICE.Update.unf.csh deleted file mode 100755 index c4092cf..0000000 --- a/SST_1-1-9-release/SSTICE.Update.unf.csh +++ /dev/null @@ -1,1074 +0,0 @@ -#!/bin/csh - -set date=`date +%y%m%d` ; # Set date for dynamic run -echo $date -### setenv NCARG_ROOT and PATH - SET IN download.sh -#setenv NCARG_ROOT /home/durack1/anaconda3/envs/amipbcs210727 -#setenv PATH /home/durack1/anaconda3/envs/amipbcs210727/bin:${PATH} ; # Add wrapit77, ncl, nco to PATH - -# This creates the files like -# MODEL.OI2.ice.mnly.yyyymm-YYYYMM.unf.nc -# MODEL.OI2.sst.mnly.yyyymm-YYYYMM.unf.nc -# ==============================NCL==================================== - -cat >! main.ncl << "END_MAIN_NCL" -;; Not needed from 6.2 onwarded -;;load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_code.ncl" -;;load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_csm.ncl" -;;load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/contributed.ncl" - -procedure linInterpFlip( X, nPass, NX, NY, endPt) -; source: coast_land_NearNbor_bilin.ncl -; modified to take 0.5 to 359.5 as input -; use loop to minimize memory -local np, y, nMSG, nt, nx, ny, dimX, ntim -begin - nx = NX - ny = NY - - dimX = dimsizes(X) - ntim = dimX(0) - do nt=0,ntim-1 - x = lonFlip( X(nt,:,:) ) - do np=1,nPass - x = linmsg(x, (/endPt, nx/)) ; interpolate in longitude - if (ny.gt.0) then ; interpolate in y - y = x(lon|:,lat|:) ; reorder for interpolation - y = linmsg(y, (/endPt,ny/)) - - x = y(lat|:,lon|:) ; reorder to original - end if - - nx = nx + 10 ; expand the number of pts - if (np.gt.4) then - ny = ny + 3 - end if - end do - X(nt,:,:) = (/ lonFlip(x) /) - end do - - nMSG = num(ismissing(X)) - print("****************************") - print("linInterpFlip: nMSG="+nMSG) - print("****************************") - if (nMSG.ne.0) then - printVarSummary(X) - do nt=0,ntim-1 - nMSG = num(ismissing(X(nt,:,:))) - if (nMSG.ne.0) then - print("nt="+nt+" nMSG="+nMSG ) - end if - end do - exit - end if -end - -external SSTICE "./sstice.so" -external JIMH "./consistent.so" -external NEAR_NEIGHBOR "./coast_land_NearNbor.so" - -begin ; MAIN NCL DRIVER - netCDF = True - DEBUG = False - PRNT_DEBUG = True - PLOT_DEBUG = False - PLOT_TYPE = "ps" - ; main input directory - ;diri = "/ptmp/shea/SSTICE/NEW_SST/" - ;diro = "/ptmp/shea/SSTICE/" - ;dirm = "/cgd/cas/shea/JHURRELL/" ; mask ... not used - ;diri = "/project/cas/shea/SSTICE/SST_NEW/" - ;diro = "/project/cas/shea/SSTICE/" - ;dirm = "/project/cas/shea/SSTICE/" ; mask ... not used - ;diri = "/work/durack1/Shared/150219_AMIPForcingData/SST_NEW/$date/" - - ;###### PATHS: REQUIRES UPDATING ## - diri = "/p/user_pub/climate_work/durack1/Shared/150219_AMIPForcingData/SST_1-1-9/230503/" ; ## UPDATE : REQUIRES UPDATING ## - diro = "/p/user_pub/climate_work/durack1/Shared/150219_AMIPForcingData/SST_1-1-9/" ; ## UPDATE : REQUIRES UPDATING ## - dirm = "/p/user_pub/climate_work/durack1/Shared/150219_AMIPForcingData/SST_1-1-9/" ; ## UPDATE : REQUIRES UPDATING - LAST EDIT REQUIRED ## - ;###### - - film = "lstags.onedeg.dat" ; sst mask [not used] - - fils = systemfunc ("cd "+diri+"; ls oiv2mon.* ") ; the ftp's file names - nfils = dimsizes(fils) - -;;filoi = "MODEL.OI2.ice.mnly.200501-200903.unf.nc" -;;filos = "MODEL.OI2.sst.mnly.200501-200903.unf.nc" - sfxc = stringtochar( get_file_suffix(fils(0),0) ) - YYYYMM_START = chartostring(sfxc(1:)) - sfxc = stringtochar( get_file_suffix(fils(nfils-1),0) ) - YYYYMM_LAST = chartostring(sfxc(1:)) - filoi = "MODEL.OI2.ice.mnly."+YYYYMM_START+"-"+YYYYMM_LAST+".unf.nc" - filos = "MODEL.OI2.sst.mnly."+YYYYMM_START+"-"+YYYYMM_LAST+".unf.nc" - print("filoi="+filoi) - print("filos="+filos) - - ntim = nfils - - nfStrt = 0 ; nfStrt = nfils-1 - nfLast = nfils-1 - - if (PLOT_DEBUG) then - wks = gsn_open_wks(PLOT_TYPE,"test") ; open workstation (plot destination) - gsn_define_colormap(wks,"BlGrYeOrReVi200") ; choose colormap - gray = NhlNewColor(wks,0.8,0.8,0.8) ; add gray to colormap - - res = True - res@cnFillOn = True ; turn on color - res@gsnSpreadColors = True ; use full range of colormap - res@gsnSpreadColorStart = 2 ; start at color 2 - res@gsnSpreadColorEnd = -3 ; don't use added gray - res@cnLinesOn = False ; no contour lines - res@cnLineLabelsOn = False ; no contour lines - res@cnInfoLabelOn = False ; turn off cn info label - ;res@cnFillDrawOrder = "PreDraw" ; draw contours before continents - res@gsnMaximize = True ; maximize plot - ;res@mpFillOn = False - res@mpCenterLonF = 200. - - res@cnLevelSelectionMode = "ManualLevels" ; set manual contour levels - res@cnMinLevelValF = 0. ; set min contour level - res@cnMaxLevelValF = 32. ; set max contour level - res@cnLevelSpacingF = 2. ; set contour spacing - - RES = res - RES@cnMinLevelValF = 0. ; set min contour level - RES@cnMaxLevelValF = 100. ; set max contour level - RES@cnLevelSpacingF = 5. ; set contour spacing - - nfStrt = nfils-1 - ntim = nfLast-nfStrt+1 - end if - ;print(fils(nfStrt:nfLast)) - - year = new (ntim, "integer") - month = new (ntim, "integer") - - print("ntim="+ntim+" nfStrt="+nfStrt+" nfLast="+nfLast) - - nt = -1 - do nf=nfStrt,nfLast - tmp_c = stringtochar(fils(nf)) - nt = nt + 1 - year(nt) = stringtointeger((/tmp_c( 8:11)/)) - month(nt) = stringtointeger((/tmp_c(12:13)/)) - delete(tmp_c) - end do - -print(year+" "+month) - ntStrt = 0 - ntLast = ntim - - day = new (ntim, "integer") - day = 16 ; default - hour = new (ntim, "integer") - hour = 12 ; default - minute = new (ntim, "integer") - minute = 0 - sec = new (ntim, "double") - sec = 0.0d0 - - datesec= new (ntim, "integer") - delete(datesec@_FillValue) - datesec@units = "current seconds of current date" - datesec!0 = "time" - datesec = 43200 ; default - - date_frac= new (ntim, "double") - delete(date_frac@_FillValue) - date_frac@units = "yyyymmdd.fraction_of_day" - date_frac!0 = "time" - date_frac = 0.5d0 - - i = ind(month.eq.2) ; ignore leap year - if (.not.any(ismissing(i))) then - day(i) = 15 - end if - delete(i) - - i = ind(month.eq.2 .or. month.eq.4 .or. month.eq.6 .or. \ - month.eq.9 .or. month.eq.11 ) - if (.not.any(ismissing(i))) then - hour(i) = 0 - datesec(i) = 0 - date_frac(i) = 0.d0 - end if - delete(i) - - units = "days since 1800-01-01 00:00:00" - time = ut_inv_calendar(year,month,day,hour,minute,sec, units, 0) - time!0 = "time" - delete(time@_FillValue) - time@information = "middle of month" - printVarSummary(time) - - date = ut_calendar(time, -2) - date!0 = "time" - date@units = "yyyymmdd" - - date_frac = (/ date + date_frac /) - - print("nfStrt="+nfStrt) - print("nfLast="+nfLast) - print(fils(nfStrt:nfLast) \ - +" "+year+" "+month+" "+day+" "+hour \ - +" "+date+" "+datesec+" "+date_frac) - - nlat = 180 - mlon = 360 - - lat = latGlobeFo(nlat, "lat", "latitude", "degrees_north") - lon = lonGlobeFo(mlon, "lon", "longitude", "degrees_east") - - smsg = 1.e20 - sice = -1.8 - ; create various arrays to be used - sst = new ( (/ntim,nlat,mlon/) , float, smsg) - sst!0 = "time" - sst!1 = "lat" - sst!2 = "lon" - sst&time = time - sst&lat = lat - sst&lon = lon - ; not really needed - ; done in fortran - lsMask_OI = new ( (/nlat,mlon/) , float) ; 0=land , 1=ocean - lsMask_OI@long_name = "land-sea mask" - delete(lsMask_OI@_FillValue) - lsMask_OI!0 = "lat" - lsMask_OI!1 = "lon" - lsMask_OI&lat = lat - lsMask_OI&lon = lon - - sst@longName = "Sea Surface Temperature" - sst@units = "degC" - sst@info = "sst-ice consistency enforced" - - ice = sst ; copy meta data - ice@longName = "sea-ice concentration" - ice@units = "%" - - SST = sst ; SST will be the data written to grid - ICE = ice ; ICE will be the data written to grid - - SST@ice = sice - -;******************************************************** -; Loop over NCEP-OI files -; For memory reasons do manipulations on a per/file basis -;******************************************************** - - YYYYMM = date/100 - -;******************************************************** -; Empirical relationship -;******************************************************** - ; Emp=> Empirical - iceEmp = fspan(0,0.90,91) - sstEmp = 9.328*(0.729-iceEmp^3) - 1.8 ; sst = f(ice) - sstEmp@long_name = "SST MAX: EMPIRICAL" - sstEmp@units = "C" - sstCrit = 5.0 ; 9.328*0.729 - 1.8 - - print(fils) - - do nf=nfStrt,nfLast ; loop over all files - FNAME = diri+fils(nf) ; 19 NOV 2007 - sfx = get_file_suffix(FNAME,0) - - print("nf="+nf+" sfx="+sfx+" FNAME="+FNAME) - if (sfx.eq.".gz") then - print("SUFFIX .gz encountered: Better to manually gzip -d") - exit - ;system("gzip -d "+FNAME) - end if - - filc = stringtochar(fils(nf) ) - yyyy = stringtointeger((/filc( 8:11)/)) - mm = stringtointeger((/filc(12:13)/)) - mm_s = (/filc(12:13)/) ; string - - yyyymm = yyyy*100 + mm - nt = ind(yyyymm.eq.YYYYMM) - print("nf="+nf+" nt="+nt+" yyyymm="+yyyymm) - - if (ismissing(nt(0))) then - print("nt is missing: nf="+nf+" yyyymm="+yyyymm) - exit - end if -print("DEBUG A:+++++++++++++++++++++++") -print("fils(nf)="+fils(nf)) - ; read NCEP data - ; lsMask_OI added 3/27/2006 - SSTICE::sstice (dirm, diri, film, fils(nf) \ - ,yyyy, mm, nlat, mlon, ice(nt,:,:) \ - ,sst(nt,:,:),lsMask_OI, sst@_FillValue ) -print("DEBUG B:+++++++++++++++++++++++") - -;******************************************************** -; gross error checks [basically, protect from round off error] -;******************************************************** - ice(nt,:,:) = ice(nt,:,:) > 0.0 - ice(nt,:,:) = ice(nt,:,:) < 100.0 ; % - - dim2d = dimsizes(sst(nt,:,:)) - -;******************************************************** -; Jim H's consistency fortran code [minor additions by DJS] -; This code assume ice@units = % -;******************************************************** - JIMH::ssticejh (nlat, mlon, ice(nt,:,:), sst(nt,:,:), sst@_FillValue ) - ;if (DEBUG) then - print("date="+date(nt)+" min(ice)="+min(ice(nt,:,:)) \ - +" max(ice)="+max(ice(nt,:,:)) \ - +" min(sst)="+min(sst(nt,:,:)) \ - +" max(sst)="+max(sst(nt,:,:)) ) - ;end if - -;======================================================== -; For *clarity*, explicitly do each of the -; following data operations separately. -;======================================================== - -;******************************************************** -; Set all sst < -1.8 to -1.8 [JimH did this in fortran] -; Safety check to make sure this happened -;******************************************************** - sst(nt,:,:) = sst(nt,:,:) > sice - -;******************************************************** -; where ice > 90 [%], set corresponding sst to -1.8 -; f90: where(ice > 90.) sst = -1.8 -; Safety check to make sure this happened -;******************************************************** -; sst(nt,:,:) = where (ice(nt,:,:).ge.90, sice, sst(nt,:,:)) -;******************************************************** - - sst1d = ndtooned( sst(nt,:,:) ) - ice1d = ndtooned( ice(nt,:,:) ) - i = ind(ice1d.ge.90) - if (.not.any(ismissing(i))) then - sst1d(i) = sice - end if - sst(nt,:,:) = onedtond(sst1d, dim2d) - delete(i) - delete(sst1d) - delete(ice1d) - -;******************************************************** -; where ice < 15 [%], reset ice to 0.0 -; Safety check to make sure this happened -;******************************************************** -; ice(nt,:,:) = where (ice(nt,:,:).lt.15, 0.0 , ice(nt,:,:)) -;******************************************************** - - sst1d = ndtooned( sst(nt,:,:) ) - ice1d = ndtooned( ice(nt,:,:) ) - i = ind(ice1d.lt.15) - if (.not.any(ismissing(i))) then - ice1d(i) = 0.0 - end if - ice(nt,:,:) = onedtond(ice1d, dim2d) - delete(i) - delete(sst1d) - delete(ice1d) - -;******************************************************** -; Any place where sst>sstCrit set the ice=0 -; Safety check to make sure this happened -;******************************************************** -; ice(nt,:,:) = where (ice(nt,:,:).gt.0 .and. sst(nt,:,:).ge.sstCrit \ -; , 0.0 , ice(nt,:,:)) -;******************************************************** - - ice1d = ndtooned( ice(nt,:,:) ) - sst1d = ndtooned( sst(nt,:,:) ) - i = ind(ice1d.gt.0 .and. sst1d.ge.sstCrit) - if (.not.any(ismissing(i))) then - ice1d(i) = 0.0 - end if - ice(nt,:,:) = onedtond(ice1d, dim2d) - delete(i) - delete(sst1d) - delete(ice1d) - -;******************************************************** -; Under the assumption that SST is more reliable than -; sea-ice concentration, where (15<=ice<=90) and the -; sst exceed the empirically determined max .. adjust the sea-ice. -; Make sure tenths are used. Then put into ice_pc -;******************************************************** - ; empirical formula expects tenths - ice1d = ndtooned( ice(nt,:,:)*0.01 ) ; tenths - sst1d = ndtooned( sst(nt,:,:) ) - - n1590 = num(ice1d.ge.0.15 .and. ice1d.lt.0.90\ - .and. .not.ismissing(sst1d) ) - i = ind(ice1d.ge.0.15 .and. ice1d.lt.0.90\ - .and. .not.ismissing(sst1d) ) - - if (.not.any(ismissing(i))) then - ; alter only following - ni = dimsizes(i) - do n=0,ni-1 - sstmx = 9.328*(0.729-ice1d(i(n))^3) - 1.8 - if (sst1d(i(n)).gt.sstmx) then - ice1d(i(n)) = exp( log(0.729-((sstmx+1.8)/9.328))/3.0 ) ; tenths - end if - end do - - - sstmx1d = sst1d ; exact copy - sstmx1d(i) = 9.328*(0.729-ice1d(i)^3) - 1.8 ; empirical max sst - k = ind(ice1d.ge.0.15 .and. ice1d.lt.0.90 \ - .and. sst1d.gt.sstmx1d) - dimk = dimsizes(k) - if (.not.any(ismissing(k))) then - ; calculate the empirical ice max - ice1d(k) = exp( log(0.729-((sstmx1d(k)+1.8)/9.328))/3.0 ) ; tenths - end if - - delete(k) - delete(sst1d) - delete(sstmx1d) - end if - - ice(nt,:,:) = onedtond(ice1d*100, dim2d) ; return to % - ice(nt,:,:) = ice(nt,:,:) > 0.0 - - delete(i) - delete(ice1d) - -;******************************************************** -; Any place where ice < 15% set to 0.0 -;******************************************************** -; ice(nt,:,:) = where (ice(nt,:,:).lt.15, 0.0 , ice(nt,:,:)) -;******************************************************** - - ice1d = ndtooned( ice(nt,:,:) ) - i = ind(ice1d.lt.15) - if (.not.any(ismissing(i))) then - ice1d(i) = 0.0 ; % - end if - ice(nt,:,:) = onedtond(ice1d, dim2d) - delete(i) - delete(ice1d) - - end do - - N18 = num(sst.lt.sice) - N15 = num(ice.gt.0. .and. ice.lt.15) - N15C = num(ice.gt.0. .and. ice.lt.15 .and. sst.gt.sstCrit) - N1590 = num(ice.ge.15 .and. ice.lt.90 .and. sst.gt.sstEmp(1) ) - N90 = num(ice.ge.90 .and. sst.gt.sice) - print("AFTER: N15="+N15+" N15C="+N15C+" N18="+N18+" N90="+N90+" N1590="+N1590) - - sst@info = "sst-ice consistency enforced" - ice@info = "sst-ice consistency enforced" - - if (PLOT_DEBUG) then - nt = ntim-1 - res@gsnCenterString = "SST Grid: "+date(nt) - plot = gsn_csm_contour_map_ce(wks,sst(nt,:,:), res) - RES@gsnCenterString = "ICE Grid: "+date(nt) - plot = gsn_csm_contour_map_ce(wks,ice(nt,:,:), RES) - - res_OI = True - res_OI@gsnSpreadColors = True - res_OI@gsnSpreadColorEnd = -3 ; don't use added gray - res_OI@cnFillOn = True - res_OI@cnFillMode = "CellFill" - ;res_OI@cnMissingValFillColor= "yellow" - res_OI@mpFillOn = False - res_OI@mpFillDrawOrder = "PostDraw" - res_OI@gsnCenterString = "SST Missing" - res_OI@cnLevelSelectionMode = "ManualLevels" ; set manual contour levels - res_OI@cnMinLevelValF = 0 ; set min contour level - res_OI@cnMaxLevelValF = 2 ; one less than max - res_OI@cnLevelSpacingF = 1 ; set contour spacing - ;res_OI@lbLabelStrings = ispan(1,3,1) - if (isatt(res,"mpCenterLonF")) then - res_OI@mpCenterLonF = res@mpCenterLonF - end if - plot = gsn_csm_contour_map_ce(wks,lsMask_OI, res_OI) - ;print(lat+" "+lsMask_OI(:,{0.5})+" "+lsMask_OI(:,{179.5}) ) - end if - ; Antarctic mask - ; NCEP: 0=land , ocean=1 - latMask1d = ndtooned(conform(lsMask_OI, lat, 0)) - lsMask1d = ndtooned(lsMask_OI) - iMask = ind(latMask1d.le.-60 .and. lsMask1d.eq.0) - ; force certain values - ice(:,{-45:35} ,:) = 0.0 - - ;wcStrt = systemfunc("date") - do nt=0,ntim-1 - x1d = ndtooned(sst(nt,:,:)) - x1d(iMask) = sice ; Antarctic land - sst(nt,:,:) = onedtond(x1d, (/nlat,mlon/) ) - - x1d = ndtooned(ice(nt,:,:)) - x1d(iMask) = 100. ; Antarctic land - ice(nt,:,:) = onedtond(x1d, (/nlat,mlon/) ) - end do - ;wallClockElapseTime(wcStrt, "MASK", 0) - - if (PLOT_DEBUG) then - nt = ntim-1 - res@gsnCenterString = "set -1.8" - plot = gsn_csm_contour_map_ce(wks,sst(nt,:,:), res) - RES@gsnCenterString = "set 100" - plot = gsn_csm_contour_map_ce(wks,ice(nt,:,:), RES) - end if - - ; will be inserted over Siberia - sst_zon= dim_avg_Wrap(sst(:,:,{0:180})) - sst_zon@long_name = "Zonal Mean SST" - ice_zon= dim_avg_Wrap(ice(:,:,{0:180})) - ice_zon@long_name = "Zonal Mean SEAICE" - ; completly bogus [again] - ; set China/Siberia to the zonal average - ; makes code 'converge' faster - if (PRNT_DEBUG) then - nMsgS = num(ismissing(sst)) ; total number of _FillValue - print("SST: start: nMsgS ="+nMsgS) - nMsgI = num(ismissing(ice)) ; total number of _FillValue - print("ICE: start: nMsgI ="+nMsgI) - end if - wcStrt = systemfunc("date") - -;*************************************************** -; Begin Interpolation over land -;*************************************************** - nDx = 2 ; longitude only - sst = linmsg (sst, (/0,nDx/)); linearly interpolate over small distances - ice = linmsg (ice, (/0,nDx/)) - - if (PRNT_DEBUG) then - nMsgS = num(ismissing(sst)) ; total number of _FillValue - print("SST: linmsg: nDX="+nDx+" : nMsgS ="+nMsgS) - nMsgI = num(ismissing(ice)) ; total number of _FillValue - print("ICE: linmsg: nDX="+nDx+" : nMsgI ="+nMsgI) - end if - - if (PLOT_DEBUG) then - nt = ntim-1 - res@gsnCenterString = "linmsg="+nDx - plot = gsn_csm_contour_map_ce(wks,sst(nt,:,:), res) - plot = gsn_csm_contour_map_ce(wks,ice(nt,:,:), RES) - end if - ; assumes -180 to +180 - nPtx = 3 ; small inland nearest neighbor - nPty = 1 - ; coastnn works better when 179.5W -> 179.5E - ;NEAR_NEIGHBOR::coastnn(sst,mlon,nlat,ntim,sst@_FillValue,nPtx,nPty) - ;NEAR_NEIGHBOR::coastnn(ice,mlon,nlat,ntim,ice@_FillValue,nPtx,nPty) - - do nt=0,ntim-1 ; use loop to minimize memory - tmp = lonFlip(sst(nt:nt,:,:)) ; make NCEP 179.5W -> 179.5E - NEAR_NEIGHBOR::coastnn(tmp,mlon,nlat, 1 ,tmp@_FillValue,nPtx,nPty) - sst(nt:nt,:,:) = (/ lonFlip(tmp) /) - - tmp = lonFlip(ice(nt:nt,:,:)) - NEAR_NEIGHBOR::coastnn(tmp,mlon,nlat, 1 ,tmp@_FillValue,nPtx,nPty) - ice(nt:nt,:,:) = (/ lonFlip(tmp) /) - end do - - if (PRNT_DEBUG) then - nMsgS = num(ismissing(sst)) ; total number of _FillValue - print("SST: NEAR NEIGHBOR: nPtx="+nPtx+" nPty="+nPty+" nMsgS ="+nMsgS) - nMsgI = num(ismissing(ice)) ; total number of _FillValue - print("ICE: NEAR NEIGHBOR: nPtx="+nPtx+" nPty="+nPty+" nMsgI ="+nMsgI) - end if - - if (PLOT_DEBUG) then - nt = ntim-1 - res@gsnCenterString = "NearNeighbor: nPtx="+nPtx+" nPty="+nPty - plot = gsn_csm_contour_map_ce(wks,sst(nt,:,:), res) - plot = gsn_csm_contour_map_ce(wks,ice(nt,:,:), RES) - end if - ; hasten fill area - sst(:,{25:70},{100}) = (/ sst_zon(:,{25:70}) /) ; arbitrary - sst(:,{50:60},{ 55}) = (/ sst_zon(:,{50:60}) /) ; arbitrary - ice(:,{50:60},{ 55}) = (/ ice_zon(:,{50:60}) /) ; arbitrary - ; large scale iterative bilinear interpolation - nx = 10 ; each is one deg - ny = 3 - endPt = 0 - nPass = 8 - linInterpFlip( sst, nPass, nx, ny, endPt) - if (PRNT_DEBUG) then - nMsgS = num(ismissing(sst)) ; total number of _FillValue - print("SST: nPass="+nPass+" : nMsgS ="+nMsgS) - print(" ") - end if - nPass = 8 - linInterpFlip( ice, nPass, nx, ny, endPt) - - wallClockElapseTime(wcStrt, "NearNeighbor-LinInterp", 0) - - if (PRNT_DEBUG) then - ;nMsgS = num(ismissing(sst)) ; total number of _FillValue - ;print("SST: nPass="+nPass+" : nMsgS ="+nMsgS) - ;print(" ") - nMsgI = num(ismissing(ice)) ; total number of _FillValue - print("ICE: nPass="+nPass+" : nMsgI ="+nMsgI) - print(" ") - end if - - if (PLOT_DEBUG) then - nt = ntim-1 - res@gsnCenterString = "linInterp: nPass="+nPass - plot = gsn_csm_contour_map_ce(wks,sst(nt,:,:), res) - plot = gsn_csm_contour_map_ce(wks,ice(nt,:,:), RES) - end if - - printMinMax(sst , True) - print("nMsg(sst)="+num(ismissing(sst))) - printMinMax(ice , True) - print("nMsg(ice)="+num(ismissing(ice))) - - sst@info = "sst-ice consistency enforced" - ice@info = "sst-ice consistency enforced" - -;******************************************************** -; Force consistency: make sure land interp does not screw up -;******************************************************** - do nt=0,ntim-1 - -;******************************************************** -; Set all sst < -1.8 to -1.8 [JimH did this in fortran] -; Safety check to make sure this happened -;******************************************************** - sst(nt,:,:) = sst(nt,:,:) > sice - -;******************************************************** -; where ice > 90 [%], set corresponding sst to -1.8 -; f90: where(ice > 90.) sst = -1.8 -; Safety check to make sure this happened -;******************************************************** -; sst(nt,:,:) = where (ice(nt,:,:).ge.90, sice, sst(nt,:,:)) -;******************************************************** - - sst1d = ndtooned( sst(nt,:,:) ) - ice1d = ndtooned( ice(nt,:,:) ) - i = ind(ice1d.ge.90) - if (.not.any(ismissing(i))) then - sst1d(i) = sice - end if - sst(nt,:,:) = onedtond(sst1d, dim2d) - delete(i) - delete(sst1d) - delete(ice1d) - -;******************************************************** -; where ice < 15 [%], reset ice to 0.0 -; Safety check to make sure this happened -;******************************************************** -; ice(nt,:,:) = where (ice(nt,:,:).lt.15, 0.0 , ice(nt,:,:)) -;******************************************************** - - sst1d = ndtooned( sst(nt,:,:) ) - ice1d = ndtooned( ice(nt,:,:) ) - i = ind(ice1d.lt.15) - if (.not.any(ismissing(i))) then - ice1d(i) = 0.0 - end if - ice(nt,:,:) = onedtond(ice1d, dim2d) - delete(i) - delete(sst1d) - delete(ice1d) - -;******************************************************** -; Any place where sst>sstCrit set the ice=0 -; Safety check to make sure this happened -;******************************************************** -; ice(nt,:,:) = where (ice(nt,:,:).gt.0 .and. sst(nt,:,:).ge.sstCrit \ -; , 0.0 , ice(nt,:,:)) -;******************************************************** - - ice1d = ndtooned( ice(nt,:,:) ) - sst1d = ndtooned( sst(nt,:,:) ) - i = ind(ice1d.gt.0 .and. sst1d.ge.sstCrit) - if (.not.any(ismissing(i))) then - ice1d(i) = 0.0 - end if - ice(nt,:,:) = onedtond(ice1d, dim2d) - delete(i) - delete(sst1d) - delete(ice1d) - -;******************************************************** -; Under the assumption that SST is more reliable than -; sea-ice concentration, where (15<=ice<=90) and the -; sst exceed the empirically determined max .. adjust the sea-ice. -; Make sure tenths are used. Then put into ice_pc -;******************************************************** - ; empirical formula expects tenths - ice1d = ndtooned( ice(nt,:,:)*0.01 ) - sst1d = ndtooned( sst(nt,:,:) ) - - n1590 = num(ice1d.ge.0.15 .and. ice1d.lt.0.90\ - .and. .not.ismissing(sst1d) ) - i = ind(ice1d.ge.0.15 .and. ice1d.lt.0.90\ - .and. .not.ismissing(sst1d) ) - - if (.not.any(ismissing(i))) then - ; alter only following - ni = dimsizes(i) - do n=0,ni-1 - sstmx = 9.328*(0.729-ice1d(i(n))^3) - 1.8 - if (sst1d(i(n)).gt.sstmx) then - ice1d(i(n)) = exp( log(0.729-((sstmx+1.8)/9.328))/3.0 ) ; tenths - end if - end do - - - sstmx1d = sst1d ; exact copy - sstmx1d(i) = 9.328*(0.729-ice1d(i)^3) - 1.8 ; empirical max sst - k = ind(ice1d.ge.0.15 .and. ice1d.lt.0.90 \ - .and. sst1d.gt.sstmx1d) - dimk = dimsizes(k) - if (.not.any(ismissing(k))) then - ; calculate the empirical ice max - ice1d(k) = exp( log(0.729-((sstmx1d(k)+1.8)/9.328))/3.0 ) ; tenths - end if - - delete(k) - delete(sst1d) - delete(sstmx1d) - end if - - ice(nt,:,:) = onedtond(ice1d*100, dim2d) ; return to % - ice(nt,:,:) = ice(nt,:,:) > 0.0 - - delete(i) - delete(ice1d) - -;******************************************************** -; Any place where ice < 15% set to 0.0 -;******************************************************** -; ice(nt,:,:) = where (ice(nt,:,:).lt.15, 0.0 , ice(nt,:,:)) -;******************************************************** - - ice1d = ndtooned( ice(nt,:,:) ) - i = ind(ice1d.lt.15) - if (.not.any(ismissing(i))) then - ice1d(i) = 0.0 ; % - end if - ice(nt,:,:) = onedtond(ice1d, dim2d) - delete(i) - delete(ice1d) - - end do - - - N18 = num(sst.lt.sice) - N15 = num(ice.gt.0. .and. ice.lt.15) - N15C = num(ice.gt.0. .and. ice.lt.15 .and. sst.gt.sstCrit) - N1590 = num(ice.ge.15 .and. ice.lt.90 .and. sst.gt.sstEmp(1) ) - N90 = num(ice.ge.90 .and. sst.gt.sice) - print("AFTER: N15="+N15+" N15C="+N15C+" N18="+N18+" N90="+N90+" N1590="+N1590) - -;******************************************************** -; Write netCDF -;******************************************************** -if (netCDF) then - - nline = inttochar(10) - - fAtt = True - fAtt@title = "Hurrell Consistent SST with no missing values over land" - fAtt@OI_clim = "1971-2000" - fAtt@NCEP_OI_clim = "1971-2000" - - fAtt@story = nline + \ -" NCL version of JimH sst-ice.consistency.f " + nline + \ -" " + nline + \ -"[a] all sst < -1.8 to -1.8 [sea-ice value] " + nline + \ -"[b] where(ice > 0.9) sst = -1.8 " + nline + \ -"[c] adjust the sst-ice concentration data via Jim Hack formula " + nline + \ -" sstm = 9.328 * (0.729-si**3) - 1.8 [where si is frac sea-ice] " + nline + \ -"[d] Use ad-hoc method to interpolate values over land " + nline + \ -" values near coasts set to nearest neighbor " + nline + \ -" function cssgrid used to interpolat [not nice] " - - fAtt@creator = "Dennis Shea, CGD" - fAtt@creation_date = systemfunc( "date" ) - - ncfile = diro+filos - print (ncfile) - system ("/bin/rm -f " + ncfile) ; remove an pre-file - - ncdf = addfile(ncfile,"c") ; "c"reate the netCDF file - - setfileoption(ncdf,"DefineMode",True) ; EFFICIENCY - - fileattdef( ncdf, fAtt ) - - dimNames = (/ "time", "lon", "lat" /) - dimSizes = (/ -1 , mlon, nlat /) - dimUnlim = (/ True , False, False /) - filedimdef( ncdf, dimNames, dimSizes, dimUnlim ) - - filevardef ( ncdf, "time", typeof(time), getvardims(time) ) - filevarattdef( ncdf, "time", time ) - ; Define 1D variables. - filevardef ( ncdf, "lon", typeof(lon), getvardims(lon) ) - filevarattdef( ncdf, "lon", lon ) - - filevardef ( ncdf, "lat", typeof(lat), getvardims(lat) ) - filevarattdef( ncdf, "lat", lat ) - - filevardef ( ncdf, "date", typeof(date), getvardims(date)) - filevarattdef( ncdf, "date", date ) - - filevardef ( ncdf, "datesec", typeof(datesec), getvardims(datesec) ) - filevarattdef( ncdf, "datesec", datesec ) - - filevardef ( ncdf, "date_frac", typeof(date_frac), getvardims(date_frac) ) - filevarattdef( ncdf, "date_frac", date_frac ) - - filevardef ( ncdf, "SST", typeof(sst), getvardims(sst)) - filevarattdef( ncdf, "SST", sst ) - - setfileoption(ncdf,"DefineMode",False) ; (not really necessary) - - ncdf->time = (/time /) - ncdf->lat = (/lat /) - ncdf->lon = (/lon /) - ncdf->date = (/date /) - ncdf->datesec = (/datesec /) - ncdf->date_frac= (/date_frac /) - ncdf->SST = (/sst /) - - -; ------------- sea-ice netCDF - - gAtt = True - gAtt@title = "Hurrell Consistent ICE with no missing values over land" - - gAtt@story = nline + \ -" NCL version of JimH sst-ice.consistency.f " + nline + \ -" " + nline + \ -"[a] all sst < -1.8 to -1.8 [sea-ice value] " + nline + \ -"[b] where(ice > 0.9) sst = -1.8 " + nline + \ -"[c] adjust the sst-ice concentration data via Jim Hack formula " + nline + \ -" sstm = 9.328 * (0.729-si**3) - 1.8 [where si is frac sea-ice] " + nline + \ -"[d] minor sea-ice adjustments " - - gAtt@creators = "Dennis Shea, CGD" - gAtt@creation_date = systemfunc( "date" ) - - NCFILE = diro+filoi - print (NCFILE) - system ("/bin/rm -f " + NCFILE) ; remove an pre-file - - NCDF = addfile(NCFILE,"c") ; "c"reate the netCDF file - - setfileoption(NCDF,"DefineMode",True) ; EFFICIENCY - - fileattdef( NCDF, gAtt ) - - dimNames = (/ "time", "lon", "lat" /) - dimSizes = (/ -1 , mlon, nlat /) - dimUnlim = (/ True , False, False /) - filedimdef( NCDF, dimNames, dimSizes, dimUnlim ) - - filevardef ( NCDF, "time", typeof(time), getvardims(time) ) - filevarattdef( NCDF, "time", time ) - ; Define 1D variables. - filevardef ( NCDF, "lon", typeof(lon), getvardims(lon) ) - filevarattdef( NCDF, "lon", lon ) - - filevardef ( NCDF, "lat", typeof(lat), getvardims(lat) ) - filevarattdef( NCDF, "lat", lat ) - - filevardef ( NCDF, "date", typeof(date), getvardims(date) ) - filevarattdef( NCDF, "date", date ) - - filevardef ( NCDF, "datesec", typeof(datesec), getvardims(time) ) - filevarattdef( NCDF, "datesec", datesec ) - - filevardef ( NCDF, "date_frac", typeof(date_frac), getvardims(time) ) - filevarattdef( NCDF, "date_frac", date_frac ) - - filevardef ( NCDF, "SEAICE", typeof(ice), getvardims(ice)) - filevarattdef( NCDF, "SEAICE", ice ) - - setfileoption(NCDF,"DefineMode",False) ; (not really necessary) - - NCDF->time = (/time /) - NCDF->lat = (/lat /) - NCDF->lon = (/lon /) - NCDF->date = (/date /) - NCDF->datesec = (/datesec /) - NCDF->date_frac= (/date_frac /) - NCDF->SEAICE = (/ice /) -end if - -end -"END_MAIN_NCL" - -# ===========================FORTRAN=================================== - -cat >! sstice.f << "END_SSTICE" -C NCLFORTSTART - subroutine sstice (dirm, diri, film, fildata - + ,yyyy, mm, nlat, mlon, ice, sst, tagls, zmsg ) - implicit none - character*(*) diri, dirm, film, fildata - integer yyyy, mm, nlat, mlon - real ice(mlon,nlat), sst(mlon,nlat), zmsg - real tagls(mlon,nlat) -C NCLEND -c ************************************************************* -c This section reads in the NCEP OI data [Jim Hurrell read.f] -c ************************************************************* - -c -c This subroutine reads a individual yyyymm reynolds OI SST fields -c -c The geo-location of the SST array elements are: -c SST(1,1) = 0.5E, 89.5S -c SST(1,2) = 0.5E, 88.5S -c SST(2,1) = 1.5E, 89.5S -c SST(360,180) = 359.5E, 89.5N -c -c a land/sea mask should be used to mask out OI SST analyzed values -c not located in the ocean, e.g. data file lstags.onedeg.dat -c land=0 ocean=1 -c -c sst - sea surface temperature array (deg C) -c ice - ice concentration array (%) (0-100, >100 = land or coast) -c iyrst - year of start date of analysis -c imst - month of start date of analysis -c idst - day of start date of analysis -c iyrnd - year of end date of analysis -c imnd - month of end date of analysis -c idnd - day of end date of analysis -c ndays - number of days in analysis (start date thru enddate) -c index - analysis version for reference -c xlon - longitude of center of grid square -c xlat - latitude of center of grid square -c tagls - land/sea tag array (0=land, 1=water) - -c NOTES: -c - land values for sst do not necessarily coincide with land values -c from ice analysis - - integer id, jd, krecl - parameter (id=360,jd=180) - parameter (krecl=id*jd*4) - - character*1 cice(id,jd) - character*6 yyyymm - -c c c real sstnew(id,jd),icenew(id,jd), tagls(id,jd) -c c c real sstnew(id,jd),icenew(id,jd) - real*8 ix -c c c real sstmax(91),icemax(91) - real si, sstm - - integer iyrst,imst,idst,iyrnd,imnd,idnd,ndays,index - integer i,j,ientry, ic - data ientry /0/ - save ientry -c c c save tagls -c upon initial entry: open and read the land / sea mask - -c ************************************************************* -c This section reads in the land-sea mask. -c The OI analysis is done over all ocean areas and -c the Great Lakes. There is no analysis over land. -c The land values are filled by a Cressman interpolation -c to produce a complete grid for possible interpolation to -c other grids. -c ocean: lstag=1 land: lstag=0 -c ************************************************************* -c For the ice fields, the value 122 represents land or coast. -c Note, the ice land mask is a function of the ice analysis -c and may change periodically. -c ************************************************************* - print *, "ENTER SSTICE" - - if (ientry.eq.0) then - print *,"dirm//film=",trim(dirm)//trim(film) - open(50,file=trim(dirm)//trim(film), convert="big_endian", - * form='unformatted',access='direct',recl=krecl) - print *,"Past open statement for mask" - read(50,rec=1) tagls - print *,"Past read statement" - close(50) - ientry = 1 - print *, "=> LAND_SEA MASK READ OK <=" - end if - print *, "AFTER IENTRY:*************************" - -c ************************************************************* -c This section reads in the data [Jim Hurrell read.f] -c ************************************************************* - -c read sst and sea-ice concentration data - - print *,"diri=",diri - print *,"fildata=",fildata - open(10,file=diri//fildata, convert="big_endian", - * form='unformatted') - print *, "AFTER OPEN" - read(10) iyrst,imst,idst,iyrnd,imnd,idnd,ndays,index - print *, "=>fortran: ",iyrst,imst,idst,iyrnd,imnd,idnd,ndays,index - read(10) ((sst(i,j),i=1,id),j=1,jd) - read(10) ((cice(i,j),i=1,id),j=1,jd) - close (10) - - do j = 1, jd - do i = 1, id - ice(i,j) = float(ichar(cice(i,j))) - enddo - enddo - -c set SST and ice to missing over land - - do j = 1, jd - do i = 1, id - if (tagls(i,j).eq.0) sst(i,j) = zmsg - if (ice(i,j).gt.100.) ice(i,j) = zmsg - enddo - enddo - - return - end -"END_SSTICE" - -# consistent.f and coast_land_NearNbor.f same as -# CGD: /fs/cgd/home0/shea/ncld/ncld2/ncld3/hadley - -## Portland Group compiler no longer available -##WRAPIT -d -pg -fPIC sstice.f -##WRAPIT -d -pg -fPIC consistent.f -## WRAPIT -d -pg -fPIC coast_land_NearNbor.f - -WRAPIT -d sstice.f -WRAPIT -d consistent.f -WRAPIT -d coast_land_NearNbor.f - -# ============================Execute=================================== - - ncl main.ncl - -# ============================Clean UP================================== - /bin/rm -f main.ncl # this is local - /bin/rm -f coast_land_NearNbor*o - /bin/rm -f consistent*o - /bin/rm -f objects - /bin/rm -f sstice.f # this is local - /bin/rm -f sstice*o - /bin/rm -f WRAPIT* - /bin/rm -f core - -# ============================copy files================================ - -#scp /ptmp/shea/SSTICE/*nc tramhill.cgd.ucar.edu:/project/cas/shea/hadley/. -exit diff --git a/SST_1-1-9-release/SST_COMPARE.ncl b/SST_1-1-9-release/SST_COMPARE.ncl deleted file mode 100755 index 288a823..0000000 --- a/SST_1-1-9-release/SST_COMPARE.ncl +++ /dev/null @@ -1,93 +0,0 @@ -; ================================================= -; This script will check the overlay years on -; the update file to make sure the differencess are 0.0 -; For some reason the 1st two months show differences -; over land. No reason why!!!! -; ================================================= -load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_code.ncl" -load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_csm.ncl" -load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/contributed.ncl" - - ; This is the file to be updated - ;dira = "/project/cas/shea/hadley/" - ;dira = "/project/cas/shea/SSTICE/" - dira = "../" - ;fila = "MODEL.SST.HAD187001-198110.OI198111-201103.nc" - ;fila = "MODEL.SST.HAD187001-198110.OI198111-201112.nc" - ;fila = "MODEL.SST.HAD187001-198110.OI198111-201203.nc" - fila = "MODEL.SST.HAD187001-198110.OI198111-201403.nc" - print("fila="+fila) - ; This is the raw update file - ; This includes a few overlap years - ;dirb = "/project/cas/shea/SSTICE/" - dirb = "./" - ;filb = systemfunc("cd "+dirb+" ; ls MODEL.OI2.sst.mnly.*.unf.nc") - ;filb = "MODEL.OI2.sst.mnly.20xxyy-20XXYY.unf.nc" - ;filb = "MODEL.OI2.sst.mnly.201001-201108.unf.nc" - ;filb = "MODEL.OI2.sst.mnly.201001-201203.unf.nc" - ;filb = "MODEL.OI2.sst.mnly.201201-201303.unf.nc" - filb = "MODEL.OI2.sst.mnly.201401-201503.unf.nc" - print("filb="+filb) - - fa = addfile(dira+fila, "r") - fb = addfile(dirb+filb, "r") - - datea = fa->date - dateb = fb->date - - datea = datea/100 ; yyyymm - dateb = dateb/100 - na = dimsizes(datea) - nb = dimsizes(dateb) - - idatea = ind(datea.ge.dateb(0) .and. datea.le.datea(na-1)) - idateb = ind(dateb.ge.dateb(0) .and. dateb.le.datea(na-1)) - print(datea(idatea)+" "+dateb(idateb)) - - ssta = fa->SST(idatea,:,:) - sstb = fb->SST(idateb,:,:) - - printVarSummary(ssta) - printVarSummary(sstb) - - printMinMax(ssta, True) - printMinMax(sstb, True) - print("=================================") - print("=================================") - print("=================================") - - dims = dimsizes(ssta) - print(dims) - ntim = dims(0) - - diff = sstb-ssta - mxdiff = max(abs(diff)) - print("Max diff over ALL dates: ="+mxdiff) - - do nt=0,ntim-1 - print(dateb(idateb(nt)) +" mxdiff="+ max(abs(diff(nt,:,:)))) - end do - - diff@long_name = "SST Diff" - copy_VarCoords(ssta, diff) - -;************************************************ -; create plot -;************************************************ - ;wks = gsn_open_wks("x11","TEST") ; open a ps file - wks = gsn_open_wks("pdf","TEST") ; open a ps file - res = True ; plot mods desired - res@gsnMaximize = True - res@cnLevelSelectionMode = "ManualLevels" ; set manual contour levels - res@cnMinLevelValF = -4. ; set min contour level - res@cnMaxLevelValF = 4. ; set max contour level - res@cnLevelSpacingF = 0.5 ; set contour spacing - - ;res@tiMainString = "CCM2 T42 July" ; plot title - ;res@cnInfoLabelOrthogonalPosF = -0.07 ; move the label inside th plot - - do nt=0,ntim-1 - res@gsnCenterString = dateb(idateb(nt)) - plot = gsn_csm_contour_map_ce(wks,diff(nt,:,:), res) ; create plot - end do - diff --git a/SST_1-1-9-release/coast_land_NearNbor.f b/SST_1-1-9-release/coast_land_NearNbor.f deleted file mode 100755 index a89be38..0000000 --- a/SST_1-1-9-release/coast_land_NearNbor.f +++ /dev/null @@ -1,70 +0,0 @@ -C NCLFORTSTART - subroutine coastnn (s,mlon,nlat,ntim,smsg,npassx,npassy) - implicit none - integer mlon, nlat, ntim, npassx, npassy - real s(mlon,nlat,ntim), smsg -C NCLEND - real stmp(mlon,nlat) - integer ml, nl, nt, np -c c c integer kmsg, new, nwe - -c physically the idea is that SSTs don't -c . vary much in the east-west direction over small distances -c all this does is set the 1st coastal point to the -c . nearest left/right neighbor - - do nt=1,ntim - do np=1,npassx - - do nl=1,nlat - do ml=1,mlon - stmp(ml,nl) = s(ml,nl,nt) - end do - end do - - do nl=1,nlat -c ! west-to-east [Gulf, Kurishio] - do ml=mlon,2,-1 - if (stmp(ml ,nl).ne.smsg .and.stmp(ml-1,nl).eq.smsg)then - s(ml-1,nl,nt) = s(ml,nl,nt) - end if - end do -c ! east-to-west - do ml=1,mlon-1 - if (stmp(ml,nl) .ne.smsg .and.stmp(ml+1,nl).eq.smsg)then - s(ml+1,nl,nt) = s(ml,nl,nt) - end if - end do - end do - - end do - - do np=1,npassy - - do nl=1,nlat - do ml=1,mlon - stmp(ml,nl) = s(ml,nl,nt) - end do - end do - - do ml=1,mlon -c ! south-to-north - do nl=1,nlat-1 - if (stmp(ml ,nl).ne.smsg .and.stmp(ml,nl+1).eq.smsg)then - s(ml,nl+1,nt) = s(ml,nl,nt) - end if - end do -c ! north-to-south - do nl=nlat,2,-1 - if (stmp(ml ,nl).ne.smsg .and.stmp(ml,nl-1).eq.smsg)then - s(ml,nl-1,nt) = s(ml,nl,nt) - end if - end do - - - end do - end do - end do - - return - end diff --git a/SST_1-1-9-release/consistent.f b/SST_1-1-9-release/consistent.f deleted file mode 100755 index c41b796..0000000 --- a/SST_1-1-9-release/consistent.f +++ /dev/null @@ -1,132 +0,0 @@ -C WRAPIT -pg consistent_coast.f - -C NCLFORTSTART - subroutine ssticejh (nlat, mlon, ice, sst, zmsg ) - implicit none - integer nlat, mlon - real ice(mlon,nlat), sst(mlon,nlat), zmsg -C NCLEND - -c NOTES: -c - land values for sst do not necessarily coincide with land values -c from ice analysis - - integer id, jd, krecl - parameter (id=360,jd=180) - parameter (krecl=id*jd*4) - - real sstnew(id,jd),icenew(id,jd) - real*8 ix - real sstmax(91),icemax(91) - real si, sstm - - integer i,j,ic - -c ************************************************************* -c This section modifies sea ice data to be consistent with SST: -c [Jim Hurrell sst-ice.consistency.f] -c ************************************************************* -c -c create a maximum SST allowed for a particular sea-ice concentration -c -c Function created by Jim Hack 2/4/02 -c -c sstmax = 9.328 * (0.729-ice**3) - 1.8 -c -c icemax(1) = 0.00 sstmax(1) = 5.0 -c icemax(16) = 0.15 sstmax(16) = 4.97 ! si cutoff in orginal data -c icemax(90) = 0.89 sstmax(90) = -1.57 -c icemax(91) = 0.90 sstmax(91) = -1.8 - - ic = 0 - do ix = 0.0, 0.90, 0.01 - ic = ic + 1 - icemax(ic) = ix - sstmax(ic) = 9.328 * (0.729-ix**3) - 1.8 - enddo - - do j = 1, jd - do i = 1,id - sstnew(i,j) = sst(i,j) - icenew(i,j) = ice(i,j) - end do - end do - - do j = 1, jd - do i = 1,id - -c (a) first, do not allow sst < -1.8 -c (b) set all values with ice > 90% c to -1.8 -c -c THE FOLLOWING IS DONE IN NCL ... 2006 -c - if (sstnew(i,j).ne.zmsg .and. - + sstnew(i,j).lt.-1.8) sstnew(i,j) = -1.8 - - if (ice(i,j).ne.zmsg.and.sstnew(i,j).ne.zmsg) then - if (ice(i,j).ge.90.0) then - sstnew(i,j) = -1.8 - endif - endif - -c adjust the ice concentration data - - if (sstnew(i,j).ne.zmsg) then - if (icenew(i,j).ne.zmsg.and.icenew(i,j).gt.0.0) then - - if (icenew(i,j).lt.90.0) then ! Don't adjust values > 90% - si = icenew(i,j) * 0.01 ! Convert to fraction from % - sstm = 9.328 * (0.729-si**3) - 1.8 - if (sstnew(i,j).gt.sstm) then - if (sstnew(i,j).gt.sstmax(1)) then - icenew(i,j) = 0.0 - else - do ic = 1, 90 - if (sstnew(i,j).lt.sstmax(ic).and.sstnew(i,j).gt. - * sstmax(ic+1)) then - icenew(i,j) = icemax(ic) * 100. - endif - enddo - endif - endif - endif - - endif - endif - -c force no sea ice < 15%, as in HadISST data -c DJS: UNCOMMENTED 16 Aug 2006 - - if (icenew(i,j).ne.zmsg) then - if (icenew(i,j).lt.15.0) icenew(i,j) = 0.0 -C DJS if (icenew(i,j).gt.99.9) then -C DJS write (*,*) iyr,imn,i,j,ice(i,j) -C DJS endif - endif - enddo - enddo - -c DJS: PUT NEW VALUES BACK TO SST/ICE FOR RETURN TO NCL - - DO J = 1, JD - DO I = 1,ID - SST(I,J) = SSTNEW(I,J) - ICE(I,J) = ICENEW(I,J) - END DO - END DO - -c DJS: THE FOLLOWING IS SOMETHING LIKE WHAT JIM HAD IN hadissst+oiv2.f - -c djs DO J = 1, JD -c djs DO I = 1, ID -c djs IF (ICE(I,J).NE.ZMSG) THEN -c djs IF (ICE(I,J).LT.0.0.OR.ICE(I,J).GT.100.0) THEN -c djs WRITE (*,*) 'OIv2 ',ICE(I,J),I,J -c djs ENDIF -c djs ENDIF -c djs ENDDO -c djs ENDDO - - return - end - diff --git a/SST_1-1-9-release/download.sh b/SST_1-1-9-release/download.sh deleted file mode 100755 index 30b6d9d..0000000 --- a/SST_1-1-9-release/download.sh +++ /dev/null @@ -1,174 +0,0 @@ -#!/bin/tcsh - -# Author: Paul J. Durack : pauldurack@llnl.gov -# Created on Wed Apr 22 15:42:19 2015 -# @author: durack1 - -# File written to download all OISSTv2 files -# PJD 9 Apr 2015 - Adapted from ERSST_V3b data -# PJD 22 Apr 2015 - Updated to complete data generation -# PJD 23 Apr 2015 - Updated URL and DOI -# PJD 14 Apr 2016 - Updated for V1.0.1 - April 2015 to March 2016 extension -# PJD 25 May 2016 - Updated for V1.0.1 using correct V1.0.0 input data - May 2015 to April 2016 extension -# PJD 26 May 2016 - Added wrapit77 to PATH -# PJD 20 Oct 2016 - Updated for V1.1.1 using V1.1.0 input data - May 2016 to September 2016 extension -# PJD 10 Apr 2017 - Updated for V1.1.2 using V1.1.1 input data - July 2016 to December 2016 extension -# PJD 10 Apr 2017 - Oceanonly rebuild required a reinstall of nco.x86_64 -# PJD 11 Apr 2017 - Updated to use new conda environment cdatcmornclnco -# PJD 9 Oct 2017 - Updated for V1.1.3 and using conda environment cdat212cmor327nclnco -# PJD 16 Apr 2018 - Updated for V1.1.4 and using conda env cdat80cmor332nclnco -# PJD 18 Oct 2018 - Updated for V1.1.5 and using conda env cdat80cmor333nclnco -# PJD 18 Oct 2018 - Updated from 201803 to 201809 -# PJD 18 Jan 2019 - Updated to reflect latest conda envs, latest downloads and relevant nco indexing -# PJD 2 Jul 2019 - Updated to reflect latest conda envs, latest downloads and relevant nco indexing -# PJD 27 Jul 2021 - Updated download URLs, latest conda envs etc -# PJD 9 Sep 2021 - Updated again for the latest August 2021 data availability -# PJD 4 Nov 2021 - Updated again for the latest September 2021 data availability -# PJD 14 Jun 2022 - Updated belatedly for April 2020 data release; updated to add WORKPATH -# PJD 12 Apr 2023 - Updated for April 2023 data release; CMIP6Plus 1-2-0 -# PJD 17 Apr 2023 - Updated for Jan 2023 update; CMIP6Plus 1x1 1.2.0 release -# PJD 3 May 2023 - Updated version number to 1-1-9 after end of line OISSTv2 data identified - will publish as CMIP6Plus - -# 1.0 degree data no longer updated -# https://psl.noaa.gov/data/gridded/data.noaa.oisst.v2.html 1.0 deg -# https://psl.noaa.gov/data/gridded/data.noaa.oisst.v2.highres.html 0.25 deg - -# USER WILL NEED TO SET: -# ENVIRONMENT VARIABLES: NCARG_ROOT (and PATH to include ncl path) -# PATHS: oi2path (and diri, diro and dirm in SSTICE.Update.unf.csh) - -# More info: https://climatedataguide.ucar.edu/climate-data/merged-hadley-noaaoi-sea-surface-temperature-sea-ice-concentration-hurrell-et-al-2008 -# Doc: http://doi.org/10.1175/2008JCLI2292.1 (Hurrell et al., 2008) - -### USER TO SET ### -set condaEnv=230412 -setenv NCARG_ROOT /home/durack1/mambaforge/envs/amipbcs${condaEnv} -setenv PATH /home/durack1/mambaforge/envs/amipbcs${condaEnv}/bin:${PATH} ; # Add wrapit77, ncl, nco to PATH -setenv WORKPATH /p/user_pub/climate_work/durack1/Shared/150219_AMIPForcingData - -###### UPDATE : PATH REQUIRES UPDATING ## -## NEW DATA ## -set lastYrMn=202301 ; ## UPDATE : NEW DATA END YEAR-MONTH REQUIRES UPDATING ## -set prevYrMn=202201 ; ## UPDATE : NEW DATA START YEAR-MONTH REQUIRES UPDATING ## -set oi2path=${WORKPATH}/SST_1-1-9/ ; ## UPDATE : PATH REQUIRES UPDATING ## -set oi2icefile=MODEL.ICE.HAD187001-198110.OI198111-${lastYrMn} -set oi2sstfile=MODEL.SST.HAD187001-198110.OI198111-${lastYrMn} -set oi2unficefile=MODEL.OI2.ice.mnly.${prevYrMn}-${lastYrMn}.unf -set oi2unfsstfile=MODEL.OI2.sst.mnly.${prevYrMn}-${lastYrMn}.unf -## OLD DATA - are more than two years of data being downloaded? ## -set prevLastYrMn=202205 ; ## UPDATE : PREVIOUS END YEAR-MONTH REQUIRES UPDATING ## -set oi2oldpath=${WORKPATH}/SST_1-1-8/ ; ## UPDATE : PATH REQUIRES UPDATING ## -set oi2oldicefile=MODEL.ICE.HAD187001-198110.OI198111-${prevLastYrMn} -set oi2oldsstfile=MODEL.SST.HAD187001-198110.OI198111-${prevLastYrMn} -###### - -set date=`date +%y%m%d` -cd ${oi2path} - -\rm -r -f ${date} ; # Purge if exists -\mkdir ${date} -cd ${date} - -### Step 1 - get most up-to-date files, most bi-yearly updates will only require a single call ### -# 2023 -set currentYear=`date +%y` -set acceptList=oiv2mon.20${currentYear} -#set url1=ftp://ftp.emc.ncep.noaa.gov/cmb/sst/oimonth_v2/ -set url2=ftp://ftp.cpc.ncep.noaa.gov/precip/PORT/sst/oimonth_v2/ -echo 'downloading '${acceptList}\*.gz -\wget -o ../${date}_log.txt -nv -nc -nH --cut-dirs=4 -rl1 -A ${acceptList}\*.gz --no-check-certificate ${url2} -# 2022 -set previousYear=`expr ${currentYear} - 1` -set previousYear=oiv2mon.20${previousYear} -echo 'downloading '${previousYear}\*.gz -\wget -a ../${date}_log.txt -nv -nc -nH --cut-dirs=4 -rl1 -A ${previousYear}\*.gz --no-check-certificate ${url2} -# 2021 - not needed, recent updated only includes two current and previous year -#set previousYear=`expr ${currentYear} - 2` -#set previousYear=oiv2mon.20${previousYear} -#echo 'downloading '${previousYear}\*.gz -#\wget -a ../${date}_log.txt -nv -nc -nH --cut-dirs=3 -rl1 -A ${previousYear}\*.gz --no-check-certificate ${url1} - -### Step 2 - unzip files ### -\gunzip *.gz - -### Step 3 - invoke SSTICE.Update.unf.csh ### -# This step requires NCL installed -cd ${oi2path} -###### UPDATE : REQUIRES UPDATING ## -./SSTICE.Update.unf.csh ; ## UPDATE : REQUIRES EDITING TO POINT TO NEW DATA PATH ${date} ## -###### - -### Step 4 - Interrogate files to make sure things are ok ### -# SST_COMPARE.ncl will generate some slices to peruse - -### Step 5 - Extract months of data to append to previous files ### -# Extract only 'new' months, Here 12 months and 'time' index values: -# e.g 3,14 (April 2015 through March 2016) -# 5,15 (June 2015 through April 2016) -# 16,20 (May 2016 through September 2016) -# 9,14 (October 2016 through March 2017) ; Note 0 indexing -# 15,20 (April 2017 through September 2017) -# 9,14 (Sept 2017 through March 2018) -# 15,20 (April 2018 through September 2018) -# 3,8 (April 2018 through September 2018) note 0 indexing ; Run 190118 -# 9,14 (October 2018 through March 2019) note 0 indexing ; Run 190702 -# 3,31 (April 2019 through August 2021) note 0 indexing ; Run 210909 -# 3,32 (April 2019 through September 2021) note 0 indexing ; Run 211104 -# 3,33 (April 2019 through October 2021) note 0 indexing ; Run 211115 -# 10, 16 (November 2021 through May 2022); Run 220614 -# 5, 12 (June 2022 through Jan 2023); Run 230412 - - -###### UPDATE : YEARS REQUIRE UPDATING ## -ncks -O -h -d time,5,12 ${oi2unficefile}.nc ICE.update.nc ; # Extract months ## UPDATE : INDEXED MONTHS REQUIRE UPDATING ## -ncks -O -h -d time,5,12 ${oi2unfsstfile}.nc SST.update.nc ; ## UPDATE : INDEXED MONTHS REQUIRE UPDATING - LAST EDIT REQUIRED ## -# Make sure updates went correctly ... only the 12 new months, Check 'date' variable -###### -# Check times of new updates -echo '**********' -echo 'Update file time extent' -#ncdump -v date ICE.update.nc -ncdump -v date SST.update.nc -# Check times of older files -echo '**********' -echo 'Previous file time extent' -#ncdump -v date ${oi2oldpath}MODEL.SST.HAD187001-198110.OI198111-201903.nc -ncdump -v date ${oi2oldpath}${oi2oldsstfile}.nc - -### Step 6 - Append new months onto existing data ### -# Purge existing files and merge old and new files -rm -f MODEL.ICE.HAD187001-198110.OI198111-*.nc -echo "if rm: No match. - no cleanup required" -ncrcat ${oi2oldpath}${oi2oldicefile}.nc ICE.update.nc ${oi2icefile}.nc -rm -f MODEL.SST.HAD187001-198110.OI198111-*.nc -echo "if rm: No match. - no cleanup required" -ncrcat ${oi2oldpath}${oi2oldsstfile}.nc SST.update.nc ${oi2sstfile}.nc -# Make sure updates went correctly -echo '**********' -echo 'Updated file time extent' -ncdump -v date ${oi2sstfile}.nc -# Purge partial new files -rm -f ICE.update.nc ; # These may not purge do to a file handle being unreleased by ncrcat -rm -f ${oi2unficefile}.nc -rm -f SST.update.nc -rm -f ${oi2unfsstfile}.nc -###### - -### Step 7 - Zip up source data and archive codes ### -echo "Archive source data and purge temp ${date} directory.." -rm -f ${date}.tar.bz2 -tar -cjf ${date}.tar.bz2 ${date} ${date}_log.txt download.sh coast_land_NearNbor.f consistent.f lstags.onedeg.dat SST_COMPARE.ncl SSTICE.Update.unf.csh ; # Archive using bzip2 compression -# Extract using >tar -xjf ${date}.tar.bz2 -# Purge directory -rm -rf ${date} -echo "${date}_AMIP.nc download complete.." -# Conditionally clean up existing versions of files and archive -if ( $1 != "" ) then - \tar -cjf ${1}_archive.tar.bz2 ${1}*.* ; # Archive using bzip2 compression - \rm -f ${1}.tar.bz2 - \rm -f ${1}_log.txt -endif - -: <<-- -comments --- \ No newline at end of file diff --git a/SST_1-1-9-release/lstags.onedeg.dat b/SST_1-1-9-release/lstags.onedeg.dat deleted file mode 100755 index da18367..0000000 Binary files a/SST_1-1-9-release/lstags.onedeg.dat and /dev/null differ diff --git a/Tables/input4MIPs_CV.json b/Tables/input4MIPs_CV.json index dfb7d2d..97502d6 100644 --- a/Tables/input4MIPs_CV.json +++ b/Tables/input4MIPs_CV.json @@ -83,9 +83,21 @@ "grz":"regridded zonal mean data reported on the data provider's preferred latitude target grid" }, "institution_id":{ - "PCMDI":"Program for Climate Model Diagnosis and Intercomparison, Lawrence Livermore National Laboratory, Livermore, CA 94550, USA" + "PCMDI":"Program for Climate Model Diagnosis and Intercomparison, Lawrence Livermore National Laboratory, Livermore, CA 94550, USA (ROR: https://ror.org/02k3nmd98)" + }, + "license":{ + "license_id":{ + "CC BY 4.0":{ + "license_type":"Creative Commons Attribution 4.0 International", + "license_url":"https://creativecommons.org/licenses/by/4.0/" + }, + "CC0 1.0":{ + "license_type":"Creative Commons CC0 1.0 Universal Public Domain Dedication", + "license_url":"https://creativecommons.org/publicdomain/zero/1.0/" + } + }, + "license_template":"; input4MIPs data produced by is licensed under a License (). Consult https://pcmdi.llnl.gov/CMIP6/TermsOfUse for terms of use governing input4MIPs output, including citation requirements and proper acknowledgment. The data producers and data providers make no warranty, either express or implied, including, but not limited to, warranties of merchantability and fitness for a particular purpose. All liabilities arising from the supply of the information (including any liability arising in negligence) are excluded to the fullest extent permitted by law." }, - "license":" data produced by is licensed under a Creative Commons Attribution 4.0 International License (CC BY 4.0; https://creativecommons.org/licenses/by/4.0/). Consult https://pcmdi.llnl.gov/CMIP6/TermsOfUse for terms of use governing input4MIPs output, including citation requirements and proper acknowledgment. Further information about this data, including some limitations, can be found via the further_info_url (recorded as a global attribute in this file). The data producers and data providers make no warranty, either express or implied, including, but not limited to, warranties of merchantability and fitness for a particular purpose. All liabilities arising from the supply of the information (including any liability arising in negligence) are excluded to the fullest extent permitted by law.", "mip_era":[ "AMIP1", "AMIP2", @@ -95,7 +107,8 @@ "CMIP5", "CMIP6", "CMIP6Plus", - "CMIP7" + "CMIP7", + "CMIP7Plus" ], "nominal_resolution":[ "0.5 km", @@ -211,6 +224,7 @@ "institution", "institution_id", "license", + "license_id", "mip_era", "nominal_resolution", "realm", @@ -225,26 +239,104 @@ "variable_id" ], "source_id":{ + "PCMDI-AMIP-1-1-0":{ + "comment":"Based on Hurrell SST/sea ice consistency criteria applied to merged HadISST v1.0 (1870-01 to 1981-10) & NCEP-0I2 v2.0 (1981-11 to 2015-12)", + "contact":"Paul J. Durack (durack1@llnl.gov; pauldurack@gmail.com); Karl E. Taylor (taylor13@llnl.gov); PCMDI (pcmdi-cmip@llnl.gov)", + "data_repo":"https://github.com/PCMDI/amipbcs", + "dataset_category":"SSTsAndSeaIce", + "doi":"10.22033/ESGF/input4MIPs.1120", + "further_info_url":"https://pcmdi.llnl.gov/mips/amip", + "grid":"1x1 degree longitude x latitude", + "grid_label":"gn", + "institution":"Program for Climate Model Diagnosis and Intercomparison, Lawrence Livermore National Laboratory, Livermore, CA 94550, USA (ROR: https://ror.org/02k3nmd98)", + "institution_id":"PCMDI", + "license_id":"CC BY 4.0", + "mip_era":"CMIP6", + "nominal_resolution":"1x1 degree", + "product":"observations", + "references_bcs":"Taylor, K.E., D. Williamson and F. Zwiers, 2000: The sea surface temperature and sea ice concentration boundary conditions for AMIP II simulations. PCMDI Report 60, Program for Climate Model Diagnosis and Intercomparison, Lawrence Livermore National Laboratory, 25 pp. Available online: https://pcmdi.llnl.gov/report/pdf/60.pdf", + "references_obs":"Hurrell, J. W., J. J. Hack, D. Shea, J. M. Caron, and J. Rosinski (2008) A New Sea Surface Temperature and Sea Ice Boundary Dataset for the Community Atmosphere Model. J. Climate, 22 (19), pp 5145-5153. doi: 10.1175/2008JCLI2292.1", + "region":[ + "global_ocean" + ], + "release_year":"2016", + "source":"PCMDI-AMIP 1.1.0: Merged SST based on UK MetOffice HadISST v1.0 and NCEP OI2 v2.0", + "source_description":"Sea surface temperature and sea-ice datasets produced by PCMDI (LLNL) for the AMIP (DECK) experiment of CMIP6", + "source_id":"PCMDI-AMIP-1-1-0", + "source_type":"satellite_blended", + "source_variables":[ + "areacello", + "sftof", + "siconc", + "siconcbcs", + "tos", + "tosbcs" + ], + "source_version":"1.1.0", + "target_mip":"CMIP", + "title":"PCMDI-AMIP 1.1.0 dataset prepared for input4MIPs" + }, + "PCMDI-AMIP-1-1-1":{ + "comment":"Based on Hurrell SST/sea ice consistency criteria applied to merged HadISST v1.0 (1870-01 to 1981-10) & NCEP-0I2 v2.0 (1981-11 to 2016-06)", + "contact":"Paul J. Durack (durack1@llnl.gov; pauldurack@gmail.com); Karl E. Taylor (taylor13@llnl.gov); PCMDI (pcmdi-cmip@llnl.gov)", + "data_repo":"https://github.com/PCMDI/amipbcs", + "dataset_category":"SSTsAndSeaIce", + "doi":"10.22033/ESGF/input4MIPs.1128", + "further_info_url":"https://pcmdi.llnl.gov/mips/amip", + "grid":"1x1 degree longitude x latitude", + "grid_label":"gn", + "institution":"Program for Climate Model Diagnosis and Intercomparison, Lawrence Livermore National Laboratory, Livermore, CA 94550, USA (ROR: https://ror.org/02k3nmd98)", + "institution_id":"PCMDI", + "license_id":"CC BY 4.0", + "mip_era":"CMIP6", + "nominal_resolution":"1x1 degree", + "product":"observations", + "references_bcs":"Taylor, K.E., D. Williamson and F. Zwiers, 2000: The sea surface temperature and sea ice concentration boundary conditions for AMIP II simulations. PCMDI Report 60, Program for Climate Model Diagnosis and Intercomparison, Lawrence Livermore National Laboratory, 25 pp. Available online: https://pcmdi.llnl.gov/report/pdf/60.pdf", + "references_obs":"Hurrell, J. W., J. J. Hack, D. Shea, J. M. Caron, and J. Rosinski (2008) A New Sea Surface Temperature and Sea Ice Boundary Dataset for the Community Atmosphere Model. J. Climate, 22 (19), pp 5145-5153. doi: 10.1175/2008JCLI2292.1", + "region":[ + "global_ocean" + ], + "release_year":"2016", + "source":"PCMDI-AMIP 1.1.1: Merged SST based on UK MetOffice HadISST v1.0 and NCEP OI2 v2.0", + "source_description":"Sea surface temperature and sea-ice datasets produced by PCMDI (LLNL) for the AMIP (DECK) experiment of CMIP6", + "source_id":"PCMDI-AMIP-1-1-1", + "source_type":"satellite_blended", + "source_variables":[ + "areacello", + "sftof", + "siconc", + "siconcbcs", + "tos", + "tosbcs" + ], + "source_version":"1.1.1", + "target_mip":"CMIP", + "title":"PCMDI-AMIP 1.1.1 dataset prepared for input4MIPs" + }, "PCMDI-AMIP-1-1-10":{ "calendar":"gregorian", - "comment":"Based on Hurrell SST/sea ice consistency criteria applied to merged HadISST (1870-01 to 1981-10) & NCEP-0I2 (1981-11 to 2022-12)", - "contact":"PCMDI (pcmdi-cmip@llnl.gov)", + "comment":"Based on Hurrell SST/sea ice consistency criteria applied to merged HadISST v1.0 (1870-01 to 1981-10) & NCEP-0I2 v2.0 (1981-11 to 2022-12)", + "contact":"Paul J. Durack (durack1@llnl.gov; pauldurack@gmail.com); Karl E. Taylor (taylor13@llnl.gov); PCMDI (pcmdi-cmip@llnl.gov)", + "data_repo":"https://github.com/PCMDI/amipbcs", + "data_update_notes":"v1.1.9 and v1.1.10 differences: this update changes a single month (Dec-22) erroneous sea ice concentration (siconc). Due to the tapering affect of the 'diddling' method, some very small changes (<1 percent) can be seen starting in August 2022 in diddled fields (siconcbcs). For v1.1.10 a climatology-anomaly infill was undertaken, replacing the Dec-22 problem values. For more details, see https://nbviewer.org/github/durack1/notebooks/blob/main/jlnbs/PCMDI-AMIP-queryOISST2-0Data.ipynb; There are no changes to either the SST (tos) or diddled SST (tosbcs) fields; NOAA OISST v2.0 data was deprecated in February 2023, and no further PCMDI-AMIP-1-x-y updates will be produced. Ongoing discussions focused on a v2.0 product continue, see https://github.com/PCMDI/amipbcs/issues/6.", "dataset_category":"SSTsAndSeaIce", + "doi":"10.25981/ESGF.input4MIPs.CMIP7/2575015", "further_info_url":"https://pcmdi.llnl.gov/mips/amip", "grid":"1x1 degree longitude x latitude", "grid_label":"gn", - "institution":"Program for Climate Model Diagnosis and Intercomparison, Lawrence Livermore National Laboratory, Livermore, CA 94550, USA", + "institution":"Program for Climate Model Diagnosis and Intercomparison, Lawrence Livermore National Laboratory, Livermore, CA 94550, USA (ROR: https://ror.org/02k3nmd98)", "institution_id":"PCMDI", - "license":"AMIP boundary condition data produced by PCMDI is licensed under a Creative Commons Attribution 4.0 International License (CC BY 4.0; https://creativecommons.org/licenses/by/4.0). Consult https://pcmdi.llnl.gov/CMIP6/TermsOfUse for terms of use governing input4MIPs output, including citation requirements and proper acknowledgment. Further information about this data, including some limitations, can be found via the further_info_url (recorded as a global attribute in this file). The data producers and data providers make no warranty, either express or implied, including, but not limited to, warranties of merchantability and fitness for a particular purpose. All liabilities arising from the supply of the information (including any liability arising in negligence) are excluded to the fullest extent permitted by law", + "license_id":"CC BY 4.0", "mip_era":"CMIP7", "nominal_resolution":"1x1 degree", "product":"observations", - "references":"Taylor, K.E., D. Williamson and F. Zwiers, 2000: The sea surface temperature and sea ice concentration boundary conditions for AMIP II simulations. PCMDI Report 60, Program for Climate Model Diagnosis and Intercomparison, Lawrence Livermore National Laboratory, 25 pp. Available online: https://pcmdi.llnl.gov/report/pdf/60.pdf", + "references_bcs":"Taylor, K.E., D. Williamson and F. Zwiers, 2000: The sea surface temperature and sea ice concentration boundary conditions for AMIP II simulations. PCMDI Report 60, Program for Climate Model Diagnosis and Intercomparison, Lawrence Livermore National Laboratory, 25 pp. Available online: https://pcmdi.llnl.gov/report/pdf/60.pdf", + "references_obs":"Hurrell, J. W., J. J. Hack, D. Shea, J. M. Caron, and J. Rosinski (2008) A New Sea Surface Temperature and Sea Ice Boundary Dataset for the Community Atmosphere Model. J. Climate, 22 (19), pp 5145-5153. doi: 10.1175/2008JCLI2292.1", "region":[ "global_ocean" ], "release_year":"2025", - "source":"PCMDI-AMIP 1.1.10: Merged SST based on UK MetOffice HadISST and NCEP OI2", + "source":"PCMDI-AMIP 1.1.10: Merged SST based on UK MetOffice HadISST v1.0 and NCEP OI2 v2.0", "source_description":"Sea surface temperature and sea-ice datasets produced by PCMDI (LLNL) for the AMIP (DECK) experiment of CMIP7", "source_id":"PCMDI-AMIP-1-1-10", "source_type":"satellite_blended", @@ -260,28 +352,102 @@ "target_mip":"CMIP", "title":"PCMDI-AMIP 1.1.10 dataset prepared for input4MIPs" }, + "PCMDI-AMIP-1-1-2":{ + "comment":"Based on Hurrell SST/sea ice consistency criteria applied to merged HadISST v1.0 (1870-01 to 1981-10) & NCEP-0I2 v2.0 (1981-11 to 2016-12)", + "contact":"Paul J. Durack (durack1@llnl.gov; pauldurack@gmail.com); Karl E. Taylor (taylor13@llnl.gov); PCMDI (pcmdi-cmip@llnl.gov)", + "data_repo":"https://github.com/PCMDI/amipbcs", + "dataset_category":"SSTsAndSeaIce", + "doi":"10.22033/ESGF/input4MIPs.1161", + "further_info_url":"https://pcmdi.llnl.gov/mips/amip", + "grid":"1x1 degree longitude x latitude", + "grid_label":"gn", + "institution":"Program for Climate Model Diagnosis and Intercomparison, Lawrence Livermore National Laboratory, Livermore, CA 94550, USA (ROR: https://ror.org/02k3nmd98)", + "institution_id":"PCMDI", + "license_id":"CC BY 4.0", + "mip_era":"CMIP6", + "nominal_resolution":"1x1 degree", + "product":"observations", + "references_bcs":"Taylor, K.E., D. Williamson and F. Zwiers, 2000: The sea surface temperature and sea ice concentration boundary conditions for AMIP II simulations. PCMDI Report 60, Program for Climate Model Diagnosis and Intercomparison, Lawrence Livermore National Laboratory, 25 pp. Available online: https://pcmdi.llnl.gov/report/pdf/60.pdf", + "references_obs":"Hurrell, J. W., J. J. Hack, D. Shea, J. M. Caron, and J. Rosinski (2008) A New Sea Surface Temperature and Sea Ice Boundary Dataset for the Community Atmosphere Model. J. Climate, 22 (19), pp 5145-5153. doi: 10.1175/2008JCLI2292.1", + "region":[ + "global_ocean" + ], + "release_year":"2017", + "source":"PCMDI-AMIP 1.1.2: Merged SST based on UK MetOffice HadISST v1.0 and NCEP OI2 v2.0", + "source_description":"Sea surface temperature and sea-ice datasets produced by PCMDI (LLNL) for the AMIP (DECK) experiment of CMIP6", + "source_id":"PCMDI-AMIP-1-1-2", + "source_type":"satellite_blended", + "source_variables":[ + "areacello", + "sftof", + "siconc", + "siconcbcs", + "tos", + "tosbcs" + ], + "source_version":"1.1.2", + "target_mip":"CMIP", + "title":"PCMDI-AMIP 1.1.2 dataset prepared for input4MIPs" + }, "PCMDI-AMIP-1-1-3":{ + "comment":"Based on Hurrell SST/sea ice consistency criteria applied to merged HadISST v1.0 (1870-01 to 1981-10) & NCEP-0I2 v2.0 (1981-11 to 2017-06)", + "contact":"Paul J. Durack (durack1@llnl.gov; pauldurack@gmail.com); Karl E. Taylor (taylor13@llnl.gov); PCMDI (pcmdi-cmip@llnl.gov)", + "data_repo":"https://github.com/PCMDI/amipbcs", + "dataset_category":"SSTsAndSeaIce", + "doi":"10.22033/ESGF/input4MIPs.1735", + "further_info_url":"https://pcmdi.llnl.gov/mips/amip", + "grid":"1x1 degree longitude x latitude", + "grid_label":"gn", + "institution":"Program for Climate Model Diagnosis and Intercomparison, Lawrence Livermore National Laboratory, Livermore, CA 94550, USA (ROR: https://ror.org/02k3nmd98)", + "institution_id":"PCMDI", + "license_id":"CC BY 4.0", "mip_era":"CMIP6", - "source":"PCMDI-AMIP 1.1.3: Merged SST based on UK MetOffice HadISST and NCEP OI2" + "nominal_resolution":"1x1 degree", + "product":"observations", + "references_bcs":"Taylor, K.E., D. Williamson and F. Zwiers, 2000: The sea surface temperature and sea ice concentration boundary conditions for AMIP II simulations. PCMDI Report 60, Program for Climate Model Diagnosis and Intercomparison, Lawrence Livermore National Laboratory, 25 pp. Available online: https://pcmdi.llnl.gov/report/pdf/60.pdf", + "references_obs":"Hurrell, J. W., J. J. Hack, D. Shea, J. M. Caron, and J. Rosinski (2008) A New Sea Surface Temperature and Sea Ice Boundary Dataset for the Community Atmosphere Model. J. Climate, 22 (19), pp 5145-5153. doi: 10.1175/2008JCLI2292.1", + "region":[ + "global_ocean" + ], + "release_year":"2017", + "source":"PCMDI-AMIP 1.1.3: Merged SST based on UK MetOffice HadISST v1.0 and NCEP OI2 v2.0", + "source_description":"Sea surface temperature and sea-ice datasets produced by PCMDI (LLNL) for the AMIP (DECK) experiment of CMIP6", + "source_id":"PCMDI-AMIP-1-1-3", + "source_type":"satellite_blended", + "source_variables":[ + "areacello", + "sftof", + "siconc", + "siconcbcs", + "tos", + "tosbcs" + ], + "source_version":"1.1.3", + "target_mip":"CMIP", + "title":"PCMDI-AMIP 1.1.3 dataset prepared for input4MIPs" }, "PCMDI-AMIP-1-1-4":{ - "comment":"Based on Hurrell SST/sea ice consistency criteria applied to merged HadISST (1870-01 to 1981-10) & NCEP-0I2 (1981-11 to 2017-12)", - "contact":"PCMDI (pcmdi-cmip@llnl.gov)", + "comment":"Based on Hurrell SST/sea ice consistency criteria applied to merged HadISST v1.0 (1870-01 to 1981-10) & NCEP-0I2 v2.0 (1981-11 to 2017-12)", + "contact":"Paul J. Durack (durack1@llnl.gov; pauldurack@gmail.com); Karl E. Taylor (taylor13@llnl.gov); PCMDI (pcmdi-cmip@llnl.gov)", + "data_repo":"https://github.com/PCMDI/amipbcs", "dataset_category":"SSTsAndSeaIce", + "doi":"10.22033/ESGF/input4MIPs.2204", "further_info_url":"https://pcmdi.llnl.gov/mips/amip", "grid":"1x1 degree longitude x latitude", "grid_label":"gn", - "institution":"Program for Climate Model Diagnosis and Intercomparison, Lawrence Livermore National Laboratory, Livermore, CA 94550, USA", + "institution":"Program for Climate Model Diagnosis and Intercomparison, Lawrence Livermore National Laboratory, Livermore, CA 94550, USA (ROR: https://ror.org/02k3nmd98)", "institution_id":"PCMDI", + "license_id":"CC BY 4.0", "mip_era":"CMIP6", "nominal_resolution":"1x1 degree", "product":"observations", - "references":"Taylor, K.E., D. Williamson and F. Zwiers, 2000: The sea surface temperature and sea ice concentration boundary conditions for AMIP II simulations. PCMDI Report 60, Program for Climate Model Diagnosis and Intercomparison, Lawrence Livermore National Laboratory, 25 pp. Available online: https://pcmdi.llnl.gov/report/pdf/60.pdf", + "references_bcs":"Taylor, K.E., D. Williamson and F. Zwiers, 2000: The sea surface temperature and sea ice concentration boundary conditions for AMIP II simulations. PCMDI Report 60, Program for Climate Model Diagnosis and Intercomparison, Lawrence Livermore National Laboratory, 25 pp. Available online: https://pcmdi.llnl.gov/report/pdf/60.pdf", + "references_obs":"Hurrell, J. W., J. J. Hack, D. Shea, J. M. Caron, and J. Rosinski (2008) A New Sea Surface Temperature and Sea Ice Boundary Dataset for the Community Atmosphere Model. J. Climate, 22 (19), pp 5145-5153. doi: 10.1175/2008JCLI2292.1", "region":[ "global_ocean" ], "release_year":"2018", - "source":"PCMDI-AMIP 1.1.4: Merged SST based on UK MetOffice HadISST and NCEP OI2", + "source":"PCMDI-AMIP 1.1.4: Merged SST based on UK MetOffice HadISST v1.0 and NCEP OI2 v2.0", "source_description":"Sea surface temperature and sea-ice datasets produced by PCMDI (LLNL) for the AMIP (DECK) experiment of CMIP6", "source_id":"PCMDI-AMIP-1-1-4", "source_type":"satellite_blended", @@ -298,23 +464,27 @@ "title":"PCMDI-AMIP 1.1.4 dataset prepared for input4MIPs" }, "PCMDI-AMIP-1-1-5":{ - "comment":"Based on Hurrell SST/sea ice consistency criteria applied to merged HadISST (1870-01 to 1981-10) & NCEP-0I2 (1981-11 to 2018-06)", - "contact":"PCMDI (pcmdi-cmip@llnl.gov)", + "comment":"Based on Hurrell SST/sea ice consistency criteria applied to merged HadISST v1.0 (1870-01 to 1981-10) & NCEP-0I2 v2.0 (1981-11 to 2018-06)", + "contact":"Paul J. Durack (durack1@llnl.gov; pauldurack@gmail.com); Karl E. Taylor (taylor13@llnl.gov); PCMDI (pcmdi-cmip@llnl.gov)", + "data_repo":"https://github.com/PCMDI/amipbcs", "dataset_category":"SSTsAndSeaIce", + "doi":"10.22033/ESGF/input4MIPs.9942", "further_info_url":"https://pcmdi.llnl.gov/mips/amip", "grid":"1x1 degree longitude x latitude", "grid_label":"gn", - "institution":"Program for Climate Model Diagnosis and Intercomparison, Lawrence Livermore National Laboratory, Livermore, CA 94550, USA", + "institution":"Program for Climate Model Diagnosis and Intercomparison, Lawrence Livermore National Laboratory, Livermore, CA 94550, USA (ROR: https://ror.org/02k3nmd98)", "institution_id":"PCMDI", + "license_id":"CC BY 4.0", "mip_era":"CMIP6", "nominal_resolution":"1x1 degree", "product":"observations", - "references":"Taylor, K.E., D. Williamson and F. Zwiers, 2000: The sea surface temperature and sea ice concentration boundary conditions for AMIP II simulations. PCMDI Report 60, Program for Climate Model Diagnosis and Intercomparison, Lawrence Livermore National Laboratory, 25 pp. Available online: https://pcmdi.llnl.gov/report/pdf/60.pdf", + "references_bcs":"Taylor, K.E., D. Williamson and F. Zwiers, 2000: The sea surface temperature and sea ice concentration boundary conditions for AMIP II simulations. PCMDI Report 60, Program for Climate Model Diagnosis and Intercomparison, Lawrence Livermore National Laboratory, 25 pp. Available online: https://pcmdi.llnl.gov/report/pdf/60.pdf", + "references_obs":"Hurrell, J. W., J. J. Hack, D. Shea, J. M. Caron, and J. Rosinski (2008) A New Sea Surface Temperature and Sea Ice Boundary Dataset for the Community Atmosphere Model. J. Climate, 22 (19), pp 5145-5153. doi: 10.1175/2008JCLI2292.1", "region":[ "global_ocean" ], "release_year":"2018", - "source":"PCMDI-AMIP 1.1.5: Merged SST based on UK MetOffice HadISST and NCEP OI2", + "source":"PCMDI-AMIP 1.1.5: Merged SST based on UK MetOffice HadISST v1.0 and NCEP OI2 v2.0", "source_description":"Sea surface temperature and sea-ice datasets produced by PCMDI (LLNL) for the AMIP (DECK) experiment of CMIP6", "source_id":"PCMDI-AMIP-1-1-5", "source_type":"satellite_blended", @@ -331,23 +501,27 @@ "title":"PCMDI-AMIP 1.1.5 dataset prepared for input4MIPs" }, "PCMDI-AMIP-1-1-6":{ - "comment":"Based on Hurrell SST/sea ice consistency criteria applied to merged HadISST (1870-01 to 1981-10) & NCEP-0I2 (1981-11 to 2018-12)", - "contact":"PCMDI (pcmdi-cmip@llnl.gov)", + "comment":"Based on Hurrell SST/sea ice consistency criteria applied to merged HadISST v1.0 (1870-01 to 1981-10) & NCEP-0I2 v2.0 (1981-11 to 2018-12)", + "contact":"Paul J. Durack (durack1@llnl.gov; pauldurack@gmail.com); Karl E. Taylor (taylor13@llnl.gov); PCMDI (pcmdi-cmip@llnl.gov)", + "data_repo":"https://github.com/PCMDI/amipbcs", "dataset_category":"SSTsAndSeaIce", + "doi":"10.22033/ESGF/input4MIPs.12381", "further_info_url":"https://pcmdi.llnl.gov/mips/amip", "grid":"1x1 degree longitude x latitude", "grid_label":"gn", - "institution":"Program for Climate Model Diagnosis and Intercomparison, Lawrence Livermore National Laboratory, Livermore, CA 94550, USA", + "institution":"Program for Climate Model Diagnosis and Intercomparison, Lawrence Livermore National Laboratory, Livermore, CA 94550, USA (ROR: https://ror.org/02k3nmd98)", "institution_id":"PCMDI", + "license_id":"CC BY 4.0", "mip_era":"CMIP6", "nominal_resolution":"1x1 degree", "product":"observations", - "references":"Taylor, K.E., D. Williamson and F. Zwiers, 2000: The sea surface temperature and sea ice concentration boundary conditions for AMIP II simulations. PCMDI Report 60, Program for Climate Model Diagnosis and Intercomparison, Lawrence Livermore National Laboratory, 25 pp. Available online: https://pcmdi.llnl.gov/report/pdf/60.pdf", + "references_bcs":"Taylor, K.E., D. Williamson and F. Zwiers, 2000: The sea surface temperature and sea ice concentration boundary conditions for AMIP II simulations. PCMDI Report 60, Program for Climate Model Diagnosis and Intercomparison, Lawrence Livermore National Laboratory, 25 pp. Available online: https://pcmdi.llnl.gov/report/pdf/60.pdf", + "references_obs":"Hurrell, J. W., J. J. Hack, D. Shea, J. M. Caron, and J. Rosinski (2008) A New Sea Surface Temperature and Sea Ice Boundary Dataset for the Community Atmosphere Model. J. Climate, 22 (19), pp 5145-5153. doi: 10.1175/2008JCLI2292.1", "region":[ "global_ocean" ], "release_year":"2019", - "source":"PCMDI-AMIP 1.1.6: Merged SST based on UK MetOffice HadISST and NCEP OI2", + "source":"PCMDI-AMIP 1.1.6: Merged SST based on UK MetOffice HadISST v1.0 and NCEP OI2 v2.0", "source_description":"Sea surface temperature and sea-ice datasets produced by PCMDI (LLNL) for the AMIP (DECK) experiment of CMIP6", "source_id":"PCMDI-AMIP-1-1-6", "source_type":"satellite_blended", @@ -365,23 +539,27 @@ }, "PCMDI-AMIP-1-1-7":{ "calendar":"gregorian", - "comment":"Based on Hurrell SST/sea ice consistency criteria applied to merged HadISST (1870-01 to 1981-10) & NCEP-0I2 (1981-11 to 2021-06)", - "contact":"PCMDI (pcmdi-cmip@llnl.gov)", + "comment":"Based on Hurrell SST/sea ice consistency criteria applied to merged HadISST v1.0 (1870-01 to 1981-10) & NCEP-0I2 v2.0 (1981-11 to 2021-06)", + "contact":"Paul J. Durack (durack1@llnl.gov; pauldurack@gmail.com); Karl E. Taylor (taylor13@llnl.gov); PCMDI (pcmdi-cmip@llnl.gov)", + "data_repo":"https://github.com/PCMDI/amipbcs", "dataset_category":"SSTsAndSeaIce", + "doi":"10.22033/ESGF/input4MIPs.16485", "further_info_url":"https://pcmdi.llnl.gov/mips/amip", "grid":"1x1 degree longitude x latitude", "grid_label":"gn", - "institution":"Program for Climate Model Diagnosis and Intercomparison, Lawrence Livermore National Laboratory, Livermore, CA 94550, USA", + "institution":"Program for Climate Model Diagnosis and Intercomparison, Lawrence Livermore National Laboratory, Livermore, CA 94550, USA (ROR: https://ror.org/02k3nmd98)", "institution_id":"PCMDI", + "license_id":"CC BY 4.0", "mip_era":"CMIP6", "nominal_resolution":"1x1 degree", "product":"observations", - "references":"Taylor, K.E., D. Williamson and F. Zwiers, 2000: The sea surface temperature and sea ice concentration boundary conditions for AMIP II simulations. PCMDI Report 60, Program for Climate Model Diagnosis and Intercomparison, Lawrence Livermore National Laboratory, 25 pp. Available online: https://pcmdi.llnl.gov/report/pdf/60.pdf", + "references_bcs":"Taylor, K.E., D. Williamson and F. Zwiers, 2000: The sea surface temperature and sea ice concentration boundary conditions for AMIP II simulations. PCMDI Report 60, Program for Climate Model Diagnosis and Intercomparison, Lawrence Livermore National Laboratory, 25 pp. Available online: https://pcmdi.llnl.gov/report/pdf/60.pdf", + "references_obs":"Hurrell, J. W., J. J. Hack, D. Shea, J. M. Caron, and J. Rosinski (2008) A New Sea Surface Temperature and Sea Ice Boundary Dataset for the Community Atmosphere Model. J. Climate, 22 (19), pp 5145-5153. doi: 10.1175/2008JCLI2292.1", "region":[ "global_ocean" ], "release_year":"2022", - "source":"PCMDI-AMIP 1.1.7: Merged SST based on UK MetOffice HadISST and NCEP OI2", + "source":"PCMDI-AMIP 1.1.7: Merged SST based on UK MetOffice HadISST v1.0 and NCEP OI2 v2.0", "source_description":"Sea surface temperature and sea-ice datasets produced by PCMDI (LLNL) for the AMIP (DECK) experiment of CMIP6", "source_id":"PCMDI-AMIP-1-1-7", "source_type":"satellite_blended", @@ -399,24 +577,27 @@ }, "PCMDI-AMIP-1-1-8":{ "calendar":"gregorian", - "comment":"Based on Hurrell SST/sea ice consistency criteria applied to merged HadISST (1870-01 to 1981-10) & NCEP-0I2 (1981-11 to 2021-12)", - "contact":"PCMDI (pcmdi-cmip@llnl.gov)", + "comment":"Based on Hurrell SST/sea ice consistency criteria applied to merged HadISST v1.0 (1870-01 to 1981-10) & NCEP-0I2 v2.0 (1981-11 to 2021-12)", + "contact":"Paul J. Durack (durack1@llnl.gov; pauldurack@gmail.com); Karl E. Taylor (taylor13@llnl.gov); PCMDI (pcmdi-cmip@llnl.gov)", + "data_repo":"https://github.com/PCMDI/amipbcs", "dataset_category":"SSTsAndSeaIce", + "doi":"10.22033/ESGF/input4MIPs.16921", "further_info_url":"https://pcmdi.llnl.gov/mips/amip", "grid":"1x1 degree longitude x latitude", "grid_label":"gn", - "institution":"Program for Climate Model Diagnosis and Intercomparison, Lawrence Livermore National Laboratory, Livermore, CA 94550, USA", + "institution":"Program for Climate Model Diagnosis and Intercomparison, Lawrence Livermore National Laboratory, Livermore, CA 94550, USA (ROR: https://ror.org/02k3nmd98)", "institution_id":"PCMDI", - "license":"AMIP boundary condition data produced by PCMDI is licensed under a Creative Commons Attribution 4.0 International License (CC BY 4.0; https://creativecommons.org/licenses/by/4.0). Consult https://pcmdi.llnl.gov/CMIP6/TermsOfUse for terms of use governing input4MIPs output, including citation requirements and proper acknowledgment. Further information about this data, including some limitations, can be found via the further_info_url (recorded as a global attribute in this file). The data producers and data providers make no warranty, either express or implied, including, but not limited to, warranties of merchantability and fitness for a particular purpose. All liabilities arising from the supply of the information (including any liability arising in negligence) are excluded to the fullest extent permitted by law", + "license_id":"CC BY 4.0", "mip_era":"CMIP6", "nominal_resolution":"1x1 degree", "product":"observations", - "references":"Taylor, K.E., D. Williamson and F. Zwiers, 2000: The sea surface temperature and sea ice concentration boundary conditions for AMIP II simulations. PCMDI Report 60, Program for Climate Model Diagnosis and Intercomparison, Lawrence Livermore National Laboratory, 25 pp. Available online: https://pcmdi.llnl.gov/report/pdf/60.pdf", + "references_bcs":"Taylor, K.E., D. Williamson and F. Zwiers, 2000: The sea surface temperature and sea ice concentration boundary conditions for AMIP II simulations. PCMDI Report 60, Program for Climate Model Diagnosis and Intercomparison, Lawrence Livermore National Laboratory, 25 pp. Available online: https://pcmdi.llnl.gov/report/pdf/60.pdf", + "references_obs":"Hurrell, J. W., J. J. Hack, D. Shea, J. M. Caron, and J. Rosinski (2008) A New Sea Surface Temperature and Sea Ice Boundary Dataset for the Community Atmosphere Model. J. Climate, 22 (19), pp 5145-5153. doi: 10.1175/2008JCLI2292.1", "region":[ "global_ocean" ], "release_year":"2022", - "source":"PCMDI-AMIP 1.1.8: Merged SST based on UK MetOffice HadISST and NCEP OI2", + "source":"PCMDI-AMIP 1.1.8: Merged SST based on UK MetOffice HadISST v1.0 and NCEP OI2 v2.0", "source_description":"Sea surface temperature and sea-ice datasets produced by PCMDI (LLNL) for the AMIP (DECK) experiment of CMIP6", "source_id":"PCMDI-AMIP-1-1-8", "source_type":"satellite_blended", @@ -434,24 +615,27 @@ }, "PCMDI-AMIP-1-1-9":{ "calendar":"gregorian", - "comment":"Based on Hurrell SST/sea ice consistency criteria applied to merged HadISST (1870-01 to 1981-10) & NCEP-0I2 (1981-11 to 2022-12)", - "contact":"PCMDI (pcmdi-cmip@llnl.gov)", + "comment":"Based on Hurrell SST/sea ice consistency criteria applied to merged HadISST v1.0 (1870-01 to 1981-10) & NCEP-0I2 v2.0 (1981-11 to 2022-12)", + "contact":"Paul J. Durack (durack1@llnl.gov; pauldurack@gmail.com); Karl E. Taylor (taylor13@llnl.gov); PCMDI (pcmdi-cmip@llnl.gov)", + "data_repo":"https://github.com/PCMDI/amipbcs", "dataset_category":"SSTsAndSeaIce", + "doi":"10.25981/ESGF.input4MIPs.CMIP6Plus/2583903", "further_info_url":"https://pcmdi.llnl.gov/mips/amip", "grid":"1x1 degree longitude x latitude", "grid_label":"gn", - "institution":"Program for Climate Model Diagnosis and Intercomparison, Lawrence Livermore National Laboratory, Livermore, CA 94550, USA", + "institution":"Program for Climate Model Diagnosis and Intercomparison, Lawrence Livermore National Laboratory, Livermore, CA 94550, USA (ROR: https://ror.org/02k3nmd98)", "institution_id":"PCMDI", - "license":"AMIP boundary condition data produced by PCMDI is licensed under a Creative Commons Attribution 4.0 International License (CC BY 4.0; https://creativecommons.org/licenses/by/4.0). Consult https://pcmdi.llnl.gov/CMIP6/TermsOfUse for terms of use governing input4MIPs output, including citation requirements and proper acknowledgment. Further information about this data, including some limitations, can be found via the further_info_url (recorded as a global attribute in this file). The data producers and data providers make no warranty, either express or implied, including, but not limited to, warranties of merchantability and fitness for a particular purpose. All liabilities arising from the supply of the information (including any liability arising in negligence) are excluded to the fullest extent permitted by law", + "license_id":"CC BY 4.0", "mip_era":"CMIP7", "nominal_resolution":"1x1 degree", "product":"observations", - "references":"Taylor, K.E., D. Williamson and F. Zwiers, 2000: The sea surface temperature and sea ice concentration boundary conditions for AMIP II simulations. PCMDI Report 60, Program for Climate Model Diagnosis and Intercomparison, Lawrence Livermore National Laboratory, 25 pp. Available online: https://pcmdi.llnl.gov/report/pdf/60.pdf", + "references_bcs":"Taylor, K.E., D. Williamson and F. Zwiers, 2000: The sea surface temperature and sea ice concentration boundary conditions for AMIP II simulations. PCMDI Report 60, Program for Climate Model Diagnosis and Intercomparison, Lawrence Livermore National Laboratory, 25 pp. Available online: https://pcmdi.llnl.gov/report/pdf/60.pdf", + "references_obs":"Hurrell, J. W., J. J. Hack, D. Shea, J. M. Caron, and J. Rosinski (2008) A New Sea Surface Temperature and Sea Ice Boundary Dataset for the Community Atmosphere Model. J. Climate, 22 (19), pp 5145-5153. doi: 10.1175/2008JCLI2292.1", "region":[ "global_ocean" ], "release_year":"2025", - "source":"PCMDI-AMIP 1.1.10: Merged SST based on UK MetOffice HadISST and NCEP OI2", + "source":"PCMDI-AMIP 1.1.9: Merged SST based on UK MetOffice HadISST v1.0 and NCEP OI2 v2.0", "source_description":"Sea surface temperature and sea-ice datasets produced by PCMDI (LLNL) for the AMIP (DECK) experiment of CMIP7", "source_id":"PCMDI-AMIP-1-1-10", "source_type":"satellite_blended", @@ -466,6 +650,111 @@ "source_version":"1.1.10", "target_mip":"CMIP", "title":"PCMDI-AMIP 1.1.10 dataset prepared for input4MIPs" + }, + "PCMDI-AMIP-ERSST5-1-0":{ + "calendar":"gregorian", + "comment":"Based on Hurrell SST/sea ice consistency criteria applied to merged HadISST v1.0 (1870-01 to 1981-10) & NCEP-0ISST v2.0 (1981-11 to 2022-12) and overwritten with ERSST v5.0 data where present (1870-01 to 2022-12)", + "contact":"Paul J. Durack (durack1@llnl.gov; pauldurack@gmail.com); Mark D. Zelinka (zelinka1@llnl.gov); PCMDI (pcmdi-cmip@llnl.gov)", + "data_repo":"https://github.com/PCMDI/amipbcs", + "dataset_category":"SSTsAndSeaIce", + "doi":"10.25981/ESGF.input4MIPs.CMIP7Plus/2584105", + "further_info_url":"https://pcmdi.llnl.gov/mips/amip", + "grid":"1x1 degree longitude x latitude", + "grid_label":"gn", + "institution":"Program for Climate Model Diagnosis and Intercomparison, Lawrence Livermore National Laboratory, Livermore, CA 94550, USA (ROR: https://ror.org/02k3nmd98)", + "institution_id":"PCMDI", + "license_id":"CC BY 4.0", + "mip_era":"CMIP7Plus", + "mip_specs":"AMIP CMIP5 CMIP6 CMIP6Plus CMIP7 CMIP7Plus", + "nominal_resolution":"1x1 degree", + "product":"observations", + "references_bcs":"Taylor, K.E., D. Williamson and F. Zwiers, 2000: The sea surface temperature and sea ice concentration boundary conditions for AMIP II simulations. PCMDI Report 60, Program for Climate Model Diagnosis and Intercomparison, Lawrence Livermore National Laboratory, 25 pp. Available online: https://pcmdi.llnl.gov/report/pdf/60.pdf", + "references_obs":"Hurrell, J. W., J. J. Hack, D. Shea, J. M. Caron, and J. Rosinski (2008) A New Sea Surface Temperature and Sea Ice Boundary Dataset for the Community Atmosphere Model. J. Climate, 22 (19), pp 5145-5153. doi: 10.1175/2008JCLI2292.1", + "region":[ + "global_ocean" + ], + "release_year":"2025", + "source":"PCMDI-AMIP ERSST5 1.0: Merged SST based on UK MetOffice HadISST v1.0 and NCEP OI2 v2.0. SST values are overwritten with ERSST v5.0 data where present", + "source_description":"Sea surface temperature datasets produced by PCMDI (LLNL) for the AMIP (DECK) experiment of CMIP7Plus - prototype data for quantifying forcing uncertainty", + "source_id":"PCMDI-AMIP-ERSST5-1-0", + "source_type":"satellite_blended", + "source_variables":[ + "tos", + "tosbcs" + ], + "source_version":"1.0", + "target_mip":"CMIP", + "title":"PCMDI-AMIP ERSST5 1.0 dataset prepared for input4MIPs" + }, + "PCMDI-AMIP-Had1p1-1-0":{ + "calendar":"gregorian", + "comment":"Based on Hurrell SST/sea ice consistency criteria applied to merged HadISST v1.0 (1870-01 to 1981-10) & NCEP-0ISST v2.0 (1981-11 to 2022-12) and overwritten with HadISST v1.1 data where present (1870-01 to 2022-12)", + "contact":"Paul J. Durack (durack1@llnl.gov; pauldurack@gmail.com); Mark D. Zelinka (zelinka1@llnl.gov); PCMDI (pcmdi-cmip@llnl.gov)", + "data_repo":"https://github.com/PCMDI/amipbcs", + "dataset_category":"SSTsAndSeaIce", + "doi":"10.25981/ESGF.input4MIPs.CMIP7Plus/2584106", + "further_info_url":"https://pcmdi.llnl.gov/mips/amip", + "grid":"1x1 degree longitude x latitude", + "grid_label":"gn", + "institution":"Program for Climate Model Diagnosis and Intercomparison, Lawrence Livermore National Laboratory, Livermore, CA 94550, USA (ROR: https://ror.org/02k3nmd98)", + "institution_id":"PCMDI", + "license_id":"CC BY 4.0", + "mip_era":"CMIP7Plus", + "mip_specs":"AMIP CMIP5 CMIP6 CMIP6Plus CMIP7 CMIP7Plus", + "nominal_resolution":"1x1 degree", + "product":"observations", + "references_bcs":"Taylor, K.E., D. Williamson and F. Zwiers, 2000: The sea surface temperature and sea ice concentration boundary conditions for AMIP II simulations. PCMDI Report 60, Program for Climate Model Diagnosis and Intercomparison, Lawrence Livermore National Laboratory, 25 pp. Available online: https://pcmdi.llnl.gov/report/pdf/60.pdf", + "references_obs":"Hurrell, J. W., J. J. Hack, D. Shea, J. M. Caron, and J. Rosinski (2008) A New Sea Surface Temperature and Sea Ice Boundary Dataset for the Community Atmosphere Model. J. Climate, 22 (19), pp 5145-5153. doi: 10.1175/2008JCLI2292.1", + "region":[ + "global_ocean" + ], + "release_year":"2025", + "source":"PCMDI-AMIP HadISST1p1 1.0: Merged SST based on UK MetOffice HadISST v1.0 and NCEP OI2 v2.0. SST values are overwritten with HadISST v1.1 data where present", + "source_description":"Sea surface temperature datasets produced by PCMDI (LLNL) for the AMIP (DECK) experiment of CMIP7Plus - prototype data for quantifying forcing uncertainty", + "source_id":"PCMDI-AMIP-Had1p1-1-0", + "source_type":"satellite_blended", + "source_variables":[ + "tos", + "tosbcs" + ], + "source_version":"1.0", + "target_mip":"CMIP", + "title":"PCMDI-AMIP Had1p1 1.0 dataset prepared for input4MIPs" + }, + "PCMDI-AMIP-OI2p1-1-0":{ + "calendar":"gregorian", + "comment":"Based on Hurrell SST/sea ice consistency criteria applied to merged HadISST v1.0 (1870-01 to 1981-10) & NCEP-0ISST v2.0 (1981-11 to 2022-12) and overwritten with NCEP-OISST v2.1 data where present (1981-09 to 2022-12)", + "contact":"Paul J. Durack (durack1@llnl.gov; pauldurack@gmail.com); Mark D. Zelinka (zelinka1@llnl.gov); PCMDI (pcmdi-cmip@llnl.gov)", + "data_repo":"https://github.com/PCMDI/amipbcs", + "dataset_category":"SSTsAndSeaIce", + "doi":"10.25981/ESGF.input4MIPs.CMIP7Plus/2584107", + "further_info_url":"https://pcmdi.llnl.gov/mips/amip", + "grid":"1x1 degree longitude x latitude", + "grid_label":"gn", + "institution":"Program for Climate Model Diagnosis and Intercomparison, Lawrence Livermore National Laboratory, Livermore, CA 94550, USA (ROR: https://ror.org/02k3nmd98)", + "institution_id":"PCMDI", + "license_id":"CC BY 4.0", + "mip_era":"CMIP7Plus", + "mip_specs":"AMIP CMIP5 CMIP6 CMIP6Plus CMIP7 CMIP7Plus", + "nominal_resolution":"1x1 degree", + "product":"observations", + "references_bcs":"Taylor, K.E., D. Williamson and F. Zwiers, 2000: The sea surface temperature and sea ice concentration boundary conditions for AMIP II simulations. PCMDI Report 60, Program for Climate Model Diagnosis and Intercomparison, Lawrence Livermore National Laboratory, 25 pp. Available online: https://pcmdi.llnl.gov/report/pdf/60.pdf", + "references_obs":"Hurrell, J. W., J. J. Hack, D. Shea, J. M. Caron, and J. Rosinski (2008) A New Sea Surface Temperature and Sea Ice Boundary Dataset for the Community Atmosphere Model. J. Climate, 22 (19), pp 5145-5153. doi: 10.1175/2008JCLI2292.1", + "region":[ + "global_ocean" + ], + "release_year":"2025", + "source":"PCMDI-AMIP OISST2p1 1.0: Merged SST based on UK MetOffice HadISST v1.0 and NCEP OI2 v2.0. SST values are overwritten with NCEP OI2p1 v2.1 data where present", + "source_description":"Sea surface temperature datasets produced by PCMDI (LLNL) for the AMIP (DECK) experiment of CMIP7Plus - prototype data for quantifying forcing uncertainty", + "source_id":"PCMDI-AMIP-OI2p1-1-0", + "source_type":"satellite_blended", + "source_variables":[ + "tos", + "tosbcs" + ], + "source_version":"1.0", + "target_mip":"CMIP", + "title":"PCMDI-AMIP OI2p1 1.0 dataset prepared for input4MIPs" } }, "target_mip":{ diff --git a/Tables/input4MIPs_Ofx.json b/Tables/input4MIPs_Ofx.json index ca802ec..8098f11 100644 --- a/Tables/input4MIPs_Ofx.json +++ b/Tables/input4MIPs_Ofx.json @@ -6,11 +6,11 @@ "data_specs_version":"01.00.33", "generic_levels":"", "int_missing_value":"-999", - "mip_era":"CMIP7", + "mip_era":"CMIP7Plus", "missing_value":"1e20", "product":"input4MIPs", "realm":"seaIce", - "table_date":"2025-07-21", + "table_date":"2025-08-15", "table_id":"Table input4MIPs_Ofx" }, "variable_entry":{ diff --git a/Tables/input4MIPs_Omon.json b/Tables/input4MIPs_Omon.json index 59665a6..e13a77c 100644 --- a/Tables/input4MIPs_Omon.json +++ b/Tables/input4MIPs_Omon.json @@ -6,11 +6,11 @@ "data_specs_version":"01.00.33", "generic_levels":"", "int_missing_value":"-999", - "mip_era":"CMIP7", + "mip_era":"CMIP7Plus", "missing_value":"1e20", "product":"input4MIPs", "realm":"seaIce", - "table_date":"2025-07-21", + "table_date":"2025-08-15", "table_id":"Table input4MIPs_Omon" }, "variable_entry":{ diff --git a/Tables/input4MIPs_SImon.json b/Tables/input4MIPs_SImon.json index e63353c..f2da33d 100644 --- a/Tables/input4MIPs_SImon.json +++ b/Tables/input4MIPs_SImon.json @@ -6,11 +6,11 @@ "data_specs_version":"01.00.33", "generic_levels":"", "int_missing_value":"-999", - "mip_era":"CMIP7", + "mip_era":"CMIP7Plus", "missing_value":"1e20", "product":"input4MIPs", "realm":"seaIce", - "table_date":"2025-07-21", + "table_date":"2025-08-15", "table_id":"Table input4MIPs_SImon" }, "variable_entry":{ diff --git a/src/cmorize-CMIP7Plus.py b/src/cmorize-CMIP7Plus.py new file mode 100644 index 0000000..5b066fd --- /dev/null +++ b/src/cmorize-CMIP7Plus.py @@ -0,0 +1,234 @@ +#!/bin/env python +# -*- coding: utf-8 -*- +""" +Created on Fri Aug 15 09:46:03 2025 + +Paul J. Durack 15th Aug 2025 + +This script cmorizes CMIP7Plus nc files + +PJD 15 Aug 25 - copied from cmorize.py and updated input +PJD 27 Aug 25 - updated to run on NERSC with m4581/zelinka1 paths +""" + +# %% imports +import datetime +import json +import os +import pdb +import subprocess +import sys +import cftime as cft +import cmor +import numpy as np +import xcdat as xc +import xarray as xr + +sys.path.insert(0, "pcmdiAmipBcs") +import pcmdiAmipBcsFx + +# %% get time/history/host info +utcNow = datetime.datetime.now(datetime.timezone.utc) +timeFormat = utcNow.strftime("%d-%m-%Y %H:%M:%S %p") +xcVersion = xc.__version__ +history = " ".join(["File processed:", timeFormat, "UTC; San Francisco, CA, USA"]) +host = "".join( + [ + "Host: ", + subprocess.check_output(["hostname", "-f"], text=True).strip(), + "; xCDAT version: ", + xcVersion, + "; Python version: ", + sys.version.split(" |")[0], + ";", + ] +) +history = "".join([history, "; \n", host]) +print(history) + +# %% Set directories and input data +srcPath = "/global/cfs/projectdirs/m4581/zelinka1" +dataPaths = { + "PCMDI-AMIP-ERSST5-1-0": { + "filePath": "NOAA_ERSST_V5/MODEL.SST.HAD187001-198110.OI198111-202301.NOAA_ERSST_V5.nc", + "sourceId": "PCMDI-AMIP-ERSST5-1-0", + }, + "PCMDI-AMIP-Had1p1-1-0": { + "filePath": "HadISST-1.1/MODEL.SST.HAD187001-198110.OI198111-202301.HadISST-1.1.nc", + "sourceId": "PCMDI-AMIP-Had1p1-1-0", + }, + "PCMDI-AMIP-OI2p1-1-0": { + "filePath": "NOAA-OISST-v2.1/MODEL.SST.HAD187001-198110.OI198111-202301.NOAA-OISST-v2.1.nc", + "sourceId": "PCMDI-AMIP-OI2p1-1-0", + }, +} + +# destPath = "." # test +destPath = "/global/cfs/projectdirs/m4581/durack1" # NERSC + +for count, dataset in enumerate(dataPaths.keys()): + # set file paths + # homePath = os.path.join(destPath, "Shared/150219_AMIPForcingData/") + # sanPath = os.path.join(homePath, "".join(["SST_", dataVerNum.replace(".", "-")])) + print(dataPaths[dataset]["filePath"]) + sanPath = os.path.join(srcPath, dataPaths[dataset]["filePath"]) + dataEnd = "202301" + print("sanPath:", sanPath) + print("os.getcwd():", os.getcwd()) + + # %% create replacement calendar/time_bnds + newCal = xr.date_range( + start="1870", end="2024", freq="MS", calendar="gregorian", use_cftime=True + ) + newCal187001to202301 = newCal[:-12] # trim to end of 2023-01 + time_bnds = np.stack((newCal187001to202301[:-1], newCal187001to202301[1:]), axis=1) + + # %% REPLACE READ WITH ORIGINAL DATA + + varId = "tos" + varName = "SST" + fileVar = "SST" + ftype = "sst" + units = "degC" + outVar = "tosbcs" + fH = xc.open_dataset(sanPath) + # , decode_times=False) + # add CF-required attributes back in - required by pcmdiAmipBcs + fH["lat"].attrs["units"] = "degrees_north" + fH["lat"].attrs["long_name"] = "latitude" + fH["lon"].attrs["units"] = "degrees_east" + fH["lon"].attrs["long_name"] = "longitude" + xrVar = ".".join(["fH", varName]) + print("xrVar:", xrVar) + var = eval(xrVar) + + # run pcmdiAmipBcs/compile - refresh binaries (ensure env consistent!) + # create tos midpoint values + + print("Entering createMonthlyMidpoints function..") + nyears = 10 # Buffer ~24-month climatology calculated over nyears + varBcs = pcmdiAmipBcsFx.createMonthlyMidpoints( + var, ftype, units, nyears, outVar + ) # , grid=targetGrid, mask=sftof) + print("Exiting createMonthlyMidpoints function..") + + # check input file and and output times + print("inputFile:", dataEnd) + print("".join([varId, ".shape:"]), var.shape) + print("".join([varId, "bcs.shape:"]), varBcs.shape) + print(fH.time) + + # Cleanup partial year data - always end on full or half years (12/6) + endInd = np.mod(fH.time.dt.month[-1].data, 6) + var = var[:-endInd,] + varBcs = varBcs[:-endInd,] + print("".join([varId, ".shape:"]), var.shape) + print("".join([varId, "bcs.shape:"]), varBcs.shape) + print(var.time[-1]) + if var.time.dt.month[-1] not in (6, 12): + print("Catch case of bad data..") + pdb.set_trace() + + # %% CMORize + + # Write tos and tosBcs + for varToCMOR in ["obs", "obsBcs"]: + match varToCMOR: + case "obs": + dataSetTime = "time" + dHandle = "var" + product = "observations" + cmorVarId = varId + case "obsBcs": + dataSetTime = "time1" + dHandle = "varBcs" + product = "derived" + cmorVarId = "".join([varId, "bcs"]) + + # create user_input.json + tmp = {} + tmp["activity_id"] = "input4MIPs" + tmp["source_id"] = dataset + tmp["product"] = product + tmp["outpath"] = destPath + tmp["_history_template"] = ( + "%s; CMOR rewrote data to be consistent with , CMIP6, CMIP6Plus and standards" + ) + tmp["output_path_template"] = ( + "" + ) + tmp["output_file_template"] = ( + "" + ) + tmp["tracking_prefix"] = "hdl:21.14100" + tmp["_controlled_vocabulary_file"] = "input4MIPs_CV.json" + tmp["_AXIS_ENTRY_FILE"] = "input4MIPs_coordinate.json" + tmp["_FORMULA_VAR_FILE"] = "input4MIPs_formula_terms.json" + # cleanup + if os.path.exists("tmp.json"): + os.remove("tmp.json") + with open("tmp.json", "w") as f: + json.dump( + tmp, + f, + ensure_ascii=True, + sort_keys=True, + indent=4, + separators=(",", ":"), + ) + + # Start CMORising + cmor.setup( + inpath="Tables", + set_verbosity=cmor.CMOR_NORMAL, + netcdf_file_action=cmor.CMOR_REPLACE_4, + ) + cmor.dataset_json("tmp.json") + os.remove("tmp.json") + + # Force local file attribute as history + cmor.set_cur_dataset_attribute("history", history) + + # Toggle data and appropriate table + table = "input4MIPs_Omon.json" + + # Load relevant table file + tablePath = "Tables" + tablePath = os.path.join(tablePath, table) + print("tablePath:", tablePath) + cmor.load_table(tablePath) + + axes = [ + {"table_entry": dataSetTime, "units": "days since 1870-01-01"}, + { + "table_entry": "latitude", + "units": "degrees_north", + "coord_vals": fH.lat.data, + "cell_bounds": fH["lat_bnds"].data, + }, + { + "table_entry": "longitude", + "units": "degrees_east", + "coord_vals": fH.lon.data, + "cell_bounds": fH["lon_bnds"].data, + }, + ] + axis_ids = list() + for axis in axes: + axis_id = cmor.axis(**axis) + axis_ids.append(axis_id) + print("varName:", cmorVarId, "units:", units, "axis_ids:", axis_ids) + varid = cmor.variable(cmorVarId, units, axis_ids) + values = np.array(eval(dHandle), np.float32) # output either obs/bcs + # shuffle=1,deflate=1,deflate_level=1 ; CMOR 3.0.6+ + cmor.set_deflate(varid, 1, 1, 1) + + cmor.write( + varid, + values, + time_vals=cft.date2num(var.cf["time"], "days since 1870-1-1"), + time_bnds=cft.date2num(time_bnds, "days since 1870-1-1"), + ) + del values # explicitly purge so a new copy is generated + + cmor.close() diff --git a/src/createCVs.ipynb b/src/createCVs.ipynb index 4d8e1c8..a4ce794 100644 --- a/src/createCVs.ipynb +++ b/src/createCVs.ipynb @@ -70,7 +70,7 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 1, "id": "157ca2af-ce47-403b-9735-87307836639a", "metadata": {}, "outputs": [ @@ -78,8 +78,8 @@ "name": "stdout", "output_type": "stream", "text": [ - "CPU times: user 5 μs, sys: 6 μs, total: 11 μs\n", - "Wall time: 11.9 μs\n" + "CPU times: user 27.1 ms, sys: 8.56 ms, total: 35.6 ms\n", + "Wall time: 51.5 ms\n" ] } ], @@ -101,7 +101,7 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 2, "id": "1a0f4ec8-0d03-42f6-8eb6-d8e3d58f51ac", "metadata": {}, "outputs": [ @@ -123,8 +123,8 @@ "11 required_global_attributes\n", "12 source_id\n", "13 target_mip\n", - "CPU times: user 57.1 ms, sys: 19.4 ms, total: 76.5 ms\n", - "Wall time: 2.13 s\n" + "CPU times: user 116 ms, sys: 37.6 ms, total: 153 ms\n", + "Wall time: 2.48 s\n" ] } ], @@ -174,7 +174,7 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 3, "id": "575ff389-e227-40da-a702-5790f910b409", "metadata": {}, "outputs": [ @@ -184,7 +184,7 @@ "dict_keys(['CCCma', 'CNRM-Cerfacs', 'IACETH', 'IAMC', 'ImperialCollege', 'MOHC', 'MPI-B', 'MPI-M', 'MRI', 'NASA-GSFC', 'NCAR', 'NCAS', 'PCMDI', 'PNNL-JGCRI', 'SOLARIS-HEPPA', 'UCI', 'UColorado', 'UReading', 'UoM', 'UofMD', 'VUA'])" ] }, - "execution_count": 17, + "execution_count": 3, "metadata": {}, "output_type": "execute_result" } @@ -195,7 +195,7 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 4, "id": "7af751ea-c6fb-4782-8a4a-4282292f9bd9", "metadata": {}, "outputs": [ @@ -205,7 +205,7 @@ "dict_keys(['PCMDI'])" ] }, - "execution_count": 18, + "execution_count": 4, "metadata": {}, "output_type": "execute_result" } @@ -228,7 +228,7 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 5, "id": "b67c6a57", "metadata": {}, "outputs": [], @@ -246,7 +246,7 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 6, "id": "765bd1bd-5a76-4d7a-b733-4ee0c761089d", "metadata": {}, "outputs": [ @@ -256,7 +256,7 @@ "dict_keys(['ACCESS1-3-rcp85-1-0', 'CCSM4-rcp26-1-0', 'CCSM4-rcp85-1-0', 'CESM2-ssp585-1-0', 'CNRM-CM6-1-ssp126-1-0', 'CNRM-CM6-1-ssp585-1-0', 'CNRM-ESM2-1-ssp585-1-0', 'CSIRO-MK3-6-0-rcp85-1-0', 'HadGEM2-ES-rcp85-1-0', 'IPSL-CM5A-MR-rcp26-1-0', 'IPSL-CM5A-MR-rcp85-1-0', 'MIROC-ESM-CHEM-rcp26-1-0', 'MIROC-ESM-CHEM-rcp85-1-0', 'MIROC5-rcp26-1-0', 'MIROC5-rcp85-1-0', 'MRI-JRA55-do-1-3', 'MRI-JRA55-do-1-3-2', 'MRI-JRA55-do-1-4-0', 'MRI-JRA55-do-1-5-0', 'MRI-JRA55-do-1-6-0', 'NorESM1-M-rcp26-1-0', 'NorESM1-M-rcp85-1-0', 'PCMDI-AMIP-1-1-3', 'PCMDI-AMIP-1-1-4', 'PCMDI-AMIP-1-1-5', 'PCMDI-AMIP-1-1-6', 'PCMDI-AMIP-1-1-7', 'PCMDI-AMIP-1-1-8', 'PCMDI-AMIP-1-1-9', 'UKESM1-0-LL-ssp585-1-0'])" ] }, - "execution_count": 20, + "execution_count": 6, "metadata": {}, "output_type": "execute_result" } @@ -275,7 +275,7 @@ }, { "cell_type": "code", - "execution_count": 21, + "execution_count": 7, "id": "4c4cdc3c-9479-4a50-86c4-8e91c1713b53", "metadata": {}, "outputs": [ @@ -285,7 +285,7 @@ "dict_keys(['PCMDI-AMIP-1-1-3', 'PCMDI-AMIP-1-1-4', 'PCMDI-AMIP-1-1-5', 'PCMDI-AMIP-1-1-6', 'PCMDI-AMIP-1-1-7', 'PCMDI-AMIP-1-1-8', 'PCMDI-AMIP-1-1-9'])" ] }, - "execution_count": 21, + "execution_count": 7, "metadata": {}, "output_type": "execute_result" } @@ -308,7 +308,7 @@ }, { "cell_type": "code", - "execution_count": 22, + "execution_count": 8, "id": "aba61ce9-3766-4d79-9d65-ffc56d9a21e9", "metadata": {}, "outputs": [], @@ -331,7 +331,7 @@ }, { "cell_type": "code", - "execution_count": 23, + "execution_count": 9, "id": "8836d2be-44d4-4067-86c4-ecd563641ebf", "metadata": {}, "outputs": [ @@ -369,7 +369,7 @@ " 'title': 'PCMDI-AMIP 1.1.10 dataset prepared for input4MIPs'}" ] }, - "execution_count": 23, + "execution_count": 9, "metadata": {}, "output_type": "execute_result" } @@ -396,7 +396,7 @@ }, { "cell_type": "code", - "execution_count": 24, + "execution_count": 10, "id": "47b9e159-3330-4703-ac5e-ad1efe049b30", "metadata": {}, "outputs": [ @@ -440,7 +440,7 @@ }, { "cell_type": "code", - "execution_count": 25, + "execution_count": 11, "id": "43428099-d8e1-49ba-aee0-754c494640a3", "metadata": {}, "outputs": [ @@ -463,8 +463,8 @@ "12 source_id\n", "13 target_mip\n", "14 input4MIPs_CV\n", - "CPU times: user 2.11 ms, sys: 3.96 ms, total: 6.06 ms\n", - "Wall time: 4.69 ms\n" + "CPU times: user 1.92 ms, sys: 3.55 ms, total: 5.47 ms\n", + "Wall time: 4.9 ms\n" ] } ], diff --git a/src/matPlot-CMIP7Plus.py b/src/matPlot-CMIP7Plus.py new file mode 100644 index 0000000..8b78320 --- /dev/null +++ b/src/matPlot-CMIP7Plus.py @@ -0,0 +1,469 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +""" +Created on Mon Sep 20 13:21:49 2021 + +PJD 20 Sep 2021 - Started +PJD 30 Sep 2021 - Updated for v20210930 data +PJD 27 Oct 2021 - Updated to generate diff as % maps +PJD 2 Nov 2021 - Updated following tweaks in https://github.com/PCMDI/amipbcs/issues/23#issuecomment-958164331 +PJD 3 May 2023 - Updates for the v1.1.9 data +PJD 3 May 2023 - Updated for cdms2 -> xcdat +PJD 3 May 2023 - Added plotter function +PJD 4 May 2023 - Hitting issue with 2002-11 timestep and xarray DataArray plotting +PJD 9 May 2023 - Add transform_first=True to contourf call +PJD 9 May 2023 - Added +1 for last year, off by one PCMDI-AMIP-1-1-8 finishes in 2021-12 +PJD 9 May 2023 - Added ffmpeg call - installed ffmpeg-python +PJD 10 May 2023 - Added statsStr to diff plot; updated diff scale <2%; corrected denom da1 vs s1 ref +PJD 10 May 2023 - Add statsStr; update contour levels to target data +PJD 12 May 2023 - Updated for latest v1.1.9 data run +PJD 18 May 2023 - Compare v1.1.9 versions (released 20230512, and new mamba env 20230518) +PJD 24 Jul 2025 - Updating for mac-local v1.1.10 vs v1.1.9 +PJD 29 Jul 2025 - Updating for mac-local v1.1.10 v20250724 -> 20250729 +PJD 4 Aug 2025 - Updating for perlmutter v1.1.10 +PJD 4 Aug 2025 - Updated output *mp4 to take verId as filename arg +PJD 6 Aug 2025 - Updated for latest/final 250806 data +PJD 7 Aug 2025 - Updated for final 250807 data +PJD 20 Aug 2025 - Updated for new CMIP7Plus data + +@author: durack1 +""" + +# %% imports +import cartopy.crs as ccrs +from mpl_toolkits.axes_grid1.inset_locator import inset_axes +import matplotlib.pyplot as plt +import ffmpeg +import glob +import numpy as np +import os +import shutil +from xcdat import open_dataset + +# %% function defs + + +def statsStr(da): + """ + Create stats string to add to plot text box + + """ + fmtStr = "{:7.4f}" + statsStr = " ".join( + [ + "min:", + fmtStr.format(da.min()), + "\n1pc:", + fmtStr.format(np.percentile(da, 1)), + "\nmean:", + fmtStr.format(da.mean()), + "\n99pc:", + fmtStr.format(np.percentile(da, 99)), + "\nmax:", + fmtStr.format(da.max()), + ] + ) + + return statsStr + + +def plotter( + da1, + da2, + da1Str, + da2Str, + lev1, + lev2, + cmap, + timeStr, + titleString, + varColStr, + path, + var, + fileName, +): + """ + Generate generic plotting function + """ + # Open canvas + fig = plt.figure(figsize=(10, 15)) + plt.axis("off") + plt.ioff() # turn off interactive plots - background mode + plt.title(titleString) + + # prepare lon, lat + lon = np.tile(da1.lon.data, (180, 1)) + lat = np.tile(da1.lat.data, (360, 1)).transpose() + + # Start subplots + ax1 = fig.add_subplot( + 3, + 1, + 1, + projection=ccrs.Robinson( + central_longitude=centralLon, + globe=None, + false_easting=None, + false_northing=None, + ), + ) + # print("type(da1.lon):", type(da1.lon)) + # print("type(da1.lat):", type(da1.lat)) + # print("type(da1):", type(da1)) + # print("type(da2):", type(da2)) + # print("type(lev1):", type(lev1)) + # print("type(cmap):", type(cmap)) + # pdb.set_trace() + # x1 = np.squeeze(np.array(da1.data)) + # la1 = np.array(da1.lat.data) + # lo1 = np.array(da1.lon.data) + # Failing line - only when an xarray DataArray is sent + # cs1 = ax1.contourf(da1.lon, da1.lat, da1[0,], + # cs1 = ax1.contourf(da1.lon.data, da1.lat.data, da1.squeeze().data, + cs1 = ax1.contourf( + lon, + lat, + da1[0,], + lev1, # 20 + transform=ccrs.PlateCarree(), + transform_first=True, + cmap=cmap, + ) + tx1 = plt.text( + labX, + labY, + da1Str, + fontsize=fntsz, + horizontalalignment="center", + transform=ccrs.Geodetic(), + ) + # create da1 dob variables + tx2 = plt.text( + labX, + labY - 20, + statsStr(da1), + fontsize=fntsz, + horizontalalignment="center", + verticalalignment="center", + transform=ccrs.Geodetic(), + ) + ax2 = fig.add_subplot( + 3, + 1, + 2, + projection=ccrs.Robinson( + central_longitude=centralLon, + globe=None, + false_easting=None, + false_northing=None, + ), + ) + cs2 = ax2.contourf( + lon, + lat, + da2.squeeze().data, + # cs2 = ax2.contourf(lo1, la1, x2, + lev1, + transform=ccrs.PlateCarree(), + transform_first=True, + cmap=cmap, + ) + tx3 = plt.text( + labX, + labY, + da2Str, + fontsize=fntsz, + horizontalalignment="center", + transform=ccrs.Geodetic(), + ) + # create da2 dob variables + tx4 = plt.text( + labX, + labY - 20, + statsStr(da2), + fontsize=fntsz, + horizontalalignment="center", + verticalalignment="center", + transform=ccrs.Geodetic(), + ) + ax3 = fig.add_subplot( + 3, + 1, + 3, + projection=ccrs.Robinson( + central_longitude=centralLon, + globe=None, + false_easting=None, + false_northing=None, + ), + ) + # Generate % change + diff = da1[0,] - da2[0,] + inds = np.nonzero(diff.data) + diffnew = np.ma.zeros(diff.shape) + denom = (np.abs(da1[0,]) + np.abs(da2[0,])) / 2 + np.squeeze(denom).shape + diffnew[inds] = diff.data[inds] / denom.data[inds] + + cs3 = ax3.contourf( + lon, + lat, + diffnew, + lev2, + transform=ccrs.PlateCarree(), + transform_first=True, + cmap=cmap, + ) + tx5 = plt.text( + labX, + labY, + " ".join([da1Str, "-", da2Str]), + fontsize=fntsz, + horizontalalignment="center", + transform=ccrs.Geodetic(), + ) + # create diff dob variables + tx6 = plt.text( + labX, + labY - 20, + statsStr(diffnew), + fontsize=fntsz, + horizontalalignment="center", + verticalalignment="center", + transform=ccrs.Geodetic(), + ) + + # make the map global rather than have it zoom in to the extents of + # any plotted data ax.set_global() + # ax1.stock_img() + ax1.coastlines() + ax2.coastlines() + ax3.coastlines() + # ax.plot(-0.08, 51.53, 'o', transform=ccrs.PlateCarree()) + # ax.plot([-0.08, 132], [51.53, 43.17], transform=ccrs.Geodetic()) + + # https://matplotlib.org/stable/gallery/axes_grid1/demo_colorbar_with_inset_locator.html + axin1 = inset_axes( + ax1, + width="5%", # width = 5% of parent_bbox width + height="50%", # height : 50% + loc="lower left", + bbox_to_anchor=(1.05, -1.17, 1, 4.3), + bbox_transform=ax1.transAxes, + borderpad=0, + ) + + axin3 = inset_axes( + ax3, + width="5%", # width = 5% of parent_bbox width + height="50%", # height : 50% + loc="lower left", + bbox_to_anchor=(1.05, 0.0, 1, 2), + bbox_transform=ax3.transAxes, + borderpad=0, + ) + + # cax1 = plt.axes([0.1, 0.63, 0.75, 0.02]) + # fig.colorbar(ax1, cax=cax2, orientation='horizontal', cmap='RdBu') + rot = 270 + lblpd = 15 + cax1 = fig.colorbar(cs1, cax=axin1) + cax1.ax.set_ylabel(varColStr, rotation=rot, labelpad=lblpd) + cax2 = fig.colorbar(cs3, cax=axin3) + cax2.ax.set_ylabel("% difference", rotation=rot, labelpad=lblpd) + + # Resize plots + plt.subplots_adjust( + bottom=0.005, left=0.01, right=0.84, top=0.985, hspace=0.01, wspace=0.01 + ) + + # pdb.set_trace() + # plt.show() + testPath = os.path.join(path) + if not os.path.exists(testPath): + os.mkdir(testPath) + if not os.path.exists(os.path.join(path, var)): + os.mkdir(os.path.join(path, var)) + fig.savefig(os.path.join(path, var, ".".join([fileName, "png"])), dpi=100) + plt.close() + + +# %% Variables + +outPathVer = "pngs_v1.1.10" +# outPath = "/p/user_pub/climate_work/durack1/Shared/150219_AMIPForcingData/" # LLNL/detect +# outPath = "/global/homes/d/durack1/git/amipbcs" +outPath = "." + +# New data +# verId = "v1.1.10" +# verPath = "/p/user_pub/climate_work/durack1/" # LLNL/detect +# verPath = "/global/homes/d/durack1/git/amipbcs" +# ver = "v20250807" # Update for each run +# verPath = os.path.join(verPath, "input4MIPs/CMIP7/CMIP/PCMDI/PCMDI-AMIP-1-1-10/") +# print("verPath:", verPath) + +dataVers = { + "PCMDI-AMIP-ERSST5-1-0": { + "ver": "v20250820", + "verId": "ERSST5-1-0", + "verPath": "input4MIPs/CMIP7Plus/CMIP/PCMDI/PCMDI-AMIP-ERSST5-1-0/", + }, + "PCMDI-AMIP-Had1p1-1-0": { + "ver": "v20250820", + "verId": "Had1p1-1-0", + "verPath": "input4MIPs/CMIP7Plus/CMIP/PCMDI/PCMDI-AMIP-Had1p1-1-0/", + }, + "PCMDI-AMIP-OI2p1-1-0": { + "ver": "v20250820", + "verId": "OI2p1-1-0", + "verPath": "input4MIPs/CMIP7Plus/CMIP/PCMDI/PCMDI-AMIP-OI2p1-1-0/", + }, +} + +# Old data +verOldId = "v1.1.10" +verOld = "v20250815" # "v20250807" # Update for each run +# verOldPath = "/global/cfs/projectdirs/m4931/gsharing/user_pub_work" +verOldPath = "." +verOldPath = os.path.join(verOldPath, "input4MIPs/CMIP7/CMIP/PCMDI/PCMDI-AMIP-1-1-10/") +print("verOldPath:", verOldPath) + +# %% Standard plot - actual and diff maps + +# Contour levels +levs1 = list(np.arange(-10, 111, 10)) # siconc +levs2 = list(np.arange(-150, 151, 10)) # siconcbcs +levs3 = list(np.arange(-5, 36, 2.5)) # tos diff +# levs3 = list(np.arange(-0.15, 0.1501, 0.05)) # tos diff +levs4 = list(np.arange(0, 2.1, 0.1)) # % change + +# Lab x, y +labX = -140.0 +centralLon = 202 +labY = 0.0 +fntsz = "large" +cmap = "cool" # 'RdBu' +# https://matplotlib.org/stable/tutorials/colors/colormaps.html + +# %% start looping + +# loop across input data +for data in dataVers.items(): + print(data[0]) + dataDic = data[1] + ver = dataDic["ver"] + verId = dataDic["verId"] + verPath = dataDic["verPath"] + print(ver, verId, verPath) + + # read data + # f1 = glob.glob("".join([verOldPath, "*/mon/siconc/gn/", verOld, "/*.nc"]))[0] + # f2 = glob.glob("".join([verPath, "*/mon/siconc/gn/", ver, "/*.nc"]))[0] + # f3 = glob.glob("".join([verOldPath, "*/mon/siconcbcs/gn/", verOld, "/*.nc"]))[0] + # f4 = glob.glob("".join([verPath, "*/mon/siconcbcs/gn/", ver, "/*.nc"]))[0] + f5 = glob.glob("".join([verOldPath, "*/mon/tos/gn/", verOld, "/*.nc"]))[0] + f6 = glob.glob("".join([verPath, "*/mon/tos/gn/", ver, "/*.nc"]))[0] + f7 = glob.glob("".join([verOldPath, "*/mon/tosbcs/gn/", verOld, "/*.nc"]))[0] + f8 = glob.glob("".join([verPath, "*/mon/tosbcs/gn/", ver, "/*.nc"]))[0] + # ds1 = open_dataset(f1) + # ds2 = open_dataset(f2) + # ds3 = open_dataset(f3) + # ds4 = open_dataset(f4) + ds5 = open_dataset(f5) + ds6 = open_dataset(f6) + ds7 = open_dataset(f7) + ds8 = open_dataset(f8) + # https://scitools.org.uk/cartopy/docs/v0.18/crs/projections.html + x = ds5.lon.data + y = ds5.lat.data + + # Do cleanup + tmpPath = os.path.join(outPath, "pngs", outPathVer, ver) + if os.path.exists(tmpPath): + shutil.rmtree(tmpPath) + else: + os.makedirs(tmpPath, exist_ok=False) + + # for var in ["siconc", "siconcbcs", "tos", "tosbcs"]: + for var in ["tos", "tosbcs"]: + for yr in np.arange(1870, ds5.time.data[-1].year + 1): # 1870 + for mn in np.arange(1, 13): + startTime = "-".join([str(yr), "{:02d}".format(mn), "01"]) + endTime = "-".join([str(yr), "{:02d}".format(mn), "28"]) + print("start:", startTime, "end:", endTime) + # load into arrays + match var: + case "siconc": + s1 = eval("ds1.siconc.sel(time=slice(startTime, endTime))") + s2 = eval("ds2.siconc.sel(time=slice(startTime, endTime))") + lev1 = levs1 + cmap = "RdBu_r" + varColStr = "% coverage" + case "siconcbcs": + s1 = eval("ds3.siconcbcs.sel(time=slice(startTime, endTime))") + s2 = eval("ds4.siconcbcs.sel(time=slice(startTime, endTime))") + lev1 = levs2 + cmap = "cool" + varColStr = "% coverage" + case "tos": + s1 = eval("ds5.tos.sel(time=slice(startTime, endTime))") + s2 = eval("ds6.tos.sel(time=slice(startTime, endTime))") + lev1 = levs3 + cmap = "RdBu_r" + varColStr = "degree_C" + case "tosbcs": + s1 = eval("ds7.tosbcs.sel(time=slice(startTime, endTime))") + s2 = eval("ds8.tosbcs.sel(time=slice(startTime, endTime))") + lev1 = levs3 + cmap = "cool" + varColStr = "degree_C" + + # get time from index + timeString = "{}{:02d}".format( + s1.time.data[0].year, s1.time.data[0].month + ) + titleString = "{}{:02d}{}{}".format( + s1.time.data[0].year, s1.time.data[0].month, " ", var + ) + + plotter( + s1, + s2, + verOldId, + verId, + lev1, + levs4, + cmap, + timeString, + titleString, + varColStr, + os.path.join(outPath, "pngs", outPathVer, ver), + var, + timeString, + ) + # pdb.set_trace() + # end of var - plot video + out, err = ( + ffmpeg.input( + os.path.join(outPath, "pngs", outPathVer, ver, var, "*.png"), + pattern_type="glob", + framerate=25, + ) + .output( + os.path.join( + outPath, + "pngs", + "_".join(["AMIPBCS_newVsOld", var, verId, "".join([ver, ".mp4"])]), + ), + crf=20, + preset="slower", + movflags="faststart", + pix_fmt="yuv420p", + ) + .run() + ) + # .view(filename='filter_graph') + # .filter('deflicker', mode='pm', size=10) + # .filter('scale', size='hd1080', force_original_aspect_ratio='increase') + # ffmpeg -framerate 48 -i %04d_ESGF-PubStatsPB-MSSans.png 230117_output_48.mp4 diff --git a/src/pullTables.ipynb b/src/pullTables.ipynb index 5f2e871..293a7b7 100644 --- a/src/pullTables.ipynb +++ b/src/pullTables.ipynb @@ -52,6 +52,7 @@ "**Notes**\n", "\n", "PJD 21 Jul 2025 - initiated
\n", + "PJD 15 Aug 2025 - updated mip_era CMIP7 to CMIP7Plus
\n", "\n", "TODO:\n", "\n", @@ -76,8 +77,8 @@ "name": "stdout", "output_type": "stream", "text": [ - "CPU times: user 40.9 ms, sys: 14.8 ms, total: 55.7 ms\n", - "Wall time: 60.9 ms\n" + "CPU times: user 31.8 ms, sys: 12.2 ms, total: 44 ms\n", + "Wall time: 54.4 ms\n" ] } ], @@ -112,8 +113,8 @@ "2 Ofx\n", "3 Omon\n", "4 SImon\n", - "CPU times: user 12.1 ms, sys: 5.43 ms, total: 17.6 ms\n", - "Wall time: 89.2 ms\n" + "CPU times: user 45.5 ms, sys: 17 ms, total: 62.4 ms\n", + "Wall time: 1.39 s\n" ] } ], @@ -162,8 +163,8 @@ "name": "stdout", "output_type": "stream", "text": [ - "CPU times: user 27 μs, sys: 0 ns, total: 27 μs\n", - "Wall time: 29.1 μs\n" + "CPU times: user 64 μs, sys: 4 μs, total: 68 μs\n", + "Wall time: 78 μs\n" ] }, { @@ -228,7 +229,7 @@ "outputs": [], "source": [ "Header[\"cmor_version\"] = \"3.11\"\n", - "Header[\"mip_era\"] = \"CMIP7\"\n", + "Header[\"mip_era\"] = \"CMIP7Plus\"\n", "Header[\"table_date\"] = datetime.datetime.now().strftime(\"%Y-%m-%d\")" ] }, @@ -255,8 +256,8 @@ "2 Ofx\n", "3 Omon\n", "4 SImon\n", - "CPU times: user 2.88 ms, sys: 1.87 ms, total: 4.75 ms\n", - "Wall time: 3.87 ms\n" + "CPU times: user 2.71 ms, sys: 2.47 ms, total: 5.19 ms\n", + "Wall time: 3.9 ms\n" ] } ], @@ -299,7 +300,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.13.5" + "version": "3.11.13" } }, "nbformat": 4, diff --git a/src/registerSource_ids.ipynb b/src/registerSource_ids.ipynb new file mode 100644 index 0000000..a92baa5 --- /dev/null +++ b/src/registerSource_ids.ipynb @@ -0,0 +1,926 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "4f33c2d2-196f-46a0-a5b6-f9f685f9d550", + "metadata": {}, + "source": [ + "# Register new source_id's; Amend existing ones\n", + "
\n", + "

\n", + " \"Program \n", + " \"Lawrence \n", + " \"United\n", + "

\n", + "
" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "de9f61bc-ce3a-4123-8afd-bded7e6834b1", + "metadata": {}, + "source": [ + "# **Summary**\n", + "\n", + "This file pulls input4MIPs CMIP7/CMOR3.11.x-era CVs, and augments with new CMIP7Plus entries.\n", + "\n", + "**Authors:**\n", + "\n", + "Paul J. Durack ([durack1](https://github.com/durack1); [PCMDI](https://pcmdi.llnl.gov/), [Lawrence Livermore National Laboratory](https://www.llnl.gov/))\n", + "\n", + "**Notes:**\n", + "\n", + "PJD 13 Aug 2025 - initiated
\n", + "PJD 13 Aug 2025 - added `license_id` to `required_global_attributes`
\n", + "PJD 13 Aug 2025 - added `CMIP7Plus` to `mip_era`
\n", + "PJD 14 Aug 2025 - further updates, cleanup `PCMDI-AMIP-1-1-3`
\n", + "PJD 14 Aug 2025 - added missing source_id's `PCMDI-AMIP-1-1-0` through `*1-1-3`
\n", + "PJD 14 Aug 2025 - added DKRZ supported DOIs
\n", + "PJD 15 Aug 2025 - corrected dest dir for `input4MIPs_CVs.json`
\n", + "PJD 15 Aug 2025 - add new `license` to CV (CMOR 3.11+ update)
\n", + "PJD 15 Aug 2025 - added `institution` cleanup (add ROR)
\n", + "PJD 15 Aug 2025 - remove `license` attribute from PCMDI-AMIP-1-1-8 through 1-1-10
\n", + "PJD 20 Aug 2025 - added CMIP7Plus `dois` see [PCMDI/input4MIPs_CVs/issues/177](https://github.com/PCMDI/input4MIPs_CVs/issues/177#issuecomment-3203880492)
\n", + "\n", + "**TODO:**\n", + "\n", + "**Links:**\n", + "\n", + "### imports" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "157ca2af-ce47-403b-9735-87307836639a", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "CPU times: user 33.5 ms, sys: 11.7 ms, total: 45.2 ms\n", + "Wall time: 53.1 ms\n" + ] + } + ], + "source": [ + "%%time\n", + "from copy import deepcopy\n", + "import datetime\n", + "import json\n", + "import os\n", + "import requests" + ] + }, + { + "cell_type": "markdown", + "id": "7cdc23d6-abc9-4840-96f4-13a7b317eda4", + "metadata": {}, + "source": [ + "## set CV files and pull" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "1a0f4ec8-0d03-42f6-8eb6-d8e3d58f51ac", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0 activity_id\n", + "1 dataset_category\n", + "2 frequency\n", + "3 grid_label\n", + "4 institution_id\n", + "5 license\n", + "6 mip_era\n", + "7 nominal_resolution\n", + "8 product\n", + "9 realm\n", + "10 region\n", + "11 required_global_attributes\n", + "12 source_id\n", + "13 target_mip\n", + "CPU times: user 79 ms, sys: 29.1 ms, total: 108 ms\n", + "Wall time: 2.44 s\n" + ] + } + ], + "source": [ + "%%time\n", + "targets = [\n", + " \"activity_id\",\n", + " \"dataset_category\",\n", + " \"frequency\",\n", + " \"grid_label\",\n", + " \"institution_id\",\n", + " \"license\",\n", + " \"mip_era\",\n", + " \"nominal_resolution\",\n", + " \"product\",\n", + " \"realm\",\n", + " \"region\",\n", + " \"required_global_attributes\",\n", + " \"source_id\",\n", + " \"target_mip\",\n", + "]\n", + "urlTmp = \"https://raw.githubusercontent.com/PCMDI/amipbcs/refs/heads/master/CVs/input4MIPs_TARGET.json\"\n", + "\n", + "# loop through urls\n", + "for count, key in enumerate(targets):\n", + " print(count, key)\n", + " url = urlTmp.replace(\"TARGET\", key)\n", + " try:\n", + " response = requests.get(url)\n", + " response.raise_for_status() # Raise HTTPError for bad responses (4/5xx)\n", + " vars()[key] = json.loads(response.text)\n", + " except requests.exceptions.RequestException as e:\n", + " print(f\"Request failed: {e}\")\n", + " except json.JSONDecodeError as e:\n", + " print(f\"JSON decode failed: {e}\")\n", + " except Exception as e:\n", + " print(f\"Unexpected error occurred: {e}\")" + ] + }, + { + "cell_type": "markdown", + "id": "99413e3e-5204-4b5d-b4b9-916c193f7f33", + "metadata": {}, + "source": [ + "### update license template" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "ded62470-db1d-4776-8c8f-a5a67eb11242", + "metadata": {}, + "outputs": [], + "source": [ + "license = {}\n", + "license[\"license\"] = {\n", + " \"license_id\": {\n", + " \"CC BY 4.0\": {\n", + " \"license_type\": \"Creative Commons Attribution 4.0 International\",\n", + " \"license_url\": \"https://creativecommons.org/licenses/by/4.0/\",\n", + " },\n", + " \"CC0 1.0\": {\n", + " \"license_type\": \"Creative Commons CC0 1.0 Universal Public Domain Dedication\",\n", + " \"license_url\": \"https://creativecommons.org/publicdomain/zero/1.0/\",\n", + " },\n", + " },\n", + " \"license_template\": \" \".join(\n", + " [\n", + " \"; input4MIPs data produced by is licensed under a\",\n", + " \" License (). Consult https://pcmdi.llnl.gov/CMIP6/TermsOfUse\",\n", + " \"for terms of use governing input4MIPs output, including citation requirements and proper\",\n", + " \"acknowledgment. The data producers and data providers make no warranty, either express\",\n", + " \"or implied, including, but not limited to, warranties of merchantability and fitness\",\n", + " \"for a particular purpose. All liabilities arising from the supply of the information\",\n", + " \"(including any liability arising in negligence) are excluded to the fullest extent\",\n", + " \"permitted by law.\",\n", + " ]\n", + " ),\n", + "}" + ] + }, + { + "cell_type": "markdown", + "id": "a2ed14cf-43e0-4f5c-8a53-3d41104fdc14", + "metadata": {}, + "source": [ + "### cleanup institution_id" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "9648cb82-e762-406a-a2ee-0ac869e3b021", + "metadata": {}, + "outputs": [], + "source": [ + "institution_id[\"institution_id\"][\"PCMDI\"] = \" \".join(\n", + " [\n", + " \"Program for Climate Model Diagnosis and Intercomparison,\",\n", + " \"Lawrence Livermore National Laboratory, Livermore, CA 94550,\",\n", + " \"USA (ROR: https://ror.org/02k3nmd98)\",\n", + " ]\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "dcca02f5-f699-4dfd-9bd6-0f3333b6f873", + "metadata": {}, + "source": [ + "### cleanup required_global_attributes" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "575ff389-e227-40da-a702-5790f910b409", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'required_global_attributes': ['Conventions',\n", + " 'activity_id',\n", + " 'contact',\n", + " 'creation_date',\n", + " 'dataset_category',\n", + " 'frequency',\n", + " 'further_info_url',\n", + " 'grid_label',\n", + " 'institution',\n", + " 'institution_id',\n", + " 'license',\n", + " 'license_id',\n", + " 'mip_era',\n", + " 'nominal_resolution',\n", + " 'realm',\n", + " 'region',\n", + " 'source',\n", + " 'source_id',\n", + " 'source_version',\n", + " 'table_id',\n", + " 'target_mip',\n", + " 'title',\n", + " 'tracking_id',\n", + " 'variable_id']}" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "required_global_attributes[\"required_global_attributes\"].append(\"license_id\")\n", + "required_global_attributes[\"required_global_attributes\"].sort()\n", + "required_global_attributes" + ] + }, + { + "cell_type": "markdown", + "id": "2e2376c9-8d8b-49e1-8ba6-3d235e40bd80", + "metadata": {}, + "source": [ + "### register new mip_era" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "6cb4e5a9-6285-417a-ab42-9787ae29c5e0", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'mip_era': ['AMIP1',\n", + " 'AMIP2',\n", + " 'CMIP1',\n", + " 'CMIP2',\n", + " 'CMIP3',\n", + " 'CMIP5',\n", + " 'CMIP6',\n", + " 'CMIP6Plus',\n", + " 'CMIP7',\n", + " 'CMIP7Plus']}" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "mip_era[\"mip_era\"].append(\"CMIP7Plus\")\n", + "mip_era[\"mip_era\"].sort()\n", + "mip_era" + ] + }, + { + "cell_type": "markdown", + "id": "ea83b542-a24e-4007-b558-23eb6da5f34a", + "metadata": {}, + "source": [ + "### register new source_id's" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "7af751ea-c6fb-4782-8a4a-4282292f9bd9", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0 PCMDI-AMIP-1-1-10\n", + "1 PCMDI-AMIP-1-1-3\n", + "2 PCMDI-AMIP-1-1-4\n", + "3 PCMDI-AMIP-1-1-5\n", + "4 PCMDI-AMIP-1-1-6\n", + "5 PCMDI-AMIP-1-1-7\n", + "6 PCMDI-AMIP-1-1-8\n", + "7 PCMDI-AMIP-1-1-9\n", + "processing PCMDI-AMIP-ERSST5-1-0\n", + "processing PCMDI-AMIP-Had1p1-1-0\n", + "processing PCMDI-AMIP-OI2p1-1-0\n" + ] + } + ], + "source": [ + "source_id[\"source_id\"].keys()\n", + "\n", + "# Add to all\n", + "for count, srcId in enumerate(source_id[\"source_id\"].keys()):\n", + " print(count, srcId)\n", + " if srcId == \"PCMDI-AMIP-1-1-3\":\n", + " continue # no standard entries\n", + " source_id[\"source_id\"][srcId][\"comment\"] = source_id[\"source_id\"][srcId][\n", + " \"comment\"\n", + " ].replace(\"HadISST (1870\", \"HadISST v1.0 (1870\")\n", + " source_id[\"source_id\"][srcId][\"comment\"] = source_id[\"source_id\"][srcId][\n", + " \"comment\"\n", + " ].replace(\"NCEP-0I2 (1981\", \"NCEP-0I2 v2.0 (1981\")\n", + " source_id[\"source_id\"][srcId][\n", + " \"contact\"\n", + " ] = \"Paul J. Durack (durack1@llnl.gov; pauldurack@gmail.com); Karl E. Taylor (taylor13@llnl.gov); PCMDI (pcmdi-cmip@llnl.gov)\"\n", + " source_id[\"source_id\"][srcId][\"doi\"] = \"10.22033/ESGF/input4MIPs.1735\"\n", + " source_id[\"source_id\"][srcId][\"license_id\"] = \"CC BY 4.0\"\n", + " source_id[\"source_id\"][srcId][\"institution\"] = \" \".join(\n", + " [\n", + " \"Program for Climate Model Diagnosis and Intercomparison, Lawrence Livermore National Laboratory, Livermore, CA\",\n", + " \"94550, USA (ROR: https://ror.org/02k3nmd98)\",\n", + " ]\n", + " )\n", + " source_id[\"source_id\"][srcId][\"data_repo\"] = \"https://github.com/PCMDI/amipbcs\"\n", + " source_id[\"source_id\"][srcId].pop(\"references\")\n", + " source_id[\"source_id\"][srcId][\"references_obs\"] = \" \".join(\n", + " [\n", + " \"Hurrell, J. W., J. J. Hack, D. Shea, J. M. Caron, and J. Rosinski (2008) A New Sea Surface Temperature and Sea Ice Boundary Dataset\",\n", + " \"for the Community Atmosphere Model. J. Climate, 22 (19), pp 5145-5153. doi: 10.1175/2008JCLI2292.1\",\n", + " ]\n", + " )\n", + " source_id[\"source_id\"][srcId][\"references_bcs\"] = \" \".join(\n", + " [\n", + " \"Taylor, K.E., D. Williamson and F. Zwiers, 2000: The sea surface temperature and sea ice concentration boundary conditions for\",\n", + " \"AMIP II simulations. PCMDI Report 60, Program for Climate Model Diagnosis and Intercomparison, Lawrence Livermore National\",\n", + " \"Laboratory, 25 pp. Available online: https://pcmdi.llnl.gov/report/pdf/60.pdf\",\n", + " ]\n", + " )\n", + " source_id[\"source_id\"][srcId][\"source\"] = \"\".join(\n", + " [\n", + " \"PCMDI-AMIP \",\n", + " \".\".join(srcId.split(\"-\")[2:]),\n", + " \": Merged SST based on UK MetOffice HadISST v1.0 and NCEP OI2 v2.0\",\n", + " ]\n", + " )\n", + " # delete extraneous license key\n", + " if \"license\" in source_id[\"source_id\"][srcId].keys():\n", + " source_id[\"source_id\"][srcId].pop(\"license\")\n", + "\n", + "newSrcIds = [\"PCMDI-AMIP-ERSST5-1-0\", \"PCMDI-AMIP-Had1p1-1-0\", \"PCMDI-AMIP-OI2p1-1-0\"]\n", + "# pre-populate with PCMDI-AMIP-1-1-10 fields\n", + "for count, srcId in enumerate(newSrcIds):\n", + " source_id[\"source_id\"][srcId] = {}\n", + " source_id[\"source_id\"][srcId] = deepcopy(\n", + " source_id[\"source_id\"][\"PCMDI-AMIP-1-1-10\"]\n", + " )\n", + " source_id[\"source_id\"][srcId][\n", + " \"contact\"\n", + " ] = \"Paul J. Durack (durack1@llnl.gov; pauldurack@gmail.com); Mark D. Zelinka (zelinka1@llnl.gov); PCMDI (pcmdi-cmip@llnl.gov)\"\n", + " source_id[\"source_id\"][srcId][\"mip_era\"] = \"CMIP7Plus\"\n", + " source_id[\"source_id\"][srcId][\n", + " \"mip_specs\"\n", + " ] = \"AMIP CMIP5 CMIP6 CMIP6Plus CMIP7 CMIP7Plus\"\n", + " source_id[\"source_id\"][srcId][\n", + " \"source_description\"\n", + " ] = \"Sea surface temperature datasets produced by PCMDI (LLNL) for the AMIP (DECK) experiment of CMIP7Plus - prototype data for quantifying forcing uncertainty\"\n", + " source_id[\"source_id\"][srcId][\"source_id\"] = srcId\n", + " source_id[\"source_id\"][srcId][\"source_variables\"] = [\"tos\", \"tosbcs\"]\n", + " source_id[\"source_id\"][srcId][\"source_version\"] = \"1.0\"\n", + " source_id[\"source_id\"][srcId][\"title\"] = \" \".join(\n", + " [\"PCMDI-AMIP\", srcId.split(\"-\")[2], \"1.0 dataset prepared for input4MIPs\"]\n", + " )\n", + "\n", + "# Custom per srcId\n", + "# PCMDI-AMIP-ERSST5-1-0\n", + "srcId = \"PCMDI-AMIP-ERSST5-1-0\"\n", + "print(\"processing\", srcId)\n", + "source_id[\"source_id\"][srcId][\"comment\"] = \"\".join(\n", + " [\n", + " \"Based on Hurrell SST/sea ice consistency criteria applied to merged HadISST v1.0 (1870-01 to 1981-10) & NCEP-0ISST v2.0 \",\n", + " \"(1981-11 to 2022-12) and overwritten with ERSST v5.0 data where present (1870-01 to 2022-12)\",\n", + " ]\n", + ")\n", + "source_id[\"source_id\"][srcId][\"doi\"] = \"10.25981/ESGF.input4MIPs.CMIP7Plus/2584105\"\n", + "source_id[\"source_id\"][srcId][\"source\"] = \" \".join(\n", + " [\n", + " \"PCMDI-AMIP ERSST5 1.0: Merged SST based on UK MetOffice HadISST v1.0 and NCEP OI2 v2.0.\",\n", + " \"SST values are overwritten with ERSST v5.0 data where present\",\n", + " ]\n", + ")\n", + "\n", + "# PCMDI-AMIP-Had1p1-1-0\n", + "srcId = \"PCMDI-AMIP-Had1p1-1-0\"\n", + "print(\"processing\", srcId)\n", + "source_id[\"source_id\"][srcId][\"comment\"] = \"\".join(\n", + " [\n", + " \"Based on Hurrell SST/sea ice consistency criteria applied to merged HadISST v1.0 (1870-01 to 1981-10) & NCEP-0ISST v2.0 \",\n", + " \"(1981-11 to 2022-12) and overwritten with HadISST v1.1 data where present (1870-01 to 2022-12)\",\n", + " ]\n", + ")\n", + "source_id[\"source_id\"][srcId][\"doi\"] = \"10.25981/ESGF.input4MIPs.CMIP7Plus/2584106\"\n", + "source_id[\"source_id\"][srcId][\"source\"] = \" \".join(\n", + " [\n", + " \"PCMDI-AMIP HadISST1p1 1.0: Merged SST based on UK MetOffice HadISST v1.0 and NCEP OI2 v2.0.\",\n", + " \"SST values are overwritten with HadISST v1.1 data where present\",\n", + " ]\n", + ")\n", + "\n", + "# PCMDI-AMIP-OI2p1-1-0\n", + "srcId = \"PCMDI-AMIP-OI2p1-1-0\"\n", + "print(\"processing\", srcId)\n", + "source_id[\"source_id\"][srcId][\"comment\"] = \"\".join(\n", + " [\n", + " \"Based on Hurrell SST/sea ice consistency criteria applied to merged HadISST v1.0 (1870-01 to 1981-10) & NCEP-0ISST v2.0 \",\n", + " \"(1981-11 to 2022-12) and overwritten with NCEP-OISST v2.1 data where present (1981-09 to 2022-12)\",\n", + " ]\n", + ")\n", + "source_id[\"source_id\"][srcId][\"doi\"] = \"10.25981/ESGF.input4MIPs.CMIP7Plus/2584107\"\n", + "source_id[\"source_id\"][srcId][\"source\"] = \" \".join(\n", + " [\n", + " \"PCMDI-AMIP OISST2p1 1.0: Merged SST based on UK MetOffice HadISST v1.0 and NCEP OI2 v2.0.\",\n", + " \"SST values are overwritten with NCEP OI2p1 v2.1 data where present\",\n", + " ]\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "8e6d735d-9569-497e-b5df-a63d2d55b216", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "dict_keys(['PCMDI-AMIP-1-1-10', 'PCMDI-AMIP-1-1-3', 'PCMDI-AMIP-1-1-4', 'PCMDI-AMIP-1-1-5', 'PCMDI-AMIP-1-1-6', 'PCMDI-AMIP-1-1-7', 'PCMDI-AMIP-1-1-8', 'PCMDI-AMIP-1-1-9', 'PCMDI-AMIP-ERSST5-1-0', 'PCMDI-AMIP-Had1p1-1-0', 'PCMDI-AMIP-OI2p1-1-0'])" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "source_id[\"source_id\"].keys()" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "8836d2be-44d4-4067-86c4-ecd563641ebf", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'calendar': 'gregorian',\n", + " 'comment': 'Based on Hurrell SST/sea ice consistency criteria applied to merged HadISST v1.0 (1870-01 to 1981-10) & NCEP-0ISST v2.0 (1981-11 to 2022-12) and overwritten with ERSST v5.0 data where present (1870-01 to 2022-12)',\n", + " 'contact': 'Paul J. Durack (durack1@llnl.gov; pauldurack@gmail.com); Mark D. Zelinka (zelinka1@llnl.gov); PCMDI (pcmdi-cmip@llnl.gov)',\n", + " 'dataset_category': 'SSTsAndSeaIce',\n", + " 'further_info_url': 'https://pcmdi.llnl.gov/mips/amip',\n", + " 'grid': '1x1 degree longitude x latitude',\n", + " 'grid_label': 'gn',\n", + " 'institution': 'Program for Climate Model Diagnosis and Intercomparison, Lawrence Livermore National Laboratory, Livermore, CA 94550, USA (ROR: https://ror.org/02k3nmd98)',\n", + " 'institution_id': 'PCMDI',\n", + " 'mip_era': 'CMIP7Plus',\n", + " 'nominal_resolution': '1x1 degree',\n", + " 'product': 'observations',\n", + " 'region': ['global_ocean'],\n", + " 'release_year': '2025',\n", + " 'source': 'PCMDI-AMIP ERSST5 1.0: Merged SST based on UK MetOffice HadISST v1.0 and NCEP OI2 v2.0. SST values are overwritten with ERSST v5.0 data where present',\n", + " 'source_description': 'Sea surface temperature datasets produced by PCMDI (LLNL) for the AMIP (DECK) experiment of CMIP7Plus - prototype data for quantifying forcing uncertainty',\n", + " 'source_id': 'PCMDI-AMIP-ERSST5-1-0',\n", + " 'source_type': 'satellite_blended',\n", + " 'source_variables': ['tos', 'tosbcs'],\n", + " 'source_version': '1.0',\n", + " 'target_mip': 'CMIP',\n", + " 'title': 'PCMDI-AMIP ERSST5 1.0 dataset prepared for input4MIPs',\n", + " 'doi': '10.25981/ESGF.input4MIPs.CMIP7Plus/2584105',\n", + " 'license_id': 'CC BY 4.0',\n", + " 'data_repo': 'https://github.com/PCMDI/amipbcs',\n", + " 'references_obs': 'Hurrell, J. W., J. J. Hack, D. Shea, J. M. Caron, and J. Rosinski (2008) A New Sea Surface Temperature and Sea Ice Boundary Dataset for the Community Atmosphere Model. J. Climate, 22 (19), pp 5145-5153. doi: 10.1175/2008JCLI2292.1',\n", + " 'references_bcs': 'Taylor, K.E., D. Williamson and F. Zwiers, 2000: The sea surface temperature and sea ice concentration boundary conditions for AMIP II simulations. PCMDI Report 60, Program for Climate Model Diagnosis and Intercomparison, Lawrence Livermore National Laboratory, 25 pp. Available online: https://pcmdi.llnl.gov/report/pdf/60.pdf',\n", + " 'mip_specs': 'AMIP CMIP5 CMIP6 CMIP6Plus CMIP7 CMIP7Plus'}" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "source_id[\"source_id\"][\"PCMDI-AMIP-ERSST5-1-0\"]" + ] + }, + { + "cell_type": "markdown", + "id": "e7f072ee-298b-4c58-9b6c-f6ffd6c3adcf", + "metadata": {}, + "source": [ + "### define PCMDI-AMIP-1-1-0, PCMDI-AMIP1-1-1 and PCMDI-AMIP-1-1-2" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "8ca34609-f56b-4f54-bbbf-b9a85df90b53", + "metadata": {}, + "outputs": [], + "source": [ + "srcId = \"PCMDI-AMIP-1-1-0\"\n", + "source_id[\"source_id\"][srcId] = deepcopy(source_id[\"source_id\"][\"PCMDI-AMIP-1-1-4\"])\n", + "source_id[\"source_id\"][srcId][\"comment\"] = \" \".join(\n", + " [\n", + " \"Based on Hurrell SST/sea ice consistency criteria applied to\",\n", + " \"merged HadISST v1.0 (1870-01 to 1981-10) & NCEP-0I2 v2.0\",\n", + " \"(1981-11 to 2015-12)\",\n", + " ]\n", + ")\n", + "source_id[\"source_id\"][srcId][\"release_year\"] = \"2016\"\n", + "source_id[\"source_id\"][srcId][\n", + " \"source\"\n", + "] = \"PCMDI-AMIP 1.1.0: Merged SST based on UK MetOffice HadISST v1.0 and NCEP OI2 v2.0\"\n", + "source_id[\"source_id\"][srcId][\"source_id\"] = srcId\n", + "source_id[\"source_id\"][srcId][\"source_version\"] = \"1.1.0\"\n", + "source_id[\"source_id\"][srcId][\n", + " \"title\"\n", + "] = \"PCMDI-AMIP 1.1.0 dataset prepared for input4MIPs\"\n", + "\n", + "srcId = \"PCMDI-AMIP-1-1-1\"\n", + "source_id[\"source_id\"][srcId] = deepcopy(source_id[\"source_id\"][\"PCMDI-AMIP-1-1-4\"])\n", + "source_id[\"source_id\"][srcId][\"comment\"] = \" \".join(\n", + " [\n", + " \"Based on Hurrell SST/sea ice consistency criteria applied to\",\n", + " \"merged HadISST v1.0 (1870-01 to 1981-10) & NCEP-0I2 v2.0\",\n", + " \"(1981-11 to 2016-06)\",\n", + " ]\n", + ")\n", + "source_id[\"source_id\"][srcId][\"release_year\"] = \"2016\"\n", + "source_id[\"source_id\"][srcId][\n", + " \"source\"\n", + "] = \"PCMDI-AMIP 1.1.1: Merged SST based on UK MetOffice HadISST v1.0 and NCEP OI2 v2.0\"\n", + "source_id[\"source_id\"][srcId][\"source_id\"] = srcId\n", + "source_id[\"source_id\"][srcId][\"source_version\"] = \"1.1.1\"\n", + "source_id[\"source_id\"][srcId][\n", + " \"title\"\n", + "] = \"PCMDI-AMIP 1.1.1 dataset prepared for input4MIPs\"\n", + "\n", + "srcId = \"PCMDI-AMIP-1-1-2\"\n", + "source_id[\"source_id\"][srcId] = deepcopy(source_id[\"source_id\"][\"PCMDI-AMIP-1-1-4\"])\n", + "source_id[\"source_id\"][srcId][\"comment\"] = \" \".join(\n", + " [\n", + " \"Based on Hurrell SST/sea ice consistency criteria applied to\",\n", + " \"merged HadISST v1.0 (1870-01 to 1981-10) & NCEP-0I2 v2.0\",\n", + " \"(1981-11 to 2016-12)\",\n", + " ]\n", + ")\n", + "source_id[\"source_id\"][srcId][\"release_year\"] = \"2017\"\n", + "source_id[\"source_id\"][srcId][\n", + " \"source\"\n", + "] = \"PCMDI-AMIP 1.1.2: Merged SST based on UK MetOffice HadISST v1.0 and NCEP OI2 v2.0\"\n", + "source_id[\"source_id\"][srcId][\"source_id\"] = srcId\n", + "source_id[\"source_id\"][srcId][\"source_version\"] = \"1.1.2\"\n", + "source_id[\"source_id\"][srcId][\n", + " \"title\"\n", + "] = \"PCMDI-AMIP 1.1.2 dataset prepared for input4MIPs\"" + ] + }, + { + "cell_type": "markdown", + "id": "57c5bd71-05d7-4df4-9bb5-a487af42332c", + "metadata": {}, + "source": [ + "clean up PCMDI-AMIP-1-1-3" + ] + }, + { + "cell_type": "markdown", + "id": "63b7ee31-8429-4dac-8c11-40fa97b6d522", + "metadata": {}, + "source": [ + "### clean up PCMDI-AMIP-1-1-3" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "652a8a54-0d17-4c95-b014-5e878c56a5f1", + "metadata": {}, + "outputs": [], + "source": [ + "source_id[\"source_id\"][\"PCMDI-AMIP-1-1-3\"] = deepcopy(\n", + " source_id[\"source_id\"][\"PCMDI-AMIP-1-1-4\"]\n", + ")\n", + "source_id[\"source_id\"][\"PCMDI-AMIP-1-1-3\"][\"comment\"] = \" \".join(\n", + " [\n", + " \"Based on Hurrell SST/sea ice consistency criteria applied to\",\n", + " \"merged HadISST v1.0 (1870-01 to 1981-10) & NCEP-0I2 v2.0\",\n", + " \"(1981-11 to 2017-06)\",\n", + " ]\n", + ")\n", + "source_id[\"source_id\"][\"PCMDI-AMIP-1-1-3\"][\"release_year\"] = \"2017\"\n", + "source_id[\"source_id\"][\"PCMDI-AMIP-1-1-3\"][\n", + " \"source\"\n", + "] = \"PCMDI-AMIP 1.1.3: Merged SST based on UK MetOffice HadISST v1.0 and NCEP OI2 v2.0\"\n", + "source_id[\"source_id\"][\"PCMDI-AMIP-1-1-3\"][\"source_id\"] = \"PCMDI-AMIP-1-1-3\"\n", + "source_id[\"source_id\"][\"PCMDI-AMIP-1-1-3\"][\"source_version\"] = \"1.1.3\"\n", + "source_id[\"source_id\"][\"PCMDI-AMIP-1-1-3\"][\n", + " \"title\"\n", + "] = \"PCMDI-AMIP 1.1.3 dataset prepared for input4MIPs\"" + ] + }, + { + "cell_type": "markdown", + "id": "704a0ac0", + "metadata": {}, + "source": [ + "### clean up DOIs" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "2b0c0240", + "metadata": {}, + "outputs": [], + "source": [ + "source_id[\"source_id\"][\"PCMDI-AMIP-1-1-0\"][\"doi\"] = \"10.22033/ESGF/input4MIPs.1120\"\n", + "source_id[\"source_id\"][\"PCMDI-AMIP-1-1-1\"][\"doi\"] = \"10.22033/ESGF/input4MIPs.1128\"\n", + "source_id[\"source_id\"][\"PCMDI-AMIP-1-1-2\"][\"doi\"] = \"10.22033/ESGF/input4MIPs.1161\"\n", + "source_id[\"source_id\"][\"PCMDI-AMIP-1-1-3\"][\"doi\"] = \"10.22033/ESGF/input4MIPs.1735\"\n", + "source_id[\"source_id\"][\"PCMDI-AMIP-1-1-4\"][\"doi\"] = \"10.22033/ESGF/input4MIPs.2204\"\n", + "source_id[\"source_id\"][\"PCMDI-AMIP-1-1-5\"][\"doi\"] = \"10.22033/ESGF/input4MIPs.9942\"\n", + "source_id[\"source_id\"][\"PCMDI-AMIP-1-1-6\"][\"doi\"] = \"10.22033/ESGF/input4MIPs.12381\"\n", + "source_id[\"source_id\"][\"PCMDI-AMIP-1-1-7\"][\"doi\"] = \"10.22033/ESGF/input4MIPs.16485\"\n", + "# https://www.wdc-climate.de/ui/cmip6?input=input4MIPs.CMIP6.CMIP.PCMDI.PCMDI-AMIP-1-1-8\n", + "source_id[\"source_id\"][\"PCMDI-AMIP-1-1-8\"][\"doi\"] = \"10.22033/ESGF/input4MIPs.16921\"\n", + "source_id[\"source_id\"][\"PCMDI-AMIP-1-1-9\"][\n", + " \"doi\"\n", + "] = \"10.25981/ESGF.input4MIPs.CMIP6Plus/2583903\"\n", + "source_id[\"source_id\"][\"PCMDI-AMIP-1-1-10\"][\n", + " \"doi\"\n", + "] = \"10.25981/ESGF.input4MIPs.CMIP7/2575015\"\n", + "\n", + "source_id[\"source_id\"][\"PCMDI-AMIP-ERSST5-1-0\"][\n", + " \"doi\"\n", + "] = \"10.25981/ESGF.input4MIPs.CMIP7Plus/2584105\"\n", + "source_id[\"source_id\"][\"PCMDI-AMIP-Had1p1-1-0\"][\n", + " \"doi\"\n", + "] = \"10.25981/ESGF.input4MIPs.CMIP7Plus/2584106\"\n", + "source_id[\"source_id\"][\"PCMDI-AMIP-OI2p1-1-0\"][\n", + " \"doi\"\n", + "] = \"10.25981/ESGF.input4MIPs.CMIP7Plus/2584107\"\n", + "# Note to self https://github.com/PCMDI/input4MIPs_CVs/wiki/input4MIPs-Registered-DOIs-%E2%80%90-CMIP7-(CMIP6Plus-and-CMIP7Plus)" + ] + }, + { + "cell_type": "markdown", + "id": "78fa963b-ca65-48e2-b1ef-b5363ec46104", + "metadata": {}, + "source": [ + "### clean up PCMDI-AMIP-1-1-10" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "f40774ba-d5b3-4e1d-ad69-9f599a1a2770", + "metadata": {}, + "outputs": [], + "source": [ + "source_id[\"source_id\"][\"PCMDI-AMIP-1-1-10\"][\"data_update_notes\"] = \"\".join(\n", + " [\n", + " \"v1.1.9 and v1.1.10 differences: this update changes a single month (Dec-22) erroneous sea ice concentration \",\n", + " \"(siconc). Due to the tapering affect of the 'diddling' method, some very small changes (<1 percent) can be seen \",\n", + " \"starting in August 2022 in diddled fields (siconcbcs). For v1.1.10 a climatology-anomaly infill was \",\n", + " \"undertaken, replacing the Dec-22 problem values. For more details, see https://nbviewer.org/github/durack1/\",\n", + " \"notebooks/blob/main/jlnbs/PCMDI-AMIP-queryOISST2-0Data.ipynb; There are no changes to either the SST (tos) or \",\n", + " \"diddled SST (tosbcs) fields; NOAA OISST v2.0 data was deprecated in February 2023, and no further PCMDI-AMIP-1-x-y \",\n", + " \"updates will be produced. Ongoing discussions focused on a v2.0 product continue, see https://github.com/PCMDI/\",\n", + " \"amipbcs/issues/6.\",\n", + " ]\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "eb668d06-efc6-420a-a4cc-dcbe4212fe9d", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'calendar': 'gregorian',\n", + " 'comment': 'Based on Hurrell SST/sea ice consistency criteria applied to merged HadISST v1.0 (1870-01 to 1981-10) & NCEP-0I2 v2.0 (1981-11 to 2022-12)',\n", + " 'contact': 'Paul J. Durack (durack1@llnl.gov; pauldurack@gmail.com); Karl E. Taylor (taylor13@llnl.gov); PCMDI (pcmdi-cmip@llnl.gov)',\n", + " 'dataset_category': 'SSTsAndSeaIce',\n", + " 'further_info_url': 'https://pcmdi.llnl.gov/mips/amip',\n", + " 'grid': '1x1 degree longitude x latitude',\n", + " 'grid_label': 'gn',\n", + " 'institution': 'Program for Climate Model Diagnosis and Intercomparison, Lawrence Livermore National Laboratory, Livermore, CA 94550, USA (ROR: https://ror.org/02k3nmd98)',\n", + " 'institution_id': 'PCMDI',\n", + " 'mip_era': 'CMIP7',\n", + " 'nominal_resolution': '1x1 degree',\n", + " 'product': 'observations',\n", + " 'region': ['global_ocean'],\n", + " 'release_year': '2025',\n", + " 'source': 'PCMDI-AMIP 1.1.10: Merged SST based on UK MetOffice HadISST v1.0 and NCEP OI2 v2.0',\n", + " 'source_description': 'Sea surface temperature and sea-ice datasets produced by PCMDI (LLNL) for the AMIP (DECK) experiment of CMIP7',\n", + " 'source_id': 'PCMDI-AMIP-1-1-10',\n", + " 'source_type': 'satellite_blended',\n", + " 'source_variables': ['areacello',\n", + " 'sftof',\n", + " 'siconc',\n", + " 'siconcbcs',\n", + " 'tos',\n", + " 'tosbcs'],\n", + " 'source_version': '1.1.10',\n", + " 'target_mip': 'CMIP',\n", + " 'title': 'PCMDI-AMIP 1.1.10 dataset prepared for input4MIPs',\n", + " 'doi': '10.25981/ESGF.input4MIPs.CMIP7/2575015',\n", + " 'license_id': 'CC BY 4.0',\n", + " 'data_repo': 'https://github.com/PCMDI/amipbcs',\n", + " 'references_obs': 'Hurrell, J. W., J. J. Hack, D. Shea, J. M. Caron, and J. Rosinski (2008) A New Sea Surface Temperature and Sea Ice Boundary Dataset for the Community Atmosphere Model. J. Climate, 22 (19), pp 5145-5153. doi: 10.1175/2008JCLI2292.1',\n", + " 'references_bcs': 'Taylor, K.E., D. Williamson and F. Zwiers, 2000: The sea surface temperature and sea ice concentration boundary conditions for AMIP II simulations. PCMDI Report 60, Program for Climate Model Diagnosis and Intercomparison, Lawrence Livermore National Laboratory, 25 pp. Available online: https://pcmdi.llnl.gov/report/pdf/60.pdf',\n", + " 'data_update_notes': \"v1.1.9 and v1.1.10 differences: this update changes a single month (Dec-22) erroneous sea ice concentration (siconc). Due to the tapering affect of the 'diddling' method, some very small changes (<1 percent) can be seen starting in August 2022 in diddled fields (siconcbcs). For v1.1.10 a climatology-anomaly infill was undertaken, replacing the Dec-22 problem values. For more details, see https://nbviewer.org/github/durack1/notebooks/blob/main/jlnbs/PCMDI-AMIP-queryOISST2-0Data.ipynb; There are no changes to either the SST (tos) or diddled SST (tosbcs) fields; NOAA OISST v2.0 data was deprecated in February 2023, and no further PCMDI-AMIP-1-x-y updates will be produced. Ongoing discussions focused on a v2.0 product continue, see https://github.com/PCMDI/amipbcs/issues/6.\"}" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "source_id[\"source_id\"][\"PCMDI-AMIP-1-1-10\"]" + ] + }, + { + "cell_type": "markdown", + "id": "2f1b43fc-78e9-43ae-8dc2-281e9b1ddc66", + "metadata": {}, + "source": [ + "### create input4MIPs_CV.json composite" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "47b9e159-3330-4703-ac5e-ad1efe049b30", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0 activity_id\n", + "1 dataset_category\n", + "2 frequency\n", + "3 grid_label\n", + "4 institution_id\n", + "5 license\n", + "6 mip_era\n", + "7 nominal_resolution\n", + "8 product\n", + "9 realm\n", + "10 region\n", + "11 required_global_attributes\n", + "12 source_id\n", + "13 target_mip\n" + ] + } + ], + "source": [ + "input4MIPs_CV = {}\n", + "input4MIPs_CV[\"CV\"] = {}\n", + "for count, name in enumerate(targets):\n", + " print(count, name)\n", + " dic = eval(name)\n", + " input4MIPs_CV[\"CV\"][name] = dic[name]" + ] + }, + { + "cell_type": "markdown", + "id": "38690e4a-3a53-4106-903c-34114c71f128", + "metadata": {}, + "source": [ + "### write all files out to CVs subdir" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "43428099-d8e1-49ba-aee0-754c494640a3", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0 activity_id\n", + "1 dataset_category\n", + "2 frequency\n", + "3 grid_label\n", + "4 institution_id\n", + "5 license\n", + "6 mip_era\n", + "7 nominal_resolution\n", + "8 product\n", + "9 realm\n", + "10 region\n", + "11 required_global_attributes\n", + "12 source_id\n", + "13 target_mip\n", + "14 input4MIPs_CV\n", + "CPU times: user 2.28 ms, sys: 3.76 ms, total: 6.04 ms\n", + "Wall time: 5.31 ms\n" + ] + } + ], + "source": [ + "%%time\n", + "targets.append(\"input4MIPs_CV\")\n", + "for count, name in enumerate(targets):\n", + " print(count, name)\n", + " dic = eval(name)\n", + " if name == \"input4MIPs_CV\":\n", + " outFile = \"\".join([\"../Tables/\", name, \".json\"])\n", + " else:\n", + " outFile = \"\".join([\"../CVs/input4MIPs_\", name, \".json\"])\n", + " # cleanup\n", + " if os.path.exists(outFile):\n", + " os.remove(outFile)\n", + " with open(outFile, \"w\") as f:\n", + " json.dump(\n", + " dic, f, ensure_ascii=True, sort_keys=True, indent=4, separators=(\",\", \":\")\n", + " )" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.13.5" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/src/validFxData.ipynb b/src/validFxData.ipynb new file mode 100644 index 0000000..472829f --- /dev/null +++ b/src/validFxData.ipynb @@ -0,0 +1,1811 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "71499e0d-749c-4851-be63-047a0b8414ac", + "metadata": {}, + "source": [ + "# areacello/sftof validation - compare v1.1.9 and v1.1.10\n", + "
\n", + "

\n", + " \"Program \n", + " \"Lawrence \n", + " \"United\n", + "

\n", + "
" + ] + }, + { + "cell_type": "markdown", + "id": "3aff7547-f3d8-48aa-ba04-c26037edbd76", + "metadata": {}, + "source": [ + "# **Summary**\n", + "\n", + "This file pulls validates the `areacello` and `sftof` v1.1.9 and v1.1.10 datasets.\n", + "\n", + "**Authors:**\n", + "\n", + "Paul J. Durack ([durack1](https://github.com/durack1); [PCMDI](https://pcmdi.llnl.gov/), [Lawrence Livermore National Laboratory](https://www.llnl.gov/))\n", + "\n", + "**Notes:**\n", + "\n", + "PJD 31 Jul 2025 - initiated
\n", + "PJD 31 Jul 2025 - data updates `v20250731` seem to checkout ok, but minor differences in `areacello` exist
\n", + "\n", + "**TODO:**\n", + "\n", + "**Links:**" + ] + }, + { + "cell_type": "markdown", + "id": "49577536-eb90-415e-b65d-4cfe7586be0e", + "metadata": {}, + "source": [ + "### imports" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "2efa3087-e64a-49f7-b72a-979bfaae3494", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "CPU times: user 3.62 s, sys: 529 ms, total: 4.15 s\n", + "Wall time: 4.68 s\n" + ] + } + ], + "source": [ + "%%time\n", + "import os\n", + "import xcdat as xc\n", + "import xarray as xr" + ] + }, + { + "cell_type": "markdown", + "id": "6114b6d8-5ca9-4123-96cd-a9545c83da46", + "metadata": {}, + "source": [ + "### list data and plot" + ] + }, + { + "cell_type": "markdown", + "id": "ad4d938c-1808-4ed2-90f2-b35d9d40b1cf", + "metadata": {}, + "source": [ + "### areacella" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "08ddbc73-bb0b-4fa6-9009-15757de76de6", + "metadata": {}, + "outputs": [], + "source": [ + "a119fp = os.path.join(\n", + " \"..\", \"SST_1-1-10\", \"areacello_input4MIPs_SSTsAndSeaIce_CMIP_PCMDI-AMIP-1-1-9_gn.nc\"\n", + ")\n", + "fh119 = xc.open_dataset(a119fp, decode_times=False)" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "c87ba893-753a-4276-8a67-3b015f3d4698", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
<xarray.DataArray 'areacello' ()> Size: 4B\n",
+       "array(5.101e+14, dtype=float32)
" + ], + "text/plain": [ + " Size: 4B\n", + "array(5.101e+14, dtype=float32)" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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ljsmXQiBsLAwrF27Fo8ePUKTJk2wYsUK1KtXT+frCWu2KBERUeGEZJwWJYUBZr3pen5MTAzatGmj+jxx4kQAwMCBA7Fx40YkJiYiPj5etX/NmjXIycnBqFGjMGrUKFV53vGWymIygc8//xyrV6/Gpk2bUK9ePcTExGDQoEFwcnLCuHHjAAALFizAkiVLsHHjRvj5+WHu3Llo164dbty4AQcHBxPfARERkX4UIncrbh26aN26NUQh46JeTn6OHj2qe1AWwGISpTNnzqBr166qPk8fHx9s27YNMTExAHJbkyIjIzFz5kz06NEDALBp0ya4ublh69atGD58uE7XE7YyCGsrw94EERGVKiKHq+yUdhbzDTdv3hy//PILbt68CQD4/fffcfLkSXTs2BFAbt9pUlISgoODVefI5XK0atUKp0+fNknMREREhqA00Ea6s5gWpWnTpiE1NRV169aFlZUVFAoF5s2bh969ewOAatCYm5ub2nlubm64d++exnozMzORmZmp+vzyiqVERESmpoQEBaRi10G6s5hEaceOHfi///s/bN26FfXq1cPFixcxfvx4eHp6YuDAgarjJEn9D0EIka/sRREREQgLC8tXLqyt2PVGRESFEuBzorSzmK63KVOmYPr06fjwww/RoEED9O/fHxMmTFAtve7u7g7gfy1LeZKTk/O1Mr1oxowZSE1NVW0JCQkldxNERER6UArDbKQ7i2lRevbsmWoZgDxWVlZQKnN7XWvUqAF3d3dER0er3lKclZWFY8eO4fPPP9dYr6aXASptZVBaW0weSUREJqCUGec5oTBA11txzy+rLCZRevfddzFv3jxUr14d9erVw4ULF7BkyRIMHjwYQG6X2/jx4xEeHo7atWujdu3aCA8PR7ly5dCnTx8TR09ERESWyGISpWXLluHTTz/FyJEjkZycDE9PTwwfPhyzZs1SHTN16lQ8f/4cI0eOVC04GRUVpdcaSkobtigREVHhlBJblEo7SRS2mlQZlJaWBicnJzRvGwpraztTh0NERGYsJycDJw+HIjU1tUReNJv3TDp5xRMVHIqXlD1JV6J5/b9LLNbSymJalIxNaSOD0oYtSkREpBlblEo/ZgJEREREGrBFSQOltQSlNbNvIiLSTCmM85xQQAZFMds2jPP63tKHiRIREZGZE0IqdlImjJTUlTZMlDRgixIRERXF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vgCIDRs2qI6x1O+uqHuz5O9u8ODBqv//q1y5snjrrbdUSZIQlvudCVH4vVnyd0bGIQkhhPHar4iIiIgsB8coEREREWnARImIiIhIAyZKRERERBowUSIiIiLSgIkSERERkQZMlIiIiIg0YKJEREREpAETJSIiIiINmCgRGdjdu3chSRIuXrxYIvVLkoS9e/fqff7Ro0chSRIkSUK3bt0KPbZ169YYP3683teiwuV9DxUrVjR1KESkARMlKlVCQkKKfPiXNC8vLyQmJqJ+/foA/peYPH782KRxvezGjRvYuHGjqcMoEzT9XSYmJiIyMtLo8RCR9pgoERmYlZUV3N3dYW1tbepQClWlShWzaMnIzs42dQgm4+7uDicnJ1OHQUSFYKJEZcqxY8fwxhtvQC6Xw8PDA9OnT0dOTo5qf+vWrTF27FhMnToVLi4ucHd3R2hoqFodf/zxB5o3bw47Ozv4+/vj559/VusOe7Hr7e7du2jTpg0AwNnZGZIkISQkBADg4+OTrzXhtddeU7verVu30LJlS9W1oqOj893T/fv30atXLzg7O6NSpUro2rUr7t69q/Pv5unTpxgwYAAqVKgADw8PLF68ON8xWVlZmDp1KqpWrYry5cujSZMmOHr0qNoxX331Fby8vFCuXDl0794dS5YsUUvIQkND8dprr2H9+vXw9fWFXC6HEAKpqan4z3/+gypVqsDR0RFt27bF77//rlb3jz/+iICAANjZ2cHX1xdhYWFq319oaCiqV68OuVwOT09PjB07Vqt7L+q+UlJS0Lt3b1SrVg3lypVDgwYNsG3bNrU6vvvuOzRo0AD29vaoVKkS3n77bTx9+hShoaHYtGkTvv/+e1VX28u/MyIyX+b9T14iA7p//z46duyIkJAQbN68GX/88QeGDRsGOzs7teRk06ZNmDhxIn799VecOXMGISEhaNasGdq1awelUolu3bqhevXq+PXXX5Geno5JkyZpvKaXlxd27dqF9957Dzdu3ICjoyPs7e21ilepVKJHjx5wdXXF2bNnkZaWlm+80LNnz9CmTRu0aNECx48fh7W1NebOnYt33nkHly5dgq2trda/nylTpuDIkSPYs2cP3N3d8fHHHyM2Nhavvfaa6phBgwbh7t272L59Ozw9PbFnzx688847uHz5MmrXro1Tp05hxIgR+Pzzz9GlSxf8/PPP+PTT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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "fh119[\"areacello\"].plot()\n", + "fh119[\"areacello\"].sum()\n", + "# areacello = fh119.spatial.get_weights(axis=\"Y\")\n", + "# areacello, _ = xr.broadcast(areacello, fh119.lon)\n", + "# areacello = areacello/720\n", + "# areacello.sum()" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "f759425f-da44-4134-8049-0acafda3bb54", + "metadata": {}, + "outputs": [], + "source": [ + "a1110fp = os.path.join(\n", + " \"..\",\n", + " \"input4MIPs/CMIP7/CMIP/PCMDI/PCMDI-AMIP-1-1-10/ocean/fx/areacello/gn/v20250729\",\n", + " \"areacello_input4MIPs_SSTsAndSeaIce_CMIP_PCMDI-AMIP-1-1-10_gn.nc\",\n", + ")\n", + "fh1110 = xc.open_dataset(a1110fp, decode_times=False)" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "116d0474-4a95-4337-9ddb-1541342b0ffd", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
<xarray.DataArray 'areacello' ()> Size: 4B\n",
+       "array(3.67272e+17, dtype=float32)
" + ], + "text/plain": [ + " Size: 4B\n", + "array(3.67272e+17, dtype=float32)" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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N28epk6dik8//RTNmjUrMNS8uM9rw4YNQ0xMDN566y00b97caIOjdE566tatix9++AF9+vTBvn371OPwU1NTS/UbIRERUUVlaaO33njjDQBAz549NRKW/AmDlUplkefv3r0bv/76K1q1amXUuHROembPno2BAwdi0qRJ6NixI4KCggDktfrkz49THsglCXIjD7snIqLyxaTvCQuYZyefriumv6hWrVp6jbwujs5Jz1tvvYXWrVsjOTkZjRs3Vpd36tQJffr0MWpwREREZHnatWtn0PlLlizBjBkz8MUXX8DLy8tIUek5T4+rqyseP36MmJgYtG3bFra2tnj11VeNPiGhOckgQcbRW0REVARTvScs7fMWADx69Ahr167F5cuXIUkS/P39MWzYMDg4OBR7bmBgIDIzM+Hr64vKlSvD2tpaY/+DBw/0iknnpOf+/fvo168fDhw4AEmScP36dfj6+uK9995DtWrVsGTJEr0CISIiIi0srCNzXFwcunTpAltbWzRv3hxCCCxduhTz5s1DdHR0sSOwBgwYgDt37iAiIgIuLi7m68g8adIkWFtbIzExUWOa6P79+2PSpEnlJumRcZ4eIiIqBr8IFG7SpEno2bMnvvrqK/VaWrm5uXjvvfcwceJEHD58uMjzjx07huPHj2t0ozEGnUfbRUdHY8GCBRornANAvXr1ytWQdSIiorJDMtJWcmFhYZAkSWNzdXUt0blxcXGYMWOGxuKhVlZWmD59OuLi4oo9v0GDBnj27JlO8ZaEzi09T548US9B8bx79+4Vulq5pWKfHiIiKo7J3hNm+rzVsGFD/Pbbb+rfcrm8ROfZ29sjMTERDRo00ChPSkoq0ais+fPnY8qUKZg3bx4CAgIK9OnRd4ocnZOetm3bYuPGjfj0008B5K2mrlKpsGjRInTo0EGvIIiIiKjssbKyKnHrzvP69++P4cOHY/HixWjZsiUkSUJsbCymTZuGAQMGFHt+/jw/nTp10igv6Tw/2uic9CxatAjt27dHXFwcsrOzMX36dFy8eBEPHjzA0aNH9QqiLOI8PUREVByTvSeM2NKTnp6uUaxQKLR+qbl+/Trc3d2hUCjQokULREREwNfXt9hbLV68GJIkYejQocjNzQUAWFtb4/3338f8+fOLPd/QeX600XmVdQBISUnBqlWrcPr0aahUKjRt2hRjxoyBm5tb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aRgzZgwyMzMhhMDJkyexZcsWREZG4uuvvy6NGImIiCo0S1tlPTs7G19//TViYmIQGBiIKlWqaOxfunRpia6TmpqKq1evQpIk+Pn5oWbNmgbFpXPS8+677yI3NxfTp0/H06dPMXDgQNSqVQvLli3DO++8Y1AwREREZPkuXLiApk2bAgCuXbum8/np6ekYM2YMtm7dqh4wJZfL0b9/f6xcuVLvT2F6DVkfMWIERowYgXv37kGlUhmceZVFKgiooDJ3GEREVIapTPXNyMJmZD5w4IBB57/33ns4e/YsfvnlFwQFBUGSJBw7dgwTJkzAiBEjsH37dr2uq/OQ9ec5OzuXy4SHiIioTBFG2sxIpVLh559/Ru/evYs9dvfu3fjmm2/QpUsX2Nvbw87ODl26dMFXX32F3bt36x1DiVp6mjRpUuJe2IasfkpERETly/Xr1/HNN99gw4YNePjwIbp06VLsOdWrVy/0E5aDgwMcHR31jqVESc/zWVlmZiZWrVoFf39/BAUFAQBOnDiBixcvmnWRUSIiovLK0joyP3v2DNu3b8fatWtx4sQJKJVKfPbZZxg2bFiJJhn86KOPMHnyZGzcuBFubm4AgJSUFEybNg0ff/yx3nGVKOmZM2eO+t/vvfcexo8fr15P4/ljkpKS9A6krFEKFZRmbgokIqKyTSlM1PfTQoasnzx5El9//TW2bdsGPz8/DB48GN999x1q166N119/vciE58WvStevX4eXlxc8PT0BAImJiVAoFPjvf/+LkSNH6hWfzh2Zv/vuO8TFxRUoHzx4MAIDA/HNN9/oFQgRERFZtpYtW2LcuHE4efIk6tevr9O5JenrYyidkx5bW1vExsaiXr16GuWxsbGoZOAU2URERFQIY6ydZcD5kZGR+PDDDzFhwoQi19ns2LEj1q5di9TUVAwZMgRdunQpcZ/g578qlRadk56JEyfi/fffR3x8PF577TUAeX16vvnmG8yePdvoARIREVV4Zvy8derUKaxZswYvv/xyscdGR0cjKSkJ69atw/vvv49nz56hf//+AKDzshSlQeek54MPPoCvry+WLVuGzZs3AwBeeuklrF+/Hv369TN6gOaSN08PO/UQEZF25f098fjxYwwaNAhfffUV5s6dW6JzPDw8MHv2bMyePRsxMTH45ptvYGVlhV69euGtt97CW2+9pZ64UJv8js/b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TU9PL1ErU5s2bRATE4OAgAD069cPEyZMwP79+xETE4NOnTrpHZvO32+WLFmCyMhIdcID5CUXc+fO1UhCSiIsLAySJBW5xcXFaZxz9+5dvPHGG3j77bfx3nvvaewrbMIiIUSRExnNnDkTaWlp6i0pKUmnOhAREZU6YaStlO3atQuBgYHIzMwssC8zMxOvvvoqfv75Z63nnz17FgCwYsUKvPPOOwDy3tNTp07FP//8g759+2Lt2rV6x6dzR+b09HT8888/BWZTTE1NVTdFldTYsWPVldLG29tb/e+7d++iQ4cOCAoKwpo1azSOc3V1xR9//KFR9vDhQ+Tk5BRoAXqeQqGAQqEoUK6EBCWYwRMRkXamek9Yyuet1atXY/r06ahcuXKBfZUrV8aMGTOwYsUKvPnmm4We37RpUzRp0gTvvfceBg4cCACQyWSYPn06pk+fbnB8Orf09OnTB++++y6+//57/P333/j777/x/fffY/jw4ejbt69O13J2dkaDBg2K3CpVyuu4defOHbRv3x5NmzbFunXrIJNphh4UFIQLFy5odG6Kjo6GQqEwaV8jIiKiiurChQto37691v1t27bF+fPnte4/evQomjZtig8++ABubm4YPHiwUWdn1rml54svvsDUqVMxePBg5OTk5F3EygrDhw/HokWLjBbY8+7evYv27dvD09MTixcvxn//+1/1PldXVwBAcHAw/P39MWTIECxatAgPHjzA1KlTMWLECL16qecIGXIER28REZF2nKdH08OHD5Gbm6t1f05ODh4+fKh1f1BQEIKCgvD5559j+/btWLduHV5//XV4e3tj2LBhCAkJQe3atfWOT+e3euXKlbFq1Srcv38fZ86cwenTp/HgwQOsWrWqwCqoxhIdHY0bN25g//79qF27Ntzc3NRbPrlcjt27d6NSpUpo1aoV+vXrh969e6vn8SEiIrJYFtKnx9vbu0Bf3OfFxcXBy8ur2OvY2toiJCQEBw8exLVr1zBgwAB8+eWX8PHxQbdu3fSOr0Tz9FQk+XMi/H7eE1U4Tw8RERXhSYYKnQISS32eHv/Rxpmn59Kq0p2nZ9asWfjPf/6DkydPFuhPm5KSghYtWmDw4MGYN2+eTtd9/PgxNm3ahA8//BCPHj2CUqnUKz6dP2916NChyNFQ+/fv1ysQIiIismwffPABfvzxR9SrVw+DBw9G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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "fh1110[\"areacello\"].plot()\n", + "fh1110[\"areacello\"].sum()" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "10ef3162-c3ad-4ff1-be0f-9946edfcd1e6", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "diff = fh1110[\"areacello\"] - fh119[\"areacello\"]\n", + "diff.plot()" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "0ae69d77-bf1d-4135-a2d6-ac044c98d719", + "metadata": {}, + "outputs": [], + "source": [ + "a1110fp = os.path.join(\n", + " \"..\",\n", + " \"input4MIPs/CMIP7/CMIP/PCMDI/PCMDI-AMIP-1-1-10/ocean/fx/areacello/gn/v20250731\",\n", + " \"areacello_input4MIPs_SSTsAndSeaIce_CMIP_PCMDI-AMIP-1-1-10_gn.nc\",\n", + ")\n", + "fh1110 = xc.open_dataset(a1110fp, decode_times=False)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "380fb1aa-2916-47ca-a08c-9dfaf40d1a35", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
<xarray.DataArray 'areacello' ()> Size: 4B\n",
+       "array(5.101e+14, dtype=float32)
" + ], + "text/plain": [ + " Size: 4B\n", + "array(5.101e+14, dtype=float32)" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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ljsmXQiBsLAwrF27Fo8ePUKTJk2wYsUK1KtXT+frCWu2KBERUeGEZJwWJYUBZr3pen5MTAzatGmj+jxx4kQAwMCBA7Fx40YkJiYiPj5etX/NmjXIycnBqFGjMGrUKFV53vGWymIygc8//xyrV6/Gpk2bUK9ePcTExGDQoEFwcnLCuHHjAAALFizAkiVLsHHjRvj5+WHu3Llo164dbty4AQcHBxPfARERkX4UIncrbh26aN26NUQh46JeTn6OHj2qe1AWwGISpTNnzqBr166qPk8fHx9s27YNMTExAHJbkyIjIzFz5kz06NEDALBp0ya4ublh69atGD58uE7XE7YyCGsrw94EERGVKiKHq+yUdhbzDTdv3hy//PILbt68CQD4/fffcfLkSXTs2BFAbt9pUlISgoODVefI5XK0atUKp0+fNknMREREhqA00Ea6s5gWpWnTpiE1NRV169aFlZUVFAoF5s2bh969ewOAatCYm5ub2nlubm64d++exnozMzORmZmp+vzyiqVERESmpoQEBaRi10G6s5hEaceOHfi///s/bN26FfXq1cPFixcxfvx4eHp6YuDAgarjJEn9D0EIka/sRREREQgLC8tXLqyt2PVGRESFEuBzorSzmK63KVOmYPr06fjwww/RoEED9O/fHxMmTFAtve7u7g7gfy1LeZKTk/O1Mr1oxowZSE1NVW0JCQkldxNERER6UArDbKQ7i2lRevbsmWoZgDxWVlZQKnN7XWvUqAF3d3dER0er3lKclZWFY8eO4fPPP9dYr6aXASptZVBaW0weSUREJqCUGec5oTBA11txzy+rLCZRevfddzFv3jxUr14d9erVw4ULF7BkyRIMHjwYQG6X2/jx4xEeHo7atWujdu3aCA8PR7ly5dCnTx8TR09ERESWyGISpWXLluHTTz/FyJEjkZycDE9PTwwfPhyzZs1SHTN16lQ8f/4cI0eOVC04GRUVpdcaSkobtigREVHhlBJblEo7SRS2mlQZlJaWBicnJzRvGwpraztTh0NERGYsJycDJw+HIjU1tUReNJv3TDp5xRMVHIqXlD1JV6J5/b9LLNbSymJalIxNaSOD0oYtSkREpBlblEo/ZgJEREREGrBFSQOltQSlNbNvIiLSTCmM85xQQAZFMds2jPP63tKHiRIREZGZE0IqdlImjJTUlTZMlDRgixIRERXF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vgCIDRs2qI6x1O+uqHuz5O9u8ODBqv//q1y5snjrrbdUSZIQlvudCVH4vVnyd0bGIQkhhPHar4iIiIgsB8coEREREWnARImIiIhIAyZKRERERBowUSIiIiLSgIkSERERkQZMlIiIiIg0YKJEREREpAETJSIiIiINmCgRGdjdu3chSRIuXrxYIvVLkoS9e/fqff7Ro0chSRIkSUK3bt0KPbZ169YYP3683teiwuV9DxUrVjR1KESkARMlKlVCQkKKfPiXNC8vLyQmJqJ+/foA/peYPH782KRxvezGjRvYuHGjqcMoEzT9XSYmJiIyMtLo8RCR9pgoERmYlZUV3N3dYW1tbepQClWlShWzaMnIzs42dQgm4+7uDicnJ1OHQUSFYKJEZcqxY8fwxhtvQC6Xw8PDA9OnT0dOTo5qf+vWrTF27FhMnToVLi4ucHd3R2hoqFodf/zxB5o3bw47Ozv4+/vj559/VusOe7Hr7e7du2jTpg0AwNnZGZIkISQkBADg4+OTrzXhtddeU7verVu30LJlS9W1oqOj893T/fv30atXLzg7O6NSpUro2rUr7t69q/Pv5unTpxgwYAAqVKgADw8PLF68ON8xWVlZmDp1KqpWrYry5cujSZMmOHr0qNoxX331Fby8vFCuXDl0794dS5YsUUvIQkND8dprr2H9+vXw9fWFXC6HEAKpqan4z3/+gypVqsDR0RFt27bF77//rlb3jz/+iICAANjZ2cHX1xdhYWFq319oaCiqV68OuVwOT09PjB07Vqt7L+q+UlJS0Lt3b1SrVg3lypVDgwYNsG3bNrU6vvvuOzRo0AD29vaoVKkS3n77bTx9+hShoaHYtGkTvv/+e1VX28u/MyIyX+b9T14iA7p//z46duyIkJAQbN68GX/88QeGDRsGOzs7teRk06ZNmDhxIn799VecOXMGISEhaNasGdq1awelUolu3bqhevXq+PXXX5Geno5JkyZpvKaXlxd27dqF9957Dzdu3ICjoyPs7e21ilepVKJHjx5wdXXF2bNnkZaWlm+80LNnz9CmTRu0aNECx48fh7W1NebOnYt33nkHly5dgq2trda/nylTpuDIkSPYs2cP3N3d8fHHHyM2Nhavvfaa6phBgwbh7t272L59Ozw9PbFnzx688847uHz5MmrXro1Tp05hxIgR+Pzzz9GlSxf8/PPP+PTT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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "fh1110[\"areacello\"].plot()\n", + "fh1110[\"areacello\"].sum()" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "9b325f76-9872-4a3c-b1a9-0f3461d8314e", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "diff = fh1110[\"areacello\"] - fh119[\"areacello\"]\n", + "diff.plot()" + ] + }, + { + "cell_type": "markdown", + "id": "22d7eaba-52a9-42ef-90c6-16ca71ea9415", + "metadata": {}, + "source": [ + "### sftof" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "c1780f73-d247-4323-b89f-48bea6a5481b", + "metadata": {}, + "outputs": [], + "source": [ + "s119fp = os.path.join(\n", + " \"..\", \"SST_1-1-10\", \"sftof_input4MIPs_SSTsAndSeaIce_CMIP_PCMDI-AMIP-1-1-9_gn.nc\"\n", + ")\n", + "fh119 = xc.open_dataset(s119fp, decode_times=False)" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "ab708230-e123-4714-b208-6458439b88cb", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "fh119[\"sftof\"].plot()" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "78095415-57b1-423b-bcbc-ef8ae8f29b0a", + "metadata": {}, + "outputs": [], + "source": [ + "s1110fp = os.path.join(\n", + " \"..\",\n", + " \"input4MIPs/CMIP7/CMIP/PCMDI/PCMDI-AMIP-1-1-10/ocean/fx/sftof/gn/v20250729\",\n", + " \"sftof_input4MIPs_SSTsAndSeaIce_CMIP_PCMDI-AMIP-1-1-10_gn.nc\",\n", + ")\n", + "fh1110 = xc.open_dataset(s1110fp, decode_times=False)" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "b3a215a4-6140-47d0-9125-d11121f55b2e", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "fh1110[\"sftof\"].plot()" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "243bfd97-b25d-4378-954f-97f6a9cffe79", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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VKyOWq0uthLfxcUFtra2pe4JARSumXpwD4ucnBzJ4iYiIpKEEIWHqW2QySQbcSoLQ/eIWLhwIXJycjBx4sRHtleWfSRiY2P19rPw9PQ0uV9ERERSknIDTDJNuY44GbpHxPTp03Hw4MFie00EBwejf//+WL16NVQqlW4RWZEbN27g3r17pe4jARQ+GTh69Gjd7zk5OUyeiIiIqEQGJ05FL+Erzc2bN43+cEP3iFiwYAGmT5+u+/3q1avo2LEj1q9fr3s3TmhoKGbMmIGMjAzdZlpxcXFQKpUICgoqtW2lUlnq5l9ERESyIPOn6ioSgxMnZ2fnx54fNGiQyQGVxMvLS+/3KlWqACh8U3Lt2rUBAOHh4QgICMDAgQMxe/ZsXL9+HWPHjkVkZCSfqCMiIoum0BYeprZBpjM4cVq5cqU54zCZtbU1tm3bhmHDhqF58+awt7dHv379MGfOnPIOjYiIyDQccZINi3iq7mE+Pj4l7u3g5eWFrVu3lkNEREREVBFYZOJERERUkUj5rjoyDRMnIiIiueM+TrJRrvs4EREREVkSjjgRERHJHKfq5IOJExERkdzxqTrZ4FQdERERkYE44kRERCRznKqTDyZOREREcsen6mSDU3VEREREBuKIExERkcxxqk4+mDgRERHJHZ+qkw0mTkRERDLHESf54BonIiIiIgNxxImIiEjutKLwMLUNMhkTJyIiIrnjGifZ4FQdERERkYE44kRERCRzCkiwOFySSIiJExERkdxx53DZ4FQdERERkYE44kRERCRz3MdJPpg4ERERyR2fqpMNTtURERERGYgjTkRERDKnEAIKExd3m3o9FWLiREREJHfa/x2mtkEmY+JEREQkcxxxkg+ucSIiIiIyEEeciIiI5I5P1ckGEyciIiK5487hssGpOiIiIiIDccSJiIhI5rhzuHwwcSIiIpI7TtXJhkVN1W3btg0hISGwt7eHq6srevfurXc+LS0N3bt3h4ODA1xdXTFixAgUFBSUU7RERET0tLGYEacNGzYgMjISMTExePHFFyGEwKlTp3TnNRoNunbtiho1amD//v3IysrC4MGDIYTAwoULyzFyIiIi0yi0hYepbZDpLCJxun//Pt5//33Mnj0bb775pq68fv36up/j4uLwxx9/ID09HR4eHgCAuXPnYsiQIZgxYwacnJyeeNxERESS4FSdbFjE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lPYdP6go4XiwbXd39xLX/hStj9JqtZg6dSp69+5drI6dnR08PT2RkpKC+Ph4/PLLLxg2bBhmz56NhISEYvfU2H7NnTsXn332GebPn49GjRrBwcEBI0eOREFBAYDCBwLi4+Nx4MABxMXFYeHChZg0aRIOHToEX1/fUj+biCwPEyeqMAICArBhwwa9P+4HDhyAo6MjatWqZVAbDRo0QFpaGv755x+4ubkBAI4cOfLIa4rWGWk0Gr3yGjVqICMjQ/d7Tk4OUlNT9eJNS0vD1atX4eHhAQBITEzUa+O5557D+vXrdQuqy6pu3bqwsbHBwYMHdSNvN27cwLlz59C6dWsAQNOmTaHRaJCZmYmWLVuW2E6DBg1w+PBhvbKjR48+9vOfe+45qNVqVKpUCT4+PqXWSUlJQd26dUttx97eHj169ECPHj3w7rvvokGDBjh16hSee+65Uq8xpF/79u1DREQEBgwYAKAw2Tp//jwaNmyoq6NQKNC8eXM0b94cH3/8Mby9vbFp0yaMHj0atra2xe4/EVkmPlVHT53s7GwcP35c70hLS8OwYcOQnp6O9957D3/++Sd++uknTJkyBaNHj4aVlWH/U+jQoQPq1KmDwYMH4+TJk/j9998xadIkAMVHg4p4e3tDoVBg69at+Pfff3Hr1i0AwIsvvohvvvkG+/btw+nTpzF48GC9EY/27dujfv36GDRoEE6cOIF9+/bpPqtI//794erqioiICOzbtw+pqalISEjA+++/j7///tvg76xKlSp48803MW7cOPz66684ffo0hgwZove91KtXD/3798egQYOwceNGpKam4siRI5g5cya2b98OAHjvvfewfft2zJs3D+fPn8eXX36JHTt2PHaUrn379ggNDUXPnj2xa9cuXLp0CQcOHMDkyZN1idfHH3+MNWvWIDo6GmfOnMHZs2exfv16TJ48GQCwatUqrFixAqdPn8Zff/2Fb775Bvb29vD29n7kZxvSr7p16+pGlM6ePYuhQ4dCrVbr2jh06BBiYmJw9OhRpKWlYePGjfj33391iZWPjw9OnjyJlJQUXLt2rUJvwUBk8cppbRWRWQwePFgAKHYMHjxYCCHE3r17xfPPPy9sbW2FSqUSEyZMEPfu3dNd37p1a91i6CIRERG664UQ4uzZs6J58+bC1tZWNGjQQPz8888CgNi5c6cQovjicCGEmDZtmlCpVEKhUOjays7OFq+++qpwcnISnp6eYtWqVXqLw4UQIiUlRbRo0ULY2tqKevXqiZ07d+otDhdCiIyMDDFo0CDh6uoqlEql8PPzE5GRkSI7O7vE76i0xeq5ubliwIABonLlysLNzU3MmjWr2PdRUFAgPv74Y+Hj4yNsbGyESqUSvXr1EidPntTVWbZsmahVq5awt7cXPXv2FNOnTxcqlUp3fsqUKaJx48bF4srJyRHvvfee8PDwEDY2NsLT01P0799fpKWl6ers3LlThIWFCXt7e+Hk5CSaNWsmli1bJoQQYtOmTSIkJEQ4OTkJBwcH8cILL4hffvmlxO/gYY/rV1ZWloiIiBBVqlQRNWvWFJMnTxaDBg3SLfj+448/RMeOHUWNGjWEUqkU9erVEwsXLtS1n5mZKTp06CCqVKkiAIg9e/boznFxOJFlUQhhwOIGIirV77//jhYtWuDChQuoU6dOeYfzWHv37kXbtm1x48aNJ7IBZmRkJP7880/s27fP7J9liVatWoWRI0fKbmd5IioZ1zgRGWnTpk2oUqUK/P39ceHCBbz//vto3ry5RSRND6pduza6d+9ebCNHU82ZMwcdOnSAg4MDduzYgdWrV2Px4sWSfsbTokqVKrh//z7s7OzKOxQiMhATJyIj5ebmYvz48UhPT4erqyvat29f4i7bchUSEoLz588D+O+pMSkdPnwYs2bNQm5uLvz8/LBgwQK89dZbkn+Oofbt24fOnTuXer5ozVl5KHoR9MNP8xGRfHGqjoieanfv3sWVK1dKPf+op/SIiB7GxImIiIjIQNyOgIiIiMhATJyIiIiIDMTEiYiIiMhATJyIiIiIDMTEiYiIiMhATJyIiIiIDMTEiYiIiMhATJyIiIiIDPT/8BELlxME4JsAAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "diff = fh1110[\"sftof\"] - fh119[\"sftof\"]\n", + "diff.plot()" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.13" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +}