Skip to content

v8.0.0

Compare
Choose a tag to compare
@adtzlr adtzlr released this 18 Mar 20:53
· 757 commits to main since this release

[8.0.0] - 2024-03-18

Added

  • Add axis of expansion in mesh.expand(axis=-1) (ignored for n=1).
  • Add an optional mask-argument to select points for rotation in mesh.rotate(mask=None).
  • Add Lagrange quad/hex cell-types in ViewMesh.
  • Add optional projection of stresses from quadrature-points to mesh.points in SolidBody.plot(project=None), where project has to be a callable like project(values, region).
  • Add optional projection of internel cell-data (Displacement, Logarithmic Strain and Deformation Gradient) from quadrature-points to mesh-points in FieldContainer.plot(project=None), where project has to be a callable like project(values, region).

Changed

  • The internal BasisField.basis is now a subclassed array BasisArray with a grad-attribute.
  • math.grad(x, **kwargs) is enhanced to return gradients of fields (like before) and the gradient-attribute of basis-arrays (added).
  • The grad_v and grad_u arguments are removed from the form-expression decorator Form. This changes the required function signature of the weakform-callable to weakform(v, u, **kwargs). The tuple of optional arguments is also removed. Gradients of v and u are now obtained by math.grad(v) or v.grad.
  • Enforce quadrature schemes with minimal order for projections in project() for Triangle, Tetra as well as their MINI- and Quadratic-variants.
  • Fall-back to extrapolate(mean=True) in project(mean=True).
  • Don't ravel the results of res = extrapolate(values, region), i.e. values.shape = (3, 3, 4, 100) will be returned as res.shape = (121, 3, 3) instead of res.shape = (121, 9).
  • Stack only a selection of meshes in MeshContainer.stack([idx]).
  • Enable list-based indexing in MeshContainer[idx].
  • Add the opacity=0.99 argument to MeshContainer.plot() and MeshContainer.screenshot().
  • Pass the dpi-argument to the matplotlib figure in imshow(dpi=None) for solids, field- and mesh-containers.
  • Permute GaussLegendre(order=2, dim=2) according to the points of the BiQuadraticQuad element by default.
  • Permute the 2- and 3-dimensional GaussLegendre quadrature schemes for order > 2 according to the VTK-Lagrange element formulations. That means for linear and quadratic quads and hexahedrons, the points of GaussLegendre are sorted according to the default VTK elements and for all higher-order elements according to the Lagrange-elements.
  • Enable default point-permutations in RegionLagrange(permute=True) by default.
  • Hide internal edges of higher-order cell-types in ViewScene.plot() by default.
  • Simplify tools.topoints(values, region, average=True, mean=False). Remove all other arguments. If values of single quadrature-point per cells is given, then the values are broadcasted to the number of points-per-cell. If values are provided on more quadrature points than the number of points-per-cell, then the values are trimmed. E.g., this is required for QuadraticHexahedron with 20 points and 27 quadrature-points.

Fixed

  • Fix mesh-expansion with one layer mesh.expand(n=1). This expands the dimension of the points-array.
  • Fix VTK-compatible cells in CubeArbitraryOrderHexahedron.
  • Fix Cauchy-stress evaluation of SolidBody and SolidBodyNearlyIncompressible on a 2d-Field (plane stress): Automatic fall-back to Kirchhoff-stress and print a warning.

Removed

  • Remove the deprecated old-style argument move in dof.biaxial().
  • Remove the deprecated old-style arguments move, axis_compression, axis_shear and compression in dof.shear().

What's Changed

  • Simplify Form: Remove required grad_v and grad_u args and obtain the gradient by v.grad or grad(v) by @adtzlr in #688
  • Remove deprecated arguments in dof.biaxial() and dof.shear() by @adtzlr in #689
  • Fall-back to tools.extrapolate(mean=True) for project(mean=True) by @adtzlr in #691
  • Fix single-layer mesh.expand(n=1) and add axis of expansion mesh.expand(axis=-1) by @adtzlr in #697
  • Enhance imshow()-methods of solid, field and mesh by @adtzlr in #699
  • Add optional mask in mesh.rotate(mask=None) by @adtzlr in #700
  • Make ArbitraryOrderLagrangeElement VTK-compatible by @adtzlr in #702
  • Enhance Scene.plot(): Hide internal edges of quadratic celltypes by @adtzlr in #705
  • Add optional projection of stresses in SolidBody.plot(project=None) by @adtzlr in #707
  • Add FieldContainer.plot(project=None) by @adtzlr in #710
  • Simplify tools.topoints(values, region) by @adtzlr in #712
  • Enhance topoints( values, region, average=True, mean=False) by @adtzlr in #713
  • Fix Cauchy-stress for 2d-Fields (plane stress) by @adtzlr in #714

Full Changelog: v7.19.1...v8.0.0