Skip to content

Commit

Permalink
Merge pull request #162 from dabail10/seaice
Browse files Browse the repository at this point in the history
Fix some titles and get the full sea ice diagnostics working again
  • Loading branch information
mnlevy1981 authored Jan 25, 2025
2 parents c0ec3a8 + 7da2503 commit 234505c
Show file tree
Hide file tree
Showing 4 changed files with 347 additions and 930 deletions.
40 changes: 23 additions & 17 deletions examples/coupled_model/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -41,15 +41,22 @@ computation_config:
# All parameters under global_params get passed to all the notebooks

global_params:
case_name: 'b.e30_beta04.BLT1850.ne30_t232_wgx3.121min'
base_case_name: 'b.e30_beta04.BLT1850.ne30_t232_wgx3.121'
CESM_output_dir: /glade/campaign/cesm/development/cross-wg/diagnostic_framework/CESM_output_for_testing
base_case_output_dir: /glade/campaign/cesm/development/cross-wg/diagnostic_framework/CESM_output_for_testing
start_date: '0001-01-01'
end_date: '0100-01-01'
base_start_date: '0001-01-01'
base_end_date: '0100-01-01'
lc_kwargs:
threads_per_worker: 1

timeseries:
num_procs: 8
ts_done: [False]
overwrite_ts: [False]
case_name: 'b.e23_alpha16b.BLT1850.ne30_t232.054'
ts_done: [False,False]
overwrite_ts: [False,False]
case_name: ['b.e30_beta04.BLT1850.ne30_t232_wgx3.121min', 'b.e30_beta04.BLT1850.ne30_t232_wgx3.121']

atm:
vars: ['ACTNI', 'ACTNL', 'ACTREI', 'ACTREL', 'AODDUST']
Expand All @@ -76,11 +83,11 @@ timeseries:
level: 'lev'

ice:
vars: ['hi', 'hs', 'snowfrac', 'Tsfc'] #['process_all']
vars: ['aice','hi', 'hs','uvel','vvel'] #['process_all']
derive_vars: []
hist_str: 'h'
start_years: [2]
end_years: [102]
hist_str: 'cice.h'
start_years: [1,1]
end_years: [100,100]
level: 'lev'

glc:
Expand Down Expand Up @@ -147,17 +154,15 @@ compute_notebooks:
- 1850pSASU

ice:
seaice:
Hemis_seaice_visual_compare_obs_lens:
parameter_groups:
none:
cases:
- b.e23_alpha17f.BLTHIST.ne30_t232.092
- b.e30_beta02.BLTHIST.ne30_t232.104
begyr1: 1850
endyr1: 2013
begyr2: 1850
endyr2: 2013
nyears: 35
climo_nyears: 35
Hemis_seaice_visual_compare_contour:
parameter_groups:
none:
climo_nyears: 35


########### JUPYTER BOOK CONFIG ###########

Expand Down Expand Up @@ -196,7 +201,8 @@ book_toc:

- caption: Sea Ice
chapters:
- file: ice/seaice
- file: ice/Hemis_seaice_visual_compare_obs_lens
- file: ice/Hemis_seaice_visual_compare_contour

