Skip to content

Releases: adtzlr/felupe

v5.2.0

07 Oct 23:29
Compare
Choose a tag to compare

Changelog since [5.1.0] - 2022-09-09

Added

  • Add xscale and yscale arguments to CharacteristicCurve.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 to Job.evaluate(x0=field).
  • Add mask argument to mesh.runouts(mask=slice(None)).
  • Add callback(stepnumber, substepnumber, substep) argument to CharacteristicCurve() (like in Job()).
  • Add an on-the-fly XDMF writer for a job (via meshio) Job.evaluate(filename="result.xdmf") with the possibility to add optional point_data and cell_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 and yscale arguments to CharacteristicCurve.plot() by @adtzlr in #281
  • Add mesh.Grid(*xi) and mesh.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 to CharacteristicCurve() 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

08 Sep 22:28
Compare
Choose a tag to compare

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 to fx=0), also add mode="and" and mode="or" argument.
  • Support line elements within the revolution function mesh.revolve().
  • Import previously hidden functions fun_items() and jac_items() as tools.fun() and tools.jac(), respectively (useful for numeric continuation).
  • Add step- and substep-numbers as arguments to the callback(stepnumber, substepnumber, substep)-function of a Job.

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() and jac_items() from felupe.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

21 Aug 22:01
Compare
Choose a tag to compare

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 and CharacteristicCurve.

Changed

  • Move MultiPointConstraint to mechanics module and unify handling with SolidBody.
  • Rename bodies argument of Newton-Rhapson solver to items (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 of newtonrhapson().
  • Fix wrong assembly of axisymmetric mixed-fields due to introduced plane strain field-trimming.

Auto-Generated Release-Notes

What's Changed

Full Changelog: https://github.com/adtzlr/felupe/compare/v4.0.0...v5.0.0###

v4.0.0

06 Aug 23:13
Compare
Choose a tag to compare

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 to newtonrhapson().
  • Add a container class for fields, FieldContainer (renamed from FieldMixed).
  • Add len(field) method for FieldContainer (length = number of fields).

Changed

  • Unify handling of Field and FieldMixed.
  • 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() and moment() helpers if the residuals are sparse.

Removed

  • Remove wrapper for matADi-materials (not necessary with field containers).
  • Remove IntegralFormMixed and IntegralFormAxisymmetric from global namespace.

Auto-Generated Release-Notes

What's Changed

Full Changelog: v3.1.0...v4.0.0

v3.1.0

02 May 21:02
Compare
Choose a tag to compare

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 with SolidBody and SolidBodyPressure.

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 and SolidBodyPressure by @adtzlr in #216

Full Changelog: v3.0.0...v3.1.0

v3.0.0

28 Apr 12:51
Compare
Choose a tag to compare

Changelog since [2.0.1] - 2022-01-11

Added

  • Add sym argument to Bilinearform.integrate() and Bilinearform.assemble().
  • Add FieldsMixed which creates a FieldMixed of length n based on a template region.
  • Add function to mirror a Mesh mesh.mirror().
  • Add a new parallel assembly that uses a threaded version of np.einsum instead (einsumt).
  • Add parallel versions of math helpers (dya, cdya, dot, ddot) using einsumt.
  • Add parallel keyword to constitutive models (NeoHooke, LinearElasticTensorNotation and ThreeFieldVariation).
  • Add RegionBoundary along with template regions for Quad and Hexahedron and GaussLegendreBoundary.
  • 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 or Mesh).
  • Rename Numba-parallel assembly to jit.
  • Move single element shape functions and their derivatives from region.h to region.element.h and region.dhdr to region.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() and mesh.revolve().
  • Allow optional keyword args to be passed to Mesh.save(**kwargs), acts as a wrapper for Mesh.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 to Bilinearform.integrate() and Bilinearform.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 to jit, introduce new parallel, 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 to FieldsMixed 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

11 Jan 14:59
244ba6e
Compare
Choose a tag to compare

Changelog since [2.0.0] - 2022-01-10

Fixed

  • Fixed wrong result of assembly generated by a parallel loop with prange.

v2.0.0

10 Jan 16:10
Compare
Choose a tag to compare

Changelog since [1.6.0] - 2021-12-02

Added

  • Add a new method to deepcopy a Mesh with Mesh.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 and BilinearForm (including mixed variants) for vector/matrix assembly out of weak form expressions.
  • Add parallel keyword for threaded integration/assembly of LinearForm and BilinearForm.

Changed

  • Enhance Boundary for the application of prescribed values of any user-defined Field which is part of FieldMixed.
  • The whole mixed-field has to be passed to dof.apply() along with the offsets returned from dof.partition for mixed-field formulations.
  • Set default value shape=(1, 1) for hessian() methods of linear elastic materials.

Fixed

  • Fixed einstein summation of math.dot() for two vectors with trailing axes.

Removed

  • Remove dof.extend because dof.partition does not need it anymore.

v1.6.0

02 Dec 15:09
7bb9e27
Compare
Choose a tag to compare

Changelog since [1.5.0] - 2021-11-29

Added

  • Add LinearElasticPlaneStress and LinearElasticPlaneStrain material formulations.
  • Add region argument for LinearElastic.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 to constitution.LinearElasticTensorNotation.

v1.5.0

29 Nov 19:13
cd83c8c
Compare
Choose a tag to compare

Changelog since [1.4.0] - 2021-11-15

Added

  • Add kwargs of field.extract() to fun and jac of newtonrhapson.

Changed

  • Set default number of threads in MatadiMaterial to multiprocessing.cpu_count().
  • Moved documentation to Read the Docs (Sphinx).

Fixed

  • Fix dim in calculation of reaction forces (tools.force) for FieldMixed.
  • Fix calculation of reaction moments (tools.moment) for FieldMixed.