-
Notifications
You must be signed in to change notification settings - Fork 22
Description
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:
APCEMM/Code.v05-00/src/Core/LAGRIDPlumeModel.cpp
Lines 313 to 320 in e622143
| 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.