Skip to content

Releases: adtzlr/felupe

v1.4.0

15 Nov 11:03
Compare
Choose a tag to compare

Changelog since [1.3.0]

[1.4.0] - 2021-11-15

Added

  • Add mask argument to Boundary for the selection of user-defined points.
  • Add shear loadcase.
  • Add a wrapper for matadi materials as MatadiMaterial.
  • Add verbose and timing arguments to newtonrhapson.

Fixed

  • Obtain internal dim from Field in calculation of reaction force tools.force.
  • Fix math.dot for combinations of rank 1 (vectors), rank 2 (matrices) and rank 4 tensors.

v1.3.0

02 Nov 20:36
c74503c
Compare
Choose a tag to compare

Changelog since [1.2.0]

[1.3.0] - 2021-11-02

Changed

  • Rename mesh.as_discontinous() to mesh.disconnect().
  • Rename constitution.Mixed to constitution.ThreeFieldVariation.
  • Rename unstack to offsets as return of dof-partition and all subsequent references.
  • Import tools (newtonrhapson, project, save) and constitution (NeoHooke, LinearElastic and ThreeFieldVariation) to FElupe's namespace.
  • Change minimal README-example to a high-level code snippet and refer to docs for details.

v1.2.0

31 Oct 20:13
378c44d
Compare
Choose a tag to compare

Changelog since [1.1.0]

[1.2.0] - 2021-10-31

Added

  • Add template regions, i.e. a region with a Hexahedron() element and a quadrature scheme GaussLegendre(order=1, dim=3) as RegionHexahedron, etc.
  • Add biaxial and planar loadcases (like uniaxial).
  • Add a minimal README-example (Hello FElupe!).

Changed

  • Deactivate clamped boundary (clamped=False) as default option for uniaxial loading dof.uniaxial

v1.1.0

30 Oct 12:44
da6bb4d
Compare
Choose a tag to compare

Changelog since [1.0.1]

[1.1.0] - 2021-10-30

Added

  • Add inverse quadrature method quadrature.inv() for Gauss-Legendre schemes.
  • Add discontinous representation of a mesh as mesh method mesh.as_discontinous().
  • Add tools.project() to project (and average) values at quadrature points to mesh points.

Changed

  • Removed quadpy dependency and use built-in polynomials of numpy for Gauss-Legendre calculation.

Fixed

  • Fix typo in first shear component of math.tovoigt() function.
  • Fix wrong stress projection in tools.topoints() due to different quadrature and cell ordering.

v1.0.1 Fix install with pip if `sparse` is not installed

19 Oct 21:10
Compare
Choose a tag to compare

Changelog

[1.0.1] - 2021-10-19

Fixed

  • Fix import of dof-module if sparse is not installed.

v1.0.0 Code simplifications and faster indices evaluation of Fields

19 Oct 14:24
Compare
Choose a tag to compare

Changelog of [1.0.0] - 2021-10-19

Added

  • Start using a Changelog.
  • Added docstrings for essential classes, methods and functions.
  • Add array with point locations for all elements.

Changed

  • Rename element methods (from basis to function and from basisprime to gradient).
  • Make constitutive materials more flexible (allow material parameters to be passed at stress and elasticity evaluation umat.gradient(F, mu=1.0)).
  • Rename ndim to dim.
  • Simplify element base classes.
  • Speed-up calculation of indices (rows, cols) for Fields and Forms (about 10x faster now).
  • Update test_element.py according to changes in element methods.

Removed

  • Automatic check if the gradient of a region can be calculated based on the dimensions. The grad argument in region(grad=False) has to be enforced by the user.

v0.1.1 First BETA release of FElupe

04 Oct 09:46
Compare
Choose a tag to compare

First BETA release of FElupe 🥇

A lot of unused, undocumented or deprecated features have been removed. Test coverage is now > 97%. Docs have been simplified, re-tested and enhanced. The code structure is now easier to understand as all sub-modules are located in subfolders. Constitution has been simplified, Automatic Differentation capability is now outsourced to a separate package matadi.

Have fun 🏖️

v0.0.11 Bugfixes and Improvements

15 Sep 13:01
c3ab8e4
Compare
Choose a tag to compare
Pre-release

Changelog

Bugfixes:

  • fix MINI element by using a non-normalized bubble function r*s*t*(1-r-s-t) [1]. This prevents convergence problems.

Enhancements:

  • allow user-defined bubble-multiplier for MINI element
  • add point_data and cell_data to save option
  • add MultiPointContact (no friction), similar to MultiPointConstraint
  • add new three-field (Grad(u), P, F) template for Materials with automatic differentiation using CasADi
  • IntegralForm (lineaform): allow arbitrary dimension of fun if grad_v=None (non-parallel only)
  • add grad argument to Region (default is True)
  • add FieldMixed class for mixed-field problems
  • split huge source files into several smaller files

v0.0.10 Enhance IntegralForm classes

26 Aug 19:37
cb7549d
Compare
Choose a tag to compare
Pre-release

Now all IntegralForms have the same arguments.

v0.0.9 Introduce Automatic Differentation Capability (via casADi)

30 Jul 12:26
b802fc3
Compare
Choose a tag to compare

Introduce Automatic Differentation Capability (via casADi)

felupe.constitution now contains ad.Material, ad.Materialup and ad.MaterialupJ for single-, two- and three-field formulations. Only the strain energy density function has to be defined - stress and elasticity tensors are created by automatic differentiation.

Example usage: Neo-Hookean material model

import felupe as fe
import casadi as ca

def W(F, mu, bulk):
    "Strain energy density function for Neo-Hookean material formulation."
    J = ca.det(F)
    C = F.T @ F
    I_C = ca.trace(C)
    return mu / 2 * (I_C * J ** (-2 / 3) - 3) + bulk / 2 * (J - 1) ** 2

umat = fe.constitution.ad.Material(W, mu=1.0, bulk=2.0)

P = umat.f(F)
A = umat.A(F)