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

Output sea flux species dry deposition velocity with DryDep collection #2606

Open
wants to merge 5 commits into
base: dev/14.6.0
Choose a base branch
from

Conversation

yantosca
Copy link
Contributor

@yantosca yantosca commented Dec 2, 2024

Name and Institution (Required)

Name: Bob Yantosca
Institution: Harvard + GCST

Describe the update

This is the companion PR to issue #2564 by @eamarais. This moves the dry deposition velocity for HEMCO extension seaflux species and satellite diagnostic species to the DryDep diagnostic collection.

Expected changes

See: #2564 (comment)

Reference(s)

N/A

Related Github Issue

ucfaea1 and others added 3 commits December 2, 2024 16:07
CHANGELOG.md
- Added note that drydep velocity for the seaflux species and the
  satellite diagnostic species are now included in the DryDep
  collection.

Signed-off-by: Bob Yantosca <[email protected]>
@yantosca yantosca added category: Feature Request New feature or request topic: Diagnostics Related to output diagnostic data topic: Deposition Related to dry deposition or wet depostion proceses labels Dec 2, 2024
@yantosca yantosca requested a review from msulprizio December 2, 2024 21:16
@yantosca yantosca self-assigned this Dec 2, 2024
@yantosca yantosca added this to the 14.6.0 milestone Dec 2, 2024
Copy link
Contributor

@msulprizio msulprizio 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 merge @yantosca!

@lizziel lizziel self-requested a review December 3, 2024 14:35
Copy link
Contributor

@lizziel lizziel left a comment

Choose a reason for hiding this comment

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

I think this PR will break the drydep diagnostics for full mixing since HEMCO only applies drydep fluxes if using non-local mixing.

