Skip to content

AIM::Aerosol for ice distribution initialized with wrong standard deviation #62

@lrobion

Description

@lrobion

Per section 2.3.3. of Fritz et al. (2020) the lognormal ice particle distribution is initialized with a mean equal to the radius of the representative simulated ice particle, and a standard deviation of 1.6 (from literature).

In the EPM in Integrate.cpp the AIM::Aerosol ice aerosol distribution is initialized with a standard deviation) expsIce = 1.15. See here. I do not know where this value comes from.

This 0D distribution is mapped to the spatial grid by converting it to an AIM::Grid_Aerosol in LAGRIDModel::initializeGrid:

iceAerosol_ = AIM::Grid_Aerosol(nx_init, yCoords_.size(), epmIceAer.getBinCenters(), epmIceAer.getBinEdges(), 0, 1, 1.6);

The AIM::Grid_Aerosol object is initialized with the correct standard deviation of 1.6. However this is misleading because the PDF is overwritten by the EPM AIM::Aerosol distribution:

for (UInt n = 0; n < iceAerosol_.getNBin(); n++) {
double EPM_nPart_bin = epmIceAer.binMoment(n) * epmOut.area;
double logBinRatio = log(iceAerosol_.getBinEdges()[n+1] / iceAerosol_.getBinEdges()[n]);
//Start contrail at altitude -D1/2 to reflect the sinking.
pdf_init.push_back( LAGRID::initVarToGridGaussian(EPM_nPart_bin, xEdges_, yEdges_, 0, -D1/2, sigma_x, sigma_y, logBinRatio) );
//pdf_init.push_back( LAGRID::initVarToGridBimodalY(EPM_nPart_bin, xEdges_, yEdges_, 0, -D1/2, initWidth, initDepth, logBinRatio) );
}
iceAerosol_.updatePdf(std::move(pdf_init));

This overwriting is normal because we want to map the EPM ice distribution to the grid. It does however mean that the incorrect initialization of the AIM::Aerosol in the EPM is carried forward.

A very quick experiment shows that using the 1.6 instead of 1.15 leads to relative differences in initial ice mass (2.5x more using expsIce = 1.6) that becomes smaller as the simulation goes on (1.02x more using expsIce = 1.6 at the final timestep)). I am not sure how much this would affect results then.

This fix could be bundled with streamlining how constants are managed in APCEMM, or fixed now given the simplicity.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions