Added
- Add plot- and screenshot-methods to `Region` and `Scheme` (base class for quadratures).
- Add `item = FormItem(bilinearform, linearform=None)` to be used as an item in a `Step(items=[item])`.
- Add a new method `Boundary.apply_mask(mask)`. This simplifies re-definitions of boundary conditions with a custom `mask`.
- Add support for two-dimensional dof-based masks in `Boundary(mask)` with `mask.shape` of `(mesh.npoints, field.dim)` in addition to point-based masks with `mask.size` of `mesh.npoints`.
- Add a bubble-multiplier argument for `RegionTriangleMINI(mesh, bubble_multiplier=0.1)` and `RegionTetraMINI(mesh, bubble_multiplier=0.1)`.
- Add `region.reload(mesh, element, quadrature)` to re-evaluate a region, already linked to a field, with a modified mesh or element class or quadrature.
Changed
- Refactor the assembly-submodule. Move the weak-form expression-related classes to the `assembly.expression` submodule.
- Move `Basis` to the new `assembly.expression` submodule.
- Make the `field`-submodule public.
- Always `import felupe as fem` in docs and tests.
- Change default optional (keyword) arguments of a weak-form expression decorator from `Form(args=(), kwargs={})` to `Form(args=None, kwargs=None)`.
- Change default value of the skip-argument `Boundary(skip=None)`. This will be set to `(False, False, False)` during initialization if `mask=None`.
- Change the default bubble-multiplier in `RegionTriangleMINI` and `RegionTetraMINI` from 1.0 to 0.1. This affects only the template regions and not the element formulations `TriangleMINI` and `TetraMINI`, which still default to a bubble-multiplier of 1.0.
- Pass optional keyword-arguments to `math.einsum(**kwargs)`. This enables support for the `out`-argument.
- Don't broadcast `math.identity()`.
- Rename `quadrature/_base.py` to `quadrature/_scheme.py`.
Fixed
- Fix `Boundary` and subsequently also `dof.symmetry()` for different dimensions of the mesh and the field.
- Fix negative cell-volumes error in `RegionTriangleMINI` for meshes like `Rectangle(n=11).triangulate().add_midpoints_faces()` by scaling down the (arbitrary) bubble-multiplier from 1.0 to 0.1.
Removed
- Don't import `Basis` to the global namespace (not necessary as it is used only internally by the weak-`Form` expression decorator).
- Remove unused internal assemble-methods from `assembly.expression._linear.LinearForm` and `assembly.expression._bilinear.BilinearForm`.
- Remove extra-index-url `https://wheels.vtk.org` as they are now available on PyPI for Python 3.12.