CARVIEW |
Select Language
HTTP/2 200
date: Wed, 30 Jul 2025 05:31:14 GMT
content-type: text/html; charset=utf-8
vary: X-PJAX, X-PJAX-Container, Turbo-Visit, Turbo-Frame, X-Requested-With,Accept-Encoding, Accept, X-Requested-With
x-robots-tag: none
etag: W/"548039248093a304d8f9130aff54c53f"
cache-control: max-age=0, private, must-revalidate
strict-transport-security: max-age=31536000; includeSubdomains; preload
x-frame-options: deny
x-content-type-options: nosniff
x-xss-protection: 0
referrer-policy: no-referrer-when-downgrade
content-security-policy: default-src 'none'; base-uri 'self'; child-src github.githubassets.com github.com/assets-cdn/worker/ github.com/assets/ gist.github.com/assets-cdn/worker/; connect-src 'self' uploads.github.com www.githubstatus.com collector.github.com raw.githubusercontent.com api.github.com github-cloud.s3.amazonaws.com github-production-repository-file-5c1aeb.s3.amazonaws.com github-production-upload-manifest-file-7fdce7.s3.amazonaws.com github-production-user-asset-6210df.s3.amazonaws.com *.rel.tunnels.api.visualstudio.com wss://*.rel.tunnels.api.visualstudio.com objects-origin.githubusercontent.com copilot-proxy.githubusercontent.com proxy.individual.githubcopilot.com proxy.business.githubcopilot.com proxy.enterprise.githubcopilot.com *.actions.githubusercontent.com wss://*.actions.githubusercontent.com productionresultssa0.blob.core.windows.net/ productionresultssa1.blob.core.windows.net/ productionresultssa2.blob.core.windows.net/ productionresultssa3.blob.core.windows.net/ productionresultssa4.blob.core.windows.net/ productionresultssa5.blob.core.windows.net/ productionresultssa6.blob.core.windows.net/ productionresultssa7.blob.core.windows.net/ productionresultssa8.blob.core.windows.net/ productionresultssa9.blob.core.windows.net/ productionresultssa10.blob.core.windows.net/ productionresultssa11.blob.core.windows.net/ productionresultssa12.blob.core.windows.net/ productionresultssa13.blob.core.windows.net/ productionresultssa14.blob.core.windows.net/ productionresultssa15.blob.core.windows.net/ productionresultssa16.blob.core.windows.net/ productionresultssa17.blob.core.windows.net/ productionresultssa18.blob.core.windows.net/ productionresultssa19.blob.core.windows.net/ github-production-repository-image-32fea6.s3.amazonaws.com github-production-release-asset-2e65be.s3.amazonaws.com insights.github.com wss://alive.github.com api.githubcopilot.com api.individual.githubcopilot.com api.business.githubcopilot.com api.enterprise.githubcopilot.com; font-src github.githubassets.com; form-action 'self' github.com gist.github.com copilot-workspace.githubnext.com objects-origin.githubusercontent.com; frame-ancestors 'none'; frame-src viewscreen.githubusercontent.com notebooks.githubusercontent.com; img-src 'self' data: blob: github.githubassets.com media.githubusercontent.com camo.githubusercontent.com identicons.github.com avatars.githubusercontent.com private-avatars.githubusercontent.com github-cloud.s3.amazonaws.com objects.githubusercontent.com release-assets.githubusercontent.com secured-user-images.githubusercontent.com/ user-images.githubusercontent.com/ private-user-images.githubusercontent.com opengraph.githubassets.com copilotprodattachments.blob.core.windows.net/github-production-copilot-attachments/ github-production-user-asset-6210df.s3.amazonaws.com customer-stories-feed.github.com spotlights-feed.github.com objects-origin.githubusercontent.com *.githubusercontent.com; manifest-src 'self'; media-src github.com user-images.githubusercontent.com/ secured-user-images.githubusercontent.com/ private-user-images.githubusercontent.com github-production-user-asset-6210df.s3.amazonaws.com gist.github.com; script-src github.githubassets.com; style-src 'unsafe-inline' github.githubassets.com; upgrade-insecure-requests; worker-src github.githubassets.com github.com/assets-cdn/worker/ github.com/assets/ gist.github.com/assets-cdn/worker/
server: github.com
content-encoding: gzip
accept-ranges: bytes
set-cookie: _gh_sess=3akqb8Sc9W1AlDnnI7gifwbZL7ont9F2jY08fKAu1xfhl%2B6rKkQNXnieRViRb6jpwoXftvziKTmQxNMpmJkhhKMMVFHLH4wfY6GqQtogY1SRrixavOWmoEuDFzYETkoSRO%2BVC36X%2FkJ503uAfsnDoR3mLQSC%2Br9N4SUr1OSbIKjAzJdGHIy42YBJcc389BB%2BKOIVHJSUmJ%2F5FSJN%2FZKdRN1uGXx8WkWFUfU98ZFxdkjPf1gGwLR65ZNz7QlHPSQChQnn0AbFjoZYoMgLO5H5%2Bw%3D%3D--ascA3UhPeKvEIPxD--UXJK3t4%2BAmk%2BTSDXozfAKg%3D%3D; Path=/; HttpOnly; Secure; SameSite=Lax
set-cookie: _octo=GH1.1.1687618744.1753853474; Path=/; Domain=github.com; Expires=Thu, 30 Jul 2026 05:31:14 GMT; Secure; SameSite=Lax
set-cookie: logged_in=no; Path=/; Domain=github.com; Expires=Thu, 30 Jul 2026 05:31:14 GMT; HttpOnly; Secure; SameSite=Lax
x-github-request-id: 8280:2A06CB:12ED88E:16FFFC7:6889AE22
Ideas for new features and examples · open-atmos/PySDM Wiki · GitHub
Skip to content
Navigation Menu
{{ message }}
-
Notifications
You must be signed in to change notification settings - Fork 47
Ideas for new features and examples
Sylwester Arabas edited this page May 5, 2025
·
77 revisions
Some of the ideas listed below are good candidates for individual or team projects or theses.
- mixing scenario indicator product (like the alpha parameter from Grabowski & Morrison)
- deliquescence + efflorescence
- cloud formation on adiabatic descent (Bohren 1986, JAS)
- radiative transfer (see Numba code here: https://doi.org/10.1016/j.cpc.2021.108198)
- cloud biology: https://acp.copernicus.org/articles/20/1777/2020/acp-20-1777-2020.html
- Ouzo (Ostwald ripening)
- ventilation coefficient in condensation
- turbulent kernels
- drop temperatures
- the initial water amount added to the system by r_wet_init - where and how to take into account/report
- diffusion kinetics as in eq. 9 G&T'21: https://acp.copernicus.org/articles/21/4059/2021/
- add checks for mass conservation in dry radius discretisation (if we are discretising number distribution, in the example (or even within initialisation logic) we should be able to impose a threshold on the acceptable level of incurred mass difference (between the one obtainable via moments of dry volume and the analytical value stemming from lognormal distribution parameters))
- Eulerian diffusion in kinematic_2d: through mu_coeff of PyMPDATA
- support for >0D (not aware of any major reason it should not work!)
- reproduce 2D setup simulations from J&P (but also Schmeller & Geresdi '19)
- @njit for all methods
- numba.prange where possible
- better than Explicit Euler in oxidation
- take Henry coefficients and other constants from chempy?
- GPU support
- transport options from Maxey & Corrsin
- sub-stepping issue described in appendix B of UWLCM paper: https://www.geosci-model-dev.net/12/2587/2019/#section9
- figures from "An elementary parcel model with explicit condensation and supersaturation" by Rogers (1975, https://doi.org/10.1080/00046973.1975.9648397)
- Fig 4a from Wang & Grabowski 2009 as parcel coalescence example (https://rmets.onlinelibrary.wiley.com/doi/epdf/10.1002/asl.210)
- comparison against Bott's algorithm solution: https://www2.meteo.uni-bonn.de/forschung/gruppen/tgwww/people/abott/fortran/fortran_english.html
- external vs. internal mixing (needs adding hygroscopicity as attribute), example e.g. from Arabas & Pawlowska 2011 (GMD)
- new Hoppel gap examples, see MoAC wiki
- the stat-phys & F-P papers - see MoAC wiki
- Unterstrasser box and column examples
- rock-paper-scissors :) https://arxiv.org/abs/1808.02386
- Jensen & Nugent example
- 2nd kinematic framework from Szumowski's paper
- 2d spectral turbulence kinematic example from Pinsky et al. 2008
- fog case
- parcel output on metpy plots (CAPE?)
- lognormal shape preservation under collisions
- CCNC instrument
- Venus clouds
- cloud seeding example
- spurious supersaturation
- sol-gel transition
- oil in water
- plankton
- human speech droplets: https://dx.doi.org/10.1111/ina.12737
- https://www.nature.com/articles/s41598-021-89346-6
- co-condensation: https://www.nature.com/articles/ngeo1809
- two-sd ripening test case
- n=0 energy conservation test for parcel
- unit test checking precipitation from other than lowest grid cell
- 32-bit multiplicity overflows (see xfail in Berry smoke test)
- tests for collision_deficit=0 with adaptivity=True (and !=0 for adaptivity=False) (i.e.,
min
would not be needed ing = min(int(gamma[i]), prop)
in compute_gamma_body() with adaptivity) - depict float/double difference case with a unit test (to check if fakeThrust is able to reproduce it) (this first need a big refactor around PrecisionResolver - currently switching the precision requires modifying source code!)
- include a sample reference netCDF file in the repo and check if its contents match the data generated within CI (what about including Wall and CPU times?)
- unit test for presence of zero-filling loop in sum_pair and alike (case of odd number of sd and single-sd in adjecent cells)
- test with coal_dt_range=[dt, dt] and fixed seed -> should be same behaviour as adaptive=False
- around super().sync()/self.notify() magic in moist environments
- common base class for kinematic envs
- phase out precision resolver (precision field for Formulae?) + usage also for constants
- unify ParticlesSizeSpectrum and ParticlesVolumeSpectrum products
- combine fuse logic with dt_range in make_adapt_substeps(), i.e. set n_substeps_max = ... (fuse) instead of raising NotImplementedError()
- remove length from backend methods (len(idx) enough)
- remove all explicit types from C++ code in Thrust backend (decltype + auto should be enough)
- something cleaner than: particulator.attributes.attributes[...].mark_updated()
- create a base class for all *Methods backend.impl classes to fix self.formulae initialisation
- shouldn't Pint be a test-time dependency only?
- sort out double si units in examples (one fake, one real)
- do recalculate_cell_id & recalculate TpRH from within attributes
- employ MergeShuffle for parallel permutations (https://github.com/axel-bacher/mergeshuffle)
- lookup tables for speeding up physics
- moments, moments, moments
- use atomicAdd in Numba flag_precipitated
- introduce times_max? (one loop less on GPU)
- padding of arrays for ThrustRTC: idx size and relative storages sizes should be a multiple of 32 to ensure that all data of 1 super-droplets are in one GPU memory bank to avoid serialization
- rethink if gamma vector should not be of integer type
- gradually decrease the amount of shuffled numbers during adaptive coalescence substeps
- parallel random shuffling on CPU (np.random.rand() within numba.prange), hint: https://github.com/numba/numba/issues/2486#issuecomment-320089562
- one loop instead of two in coalescence normalize (without the need to use temporary memory for norm_factor)
- Amazon SageMaker badges?
- create pytest plugin for checking TODO annotations (currently almost the same code is in four repos: PySDM, PySDM-examples, PyMPDATA, PyMPDATA-examples); also obsolete dependency on ghapi; technical hints could be taken from https://github.com/nschloe/pytest-codeblocks
- serialization of Particles to enable simulation restarts
- logging layer (https://docs.python.org/3/library/logging.html)
- PM10, PM2.5 products
- mass-doubling spectral discretisation
- new GPU backend using CuPy (https://cupy.dev/)
- kernel density estimate for spectrum (sec. 5.1.4 in Shima et al. '09)
- 16-bit floating point option?
- common logic for cell-wise "foreach"
- ThrustRTC.n_threads: https://gist.github.com/f0k/63a664160d016a491b2cbea15913d549
- enhance out-of-the box settings in Paraview (netCDF output)
- kernel plots
- droplets in space with vtk-js: https://kitware.github.io/vtk-js/examples/
- more controls in kinematic 2D GUI: spin-up, random seed, terminal velocity choice, kernel choice, backend choice, aerosol spectrum parameters, parallelisation controls, products, initialisation controls (constant multiplicity, ...)
- pytest-parallel: https://pypi.org/project/pytest-parallel/
- GPU-enabled runs: https://github.com/jfpanisset/cloud_gpu_build_agent
- parallel=False run on Github Actions
- mypy within CI script
- use pytest-check-links on GA for checking links in README and notebooks: https://github.com/jupyterlab/pytest-check-links
- assertions for execution times (e.g. for testing numba version bumps)
- conda package
Extra hints for Python developers are here.
Clone this wiki locally
You can’t perform that action at this time.