Skip to content

Time-dependent super-droplet sampling and modification #1331

@jtbuch

Description

@jtbuch

Hi @slayoo,

I have been running experiments with PySDM to simulate the injection of a new 'seed' aerosol distribution with distinct properties than the background aerosol distribution used to initialize the simulation. As you might anticipate, this functionality has several applications under the cloud seeding research umbrella, including marine cloud brightening, in-situ growth of ice crystals, and precipitation enhancement. For the rest of the discussion in this issue, I will only focus on the precipitation enhancement case with two modifications of the default PySDM code:

  1. Adding new super-droplets: In my first attempt, I tried simulating the injection of seeded aerosols at arbitrary time intervals by adding new super-droplets (SDs). This involved writing a new inject_particles (see here and here) method in the simulation file, making minor tweaks in relevant methods of the Displacement and Collision classes, while also writing a couple of small setter methods to keep track of the new SDs to avoid array shape mismatches.
    The relevant notebook for running the experiment in a SH2012 environment is available here, where I try to show that despite all the modifications, both displacement and collision-coalescence fail, i.e. there is no change in multiplicity and positions of the seeded SDs, even though the code executes successfully.

  2. Modifying existing super-droplets through the 'hijack and redistribute' method: After several stimulating conversations with @claresinger, I implemented her suggested approximation of aerosol seeding: a) 'hijack' a cloud SD of a size similar to the desired seed and update the value of all relevant extensive attributes: multiplicity, kappa, water mass etc., b) 'redistribute' the original cloud SD's attributes to its neighboring SDs in a grid cell. This way, I can 'inject' a new seed SD with the appropriate multiplicity attribute to represent the integrated aerosol concentration.
    As the spectra, coalescence rate, and rain water mixing plots in the associated notebook indicate, there is a distinct seeding signature for well-chosen values of seed radius and concentration.

I'd be curious about your thoughts on this approach overall! Specifically, if there is a way to get the code working while adding new SDs, or if there is another way to model seeding in PySDM. One suggestion that both @claresinger and @edejong-caltech made (also something that @kdlamb and I discussed independently) was to introduce a new attribute vector for the SDs that acts like a flag to decide whether a particular SD participates in each step of the simulation. In such a setup, certain seed SDs will behave as 'ghosts' for a while before they are activated at the desired time step and then behave normally.

Metadata

Metadata

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