Test
- Geometrical multigrid (necessary changes to DM setup)
- Rewrite the constitutive model to understand the concept of materials
- function.evalf is the rbf equivalent to function.evaluate it is fast but approximate
- Swarm reading using kd-tree to speed up locations
- Swarm cycling now reverts to positions defined on the mesh and uses randomness to avoid unexpected jamming of particles in stagnant regions
- viscoplasticity seems to be doing the right thing
- Use dmplex / dm adaptor to refine meshes
- use kd-tree to find points across a partitioned mesh
- use local kd-tree distances for fast, local rbf interpolants (approximate)
- swarm cycling version of pop control
- integrals are working ok
-
10000 core runs / timings
- swarm checkpointing
- mesh checkpointing
- read back from mesh using kd-tree in order to provide flexible reading across different decompositions / mesh resolutions
- Um
- Added our own kdtree functionality.
- Added a mesh-variable proxy for swarm variables. This variable is automatically kept in sync with the swarm variable. Currently we use the SciPy kdtree methods to map from swarm variables to mesh variable nodes.
- Added the
Stateful
mixin which helps to keep track of the state of objects.
- Added
MeshVariable.coord
attribute. Mesh variables now record their vertex coordinates array directly. - Added
parse_cmd_line_options()
routine which ingests PETSc command line options.
- Addition of
underworld3.maths.Integral
class for calculating integrals via PETSc & UW3 JIT method. - Rearrangement of UW3 classes to closer align with UW2.
- Addition of Rayleigh-Taylor model.
- Big rework of PETSc API usage. Now all systems create their own private solve PETSc variables, and all user facing variables (as encapsulated by the MeshVariable class) are effectively Aux variables.
- Systems retain public versions of their solution variables (stokes.u, stokes.p, poisson.u). These are copies of the actual solution variables (which are private).
- All variable read access must be done within
the
mesh.access()
context manager. Write access is achieved by supplying a list of writeable variables (mesh.access(stokes.u)
). Let's have a play with this and see if it feels like the way forward. It is a bit cumbersome for read access. - Stokes velocity variable is now a vector instead of being a flat array.
- Swarm variable
project_from()
function. Not sure if we'll retain this one, but it's there for now. It uses a least squares approach. - Documention updates.
- Introduced Python3 annotated parameters for testing.
- Model updates for interface changes.
- Update lavavu/plot prototype for swarm.
- Init commit of RT example. WIP. Need to fix fix interpolation routines which currently take 20x the solve time.
- Updates for dockerfile and setup.py.
- Added
CHANGES.md
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
Outcomes of Dec 22 Canberra Catch up
- Better constraint interface
- Small technical document on penalty constraint applications, ellipse geometry !!!
- UW2 examples reproduction.
- Mesh Variable constraints based on masks, using labels to apply penalty constraints.
- requires label generation to use constraints.
- work out timing model and create user guide
[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.