Skip to content

Releases: MIT-LAE/APCEMM

v1.2.1

04 Jan 17:41
515b0da
Compare
Choose a tag to compare

What's Changed

Full Changelog: v1.2.0...v1.2.1

This is a minor version change; input.yaml files for v1.2.0 are compatible with v1.2.1. However, this introduces two important new features. First, runs are now 100% reproducible by forcing the RNG seed through input.yaml (#52). If this option is not present, the default behaviour (i.e. seed determined at run time) will continue to be the case (#55).

Second, a bug was identified and fixed which could cause unexpected behaviour - including large spurious changes in the amount of ice present in the plume (#54). Users are strongly encouraged to update to v1.2.1.

v1.2.0

06 Nov 20:44
0d22cd8
Compare
Choose a tag to compare

What's Changed

  • Added debug options for reproducibility by @lrobion in #18
  • Fix void formation in H2O field by @sdeastham in #22
  • Debug-specific compile options now used by @sdeastham in #23
  • Water vapor now advects, and water diffusion is relative to BC by @sdeastham in #25
  • Fix all compiler warnings by @lrobion in #24
  • Disable vertical velocities and implement improved mask definition by @sdeastham in #29
  • Remove dead code and reorganize includes by @lrobion in #31
  • Replace remapping scheme with a matrix multiplication by @sdeastham in #32
  • Add python scripts for the creation of an idealised met file by @Calebsakhtar in #33
  • Fix dockerfile requirements for APCEMM compiling by @Calebsakhtar in #35
  • Make the examples consistent with the compilation by @Calebsakhtar in #36
  • Improve code and comment readibility in the met file scripts by @Calebsakhtar in #34
  • Remove unused SZA code and old plume model by @lrobion in #37
  • Remove dependency on ISA, change number density calculation, fix updrafts by @sdeastham in #43
  • Remove unused functions from meteorology and LAGRIDPlumeModel by @sdeastham in #44
  • Decrease runtime by calibrating APCEMM thresholds by @Calebsakhtar in #45
  • Missing crypto libraries caused build failures on Imperial HPC by @sdeastham in #46
  • Update the dockerfile to fix APCEMM run issue by @Calebsakhtar in #49
  • Fixed two bugs and increased debug info by @sdeastham in #50

New Contributors

Full Changelog: v1.1.0...v1.2.0

Output comparison

Setup

Simulations were performed using this commit, comparing to v1.1.0 (85a56a3).

Meteorology: a 500 m deep layer with an RHi of 110%, falling to 20% below the layer within 50 m. A vertical resolution of 50 m is used for the input data. Temperature is 218 K at the emission point, which occurs at a pressure of 238.5 hPa. The vertical lapse rate is 9.8 K/km, with a 4 m/s/km vertical wind shear and no synoptic-scale vertical velocity. The horizontal diffusion coefficient is 15.0 m^2/s and the vertical diffusion coefficient 0.15 m^2/s. Meteorology is fixed throughout the simulation.

Aircraft: an effective soot emissions index of 1e15 particles/kg is used. Total fuel flow is 3.0 kg/s, with an SO2 EI of 1.2 g/kg and a 2% SO2 to SO4 conversion. Aircraft mass is 310,000 kg, flight speed is 250 m/s, and the aircraft has 2 engines with a 60 m wingspan. The engine exit temperature is 553.65 K with a bypass area of 0.9772 m2.

Other: Simulations are performed on a single CPU core. The transport time step is 5 minutes, matched by the turbulence refresh rate and the ice growth rate. The turbulent temperature perturbation amplitude is set to 1.0K. Output is produced once every 10 simulated minutes.

Meteorology and aircraft parameters are chosen to loosely follow those shown in Lewellen et al. (2014). Key parameters are varied to test the effect of different parameters (see below) in the new and old versions.

Numerical results

 --> old : lifetime =     840.00 minutes, ice mass =      37.00 kg-hours/m
 --> new : lifetime =    1090.00 minutes, ice mass =      87.81 kg-hours/m
Change in lifetime:  29.76%; ice mass: 137.34%

Summary_figure

Simulation time for the default case with one core:

  • Old: 3626 s
  • New: 5226 s (+44%)
    Simulation time for the default case with four cores:
  • Old: 1139 s
  • New: 1468 s (+29%)
    Scalability from 1 to 4 cores:
  • Old: Run time reduced by 3.2x
  • New: Run time reduced by 3.6x

Analysis

General: Fixing the water vapor "voids" has significantly increased the ice mass and longevity of the simulation, while also producing a more stable result. Ice mass increases more quickly in 1.2.0 than in 1.1.0 in the early stages, and persists for longer.

Effect of RHi: Consistent between 1.1.0 and 1.2.0. Increasing RHi increases lifetime and ice mass.

Effect of layer depth: Increasing layer depth causes the contrail to live longer and become thicker, as expected.

Effect of transport time step: With the randomizing effect of voids resolved, a time step of 1 or 5 minutes now yields nearly-identical results. Simulations at 10 minute time step result in a substantial change in behaviour, and are not recommended.

Effect of number of CPU cores: Simulation results are now near-identical, although some additional work is needed to achieve bit-reproducibility.

Performance: wall clock time has increased by about 44% for the default case. This is in part because the old code was not correctly tracking dehydrated air, reducing the number of cells considered in each time step. It is also due to the longer lifetime of the default case (+30%), with later time steps typically taking longer to simulate than early time steps due to the larger domain. However, simulations with 4 cores now show near-identical results while continuing to provide reasonable scalability (run time falls by 3.6x compared to 1 core). As such, compute resource can be used to bring down run time if available.