-
Notifications
You must be signed in to change notification settings - Fork 168
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
Add fire blending to GOCART #2883
base: develop
Are you sure you want to change the base?
Conversation
ee128da
to
fd0e7a5
Compare
fd0e7a5
to
c8e6344
Compare
As forecast ensemble jobs are added to the global workflow, this PR ensures the output is being cleaned up properly once it is no longer needed. Resolves NOAA-EMC#833
This PR updates the parm/config/gfs/config.resources and env/WCOSS2.env files for the BUFR sounding job "postsnd." It includes adjustments to resource settings such as tasks per node and memory allocations for various GFS resolutions, including C768, C1152, and others. Here are the proposed changes: C768: 7 nodes, 21 tasks per node C1152: 16 nodes, 9 tasks per node
NCO has requested that each COM variable specify whether it is an input or an output. This completes that process for the global-workflow Unified Post Processor (UPP) task. Refs: NOAA-EMC#2451
This PR updates the `develop` branch to use the newer operational `obsproc/v1.2.0` and `prepobs/v1.1.0`. The obsproc/prepobs installs in glopara space on supported platforms use tags cut from the `dev/gfsv17` branches in the respective repos. The installation of `prepobs/v1.1.0` on WCOSS2 is called "gfsv17_v1.1.0" to help avoid GFSv16 users using it instead of the operational module. Also, the `HOMEobsproc` path is updated to set an empty default for `obsproc_run_ver`. This both removes the need to set a default (and constantly update it, which is duplication) and avoid the unset variable error when the fcst jobs use their own load module script that does not know `obsproc_run_ver`: ``` export HOMEobsproc="${BASE_GIT:-}/obsproc/v${obsproc_run_ver:-}" ``` This PR also reverts the prepobs and fit2obs installs on MSU back to the glopara space from the temporary `/work/noaa/global/kfriedma/glopara` space installs. Lastly, this PR also includes updates to complete issue NOAA-EMC#2844 (merge `build.spack.ver` and `run.spack.ver`). Resolves NOAA-EMC#2291 Resolves NOAA-EMC#2840 Resolves NOAA-EMC#2844
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@bbakernoaa
Please let me know if any of my comments need clarifications
Co-authored-by: Rahul Mahajan <[email protected]>
Co-authored-by: Rahul Mahajan <[email protected]>
Co-authored-by: Rahul Mahajan <[email protected]>
Co-authored-by: Rahul Mahajan <[email protected]>
Co-authored-by: Rahul Mahajan <[email protected]>
…ng' into feature/fire_blending
Co-authored-by: David Huber <[email protected]>
@bbakernoaa |
Co-authored-by: David Huber <[email protected]>
Co-authored-by: David Huber <[email protected]>
resolving comments
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Let me know if you have questions about the refactoring to keep the data inside the class (or anything else).
# link directory containing GOCART input dataset, if provided | ||
if [[ -n "${AERO_INPUTS_DIR}" ]]; then | ||
${NLN} "${AERO_INPUTS_DIR}" "${DATA}/ExtData" | ||
status=$? | ||
[[ ${status} -ne 0 ]] && exit "${status}" | ||
fi | ||
|
||
# Link blending emissions if AERO_EMIS_FIRE == blending | ||
if [[ "${AERO_EMIS_FIRE}" == "blending" && "${RUN}" == "gefs" ]]; then |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Is there a reason for the check against $RUN
? Presumably, if $AERO_EMIS_FIRE
is blending, we want to use blending regardless of the $RUN
.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm not sure... Rahul asked to add this but
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Since this was only GEFS related, I suggested the RUN
condition check. Pretty sure, SFS will need that as well in the future.
I can go either way.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'd rather rely on the app config to know whether it wants blending.
Co-authored-by: Walter Kolczynski - NOAA <[email protected]>
Co-authored-by: Walter Kolczynski - NOAA <[email protected]>
Co-authored-by: Walter Kolczynski - NOAA <[email protected]>
# link directory containing GOCART input dataset, if provided | ||
if [[ -n "${AERO_INPUTS_DIR}" ]]; then | ||
${NLN} "${AERO_INPUTS_DIR}" "${DATA}/ExtData" | ||
status=$? | ||
[[ ${status} -ne 0 ]] && exit "${status}" | ||
fi | ||
|
||
# Link blending emissions if AERO_EMIS_FIRE == blending | ||
if [[ "${AERO_EMIS_FIRE}" == "blending" && "${RUN}" == "gefs" ]]; then | ||
${NCP} "${COMOUT_CHEM_HISTORY}/${RUN}.${vdate:0:8}.${RUN}.blended_emissions.nc" "${DATA}" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Where is vdate
coming from in this function scope?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Mostly minor stuff in the second pass, but there are a couple suggestions from my previous review that were marked as resolved without being addressed (I marked them back as unresolved).
nforecast_hours = self.task_config["FHMAX_GFS"] | ||
blend_start_date = self.task_config.PDY |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is my fault, I should've been consistent when I made the suggestion:
nforecast_hours = self.task_config["FHMAX_GFS"] | |
blend_start_date = self.task_config.PDY | |
nforecast_hours = self.task_config["FHMAX_GFS"] | |
blend_start_date = self.task_config["PDY"] |
# link directory containing GOCART input dataset, if provided | ||
if [[ -n "${AERO_INPUTS_DIR}" ]]; then | ||
${NLN} "${AERO_INPUTS_DIR}" "${DATA}/ExtData" | ||
status=$? | ||
[[ ${status} -ne 0 ]] && exit "${status}" | ||
fi | ||
|
||
# Link blending emissions if AERO_EMIS_FIRE == blending | ||
if [[ "${AERO_EMIS_FIRE}" == "blending" && "${RUN}" == "gefs" ]]; then |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'd rather rely on the app config to know whether it wants blending.
{ | ||
"cdate": blend_start_date, | ||
"nforecast_days": nforecast_hours // 24, | ||
# "forecast_dates": forecast_dates, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
# "forecast_dates": forecast_dates, |
-------- | ||
None | ||
""" | ||
Config_dict = self.task_config['config'] |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Object instances should be lowercase.
Config_dict = self.task_config['config'] | |
config_dict = self.task_config['config'] |
workdir : Union[str, os.PathLike]) | ||
The working directory path. | ||
current_date: (str, optional) | ||
The current date for fire emissions generation. | ||
forecast_dates: list, optional | ||
List of forecast dates. | ||
Config_dict: Dict | ||
Configuration dictionary for the task. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Not passing in any parameters anymore.
workdir : Union[str, os.PathLike]) | |
The working directory path. | |
current_date: (str, optional) | |
The current date for fire emissions generation. | |
forecast_dates: list, optional | |
List of forecast dates. | |
Config_dict: Dict | |
Configuration dictionary for the task. | |
None |
for v in ObsEmis.data_vars: | ||
if not scale_climo: | ||
if tslice > n_persist: | ||
# kk = ratio * dset[v] + (1 - ratio) * climo[v].data[tslice, :, :] |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
# kk = ratio * dset[v] + (1 - ratio) * climo[v].data[tslice, :, :] |
Description
Type of change
Change characteristics
How has this been tested?
Checklist