Subject: [FEniCS-users] Axisymmetric deformation

From: [email-masked]
Date: Mon, 19 Oct 2009 12:40:25 +0900(東京 (標準時))

Hello.

I want to implement a bilinear form for axisymmetric
elastic problems on cylindrical coordinates (r, theta, z).
All of displacement, strain, and stress are assumed
to be axisymmetric.  I am expecting the form will look
like:
  def epsilon(v):
    return
      [ del(v.r)/del(r)         0      ]
      [        0        del(v.z)/del(z)]
      [ del(v.r)/del(z) del(v.z)/del(z)]
      [      v.r/r              0      ]

  def sigma(v):
    return
      (E/((1+nu)*(1-2*nu))) \
        [1-nu  nu    0         nu ]
        [ nu  1-nu   0         nu ]
        [ 0   0    (1-2*nu)/2  0  ]
        [ nu  nu     0        1-nu] * epsilon(v)

  a = 2*pi*inner(epsilon(v), sigma(u))*r

How can I define epsilon and sigma?  Sorry about my
broken English.  I hope this question makes sense.

Thanks in advance.
-Azumi Hayakawa

---

From: Anders Logg <[email-masked]>
Date: Mon, 19 Oct 2009 13:25:32 +0200

>       [ del(v.r)/del(z) del(v.z)/del(z)]

Try this:

   def epsilon(v):
     return as_matrix([[del(v.r)/del(r), 0],
                      [0, del(v.z)/del(z)],
                      [del(v.r)/del(z), del(v.z)/del(z)],
                      [v.r/r, 0]])

   def sigma(v):
     return E/((1+nu)*(1-2*nu))*as_matrix([[1-nu, nu, 0, nu ],
                                          [nu, 1-nu, 0, nu ],
                                          [0, 0, (1-2*nu)/2, 0],
                                          [nu, nu, 0, 1-nu]]) * epsilon(v)

Then don't forget to add *dx in a.

--
Anders

> _______________________________________________
> FEniCS-users mailing list
> [email-masked]
> http://fenics.org/mailman/listinfo/fenics-users

---

From: "Garth N. Wells" <[email-masked]>
Date: Mon, 19 Oct 2009 12:40:49 +0100

>                                           [nu, nu, 0, 1-nu]]) * epsilon(v)

Are r and z functions?

I guess FFC will soon support using coordinates in a .ufl file.

Garth

>> ------------------------------------------------------------------------
>>

---

From: Anders Logg <[email-masked]>
Date: Mon, 19 Oct 2009 14:25:13 +0200

> I guess FFC will soon support using coordinates in a .ufl file.

There is already a Function named MeshCoordinates defined in
SpecialFunctions.h.

Perhaps we could just predefined x, y, z as being components of this
Function in PyDOLFIN?

--
Anders

---

From: [email-masked]
Date: Tue, 20 Oct 2009 21:20:50 +0900(東京 (標準時))

Thanks a lot for your help.

I meant r and z to be independent varibles
in the cylindrical coordinate system.
I think I could made a step forward,
and reached the code below.  I will play
with the code tomorrow.  I appreciate
your help if you point out anything wrong
with the code.

Regards,
-azumi

mesh = Mesh("xxx.xml")
mesh.order()
V    = VectorFunctionSpace(mesh, "CG", 1)
W    = FunctionSpace(mesh, "CG", 1)

v = TestFunction(V)
u = TrialFunction(V)

E  = 1.52e11
nu = 0.3

mu    = E / (2*(1 + nu))
lmbda = E*nu / ((1 + nu)*(1 - 2*nu))

R = Function(W, "x[0]")

def epsilon(v):
    return as_matrix([[v[0].dx(0), 0],
                      [0,          v[1].dx(1)],
                      [v[0].dx(1), v[1].dx(0)],
                      [v[0]/R,     0]])

def sigma(v):

a = 2*pi*R*inner(epsilon(v), sigma(u))*dx

From: Anders Logg <[email-masked]>
Subject: Re: [FEniCS-users] Axisymmetric deformation
Date: Mon, 19 Oct 2009 14:25:13 +0200

---

From: Anders Logg <[email-masked]>
Date: Tue, 20 Oct 2009 14:27:40 +0200

> lmbda = E*nu / ((1 + nu)*(1 - 2*nu))

This will need to be

  R = Expression("x[0]", V=W)

when you move to DOLFIN 0.9.4.

--
Anders

---

From: [email-masked]
Date: Wed, 21 Oct 2009 08:20:59 +0900(東京 (標準時))

Thank you for your help.
-Azumi Hayakawa

From: Anders Logg <[email-masked]>
Subject: Re: [FEniCS-users] Axisymmetric deformation
Date: Tue, 20 Oct 2009 14:27:40 +0200