Releases: adtzlr/felupe
Releases · adtzlr/felupe
v1.4.0
Changelog since [1.3.0]
[1.4.0] - 2021-11-15
Added
- Add
mask
argument toBoundary
for the selection of user-defined points. - Add
shear
loadcase. - Add a wrapper for
matadi
materials asMatadiMaterial
. - Add
verbose
andtiming
arguments tonewtonrhapson
.
Fixed
- Obtain internal
dim
from Field in calculation of reaction forcetools.force
. - Fix
math.dot
for combinations of rank 1 (vectors), rank 2 (matrices) and rank 4 tensors.
v1.3.0
Changelog since [1.2.0]
[1.3.0] - 2021-11-02
Changed
- Rename
mesh.as_discontinous()
tomesh.disconnect()
. - Rename
constitution.Mixed
toconstitution.ThreeFieldVariation
. - Rename
unstack
tooffsets
as return of dof-partition and all subsequent references. - Import tools (
newtonrhapson
,project
,save
) and constitution (NeoHooke
,LinearElastic
andThreeFieldVariation
) to FElupe's namespace. - Change minimal README-example to a high-level code snippet and refer to docs for details.
v1.2.0
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 schemeGaussLegendre(order=1, dim=3)
asRegionHexahedron
, 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 loadingdof.uniaxial
v1.1.0
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 ofnumpy
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
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
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
tofunction
and frombasisprime
togradient
). - Make constitutive materials more flexible (allow material parameters to be passed at stress and elasticity evaluation
umat.gradient(F, mu=1.0)
). - Rename
ndim
todim
. - 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 inregion(grad=False)
has to be enforced by the user.
v0.1.1 First BETA release of FElupe
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
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
andcell_data
to save option - add
MultiPointContact
(no friction), similar toMultiPointConstraint
- add new three-field
(Grad(u), P, F)
template for Materials with automatic differentiation using CasADi IntegralForm
(lineaform): allow arbitrary dimension offun
ifgrad_v=None
(non-parallel only)- add
grad
argument toRegion
(default isTrue
) - add
FieldMixed
class for mixed-field problems - split huge source files into several smaller files
v0.0.10 Enhance IntegralForm classes
Now all IntegralForms have the same arguments.
v0.0.9 Introduce Automatic Differentation Capability (via casADi)
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)