Roadmap
[v0.6.0] - coming soon
Features
-
PlanarMeshfile I/O- save and load
PlanarMeshobjects to/from file - convert
svgfiles to meshes
- save and load
- new system for defining
Edgeobjects- curve type: line
- curve type: spline
- curve type: quadratic Bézier
- curve type: cubic Bézier
- curve type: symbolic (using
sympy)
-
Solverimprovments- option to select preconditioner
- option to select verbosity level/depth
- construct global function space if none provided
Examples
- Example 3.1: Finding eigenmodes
Documentation
- update examples and tutorials to reflect new edge system
- tutorials
- 2: Local function spaces
- 2.1: Polynomials
- 2.3: Local Poisson functions
- 2.4: Local Poisson spaces
- 3: Finite elements
- 3.1 Global function spaces (simpler version of Example 2.1)
- 3.2 Global boundary conditions
- 4: Advanced topics
- 4.1 Nystrom solvers
- 2: Local function spaces
Maintenance
-
GlobalFunctionSpaceimprovements:- compute
EdgeSpaceobjects only on reference edges - compute quantities of interest only on reference cells
- compute
-
PlanarMeshimprovements:- deprecate mesh builder functions in favor of file I/O system
- automatic identification of repeated edges
- automatic identification of repeated cells in a mesh (up to scaling and rigid motion)
- refactor
Quad:- should be named
Quadraturewith sensible names for attributes - use
Quadratureclass to store all three types of quadrature rules - deprecate
QuadDictclass andget_quad_dict()function - the casual user should not need to touch
Quadratureobjects directly
- should be named
-
MeshPlotimprovements:- change: initialize with either a list of
Edgeobjects, aMeshCell, or aPlanarMesh - add: plot interior points with
draw_interior_points()method - add: plot interior point triangulation with
draw_interior_triangulation()method
- change: initialize with either a list of
-
LocalFunctionPlotimprovements:- add: 'skeleton' option to
draw()method, which plots only values on the edges
- add: 'skeleton' option to
Project Management
- add
sympyto dependencies
Other Planned Features and Improvements
Features
- global boundary conditions
- define trace of a global function with
DirichletTraceclass - mixed Dirichlet/Neumann boundary conditions
- nonhomogeneous boundary conditions
- define trace of a global function with
- a posteriori error estimation
-
BilinearFormimprovements- piecewise constant coefficients, load function
- advection terms
- diffusion terms
- \(p\)-refinement: different polynomial degree on different cells/edges
- \(h\)-refinement: algorithm to split cells
Examples
- "subdivision refinement"
- eigenvalue problem
Documentation
- add: mathematical background
Maintenance
- fix disabled pylint messages
-
Polynomialimprovements:- allow for
Floatlikeoutput fromeval()method - use sets instead of lists of
Monomialobjects inPolynomialclass - deprecate
barycentric_products()function - allow
barycentric_coordinates()to accept a list ofVertobjects - use binary exponentiation algorithm for
Polynomial.pow() - weighted normal derivative of
Polynomialobjects in separate module
- allow for
-
Monomialimprovements:- replace
eval()method with__call__()method - allow for
Floatlikeoutput fromeval()method - deprecate
is_zero()method
- replace
-
MultiIndeximprovements:- use
Tupleinstead ofListto set multi-index
- use
-
PlanarMeshimprovements- set vertex and edge indices automatically
- rename vertex and edge indices to something more descriptive (global mesh properties, not local to a cell)
- use
setinstead oflistfor vertex and cell indices class
-
MeshCellimprovements- optimize computation of interior points and triangulation
Project Management
- add:
.github/workflows/directory for CI/CD- add:
format.ymlfor formatting withblackandisort - add:
lint.ymlfor linting withpylintandmypy - add:
test.ymlfor running tests withpytest - add:
doc.ymlfor building documentation withmkdocs
- add:
-
githooks- add:
pre-commithook for formatting-
isort -
black
-
- add:
pre-pushhook for linting and testing-
pylint -
mypy -
pydocstyle -
pytest
-
- add:
- update
CONTRIBUTING.mdwith how to usegithooks and CI/CD
Known bugs
-
Polynomialnot recognized as a callable map when passed tois_Func_R2_R() - case with
xy2 < TOLnear corners on distinct edges in double layer operator can result innanentries for large values of the discretization parametern -
DirichletTracedoes not recompute traces when function changes
Tentative Features
Features
- \(H\)(div)-conforming spaces
- \(H\)(curl)-conforming spaces
- surface elements
- 3D elements
Examples
- time-dependent problems
- nonlinear problems
- Stokes flow
- Maxwell's equations
- shape optimization
Maintenance
- automatic identification of cells (user does not need to specify cell indices when creating an
Edgeobject) - allow sampling parameter
nto have different values for different edges - type validation with
pydantic - add logging with
loggingmodule - modify
LocalFunctionSpaceto treat a split edge as a single edge - add batch processing for multiple
LocalFunctions - use multiprocessing to speed up computation