Releases: kinnala/scikit-fem
10.0.2
10.0.1
10.0.0
- Fixed:
Mesh.p2e
returned incorrect incidence - Fixed:
InteriorFacetBasis.get_dofs
did not return all edge DOFs for 3D elements - Added: The lowest order, one point integration rule for tetrahedral elements
- Added:
asm
will now wrap functions with three arguments usingBilinearForm
,
functions with two arguments usingLinearForm
, etc. - Changed: Initializing
Basis
forElementTetP0
without specifying
intorder
orquadrature
will now automatically fall back to a one
point integration rule - Changed: Default tags (left, right, top, ...) are no more
added automatically during mesh initialization, as a workaround you
can add them explicitly by callingmesh = mesh.with_defaults()
- Changed: All indices within the library are now using
np.int32
for
around 10% boost in performance and the corresponding reduction in
memory usage for larger meshes - theoretically, the largest possible
tetrahedral tensor product mesh is now roughly 550 ** 3 = 166 M vertices
and 993 M elements, without the facet indexing wrapping over 2 ** 32
9.1.1
Fixed: Tests now pass with numpy==2.0rc1
Fixed: MappingAffine now uses lazy evaluation also for element mappings, in addition to boundary mappings
Fixed: MeshTet.init_tensor uses significantly less memory for large meshes
Fixed: Mesh.load uses less memory when loading and matching tags
Added: Basis has new optional disable_doflocs kwarg which can be set to True to avoid computing Basis.doflocs, to reduce memory usage
9.0.1
9.0.0
Removed: Python 3.7 support
Removed: MappingMortar and MortarFacetBasis in favor of skfem.supermeshing
Deprecated: skfem.visuals.glvis; current version is broken and no replacement is being planned
Added: Python 3.12 support
Added: Mesh.load supports new keyword arguments ignore_orientation=True and ignore_interior_facets=True which will both speed up the loading of larger three-dimensional meshes by ignoring facet orientation and all tags not on the boundary, respectively.
Added: skfem.supermeshing (requires shapely>=2) for creating quadrature rules for interpolating between two 1D or 2D meshes.
Added: Mesh.remove_unused_nodes
Added: Mesh.remove_duplicate_nodes
Added: Mesh.remove_elements now supports passing any subdomain reference through Mesh.normalize_elements; subdomains and boundaries are also properly preserved
Fixed: MeshTet uniform refine was reindexing subdomains incorrectly
Fixed: MeshDG.draw did not work; now calls Basis.draw which works for any mesh topology
Fixed: FacetBasis now works with MeshTri2, MeshQuad2, MeshTet2 and MeshHex2
Fixed: ElementGlobal now uses outward normals to initialize DOFs on boundary facets
8.1.0
Added: ElementTriHHJ0 and ElementTriHHJ1 matrix finite elements for implementing the Hellan-Hermann-Johnson mixed method (see ex48.py)
Added: ElementHexSkeleton0, piecewise constant element on the skeleton of a hexahedral mesh
Added: ElementHexC1, C1-continuous hexahedral element
Added: Mesh.restrict now preserves subdomains and boundaries
Added: skfem.utils.mpc for setting multipoint constraints
Added: Basis.get_dofs now supports fetching DOFs at specific nodes through kwarg nodes
Added: DofsView.sort for sorting a set of DOFs returned by Basis.get_dofs
Added: CellBasis.with_elements as a shortcut for initiating a new Basis with subset of elements
Added: Mesh.refined now preserves subdomains in adaptive mesh refinement
Fixed: Mesh.refined used to modify the element connectivity of the original mesh