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 fem.FieldAxisymmetric.grad() or fem.FieldAxisymmetric.extract() methods. For instances of fem.FieldAxisymmetric the gradient is modified to return a 3x3 gradient as described in theory-axi.

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 fem.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 fem.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 fem.FieldAxisymmetric. Of course, Mixed-field formulations may be applied on axisymmetric scenarios too.