Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

docs for chgres_cold2fv3.py #519

Merged
merged 3 commits into from
Oct 10, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 1 addition & 2 deletions docs/requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@ sphinxcontrib-bibtex
sphinx_rtd_theme
docutils==0.16
numpy
xarray
matplotlib
netCDF4
xarray
matplotlib
33 changes: 33 additions & 0 deletions ush/chgres_cold2fv3.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,13 @@
"""The purpose of this code is to convert a cold start file from
chgres_cube into a FV3 warm start (restart) file, enabling data
blending operators that require a warm start format. The code performs
essential transformations, including wind rotation and vertical
remapping of atmospheric scalars and winds, ensuring the cold start
data aligns with the FV3 model's restart format. Reason: The global 6
h background from chgres_cube is a cold start and must be converted to
a warm start file to be able to blend with the 1 h EnKF restarts.

"""
edwardhartnett marked this conversation as resolved.
Show resolved Hide resolved
import numpy as np
from netCDF4 import Dataset
import remap_dwinds
Expand All @@ -6,6 +16,29 @@
import sys

def nan_check(arr, name, check_id):
"""NAN check function.

This function checks a given array for NaN (Not a Number) values,
counts the total number of NaNs, and prints their indices if any
are found. It helps identify problematic data in the array that
may disrupt further processing.

After all nan_checks are done, if there is at least one nan then
the code fails. I put a note right after the vertical remapping of
the wind that says "Perform a NaN check - sometimes will get NaNs
at this point". I don't think it should fail. I think it was more
of an issue in development and I kept the check there just to be
safe.

Parameters:
arr: numpy array to be checked for NaN values.
name: string used to label the array in the output for identification.
check_id: integer or string identifier to differentiate between multiple checks in the output.

Returns:
nan_count: integer representing the total number of NaN values found in the array.

"""
edwardhartnett marked this conversation as resolved.
Show resolved Hide resolved
nan_count = 0
nan_count = np.sum(np.isnan(arr))
print(f"coldstartwinds({check_id}) nan_count({name}): {nan_count}")
Expand Down
Loading