arijitlaik / underworld3

Home Page:https://underworldcode.github.io/underworld3/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

underworld3

Documentation

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.

The development branch has similar documentation:

Building

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.

Development milestones

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

Repository milestones

  • 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

Checklist

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)

[O1 O2] Output

  • HDF5 -> XDMF -> Paraview
  • pyvista (serial)
  • LavaVu (or pyvista parallel workflow)

[V] Exact solutions

Tasks

  • 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.

About

https://underworldcode.github.io/underworld3/


Languages

Language:Python 45.7%Language:Jupyter Notebook 36.2%Language:Cython 10.8%Language:C++ 3.7%Language:CSS 1.1%Language:C 1.0%Language:TeX 0.8%Language:GLSL 0.3%Language:JavaScript 0.1%Language:Shell 0.1%Language:Groovy 0.1%Language:Dockerfile 0.0%