eagles-project / mam4xx

A C++ implementation of MAM4
https://eagles-project.github.io/mam4xx/
Other
7 stars 6 forks source link

EAMxx integration: MAM4AerosolMicrophysics AtmosphereProcess #46

Closed jeff-cohere closed 1 year ago

jeff-cohere commented 2 years ago

This issue tracks the development of an AtmosphereProcess subclass that evolves aerosols using mam4xx's parameterizations. We may end up having more than one of these AtmosphereProcess classes related to aerosols.

What's written here is fairly technical, since I'm using it to gather and organize my thoughts on this process. If you're interested in understanding what something means, or if you see an issue with something here, please don't hesitate to comment.

Prior Art

Notes and Questions

Anatomy of a Time Step

Someday, this will be a hot topic! For now, we'll do staged development to convince ourselves that we know what we're doing. These steps are only sketched here--I'll probably track them each in their own separate issue.

Stage 1: A do-nothing atmosphere process

We start by implementing a very basic AtmosphereProcess subclass that extracts aerosol and related gas tracer quantities from the tracers field on the physics grid, does nothing to them, and places them unmodified back into the tracers field.

We can make use of the mam4::AeroConfig and mam4::Prognostics types for this task, extracting fields to views within a set of columns, and then copying the values back into place.

Stage 2: Add nucleation

As a foray into aerosol dynamics, we devise a test problem in which we seed the atmosphere with localized sulphuric acid gas, let it nucleate into sulphate aerosol (to be placed in the Aitken mode), and watch the nucleation process deplete the gas. It would probably be interesting to introduce a velocity field that moves things around in a quantifiable (and verifiable, if possible) manner.

To execute this test problem, we add the nucleation process to our implementation, initializing it in the appropriate place and running it within the run_impl method of the MAM4Aerosols class. We can integrate the tendencies computed for the aerosols and gases directly into the aerosol prognostics for each column. Those values then get copied back into the tracers field using code written for Stage 1.

Stage 3: ???

jeff-cohere commented 1 year ago

Changed the name of this issue to reflect our near-term goal: MAM4 aerosol microphysics

jeff-cohere commented 1 year ago

This issue has been superseded by #169