Generalize cloud chemistry aerosol processes
What is the feature/what would you like to discuss?
Refactor the interactions of aqueous chemistry in clouds with aerosols.
Generalize code in mo_cldaero_mod.F90 so that the implementation is aerosol model representation independent. Currently there are 3 different implementations for bulk, carma, and modal aerosols:
src/chemistry/bulk_aero/sox_cldaero_mod.F90
src/chemistry/carma_aero/sox_cldaero_mod.F90
src/chemistry/modal_aero/sox_cldaero_mod.F90
The aerosol model specific code in these modules should be abstracted away and be implemented in aerosol model specific aerosol_state objects.
In the sox_cldaero_create_obj routine, the code which sets conc_obj%no3c, conc_obj%nh4c, and conc_obj%so4c should be replaced with generalized code that via abstract aerosol interfaces. For carma aerosols, the code is high-lighted here:
https://github.com/ESCOMP/CAM/blob/4c480c8e8c7e3138d8d5cb3118f635c71886ecf7/src/chemistry/carma_aero/sox_cldaero_mod.F90#L138C1-L158C1
For modal aerosols, see:
https://github.com/ESCOMP/CAM/blob/4c480c8e8c7e3138d8d5cb3118f635c71886ecf7/src/chemistry/modal_aero/sox_cldaero_mod.F90#L95C1-L148C1
In subroutine sox_cldaero_update, the aerosol model specific code that partitions the change in cloud-borne species across modes or bins should be abstracted away. For carma aerosols, the code is here:
https://github.com/ESCOMP/CAM/blob/4c480c8e8c7e3138d8d5cb3118f635c71886ecf7/src/chemistry/carma_aero/sox_cldaero_mod.F90#L307C1-L322C1
For modal aerosols see:
https://github.com/ESCOMP/CAM/blob/4c480c8e8c7e3138d8d5cb3118f635c71886ecf7/src/chemistry/modal_aero/sox_cldaero_mod.F90#L266C1-L314C1
Is there anyone in particular you want to be part of this conversation?
@K20shores, @tilmes
Will this change (regression test) answers?
No
Will you be implementing this enhancement yourself?
Yes