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

[FEATURE REQUEST] Per-species scaling for Volcano extension #73

Open
jimmielin opened this issue Feb 23, 2021 · 1 comment
Open

[FEATURE REQUEST] Per-species scaling for Volcano extension #73

jimmielin opened this issue Feb 23, 2021 · 1 comment
Labels
category: Feature Request New feature or request stale No recent activity on this issue topic: HEMCO Extensions Pertaining to HEMCO extensions topic: Scaling or Masking Related to issues in applying scale factors or masks

Comments

@jimmielin
Copy link
Collaborator

Background

From Seb Eastham and Thibaud Fritz on the CESM-GC project, for volcanic emissions:

when reading in each file, the first 91 entries are all degassing. Everything else is actually eruptive. So if you tweak the extension to store those separately, you can put them in the appropriate species (i.e. 2.5% Aitken SO4 + 97.5% SO2 for degas, 50% Aitken SO4 + 50% accumulation SO4 for eruptive)

Feature request

The feature requested is to allow scaling individual species from the VOLCANO extension, and allow the use of different scale factors for degassing & eruptive.

Current capability

Currently the VOLCANO extension allows per-species scaling using an optional setting Scaling_<SpecName>. The code reads:

! The sulfur read from table is emitted as the species defined in the
! Volcano settings section. More than one species can be provided. Mass
! sulfur is automatically converted to mass of emitted species (using the
! emitted molecular weight and molecular ratio of the corresponding HEMCO
! species). Additional scale factors can be defined in the settings section
! by using the (optional) setting 'Scaling_<SpecName>'.
! For example, to emit SO2 and BrO from volcanoes, with an additional scale
! factor of 1e-4 kg BrO / kgS for BrO, use the following setting:
!115     Volcano           : on    SO2/BrO
!    --> Scaling_BrO       :       1.0e-4

However, this cannot have different factors or species by degassing/eruptive.
The distinction is already available in the code, but the same factors are applied:

          !-------------------------------------------
          ! Add degassing emissions
          !-------------------------------------------

          ! Convert from [kg S/m2/s] to [kg species/m2/s]
          iFlx = SO2degas * Inst%SpcScl(N)

          ! Apply user-defined scaling (if any) for this species
          CALL HCOX_Scale( HcoState, iFlx, &
                           TRIM(Inst%SpcScalFldNme(N)), RC )
          IF ( RC /= HCO_SUCCESS ) THEN
             ErrMsg = 'Error encountered in "HCOX_Scale (degassing)"!'
             CALL HCO_Error( HcoState%Config%Err, ErrMsg, RC, ThisLoc )
             RETURN
          ENDIF

          ! Add degassing emissions into the HEMCO state
          CALL HCO_EmisAdd( HcoState, iFlx, Inst%SpcIDs(N), &
                            RC, ExtNr=Inst%ExtNr, Cat=Inst%CatDegas )
          IF ( RC /= HCO_SUCCESS ) THEN
             ErrMsg = 'Error encountered in "HCO_EmisAdd" (degassing)!'
             CALL HCO_Error( HcoState%Config%Err, ErrMsg, RC, ThisLoc )
             RETURN
          ENDIF

          !-------------------------------------------
          ! Add eruptive emissions
          !-------------------------------------------

          ! Convert from [kg S/m2/s] to [kg species/m2/s]
          iFlx = SO2erupt * Inst%SpcScl(N)

          ! Apply user-defined scaling (if any) for this species
          CALL HCOX_Scale( HcoState, iFlx, &
                           TRIM(Inst%SpcScalFldNme(N)), RC )
          IF ( RC /= HCO_SUCCESS ) THEN
             ErrMsg = 'Error encountered in "HCOX_Scale" (eruptive"!'
             CALL HCO_Error( HcoState%Config%Err, ErrMsg, RC, ThisLoc )
             RETURN
          ENDIF

          ! Add eruptive emissions to the HEMCO state
          CALL HCO_EmisAdd( HcoState, iFlx, Inst%SpcIDs(N), &
                            RC, ExtNr=Inst%ExtNr, Cat=Inst%CatErupt )
          IF ( RC /= HCO_SUCCESS ) THEN
             ErrMsg = 'Error encountered in "HCO_EmisAdd" (eruptive)!'
             CALL HCO_Error( HcoState%Config%Err, ErrMsg, RC, ThisLoc )
             RETURN
          ENDIF

Proposed fix

Allow for Inst%SpcScalFldNme(N) to be separate for degassing and eruptive. Also, due to different species partitioning, different species list for degassing/eruptive need to be available. This is a little tricky as Inst%nSpc is a unified value.

A potential solution is to maybe allocate all species for both degas/erupt and then scale the extraneous entries by 0.

@jimmielin jimmielin added the category: Feature Request New feature or request label Feb 23, 2021
@yantosca yantosca added the topic: HEMCO Extensions Pertaining to HEMCO extensions label Aug 5, 2021
@yantosca yantosca added the topic: Scaling or Masking Related to issues in applying scale factors or masks label Jan 24, 2023
Copy link

stale bot commented Apr 22, 2024

This issue has been automatically marked as stale because it has not had recent activity. If there are no updates within 7 days it will be closed. You can add the "never stale" tag to prevent the Stale bot from closing this issue.

@stale stale bot added the stale No recent activity on this issue label Apr 22, 2024
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 stale No recent activity on this issue topic: HEMCO Extensions Pertaining to HEMCO extensions topic: Scaling or Masking Related to issues in applying scale factors or masks
Projects
None yet
Development

No branches or pull requests

2 participants