@@ -623,24 +621,6 @@ SUBROUTINE UPDATE_DRYDEPFREQ( Input_Opt, State_Chm, State_Diag, State_Grid, &
! Point to State_Chm%DryDepVel [m/s]
NDVZ = NDVZIND(D)

! Dry dep velocity [cm/s]
Copy link
Contributor

Choose a reason for hiding this comment

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

Removing these diagnostics from drydep_mod and only setting in compute_sflx_for_vdiff means they will always be zero if using full mixing.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

This should now be fixed in commits d9ee2e2 and c7cfcfa.

! Define emission satellite diagnostics
IF ( State_Diag%Archive_SatDiagnColEmis ) THEN
DO S = 1, State_Diag%Map_SatDiagnColEmis%nSlots
N = State_Diag%Map_SatDiagnColEmis%slot2id(S)
State_Diag%SatDiagnColEmis(:,:,S) = colEflx(:,:,N)
State_Diag%SatDiagnColEmis(I,J,S) = colEflx(I,J,N)
Copy link
Contributor

Choose a reason for hiding this comment

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

This is a bug fix we should note in the changelog. These diagnostics must have been many times larger than they should be before this fix.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

@lizziel: We can test this to make sure we get zero-diff output for this diagnostic

@@ -4907,7 +4918,7 @@ SUBROUTINE Compute_Sflx_for_Vdiff( Input_Opt, State_Chm, State_Diag, &
IF ( State_Diag%Archive_SatDiagnSurfFlux ) THEN
DO S = 1, State_Diag%Map_SatDiagnSurfFlux%nSlots
N = State_Diag%Map_SatDiagnSurfFlux%slot2id(S)
State_Diag%SatDiagnSurfFlux(:,:,S) = State_Chm%SurfaceFlux(:,:,N)
State_Diag%SatDiagnSurfFlux(I,J,S) = State_Chm%SurfaceFlux(I,J,N)
Copy link
Contributor

Choose a reason for hiding this comment

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

Same comment as above. Note that both of these diagnostics have bugs that are now fixed.

Copy link
Contributor Author

@yantosca yantosca Dec 3, 2024

Choose a reason for hiding this comment

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

Changelog fixed in commit d9ee2e2.

State_Diag%SatDiagnDryDepVel(:,:,S) = dvel(:,:,N)
ENDIF
ENDIF

Copy link
Contributor

Choose a reason for hiding this comment

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

As I noted above, putting these here would only work for non-local mixing. Full mixing does not call this routine.

Copy link
Contributor Author

@yantosca yantosca Dec 3, 2024

Choose a reason for hiding this comment

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

This should now be fixed in commits d9ee2e2 and c7cfcfa.

@eamarais
Copy link

eamarais commented Dec 3, 2024

@lizziel, would a conditional "if non-local-pbl" statement resolve this?

GeosCore/drydep_mod.F90
- Restored the archival of the DryDepVel and SatDiagnDryDepVel
  diagnostic quantities in routine Update_DryDepFreq, in an IF
  block that only executes when the full PBL mixing option
  is selected.  This is to prevent these diagnostics from being
  zero when the non-local PBL mixing is not selected.
- Updated comments

GeosCore/hco_interface_gc_mod.F90
- Added a comment block that the DryDepVel and SatDiagnDryDepVel
  diagnostics are archived here when non-local PBL mixing is used,
  and in drydep_mod.F90 when full PBL mixing is used.

CHANGELOG.md
- Added note about the SatDiagnColEmis and SatDiagnSurfFlux arrays
  being updated with (I,J,S) instead of (:,:,S)
@yantosca
Copy link
Contributor Author

yantosca commented Dec 3, 2024

@lizziel, would a conditional "if non-local-pbl" statement resolve this?

That is precisely what I did. In comment d9ee2e2 I restored the lines that were taken out of drydep_mod.F90 and wrapped them in an IF statement that will only execute when the full PBL mixing is selected. I will post plots to verify that this works.

GeosCore/drydep_mod.F90
- Restore the IF condition for drydep diagnostics to what it was
  before.  We had removed testing if State_Diag%ArchiveDryDepVel
  and State_Diag%SatDiagnDryDepVel were true.  This bug will cause
  the DryDepVel and SatDiagnDryDepVel History diagnostics not to
  be populated.  Now fixed.

Signed-off-by: Bob Yantosca <[email protected]>
@yantosca
Copy link
Contributor Author

yantosca commented Dec 3, 2024

I've restored the archival of DryDepVel and SatDiagnDryDepVel diagnostics to drydep_mod.F90 when the full PBL mixing is selected in commits d9ee2e2 and c7cfcfa. In the difference plots below, we show ACET and NO2 when using TURBDAY (full PBL) as Ref, and VDIFF (non-local PBL) as Dev.

acet1

The differences in ACET are attributed to the HEMCO seaflux extension, but there are also some small differences in the ratio plots. This may be numerical noise.

no2_1

@eamarais: There are several differences in the NO2 drydep velocity. This may be due to the fact that when TURBDAY is used, we take dry dep velocity from State_Chm%DryDepVel and when we use VDIFF we compute dry dep velocity from the dry dep flux in hco_interface_gc_mod.F90:

        !------------------------------------------------------------------
        ! Also add drydep frequencies calculated by HEMCO (e.g. from the
        ! air-sea exchange module) to DFLX.  These values are stored
        ! in 1/s.  They are added in the same manner as the DEPSAV values
        ! from drydep_mod.F90.  DFLX will be converted to kg/m2/s later.
        ! (ckeller, 04/01/2014)
        !------------------------------------------------------------------
        IF ( DepSpec ) THEN
          CALL GetHcoValDep( Input_Opt, State_Grid, NA, I, J, L, found, dep )
          IF ( found ) THEN
             dflx(I,J,NA) = dflx(I,J,NA) + ( dep                   &
                            * State_Chm%Species(NA)%Conc(I,J,1) &
                            / (AIRMW / ThisSpc%MW_g)  )
             ! Get dry deposition velocity in cm/s:
             dvel(I,J,NA) = dvel(I,J,NA) + ( dep * State_Met%BXHEIGHT(I,J,1) * &
                                             1.0e+2_fp )
          ENDIF

The differences are pretty small but are these what we would expect?

Also for NO2, the differences are mostly over the continents. That might rule out e.g. PARANOX.

@yantosca
Copy link
Contributor Author

yantosca commented Dec 3, 2024

@eamarais @lizziel @msulprizio: Another thought, the way in which we compute dry deposition velocity in hco_interface_gc_mod.F90 might be dependent on the concentration of the species (which is included in the drydep flux). This might vary slightly from version to version as opposed to the dry dep velocity in State_Chm%DryDepVel, which is computed from purely from resistances and surface parameters. air mass which determines the grid box height.

In drydep_mod.F90 we have:

       ! THIK = thickness of surface layer [m]
       THIK   = State_Met%BXHEIGHT(I,J,1)
       ... 
          !-----------------------------------------------------------
          ! Compute drydep velocity and frequency
          !-----------------------------------------------------------

          ! Dry deposition velocities [m/s]
          State_Chm%DryDepVel(I,J,NDVZ) = DVZ / 100.e+0_f8

          ! Dry deposition frequency [1/s]
          State_Chm%DryDepFreq(I,J,D) = State_Chm%DryDepVel(I,J,NDVZ) / THIK

But if AIRQNT is called to reset the airmass quantities in between the time when drydep is called and when the Compute_Sflx_for_Vdiff is called this could cause the differences observed when comparing full mixing vs. non-local mixing.

Ideally for a species that has no air-sea exchange in HEMCO we'd want to see differences that are more on the order of numerical noise than we do now.

@eamarais
Copy link

eamarais commented Dec 5, 2024

Hi @yantosca, this does look odd. Is this issue as a result of switching between TUBDAY and VDIFF? Or has my updated handling of the DryDepVel diagnostic introduced this issue? Not looking to avoid blame. Just on how to resolve it.

@yantosca
Copy link
Contributor Author

yantosca commented Dec 5, 2024

@eamarais: I suspect it is a difference in air mass (thus causing a difference in box height) between where drydep is called an where hco_interface_gc_mod is called. I will try to investigate further and generate some debug output which should clear things up.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
category: Feature Request New feature or request topic: Deposition Related to dry deposition or wet depostion proceses topic: Diagnostics Related to output diagnostic data
Projects
None yet
4 participants