Releases: adtzlr/felupe
Releases · adtzlr/felupe
v5.2.0
Changelog since [5.1.0] - 2022-09-09
Added
- Add
xscale
andyscale
arguments toCharacteristicCurve.plot()
. - Add
mesh.Grid(*xi)
as generalized line, rectangle or cube with custom linspaces. - Add
mesh.concatenate(meshes)
to join a sequence of meshes with identical cell types. - Add
x0
argument toJob.evaluate(x0=field)
. - Add
mask
argument tomesh.runouts(mask=slice(None))
. - Add
callback(stepnumber, substepnumber, substep)
argument toCharacteristicCurve()
(like inJob()
). - Add an on-the-fly XDMF writer for a job (via meshio)
Job.evaluate(filename="result.xdmf")
with the possibility to add optionalpoint_data
andcell_data
dicts.
Changed
- Remove Warning if
einsumt
requirement is not found (switch to numpy without any warnings). - Requires Python 3.7+.
Fixed
- Fix ignored axis argument of
mesh.revolve(axis=1)
.
Auto-Generated Release-Notes
What's Changed
- Add
xscale
andyscale
arguments toCharacteristicCurve.plot()
by @adtzlr in #281 - Add
mesh.Grid(*xi)
andmesh.concatenate([mesh1, mesh2, ...])
by @adtzlr in #284 - Add
job.evaluate(x0=field)
by @adtzlr in #286 - Fix
mesh.revolve(axis=1)
by @adtzlr in #288 - Add
callback
argument toCharacteristicCurve()
by @adtzlr in #290 - Remove Warning if
einsumt
is not installed by @adtzlr in #292 - Add XDMF writer by @adtzlr in #294
Full Changelog: v5.1.0...v5.2.0
v5.1.0
Changelog since [5.0.0] - 2022-08-21
Changed
- Enhance
Boundary
: Select Points by value in addition to a callable (fx=lambda x: x == 0
is equivalent tofx=0
), also addmode="and"
andmode="or"
argument. - Support line elements within the revolution function
mesh.revolve()
. - Import previously hidden functions
fun_items()
andjac_items()
astools.fun()
andtools.jac()
, respectively (useful for numeric continuation). - Add step- and substep-numbers as arguments to the
callback(stepnumber, substepnumber, substep)
-function of aJob
.
Auto-Generated Release-Notes
What's Changed
- Enhance
Boundary
class by @adtzlr in #274 - Support Line-elements within
mesh.revolve()
by @adtzlr in #276 - Import
fun_items()
andjac_items()
fromfelupe.tools._newton
by @adtzlr in #277 - Docs: Add numeric continuation tutorial with contique by @adtzlr in #278
- Callback: Add args (step- and substep-numbers) by @adtzlr in #279
Full Changelog: v5.0.0...v5.1.0
v5.0.0
Changelog since [4.0.0] - 2022-08-07
Added
- Add
SolidBodyGravity
for body forces acting on a solid body. - Support list of linked fields in Newton-Rhapson solver
newtonrhapson(fields=[field_1, field_2])
. - Automatic init of state variables in
SolidBodyTensor
. - Add
mesh.runouts()
for the creation of runouts of rubber-blocks of rubber-metal structures. - Add
FieldPlaneStrain
which is a 2d-field and returns gradients of shape(3, 3)
(for plane strain problems with 3d user materials). - Add
PointLoad
for the creation of external force vectors. - Add
Step
with a generator for substeps,Job
andCharacteristicCurve
.
Changed
- Move
MultiPointConstraint
to mechanics module and unify handling withSolidBody
. - Rename
bodies
argument of Newton-Rhapson solver toitems
(now supports MPC). - Return partitioned system as dict from loadcases
loadcase=dict(dof0=dof0, dof1=dof1, ext0=ext0)
. - Check function residuals norm in
newtonrhapson()
instead of incremental field-values norm.
Fixed
- Fix assembled vectors and results of
SolidBodyPressure
for initially defined pressure values. - Fix
verbose=0
option ofnewtonrhapson()
. - Fix wrong assembly of axisymmetric mixed-fields due to introduced plane strain field-trimming.
Auto-Generated Release-Notes
What's Changed
- Add SolidBodyGravity an Fix SolidBodyPressure by @adtzlr in #237
- Modernize MultiPointConstraint by @adtzlr in #238
- Improve loadcase by @adtzlr in #240
- Newton-Rhapson: Support multiple fields by @adtzlr in #242
- Newton remove fields arg by @adtzlr in #243
- Fix multiple mixed subfields by @adtzlr in #245
- Enhance SolidBodyTensor: Automatic init of statevars by @adtzlr in #247
- Fix verbose of newton by @adtzlr in #249
- Check function residuals norm in newton by @adtzlr in #251
- Fix update of state variables in Newton-Rhapson by @adtzlr in #253
- Add Mesh-tool
mesh.runouts()
by @adtzlr in #255 - Add
FieldPlaneStrain
by @adtzlr in #257 - Field Integration: Fix field-trimming for plane strain by @adtzlr in #260
- Multiply force vector of gravity by -1 by @adtzlr in #262
- Add PointLoad by @adtzlr in #263
- Rename mask argument to points of point-load by @adtzlr in #266
- Add Step, Job and CharacteristicCurve by @adtzlr in #270
- Add missing import
FieldPlaneStrain
by @adtzlr in #272
Full Changelog: https://github.com/adtzlr/felupe/compare/v4.0.0...v5.0.0###
v4.0.0
Changelog since [3.1.0] - 2022-05-02
Added
- Add
SolidBody.evaluate.kirchhoff_stress()
method. Contrary to the Cauchy stress method, this gives correct results in incompressible plane stress. - Add
SolidBodyTensor
for tensor-based material definitions with state variables. - Add
bodies
argument tonewtonrhapson()
. - Add a container class for fields,
FieldContainer
(renamed fromFieldMixed
). - Add
len(field)
method forFieldContainer
(length = number of fields).
Changed
- Unify handling of
Field
andFieldMixed
. - Constitutive models use lists as in- and output (consistency between single- and mixed-formulations).
- Allow field updates directly from 1d sparse-solved vector without splitted by field-offsets.
Fixed
- Fix
tovoigt()
helper for data with more or less than two trailing axes and 2D tensors. - Fix errors for
force()
andmoment()
helpers if the residuals are sparse.
Removed
- Remove wrapper for matADi-materials (not necessary with field containers).
- Remove
IntegralFormMixed
andIntegralFormAxisymmetric
from global namespace.
Auto-Generated Release-Notes
What's Changed
- Fix
tovoigt()
helper by @adtzlr in #219 - Add SolidBody kirchhoff stress by @adtzlr in #221
- Add SolidBodyTensor by @adtzlr in #224
- Enhance
newtonrhapson()
: Addbody
argument by @adtzlr in #226 - Newton-Rhapson: Remove
body
and addbodies
argument by @adtzlr in #227 - Unify handling of
Field
andFieldMixed
by @adtzlr in #229 - Add field-container length method by @adtzlr in #233
- Docs: Fix tutorial "shear" by @adtzlr in #235
Full Changelog: v3.1.0...v4.0.0
v3.1.0
Changelog since [3.0.0] - 2022-04-28
Added
- Add optional parallel (threaded) basis evaluation and add
Form(v, u, parallel=True)
. - Add
mechanics
submodule withSolidBody
andSolidBodyPressure
.
Fixed
- Fix matADi materials for (mixed) axisymmetric analyses.
- Fix missing radius in axisymmetric integral forms.
Auto-Generated Release-Notes
What's Changed
- Enhance Basis: Parallel evaluation by @adtzlr in #212
- Add
mechanics
submodule:SolidBody
andSolidBodyPressure
by @adtzlr in #216
Full Changelog: v3.0.0...v3.1.0
v3.0.0
Changelog since [2.0.1] - 2022-01-11
Added
- Add
sym
argument toBilinearform.integrate()
andBilinearform.assemble()
. - Add
FieldsMixed
which creates aFieldMixed
of lengthn
based on a template region. - Add function to mirror a Mesh
mesh.mirror()
. - Add a new
parallel
assembly that uses a threaded version ofnp.einsum
instead (einsumt). - Add parallel versions of math helpers (
dya
,cdya
,dot
,ddot
) using einsumt. - Add
parallel
keyword to constitutive models (NeoHooke
,LinearElasticTensorNotation
andThreeFieldVariation
). - Add
RegionBoundary
along with template regions forQuad
andHexahedron
andGaussLegendreBoundary
. - Add optional normal vector argument for function and gradient methods of
AreaChange
. - Add a new Mesh-tool
triangulate()
, applicable on Quad and Hexahedron meshes. - Add a new Mesh-method
Mesh.as_meshio()
. - Add a function decorator
@Form(...)
for linear and bilinear form objects.
Changed
- Enforce consistent arguments for functions inside
mesh
(points, cells, cell_data
orMesh
). - Rename Numba-
parallel
assembly tojit
. - Move single element shape functions and their derivatives from
region.h
toregion.element.h
andregion.dhdr
toregion.element.dhdr
. - Repeat element shape functions and their derivatives for each cell (as preparation for an upcoming
RegionBoundary
). - Improve
mesh.convert()
by using the function decorator@mesh_or_data
. - Allow an array to be passed as the expansion arguments of
mesh.expand()
andmesh.revolve()
. - Allow optional keyword args to be passed to
Mesh.save(**kwargs)
, acts as a wrapper forMesh.as_meshio(**kwargs).write()
.
Fixed
- Fix area normal vectors of
RegionBoundary
. - Fix integration and subsequent assembly of
BilinearForm
if field and mesh dimensions are not equal.
Auto-Generated Release-Notes
What's Changed
- Add
sym
argument toBilinearform.integrate()
andBilinearform.assemble()
by @adtzlr in #186 - Add
FieldsMixed
by @adtzlr in #190 - Update coverage.yml: Add Python 3.10 by @adtzlr in #182
- Rename keyword
parallel
tojit
, introduce newparallel
, improved Mesh-tools by @adtzlr in #195 - Preparations for RegionBoundary by @adtzlr in #196
- Add a region on the boundary faces/edges on a mesh by @adtzlr in #197
- Improve AreaChange by @adtzlr in #198
- Add
axisymmetric
argument toFieldsMixed
by @adtzlr in #199 - Add Mesh-Tool:
triangulate()
by @adtzlr in #202 - Improve Mesh-tool
convert()
by @adtzlr in #203 - Improve Mesh by @adtzlr in #204
- Fix dimensions of value-array in assembly of
BilinearForm
by @adtzlr in #206 - Add function decorator for weakforms by @adtzlr in #208
- Change Forms How-To by @adtzlr in #209
- Simplify How-To on Forms by @adtzlr in #210
Full Changelog: v2.0.1...v3.0.0
v2.0.1
v2.0.0
Changelog since [1.6.0] - 2021-12-02
Added
- Add a new method to deepcopy a
Mesh
withMesh.copy()
- Add broadcasting capability for trailing axes inside the parallel form integrators.
- Add
Basis
on top of a field for virtual fields used in linear and bilinear forms. - Add
LinearForm
andBilinearForm
(including mixed variants) for vector/matrix assembly out of weak form expressions. - Add
parallel
keyword for threaded integration/assembly ofLinearForm
andBilinearForm
.
Changed
- Enhance
Boundary
for the application of prescribed values of any user-definedField
which is part ofFieldMixed
. - The whole mixed-field has to be passed to
dof.apply()
along with theoffsets
returned fromdof.partition
for mixed-field formulations. - Set default value
shape=(1, 1)
forhessian()
methods of linear elastic materials.
Fixed
- Fixed einstein summation of
math.dot()
for two vectors with trailing axes.
Removed
- Remove
dof.extend
becausedof.partition
does not need it anymore.
v1.6.0
Changelog since [1.5.0] - 2021-11-29
Added
- Add
LinearElasticPlaneStress
andLinearElasticPlaneStrain
material formulations. - Add
region
argument forLinearElastic.hessian()
.
Changed
- Re-formulate
LinearElastic
materials in terms of the deformation gradient. - Re-formulate
LinearElastic
material in matrix notation (Speed-up of ~10 for elasticity matrix compared to previous implementation.) - Move previous
LinearElastic
toconstitution.LinearElasticTensorNotation
.
v1.5.0
Changelog since [1.4.0] - 2021-11-15
Added
- Add kwargs of
field.extract()
tofun
andjac
ofnewtonrhapson
.
Changed
- Set default number of
threads
inMatadiMaterial
tomultiprocessing.cpu_count()
. - Moved documentation to Read the Docs (Sphinx).
Fixed
- Fix
dim
in calculation of reaction forces (tools.force
) forFieldMixed
. - Fix calculation of reaction moments (
tools.moment
) forFieldMixed
.