Note
Go to the end to download the full example code.
Run a Job#
This tutorial once again covers the essential high-level parts of creating and solving
problems with FElupe. This time, however, the external displacements are applied in a
ramped manner. The prescribed displacements of a cube under non-homogenous
uniaxial loading
will be controlled within a
step
. The
Ogden-Roxburgh
pseudo-elastic Mullins softening model is
combined with an isotropic hyperelastic Neo-Hookean
material
formulation, which is further applied on a
nearly incompressible solid body
for a
realistic analysis of rubber-like materials. Note that the bulk modulus is now an
argument of the (nearly) incompressible solid body instead of the constitutive
Neo-Hookean material definition.
import felupe as fem
mesh = fem.Cube(n=6)
region = fem.RegionHexahedron(mesh=mesh)
field = fem.FieldContainer([fem.Field(region=region, dim=3)])
boundaries, loadcase = fem.dof.uniaxial(field, clamped=True)
umat = fem.OgdenRoxburgh(material=fem.NeoHooke(mu=1), r=3, m=1, beta=0)
body = fem.SolidBodyNearlyIncompressible(umat=umat, field=field, bulk=5000)
The ramped prescribed displacements for 12 substeps are created with
linsteps()
. A Step
is created with a list of items
to be considered (here, one single solid body) and a dict of ramped boundary
conditions along with the prescribed values.
This step is now added to a Job
. The results are exported after each
completed and successful substep as a time-series XDMF-file. A
CharacteristicCurve
-job logs the displacement and sum of reaction
forces on a given boundary condition.
job = fem.CharacteristicCurve(steps=[uniaxial], boundary=boundaries["move"])
job.evaluate(filename="result.xdmf", verbose=True)
field.plot("Principal Values of Logarithmic Strain").show()

0%| | 0/13 [00:00<?, ?substep/s]
23%|██▎ | 3/13 [00:00<00:00, 19.61substep/s]
38%|███▊ | 5/13 [00:00<00:00, 17.16substep/s]
54%|█████▍ | 7/13 [00:00<00:00, 16.28substep/s]
69%|██████▉ | 9/13 [00:00<00:00, 15.96substep/s]
85%|████████▍ | 11/13 [00:00<00:00, 13.95substep/s]
100%|██████████| 13/13 [00:00<00:00, 14.39substep/s]
100%|██████████| 13/13 [00:00<00:00, 15.22substep/s]
The sum of the reaction force in direction \(x\) on the boundary condition
"move"
is plotted as a function of the displacement \(u\) on the boundary
condition "move"
.

Total running time of the script: (0 minutes 1.354 seconds)