Skip to content

add optional bulk flux calculation #26

Merged
DeniseWorthen merged 9 commits into
NOAA-EMC:emc/developfrom
DeniseWorthen:feature/bulk
Dec 12, 2020
Merged

add optional bulk flux calculation #26
DeniseWorthen merged 9 commits into
NOAA-EMC:emc/developfrom
DeniseWorthen:feature/bulk

Conversation

@DeniseWorthen
Copy link
Copy Markdown
Collaborator

@DeniseWorthen DeniseWorthen commented Nov 9, 2020

Description of changes

An optional bulk flux calculation is added.

Specific notes

This PR implements a bulk-flux feature in CMEPS similarly to the version implemented by @hyunchul386 in his NEMS bulk flux branch

In CMEPS, the optional bulk flux method has been implemented with a configuration variable ocn_surface_flux_scheme. For the bulk flux scheme, this variable should be set to -1. A value of 0 will produce the default scheme.

If the bulk flux configuration is selected, then the fields (ubot, vbot, tbot, shum) passed to the shr_flux_mod are the 10m and 2m values. Otherwise, the values passed are the height lowest values.

There are minor differences between the exact implementation in the NEMS mediator vs CMEPS:

  • As implemented in CMEPS, the potential temperature and air density passed to the shr_flux_mod are calculated using either the 2m or height_lowest values. In the NEMS mediator, the air density uses the height lowest value for either flux scheme.

  • As implemented in CMEPS, the value hol in the shr_flux_mod will use the value of potential temperature passed in so it will either be calculated at 2m or at height lowest. In the NEMS mediator, the value of hol was calculated using the potential temperature at the height lowest for either flux scheme.

  • In the NEMS mediator, there is an iteration performed in aoflux calculation by re-using a block of code, giving an iteration count of 2. In CMEPS, the number of iterations is set as a configurable variable. Currently it is set as 1. To most closely replicate the NEMS mediator aoflux calculation, this variable should be set to 2 even with the default scheme. Changing the number of iterations will change answers for both the bulk flux option and the default configuration.

  • In med_phases_prep_ocn, the temporary variable for 1-oceanalbedo (customwgt(:) = ofrac(:) * (1.0 - 0.06)) is now specified explicitly as R8 (customwgt(:) = ofrac(:) * (1.0_R8 - 0.06_R8)). This changes answers for the coupled model.

CMEPS Issues Fixed (include github issue #):

Issue #20
Issue #21

The implementation of the bulk flux can be tested in this branch of ufs-weather-model


! bulk formula quantities for nems_orig_data
if (trim(coupling_mode) == 'nems_orig_data' .and. ocn_surface_flux_scheme == -1) then
call FB_GetFldPtr(FBAtm, fldname='Sa_u10m', fldptr1=aoflux%ubot, rc=rc)
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

So we are adding an option, when ocn_surface_flux_scheme == -1, the bulk formula will use the 10m wind and 2m tmp? Have we verified that model runs stably with this method in godas run experiment?

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

I do think we need verification from the godas team that it is implemented correctly and running stably.

Comment thread nems/util/shr_flux_mod.F90
@hyunchul386
Copy link
Copy Markdown

hyunchul386 commented Nov 9, 2020 via email

@DeniseWorthen
Copy link
Copy Markdown
Collaborator Author

@hyunchul386. The implementation of the bulk flux can be tested in this branch of ufs-weather-model

@hyunchul386
Copy link
Copy Markdown

hyunchul386 commented Nov 9, 2020 via email

@DeniseWorthen
Copy link
Copy Markdown
Collaborator Author

Yes, that is right. The datm_data_table.IN in my ufs-weather branch contains these variables.

separate =>null into separate lines
add comments to indicate that "bot" values received from aoflux_run phase
are either bottom (heightlowest) or at a reference height (10m or 2m)
@DeniseWorthen
Copy link
Copy Markdown
Collaborator Author

I ran the ufs-cpld and ufs-datm RTs on Hera. As expected, the DATM tests failed (because flux_iteration is now 2) but the cpld tests also failed. Temporarily reverting the change made in fbfc28b allows the cpld baselines to pass.

I had made this change while debugging DATM restart reproducibility. It did not solve that issue but I will retain the committed code. I've added a text to the PR to note that it does change baselines.

@DeniseWorthen DeniseWorthen requested review from junwang-noaa and removed request for hyunchul386 December 11, 2020 12:45
Copy link
Copy Markdown
Collaborator

@junwang-noaa junwang-noaa left a comment

Choose a reason for hiding this comment

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

Looks good to me.

@DeniseWorthen DeniseWorthen merged commit 47dcaf1 into NOAA-EMC:emc/develop Dec 12, 2020
@DeniseWorthen DeniseWorthen deleted the feature/bulk branch June 1, 2021 12:07
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.

4 participants