From 42f8485d4826c4bf8af6bd66794a97caa3f1a738 Mon Sep 17 00:00:00 2001 From: AgnieszkaMakulska <80834468+AgnieszkaMakulska@users.noreply.github.com> Date: Fri, 1 Sep 2023 09:46:44 +0200 Subject: [PATCH] new example based on Grabowski & Pawlowska 2023 (GRL) (#1093) Co-authored-by: Sylwester Arabas Co-authored-by: Sylwester Arabas --- .zenodo.json | 4 + PySDM/attributes/impl/mapper.py | 4 + PySDM/attributes/physics/__init__.py | 1 + .../physics/equilibrium_supersaturation.py | 39 + .../impl/activation_filtered_product.py | 30 + PySDM/products/impl/concentration_product.py | 4 + PySDM/products/size_spectral/__init__.py | 11 + PySDM/products/size_spectral/mean_radius.py | 19 +- .../size_spectral/mean_radius_activated.py | 24 + .../size_spectral/mean_volume_radius.py | 24 + .../particle_concentration_activated.py | 46 + .../size_spectral/size_standard_deviation.py | 68 + .../Grabowski_and_Pawlowska_2023/__init__.py | 3 + .../figure_1.ipynb | 245 ++ .../figure_2.ipynb | 245 ++ .../figure_3.ipynb | 250 ++ .../figure_4.ipynb | 192 ++ .../Grabowski_and_Pawlowska_2023/settings.py | 93 + .../simulation.py | 115 + .../Yang_et_al_2018/fig_2.ipynb | 2744 ++++++++++++++++- .../Yang_et_al_2018/simulation.py | 53 +- examples/README.md | 23 +- tests/examples_tests/conftest.py | 1 + .../grabowski_and_pawlowska_2023/__init__.py | 0 .../test_figure_1_and_2.py | 129 + .../test_figure_3.py | 104 + .../test_figure_4.py | 55 + tests/unit_tests/products/test_impl.py | 20 + .../products/test_particle_size_product.py | 130 + 29 files changed, 4618 insertions(+), 58 deletions(-) create mode 100644 PySDM/attributes/physics/equilibrium_supersaturation.py create mode 100644 PySDM/products/impl/activation_filtered_product.py create mode 100644 PySDM/products/size_spectral/mean_radius_activated.py create mode 100644 PySDM/products/size_spectral/mean_volume_radius.py create mode 100644 PySDM/products/size_spectral/particle_concentration_activated.py create mode 100644 PySDM/products/size_spectral/size_standard_deviation.py create mode 100644 examples/PySDM_examples/Grabowski_and_Pawlowska_2023/__init__.py create mode 100644 examples/PySDM_examples/Grabowski_and_Pawlowska_2023/figure_1.ipynb create mode 100644 examples/PySDM_examples/Grabowski_and_Pawlowska_2023/figure_2.ipynb create mode 100644 examples/PySDM_examples/Grabowski_and_Pawlowska_2023/figure_3.ipynb create mode 100644 examples/PySDM_examples/Grabowski_and_Pawlowska_2023/figure_4.ipynb create mode 100644 examples/PySDM_examples/Grabowski_and_Pawlowska_2023/settings.py create mode 100644 examples/PySDM_examples/Grabowski_and_Pawlowska_2023/simulation.py create mode 100644 tests/smoke_tests/parcel/grabowski_and_pawlowska_2023/__init__.py create mode 100644 tests/smoke_tests/parcel/grabowski_and_pawlowska_2023/test_figure_1_and_2.py create mode 100644 tests/smoke_tests/parcel/grabowski_and_pawlowska_2023/test_figure_3.py create mode 100644 tests/smoke_tests/parcel/grabowski_and_pawlowska_2023/test_figure_4.py create mode 100644 tests/unit_tests/products/test_particle_size_product.py diff --git a/.zenodo.json b/.zenodo.json index c1b8a65cf..7e0416266 100644 --- a/.zenodo.json +++ b/.zenodo.json @@ -62,6 +62,10 @@ "affiliation": "California Institute of Technology, Pasadena, CA, USA", "name": "Mints, Mikhail" }, + { + "affiliation": "University of Warsaw, Poland", + "name": "Makulska, Agnieszka" + }, { "affiliation": "Jagiellonian University, Kraków, Poland", "name": "Olesik, Michael", diff --git a/PySDM/attributes/impl/mapper.py b/PySDM/attributes/impl/mapper.py index 0df4572bd..4f1b420b1 100644 --- a/PySDM/attributes/impl/mapper.py +++ b/PySDM/attributes/impl/mapper.py @@ -32,6 +32,9 @@ DryVolumeOrganic, OrganicFraction, ) +from PySDM.attributes.physics.equilibrium_supersaturation import ( + EquilibriumSupersaturation, +) from PySDM.attributes.physics.hygroscopicity import Kappa, KappaTimesDryVolume from PySDM.attributes.physics.relative_fall_velocity import RelativeFallMomentum from PySDM.dynamics.impl.chemistry_utils import AQUEOUS_COMPOUNDS @@ -93,6 +96,7 @@ "freezing temperature": lambda _, __: FreezingTemperature, "immersed surface area": lambda _, __: ImmersedSurfaceArea, "critical supersaturation": lambda _, __: CriticalSupersaturation, + "equilibrium supersaturation": lambda _, __: EquilibriumSupersaturation, "wet to critical volume ratio": lambda _, __: WetToCriticalVolumeRatio, } diff --git a/PySDM/attributes/physics/__init__.py b/PySDM/attributes/physics/__init__.py index af337ad3e..bbb93f68d 100644 --- a/PySDM/attributes/physics/__init__.py +++ b/PySDM/attributes/physics/__init__.py @@ -6,6 +6,7 @@ from .critical_volume import CriticalVolume, WetToCriticalVolumeRatio from .dry_radius import DryRadius from .dry_volume import DryVolume +from .equilibrium_supersaturation import EquilibriumSupersaturation from .heat import Heat from .multiplicities import Multiplicities from .radius import Radius diff --git a/PySDM/attributes/physics/equilibrium_supersaturation.py b/PySDM/attributes/physics/equilibrium_supersaturation.py new file mode 100644 index 000000000..2ee1c6bad --- /dev/null +++ b/PySDM/attributes/physics/equilibrium_supersaturation.py @@ -0,0 +1,39 @@ +""" +kappa-Koehler equilibrium supersaturation calculated for actual environment temperature +""" +from PySDM.attributes.impl.derived_attribute import DerivedAttribute + + +class EquilibriumSupersaturation(DerivedAttribute): + def __init__(self, builder): + self.r_wet = builder.get_attribute("radius") + self.v_wet = builder.get_attribute("volume") + self.v_dry = builder.get_attribute("dry volume") + self.kappa = builder.get_attribute("kappa") + self.f_org = builder.get_attribute("dry volume organic fraction") + + super().__init__( + builder=builder, + name="equilibrium supersaturation", + dependencies=(self.kappa, self.v_dry, self.f_org, self.r_wet), + ) + + def recalculate(self): + if len(self.particulator.environment["T"]) != 1: + raise NotImplementedError() + temperature = self.particulator.environment["T"][0] + rd3 = self.v_dry.data.data / self.formulae.constants.PI_4_3 + sgm = self.formulae.surface_tension.sigma( + temperature, + self.v_wet.data.data, + self.v_dry.data.data, + self.f_org.data.data, + ) + + self.data.data[:] = self.formulae.hygroscopicity.RH_eq( + self.r_wet.data.data, + T=temperature, + kp=self.kappa.data.data, + rd3=rd3, + sgm=sgm, + ) diff --git a/PySDM/products/impl/activation_filtered_product.py b/PySDM/products/impl/activation_filtered_product.py new file mode 100644 index 000000000..950a92c32 --- /dev/null +++ b/PySDM/products/impl/activation_filtered_product.py @@ -0,0 +1,30 @@ +""" +common base class for products filtering droplets based on their activation state +""" +import numpy as np + + +class _ActivationFilteredProduct: + def __init__( + self, + *, + count_unactivated: bool, + count_activated: bool, + ): + self.__filter_attr = "wet to critical volume ratio" + self.__filter_range = [0, np.inf] + if not count_activated: + self.__filter_range[1] = 1 + if not count_unactivated: + self.__filter_range[0] = 1 + + def impl(self, *, attr, rank): + getattr(self, "_download_moment_to_buffer")( + attr=attr, + rank=rank, + filter_attr=self.__filter_attr, + filter_range=self.__filter_range, + ) + + def register(self, builder): + builder.request_attribute(self.__filter_attr) diff --git a/PySDM/products/impl/concentration_product.py b/PySDM/products/impl/concentration_product.py index cd7138569..ba0391ac7 100644 --- a/PySDM/products/impl/concentration_product.py +++ b/PySDM/products/impl/concentration_product.py @@ -8,6 +8,10 @@ class ConcentrationProduct(MomentProduct): def __init__(self, *, unit: str, name: str, specific: bool, stp: bool): + """ + `stp` toggles expressing the concentration in terms of standard temperature + and pressure conditions (ground level of the ICAO standard atmosphere, zero humidity) + """ super().__init__(unit=unit, name=name) self.specific = specific self.stp = stp diff --git a/PySDM/products/size_spectral/__init__.py b/PySDM/products/size_spectral/__init__.py index 0ec21fa7a..f4ad9087e 100644 --- a/PySDM/products/size_spectral/__init__.py +++ b/PySDM/products/size_spectral/__init__.py @@ -7,8 +7,14 @@ ) from .effective_radius import EffectiveRadius from .mean_radius import MeanRadius +from .mean_radius_activated import ActivatedMeanRadius +from .mean_volume_radius import MeanVolumeRadius from .number_size_spectrum import NumberSizeSpectrum from .particle_concentration import ParticleConcentration, ParticleSpecificConcentration +from .particle_concentration_activated import ( + ActivatedParticleConcentration, + ActivatedParticleSpecificConcentration, +) from .particle_size_spectrum import ( ParticleSizeSpectrumPerMass, ParticleSizeSpectrumPerVolume, @@ -19,6 +25,11 @@ from .radius_binned_number_averaged_terminal_velocity import ( RadiusBinnedNumberAveragedTerminalVelocity, ) +from .size_standard_deviation import ( + AreaStandardDeviation, + RadiusStandardDeviation, + VolumeStandardDeviation, +) from .total_particle_concentration import TotalParticleConcentration from .total_particle_specific_concentration import TotalParticleSpecificConcentration from .water_mixing_ratio import WaterMixingRatio diff --git a/PySDM/products/size_spectral/mean_radius.py b/PySDM/products/size_spectral/mean_radius.py index 7988f4bf2..5576a3f69 100644 --- a/PySDM/products/size_spectral/mean_radius.py +++ b/PySDM/products/size_spectral/mean_radius.py @@ -1,14 +1,29 @@ """ mean radius of particles within a grid cell (optionally restricted to a given size range) """ +import numpy as np + from PySDM.products.impl.moment_product import MomentProduct class MeanRadius(MomentProduct): - def __init__(self, name=None, unit="m"): + def __init__( + self, + name=None, + unit="m", + radius_range=(0, np.inf), + ): + self.radius_range = radius_range super().__init__(name=name, unit=unit) def _impl(self, **kwargs): - self._download_moment_to_buffer(attr="volume", rank=1 / 3) + self._download_moment_to_buffer( + attr="volume", + rank=1 / 3, + filter_range=( + self.formulae.trivia.volume(self.radius_range[0]), + self.formulae.trivia.volume(self.radius_range[1]), + ), + ) self.buffer[:] /= self.formulae.constants.PI_4_3 ** (1 / 3) return self.buffer diff --git a/PySDM/products/size_spectral/mean_radius_activated.py b/PySDM/products/size_spectral/mean_radius_activated.py new file mode 100644 index 000000000..8f59739ae --- /dev/null +++ b/PySDM/products/size_spectral/mean_radius_activated.py @@ -0,0 +1,24 @@ +""" +mean radius of particles within a grid cell, for activated, unactivated or both +""" +from PySDM.products.impl.activation_filtered_product import _ActivationFilteredProduct +from PySDM.products.impl.moment_product import MomentProduct + + +class ActivatedMeanRadius(MomentProduct, _ActivationFilteredProduct): + def __init__( + self, count_unactivated: bool, count_activated: bool, name=None, unit="m" + ): + MomentProduct.__init__(self, name=name, unit=unit) + _ActivationFilteredProduct.__init__( + self, count_activated=count_activated, count_unactivated=count_unactivated + ) + + def register(self, builder): + for base_class in (_ActivationFilteredProduct, MomentProduct): + base_class.register(self, builder) + + def _impl(self, **kwargs): + _ActivationFilteredProduct.impl(self, attr="volume", rank=1 / 3) + self.buffer[:] /= self.formulae.constants.PI_4_3 ** (1 / 3) + return self.buffer diff --git a/PySDM/products/size_spectral/mean_volume_radius.py b/PySDM/products/size_spectral/mean_volume_radius.py new file mode 100644 index 000000000..8d363624f --- /dev/null +++ b/PySDM/products/size_spectral/mean_volume_radius.py @@ -0,0 +1,24 @@ +""" +mean volume radius of particles within a grid cell, for activated, unactivated or both +""" + +from PySDM.products.impl.activation_filtered_product import _ActivationFilteredProduct +from PySDM.products.impl.moment_product import MomentProduct + + +class MeanVolumeRadius(MomentProduct, _ActivationFilteredProduct): + def __init__( + self, count_unactivated: bool, count_activated: bool, name=None, unit="m" + ): + MomentProduct.__init__(self, name=name, unit=unit) + _ActivationFilteredProduct.__init__( + self, count_activated=count_activated, count_unactivated=count_unactivated + ) + + def register(self, builder): + for base_class in (_ActivationFilteredProduct, MomentProduct): + base_class.register(self, builder) + + def _impl(self, **kwargs): + _ActivationFilteredProduct.impl(self, attr="volume", rank=1) + return self.formulae.trivia.radius(self.buffer[:]) diff --git a/PySDM/products/size_spectral/particle_concentration_activated.py b/PySDM/products/size_spectral/particle_concentration_activated.py new file mode 100644 index 000000000..4e15e4e89 --- /dev/null +++ b/PySDM/products/size_spectral/particle_concentration_activated.py @@ -0,0 +1,46 @@ +""" +concentration of particles within a grid cell (either per-volume of per-mass-of-dry air), + activated, unactivated or both +""" + +from PySDM.products.impl.activation_filtered_product import _ActivationFilteredProduct +from PySDM.products.impl.concentration_product import ConcentrationProduct + + +class ActivatedParticleConcentration(ConcentrationProduct, _ActivationFilteredProduct): + # pylint: disable=too-many-arguments + def __init__( + self, + *, + count_unactivated: bool, + count_activated: bool, + specific=False, + stp=False, + name=None, + unit="m^-3", + ): + ConcentrationProduct.__init__( + self, name=name, unit=unit, specific=specific, stp=stp + ) + _ActivationFilteredProduct.__init__( + self, count_activated=count_activated, count_unactivated=count_unactivated + ) + + def register(self, builder): + for base_class in (_ActivationFilteredProduct, ConcentrationProduct): + base_class.register(self, builder) + + def _impl(self, **kwargs): + _ActivationFilteredProduct.impl(self, attr="volume", rank=0) + return ConcentrationProduct._impl(self, **kwargs) + + +class ActivatedParticleSpecificConcentration(ActivatedParticleConcentration): + def __init__(self, count_unactivated, count_activated, name=None, unit="kg^-1"): + super().__init__( + count_unactivated=count_unactivated, + count_activated=count_activated, + specific=True, + name=name, + unit=unit, + ) diff --git a/PySDM/products/size_spectral/size_standard_deviation.py b/PySDM/products/size_spectral/size_standard_deviation.py new file mode 100644 index 000000000..6fa1d4ef6 --- /dev/null +++ b/PySDM/products/size_spectral/size_standard_deviation.py @@ -0,0 +1,68 @@ +""" +standard deviation of radius/area/volume of particles within a grid cell, +for activated, unactivated or both +""" +import numpy as np + +from PySDM.products.impl.activation_filtered_product import _ActivationFilteredProduct +from PySDM.products.impl.moment_product import MomentProduct + + +class _SizeStandardDeviation(MomentProduct, _ActivationFilteredProduct): + # pylint: disable=too-many-arguments + def __init__( + self, + count_unactivated: bool, + count_activated: bool, + name=None, + unit="m", + attr="radius", + ): + self.attr = attr + MomentProduct.__init__(self, name=name, unit=unit) + _ActivationFilteredProduct.__init__( + self, count_activated=count_activated, count_unactivated=count_unactivated + ) + + def register(self, builder): + builder.request_attribute(self.attr) + for base_class in (_ActivationFilteredProduct, MomentProduct): + base_class.register(self, builder) + + def _impl(self, **kwargs): + _ActivationFilteredProduct.impl(self, attr=self.attr, rank=1) + tmp = np.empty_like(self.buffer) + tmp[:] = -self.buffer**2 + _ActivationFilteredProduct.impl(self, attr=self.attr, rank=2) + tmp[:] += self.buffer + tmp[:] = np.sqrt(tmp) + return tmp + + +RadiusStandardDeviation = _SizeStandardDeviation + + +class AreaStandardDeviation(_SizeStandardDeviation): + def __init__( + self, *, name=None, unit="m^2", count_activated: bool, count_unactivated: bool + ): + super().__init__( + name=name, + unit=unit, + count_activated=count_activated, + count_unactivated=count_unactivated, + attr="area", + ) + + +class VolumeStandardDeviation(_SizeStandardDeviation): + def __init__( + self, *, name=None, unit="m^3", count_activated: bool, count_unactivated: bool + ): + super().__init__( + name=name, + unit=unit, + count_activated=count_activated, + count_unactivated=count_unactivated, + attr="volume", + ) diff --git a/examples/PySDM_examples/Grabowski_and_Pawlowska_2023/__init__.py b/examples/PySDM_examples/Grabowski_and_Pawlowska_2023/__init__.py new file mode 100644 index 000000000..5988fb023 --- /dev/null +++ b/examples/PySDM_examples/Grabowski_and_Pawlowska_2023/__init__.py @@ -0,0 +1,3 @@ +# pylint: disable=invalid-name +from .settings import Settings +from .simulation import Simulation diff --git a/examples/PySDM_examples/Grabowski_and_Pawlowska_2023/figure_1.ipynb b/examples/PySDM_examples/Grabowski_and_Pawlowska_2023/figure_1.ipynb new file mode 100644 index 000000000..d6be5aa48 --- /dev/null +++ b/examples/PySDM_examples/Grabowski_and_Pawlowska_2023/figure_1.ipynb @@ -0,0 +1,245 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "[![View notebook](https://img.shields.io/static/v1?label=render%20on&logo=github&color=87ce3e&message=GitHub)](https://github.com/open-atmos/PySDM/blob/main/examples/PySDM_examples/Grabowski_and_Pawlowska_2023/figure_1.ipynb) \n", + "[![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/open-atmos/PySDM.git/main?urlpath=examples/PySDM_examples/Grabowski_and_Pawlowska_2023/figure_1.ipynb) \n", + "[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/open-atmos/PySDM/blob/main/examples/PySDM_examples/Grabowski_and_Pawlowska_2023/figure_1.ipynb)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### based on Fig. 1 from Wojciech Grabowski and Hanna Pawlowska 2023 (Geophysical Research Letters 50(3)) 'Adiabatic Evolution of Cloud Droplet Spectral Width: A New Look at an Old Problem'\n", + "\n", + "https://doi.org/10.1029/2022GL101917" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "ExecuteTime": { + "end_time": "2023-08-28T13:36:35.362364412Z", + "start_time": "2023-08-28T13:36:35.355109096Z" + } + }, + "outputs": [], + "source": [ + "import sys\n", + "if 'google.colab' in sys.modules:\n", + " !pip --quiet install \"open-atmos-jupyter-utils\"\n", + " from open_atmos_jupyter_utils import pip_install_on_colab\n", + " pip_install_on_colab('PySDM-examples')" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "ExecuteTime": { + "end_time": "2023-08-28T13:36:39.004915783Z", + "start_time": "2023-08-28T13:36:35.361129348Z" + } + }, + "outputs": [], + "source": [ + "import numpy as np\n", + "import os\n", + "from matplotlib import pyplot\n", + "from matplotlib import ticker\n", + "from open_atmos_jupyter_utils import show_plot\n", + "\n", + "from PySDM import Formulae\n", + "from PySDM.physics import si\n", + "from PySDM.products import (\n", + " ParcelDisplacement, AmbientRelativeHumidity\n", + ")\n", + "TRIVIA = Formulae().trivia\n", + "\n", + "from PySDM_examples.Grabowski_and_Pawlowska_2023 import Settings, Simulation" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "ExecuteTime": { + "end_time": "2023-08-28T13:38:02.899020789Z", + "start_time": "2023-08-28T13:36:39.021359978Z" + } + }, + "outputs": [], + "source": [ + "products=(\n", + " ParcelDisplacement(\n", + " name='z'),\n", + " AmbientRelativeHumidity(\n", + " name='S_max', unit='%', var='RH'),\n", + ")\n", + "\n", + "vertical_velocity = 0.25 * si.m / si.s\n", + "output = {\n", + " case: Simulation(Settings(\n", + " vertical_velocity=vertical_velocity,\n", + " dt=1*si.s if 'CI' not in os.environ else 50 * si.s,\n", + " n_sd=200 if 'CI' not in os.environ else 10,\n", + " aerosol=case\n", + " ), products=products).run()\n", + " for case in (\"pristine\", \"polluted\")\n", + "}\n" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "ExecuteTime": { + "end_time": "2023-08-28T13:38:10.857107195Z", + "start_time": "2023-08-28T13:38:02.900781659Z" + } + }, + "outputs": [ + { + "data": { + "text/plain": "
", + "image/svg+xml": "\n\n\n \n \n \n \n 2023-08-28T15:38:09.972211\n image/svg+xml\n \n \n Matplotlib v3.7.2, https://matplotlib.org/\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n" + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": "HTML(value=\"./fig1.pdf
\")", + "application/vnd.jupyter.widget-view+json": { + "version_major": 2, + "version_minor": 0, + "model_id": "24b9dacfc19c427ab07cfd11e3f029ce" + } + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# pylint: disable=too-many-arguments\n", + "def plot_R(ax,output_vol,output_crit_vol,output_z,k):\n", + " for drop_id, volume in enumerate(output_vol):\n", + " if drop_id%k==0:\n", + " if TRIVIA.radius(volume=volume)[10]>0.03*si.um:\n", + " crit_volume=output_crit_vol[drop_id]\n", + " if np.all(volume0.03*si.um:\n", + " if np.all(volume", + "image/svg+xml": "\n\n\n \n \n \n \n 2023-08-28T15:41:55.538447\n image/svg+xml\n \n \n Matplotlib v3.7.2, https://matplotlib.org/\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n" + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": "HTML(value=\"./fig2.pdf
\")", + "application/vnd.jupyter.widget-view+json": { + "version_major": 2, + "version_minor": 0, + "model_id": "9010e8b280a84b77836300ec89f88fd9" + } + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# pylint: disable=too-many-arguments\n", + "def plot_R(ax,output_vol,output_crit_vol,output_z,k):\n", + " for drop_id, volume in enumerate(output_vol):\n", + " if drop_id%k==0:\n", + " if TRIVIA.radius(volume=volume)[10]>0.03*si.um:\n", + " crit_volume=output_crit_vol[drop_id]\n", + " if np.all(volume0.03*si.um:\n", + " if np.all(volume", + "image/svg+xml": "\n\n\n \n \n \n \n 2023-08-28T16:37:46.747210\n image/svg+xml\n \n \n Matplotlib v3.7.2, https://matplotlib.org/\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n" + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": "HTML(value=\"./fig3.pdf
\")", + "application/vnd.jupyter.widget-view+json": { + "version_major": 2, + "version_minor": 0, + "model_id": "92f8bb6a4e3f41b2be1c7d717f1dd9c7" + } + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "fig, axs = pyplot.subplots(3, 2, figsize=(13, 10))\n", + "axN1,axN2,axR1,axR2,axA1,axA2 = [axs[0,0], axs[0,1], axs[1,0], axs[1,1], axs[2,0], axs[2,1]]\n", + "\n", + "for aerosol, i in ((\"polluted\",0),(\"pristine\",1)):\n", + " for w in vertical_velocity:\n", + " r=np.array(output[w][aerosol]['products']['r_vol'])\n", + " n=np.array(output[w][aerosol]['products']['n_act'])\n", + " a=np.array(output[w][aerosol]['products']['area_std'])/(4*np.pi)\n", + " axs[1,i].plot(np.array(output[w][aerosol]['products']['z']),np.where(r*10**6>2,r*10**6,np.nan))\n", + " axs[0,i].plot(np.array(output[w][aerosol]['products']['z']),np.where(r*10**6>2,n*10**(-6),np.nan))\n", + " axs[2,i].plot(np.array(output[w][aerosol]['products']['z']),np.where(r*10**6>2,a*10**12,np.nan))\n", + " axs[1,i].plot(np.array(output[w][aerosol]['products']['z']),np.where(r*10**6>2,2*np.array(output[w][aerosol]['products']['z'])**(1/3),np.nan),color='grey',linestyle='--')\n", + " axs[2,i].plot(np.array(output[w][aerosol]['products']['z']),np.where(r*10**6>2,20,np.nan),color='grey',linestyle='--')\n", + "\n", + "for ax in [axN1,axN2,axR1,axR2,axA1,axA2]:\n", + " ax.set_xlim(10,1000)\n", + " ax.set_xscale('log')\n", + " ax.legend(legend)\n", + "for ax in [axR1,axR2]:\n", + " ax.set_ylabel('mean volume radius [μm]')\n", + "for ax in [axN1,axN2]:\n", + " ax.set_ylabel('concentration [cm$^{-3}$ STP]')\n", + "for ax in [axA1,axA2]:\n", + " ax.set_xlabel('height [m]')\n", + " ax.set_ylabel(r'area st. dev. / 4$\\pi$ [μm$^2$]')\n", + " \n", + "axN1_, axN2_, axR1_, axR2_, axA1_, axA2_ = [axN1.twinx(),axN2.twinx(),axR1.twinx(),axR2.twinx(),axA1.twinx(),axA2.twinx()]\n", + "for ax in [axR1,axR2,axR1_,axR2_,axA1,axA2,axA1_,axA2_]:\n", + " ax.set_yscale('log')\n", + " ax.set_ylim(1,100)\n", + "for ax in [axN1,axN1_]:\n", + " ax.set_ylim(300,600)\n", + "for ax in [axN2,axN2_]:\n", + " ax.set_ylim(0,300)\n", + "axN1.set_title('POL')\n", + "axN2.set_title('PRI')\n", + "for ax in [axN1_,axN2_,axR1_,axR2_,axA1_,axA2_]:\n", + " ax.yaxis.set_major_formatter(ticker.NullFormatter())\n", + "show_plot(\"fig3.pdf\")" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "outputs": [], + "source": [], + "metadata": { + "collapsed": false, + "ExecuteTime": { + "end_time": "2023-08-28T14:37:47.351218589Z", + "start_time": "2023-08-28T14:37:47.348307199Z" + } + } + }, + { + "cell_type": "code", + "execution_count": 4, + "outputs": [], + "source": [], + "metadata": { + "collapsed": false, + "ExecuteTime": { + "end_time": "2023-08-28T14:37:47.390008257Z", + "start_time": "2023-08-28T14:37:47.349272783Z" + } + } + }, + { + "cell_type": "code", + "execution_count": 4, + "outputs": [], + "source": [], + "metadata": { + "collapsed": false, + "ExecuteTime": { + "end_time": "2023-08-28T14:37:47.390964365Z", + "start_time": "2023-08-28T14:37:47.390269832Z" + } + } + }, + { + "cell_type": "code", + "execution_count": 4, + "outputs": [], + "source": [], + "metadata": { + "collapsed": false, + "ExecuteTime": { + "end_time": "2023-08-28T14:37:47.392102028Z", + "start_time": "2023-08-28T14:37:47.391190284Z" + } + } + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.12" + }, + "orig_nbformat": 4 + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/examples/PySDM_examples/Grabowski_and_Pawlowska_2023/figure_4.ipynb b/examples/PySDM_examples/Grabowski_and_Pawlowska_2023/figure_4.ipynb new file mode 100644 index 000000000..905052bf0 --- /dev/null +++ b/examples/PySDM_examples/Grabowski_and_Pawlowska_2023/figure_4.ipynb @@ -0,0 +1,192 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "[![View notebook](https://img.shields.io/static/v1?label=render%20on&logo=github&color=87ce3e&message=GitHub)](https://github.com/open-atmos/PySDM/blob/main/examples/PySDM_examples/Grabowski_and_Pawlowska_2023/figure_4.ipynb) \n", + "[![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/open-atmos/PySDM.git/main?urlpath=examples/PySDM_examples/Grabowski_and_Pawlowska_2023/figure_4.ipynb) \n", + "[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/open-atmos/PySDM/blob/main/examples/PySDM_examples/Grabowski_and_Pawlowska_2023/figure_4.ipynb)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### based on Fig. 4 from Wojciech Grabowski and Hanna Pawlowska 2023 (Geophysical Research Letters 50(3)) 'Adiabatic Evolution of Cloud Droplet Spectral Width: A New Look at an Old Problem'\n", + "\n", + "https://doi.org/10.1029/2022GL101917" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "ExecuteTime": { + "end_time": "2023-08-28T15:31:25.496584929Z", + "start_time": "2023-08-28T15:31:25.494328622Z" + } + }, + "outputs": [], + "source": [ + "import sys\n", + "if 'google.colab' in sys.modules:\n", + " !pip --quiet install \"open-atmos-jupyter-utils\"\n", + " from open_atmos_jupyter_utils import pip_install_on_colab\n", + " pip_install_on_colab('PySDM-examples')" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "ExecuteTime": { + "end_time": "2023-08-28T15:31:29.699217514Z", + "start_time": "2023-08-28T15:31:25.494955577Z" + } + }, + "outputs": [], + "source": [ + "import numpy as np\n", + "import os\n", + "from matplotlib import pyplot\n", + "from matplotlib import ticker\n", + "from open_atmos_jupyter_utils import show_plot\n", + "\n", + "from PySDM.physics import si\n", + "from PySDM.products import (\n", + " ParcelDisplacement, ActivatedMeanRadius, RadiusStandardDeviation\n", + ")\n", + "from PySDM_examples.Grabowski_and_Pawlowska_2023 import Settings, Simulation" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "ExecuteTime": { + "end_time": "2023-08-28T15:34:16.330972958Z", + "start_time": "2023-08-28T15:31:29.710520500Z" + } + }, + "outputs": [], + "source": [ + "products=(\n", + " ParcelDisplacement(\n", + " name='z'),\n", + " ActivatedMeanRadius(\n", + " name='r_act',count_activated=True, count_unactivated=False),\n", + " RadiusStandardDeviation(\n", + " name=\"radius_std\", count_activated=True, count_unactivated=False),\n", + ")\n", + "vertical_velocity=(\"0.25\",\"1\",\"4\")\n", + "output = { velocity:\n", + " {\n", + " case: Simulation(Settings(\n", + " vertical_velocity=float(velocity),\n", + " dt=1*si.s if 'CI' not in os.environ else 50 * si.s,\n", + " n_sd=200 if 'CI' not in os.environ else 10,\n", + " aerosol=case\n", + " ), products=products).run()\n", + " for case in (\"pristine\", \"polluted\")\n", + " }\n", + " for velocity in vertical_velocity\n", + "}\n", + "legend=[velocity+' m/s' for velocity in vertical_velocity]" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "ExecuteTime": { + "end_time": "2023-08-28T15:41:14.132004484Z", + "start_time": "2023-08-28T15:41:10.873955864Z" + } + }, + "outputs": [ + { + "data": { + "text/plain": "
", + "image/svg+xml": "\n\n\n \n \n \n \n 2023-08-28T17:41:13.822944\n image/svg+xml\n \n \n Matplotlib v3.7.2, https://matplotlib.org/\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n" + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": "HTML(value=\"./fig4.pdf
\")", + "application/vnd.jupyter.widget-view+json": { + "version_major": 2, + "version_minor": 0, + "model_id": "f7cc7dd61ab14d2abd76d89f11121178" + } + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "fig, axs = pyplot.subplots(2, 1, figsize=(6, 8))\n", + "np.seterr(invalid=\"ignore\")\n", + "for axis, aerosol in ((axs[0],\"pristine\"),(axs[1],\"polluted\")):\n", + " for w in vertical_velocity:\n", + " r=np.array(output[w][aerosol]['products']['r_act'])\n", + " d=np.array(output[w][aerosol]['products']['radius_std'])\n", + " axis.plot(np.array(output[w][\"polluted\"]['products']['z']),np.where(r*10**6>2,np.divide(d,r),np.nan))\n", + "\n", + "for ax in axs:\n", + " ax.set_xscale('log')\n", + " ax.set_yscale('log')\n", + " ax.set_ylim(0.01,1)\n", + " ax.set_xlim(10,1000)\n", + " ax.set_ylabel('rel. dispersion')\n", + " ax.legend(legend)\n", + "axs[1].set_xlabel('height [m]')\n", + "axs[0].set_title('PRI')\n", + "axs[1].set_title('POL')\n", + "\n", + "ax0, ax1 = [axs[0].twinx(), axs[1].twinx()]\n", + "for ax in [ax0,ax1]:\n", + " ax.set_yscale('log')\n", + " ax.set_ylim(0.01,1)\n", + " ax.yaxis.set_major_formatter(ticker.NullFormatter())\n", + "show_plot(\"fig4.pdf\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "outputs": [], + "source": [], + "metadata": { + "collapsed": false, + "ExecuteTime": { + "start_time": "2023-08-28T15:34:17.055583615Z" + } + } + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.12" + }, + "orig_nbformat": 4 + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/examples/PySDM_examples/Grabowski_and_Pawlowska_2023/settings.py b/examples/PySDM_examples/Grabowski_and_Pawlowska_2023/settings.py new file mode 100644 index 000000000..af4373118 --- /dev/null +++ b/examples/PySDM_examples/Grabowski_and_Pawlowska_2023/settings.py @@ -0,0 +1,93 @@ +import numpy as np +from pystrict import strict + +from PySDM import Formulae +from PySDM.initialisation.spectra import Lognormal, Sum +from PySDM.physics import si + + +@strict +class Settings: + def __init__( + self, + *, + aerosol: str, + vertical_velocity: float, + dt: float, + n_sd: int, + initial_temperature: float = 283 * si.K, + initial_pressure: float = 900 * si.mbar, + initial_relative_humidity: float = 0.97, + displacement: float = 1000 * si.m, + mass_accommodation_coefficient: float = 0.3, + ): + self.formulae = Formulae(constants={"MAC": mass_accommodation_coefficient}) + self.n_sd = n_sd + self.aerosol_modes_by_kappa = { + "pristine": { + 1.28: Sum( + ( + Lognormal( + norm_factor=125 / si.cm**3, m_mode=11 * si.nm, s_geom=1.2 + ), + Lognormal( + norm_factor=65 / si.cm**3, m_mode=60 * si.nm, s_geom=1.7 + ), + ) + ) + }, + "polluted": { + 1.28: Sum( + ( + Lognormal( + norm_factor=160 / si.cm**3, m_mode=29 * si.nm, s_geom=1.36 + ), + Lognormal( + norm_factor=380 / si.cm**3, m_mode=71 * si.nm, s_geom=1.57 + ), + ) + ) + }, + }[aerosol] + + const = self.formulae.constants + self.vertical_velocity = vertical_velocity + self.initial_pressure = initial_pressure + self.initial_temperature = initial_temperature + pv0 = ( + initial_relative_humidity + * self.formulae.saturation_vapour_pressure.pvs_Celsius( + initial_temperature - const.T0 + ) + ) + self.initial_vapour_mixing_ratio = const.eps * pv0 / (initial_pressure - pv0) + self.t_max = displacement / vertical_velocity + self.timestep = dt + self.output_interval = self.timestep + + @property + def initial_air_density(self): + const = self.formulae.constants + dry_air_density = ( + self.formulae.trivia.p_d( + self.initial_pressure, self.initial_vapour_mixing_ratio + ) + / self.initial_temperature + / const.Rd + ) + return dry_air_density * (1 + self.initial_vapour_mixing_ratio) + + @property + def nt(self) -> int: + nt = self.t_max / self.timestep + nt_int = round(nt) + np.testing.assert_almost_equal(nt, nt_int) + return nt_int + + @property + def steps_per_output_interval(self) -> int: + return int(self.output_interval / self.timestep) + + @property + def output_steps(self) -> np.ndarray: + return np.arange(0, self.nt + 1, self.steps_per_output_interval) diff --git a/examples/PySDM_examples/Grabowski_and_Pawlowska_2023/simulation.py b/examples/PySDM_examples/Grabowski_and_Pawlowska_2023/simulation.py new file mode 100644 index 000000000..4c77d4b5e --- /dev/null +++ b/examples/PySDM_examples/Grabowski_and_Pawlowska_2023/simulation.py @@ -0,0 +1,115 @@ +import numpy as np +from PySDM_examples.utils import BasicSimulation + +from PySDM import Builder +from PySDM.backends import CPU +from PySDM.backends.impl_numba.test_helpers import scipy_ode_condensation_solver +from PySDM.dynamics import AmbientThermodynamics, Condensation +from PySDM.environments import Parcel +from PySDM.initialisation import equilibrate_wet_radii +from PySDM.initialisation.sampling.spectral_sampling import ConstantMultiplicity +from PySDM.physics import si + + +class Simulation(BasicSimulation): + def __init__( + self, + settings, + products=None, + scipy_solver=False, + sampling_class=ConstantMultiplicity, + ): + env = Parcel( + dt=settings.timestep, + p0=settings.initial_pressure, + q0=settings.initial_vapour_mixing_ratio, + T0=settings.initial_temperature, + w=settings.vertical_velocity, + mass_of_dry_air=44 * si.kg, + ) + builder = Builder(n_sd=settings.n_sd, backend=CPU(formulae=settings.formulae)) + builder.set_environment(env) + builder.add_dynamic(AmbientThermodynamics()) + builder.add_dynamic(Condensation()) + for attribute in ( + "critical supersaturation", + "equilibrium supersaturation", + "critical volume", + ): + builder.request_attribute(attribute) + + volume = env.mass_of_dry_air / settings.initial_air_density + attributes = { + k: np.empty(0) + for k in ("dry volume", "kappa times dry volume", "multiplicity", "kappa") + } + + assert len(settings.aerosol_modes_by_kappa.keys()) == 1 + kappa = tuple(settings.aerosol_modes_by_kappa.keys())[0] + spectrum = settings.aerosol_modes_by_kappa[kappa] + + r_dry, n_per_volume = sampling_class(spectrum).sample(settings.n_sd) + v_dry = settings.formulae.trivia.volume(radius=r_dry) + attributes["multiplicity"] = np.append( + attributes["multiplicity"], n_per_volume * volume + ) + attributes["dry volume"] = np.append(attributes["dry volume"], v_dry) + attributes["kappa times dry volume"] = np.append( + attributes["kappa times dry volume"], v_dry * kappa + ) + attributes["kappa"] = np.append( + attributes["kappa"], np.full(settings.n_sd, kappa) + ) + r_wet = equilibrate_wet_radii( + r_dry=settings.formulae.trivia.radius(volume=attributes["dry volume"]), + environment=env, + kappa_times_dry_volume=attributes["kappa times dry volume"], + ) + attributes["volume"] = settings.formulae.trivia.volume(radius=r_wet) + + super().__init__( + particulator=builder.build(attributes=attributes, products=products) + ) + if scipy_solver: + scipy_ode_condensation_solver.patch_particulator(self.particulator) + + self.output_attributes = { + "volume": tuple([] for _ in range(self.particulator.n_sd)), + "dry volume": tuple([] for _ in range(self.particulator.n_sd)), + "critical supersaturation": tuple( + [] for _ in range(self.particulator.n_sd) + ), + "equilibrium supersaturation": tuple( + [] for _ in range(self.particulator.n_sd) + ), + "critical volume": tuple([] for _ in range(self.particulator.n_sd)), + "multiplicity": tuple([] for _ in range(self.particulator.n_sd)), + } + self.settings = settings + + self.__sanity_checks(attributes, volume) + + def __sanity_checks(self, attributes, volume): + for attribute in attributes.values(): + assert attribute.shape[0] == self.particulator.n_sd + np.testing.assert_approx_equal( + sum(attributes["multiplicity"]) / volume, + sum( + mode.norm_factor + for mode in self.settings.aerosol_modes_by_kappa.values() + ), + significant=4, + ) + + def _save(self, output): + for key, attr in self.output_attributes.items(): + attr_data = self.particulator.attributes[key].to_ndarray() + for drop_id in range(self.particulator.n_sd): + attr[drop_id].append(attr_data[drop_id]) + super()._save(output) + + def run(self): + output_products = super()._run( + self.settings.nt, self.settings.steps_per_output_interval + ) + return {"products": output_products, "attributes": self.output_attributes} diff --git a/examples/PySDM_examples/Yang_et_al_2018/fig_2.ipynb b/examples/PySDM_examples/Yang_et_al_2018/fig_2.ipynb index c44be0ac5..eb1237895 100644 --- a/examples/PySDM_examples/Yang_et_al_2018/fig_2.ipynb +++ b/examples/PySDM_examples/Yang_et_al_2018/fig_2.ipynb @@ -18,7 +18,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 1, "metadata": { "pycharm": { "name": "#%%\n" @@ -35,7 +35,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 2, "metadata": {}, "outputs": [], "source": [ @@ -50,7 +50,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 3, "metadata": {}, "outputs": [], "source": [ @@ -61,7 +61,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 4, "metadata": {}, "outputs": [], "source": [ @@ -71,7 +71,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 5, "metadata": {}, "outputs": [], "source": [ @@ -102,19 +102,15 @@ " result['dt_cond_max'] = output['dt_cond_max']\n", " result['dt_cond_min'] = output['dt_cond_min']\n", " \n", - " result['r_dry'] = settings.r_dry\n", - " result['kappa'] = settings.kappa\n", - "\n", - " arg_T = result['T'].reshape(-1,1).repeat(len(result['n']), axis = 1)\n", - " sgm = simulation.formulae.constants.sgm_w # note: ignoring sigma dependence on T, rd, rw\n", - " result['r_cr'] = simulation.formulae.hygroscopicity.r_cr(settings.kappa, settings.r_dry, arg_T, sgm).transpose()\n", " result['ripening rate'] = output['ripening rate']\n", + " for key in ('r_act','r_mean_gt_1_um'):\n", + " result[key] = output[key]*si.m\n", " return result" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 6, "metadata": {}, "outputs": [], "source": [ @@ -124,9 +120,2678 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 7, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "image/svg+xml": [ + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " 2023-08-17T16:09:56.222711\n", + " image/svg+xml\n", + " \n", + " \n", + " Matplotlib v3.5.1, https://matplotlib.org/\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n" + ], + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "e2083e58057844539e1d6014b3c69e6b", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "HTML(value=\"./q_S_rd.pdf
\")" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "fig, ax = plt.subplots(1, 3, sharey=True, figsize=figsize)\n", "if len(outputs)==1:\n", @@ -163,25 +2828,34 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 8, "metadata": {}, - "outputs": [], - "source": [ - "def rmean(r, n, mask): # TODO #412: move to products\n", - " nt = r.shape[1]\n", - " n_dot_r = n.magnitude.dot(np.where(mask, r.magnitude, 0))\n", - " n_tot = np.sum(np.where(mask, n.magnitude.reshape(-1,1).repeat(nt, axis=1), 0), axis=0)\n", - " rmean = np.full(nt, np.nan)\n", - " nmask = n_tot > 0\n", - " rmean[nmask] = n_dot_r[nmask] / n_tot[nmask]\n", - " return rmean * r.units" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA3kAAAIpCAYAAAAfCfGWAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOzdeZgcVb0+8PecWnubSSZ7EEKIbGIkILsICRD2VSMIahBFQERBELh4jSSsAoososgFCfviBqJAiBDAYFxAUSBXBYzE300iWWfrpbbz+6O6qqu6eyYzySSTDO/nefJkurq7uurb1Z05qTrvVyilFIiIiIiIiGhIkIO9AURERERERDRwOMgjIiIiIiIaQjjIIyIiIiIiGkI4yCMiIiIiIhpCOMgjIiIiIiIaQjjIIyIiIiIiGkI4yCMiIiIiIhpCOMgjIiIiIiIaQjjIIyIiIiIiGkI4yCOiTWr27NkQQqSWXXPNNXjssccGZ4O2QjfddBM+9rGPYeLEiRBCYOrUqf16vuu6mDNnDrbffntYloVddtkFt9566ybZ1mXLlmH27Nl49dVXN3gdc+fOhRAC//rXvwZsuzane++9F5/85Cex8847Q0qJ7bfffpO+3sMPP4wpU6bAtm2MHz8eF1xwAbq6upo+duHChTj66KMxfPhwZDIZ7LjjjrjyyisHfJsWL16M2bNnb9R72Oy7Y31++9vfYvbs2Vi3bl3Dfdtvvz2OPfbYDd6ewTguOzs7cckll+Dwww/HqFGjIITA7NmzN9nrdXV14YILLsD48eNh2zamTJmChx9+uOljXdfFjTfeiMmTJyOTyWDYsGE44IAD8Nvf/naTbR8R9R0HeUS02XGQ1z+333473nnnHRxyyCEYNWpUv59/7rnn4tprr8WXvvQlzJs3DyeddBLOP/98XHPNNQO+rcuWLcOcOXM2apC3tbvvvvvwxhtvYJ999sGkSZM26Ws98MADOPXUU7H33nvjqaeewuWXX465c+fiYx/7WMNjH3zwQRx88MFobW3FvffeiyeffBKXXnoplFIDvl2LFy/GnDlzNvtA/be//S3mzJnTdJC3NVq9ejXuuOMOVCoVnHjiiZv89T72sY/hnnvuweWXX46nnnoKe++9N0499VQ8+OCDqcf5vo+TTjoJV1xxBU499VQ89dRTeOCBB3DkkUeiu7t7k28nEa2fPtgbQEREvVu8eDGkDP9P7oMf/GC/nvvGG2/grrvuwtVXX42LL74YADB16lSsXr0aV111Fc455xy0tbVt9Db6vg/P8zZ6PUPBvHnz4vfr2GOPxeuvv75JXsf3fVx88cU4/PDD8T//8z8AgGnTpqFQKOBTn/oUnnrqKRx11FEAgP/7v//DWWedhbPPPhvf//7343VMmzZtQLfJdd1+n32jnk2YMAFr166FEAKrVq3CnXfeucle68knn8T8+fPx4IMP4tRTTwUQHh/vvPMOLr74YpxyyinQNA0AcOutt+Kpp57CSy+9hP322y9exzHHHLPJto+I+odn8ohowPzqV7/ClClTYFkWJk6ciG9/+9sNjxFCoLu7G/fccw+EEP2+/FAIgfPOOw933303dt55Z2QyGey111743e9+B6UUbrjhBkycOBH5fB6HHHII3nrrrdTz58+fjxNOOAHve9/7YNs23v/+9+Pss8/GqlWr4seUy2XsscceeP/734/29vZ4+YoVKzB27FhMnToVvu/3v0AbKBowbIjHHnsMSimcccYZqeVnnHEGSqUSnn766X6v81//+heEELj++utx1VVXYeLEibAsCwsWLMDee+8drz96f5OXl/3iF7/A/vvvj2w2i0KhgOnTp2PRokUbvH8AoJTC0UcfjREjRmDp0qXx8mKxiN122w277rrrZj270J/3680338Rpp52G0aNHw7Is7Lrrrrjtttv69Nzf/e53WL58ecN7+4lPfAL5fB4///nP42V33nknuru7cemll/Z529bn+eefhxAC9913Hy666CJss802sCwLd955Jz7xiU8ACAcJ0XEwd+7c+Lk/+tGPsPvuu8O2bbS1teGkk07C//7v/27U9syePTv+j4zo0mYhBJ5//vnU455++mnsueeeyGQy2GWXXfCjH/2oYV2/+93v8JGPfCS+BPayyy6D67obtX0bItqHvnrkkUew//77I5fLIZ/P44gjjsCf//znPj335z//OfL5fPzeRc444wwsW7YMv//97+NlN998Mw466KDUAI+Itiwc5BHRgHj22WdxwgknoFAo4OGHH8YNN9yARx99FHfffXfqcYsWLUImk8HRRx+NRYsWYdGiRakzC33xy1/+EnfeeSe+9a1v4aGHHkJnZyeOOeYYXHTRRXjppZfwve99D3fccQcWL16Mj3/846nL0d5++23sv//++MEPfoBnnnkG3/zmN/H73/8eBx54YPxLnG3bePTRR/Huu+/ic5/7HAAgCAJ86lOfglIKDz30UPw/2j3xPK9PfzbFpXJJr7/+OkaNGoWxY8emln/oQx+K799Qt9xyC5577jl8+9vfxlNPPYXx48fH7/c3vvGN+P0988wzAYSXC55wwgloaWnBQw89hLvuugtr167F1KlTsXDhwg3ejmigkc1mcfLJJ8fv47nnnoslS5bg0UcfRS6X63Udg/F+LV68GHvvvTdef/11fOc738Evf/lLHHPMMfjKV76COXPmrPf50XsXvZcRwzCwyy67pN7bF198EW1tbfjb3/6GKVOmQNd1jB49Gueccw46Ojo2aj8uu+wyLF26FLfffjueeOIJnHTSSfGlwLfddlt8HERnea699lp8/vOfx2677Yaf/exnuPnmm/HXv/4V+++/P958880N3o4zzzwTX/7ylwEAP/vZz+LX3XPPPePH/OUvf8FFF12Er371q3j88cfxoQ99CJ///Ofx4osvxo9ZvHgxDj30UKxbtw5z587F7bffjj//+c+46qqr+rQdSqk+H08D6ZprrsGpp56KD3zgA3j00Udx3333obOzEx/96EexePHi9T7/9ddfx6677gpdT1/kVf9d8e9//xv/+te/MHnyZHz961/HmDFjoOs6dtttN9xzzz0Duk9EtBEUEdEA2HfffdX48eNVqVSKl3V0dKi2tjZV/1WTy+XU6aefvkGvA0CNHTtWdXV1xcsee+wxBUBNmTJFBUEQL7/pppsUAPXXv/616bqCIFCu66p33nlHAVCPP/546v5HHnlEAVA33XST+uY3v6mklOqZZ55Z7zYuWbJEAejTnwULFvRr/3fbbTd18MEH9/nx06dPVzvvvHPT+0zTVGeddVa/Xl+p2v5NmjRJOY6Tuu+Pf/yjAqDuvvvu1HLf99X48ePV5MmTle/78fLOzk41evRodcABB8TL7r77bgVALVmypF/btXDhQqXrurrgggvUj370IwVA3XnnnX16bl/fr/r9Wp9jjjlGTZgwoel9RxxxhHrf+96n2tvbU8vPO+88Zdu2WrNmTa/rvvrqqxUAtXz58ob7Dj/8cLXTTjvFt3feeWdl27YqFArqmmuuUQsWLFDXX3+9ymQy6iMf+Ujqc9NXCxYsUADUQQcd1HDfj3/846bH99q1a1Umk1FHH310avnSpUuVZVnqtNNOi5ddfvnlDd8d63PDDTf0eOxMmDBB2bat3nnnnXhZqVRSbW1t6uyzz46XnXLKKSqTyagVK1bEyzzPU7vsskufjsvo+O3Ln/5YuXKlAqAuv/zyhvuWLl2qdF1XX/7yl1PLOzs71dixY9XJJ5+83vXvuOOO6ogjjmhYvmzZMgVAXXPNNUoppRYtWqQAqJaWFvWBD3xAPfroo2revHlqxowZCoC64447+rVfRLRpcE4eEW207u5u/PGPf8S5554L27bj5YVCAccdd9yA/+/utGnTUmdmdt11VwDAUUcdlbq0KVr+zjvvYPLkyQCAd999F9/85jfxq1/9CsuWLUMQBPHj//d//xfHH398fPvkk0/G888/j4svvhi+7+PrX/86pk+fvt7tGz9+PP74xz/2aV923nnnPj1uY/R2udfGzJ86/vjjYRhGnx7797//HcuWLcMFF1yQupwxn8/j4x//OH74wx+iWCwim81u8PZ85CMfwdVXX41LL70UlmXh05/+ND7/+c/36bl9fb8mTpy4wduXVC6X8eyzz+KLX/wistls6qzO0Ucfje9973v43e9+h6OOOgq+76fOIEopUzXs6T1MLg+CAOVyGZdffjn+67/+C0A4N9M0TVxwwQV49tlncdhhh23Qvnz84x/v82MXLVqEUqmEz372s6nl2267LQ455BA8++yzG7QNfTVlyhRst9128W3btrHTTjvhnXfeiZctWLAAhx56KMaMGRMv0zQNp5xySp/OsB533HF9Pp4Gyrx58+B5HmbOnJk6lmzbxsEHH4wFCxYACM8y1l9qnjxz15fviug7s1wu48knn8SECRMAANOnT8dee+2FK664Al/4whcGZseIaINxkEdEG23t2rUIgqDhkkAATZdtrPqgENM0e11eLpcBhL+cHH744Vi2bBlmzZqFyZMnI5fLIQgC7LfffiiVSg2v9bnPfQ4/+MEPYJomvvKVr/Rp+0zTxJQpU/r02PVd9rmxRowY0TTpsru7G47jbFToyrhx4/r82NWrV/f4nPHjxyMIAqxdu3ajBnkA8KlPfQqzZs1CpVKJ52f1xeZ+v1avXg3P83Drrbf22M4imic6adKk1CDk8ssvx+zZszFixIh4XckBCQCsWbMm9d6OGDECb775Jo444ojU44466ihccMEF+NOf/rTBg7yB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4O666y7sv//+2H777Xt8TE/7vXLlSpTL5QHbloGur1IKnufBsiycdtppuPXWWwd0/ZsDB3lERERERANo6tSpOO+883DhhRdi5MiRmD59+nqfI4TAD3/4Qxx77LHIZrPYddddsWjRIrz11luYOnUqcrkc9t9/f7z99tup5z3xxBP48Ic/DNu2scMOO2DOnDnwPC++/8Ybb8TkyZORy+Ww7bbb4txzz0VXV1d8/9y5czFs2DDMmzcPu+66K/L5PI488kgsX7681+19+OGHGy5l7Ot+P/nkkxg3bhzOOeccLFq0aL21qffZz34WJ554Iq699lqMHz8eO+2003qfU6lUcMkll2DbbbeFZVnYcccdcddddwEAnn/+eQghMG/ePOy1116wLAu/+c1vAADHH388HnvsMZRKpX5v52BinzwiIiIi2mpEzaU3t/42Yr/nnnvwxS9+ES+99BKUUn16zpVXXokbb7wRN954Iy699FKcdtpp2GGHHXDZZZdhu+22w+c+9zmcd955eOqppwAA8+bNw6c//Wnccsst+OhHP4q33347niN3+eWXAwCklLjllluw/fbbY8mSJTj33HNxySWX4Pvf/378usViEd/+9rdx3333QUqJT3/60/ja176GBx54oOl2rl27Fq+//jr22muvDdrvT33qUxg5ciTuvfdeHHLIIdhuu+0wc+ZMzJw5E9tuu22favXss8+ipaUF8+fP71N9Z86ciUWLFuGWW27B7rvvjiVLlmDVqlWpx1xyySX49re/jR122AHDhg0DAOy1115wXRd/+MMfcPDBB/dp27YIihq0t7crAGrVqlWDvSm0hXAcRz322GPKcZzB3hTaQvCYoGZ4XFA9HhMbp1QqqcWLF6tSqRQv6+rqUgA2+5+urq4+b/fBBx+spkyZ0vQ+3/fV2rVrle/7qeUA1De+8Y349qJFixQAddddd8XLHnroIWXbdnz7ox/9qLrmmmtS67nvvvvUuHHjety2Rx99VI0YMSK+fffddysA6q233oqX3XbbbWrMmDE9ruPPf/6zAqCWLl2aWt7bfvdk3bp16n/+53/URz/6UaVpmjr00EPVvffeq4rFYo/POf3009WYMWNUpVLp02v8/e9/VwDU/Pnzm96/YMECBUA99thjTe8fPny4mjt3bp9eqyfNjuXIqlWrFADV3t6+Ua+RxMs1iYiIiIgGWLOzXOvzoQ99KP55zJgxAIDJkyenlpXLZXR0dAAAXnnlFVxxxRXI5/Pxny984QtYvnx5fLZzwYIFmD59OrbZZhsUCgXMnDkTq1evRnd3d7zebDaLSZMmxbfHjRuHd999t8ftjC5dtG17o/e7tbUVZ555Jl588UX89re/xZIlSzBz5kzMmzev1+dNnjwZpmn26TVeffVVaJq23jNxPW17JpMZlLPHG4OXaxIRERHRViObzabmlG3O1+2PXC7X79cwDCP+Obo0tNmyIAjiv+fMmYOPfexjDeuybRvvvPMOjj76aJxzzjm48sor0dbWhoULF+Lzn/88XNdt+rrR66heLoEcOXIkgPCyzVGjRqXu6+9+l8tlPPHEE7jvvvvw9NNPY4899sBFF12EQw89tNfn9ed1MplMnx7X0zrXrFnTsJ9bOg7yiIiIiGirIYTYoAHUULTnnnvi73//O97//vc3vf/ll1+G53n4zne+AynDC/geffTRjX7dSZMmoaWlBYsXL+5T6Ek9pRQWLlyI++67D48++ijy+Tw+/elP4/rrr8cuu+yy0dtXb/LkyQiCAC+88AIOO+ywfj337bffRrlcxh577DHg27UpcZBHRERERLQV+uY3v4ljjz0W2267LT7xiU9ASom//vWveO2113DVVVdh0qRJ8DwPt956K4477ji89NJLuP322zf6daWUOOyww7Bw4UKceOKJ/X7+/fffj7PPPhsnnXQSHn30URx22GHxIHRT2H777XH66afjc5/7XBy88s477+Ddd9/FySef3Otzf/Ob32CHHXZIXc66NeCcPCIiIiKirdARRxyBX/7yl5g/fz723ntv7LfffrjxxhsxYcIEAMCUKVNw44034rrrrsMHP/hBPPDAA7j22msH5LXPOussPPzww/Glo/1x6KGHYsWKFXjggQdw+OGHb9IBXuQHP/gBZsyYgXPPPRe77LILvvCFL6TmJfbkoYcewhe+8IVNvn0DTajeLrh9j+ro6EBraytWrVqFESNGDPbm0BbAdV08+eSTOProoxuuW6f3Jh4T1AyPC6rHY2LjlMtlLFmyBBMnTmwa8rE1CoIAHR0daGlp2SyDm01FKYX99tsPF1xwAU499dTB3pxN4vXXX8ehhx6Kf/zjH2htbd2odfV2LK9evRojR45Ee3s7WlpaNup1IlvvkUVERERERINCCIE77rgj1Xh9qFm2bBnuvffejR7gDQbOySMiIiIi2oQeeOABnH322U3vmzBhAt54443NvEUDY/fdd8fuu+8+2JuB3/zmNzjqqKN6vH9D01gPP/zwDd2kQcdBHhERERHRJnT88cdj3333BRBertnV1YV8Pg8pJS/jHQB77bUXXn311cHejC0KB3lERERERJtQoVBAoVAAMHTm5G1JMplMj20k3qt4ZBEREREREQ0hHOQRERERERENIRzkERERERERDSEc5BEREREREQ0hHOQRERERERENIRzkERERERFRv82aNQtnnXXWYG/GoHr33XcxatQo/N///d9gb0oKB3lERERERNQv//nPf3DzzTfj61//+mZ/7TfeeAMf//jHsf3220MIgZtuummzb0Nk9OjR+MxnPoPLL7980LahGQ7yiIiIiIg2IcdxBnsTBtxdd92F/fffH9tvv32Pj+lpv1euXIlyubzBr10sFrHDDjvgW9/6FsaOHbvB6xkoZ5xxBh544AGsXbt2sDclxkEeEREREdEAmjp1Ks477zxceOGFGDlyJKZPn77e5wgh8MMf/hDHHnssstksdt11VyxatAhvvfUWpk6dilwuh/333x9vv/126nlPPPEEPvzhD8O2beywww6YM2cOPM+L77/xxhsxefJk5HI5bLvttjj33HPR1dUV3z937lwMGzYM8+bNw6677op8Po8jjzwSy5cv73V7H374YRx//PEbtN9PPvkkxo0bh3POOQeLFi1ab23q7b333rjhhhvwyU9+EpZl9ek5s2fPxpQpU1LLbrrpptQg9bOf/SxOPPFEXHPNNRgzZgyGDRsW1/Piiy9GW1sb3ve+9+FHP/pRaj2TJ0/G2LFj8fOf/7zf+7KpcJBHRERERFsdx3F6/JMc5Kzvsa7rrvexG+Kee+6Brut46aWX8MMf/rBPz7nyyisxc+ZMvPrqq9hll11w2mmn4eyzz8Zll12Gl19+GQBw3nnnxY+fN28ePv3pT+MrX/kKFi9ejB/+8IeYO3curr766vgxUkrccssteP3113HPPffgueeewyWXXJJ63WKxiG9/+9u477778OKLL2Lp0qX42te+1uN2rl27Fq+//jr22muvDdrvT33qU7j//vuxdu1aHHLIIdh5551x9dVX49///nef6rQpPffcc1i2bBlefPFF3HjjjZg9ezaOPfZYDB8+HL///e9xzjnn4JxzzmnY1n322Qe/+c1vBmmrG+mDvQFERERERP117bXX9njfjjvuiNNOOy2+/e1vf7thMBeZMGECPvvZz8a3b775ZhSLxdRjNmS+1fvf/35cf/31/XrOGWecgZNPPhkAcOmll2L//ffHrFmzcMQRRwAAzj//fJxxxhnx46+++mr813/9F04//XQAwA477IArr7wSl1xySbzNF1xwQfz4iRMn4sorr8QXv/hFfP/734+Xu66L22+/HZMmTQIQDiSvuOKKHrfznXfegVIK48eP36D91nUdxxxzDI455hi0t7fjxz/+Me69915cfvnlmDp1Kk4//XTMmDEDmUym1/VsCm1tbbjlllsgpcTOO++M66+/HsViMZ57eNlll+Fb3/oWXnrpJXzyk5+Mn7fNNtvgz3/+82bf3p7wTB4RERER0QBrdpZrfT70oQ/FP48ZMwZAeClgclm5XEZHRwcA4JVXXsEVV1yBfD4f//nCF76A5cuXxwPVBQsWYPr06dhmm21QKBQwc+ZMrF69Gt3d3fF6s9lsPMADgHHjxuHdd9/tcTtLpRIAwLbtjd7v1tZWnHnmmXjxxRfx29/+FkuWLMHMmTMxb968fq1noOy2226QsjZEGjNmTOo90DQNI0aMaKhPJpNp+M+BwcQzeURERES01bnssst6vC/5SzqAXi89FEKkbp9//vkbt2FVuVyu388xDCP+OdquZsuCIIj/njNnDj72sY81rMu2bbzzzjs4+uijcc455+DKK69EW1sbFi5ciM9//vOpM5vJ14heRynV43aOHDkSQHjZ5qhRo1L39Xe/y+UynnjiCdx33314+umnsccee+Ciiy7CoYce2q/1rI+UsmGfmp3dbVaLZsui9yCyZs2ahloMJg7yiIiIiGirY5rmoD92sO255574+9//jve///1N73/55ZfheR6+853vxAPfRx99dKNfd9KkSWhpacHixYux00479fv5SiksXLgQ9913Hx599FHk83l8+tOfxvXXX49ddtllo7evmVGjRmHFihVQSsWD5VdffXXA1v/6669j6tSpA7a+jcVBHhERERHRVuib3/wmjj32WGy77bb4xCc+ASkl/vrXv+K1117DVVddhUmTJsHzPNx666047rjj8NJLL+H222/f6NeVUuKwww7DwoULceKJJ/b7+ffffz/OPvtsnHTSSXj00Udx2GGHNZx97Y3jOFi8eHH88//93//h1VdfRT6f73HAO3XqVKxcuRLXX389ZsyYgaeffhpPPfUUWlpa+r399YrFIl555RVcc801G72ugcI5eUREREREW6EjjjgCv/zlLzF//nzsvffe2G+//XDjjTdiwoQJAIApU6bgxhtvxHXXXYcPfvCDeOCBB3oNrOmPs846Cw8//HDDZYt9ceihh2LFihV44IEHcPjhh/drgAcAy5Ytwx577IE99tgDy5cvx7e//W3sscceOPPMM3t8zq677orvf//7uO2227D77rvjD3/4Q6+X8fbH448/ju222w4f/ehHB2R9A0Go3i64fY/q6OhAa2srVq1ahREjRgz25tAWwHVdPPnkkzj66KMbrsum9yYeE9QMjwuqx2Ni45TLZSxZsgQTJ05sGvKxNQqCAB0dHWhpaen34GZLopTCfvvthwsuuACnnnrqYG/OoNpnn31wwQUXpBJd6/V2LK9evRojR45Ee3v7gJxZBHgmj4iIiIiI+kkIgTvuuKOhJ+F7zbvvvosZM2ZscQNdzskjIiIiItqEHnjgAZx99tlN75swYQLeeOONzbxFA2P33XfH7rvvPtibMahGjx7d0Fx+S8BBHhERERHRJnT88cdj3333BRBertnV1YV8Pg8pJS/jpU2CgzwiIiIiok2oUCigUCgAGDpz8mjLxiOLiIiIiIhoCOEgj4iIiIi2aBsS00+0JdncxzAv1yQiIiKiLZJpmpBSYtmyZRg1ahRM04QQYrA3a6MEQQDHcVAul3m55nuAUgqO42DlypWQUsI0zc3yuhzkEREREdEWSUqJiRMnYvny5Vi2bNlgb86AUEqhVCohk8ls9QNW6rtsNovttttusw3sOcgjIiIioi2WaZrYbrvt4HkefN8f7M3ZaK7r4sUXX8RBBx3EZM33CE3ToOv6Zh3UD+og78UXX8QNN9yAV155BcuXL8fPf/5znHjiifH9PRXi+uuvx8UXX9z0vrlz5+KMM85oWF4qlRq6yxMRERHRlk8IAcMwhsSgSNM0eJ4H27aHxP7QlmlQLwTu7u7G7rvvju9973tN71++fHnqz49+9CMIIfDxj3+81/W2tLQ0PJcDPCIiIiIiei8Y1DN5Rx11FI466qge7x87dmzq9uOPP45p06Zhhx126HW9QoiG5xIREREREb0XbDVz8v7z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o1vu5ebxJw8I4rQ/38QDDzyA/esfecYznrHO13/cccdx6SWX8Jvb7+Nvjy5f5+ufTQ/O3QSAoaGhFSLp15de85rXADCy+ZY82N2wroLm+oMaAdwtc09UftvRRx9Nu91maGiI/3v0yXWVaUUy1vLbudvw2te9jre85S2rdIIH7gRjfHwcIQS/9+aslbakpT8Ptwygmm+IGh8f59xz3Y8ok5OOfGyM4dprr33C1z08PMyuu+5KyzgATruxfnI1y6pO8ipVqlTpKapuqnnvH/7CVKLRd9/Gu+oRR5lljI+O0hqZw5mmxVP5Zo67OinnPuAoiSft8UxCb+3dypRrj0024pAXPof3vPe9/LY+2Dezoen6R5Zxxf2P4EnB8c+e6XVfF9p555159babAfD//nzLemnDdP3hD39g3sJFaK37qN0bkl760pcyOjqKUorzuxveF+9b2wlztnJB96973etWMveaq9lsFifhdzaeOndc/d+4YaPNt2C33XZbbS9jDhict/V2/GXy8f8AEJf+Nky15j3u5a0LffzjH+dnP/sZF154If/6r//K6Ogonudx1llnYQaFLK9Fbb/99hx22GFsNuTG5dBGC9b7ba7VSV6lSpUqPUX1teUJd050mB8GfGWf5+FJyXxP8vyHb+f+++/jh7/6DWffse6M6etaP5dzeOdx7+aQl+/FQdts8oSt5+gdNqPVajF/y625cHTDv6pwQXNTDjjgAN70zB3YrJRvta713ufuxI477sicPfbm9vb6vyr1m9/8BoCxB+5l6623Xr+NWYG22cZh9acWbP6Ef3FdXZ1vh5BSMjo6utaImrPpLW95C1pr5m2yKVdPrjw+wFrLd2+4g78sfuwJbdeaKooi7l+4NQDJ3bexyy67rNbn99xzT8bGxgC4JHj8J2Vp6STvVxf8jtFOtIK5178uu+wyvvGNbwDwmc98hrlz5/K2t72NTqfDddddx09+snaz9WbTZiIliiKCIODKK69cJ+ucTZUnb4CeLp68PV97KSML51NvNpCeZGi4Qb0ZUG8GBIGi3lCFD68eCgIfF3JeM4S+Cz33pKHmpYQqxQChimd48HL/na+7KB0j09gFaOsE7TsPXuq7e96tkBjpfp2MPRfmraWHFpkfRShS3C1XBklqM58eqPdUQwAAwfdJREFUhq7p4b+jaQHq3dRHljx6E5HzIAWq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NaK4uFgUFxcLAOLZZ58VxcXF4vTp00IIjhOJqLV9guOE/j3wwAMiPT1d7N27V5SXl/sedXV1vjIcKxJLJH2CY4W+rVy5Uuzbt0+UlJSIQ4cOiVWrVgmDwSA++OADIUT0xoiEDPKEEOLFF18Uffr0ESaTSfzoRz8KSG07Z84cceuttwaU37t3rxg+fLgwmUyib9++YuPGje1cY4q21vSJp556SvTv318kJSWJzp07izFjxojdu3fHoNYULd6U1sGPOXPmCCE4TiSi1vYJjhP6p9YfAIhXXnnFV4ZjRWKJpE9wrNC3efPm+f5/2b17dzFhwgRfgCdE9MYISYjGmXxERERERETU4SXcnDwiIiIiIiI9Y5BHRERERESkIwzyiIiIiIiIdIRBHhERERERkY4wyCMiIiIiItIRBnlEREREREQ6wiCPiIiIiIhIRxjkERERBRk/fjyWLFkS62oQERFFhEEeERERERGRjjDIIyIiigN2uz3WVSAiIp1gkEdERKTC7XZj+fLl6NKlCzIyMvD444/7XistLcXUqVORkpKCtLQ0TJ8+HefPn/e9PnfuXEybNi3geEuWLMH48eN9z8ePH49FixZh2bJl6NatGyZOnBjlMyIiokTBII+IiEjFa6+9BqvVis8++wzr1q3DmjVrUFhYCCEEpk2bhsuXL6OoqAiFhYU4efIkZsyYEdHvUBQFBw4cwJ///OconAURESUiJdYVICIiikfDhg3D6tWrAQC5ubnYsGED/vWvfwEADh06hJKSEmRnZwMAtm3bhqFDh+KLL77AyJEjw/4dAwYMwLp167SvPBERJTReySMiIlIxbNiwgOeZmZmorKzE0aNHkZ2d7QvwAGDIkCHo1KkTjh492qrfMWLECE3qSkRE5I9BHhERkQqj0RjwXJIkuN1uCCEgSVKT8v7bDQYDhBABrzscjib7WK1WDWtMRETkwSCPiIioFYYMGYLS0lKcOXPGt+3IkSOoqqrC4MGDAQDdu3dHeXl5wH5ff/11e1aTiIgSGIM8IiKiVrj99tsxbNgw3H///fjqq6/w+eefY/bs2bj11lt9t1/edtttOHjwIF5//XWcOHECq1evxuHDh2NccyIiShQM8oiIiFpBkiS8++676Ny5M8aNG4fbb78d/fr1w44dO3xlJk2ahN/97ndYvnw5Ro4ciZqaGsyePTuGtSYiokQiieBJA0RERERERNRh8UoeERERERGRjjDIIyIiIiIi0hEGeURERERERDrCII+IiIiIiEhHGOQRERERERHpCIM8IiIiIiIiHWGQR0REREREpCMM8oiIiIiIiHSEQR4REREREZGOMMgjIiIiIiLSEQZ5REREREREOsIgj4iIiIiISEf+P5af7T6VaYsxAAAAAElFTkSuQmCC", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "854f96fe1942412c89a70838149b4a83", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "HTML(value=\"./spectrum.pdf
\")" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "mgn = lambda value, unit: (value / unit).to_base_units().magnitude\n", "\n", @@ -218,8 +2892,8 @@ " ax[i].xaxis.set_units(xunit)\n", " ax[i].set_ylim([0, 20])\n", "\n", - " ax[i].plot(output['t'], rmean(output['r'], output['n'], output['r'].magnitude > output['r_cr']), label=\"r_mean (r > r_cr)\", color='black')\n", - " ax[i].plot(output['t'], rmean(output['r'], output['n'], output['r'] > 1 * si.micrometre), label=\"r_mean (r > 1 um)\", linestyle='--', color='gray')\n", + " ax[i].plot(output['t'], output[\"r_act\"], label=\"r_mean (r > r_cr)\", color='black')\n", + " ax[i].plot(output['t'], output[\"r_mean_gt_1_um\"], label=\"r_mean (r > 1 um)\", linestyle='--', color='gray')\n", " ax[i].legend(loc='best')\n", " ax[i].grid()\n", " plt.tight_layout()\n", @@ -255,7 +2929,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.8.9" + "version": "3.10.12" } }, "nbformat": 4, diff --git a/examples/PySDM_examples/Yang_et_al_2018/simulation.py b/examples/PySDM_examples/Yang_et_al_2018/simulation.py index 8c9d77bcb..9ba134857 100644 --- a/examples/PySDM_examples/Yang_et_al_2018/simulation.py +++ b/examples/PySDM_examples/Yang_et_al_2018/simulation.py @@ -1,8 +1,11 @@ +import numpy as np + import PySDM.products as PySDM_products from PySDM import Builder, Formulae from PySDM.backends import CPU from PySDM.dynamics import AmbientThermodynamics, Condensation from PySDM.environments import Parcel +from PySDM.physics import si class Simulation: @@ -49,6 +52,12 @@ def __init__(self, settings, backend=CPU): PySDM_products.CondensationTimestepMin(name="dt_cond_min"), PySDM_products.CondensationTimestepMax(name="dt_cond_max"), PySDM_products.RipeningRate(), + PySDM_products.MeanRadius( + name="r_mean_gt_1_um", radius_range=(1 * si.um, np.inf) + ), + PySDM_products.ActivatedMeanRadius( + name="r_act", count_activated=True, count_unactivated=False + ), ] attributes = environment.init_attributes( @@ -68,28 +77,34 @@ def save(self, output): volume = _sp.attributes["volume"].to_ndarray() output["r"].append(self.formulae.trivia.radius(volume=volume)) output["S"].append(_sp.environment["RH"][cell_id] - 1) - output["qv"].append(_sp.environment["qv"][cell_id]) - output["T"].append(_sp.environment["T"][cell_id]) - output["z"].append(_sp.environment["z"][cell_id]) - output["t"].append(_sp.environment["t"][cell_id]) - output["dt_cond_max"].append(_sp.products["dt_cond_max"].get()[cell_id].copy()) - output["dt_cond_min"].append(_sp.products["dt_cond_min"].get()[cell_id].copy()) - output["ripening rate"].append( - _sp.products["ripening rate"].get()[cell_id].copy() - ) + for key in ("qv", "T", "z", "t"): + output[key].append(_sp.environment[key][cell_id]) + for key in ( + "dt_cond_max", + "dt_cond_min", + "ripening rate", + "r_mean_gt_1_um", + "r_act", + ): + output[key].append(_sp.products[key].get()[cell_id].copy()) def run(self): output = { - "r": [], - "S": [], - "z": [], - "t": [], - "qv": [], - "T": [], - "r_bins_values": [], - "dt_cond_max": [], - "dt_cond_min": [], - "ripening rate": [], + key: [] + for key in ( + "r", + "S", + "z", + "t", + "qv", + "T", + "r_bins_values", + "dt_cond_max", + "dt_cond_min", + "ripening rate", + "r_mean_gt_1_um", + "r_act", + ) } self.save(output) diff --git a/examples/README.md b/examples/README.md index 3ce8c2b4b..54bf216b1 100644 --- a/examples/README.md +++ b/examples/README.md @@ -72,7 +72,7 @@ [![preview in nbviewer](https://raw.githubusercontent.com/jupyter/design/master/logos/Badges/nbviewer_badge.svg)](https://nbviewer.jupyter.org/github/open-atmos/PySDM/blob/main/examples/PySDM_examples/Arabas_and_Shima_2017/fig_5.ipynb) [![launch on mybinder.org](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/open-atmos/PySDM.git/main?urlpath=lab/tree/examples/PySDM_examples/Arabas_and_Shima_2017/fig_5.ipynb) [![launch on Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/open-atmos/PySDM/blob/main/examples/PySDM_examples/Arabas_and_Shima_2017/fig_5.ipynb) - + - - [Yang et al. 2018](https://doi.org/10.5194/acp-18-7313-2018) (polydisperse size spectrum activation/deactivation test case): - Fig. 2: [![preview in nbviewer](https://raw.githubusercontent.com/jupyter/design/master/logos/Badges/nbviewer_badge.svg)](https://nbviewer.jupyter.org/github/open-atmos/PySDM/blob/main/examples/PySDM_examples/Yang_et_al_2018/fig_2.ipynb) @@ -119,7 +119,26 @@ - Fig 3: [![preview in nbviewer](https://raw.githubusercontent.com/jupyter/design/master/logos/Badges/nbviewer_badge.svg)](https://nbviewer.jupyter.org/github/open-atmos/PySDM/blob/main/examples/PySDM_examples/Jaruga_and_Pawlowska_2018/fig_3.ipynb) [![launch on mybinder.org](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/open-atmos/PySDM.git/main?urlpath=lab/tree/examples/PySDM_examples/Jaruga_and_Pawlowska_2018/fig_3.ipynb) - [![launch on Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/open-atmos/PySDM/blob/main/examples/PySDM_examples/Jaruga_and_Pawlowska_2018/fig_3.ipynb) + [![launch on Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/open-atmos/PySDM/blob/main/examples/PySDM_examples/Jaruga_and_Pawlowska_2018/fig_3.ipynb) + - +- [Grabowski & Pawlowska 2023](10.1029/2022GL101917) (polydisperse size spectrum activation test case): + - Fig. 1: + [![preview in nbviewer](https://raw.githubusercontent.com/jupyter/design/master/logos/Badges/nbviewer_badge.svg)](https://nbviewer.jupyter.org/github/open-atmos/PySDM/blob/main/examples/PySDM_examples/Grabowski_and_Pawlowska_2023/figure_1.ipynb) + [![launch on mybinder.org](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/open-atmos/PySDM.git/main?urlpath=examples/PySDM_examples/Grabowski_and_Pawlowska_2023/figure_1.ipynb) + [![launch on Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/open-atmos/PySDM/blob/main/examples/PySDM_examples/Grabowski_and_Pawlowska_2023/figure_1.ipynb) + - Fig. 2: + [![preview in nbviewer](https://raw.githubusercontent.com/jupyter/design/master/logos/Badges/nbviewer_badge.svg)](https://nbviewer.jupyter.org/github/open-atmos/PySDM/blob/main/examples/PySDM_examples/Grabowski_and_Pawlowska_2023/figure_2.ipynb) + [![launch on mybinder.org](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/open-atmos/PySDM.git/main?urlpath=examples/PySDM_examples/Grabowski_and_Pawlowska_2023/figure_2.ipynb) + [![launch on Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/open-atmos/PySDM/blob/main/examples/PySDM_examples/Grabowski_and_Pawlowska_2023/figure_2.ipynb) + - Fig. 3: + [![preview in nbviewer](https://raw.githubusercontent.com/jupyter/design/master/logos/Badges/nbviewer_badge.svg)](https://nbviewer.jupyter.org/github/open-atmos/PySDM/blob/main/examples/PySDM_examples/Grabowski_and_Pawlowska_2023/figure_3.ipynb) + [![launch on mybinder.org](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/open-atmos/PySDM.git/main?urlpath=examples/PySDM_examples/Grabowski_and_Pawlowska_2023/figure_3.ipynb) + [![launch on Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/open-atmos/PySDM/blob/main/examples/PySDM_examples/Grabowski_and_Pawlowska_2023/figure_3.ipynb) + - Fig. 4: + [![preview in nbviewer](https://raw.githubusercontent.com/jupyter/design/master/logos/Badges/nbviewer_badge.svg)](https://nbviewer.jupyter.org/github/open-atmos/PySDM/blob/main/examples/PySDM_examples/Grabowski_and_Pawlowska_2023/figure_4.ipynb) + [![launch on mybinder.org](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/open-atmos/PySDM.git/main?urlpath=examples/PySDM_examples/Grabowski_and_Pawlowska_2023/figure_4.ipynb) + [![launch on Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/open-atmos/PySDM/blob/main/examples/PySDM_examples/Grabowski_and_Pawlowska_2023/figure_4.ipynb) + ### 1D kinematic (prescribed-flow, single-column): - [Shipway & Hill 2012](https://doi.org/10.1002/qj.1913): diff --git a/tests/examples_tests/conftest.py b/tests/examples_tests/conftest.py index bb286ce1a..3fb2e1000 100644 --- a/tests/examples_tests/conftest.py +++ b/tests/examples_tests/conftest.py @@ -29,6 +29,7 @@ def findfiles(path, regex): "Pyrcel", "Yang_et_al_2018", "Singer_Ward", + "Grabowski_and_Pawlowska_2023", ], "coagulation": ["Bartman_et_al_2021", "Berry_1967", "Shima_et_al_2009"], "breakup": ["Bieli_et_al_2022", "deJong_Mackay_et_al_2023", "Srivastava_1982"], diff --git a/tests/smoke_tests/parcel/grabowski_and_pawlowska_2023/__init__.py b/tests/smoke_tests/parcel/grabowski_and_pawlowska_2023/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/tests/smoke_tests/parcel/grabowski_and_pawlowska_2023/test_figure_1_and_2.py b/tests/smoke_tests/parcel/grabowski_and_pawlowska_2023/test_figure_1_and_2.py new file mode 100644 index 000000000..8e0e7edbd --- /dev/null +++ b/tests/smoke_tests/parcel/grabowski_and_pawlowska_2023/test_figure_1_and_2.py @@ -0,0 +1,129 @@ +""" +test against values read from plots in +[Grabowski and Pawlowska](https://doi.org/10.1029/2022GL101917) paper +""" + +import numpy as np +import pytest +from PySDM_examples.Grabowski_and_Pawlowska_2023 import Settings, Simulation + +from PySDM import Formulae +from PySDM.physics import si +from PySDM.products import AmbientRelativeHumidity + +TRIVIA = Formulae().trivia + +PRODUCTS = [ + AmbientRelativeHumidity(name="S_max", var="RH"), +] + +N_SD = 25 + +VELOCITIES_CM_PER_S = (25, 100) + +AEROSOLS = ("pristine", "polluted") + +DZ = 500 * si.m + +RTOL = 0.01 + + +@pytest.fixture(scope="session", name="outputs") +def outputs_fixture(): + outputs = {} + for aerosol in AEROSOLS: + outputs[aerosol] = {} + for w_cm_per_s in VELOCITIES_CM_PER_S: + vertical_velocity = w_cm_per_s * si.cm / si.s + outputs[aerosol][w_cm_per_s] = Simulation( + Settings( + n_sd=N_SD, + dt=DZ / vertical_velocity, + vertical_velocity=vertical_velocity, + aerosol=aerosol, + ), + products=PRODUCTS, + ).run() + return outputs + + +class TestFigure1And2: + @staticmethod + @pytest.mark.parametrize("aerosol", AEROSOLS) + @pytest.mark.parametrize("w_cm_per_s", VELOCITIES_CM_PER_S) + @pytest.mark.parametrize("attribute", ("volume", "equilibrium supersaturation")) + @pytest.mark.parametrize("drop_id", (0, -1)) + def test_values_at_final_step( + outputs: dict, + w_cm_per_s: int, + aerosol: str, + attribute: str, + drop_id: int, + ): + # arrange + output = outputs[aerosol][w_cm_per_s] + expected = { + "volume": { + "pristine": { + 25: { + 0: TRIVIA.volume(radius=0.04 * si.um), + -1: TRIVIA.volume(radius=20 * si.um), + }, + 100: { + 0: TRIVIA.volume(radius=0.04 * si.um), + -1: TRIVIA.volume(radius=18 * si.um), + }, + }, + "polluted": { + 25: { + 0: TRIVIA.volume(radius=0.04 * si.um), + -1: TRIVIA.volume(radius=10 * si.um), + }, + 100: { + 0: TRIVIA.volume(radius=0.04 * si.um), + -1: TRIVIA.volume(radius=10 * si.um), + }, + }, + }, + "equilibrium supersaturation": { + "pristine": { + 25: {0: 0.05 / 100 + 1, -1: 0.005 / 100 + 1}, + 100: {0: 0.15 / 100 + 1, -1: 0.005 / 100 + 1}, + }, + "polluted": { + 25: {0: 0.025 / 100 + 1, -1: 0.005 / 100 + 1}, + 100: {0: 0.06 / 100 + 1, -1: 0.004 / 100 + 1}, + }, + }, + }[attribute][aerosol][w_cm_per_s][drop_id] + + # assert + assert np.isclose( + output["attributes"][attribute][drop_id][-1], + expected, + rtol=RTOL, + ).all() + + @staticmethod + @pytest.mark.parametrize("aerosol", AEROSOLS) + @pytest.mark.parametrize("w_cm_per_s", VELOCITIES_CM_PER_S) + @pytest.mark.parametrize( + "rtol", (RTOL, pytest.param(RTOL / 100, marks=pytest.mark.xfail(strict=True))) + ) + def test_ambient_humidity( + outputs: dict, + w_cm_per_s: int, + aerosol: str, + rtol: float, + ): + output = outputs[aerosol][w_cm_per_s] + attributes = output["attributes"] + for vol, crit_vol, eq_ss in zip( + attributes["volume"], + attributes["critical volume"], + attributes["equilibrium supersaturation"], + ): + if np.all(vol < crit_vol): + assert np.isclose( + output["products"]["S_max"], eq_ss, rtol=rtol, atol=0 + ).all() diff --git a/tests/smoke_tests/parcel/grabowski_and_pawlowska_2023/test_figure_3.py b/tests/smoke_tests/parcel/grabowski_and_pawlowska_2023/test_figure_3.py new file mode 100644 index 000000000..7ad5cfdd6 --- /dev/null +++ b/tests/smoke_tests/parcel/grabowski_and_pawlowska_2023/test_figure_3.py @@ -0,0 +1,104 @@ +""" +test against values read from plots in +[Grabowski and Pawlowska](https://doi.org/10.1029/2022GL101917) paper +""" + +import numpy as np +import pytest +from PySDM_examples.Grabowski_and_Pawlowska_2023 import Settings, Simulation + +from PySDM.physics import si +from PySDM.products import ( + ActivatedParticleConcentration, + AreaStandardDeviation, + MeanVolumeRadius, +) + +PRODUCTS = [ + ActivatedParticleConcentration( + name="n_act", count_activated=True, count_unactivated=False, stp=True + ), + MeanVolumeRadius(name="r_vol", count_activated=True, count_unactivated=False), + AreaStandardDeviation( + name="area_std", count_activated=True, count_unactivated=False + ), +] + +N_SD = 25 + +VELOCITIES_CM_PER_S = (25, 100, 400) + +AEROSOLS = ("pristine", "polluted") + +DZ = 500 * si.m +RTOL = 0.05 + + +@pytest.fixture(scope="session", name="outputs") +def outputs_fixture(): + outputs = {} + for aerosol in AEROSOLS: + outputs[aerosol] = {} + for w_cm_per_s in VELOCITIES_CM_PER_S: + vertical_velocity = w_cm_per_s * si.cm / si.s + outputs[aerosol][w_cm_per_s] = Simulation( + Settings( + n_sd=N_SD, + dt=DZ / vertical_velocity, + vertical_velocity=vertical_velocity, + aerosol=aerosol, + ), + products=PRODUCTS, + ).run() + return outputs + + +@pytest.mark.parametrize("w_cm_per_s", VELOCITIES_CM_PER_S) +@pytest.mark.parametrize("aerosol", AEROSOLS) +@pytest.mark.parametrize("product", ("r_vol", "n_act", "area_std")) +@pytest.mark.parametrize( + "rtol", (RTOL, pytest.param(RTOL / 500, marks=pytest.mark.xfail(strict=True))) +) +def test_values_at_final_step( + outputs: dict, w_cm_per_s: int, aerosol: str, product: str, rtol: float +): + # arrange + output = outputs[aerosol][w_cm_per_s] + expected = { + "r_vol": { + "pristine": {25: 20 * si.um, 100: 18 * si.um, 400: 15 * si.um}, + "polluted": {25: 10 * si.um, 100: 9 * si.um, 400: 9 * si.um}, + }, + "n_act": { + "pristine": { + 25: 60 * si.cm**-3, + 100: 100 * si.cm**-3, + 400: 180 * si.cm**-3, + }, + "polluted": { + 25: 350 * si.cm**-3, + 100: 550 * si.cm**-3, + 400: 550 * si.cm**-3, + }, + }, + "area_std": { + "pristine": { + 25: 8 * si.um**2 * 4 * np.pi, + 100: 10 * si.um**2 * 4 * np.pi, + 400: 6.5 * si.um**2 * 4 * np.pi, + }, + "polluted": { + 25: 11 * si.um**2 * 4 * np.pi, + 100: 6 * si.um**2 * 4 * np.pi, + 400: 2.5 * si.um**2 * 4 * np.pi, + }, + }, + }[product] + + # assert + assert np.isclose( + np.log(output["products"][product][-1]), + np.log(expected[aerosol][w_cm_per_s]), + rtol=rtol, + atol=0, + ).all() diff --git a/tests/smoke_tests/parcel/grabowski_and_pawlowska_2023/test_figure_4.py b/tests/smoke_tests/parcel/grabowski_and_pawlowska_2023/test_figure_4.py new file mode 100644 index 000000000..d5c675f1a --- /dev/null +++ b/tests/smoke_tests/parcel/grabowski_and_pawlowska_2023/test_figure_4.py @@ -0,0 +1,55 @@ +""" +test against values read from plots in +[Grabowski and Pawlowska 2023](https://doi.org/10.1029/2022GL101917) paper +""" + +import numpy as np +import pytest +from PySDM_examples.Grabowski_and_Pawlowska_2023 import Settings, Simulation + +from PySDM.physics import si +from PySDM.products import ActivatedMeanRadius, RadiusStandardDeviation + +PRODUCTS = [ + ActivatedMeanRadius(name="r_act", count_activated=True, count_unactivated=False), + RadiusStandardDeviation( + name="r_std", count_activated=True, count_unactivated=False + ), +] +DZ = 250 * si.m +N_SD = 32 +RTOL = 0.3 + + +@pytest.mark.parametrize("w_cm_per_s", (25, 100, 400)) +@pytest.mark.parametrize("aerosol", ("pristine", "polluted")) +def test_values_at_final_step(w_cm_per_s: int, aerosol: str): + # arrange + vertical_velocity = w_cm_per_s * si.cm / si.s + output = Simulation( + Settings( + n_sd=N_SD, + dt=DZ / vertical_velocity, + vertical_velocity=vertical_velocity, + aerosol=aerosol, + ), + products=PRODUCTS, + ).run() + + # act + rel_dispersion_at_final_step = np.asarray( + output["products"]["r_std"][-1] + ) / np.asarray(output["products"]["r_act"][-1]) + + # assert + assert np.isclose( + np.log(rel_dispersion_at_final_step), + np.log( + { + "pristine": {25: 0.01, 100: 0.02, 400: 0.015}, + "polluted": {25: 0.09, 100: 0.03, 400: 0.015}, + }[aerosol][w_cm_per_s] + ), + rtol=RTOL, + atol=0, + ).all() diff --git a/tests/unit_tests/products/test_impl.py b/tests/unit_tests/products/test_impl.py index 8e5620442..4779e7e95 100644 --- a/tests/unit_tests/products/test_impl.py +++ b/tests/unit_tests/products/test_impl.py @@ -11,20 +11,27 @@ from PySDM.backends import CPU from PySDM.environments import Box from PySDM.products import ( + ActivatedMeanRadius, + ActivatedParticleConcentration, + ActivatedParticleSpecificConcentration, AqueousMassSpectrum, AqueousMoleFraction, + AreaStandardDeviation, DynamicWallTime, FlowVelocityComponent, FreezableSpecificConcentration, FrozenParticleConcentration, FrozenParticleSpecificConcentration, GaseousMoleFraction, + MeanVolumeRadius, NumberSizeSpectrum, ParticleSizeSpectrumPerMass, ParticleSizeSpectrumPerVolume, ParticleVolumeVersusRadiusLogarithmSpectrum, RadiusBinnedNumberAveragedTerminalVelocity, + RadiusStandardDeviation, TotalDryMassMixingRatio, + VolumeStandardDeviation, ) from PySDM.products.impl.product import Product from PySDM.products.impl.rate_product import RateProduct @@ -47,6 +54,19 @@ "count_activated": True, }, NumberSizeSpectrum: {"radius_bins_edges": (0, np.inf)}, + ActivatedMeanRadius: {"count_activated": True, "count_unactivated": False}, + ActivatedParticleConcentration: { + "count_activated": True, + "count_unactivated": False, + }, + ActivatedParticleSpecificConcentration: { + "count_activated": True, + "count_unactivated": False, + }, + MeanVolumeRadius: {"count_activated": True, "count_unactivated": False}, + RadiusStandardDeviation: {"count_activated": True, "count_unactivated": False}, + AreaStandardDeviation: {"count_activated": True, "count_unactivated": False}, + VolumeStandardDeviation: {"count_activated": True, "count_unactivated": False}, } diff --git a/tests/unit_tests/products/test_particle_size_product.py b/tests/unit_tests/products/test_particle_size_product.py new file mode 100644 index 000000000..4a659a557 --- /dev/null +++ b/tests/unit_tests/products/test_particle_size_product.py @@ -0,0 +1,130 @@ +# pylint: disable=missing-module-docstring,missing-class-docstring,missing-function-docstring + +import numpy as np +import pytest + +from PySDM import Builder, Formulae +from PySDM.environments import Box +from PySDM.physics import si +from PySDM.products import ( + ActivatedMeanRadius, + AreaStandardDeviation, + MeanVolumeRadius, + RadiusStandardDeviation, +) + +TRIVIA = Formulae().trivia +NAME = "tested product" +KAPPA = 1 +CELL_ID = 0 + + +def radius_std(r, n, mask): + n_tot = np.sum(np.where(mask, n, 0), axis=0) + r_act = np.where(mask, r, np.nan) + n_act = np.where(mask, n, np.nan) + std = ( + np.sqrt(np.cov(r_act[~np.isnan(r_act)], fweights=n_act[~np.isnan(n_act)])) + if n_tot > 1 + else 0 + ) + return std + + +def filtered_mean(attribute, multiplicity, mask): + n_dot_a = np.multiply(np.where(mask, multiplicity, 0), attribute) + n_tot = np.sum(np.where(mask, multiplicity, 0), axis=0) + mean = np.sum(n_dot_a, axis=0) / n_tot if n_tot > 0 else 0 + return mean + + +def r_vol_mean(r, n, mask): + volume = TRIVIA.volume(radius=r) + mean_volume = filtered_mean(volume, n, mask) + return TRIVIA.radius(volume=mean_volume) + + +def area_std(r, n, mask): + n_tot = np.sum(np.where(mask, n, 0), axis=0) + n_act = np.where(mask, n, np.nan) + r_sq = np.where(mask, np.multiply(r, r), np.nan) * 4 * np.pi + std = ( + np.sqrt(np.cov(r_sq[~np.isnan(r_sq)], fweights=n_act[~np.isnan(n_act)])) + if n_tot > 1 + else 0 + ) + return std + + +@pytest.mark.parametrize( + "r,n", + ( + ([1 * si.um], [1]), + ([1 * si.um, 10 * si.um], [1e3, 1e7]), + ([0.01 * si.um, 0.1 * si.um], [1e3, 1e7]), + ), +) +@pytest.mark.parametrize("count_unactivated", (True, False)) +@pytest.mark.parametrize("count_activated", (True, False)) +@pytest.mark.parametrize( + "product_class, validation_fun", + ( + (RadiusStandardDeviation, radius_std), + (ActivatedMeanRadius, filtered_mean), + (AreaStandardDeviation, area_std), + (MeanVolumeRadius, r_vol_mean), + ), +) +# pylint: disable=too-many-arguments +def test_particle_size_product( + backend_class, + r, + n, + count_unactivated, + count_activated, + product_class, + validation_fun, +): + # arrange + builder = Builder(n_sd=len(n), backend=backend_class(double_precision=True)) + volume = builder.formulae.trivia.volume(np.asarray(r)) + dry_volume = np.full_like(volume, (0.01 * si.um) ** 3) + + builder.set_environment(Box(dt=np.nan, dv=np.nan)) + builder.request_attribute("critical volume") + particulator = builder.build( + attributes={ + "multiplicity": np.asarray(n), + "volume": volume, + "dry volume": dry_volume, + "dry volume organic": np.full_like(r, 0), + "kappa times dry volume": KAPPA * dry_volume, + }, + products=( + product_class( + name=NAME, + count_activated=count_activated, + count_unactivated=count_unactivated, + ), + ), + ) + + particulator.environment["T"] = 300 * si.K + + crit_volume = particulator.attributes["critical volume"].to_ndarray() + if count_activated and not count_unactivated: + mask = volume > crit_volume + elif not count_activated and count_unactivated: + mask = volume < crit_volume + elif count_activated and count_unactivated: + mask = np.full_like(volume, True) + else: + mask = np.full_like(volume, False) + + expected = validation_fun(np.asarray(r), np.asarray(n), mask) + + # act + actual = particulator.products[NAME].get()[CELL_ID] + + # assert + np.testing.assert_almost_equal(actual, expected, decimal=10)