Axisymmetric Problems#

For axisymmetric analyses an axisymmetric vector-valued field has to be created for the in-plane displacements.

import felupe as fem

mesh = fem.Rectangle(n=3)
region = fem.RegionQuad(mesh)
u = fem.FieldAxisymmetric(region, dim=2)
field = fem.FieldContainer([u])

Now it gets important: The 3x3 deformation gradient for an axisymmetric problem is obtained with grad() or extract() methods. For instances of FieldAxisymmetric the gradient is modified to return a 3x3 gradient.

F = field.extract(grad=True, sym=False, add_identity=True)

For simplicity, let’s assume a (built-in) Neo-Hookean material.

umat = fem.NeoHooke(mu=1, bulk=5)

Internally, FElupe provides an adopted IntegralFormAxisymmetric class for the integration and the sparse matrix assemblage of axisymmetric problems. It uses the additional information (e.g. radial coordinates at integration points) stored in FieldAxisymmetric to provide a consistent interface in comparison to default IntegralForms.

dA = region.dV

r = fem.IntegralForm(umat.gradient(F), field, dA).assemble()
K = fem.IntegralForm(umat.hessian(F), field, dA, field).assemble()

To sum up, for axisymmetric problems use FieldAxisymmetric. Of course, Mixed-field formulations may be applied on axisymmetric scenarios too.