v7.19.0
[7.19.0] - 2024-03-08
Added
- Add
FieldDual(disconnect=True)
for a dual (secondary) field with an optionally disconnected mesh. This also enablesFieldsMixed(disconnect=True)
in mixed fields. - Add a quadrature scheme for integrating the surface of a unit hemisphere
BazantOh(n=21)
. - Add
NearlyIncompressible
as a simplified version ofThreeFieldVariation
. A constitutive material formulation on the distortional part of a strain energy function in terms of the deformation gradient has to be provided, e.g. byumat = NearlyIncompressible(NeoHooke(mu=1), bulk=5000)
. - Add optional kwargs to a job-callback
Job(callback=lambda stepnumber, substepnumber, substep, **kwargs: None, **kwargs)
andCharacteristicCurve(callback=lambda stepnumber, substepnumber, substep, **kwargs: None, **kwargs)
. - Add
DiscreteGeometry
propertiesx
,y
andz
to access the columns of the points-array. - Add a new math-function
math.equivalent_von_mises(A)
for three-dimensional second-order tensors. - Add the evaluation of the equivalent von Mises Cauchy stress as cell-data in
ViewSolid
, available asSolid.plot("Equivalent of Cauchy Stress")
. - Add
mesh.stack(meshes)
as method toMeshContainer.stack()
. Note that this only supports mesh containers with meshes of same cell-types. - Add
NeoHooke.gradient(out=None)
andNeoHooke.hessian(out=None)
for a location to store the results. Also forNeoHookeCompressible
. - Add
out
-keyword togradient()
andhessian
ofNearlyIncompressible
andThreeFieldVariation
. - Add optional initial state variables in
ViewMaterial(statevars=None)
andViewMaterialIncompressible(statevars=None)
. - Add the L2-projection as
tools.project(values, region, average=True, mean=False, dV=None, solver=scipy.sparse.linalg.spsolve)
to project given values at quadrature points to mesh-points. This replaces the oldtools.project(values, region, average=True, mean=False)
in a backward-compatible way. The new method is computationally more expensive but is also much more flexible. - Add fifth-order quadrature schemes
quadrature.Triangle(order=5)
andquadrature.Tetrahedron(order=5)
. - Add
Region.copy(mesh=None, element=None, quadrature=None)
to copy a region and re-evaluate this copy if necessary.
Changed
- Rename
Mesh.save()
toMesh.write()
and addMesh.save()
as an alias toMesh.write()
. - Enhance the performance of
NeoHooke
,NeoHookeCompressible
,SolidBody
andSolidBodyNearlyIncompressible
. - Enhance the performance of
math.inv(out=None)
andmath.det(out=None)
. - Use only the offical API of
tensortrax
. A workaround is used to ensure compatibility withtensortrax
<= v0.17.1. - Pass optional keyword-arguments in the plot-methods
ViewMaterial.plot(**kwargs)
andViewMaterialIncompressible.plot(**kwargs)
to the matplotlib axes objectax.plot(**kwargs)
. - Only add
off_screen
andnotebook
keyword-arguments topyvista.Plotter(**kwargs)
if they areTrue
. This is needed for not ignoring a global variable likepyvista.OFF_SCREEN = True
. - Enforce
verbose=0
if the environmental variable"FELUPE_VERBOSE"
is"false"
. This is useful for running the examples when building the documentation. - Don't require a
bilinearform
inFormItem(bilinearform=None)
. An emptyFormItem
is now a valid item in aStep
. For empty vectors/matrices, the shape is inferred fromsum(FieldContainer.fieldsizes)
instead ofFieldContainer.fields[0].values.size
. - Rename the old-project method to
tools.extrapolate(values, region, average=True, mean=False)
which extrapolates values at quadrature points to mesh-points. - Change the sorting of quadrature points for triangles and tetrahedrons (due to internal code simplifications).
- The reload-method of a region does only re-evaluate it if at least one of the arguments are not None
Region.reload(mesh, element, quadrature)
.
Fixed
- Fix missing support for third-order- and second-order tensor combinations to
math.dot(A, B, mode=(2,3))
andmath.ddot(A, B, mode=(2,3))
. - Fix error if
FieldDual
is in the fields of aFieldContainer
forIntegralForm
. - Fix
math.inv(A)
for arrays with shapeA.shape = (1, 1, ...)
. Also raise an error ifshape[:2]
not in[(3, 3), (2, 2), (1, 1)]
. - Raise an error in
math.det(A)
ifA.shape[:2]
not in[(3, 3), (2, 2), (1, 1)]
. - Fix mutable keyword-arguments in
SolidBody._vector(kwargs={})
bySolidBody._vector(kwargs=None)
. Also for._matrix()
and forSolidBodyNearlyIncompressible
. - Fix wrong shape and the resulting error during assembly in
fem.assembly.expression.Form
for the integration of a linear form with different mesh- and field-dimensions.
What's Changed
- Rename
Mesh.save()
toMesh.write()
and addMesh.save()
as an alias of it by @adtzlr in #626 - Refactor constitution by @adtzlr in #628
- Add
FieldDual
for the dual (secondary) fields in mixed fields by @adtzlr in #629 - Add quadrature scheme
BazantOh()
by @adtzlr in #632 - Add
NearlyIncompressible(material, bulk)
by @adtzlr in #633 - Add
math.dot(A, B, mode=(2,3))
andmath.ddot(A, B, mode=(2,3))
by @adtzlr in #641 - Add optional kwargs to
Job(callback=lambda i, j, res, **kwargs: None, **kwargs)
by @adtzlr in #642 - Add support for
FieldDual
inIntegralForm
by @adtzlr in #643 - Fix
math.inv(A)
forA.shape[:2] == (1, 1)
by @adtzlr in #644 - Add
FieldDual(disconnect=None)
. by @adtzlr in #646 - Add
DiscreteGeometry
propertiesx
,y
andz
by @adtzlr in #648 - Add
math.equivalent_von_mises(A)
by @adtzlr in #650 - Add
MeshContainer.stack()
by @adtzlr in #652 - Enhance the performance by @adtzlr in #654
- Enhance the performance of ``math.inv(out=None)` by @adtzlr in #655
- Improve the performance of
math.det(A, out=None)
by @adtzlr in #659 - Use only the official API of
tensortrax.math
by @adtzlr in #667 - Only add
off_screen
andnotebook
keyword-arguments topyvista.Plotter(**kwargs)
if they areTrue
by @adtzlr in #670 - Docs: Examples are generated by Sphinx-Gallery by @adtzlr in #671
- Fix error during assembly in
Form
for different mesh- and field-dimensions by @adtzlr in #675 - Add the L2-projection and replace it with the old
tools.project()
by @adtzlr in #683
Full Changelog: v7.18.0...v7.19.0