finite element analysis for continuum mechanics of solid bodies
GPL-3.0 License
Published by adtzlr almost 2 years ago
Published by adtzlr almost 2 years ago
setup.cfg
, change pyproject.toml
and store the version tag only once within the source code (__about__.py
).pyproject.toml
by @adtzlr in https://github.com/adtzlr/felupe/pull/362
Full Changelog: https://github.com/adtzlr/felupe/compare/v6.2.2...v6.2.3
Published by adtzlr almost 2 years ago
tensortrax
is not installed.tensortrax
is not installed. by @adtzlr in https://github.com/adtzlr/felupe/pull/360
Full Changelog: https://github.com/adtzlr/felupe/compare/v6.2.1...v6.2.2
Published by adtzlr almost 2 years ago
Full Changelog: https://github.com/adtzlr/felupe/compare/v6.2.0...v6.2.1
Published by adtzlr almost 2 years ago
UserMaterialHyperelastic(fun, parallel=False, **kwargs)
based on optional tensortrax
. Only available if tensortrax
is installed.UserMaterialHyperelastic()
(constitution.ogden(C, mu, alpha)
, etc.).UserMaterialHyperelastic()
by @adtzlr in https://github.com/adtzlr/felupe/pull/355
tensortrax
optional by @adtzlr in https://github.com/adtzlr/felupe/pull/357
UserMaterialHyperelastic()
by @adtzlr in https://github.com/adtzlr/felupe/pull/358
Full Changelog: https://github.com/adtzlr/felupe/compare/v6.1.0...v6.2.0
Published by adtzlr almost 2 years ago
x
- and y
-data in CharacteristicCurve.plot(x, y)
and allow a list of items for force evaluation in CharacteristicCurve(items=[...])
to be passed.math.linsteps(points=[0, 5, 0], num=[5, 10])
by supporting a list of substeps.dof.shear(compression=(0, 0))
.CharacteristicCurve(items=[...]).plot(x, y)
by @adtzlr in https://github.com/adtzlr/felupe/pull/350
linsteps
by supporting a list of substeps by @adtzlr in https://github.com/adtzlr/felupe/pull/352
dof.shear(compression=(0, 0)
by @adtzlr in https://github.com/adtzlr/felupe/pull/354
Full Changelog: https://github.com/adtzlr/felupe/compare/v6.0.0...v6.1.0
Published by adtzlr almost 2 years ago
project(mean=True)
to project cell mean-values to mesh-points. Now project()
supports Triangles and Tetrahedrons.RegionBoundary.mesh_faces()
for a mesh with face-cells on the selected boundary of a region.OgdenRoxburgh()
which may be used with SolidBodyNearlyIncompressible()
.umat = UserMaterial(stress, elasticity, nstatevars=0, **kwargs)
with user-defined functions for the (first Piola-Kirchhoff) stress tensor P, statevars_new = umat.gradient([F, statevars], **kwargs)
and the according fourth-order elasticity tensor A = umat.hessian([F, statevars], **kwargs)
based on the deformation gradient.UserMaterialStrain()
for small-strain based user-defined material formulations with an umat-interface suitable for elastic-plastic frameworks.LinearElasticPlasticIsotropicHardening()
which is based on UserMaterialStrain()
and constitution.linear_elastic_plastic_isotropic_hardening()
.math.ravel()
and math.reshape()
.math.norm(axis=None)
.P, statevars_new = umat.gradient([F, statevars])
and the elasticity tensor A = umat.hessian([F, statevars])
. This breaks support for materials defined by matadi<=0.1.10.einsumt>=0.9.3
supports broadcasting along the parallel-executed dimension.FieldContainer(fields).values
to a method FieldContainer(fields).values()
which returns the current field values.SolidBodyTensor()
and SolidBodyTensorNearlyIncompressible()
.region
argument of LinearElastic().hessian()
.project(mean=True)
by @adtzlr in https://github.com/adtzlr/felupe/pull/329
RegionBoundary.mesh_faces()
by @adtzlr in https://github.com/adtzlr/felupe/pull/334
OgdenRoxburgh()
by @adtzlr in https://github.com/adtzlr/felupe/pull/335
umat
for hyperelastic and tensor-based material formulations by @adtzlr in https://github.com/adtzlr/felupe/pull/339
values
to method values()
by @adtzlr in https://github.com/adtzlr/felupe/pull/344
UserMaterialStrain()
by @adtzlr in https://github.com/adtzlr/felupe/pull/346
Full Changelog: https://github.com/adtzlr/felupe/compare/v5.3.1...v6.0.0
Published by adtzlr almost 2 years ago
Full Changelog: https://github.com/adtzlr/felupe/compare/v5.3.0...v5.3.1
Published by adtzlr almost 2 years ago
dof.shear(compression=0.0)
.MeshContainer
and string-representation for Mesh
objects.mesh.read(filename, ...)
.SolidBodyNearlyIncompressible(umat, field, bulk)
for (nearly) incompressible solids and a given (distortional-part only) constitutive material formulation. This is a pure displacement-based alternative to the three-field-formulation technique.Job().evaluate(mesh=None, filename="result.xdmf")
.NeoHooke(mu=1.0)
.ArbitraryOrderLagrangeElement.points
attribute.only_surface=True
for RegionBoundary().mesh.cells_faces
.SolidBodyPressure()
.x0
-field if x0
is passed to job.evaluate(x0=...)
.x0
in job.evaluate(x0)
after each completed substep.cells_faces
of RegionBoundary
by @adtzlr in https://github.com/adtzlr/felupe/pull/307
MeshContainer
and string-representation for Mesh
objects by @adtzlr in https://github.com/adtzlr/felupe/pull/312
mesh.read(filename, ...)
by @adtzlr in https://github.com/adtzlr/felupe/pull/316
job.evaluate(x0=...)
: Take mesh from global field x0
if present by @adtzlr in https://github.com/adtzlr/felupe/pull/320
SolidBodyNearlyIncompressible(umat, field, bulk)
by @adtzlr in https://github.com/adtzlr/felupe/pull/323
x0
in job.evaluate(x0)
after each completed substep by @adtzlr in https://github.com/adtzlr/felupe/pull/324
Full Changelog: https://github.com/adtzlr/felupe/compare/v5.2.0...v5.3.0
Published by adtzlr about 2 years ago
xscale
and yscale
arguments to CharacteristicCurve.plot()
.mesh.Grid(*xi)
as generalized line, rectangle or cube with custom linspaces.mesh.concatenate(meshes)
to join a sequence of meshes with identical cell types.x0
argument to Job.evaluate(x0=field)
.mask
argument to mesh.runouts(mask=slice(None))
.callback(stepnumber, substepnumber, substep)
argument to CharacteristicCurve()
(like in Job()
).Job.evaluate(filename="result.xdmf")
with the possibility to add optional point_data
and cell_data
dicts.einsumt
requirement is not found (switch to numpy without any warnings).mesh.revolve(axis=1)
.xscale
and yscale
arguments to CharacteristicCurve.plot()
by @adtzlr in https://github.com/adtzlr/felupe/pull/281
mesh.Grid(*xi)
and mesh.concatenate([mesh1, mesh2, ...])
by @adtzlr in https://github.com/adtzlr/felupe/pull/284
job.evaluate(x0=field)
by @adtzlr in https://github.com/adtzlr/felupe/pull/286
mesh.revolve(axis=1)
by @adtzlr in https://github.com/adtzlr/felupe/pull/288
callback
argument to CharacteristicCurve()
by @adtzlr in https://github.com/adtzlr/felupe/pull/290
einsumt
is not installed by @adtzlr in https://github.com/adtzlr/felupe/pull/292
Full Changelog: https://github.com/adtzlr/felupe/compare/v5.1.0...v5.2.0
Published by adtzlr about 2 years ago
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.mesh.revolve()
.fun_items()
and jac_items()
as tools.fun()
and tools.jac()
, respectively (useful for numeric continuation).callback(stepnumber, substepnumber, substep)
-function of a Job
.Boundary
class by @adtzlr in https://github.com/adtzlr/felupe/pull/274
mesh.revolve()
by @adtzlr in https://github.com/adtzlr/felupe/pull/276
fun_items()
and jac_items()
from felupe.tools._newton
by @adtzlr in https://github.com/adtzlr/felupe/pull/277
Full Changelog: https://github.com/adtzlr/felupe/compare/v5.0.0...v5.1.0
Published by adtzlr about 2 years ago
SolidBodyGravity
for body forces acting on a solid body.newtonrhapson(fields=[field_1, field_2])
.SolidBodyTensor
.mesh.runouts()
for the creation of runouts of rubber-blocks of rubber-metal structures.FieldPlaneStrain
which is a 2d-field and returns gradients of shape (3, 3)
(for plane strain problems with 3d user materials).PointLoad
for the creation of external force vectors.Step
with a generator for substeps, Job
and CharacteristicCurve
.MultiPointConstraint
to mechanics module and unify handling with SolidBody
.bodies
argument of Newton-Rhapson solver to items
(now supports MPC).loadcase=dict(dof0=dof0, dof1=dof1, ext0=ext0)
.newtonrhapson()
instead of incremental field-values norm.SolidBodyPressure
for initially defined pressure values.verbose=0
option of newtonrhapson()
.mesh.runouts()
by @adtzlr in https://github.com/adtzlr/felupe/pull/255
FieldPlaneStrain
by @adtzlr in https://github.com/adtzlr/felupe/pull/257
FieldPlaneStrain
by @adtzlr in https://github.com/adtzlr/felupe/pull/272
Full Changelog: https://github.com/adtzlr/felupe/compare/v4.0.0...v5.0.0###
Published by adtzlr about 2 years ago
SolidBody.evaluate.kirchhoff_stress()
method. Contrary to the Cauchy stress method, this gives correct results in incompressible plane stress.SolidBodyTensor
for tensor-based material definitions with state variables.bodies
argument to newtonrhapson()
.FieldContainer
(renamed from FieldMixed
).len(field)
method for FieldContainer
(length = number of fields).Field
and FieldMixed
.tovoigt()
helper for data with more or less than two trailing axes and 2D tensors.force()
and moment()
helpers if the residuals are sparse.IntegralFormMixed
and IntegralFormAxisymmetric
from global namespace.tovoigt()
helper by @adtzlr in https://github.com/adtzlr/felupe/pull/219
newtonrhapson()
: Add body
argument by @adtzlr in https://github.com/adtzlr/felupe/pull/226
body
and add bodies
argument by @adtzlr in https://github.com/adtzlr/felupe/pull/227
Field
and FieldMixed
by @adtzlr in https://github.com/adtzlr/felupe/pull/229
Full Changelog: https://github.com/adtzlr/felupe/compare/v3.1.0...v4.0.0
Published by adtzlr over 2 years ago
Form(v, u, parallel=True)
.mechanics
submodule with SolidBody
and SolidBodyPressure
.mechanics
submodule: SolidBody
and SolidBodyPressure
by @adtzlr in https://github.com/adtzlr/felupe/pull/216
Full Changelog: https://github.com/adtzlr/felupe/compare/v3.0.0...v3.1.0
Published by adtzlr over 2 years ago
sym
argument to Bilinearform.integrate()
and Bilinearform.assemble()
.FieldsMixed
which creates a FieldMixed
of length n
based on a template region.mesh.mirror()
.parallel
assembly that uses a threaded version of np.einsum
instead (einsumt).dya
, cdya
, dot
, ddot
) using einsumt.parallel
keyword to constitutive models (NeoHooke
, LinearElasticTensorNotation
and ThreeFieldVariation
).RegionBoundary
along with template regions for Quad
and Hexahedron
and GaussLegendreBoundary
.AreaChange
.triangulate()
, applicable on Quad and Hexahedron meshes.Mesh.as_meshio()
.@Form(...)
for linear and bilinear form objects.mesh
(points, cells, cell_data
or Mesh
).parallel
assembly to jit
.region.h
to region.element.h
and region.dhdr
to region.element.dhdr
.RegionBoundary
).mesh.convert()
by using the function decorator @mesh_or_data
.mesh.expand()
and mesh.revolve()
.Mesh.save(**kwargs)
, acts as a wrapper for Mesh.as_meshio(**kwargs).write()
.RegionBoundary
.BilinearForm
if field and mesh dimensions are not equal.sym
argument to Bilinearform.integrate()
and Bilinearform.assemble()
by @adtzlr in https://github.com/adtzlr/felupe/pull/186
FieldsMixed
by @adtzlr in https://github.com/adtzlr/felupe/pull/190
parallel
to jit
, introduce new parallel
, improved Mesh-tools by @adtzlr in https://github.com/adtzlr/felupe/pull/195
axisymmetric
argument to FieldsMixed
by @adtzlr in https://github.com/adtzlr/felupe/pull/199
triangulate()
by @adtzlr in https://github.com/adtzlr/felupe/pull/202
convert()
by @adtzlr in https://github.com/adtzlr/felupe/pull/203
BilinearForm
by @adtzlr in https://github.com/adtzlr/felupe/pull/206
Full Changelog: https://github.com/adtzlr/felupe/compare/v2.0.1...v3.0.0
Published by adtzlr almost 3 years ago
prange
.Published by adtzlr almost 3 years ago
Mesh
with Mesh.copy()
Basis
on top of a field for virtual fields used in linear and bilinear forms.LinearForm
and BilinearForm
(including mixed variants) for vector/matrix assembly out of weak form expressions.parallel
keyword for threaded integration/assembly of LinearForm
and BilinearForm
.Boundary
for the application of prescribed values of any user-defined Field
which is part of FieldMixed
.dof.apply()
along with the offsets
returned from dof.partition
for mixed-field formulations.shape=(1, 1)
for hessian()
methods of linear elastic materials.math.dot()
for two vectors with trailing axes.dof.extend
because dof.partition
does not need it anymore.Published by adtzlr almost 3 years ago
LinearElasticPlaneStress
and LinearElasticPlaneStrain
material formulations.region
argument for LinearElastic.hessian()
.LinearElastic
materials in terms of the deformation gradient.LinearElastic
material in matrix notation (Speed-up of ~10 for elasticity matrix compared to previous implementation.)LinearElastic
to constitution.LinearElasticTensorNotation
.Published by adtzlr almost 3 years ago
field.extract()
to fun
and jac
of newtonrhapson
.threads
in MatadiMaterial
to multiprocessing.cpu_count()
.dim
in calculation of reaction forces (tools.force
) for FieldMixed
.tools.moment
) for FieldMixed
.Published by adtzlr almost 3 years ago
mask
argument to Boundary
for the selection of user-defined points.shear
loadcase.matadi
materials as MatadiMaterial
.verbose
and timing
arguments to newtonrhapson
.dim
from Field in calculation of reaction force tools.force
.math.dot
for combinations of rank 1 (vectors), rank 2 (matrices) and rank 4 tensors.