ESCOMP / ESCOMP/atmospheric_physics
Port/CCPPize bulk aerosol model (BAM/bulk_aero) to atmos_phys
- Dominant language
- Fortran
- Stars
- 12
- Forks
- 38
- Avg merge
- 11h 16m
- Merged PRs (30d)
- 5
Description
Companion CAM-SIMA issue for abstract interface: https://github.com/ESCOMP/CAM-SIMA/issues/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 https://github.com/ESCOMP/CAM-SIMA/issues/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:
```perl
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
Contributor guide
No contributing guide indexed for this repository
Assessment
This issue has not been assessed yet.