Felupe

Latest version: v9.2.0

Safety actively analyzes 723177 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 4 of 12

7.17.0

Added
- Add a mesh for a single vertex point `vertex = Point(a=0)`.
- Add expansion of a vertex point to a line mesh `vertex.expand(n=11, z=1)`.
- Add revolution of a vertex point to a line mesh `vertex.revolve(n=11, phi=180)`.

Changed
- Assume that no state variables are used in an `umat` if it has no attribute `umat.x`. Set the shape of the state variables by default to `(0, q, c)` in `SolidBody` and `SolidBodyNearlyIncompressible`.

Fixed
- Automatically add additional points in `mesh.dual()` if necessary.

7.16.0

Added
- Add `MeshContainer.plot()`, `img = MeshContainer.screenshot()` and `ax = MeshContainer.imshow()`. The default list of colors contains PyVista's default color as first item and then the list of matplotlib's named colors *C1*, *C2*, etc (excluding *C0*).
- Add `Mesh.merge_duplicate_points(decimals=None)` and make `Mesh.sweep(decimals=None)` an alias of it.
- Add `Mesh.merge_duplicate_cells()`.

Fixed
- Fix `Mesh.imshow(ax=None)`, `FieldContainer.imshow(ax=None)` and `SolidBody.imshow(ax=None)` from v7.15.

7.15.0

Added
- Add optional ax-arguments to `Mesh.imshow(ax=None)`, `FieldContainer.imshow(ax=None)` and `SolidBody.imshow(ax=None)`.

7.14.0

Added
- Add optional output location for `FieldContainer.extract(out=None)`.
- Add `Mesh.update(callback=None)`. This is especially useful if the points array of a mesh is changed and an already existing instance of a region has to be reloaded: `Mesh.update(points=new_points, callback=region.reload)`.
- Add `ax = FieldContainer.imshow()` which acts as a wrapper on top of the `img = FieldContainer.screenshot(filename=None)` method. The image data is passed to a matplotlib figure and the `ax` object is returned.
- Add `ax = Mesh.imshow()` which acts as a wrapper on top of the `img = Mesh.screenshot(filename=None)` method. The image data is passed to a matplotlib figure and the `ax` object is returned.
- Add view-methods for `SolidBody` and `SolidBodyNearlyIncompressible` (same as already implemented for mesh and fields).
- Add lists with norms of values and norms of the objective function in `tools.NewtonResult(xnorms=None, fnorms=None)`.
- Add lists of norms of the objective function as attribute to `Job.fnorms`.
- Add new method to `Mesh` for getting point ids next to a given point coordinate `Mesh.get_point_ids(value)`.
- Add new method to `Mesh` for getting cells attached to a given point coordinate `Mesh.get_cell_ids(point_ids)`.
- Add new method to `Mesh` for getting neighbour cells `Mesh.get_cell_ids_neighbours(cell_ids)`.
- Add new method to `Mesh` for getting shared points between neighbour cells `Mesh.get_point_ids_shared(cell_ids_neighbours)`.
- Add new method to `Mesh` for getting points on regular grids which are located at corners `Mesh.get_point_ids_corners()`.
- Add new method to `Mesh` for modifying the cell connectivity at corners `Mesh.modify_corners(point_ids=None)`, supported for regular quad and hexahedron meshes.

Changed
- Pass optional keyword-arguments in `math.dot(**kwargs)` to the underlying einsum-calls.
- Enhance the performance of `math.cdya()` by reducing the number of (intermediate) arrays to be created from 4 to 2.
- Use fixed output locations for the extracted field-gradients and the integrated stiffness matrices in `SolidBody` and `SolidBodyNearlyIncompressible`. This enhances the performance.
- Change default filename in `Mesh.screenshot()` from `filename="field.png"` to `filename="mesh.png"`.
- Change the return value on job-evaluation from `None = Job.evaluate()` to `job = Job.evaluate()`.
- Change implementation of `LinearElasticLargeStrain` from `NeoHooke` to `NeoHookeCompressible`.
- Do not invoke `pyvista.start_xvfb()` on a posix-os. If required, run it manually.
- Rename `tools._newton.Result` to `tools._newton.NewtonResult` and add it to the public API as `tools.NewtonResult` because this class is returned as a result of Newton's method.
- Rename the `r`-arguments of `tools.force()` and `tools.moment()` to `forces`.
- Rename the `point`-argument of `tools.moment()` to `centerpoint`.
- Rename the `r`-argument in `tools.save()` to `forces`. Remove the unused argument `converged`.
- Change the default file-extension from `.vtk` to `.vtu` in `tools.save(filename="result.vtu")`.
- Change the default values of the gravity vector to zeros if ``gravity=None`` in `SolidBodyGravity(field, gravity=None, density=1.0)`.

Fixed
- Fix `tools.moment()`. Use `math.cross()`. The old implementation was completely wrong!

7.13.0

Added
- Add `NeoHookeCompressible` for compressible hyperelastic materials or even as a fast alternative for `NeoHooke` when used in `SolidBodyIncompressible`.

Changed
- Vectorize `mesh.expand()` which enhances the performance of quad/hex mesh-generators like `Rectangle()` and `Cube()`.

Fixed
- Fix logarithmic strain tensor evaluation in `Job.evaluate(filename="result.xdmf")` and in `field.plot("Logarithmic Strain", component=0)`.

7.12.0

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.

Page 4 of 12

© 2025 Safety CLI Cybersecurity Inc. All Rights Reserved.