open-atmos / PySDM

Pythonic particle-based (super-droplet) warm-rain/aqueous-chemistry cloud microphysics package with box, parcel & 1D/2D prescribed-flow examples in Python, Julia and Matlab
https://open-atmos.github.io/PySDM/
GNU General Public License v3.0
60 stars 35 forks source link

tutorial notebooks initiative #1170

Open slayoo opened 1 year ago

slayoo commented 1 year ago
github-actions[bot] commented 11 months ago

Stale issue message

claresinger commented 10 months ago

I'm not sure that the first set of "how to"s actually belong in tutorials. As I see it, the tutorials are meant for teaching concepts of microphysics, not teaching how to use the PySDM code. There definitely could be a tutorial about the isotopic composition of water. I can also see a way to make a creative tutorial about precipitation on another planet which would then involve changing many of the constant values, like gravitational acceleration, but not just "how to change g".

slayoo commented 10 months ago

@claresinger, fully agree that it is much more meaningful to have a tutorial on collision kernels than just one that depicts "how to change a kernel" without commenting on the physics. It would be good, though, to sneak in some of the user-facing PySDM concepts into the tutorials. Anyhow, I guess, let it be do-ocratic - whoever creates a tutorial should have a vote (i.e., so far 100% votes go to you, Clare).

claresinger commented 10 months ago

@slayoo agreed - maybe rather than "how to define a new collision kernel" the tutorial can be on "how the collision kernel definition effects the droplet size distribution evolution" and has explanations about the physics of different kernels, what assumptions they make, and what regimes they are most applicable for.

and as I mentioned above, rather than "how to override a constant value (e.g., gravitational accel.)" we can have a tutorial on "microphysics on Titan (and other planetary atmospheres)" where we then demonstrate how to change different constant values and show how e.g. rain evaporation changes for different planetary parameters, see Loftus and Wordsworth 2021

claresinger commented 9 months ago

and as I mentioned above, rather than "how to override a constant value (e.g., gravitational accel.)" we can have a tutorial on "microphysics on Titan (and other planetary atmospheres)" where we then demonstrate how to change different constant values and show how e.g. rain evaporation changes for different planetary parameters, see Loftus and Wordsworth 2021

@kaitlyn-loftus -- If you're interested in contributing to this... I don't think we discussed it, but we have a small effort within PySDM to create tutorial notebooks, which are designed to be instructional tools. The first two are notebooks I made as homework assignments for a class I TA'd on cloud and boundary layer dynamics where we had a week of cloud microphysics instruction. So they are similar to an example notebook, but have more conceptual background explained in markdown at the top and come with some short questions at the end. These two also have interactive plot widgets that allow students to play with parameters of the simulation and explore the results without needing to write any code themselves.

One idea, as you can see above, was to discuss how different "constant" values impact the microphysical evolution. I thought to make this more about learning the physics than just learning the code, we could use something like your paper as a jumping off point to discuss how microphysics changes on other planets through the "constant" planetary parameters. I would 1) greatly appreciate your feedback on this idea, and 2) love your help if you wanted to design a tutorial with me!

kaitlyn-loftus commented 9 months ago

@claresinger I am definitely interested! It will also help me figure out how PySDM works :)

I could see a few routes. It might be easier to start with an ancient Mars/Earth or exoplanet application where the drops are still water so that we don't need to change the drop species as well as the atmospheric/planetary properties.

Would you want to have truly flexible planetary parameters or a few fixed options? The former would be very cool but maybe a lot of development work.

Finally, I didn't include collisions in that work, but it would be exciting to look at collisional growth in PySDM if we implemented more flexible planetary parameters....

slayoo commented 9 months ago

FWIW, @claresinger @kaitlyn-loftus: back a few years ago, while looking for a simple example for coalescence on other planets/moons to try with PySDM, we have came across this paper on Titan: https://doi.org/10.1016/0019-1035(80)90173-6 (it actually includes optical parameter estimation as well, so would benefit from Clare's recent developments). I'm mentioning it just for the record - it's a 45-years old paper, and was picked quite randomly with no extraterrestrial know-how around.

claresinger commented 9 months ago

Wonderful! Definitely agreed that starting from an example where only a few parameters are changed will be easier.

Ideally the software is written generally enough that a user could define an entirely new parameter set without much hassle... Right now I fear that many of the physics formulae have implicit assumptions about Earth constants in their parameter values and thus we would want to throw errors or warnings for the user if they used a certain physics formulae with a certain parameter set.

Let's find a time to discuss this offline @kaitlyn-loftus - I'll send you a message.

kaitlyn-loftus commented 9 months ago

@slayoo thanks. I think this Toon paper's collision kernel is for Brownian motion only so won't work for large drops. I will double check that though. The best planetary-friendly kernel I could find in my past searches was from here: Vallee et al. (2018). However, it's not right for small drops...

@claresinger sounds good.