Skip to content

Update for Explicit Subcanopy Effects on Chemical Tracers in the PBL-SATMEDMF Scheme#350

Merged
grantfirl merged 37 commits into
ufs-community:ufs/devfrom
noaa-oar-arl:feature/aqm_canopy_vdf
Feb 27, 2026
Merged

Update for Explicit Subcanopy Effects on Chemical Tracers in the PBL-SATMEDMF Scheme#350
grantfirl merged 37 commits into
ufs-community:ufs/devfrom
noaa-oar-arl:feature/aqm_canopy_vdf

Conversation

@drnimbusrain
Copy link
Copy Markdown

@drnimbusrain drnimbusrain commented Jan 20, 2026

Description of Changes:

This PR updates the current integrated subcanopy effect (previously merged PR #253 ) to use a more robust, explicit, 3-layer subcanopy effect on chemical tracers (ONLY) in the PBL-SATMEDMF scheme. The vegetative canopy modulates vertical diffusion. We split the diffusion on 3 sub-canopy layers with variable height located at 1, 0.5 and 0.2 canopy height (based on Makar et al. 2017), while ensuring mass conservation before returning to the original model layers (for advection, deposition, other physical processes). This leads to a more pronounced effect on the transport of chemical tracers, particularly those as precursors to near-surface ozone formation in the UFS-AQM configuration.

Here we add four new routines to the PBL-SATMEDMF scheme directory, described briefly as follows:

  1. canopy_mask.F90: Controls the contiguous forest canopy mask (based on input, satellite-based forest canopy datasets) that determines the canopy and non-canopy columns in the model domain.
  2. canopy_levs.F90: Initiates and combines the additional canopy levels and all required fields needed in the newly combined model + 3-layer canopy structure.
  3. canopy_transfer.F90: Transfers the resulting combined model layer structure (i.e., 3-layer canopy + resolved model layers), ensuring mass conservation, back to original model layers (for advection, deposition, and other physical processes).
  4. canopy_driver.F90: Main driver for additional canopy routines 1-3, with associated canopy_driver.meta file for necessary canopy variables.

Note: A copy of the satmedmfvdifq routine (satmedmfvdifq_can) is necessary to pass diffusion coefficients on the canopy layers (e.g., dkt_can & dku_can) this version of the PBL SATMEDMF scheme for the additional 3-canopy layers.

Also note that currently we are not yet including the explicit 3-layer subcanopy effects on diffusivities for heat, moisture, and momentum until more testing and evaluations can be completed here on the detailed met effects. We expect these to be re-included in a future PR.

All canopy codes are controlled and initiated by the 'do_canopy' flag.

Tests Conducted:

Tests conducted on Gaea-C6 with the SRW-App AQM configuration/compilers.

Impacts shows larger effects on the SRW-App AQM predictions of near-surface ozone, with significantly improved model performance (e.g., reducing NMB by about half) in regions of contiguous canopies (compared against U.S. EPA AirNow observations):
image

OR Add any links to tests conducted. For example, "See ufs-community/ufs-weather-model#<pr_number>"

Dependencies:

Contributors (optional):

@iri01

Copy link
Copy Markdown
Collaborator

@JongilHan66 JongilHan66 left a comment

Choose a reason for hiding this comment

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

If this subcanopy effect parameterization are physically sound, it would also show a positive impact on meteorological variables (e.g., surface fluxes, 2m temperature and 10m winds) as well as on air quality variables. In the future update, the subcanopy effect should be tested and included for improving weather forecasts.

@drnimbusrain
Copy link
Copy Markdown
Author

If this subcanopy effect parameterization are physically sound, it would also show a positive impact on meteorological variables (e.g., surface fluxes, 2m temperature and 10m winds) as well as on air quality variables. In the future update, the subcanopy effect should be tested and included for improving weather forecasts.

Thank you @JongilHan66 for approving! Yes, the subcanopy effect on meteorology is also physically sound, and we plan to re-include them in the near-future as we showed promising results on improved weather forecasts (e.g., 2-m temp, 2-m mixing ratio, and 10-m wind speeds) using an integrated approach (as you have seen). Our target right now is to make upcoming UFS-AQMv8 developments and implementation for chemical tracers, but once we have more testing of this more robust, explicit 3-layer subcanopy effect on the diffusivities for heat/momentum in your PBL scheme (and evaluation of enhanced met effects) we will update in new PR. We also are planning a paper on all of this, and would appreciate it if you would join us as a co-author.

@drnimbusrain
Copy link
Copy Markdown
Author

drnimbusrain commented Jan 22, 2026

If this subcanopy effect parameterization are physically sound, it would also show a positive impact on meteorological variables (e.g., surface fluxes, 2m temperature and 10m winds) as well as on air quality variables. In the future update, the subcanopy effect should be tested and included for improving weather forecasts.

Thank you @JongilHan66 for approving! Yes, the subcanopy effect on meteorology is also physically sound, and we plan to re-include them in the near-future as we showed promising results on improved weather forecasts (e.g., 2-m temp, 2-m mixing ratio, and 10-m wind speeds) using an integrated approach (as you have seen). Our target right now is to make upcoming UFS-AQMv8 developments and implementation for chemical tracers, but once we have more testing of this more robust, explicit 3-layer subcanopy effect on the diffusivities for heat/momentum in your PBL scheme (and evaluation of enhanced met effects) we will update in new PR. We also are planning a paper on all of this, and would appreciate it if you would join us as a co-author.

@JongilHan66 et al.: To clarify further about met effects, we do include the explicit 3-layer subcanopy impacts on moisture/relative humidity diffusivities as the mass transfer for this acts like other chemical mass tracers. So we do still include the impact on relative humidity, which shows model improvements with these explicit 3-layer subcanopy updates :
image
Increasing humidity due to the 3-layer canopy effect will help TD2 underpredictions in GFS compared to surface observations.

Later (likely a future PR) we will update for heat/momentum diffusivities (for impacts on temp and winds), since the relationships are somewhat different for non-mass diffusivities.

@JongilHan66
Copy link
Copy Markdown
Collaborator

If this subcanopy effect parameterization are physically sound, it would also show a positive impact on meteorological variables (e.g., surface fluxes, 2m temperature and 10m winds) as well as on air quality variables. In the future update, the subcanopy effect should be tested and included for improving weather forecasts.

Thank you @JongilHan66 for approving! Yes, the subcanopy effect on meteorology is also physically sound, and we plan to re-include them in the near-future as we showed promising results on improved weather forecasts (e.g., 2-m temp, 2-m mixing ratio, and 10-m wind speeds) using an integrated approach (as you have seen). Our target right now is to make upcoming UFS-AQMv8 developments and implementation for chemical tracers, but once we have more testing of this more robust, explicit 3-layer subcanopy effect on the diffusivities for heat/momentum in your PBL scheme (and evaluation of enhanced met effects) we will update in new PR. We also are planning a paper on all of this, and would appreciate it if you would join us as a co-author.

@JongilHan66 et al.: To clarify further about met effects, we do include the explicit 3-layer subcanopy impacts on moisture/relative humidity diffusivities as the mass transfer for this acts like other chemical mass tracers. So we do still include the impact on relative humidity, which shows model improvements with these explicit 3-layer subcanopy updates : image Increasing humidity due to the 3-layer canopy effect will help TD2 underpredictions in GFS compared to surface observations.

Later (likely a future PR) we will update for heat/momentum diffusivities (for impacts on temp and winds), since the relationships are somewhat different for non-mass diffusivities.

@drnimbusrain Thank for further information!! I look forward to updating non-mass diffusivities with canopy effect.

@yangfanglin
Copy link
Copy Markdown
Collaborator

Great work ! We should test this in GFS once we start to develop the next version (v18)

@gspetro-NOAA
Copy link
Copy Markdown

Could we get another approval on this PR so that we can schedule WM parent PR 3060?

…vities correction.

For consistency, turn OFF the 3-layer-canopy PBL humidity effect and turn on the integrated-canopy PBL met effects (temerature, humidity, winds, TKE).
Comment thread physics/PBL/SATMEDMF/satmedmfvdifq.F Outdated
Comment thread physics/PBL/SATMEDMF/canopy_driver.F Outdated
Comment thread physics/PBL/SATMEDMF/canopy_driver.F Outdated
Comment thread physics/PBL/SATMEDMF/canopy_driver.F Outdated
Comment thread physics/PBL/SATMEDMF/canopy_driver.F Outdated
Comment thread physics/PBL/SATMEDMF/canopy_driver.F Outdated
Comment thread physics/PBL/SATMEDMF/canopy_driver.F Outdated
Comment thread physics/PBL/SATMEDMF/canopy_driver.F
Comment thread physics/PBL/SATMEDMF/canopy_driver.F
Comment thread physics/PBL/SATMEDMF/canopy_driver.F Outdated
Comment thread physics/PBL/SATMEDMF/canopy_driver.F Outdated
Comment thread physics/PBL/SATMEDMF/canopy_driver.F
@iri01
Copy link
Copy Markdown

iri01 commented Feb 11, 2026

Thank you @grantfirl for the comments!
Of course, I'll clean up the unused lines of code.
Here is the rational for the canopy "replicate" of the sat routine. Comments welcome how to make the code less confusing, or remove the replicate all together if possible.

You are correct, the explicit (3-layer) canopy does a 2nd call to the sat routine, with inputs on the combined (canopy plus resolved) layers and output on these same layers. The call to canopy_driver is after satmedmfvdifq because the 2nd call also uses as inputs, the output from the 1st call -- specifically filling in values on the non-canopy columns/grid cells, where the canopy effect is not applied.
The in-canopy outputs (basically the tendencies of heat tdt, momentum du dv and tracers rtg) overwrite the tendencies from the 1st call only in the canopy columns. So correct, satmedmfvdifq_can scheme just modifies/overwrites the tendencies coming out of satmedmfvdifq already. So are not applying the diffusion tendencies twice.

I'm not sure how to avoid the replica and call the sat scheme twice with different inputs and outputs. Ideally, we want to run the sat scheme in the canopy columns only (defined by the canopy mask), but that would require restructuring of the scheme (not just a replica) and I didn't think this would pass.

@drnimbusrain
Copy link
Copy Markdown
Author

Thank you @grantfirl for the comments! Of course, I'll clean up the unused lines of code. Here is the rational for the canopy "replicate" of the sat routine. Comments welcome how to make the code less confusing, or remove the replicate all together if possible.

You are correct, the explicit (3-layer) canopy does a 2nd call to the sat routine, with inputs on the combined (canopy plus resolved) layers and output on these same layers. The call to canopy_driver is after satmedmfvdifq because the 2nd call also uses as inputs, the output from the 1st call -- specifically filling in values on the non-canopy columns/grid cells, where the canopy effect is not applied. The in-canopy outputs (basically the tendencies of heat tdt, momentum du dv and tracers rtg) overwrite the tendencies from the 1st call only in the canopy columns. So correct, satmedmfvdifq_can scheme just modifies/overwrites the tendencies coming out of satmedmfvdifq already. So are not applying the diffusion tendencies twice.

I'm not sure how to avoid the replica and call the sat scheme twice with different inputs and outputs. Ideally, we want to run the sat scheme in the canopy columns only (defined by the canopy mask), but that would require restructuring of the scheme (not just a replica) and I didn't think this would pass.

@grantfirl Can you please comment any further on continuing with the satmedmfvdifq_can scheme based on @iri01 comments? @iri01 Has also addressed your other comments here as well. Thank you.

@grantfirl
Copy link
Copy Markdown
Collaborator

@drnimbusrain @iri01 @rhaesung I think that we can come up with a solution to avoid code duplication at a later date in order to not hold up this work any longer. Thanks for addressing the review comments and thanks for you patience with the process.

@drnimbusrain
Copy link
Copy Markdown
Author

drnimbusrain commented Feb 19, 2026 via email

@gspetro-NOAA
Copy link
Copy Markdown

Testing completed successfully for ufs-community/ufs-weather-model#3060. This PR can be merged.

@grantfirl grantfirl merged commit 9e70979 into ufs-community:ufs/dev Feb 27, 2026
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.

8 participants