[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Getfem-users] Computation of forces for prescribed displacements
From: |
Yves Renard |
Subject: |
Re: [Getfem-users] Computation of forces for prescribed displacements |
Date: |
Wed, 23 Jan 2008 18:10:05 +0100 |
User-agent: |
KMail/1.9.5 |
On Monday 21 January 2008 18:00, Igor Peterlik wrote:
> Hello,
>
> the problem is that I still cannot figure out how the equivalent forces
> should be computed if there is a Dirichlet condition imposed on some
> region.
>
> In my task, a displacement for the top face of a cylinder is prescribed and
> I want to compute the deformation of the cylinder and the reacting force
> F=(fx,fy,fz);
>
> Therefore, besides mf_u object for displacements of nodes, I have another
> mesh_fem object mf_mult for Lagrange multipliers initialized with the mesh
> of the cylinder (together with the correct dimension and type of the FEM).
> Then I apply the Dirichlet conditions using mf_mult:
>
>
> .......
>
> getfem::mesh_fem mf_mult(cylinder_mesh);
>
> ........
>
> getfem::mdbrick_Dirichlet<> final_model(volum_src_term,
> DIRICHLET_BNDRY_ID, mf_mult);
>
> .......
>
>
> Then I set the boundary conditions and compute the deformation using the
> standard_solve arriving to the solution stored in vector U which contains
> the displacement for each degree of freedom and the Lagrange multipliers
> for DOFs with prescribed displacements. And now I arrive to problem, as I
> do not know how
> to combine the coefficients of Lagrange multipliers stored in the solution
> vector U and the shape functions of mf_mult to get the reacting force F
> (which is -- I suppose -- the integral of force density over the top face
> of the cylinder for each direction x,y,z separately where the density is
> computed using the shape function over the boundary elements multiplied by
> the Lagrange multipliers...)
> I was trying to understand and employ the generic assembling procedures via
> getfem::generic_assembly but the examples given in documentation were not
> enough for me to adapt them for my task. Also in the examples included in
> getfem, the mf_mult object is defined several times, but it is never used
> for some further computations.
>
> Thank you in advance.
>
>
> Igor
>
If I understand well you want to compute the global reacting force.
If W is the vector of multipliers (sub-vector of the solution) and mf_mult the
corresponding fem description then you can compute the global force with
something like
getfem::generic_assembly assem;
std::vector<double> vx(1), vy(1), vz(1);
assem.set("u=data(#1); t = comp(vBase(#1))(i,:).u(i)
V$1()+=t(1); V$2()+=t(2); V$3+=t(3)");
assem.push_mi(mim);
assem.push_mf(mf_mult);
assem.push_data(W);
assem.push_vec(vx);
assem.push_vec(vy);
assem.push_vec(vz);
assem.assembly(k);
where mim is a valid integration method and k your boundary.
Yves.
--
Yves Renard (address@hidden) tel : (33) 04.72.43.87.08
Pole de Mathematiques, INSA de Lyon fax : (33) 04.72.43.85.29
20, rue Albert Einstein
69621 Villeurbanne Cedex, FRANCE
http://math.univ-lyon1.fr/~renard
---------