#####################################
# Keys for Jupyter Book _config.yml #
Expand Down
320 changes: 320 additions & 0 deletions nblibrary/ice/Hemis_seaice_visual_compare_contour.ipynb
Original file line number Diff line number Diff line change
@@ -0,0 +1,320 @@
{
"cells": [
{
"cell_type": "markdown",
"id": "351f2902-54b0-463c-9d61-23574844481f",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": [
"hide-input"
]
},
"source": [
"### Sea Ice Diagnostics for two CESM3 runs"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "7e7f10ae-61c8-45f1-9d5c-9be60632b556",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": [
"hide-input"
]
},
"outputs": [],
"source": [
"import xarray as xr\n",
"import numpy as np\n",
"import yaml"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "270b0ff5-779c-4293-8d06-bd91eb8eee2b",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": [
"parameters",
"hide-input"
]
},
"outputs": [],
"source": [
"CESM_output_dir = \"/glade/campaign/cesm/development/cross-wg/diagnostic_framework/CESM_output_for_testing\"\n",
"serial = False # use dask LocalCluster\n",
"\n",
"case_name = \"b.e30_beta04.BLT1850.ne30_t232_wgx3.121congel\"\n",
"base_case_name = \"b.e30_beta04.BLT1850.ne30_t232_wgx3.121\"\n",
"\n",
"start_date = \"0001-01-01\"\n",
"end_date = \"0100-01-01\"\n",
"base_start_date = \"0001-01-01\"\n",
"base_end_date = \"0100-01-01\"\n",
"\n",
"climo_nyears = 35\n",
"\n",
"lc_kwargs = {}\n",
"\n",
"hist = 0"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "03782fa0-3224-4c2d-8355-b89d1b5f57c1",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": [
"hide-input"
]
},
"outputs": [],
"source": [
"cupid_run = 1\n",
"\n",
"if cupid_run == 1:\n",
"\n",
" from dask.distributed import Client, LocalCluster\n",
"\n",
" # Spin up cluster (if running in parallel)\n",
" client = None\n",
" if not serial:\n",
" cluster = LocalCluster(**lc_kwargs)\n",
" client = Client(cluster)\n",
"\n",
"else:\n",
"\n",
" from dask.distributed import Client\n",
" from dask_jobqueue import PBSCluster\n",
"\n",
" cluster = PBSCluster(\n",
" cores=16,\n",
" processes=16,\n",
" memory=\"100GB\",\n",
" account=\"P93300065\",\n",
" queue=\"casper\",\n",
" walltime=\"02:00:00\",\n",
" )\n",
"\n",
" client = Client(cluster)\n",
"\n",
" cluster.scale(1)\n",
"\n",
" print(cluster)\n",
"print(client)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "d3f591cc-dd67-4a3f-abe7-bfc740743db1",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": [
"hide-input"
]
},
"outputs": [],
"source": [
"# Read in two cases. The ADF timeseries are needed here.\n",
"\n",
"ds1 = xr.open_mfdataset(\n",
" CESM_output_dir\n",
" + \"/\"\n",
" + case_name\n",
" + \"/ice/proc/tseries/month_1/\"\n",
" + case_name\n",
" + \".cice.h.\"\n",
" + \"*.nc\",\n",
" data_vars=\"minimal\",\n",
" compat=\"override\",\n",
" coords=\"minimal\",\n",
").sel(time=slice(start_date, end_date))\n",
"ds2 = xr.open_mfdataset(\n",
" CESM_output_dir\n",
" + \"/\"\n",
" + base_case_name\n",
" + \"/ice/proc/tseries/month_1/\"\n",
" + base_case_name\n",
" + \".cice.h.\"\n",
" + \"*.nc\",\n",
" data_vars=\"minimal\",\n",
" compat=\"override\",\n",
" coords=\"minimal\",\n",
").sel(time=slice(base_start_date, base_end_date))\n",
"\n",
"ds_grid = xr.open_dataset(\"/glade/campaign/cesm/community/omwg/grids/tx2_3v2_grid.nc\")\n",
"TLAT = ds_grid[\"TLAT\"]\n",
"TLON = ds_grid[\"TLONG\"]\n",
"tarea = ds_grid[\"TAREA\"] * 1.0e-4\n",
"angle = ds_grid[\"ANGLE\"]\n",
"\n",
"ds1_ann = ds1.resample(time=\"YS\").mean(dim=\"time\")\n",
"ds2_ann = ds2.resample(time=\"YS\").mean(dim=\"time\")\n",
"\n",
"with open(\"cice_masks.yml\", \"r\") as file:\n",
" cice_masks = yaml.safe_load(file)\n",
"\n",
"with open(\"cice_vars.yml\", \"r\") as file:\n",
" cice_vars = yaml.safe_load(file)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "da24abe2-7b48-4c3d-b8a5-95847029bd74",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": [
"hide-input"
]
},
"outputs": [],
"source": [
"from plot_diff import plot_diff\n",
"from vect_diff import vect_diff"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "28a0da20-6bad-45d7-a61a-43d55ea2acd2",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": [
"hide-input"
]
},
"outputs": [],
"source": [
"for var in cice_vars:\n",
" vmin = cice_vars[var][0][\"levels\"][0]\n",
" vmax = cice_vars[var][0][\"levels\"][-1]\n",
" levels = np.array(cice_vars[var][0][\"levels\"])\n",
" title = cice_vars[var][1][\"title\"]\n",
" field1 = ds1_ann[var].isel(time=slice(-climo_nyears, None)).mean(\"time\").squeeze()\n",
" field2 = ds2_ann[var].isel(time=slice(-climo_nyears, None)).mean(\"time\").squeeze()\n",
" plot_diff(field1, field2, levels, case_name, base_case_name, title, \"N\", TLAT, TLON)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "17591ebc-5360-479f-93bc-6ba8847df5c1",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": [
"hide-input"
]
},
"outputs": [],
"source": [
"for var in cice_vars:\n",
" vmin = cice_vars[var][0][\"levels\"][0]\n",
" vmax = cice_vars[var][0][\"levels\"][1]\n",
" levels = np.array(cice_vars[var][0][\"levels\"])\n",
" title = cice_vars[var][1][\"title\"]\n",
" field1 = ds1_ann[var].isel(time=slice(-climo_nyears, None)).mean(\"time\").squeeze()\n",
" field2 = ds2_ann[var].isel(time=slice(-climo_nyears, None)).mean(\"time\").squeeze()\n",
" plot_diff(field1, field2, levels, case_name, base_case_name, title, \"S\", TLAT, TLON)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "cfc18c63-fc78-45c3-a402-cfa57a6827cd",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": [
"hide-input"
]
},
"outputs": [],
"source": [
"uvel1 = ds1_ann[\"uvel\"].isel(time=slice(-climo_nyears, None)).mean(\"time\").squeeze()\n",
"vvel1 = ds1_ann[\"vvel\"].isel(time=slice(-climo_nyears, None)).mean(\"time\").squeeze()\n",
"uvel2 = ds2_ann[\"uvel\"].isel(time=slice(-climo_nyears, None)).mean(\"time\").squeeze()\n",
"vvel2 = ds2_ann[\"vvel\"].isel(time=slice(-climo_nyears, None)).mean(\"time\").squeeze()\n",
"\n",
"vect_diff(uvel1, vvel1, uvel2, vvel2, angle, \"N\", case_name, base_case_name, TLAT, TLON)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "8116dbe6-6052-4d4e-8cf1-8a9feaf7d48e",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": [
"hide-input"
]
},
"outputs": [],
"source": [
"vect_diff(uvel1, vvel1, uvel2, vvel2, angle, \"S\", case_name, base_case_name, TLAT, TLON)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "5199b36e-614d-4242-9dd0-a402a7a24fa9",
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "NPL 2024a",
"language": "python",
"name": "npl-2024a"
},
"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.6"
}
},
"nbformat": 4,
"nbformat_minor": 5
}
Loading

0 comments on commit 234505c

Please sign in to comment.