The underworld documentation is in two parts: the user manual / theory manual is a jupyterbook that is built from this repository automatically from the sources in the Jupyterbook
directory. The api documentation is also autogenerated.
- https://underworldcode.github.io/underworld3/main/FrontPage.html
- https://underworldcode.github.io/underworld3/main_api/index.html
The development branch has similar documentation:
- https://underworldcode.github.io/underworld3/development/FrontPage.html
- https://underworldcode.github.io/underworld3/development_api/index.html
Refer to the Dockerfile for uw3 build instructions.
For development, building inplace will prob be preferable. Remove
any existing installations using clean.sh
then run
python3 setup.py develop
The in-place pip
installation may be helpful for developers (after the above)
pip install -e .
For in place usage, you will usually need to set an appropriate PYTHONPATH.
Reproduce the existing UW2 examples and extend to spherical / cylindrical
- Spherical stokes
- Buoyancy driven stokes (various geometries)
- Compositional Buoyancy (Rayleigh-Taylor) level set
- Compositional Buoyancy (Rayleigh-Taylor) via swarms (benchmark)
- Advection/diffusion (slcn)
- Advection/diffusion (swarm)
- Constant viscosity convection
- Convection, strongly temp-dep viscosity (stagnant lid)
- Non-linear viscosity convection
- Quantitative Convection benchmarks (various geometries)
- Viscoelasticity (linear) benchmarks
- Inertial terms (Navier-Stokes benchmarks)
- Anisotropic viscosity
- pip install
- conda install
- auto-formatting (e.g. black)
- pytest setup
- pytest full-coverage
- pytest on commit / PR
- api docs (pdoc3)
- jupyterbook docs (autobuild / publish)
- JOSS compatibility:
- LICENCE
- citation txt
- PR / Commit templates
- Policies
Ingredients in achieving the above
[T] Topology & Meshing
- spherical, annulus
- Cartesian
- Different element types (at least Linear / Quadratic & Hex, Tet)
- Sandbox-style deforming mesh
- Sandbox-style deforming mesh with particles
- Remeshing examples / adaptivity
- Earth topography / plate boundary adapted mesh
[D] Disc
- Cont Galerkin
-
Disc Galerkin - Semi-lagrangian
- Free-slip BC on surface
- Penalty - Needs improved interface for users)
[P] Physics
- Stokes-Boussinesq
- Temp-dep rheology
- Buoyancy driven convection
- Non-linear viscosity / yielding
- Viscoelasticity
- Navier-Stokes / interial terms
- Energy equation, resolve bdry layers
- [ ]
-
kermit the 🐸
[S] Solvers
- SNES - generic vector / scalar
- Block Stokes solvers
- Semi-lagrangian
- Swarm-projected history terms
- Projection solvers for function (sympy / variables) evaluation
-
TS(address this later)
PIC for composition
- Viscosity, buoyancy, ...
- Nearest neighbour (k-d tree ? 🌳 )
-
2D - L2 projection into FEM space (Petsc shall provide) -
3D - L2 projection into FEM space (Petsc shall provide but not in 3D) - Petsc Integrals
- uw.function evaluate (for Sympy functions)
- HDF5 -> XDMF -> Paraview
- pyvista (serial)
- LavaVu (or pyvista parallel workflow)
[V] Exact solutions
- MMS
- Analytical
- Solver options - robust for viscosity contrasts, customisable and quick.
- Investigate generalising context managers
-
Proper quadratic mesh interpolations for deformed meshes. - DMLabels for higher order meshes, ie. using a label to set values in a Vec. How do you label mid-points?
- Further integrals/reduction operators on fields variables.
- nKK nanoflann exposure.
- create developer docs for software stack and general development strategy.