Skip to content

Adding Mixed Layer Depth Diagnostic#111

Open
breichl wants to merge 1 commit into
raphaeldussin:masterfrom
breichl:Add_MLD_diagnostic
Open

Adding Mixed Layer Depth Diagnostic#111
breichl wants to merge 1 commit into
raphaeldussin:masterfrom
breichl:Add_MLD_diagnostic

Conversation

@breichl

@breichl breichl commented Jul 25, 2023

Copy link
Copy Markdown
  • Mixed Layer depth diagnostic code added for analyzing model output
  • Takes MLD_003, MLD_EN1, MLD_EN2, OR MLD_EN3 as inputs.
  • Creates map of input (either min or max of monthly means)
  • Compares to similar field from obs (usually Argo based).

This PR is a replacement for #87

In addition to updating w/ the latest om4labs, it includes two updates requested in that PR:

  • updated formatting (using black)
  • xesmf regridding for the model to the obs grid

Potential Remaining Issue:

  • "RuntimeWarning: All-NaN slice encountered" warning message printing out (presumably from the .min()/.max() operations)

Command to test:
om4labs mld --grid global --method max --mldvar MLD_EN1 -s /archive/bgr/FMS2019.01.03_mom6_20201020/OM4p25_JRA55do1.5_ePBLRL19_BBL01_VS_JHLtol/gfdl.ncrc4-intel18-prod/pp/ocean_monthly/ocean_monthly.static.nc /archive/bgr/FMS2019.01.03_mom6_20201020/OM4p25_JRA55do1.5_ePBLRL19_BBL01_VS_JHLtol/gfdl.ncrc4-intel18-prod/pp/ocean_monthly/ts/monthly/5yr/ocean_monthly.199801-200212.MLD_EN1.nc /archive/bgr/FMS2019.01.03_mom6_20201020/OM4p25_JRA55do1.5_ePBLRL19_BBL01_VS_JHLtol/gfdl.ncrc4-intel18-prod/pp/ocean_monthly/ts/monthly/5yr/ocean_monthly.200301-200712.MLD_EN1.nc /archive/bgr/FMS2019.01.03_mom6_20201020/OM4p25_JRA55do1.5_ePBLRL19_BBL01_VS_JHLtol/gfdl.ncrc4-intel18-prod/pp/ocean_monthly/ts/monthly/5yr/ocean_monthly.200801-201212.MLD_EN1.nc

- Mixed Layer depth diagnostic code added for analyzing model output
- Takes MLD_003, MLD_EN1, MLD_EN2, OR MLD_EN3 as inputs.
- Creates map of input (either min or max of monthly means)
- Compares to similar field from obs (usually Argo based).
metadata:
origin_url: ''

Argo_MLD_003:

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

let's make a note to copy these files into a central location. You can also include a notebook with the preprocessing steps in the om4labs/data directory.

Comment thread om4labs/diags/mld/mld.py
import xarray as xr
import xesmf as xe
import warnings
from scipy.interpolate import griddata

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

not used anymore

Comment thread om4labs/diags/mld/mld.py
cat = open_intake_catalog(dictArgs["platform"], "obs")
ds_obs = cat["Argo_MLD_003"].to_dask()

ds_model = ds_input[mldvar].groupby("time.month").mean("time")

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

consider moving groupby into calculate

Comment thread om4labs/diags/mld/mld.py
LatMin = dims[dictArgs["grid"]][2]
LatMax = dims[dictArgs["grid"]][3]

# Extract copy of obs domain

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

is this block's purpose to select a subdomain?

Comment thread om4labs/diags/mld/mld.py

regridder_mod = xe.Regridder(model, ds_plot, "bilinear", periodic=True)

ds_plot["model"] = (("lat", "lon"), regridder_mod(model).MLD.values)

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

there might be a more concise way to do this

Comment thread om4labs/diags/mld/mld.py
),
)

# Want to also compute the metrics here (bias, RMS, r2)

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

bilinear interpolation does not conserve statistics beyond mean

Comment thread om4labs/diags/mld/mld.py
)

# Note that we are area weighting our global metrics by assuming a spherical Earth. This is a decent approximation and better than not area weighting the metrics.
ds_plot["bias"] = np.nansum(

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

consider using this function

def standard_grid_cell_area(lat, lon, rE=6371.0e3):

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants