-
Notifications
You must be signed in to change notification settings - Fork 17
Ideas for new features and examples
Some of the ideas listed below are good candidates for individual or team projects or theses.
- G factor handling for laplacian
- Fully third order option from Maciek Waruszewski's PhD/paper: http://dx.doi.org/10.1016/j.jcp.2018.01.005
- Parallelisation using ga4py: https://github.com/GlobalArrays/ga4py
- Parallelisation using numba-mpi: https://github.com/atmos-cloud-sim-uj/numba-mpi
- Kahan summation
- handle multiple fields within PyMPDATA?
- generalise domain span (to start at fractional or integer index location):
(libmpdata++ does it differently (physical space starts at i=1/2, i.e. scalars at boundary) than PyMPDATA (physical space starts at i=0, i.e. vectors at boundary). Here is feedback on the issue from @mwarusz (my wording as translating from Polish):
-
The main (if not the only) difference is in the boundary conditions. For instance, with rigid wall boundary in 1D:
-
in the case of scalars at the boundary, right edge formulae read:
u_N = 0 F_{N+1/2} = -F_{N-1/2} => F_N ~ (F_{N+1/2} + F_{N-1/2}) / 2 = 0
where u is the velocity component (scalar) and F is the flux (vector) -
in the case when the fluxes are at the boundary, the formulae read:
u_{N+1/2} = -u_{N-1/2} => u_N ~ (u_{N+1/2} + u_{N-1/2}) / 2 = 0 F_N = 0
To sum up, the difference lies in what do we want to treat analytically in the formulation of boundary conditions, and what to approximate numerically.
Noteworthy, when using grid-based numerical approximations, we may and up with different formulations, e.g., extrapolation
u_N ~ (3 * u_{N-1/2} - u{N-3/2}) / 2)
may not fulfill the approximated boundary condition logic.Both formulations are valid, there seem not to be a simple reason to say one is better than the other. Would be great to find some discussion of the differences in literature, and implement both options in PyMPDATA!
-
-
- LLVM profiling
- benchmark arakawa_c fields against fortran, blitz++, eigen, ...
- automated test on travis comparing with libmpdata++ (and/or microHH)
- min/max searches within FCT could be coalesced
- test ensuring that apply traversals are done in correct dimension order
- common base class for VectorField and ScalarField with common code
- move axpy to formulae
- njit_flags also in indexers?
- Bott's two-step stochastic coalescence scheme using MPDATA for the second step: https://www2.meteo.uni-bonn.de/forschung/gruppen/tgwww/people/abott/publications/1998/cofm.html
- reproduce Hasselmann's Monte-Carlo & analytical solutions to the Fokker-Planck equation for a general stochastic climate model
- biology: https://link.springer.com/chapter/10.1007/3-540-27907-5_11
- droplet population evaporation (as for condensation in Olesik et al.)
- example with an error norm involving G factr (see comment in Olesik et al.)
- isopycnic, flow over a hill:
- Fig 9 in Schär & Smolarkiewicz 1996)
- Fig 16 in Szmelter & Smolarkiewicz 2010
- revolving sphere in 3D:
- Smolarkiewicz and Szmelter 2005
- section 3.7 in Jaruga et al. 2015
- pedestrian dynamics
- Black-Scholes with 3rd order option
- example from "Blending Brownian motion and heat equation" by Emiliano Cristiani
- four-dimensional advection-diffusion problem: https://doi.org/10.21314/JCF.2015.293
- sand dunes: http://dx.doi.org/10.1002/fld.1138
- bulk cloud microphysics example
- Arabas et al. 2014 example: http://dx.doi.org/10.3233/SPR-140379
- HJB? (Merton's portfolio?)
- aquaplanet? (https://github.com/ExeClim/Isca/tree/master/exp/test_cases)
- test case from https://gmd.copernicus.org/preprints/gmd-2020-304/gmd-2020-304.pdf
- diffusion in soil (see comment in Arabas & Farhat)
- finance: Asian options
- finance: volatility eq.
- shallow water on a sphere
- Gaussian grid on a sphere
- semi-Lagrangian
- MHD hello world
- von Karman streak
- TGV
- diffusion-only example employing analytic solution (e.g. eq. (31) from Smolarkiewicz and Clark 1986 (and eq. 30 in Smolarkiewicz, P. K., & Szmelter, J. 2005))
- threads vs. MPI, weak/trong scaling analysis
- MPI tests on Raspberry Pi cluster
- PyPI package
- conda package
- timing test for compilation (so that if new version of, let's say, numba makes compilation much longer an assert fails)
- as in PySDM wiki: https://github.com/atmos-cloud-sim-uj/PySDM/wiki/Ideas-for-new-features-and-examples#new-ci-features