Skip to content

Port/CCPPize bulk aerosol model (BAM/bulk_aero) to atmos_phys #360

@jimmielin

Description

@jimmielin

Companion CAM-SIMA issue for abstract interface: ESCOMP/CAM-SIMA#464

Below is NOT a ordered task list, time estimates need to be developed

Target date is FY26Q3

BAM modules (src/chemistry/aerosol/bulk_aero)

  • aero_model.F90 main driver --
  • ... aero_model_gasaerexch gas-aerosol exchange
  • ... aero_model_drydep see
  • aerosol_depvel.F90 dry deposition, driver aerosol_depvel_compute
  • ... aero_model_wetdep wet deposition see
  • wetdep::wetdepa_v1 ... need to port aerosol wet deposition code (CAM4 version)

Per-species models

  • dust_model DST01/02/03/04 -- emis dust_emis; drydep dust_depvel
  • seasalt_model SSLT01/02/03/04 -- emis seasalt_emis; dry dep seasalt_depvel
  • ... emissions used in aero_model_emissions
  • mo_aerosols - thermodynamic equilibrium; formation -- see mo_aerosols::aerosols_formation
  • mo_setsoa (setsoa_equil & setsoa_old ... req has_soa_equil based on species availability of a given list, see mo_setsoa 371~392)

Aqueous chemistry interfaces

To wait for ACOM to restructure

  • sox_cldaero_mod.F90 -- passes cloud aerosol conc obj in _create_obj: cldaero_conc_t
  • SADs -- aero_model_surfarea (trop; strat is a stub)
  • mo_setsox tbd -- setsox is used

In FHIST_C4 it appears that has_sox is false and has_aerosols is false --

 sox_inti: has_sox =  F
 -----------------------------------------
  mo_setsox will not do sox aerosols
 -----------------------------------------
 -----------------------------------------
 mozart will NOT do nh4no3
 following species are missing
           1
           2
           3
           4
           5
 -----------------------------------------

so we can just do purely prescribed and wire up ESCOMP/CAM-SIMA#464

The switch to turn on online aerosols is convoluted and depends on whether if ( ($chem ne 'none') or ( $prog_species ) ){ and the wet deposition list is available:

if (length($aer_wetdep_list)>2){
        # determine if prescribed aerosols are not needed ...
        if ($aer_wetdep_list =~ /so4/i &&
            $aer_wetdep_list =~ /dst/i &&
           ($aer_wetdep_list =~ /bc/i || $aer_wetdep_list =~ /cb/i) &&
           ($aer_wetdep_list =~ /ncl/i || $aer_wetdep_list =~ /sslt/i)) {
            $prescribe_aerosols = $FALSE;
        }

if $prescribed_aerosols === FALSE then prognostic aerosols are on and $prescribed_aero_model = 'none'; which leads to the loading of the prescribed aerosol models.

There might not be a ghg_bam so we need to put together something based on ghg_mam4 as a reference implementation for BAM in CAM-SIMA. TBD

Metadata

Metadata

Assignees

Labels

aerosolsIs related to aerosols (including aerosol physics and chemistry).enhancementNew feature or request

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions