[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Getfem-users] simulation membrane in 3D space
From: |
Yves Renard |
Subject: |
Re: [Getfem-users] simulation membrane in 3D space |
Date: |
Tue, 24 Mar 2009 17:24:02 +0100 |
User-agent: |
KMail/1.9.5 |
Dear Jerome,
I think the problem comes from the fact that the elasticity brick is designed
for plane elasticity or volume elasticity not for the deformation of the
membrane. The problem is that with the elasticity brick you have only a 2D
deformation on each triangle and the matching between two triangles should
take into account the 3D, which is not the case. So, I think, you shoud use a
3D displacement. The problem is that the correspondig brick does not exist. I
know that Jean-Yves Heddebaut (address@hidden) did something similar but
for large deformations. May be he could help you.
Yves.
On Tuesday 24 March 2009 11:25, jerome chopard wrote:
> Hi,
>
> I'm new at using GetFem++. I wanted to inflate a sphere with a given
> pressure. I used 2D triangles and the 'isotropic_linearized_elasticity'
> brick. Since the result looks quite strange, I think I made a conceptual
> error somewhere. I join to this mail a picture of the result. Below is the
> part of the python code relevant with my problem.
>
> #BEGIN python code
>
> m = Mesh('empty',3)
> geo = GeoTrans('GT_PK(2,1)')
>
> #construction of mesh here
>
> FIXED = 41
> m.set_region(FIXED,50)
>
> displacement = MeshFem(m,3)
> displacement.set_fem(Fem('FEM_PK(2,1)'))
>
> pressure = MeshFem(m,1)
> pressure.set_fem(Fem('FEM_PK(2,1)'))
>
> mim = MeshIm(m)
> mim.set_integ(Integ('IM_TRIANGLE(13)'))
>
> #building model
> E=1e3
> Nu=0.3
> Lambda = E*Nu/((1+Nu)*(1-2*Nu))
> Mu =E/(2*(1+Nu))
> Pturgor = 0.1 #(MPa) #turgor pressure
>
> b0 = MdBrick('isotropic_linearized_elasticity',mim,displacement)
> b0.set_param('lambda',array([Lambda]))
> b0.set_param('mu',array([Mu]))
>
> b1 = MdBrick('dirichlet',b0,FIXED,displacement,'penalized')
> b1.set_param('R',array([(0.,),(0.,),(0.,)]) )
>
> b2 = MdBrick('source_term',b1)
> forces = turgor_forces(mesh,pos,Pturgor)
> b2.set_param('source_term',pressure,forces)
>
> mds = MdState('real')
> b2.solve(mds,'noisy','lsolver','superlu')
> state = mds.state()
>
> #display the result
>
> #END python code
>
> I hope somebody can explain where I'm wrong. Of course, I'm available if
> someone need more informations.
>
> Thanks,
>
> Jérôme Chopard
> PS: description of the associated image "result.png". On the picture, the
> initial mesh (an icosahedre) is represented in plain 'red' faces. The face
> wich is FIXED is the green one below the sphere. The same mesh after
> displacement is represented as a set of edges (dark blue lines).
> Displacement have been multiplied by 30 to be visibles. Notice how the mesh
> deformation is not symetric (inflated on the left but deflated on the
> right) which is couterintuitive for me.
--
Yves Renard (address@hidden) tel : (33) 04.72.43.87.08
Pole de Mathematiques, INSA-Lyon fax : (33) 04.72.43.85.29
20, rue Albert Einstein
69621 Villeurbanne Cedex, FRANCE
http://math.univ-lyon1.fr/~renard
---------