getfem-users
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Getfem-users] eigenstrain


From: fabien amiot
Subject: Re: [Getfem-users] eigenstrain
Date: Mon, 08 Oct 2012 11:37:19 +0200
User-agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.16) Gecko/20110506 Icedove/3.0.11


Dear Yves,

By loading my system through an eigenstrain, I mean replacing the linear elastic constitutive law by

\epsilon = (1+\nu)/E \sigma - (\nu / E) Tr(\sigma) Id + \epsilon_f Id

where \epsilon_f is the (scalar) eigenstrain (a particular case would be the thermal expansion of the material : \epsilon_f = \Delta T * CTE). Inverting the above constitutive law yields

\sigma = \lambda Tr(\epsilon) + 2 \mu \epsilon +p Id

where the value for the additional pressure p (as a function of \epsilon_f) depends on the chosen modeling (3d / 2d with plane stress / 2d with plane strain). My plan was thus to set the value of the unknown added by the linear incompressibility brick in order to introduce the desired loading.

I hope this makes things clear.
Best regards,
Fabien

On 06/10/2012 17:19, Yves Renard wrote:
Dear Fabien Amiot,

This is compeltely normal that you have a vanishing rhs since there is no load 
on your model (volumic or surface forces). The incompressibility brick 
introduces a new unknown (the pressure) and term to ensure that the 
displacement is (linearly) incompressible. In fact, I did not understand well 
what you  intend to do.


Yves.


----- Original Message -----
From: "fabien amiot"<address@hidden>
To: address@hidden
Sent: Thursday, October 4, 2012 4:02:20 PM
Subject: [Getfem-users] eigenstrain

Dear all,

I'm rather new to Getfem (Matlab-interface), and I'm trying to simulate
a (linear elastic) bimorph :


%% DATA
% cantilever length
L=1;
% cantilever thickness
H=0.1;
% thickness ratio
r=0.1;
% Lame parameters
Young=60E9; nu=0.3;
lambda=Young.*nu./((1+nu).*(1-2.*nu));
mu=0.5.*Young./(1+nu);
lambda_layer=lambda;
mu_layer=mu;
%% Build the mesh
% cantilever
canti_m=gf_mesh('regular simplices',0:(L./10):L, (-H):(H./4):0);
% layer
layer_m=gf_mesh('regular simplices',0:(L./10):L, 0:(r.*H./4):(r.*H));
% retrieve the CVFIDs for the 2 regions
canti_cvfids = gf_mesh_get(canti_m, 'region',gf_mesh_get(canti_m,
'regions'));
layer_cvfids = gf_mesh_get(layer_m, 'region',gf_mesh_get(layer_m,
'regions'));
% merge the two meshes
gf_mesh_set(canti_m, 'merge', layer_m);
% set the region numbers
gf_mesh_set(canti_m, 'region', 1, canti_cvfids);
gf_mesh_set(canti_m, 'region', 2, layer_cvfids);
% integration method
mim=gf_mesh_im(canti_m);
gf_mesh_im_set(mim, 'integ',gf_integ('IM_TRIANGLE(6)'));
% fem object for displacement
mfu=gf_mesh_fem(canti_m,2);
gf_mesh_fem_set(mfu, 'fem',gf_fem('FEM_PK(2,2)'));
% fem object for pressure (used to impose the free strain as a
incompressibility condition)
mfp=gf_mesh_fem(canti_m);
gf_mesh_fem_set(mfp, 'fem',gf_fem('FEM_PK(2,1)'));
%% build elastic model
md=gf_model('real');
gf_model_set(md, 'add fem variable', 'u', mfu);
gf_model_set(md, 'add initialized data', 'lambda', [lambda]);
gf_model_set(md, 'add initialized data', 'mu', [mu]);
gf_model_set(md, 'add initialized data', 'lambda_layer', [lambda_layer]);
gf_model_set(md, 'add initialized data', 'mu_layer', [mu_layer]);
% set the elastic parameters for the cantilever
gf_model_set(md, 'add isotropic linearized elasticity brick', ...
               mim, 'u', 'lambda', 'mu',1);
% set the elastic parameters for the layer
gf_model_set(md, 'add isotropic linearized elasticity brick', ...
               mim, 'u', 'lambda_layer', 'mu_layer',2);
% set the boundary condition (clamping)
P=gf_mesh_get(canti_m,'pts');
fleft =gf_mesh_get(canti_m,'faces from pid',find(abs(P(1,:))<1e-6));
gf_mesh_set(canti_m,'boundary',3,fleft);
gf_model_set(md, 'add Dirichlet condition with multipliers', ...
               mim, 'u', mfu, 3);



The idea is to describe the eigenstrain by exploiting the linear
incompressibility brick :


% set the loading
gf_model_set(md, 'add fem variable', 'p', mfp);
gf_model_set(md, 'add initialized data', 'coef', 1.);
gf_model_set(md, 'add linear incompressibility brick', mim, 'u', 'p', 2,
'coef');


But this produces a zero rhs (as seen from gf_model_get(md,'rhs') ). I
guess I miss either an important thing or an efficient alternative way
to achieve this...

Best regards,
Fabien



--
Fabien AMIOT
Chargé de recherche CNRS en colere / cross Research Associate
address@hidden
Tel : (+33) (0)3.81.66.60.14
Fax : (+33) (0)3.81.66.67.00
UMR6174 / FEMTO-ST, Dpt. Mécanique Appliquée
24, rue de l'Épitaphe
25000 Besancon
France




reply via email to

[Prev in Thread] Current Thread [Next in Thread]