Documente Academic
Documente Profesional
Documente Cultură
2.1 Introducere
a) b)
c)
bA
A
L
d)
iar după clarificarea principalelor aspecte ale rezolvării prin MEF se va
reveni la problemele mai complexe prezentate în figurile a,b şi c.
24 Solicitarea elastică mono-dimensională Capitolul 2
D
0 x L
Fig 2.1 Domeniul de calcul
dx D bdx G , t (2.10)
D x
D
S-a notat
0 L L 00 D
L
(2.11)
uD D
G , t dx D bdx dx D D bdx
D x
D D x
D
b dx D 0 (2.14)
D x
28 Solicitarea elastică mono-dimensională Capitolul 2
Ultima egalitate trebuie să aibă loc pentru orice V şi de aici rezultă:
x
b x 0 (2.15)
x
(2.16)
D
în care apar energia potenţială internă (primul termen din dreapta egalităţii)
şi lucrul mecanic al forţelor exterioare (termenii doi şi trei din dreapta
egalităţii). Se introduce câmpul deplasărilor admisibile prin:
u u (2.18)
unde este un parametru iar este o deplasare virtuală compatibilă cu
legăturile. În mecanica structurilor se foloseşte notaţia:
u (2.19)
deci
u u u (2.20)
Principiul deplasărilor virtuale se exprimă prin relaţia:
0 (2.21)
unde prima variaţie a energiei potenţiale totale se calculează cu:
Capitolul 2 Solicitarea elastică mono-dimensională 29
u (2.22)
0
deci
u Eu u dx budx u D (2.24)
D
D
Rezultă
, u dx budx u (2.25)
D
D D
unde
u
(2.26)
x
În concluzie, principiul lucrului mecanic virtual se exprimă astfel:
Să se determine u: D R, astfel incât:
, u dx budx u
D D
0
D
x E x , x D
(2.27)
u x
x , x D
x
u u , x u D
oricare ar fi u V
Este evident că formulările (2.12) şi (2.27) sunt similare. Se observă că în
demonstraţia principiului lucrului mecanic virtual s-a folosit legea
constitutivă.
C k D C k D (2.30)
c) Orice funcţie de clasă C 0 D este integrabilă.
Având în vedere aceste notaţii şi presupunând că b este de clasă
C D se pot face despre forma diferenţială (2.7) următoarele observaţii:
0
x
Fig. 2.2. Funcţie liniară pe porţiuni.
O funcţie de clasă C 1 D pe porţiuni este evident o funcţie de clasă
C 0 D a cărei derivată este continuă cu excepţia unui număr finit de puncte.
Poziţia porţiunilor de netezime nu este aleatoare. Porţiunile de
netezime corespund elementelor finite. Funcţiile utilizate în MEF sunt deci
netede în interiorul elementelor şi mai puţin netede la trecerea de la un
element la altul. Altfel spus funcţiile utilizate sunt netede la nivel local şi
mai puţin netede la nivel global. Lucrul cu astfel de funcţii se poate dovedi
dificil în cadrul analizei elementare mai ales atunci când se lucrează în
spaţiul bi- sau tri-dimensional. De exemplu prima derivată a funcţiei liniare
pe porţiuni este funcţia scară iar a doua derivată este funcţia Dirac
generalizată. Se impune utilizarea noţiunii de derivată generalizată. În acest
32 Solicitarea elastică mono-dimensională Capitolul 2
V H 1
, 0, x D
u (2.36)
h x j i N i x j j , j (2.42)
i 1
n
uh u N i
i 1, xi u D
i (2.49)
N i
x j
x 0, i , j (2.52)
M i 1, pentru i j
x
xj
0, pentru i j
(2.53)
M i x j 0, i , j (2.54)
36 Solicitarea elastică mono-dimensională Capitolul 2
0, x xi , x k
şi reprezentarea grafică:
Nj
xi xj xk
Fig. 2.3. Funcţie de interpolare liniară pe porţiuni.
u T u1 u2 ... un (2.56)
sau:
~
~ ~
Ku~ f (2.72)
~
~ ~
unde K este matricea de rigiditate, u~ este vectorul deplasărilor iar f este
vectorul forţelor.
Capitolul 2 Solicitarea elastică mono-dimensională 39
B EBdxu bNdx N
T
D
(2.74)
D D
sau
Ku f (2.75)
Se va partiţiona sistemul de ecuaţii (2.74) ţinând seama de relaţiile (2.59) şi
(2.61). Se pot extrage din (2.74) liniile care corespund lui u~ , prin înmulţire
la stânga cu L. Sistemul se reduce la:
L B T EBdxu L bNdx LN D
(2.76)
D D
deci:
~T ~ ~
B
D
EBdxu bNdx N
D
D
(2.77)
B EB T dxu f
T
(2.85)
D
~
f B T EB dxu~ B T EB dxu (2.86)
D D
2.12.1 Simetria
Ni Ni+2
x1 xi xi+1 xi+2 xm
Fig.2.4. Funcţii de interpolare învecinate.
Forma bandă este caracterizată de lăţimea benzii, adică de numărul
maxim de elemente nenule de pe o linie a matricei. În acest exemplu lăţimea
benzii este egală cu trei. La rezolvarea sistemului de ecuaţii liniare MEF se
poate folosi această proprietate pentru a reduce efortul de calcul. Dacă se
are în vedere această proprietate atunci efortul de calcul efectuat la
rezolvarea sistemului de ecuaţii (2.72) este proporţional cu pătratul lăţimii
benzii. Rezultă de aici, importanţa unei lăţimi de bandă cât mai mici, adică
importanţa modului de numerotare al nodurilor. Economia de efort de calcul
este atât de mare încât majoritatea programelor dezvoltate pentru analiza cu
elemente finite renumerotează automat nodurile structurii astfel încât să se
obţină o semibandă cât mai redusă.
42 Solicitarea elastică mono-dimensională Capitolul 2
~
~
O a treia proprietate importantă a matricei K este aceea că este o
matrice pozitiv definită. Această proprietate este importantă deoarece
asigură unicitatea soluţiei sistemului de ecuaţii (2.72) şi implicit unicitatea
soluţiei problemei la limită care se rezolvă.
~
~
Matricea K este pozitiv definită deoarece:
~
~
a) c T Kc 0, c ;
~
~
b) c T Kc 0, c 0 .
Afirmaţia de la punctul a) se demonstrează prin utilizarea
coeficienţilor c la construcţia unui element din Vh, astfel:
~
h c T N (2.91)
Pornind de la inegalitatea evidentă:
E
2
h
,x dx 0 (2.92)
D
se obţine succesiv:
~
~ ~ ~
2
E ,x dx c T EN ,Tx N , x dxc c T Kc 0
h
(2.93)
D D
u , u
i j (2.98)
d) Funcţiile de interpolare asociate elementului:
N , N
i j (2.99)
e) Relaţia de interpolare pe element pentru u h :
u h N i ui N j u j (2.100)
a) Domeniul
În vederea simplificării calculelor la nivel local se utilizează sisteme
de axe de coordonate locale. În mod obişnuit la problemele mono-
dimensionale domeniul de calcul care corespunde unui element finit
oarecare e, se extinde în coordonate locale în intervalul (-1, 1) sau (0, 1).
Uneori se utilizează şi intervalul 0, Le unde Le este lungimea elementului.
Aici se va utiliza intervalul (-1,1). Având în vedere această particularizare a
intervalului 1 , 2 şi considerând că trecerea de la 11 , la
x xi , x j se face printr-o transformare liniară, se poate scrie relaţia:
1 1
x 1 xi 1 x j (2.106)
2 2
Având în vedere forma funcţiilor de interpolare în coordonate locale,
se observă că se poate scrie:
x N 1e xi N 2e x j (2.107)
b) Nodurile
Nodurile sunt în ambele formulări la capetele elementului dar
numerotarea acestora este diferită. În formularea globală se numerotează
toate nodurile iar în formularea locală se numerotează numai nodurile
elementului. Concret dacă domeniul de calcul (global) se divizează în 10
subdomenii (elemente finite) atunci la nivel global nodurile se numerotează
1,2,...,11 iar la nivel local la fiecare element se numerotează nodurile cu 1
şi 2.
c) Gradele de libertate
Se impune corespondenţa:
u , u u , u
i j
e
1
e
2 (2.108)
d) Funcţiile de interpolare
Funcţiile de interpolare definite în sistemul de coordonate global
sunt:
Ni (x) Nj (x)
1 1
x
xi xj
Fig. 2.7. Funcţiile de interpolare în reprezentarea globală.
Funcţiile de interpolare liniare definite în sistemul de coordonate
local sunt:
46 Solicitarea elastică mono-dimensională Capitolul 2
N1 N2
1 1
-1 1
Fig. 2.8. Funcţiile de interpolare în reprezentarea locală.
În coordonate locale, expresiile funcţiilor de interpolare liniare, sunt
foarte simple şi aceleaşi oricare ar fi elementul e:
1
N 1e 1 (2.109)
2
1
N 2e 1 (2.110)
2
Există corespondenţa:
N x , N x = N
i j
e
1 , N 2e (2.111)
e) Relaţia de aproximare. Funcţia u h este aproximată identic şi doar
argumentul funcţiei este formal diferit:
u h x u h (2.112)
e Ae (2.115)
unde A e este o matrice de selecţie care conţine numai valori zero, cu
excepţia unei singure valori unu pe fiecare linie. Deci funcţia h se exprimă
pe elementul e prin relaţia :
T
h N e Ae (2.116)
Valoarea G h , h se poate calcula la nivel local astfel:
m
G h , h Ge h , h
e 1
(2.117)
unde:
h
Ge h , h h dx bh dx h
De D
De x De
Geint h , h Geext h , h (2.118)
Dacă se consideră că se pot pune condiţii la limită de tip natural,
numai la capetele domeniului de calcul, adică în x 0 şi/sau în x L
termenul care conţine condiţia la limită de tip natural se poate explicita
astfel:
h , xi 0, x j L sau L D, 0 D
x xi
h , xi 0 sau 0 D, x j L, L D
h x x j
(2.119)
De D
h h , xi 0, x j L, 0 D, L D
x x j x xi
0, in rest
Primul termen din expresia lui Ge h , h se calculează astfel:
h
G ,
int
e
h h
dx h B e e dx
h
D
x D e e (2.120)
B dx f
eT eT h eT e
int
De
cu:
h
B e e (2.121)
x
e N e bdx N e e T f e
T
(2.123)
De D ext
De
În (2.123) f exte este vectorul forţelor exterioare locale.
Având în vedere relaţiile de mai sus, suma din (2.117) devine:
m n
G h , h e
e 1
T
f e
int
f exte T A e
e 1
T
f e
int
f exte
EN ,x N ,x dx EN ,x N ,x dx
T T
(2.133)
D e 1 D
e
m m
~eT
A
e 1
B eT
EB e
dx A e
LT~
u M T
u
~T
Ae finte e 1
(2.138)
De
50 Solicitarea elastică mono-dimensională Capitolul 2
m
A B
e 1
eT eT
EB e dx A e u
De
m m
(2.139)
A
e 1
eT
f A
e
int
e 1
eT
B
eT e
EB dx A u e
De
m
~eT e ~e ~ m ~eT e m
~T
A
e 1
K A u int Ae K e A eu
A f
e 1 e 1
(2.140)
obţinându-se în final:
~
~ ~
Ku~ f (2.141)
Anterior s-a dedus la nivel global sistemul de ecuaţii
~T ~ ~ ~ ~T
B EBdxu~ bNdx N B EB dxu
D D
D
D
(2.142)
T
unde B e N ,ex .
Vectorul local al forţelor exterioare se calculează cu:
f exte N bdx N e
e
(2.148)
De D
De
de unde rezultă
1
dN ie dx dN ie 1 dN ie
(2.156)
dx d d J d
Se obţine relaţia:
1
1 e T
Ke E N , ( ) N ,e ()d (2.157)
1
J
care se mai poate simplifica, dacă se ţine seama de forma funcţiilor de
interpolare. Rezultă:
1 1
N ,e (2.158)
21
şi
1 1
J
2
x j xi Le
2
(2.159)
apoi
1 1 1 1
1
J 4 1 1 1
Ke E d (2.160)
d 2 , (2.161)
1
N e x bdx b e N e Jd
xi 1
(2.163)
bLe e 1
b L 1 e e
2 1
N e
d
2 1
% Elementul elastic 1D
%
% Definire parametri xi, E, L, b, b1, b2
%
xi=sym('xi','positive')
E=sym('E','positive')
L=sym('L','positive')
b=sym('b','positive')
b1=sym('b1','positive')
b2=sym('b2','positive')
54 Solicitarea elastică mono-dimensională Capitolul 2
%
% Definire functii de interpolare N
%
N(1,1)=(1-xi)/2 % (2.150)
N(2,1)=(1+xi)/2 % (2.151)
%
% Definire derivate Nxi
%
Nxi=diff(N,xi) % (2.158)
%
% Definire Jacobian
%
J=L/2 % (2.159)
%
% Calcul matrice K
%
K=int(Nxi*Nxi',xi,-1,1)*E/J % (2.157)
%
% Calcul matrice f (b=ct)
%
f=int(N,xi,-1,1)*b*J % (2.163)
%
% Calcul matrice f (b=liniar)
%
bl=N'*[b1; b2] % (2.165)
fl=int(N*bl,xi,-1,1)*J % (2.166)
n
f AeT f e (2.171)
e 1
LA
e 1
T
e K e Ae u LAeT f e
e 1
(2.176)
e 1
LAeT K e Ae LT u~ M T u LAeT f e e 1
(2.177)
n n n
LA K e Ae L u~ LAeT f e LAeT K e Ae M T u
e 1
T
e
T
e 1 e 1
(2.178)
Se notează:
~
Ae Ae LT (2.179)
Ae Ae M T (2.180)
şi se rescrie sistemul de ecuaţii redus astfel:
56 Solicitarea elastică mono-dimensională Capitolul 2
n
~T ~ ~ n ~T n
~
e e e e e AeT K e Ae u
A
e 1
K A u A f
e 1 e 1
(2.181)
n
K A eT K e Ae (2.183)
e1
n
f A eT f e (2.184)
e1
1 3 4 2
3 5 1 4 2
Fig. 2.9. Discretizarea unui domeniu mono-dimensional în elemente finite.
Capitolul 2 Solicitarea elastică mono-dimensională 57
Se presupun date:
a) o matrice de conexiune Q care are o linie pentru fiecare element;
linia e a matricei Q conţine nodurile de capăt i şi j ale elementului e; în
acest exemplu matricea de conexiune Q este:
3 5
4 2
Q (2.186)
5 1
1 4
De notat că am considerat că în matricea de conexiune Q nodurile
sunt în ordinea: de la stânga la dreapta. Această restricţie este în legătură cu
modul în care a fost definită matricea de rigiditate în acest caz particular şi
nu aplică în general.
b) vectorul P ale cărui elemente sunt astfel încât:
0, dacă i u D
Pi (2.187)
1, dacă i u D
în acest exemplu
P T 0 1 1 0 0 (2.188)
În cazul în care pe nod sunt mai multe grade de libertate atunci P ,
este o matrice ale cărei coloane corespund unui anumit tip de grad de
libertate.
Pentru descrierea condiţiilor la limită esenţiale se introduce vectorul
u care conţine valorile impuse la limită.
Se prezintă mai jos script-ul MATLAB, date_asamb.m, folosit
pentru a descrie datele problemei din exemplul curent.
% date_asamb
%
% Descriere date utilizate la asamblare
%
% Exemplu de date 1d
%
% Vectorul/Matricea P
%
P=[0 1 1 0 0]
%
% Matricea Q
%
Q=[3 5; 4 2; 5 1; 1 4]
58 Solicitarea elastică mono-dimensională Capitolul 2
%
% Vectorul ub
%
ub=[111 111];
function [PA,PAt,PAb,L,M]=pre_asamb(P)
%
% Pregatire asamblare
%
% Vectorul/Matricea PA
%
ind=find(P>=0);
PA=zeros(size(P));
PA(ind)=ind;
%
% Vectorul/Matricea PAt
%
ind=find(P==0);
ind1=find(ind);
PAt=zeros(size(P));
PAt(ind)=ind1;
%
% Matricea L
%
L=zeros(prod(size(ind)),prod(size(P)));
L(:,ind)=eye(prod(size(ind)));
%
% Vectorul/Matricea PAb
%
ind=find(P~=0);
ind1=find(ind);
PAb=zeros(size(P));
PAb(ind)=ind1;
%
% Matricea M
%
M=zeros(prod(size(ind)),prod(size(P)));
M(:,ind)=eye(prod(size(ind)));
date_asamb
[PA,PAt,PAb,L,M]=pre_asamb(P)
Rezultă:
P =
0 1 1 0 0
PA =
1 2 3 4 5
PAt =
60 Solicitarea elastică mono-dimensională Capitolul 2
1 0 0 2 3
L =
1 0 0 0 0
0 0 0 1 0
0 0 0 0 1
PAb =
0 1 2 0 0
M =
0 1 0 0 0
0 0 1 0 0
P=[0 1 1 0 0]
cu instrucţiunea:
P=[0 0 1 0 0;
0 1 1 0 0]
se obţin rezultatele:
P =
0 0 1 0 0
0 1 1 0 0
PA =
1 3 5 7 9
2 4 6 8 10
PAt =
1 3 0 4 6
2 0 0 5 7
L =
Capitolul 2 Solicitarea elastică mono-dimensională 61
1 0 0 0 0 0 0 0 0 0
0 1 0 0 0 0 0 0 0 0
0 0 1 0 0 0 0 0 0 0
0 0 0 0 0 0 1 0 0 0
0 0 0 0 0 0 0 1 0 0
0 0 0 0 0 0 0 0 1 0
0 0 0 0 0 0 0 0 0 1
PAb =
0 0 2 0 0
0 1 3 0 0
M =
0 0 0 1 0 0 0 0 0 0
0 0 0 0 1 0 0 0 0 0
0 0 0 0 0 1 0 0 0 0
function afisare_a(Q,PA)
%
% Afisare matrice A si vectori a
%
% Stabileste:
% Gn numarul de grade de libertate pe nod
% Ne numarul de noduri pe element
% Ge numarul de grade de libertate pe element
% G numarul de grade de libertate pe structura
% M numarul de elemente pe structura
%
Gn=size(PA,1)
Ne=size(Q,2)
Ge=Gn*Ne
G=prod(size(PA))
M=size(Q,1)
Capitolul 2 Solicitarea elastică mono-dimensională 63
%
% O matrice A pentru fiecare linie din Q
%
for e=1:M
A=zeros(Ge,G); % initializare
GLe=[]; % gradele de libertate ale elementului e
for i=1:Ne
GLe=[GLe; PA(:,Q(e,i))];
end
for i=1:Ge % genereaza matricea Ae
A(i,GLe(i))=1;
end
e % afisare e
a=GLe % vectorul ae
A % afisare Ae
end
date_asamb
[PA,PAt,PAb,L,M]=pre_asamb(P)
afisare_a(Q,PA)
e = 3
1 a =
a = 5
3 1
5 A =
A = 0 0 0 0 1
0 0 1 0 0 1 0 0 0 0
0 0 0 0 1 e =
e = 4
2 a =
a = 1
4 4
2 A =
A = 1 0 0 0 0
0 0 0 1 0 0 0 0 1 0
0 1 0 0 0
e =
1. Se iniţializează:
a) K kl 0, k , l
2. Pentru e = 1,2,...,n:
a) se determină a e ;
b) se parcurg elementele Kije , i , j
) se determină k = a e (i) şi l = a e (j)
) K kl K kl Kije
66 Solicitarea elastică mono-dimensională Capitolul 2
function [K,f]=init_k_extins(PA)
%
% Initializare K si f extins
%
% Instructiunea syms se adauga numai pentru
% calcul simbolic
%
% syms K f
%
% Initializare la zero
%
d=max(max(PA));
K(1,1)=0;
K(d,d)=0;
f(1,1)=0;
f(d,1)=0;
date_asamb;
[PA,PAt,PAb,L,M]=pre_asamb(P)
[K,f]=init_k_extins(PA)
[K,f]=k_extins('mat_Ke_test',K, f, Q, PA)
[Ke,fe]=mat_Ke(Q,Gn,e)
Funcţia mat_Ke trebuie rescrisă pentru fiecare tip de element folosit. Pentru
testare se poate folosi funcţia mat_ke_test:
function [Ke,fe]=mat_Ke_test(Q,Gn,e)
%
% Determina matricea Ke si vectorul fe al elementului e
% Matricea descrisa aici are doar rolul de a permite
% verificarea procesului de asamblare.
%
Ne=size(Q,2); % numarul noduri pe element
Ge=Ne*Gn; % numarul de grade de libertate pe element
Ke=e*ones(Ge,Ge)*10^(e-1);
fe=e*ones(Ge,1)*10^(e-1);
1. Se iniţializează:
a) f k 0, k
2. Pentru e = 1,2,...,n:
a) se determină a e ;
b) se parcurg elementele f i e , i
) se determină k = a e (i)
) f k f k f i e
~ ~
Pentru efectuarea produselor AeT K e Ae se procedează ca şi la
~
efectuarea produselor AeT K e Ae utilizând însă vectorul P A în locul lui PA .
Corespunzător se utilizează vectorii a~e în loc de a e .
~
Matricea A1 se obţine astfel:
1 0 0
0 0 0
~ 0 0 1 0 0 0 0 0
A1 A1 LT 0 0 0 (2.208)
0 0 0 0 1 0 0 1
0 1 0
0 0 1
~
Celelalte matrice Ae sunt:
~ 0 1 0 ~ 0 0 1 ~ 1 0 0
A2 , A3 1 0 0 , A4 0 1 0 (2.209)
0 0 0
şi se obţin în acest caz particular din matricele Ae corespunzătoare prin
ştergerea coloanelor 2 şi 3.
Capitolul 2 Solicitarea elastică mono-dimensională 69
function afisare_at(Q,PAt)
%
% Afiseaza matricele At si vectorii at
%
% Stabileste:
% Gn numarul de grade de libertate pe nod
% Ne numarul de noduri pe element
% Ge numarul de grade de libertate pe element
% G numarul de grade de libertate pe structura
% M numarul de elemente pe structura
%
Gn=size(PAt,1)
Ne=size(Q,2)
Ge=Gn*Ne
G=max(max(PAt))
M=size(Q,1)
%
% O matrice At pentru fiecare linie din Q
%
for e=1:M
At=zeros(Ge,G); % initializare
GLe=[]; % gradele de libertate ale elementului e
70 Solicitarea elastică mono-dimensională Capitolul 2
for i=1:Ne
GLe=[GLe; PAt(:,Q(e,i))];
end
for i=1:Ge % genereaza matricea Ate
if GLe(i)~=0 At(i,GLe(i))=1; end
end
e % afisare e
at=GLe % vectorul ate
At % afisare Ate
end
date_asamb
[PA,PAt,PAb,L,M]=pre_asamb(P)
afisare_at(Q,PAt)
se obţin rezultatele:
3
e = 1
1 At =
at = 0 0
0 1
3 1 0
At = 0
0 0 0 e =
0 0 1 4
e = at =
2 1
at = 2
2 At =
0 1 0
At = 0
0 1 0 0 1
0 0 0 0
e =
3
at =
1. Se iniţializează:
Capitolul 2 Solicitarea elastică mono-dimensională 71
~
~
a) K kl 0, k , l
2. Pentru e = 1,2,...,m:
a) se determină a~e ;
b) se parcurg elementele Kije , i , j
) se determină k = a~e (i) şi l = a~e (j)
) dacă k 0 şi l 0 atunci
~
~ ~
~
K kl K kl Kij
1. Se iniţializează:
~
a) f k 0, k
4. Pentru e = 1,2,...,n:
a) se determină a~e ;
b) se parcurg elementele f i e , i
) se determină k = a~e (i)
) dacă k 0
~ ~
atunci f k f k f i e
~
2.16.7 Efectuarea produselor AeT K e Ae u
72 Solicitarea elastică mono-dimensională Capitolul 2
1. Se iniţializează:
a) f i e 0, i
b) se parcurg elementele Cij , i , j
) se calculează f i e f i e Cij u j
1. ue 0 ,
2. i a e (1),
3. dacă i 0 atunci ue (1) u (i),
4. j a e (2),
5. dacă j 0 atunci ue (2) u (j).
Pentru asamblarea matricei de rigiditate reduse (2.211), a vectorului
redus al forţelor exterioare (2.212) şi a contribuţiei condiţiilor la limită
esenţiale (2.213) la termenul liber al sistemului de ecuaţii MEF se poate
utiliza funcţia K_redus prezentată în continuare. De remarcat că pentru
implementare s-au folosit relaţiile (2.214) şi (2.215), pentru a impune
condiţiile la limită esenţiale. Se aminteşte mai întâi că vectorul u conţine
valorile condiţiilor la limită în ordinea numerotării gradelor de libertate ale
structurii. Se observă că procesul de asamblare a fost descompus în două
părţi: iniţializare şi asamblare propriu-zisă. Prima parte este implementată în
funcţia init_k_redus şi a doua parte în funcţia k_redus.
function [K,f]=init_k_redus(PAt)
%
% Initializare K si f redus
%
% Instructiunea syms se adauga numai pentru
% calculul simbolic
%
syms K f
%
% Initializare la zero
%
d=max(max(PAt));
K(1,1)=0;
K(d,d)=0;
f(1,1)=0;
f(d,1)=0;
date_asamb
[PA,PAt,PAb,L,M]=pre_asamb(P)
[K,f]=init_k_redus(PAt)
[K,f]=k_redus('mat_Ke_test', K, f, Q, PAt, PAb, ub)
function ue=determina_ue(e,ut,ub,Q,PAt,PAb)
%
% determina vectorul deplasarilor la elementul e
%
at=GLe(Q,PAt,e);
ab=GLe(Q,PAb,e);
ute=det_u_e(at,ut);
ube=det_u_e(ab,ub);
ue=ube+ute;
%
function a_=GLe(Q,PA_,e)
%
% Stabileste vectorii a_
%
Ne=size(Q,2); % numarul noduri pe element
Gn=size(PA_,1); % numarul de grade de
% libertate pe nod
a_=[];
for i=1:Ne
Nd=Q(e,i); % nodul curent
a_=[a_; PA_(:,Nd)];
end
%
function u_e=det_u_e(a_,u_)
%
% Stabileste u_e
%
Ge=size(a_,1); % numarul de grade de
% libertate pe element
syms u_e; % se utilizeaza numai in
% calculul simbolic
u_e(1,1)=0;
u_e(Ge,1)=0;
ind=find(a_~=0);
u_e(ind)=u_(a_(ind));
E E b d b d (2.224)
x x 0 0
x
Eu x Eu 0 b d d
0 0
(2.225)
x
Eu 0 x b d d
00
Se impune condiţia la limită esenţială:
Eu L Eu (2.226)
şi se obţine:
L
Eu Eu 0 L b dd (2.227)
00
de unde:
L
Eu 0 Eu L b dd (2.228)
00
78 Solicitarea elastică mono-dimensională Capitolul 2
x b d (2.230)
0
syms E
u=dsolve('E*D2u+b=0','E*Du(0)=s0','u(L)=uL','x');
u=simple(u); % cea mai simpla forma a lui u
Eu=E*u % produsul E*u
sigma=E*diff(u,'x');
sigma=simple(sigma) % cea mai simpla forma a lui sigma
Se obţin rezultatele:
Eu 1 2 bx 2 x 1 2 bL2 u E L (2.236)
bx (2.237)
Capitolul 2 Solicitarea elastică mono-dimensională 79
syms E
u=dsolve('E*D2u+b0*(L-x)/L+bL*x/L=0',...
'E*Du(0)=s0','u(L)=uL','x');
u=simple(u); % cea mai simpla forma a lui u
Eu=E*u
sigma=E*diff(u,'x');
sigma=simple(sigma) % cea mai simpla forma a lui sigma
Şi se obţin rezultatele:
80 Solicitarea elastică mono-dimensională Capitolul 2
bL2 L
1 2 u
E E
0 15 bL2 L
1 4 L 1 4bL
32 E 3 4 u
E
xn 1 2 L , un bL2 L , n 1 2 bL (2.238)
38 E 1 2 E u
3 4 L 3 4 bL
L 7 bL 1 4 L u
2
bL
32 E E
u
şi
18 L 18 bL
38 L
xm , m 38 bL (2.239)
5 8 L 58 bL
7 8 L 7 8 bL
x=0 x=L
Capitolul 2 Solicitarea elastică mono-dimensională 81
% date_e1
%
% date exemplu de calcul cu un element
%
P=[0 1]
%
Q=[1 2]
%
uL=sym('uL','positive');
ub=[uL];
function [Ke,fe]=mat_Ke_1(Q,Gn,e)
%
L=sym('L','positive');
E=sym('E','positive');
sb=sym('sb','positive');
b=sym('b','positive');
Ke(1,1)=E/L;
Ke(1,2)=-E/L;
Ke(2,1)=-E/L;
Ke(2,2)=E/L;
Capitolul 2 Solicitarea elastică mono-dimensională 83
fe(1,1)=-sb+b*L/2;
fe(2,1)=0+b*L/2;
% asamb_ext_1
%
% Asambleaza matricea extinsa
%
date_e1;
[PA,PAt,PAb,L,M]=pre_asamb(P)
[K,f]=init_k_extins(PA)
[K,f]=k_extins('mat_Ke_1',K, f, Q, PA)
% asamb_red_1
%
% Asambleaza matricea redusa
%
date_e1;
[PA,PAt,PAb,L,M]=pre_asamb(P)
[K,f]=init_k_redus(PAt)
[K,f]=k_redus('mat_Ke_1', K, f, Q, PAt, PAb, ub)
% det_sol_1
%
% determina si afiseaza solutia
%
ut=K\f; % rezolva sistemul de ecuatii
%
% genereaza si afiseaza u
%
syms u
indt=find(PAt~=0);
u(indt)=ut;
indb=find(PAb~=0);
u(indb)=ub;
u
84 Solicitarea elastică mono-dimensională Capitolul 2
%
% calculeaza si afiseaza sigma
%
syms E L s
Ne=size(Q,1); % numarul de elemente
for e=1:Ne
ue=determina_ue(e,ut,ub,Q,PAt,PAb);
s(e,1)=simple(E/L*(ue(2,1)-ue(1,1)));
end
s
2E 3
2
L
u u2 bL
4
(2.260)
% date_e2
%
% date exemplu de calcul cu doua elemente
%
P=[0 0 1]
%
Q=[1 2; 2 3]
%
uL=sym('uL','positive');
ub=[uL];
% asamb_ext_2
%
% Asambleaza matricea extinsa
%
date_e2;
[PA,PAt,PAb,L,M]=pre_asamb(P)
[K,f]=init_k_extins(PA)
[K,f]=k_extins('mat_Ke_2',K, f, Q, PA)
% asamb_red_2
%
% Asambleaza matricea redusa
%
date_e2;
[PA,PAt,PAb,L,M]=pre_asamb(P)
[K,f]=init_k_redus(PAt)
[K,f]=k_redus('mat_Ke_2', K, f, Q, PAt, PAb, ub)
% det_sol_2
%
% determina si afiseaza solutia
Capitolul 2 Solicitarea elastică mono-dimensională 87
%
ut=simple(K\f); % rezolva sistemul de ecuatii
%
% genereaza si afiseaza u
%
syms u
indt=find(PAt~=0);
u(indt,1)=ut;
indb=find(PAb~=0);
u(indb,1)=ub;
u
%
% calculeaza si afiseaza sigma
%
syms E L s
Ne=size(Q,1); % numarul de elemente
for e=1:Ne
ue=determina_ue(e,ut,ub,Q,PAt,PAb);
s(e,1)=simple(2*E/L*(ue(2,1)-ue(1,1)));
end
s
2E 11 7
2
L
u u2 b0 L bL L
24 24
(2.275)
Capitolul 2 Solicitarea elastică mono-dimensională 89
2.20.1 Introducere
b e Le 1
f exte (2.293)
2 1
unde
be este forţa distribuită pe lungimea elementului e (în unităţi forţă/volum);
f exte este vectorul de încărcare al elementului e;
2.20.4 Implementare
function date_sa
%
global X P F Q Eb
%
E=sym('E','positive');
L=sym('L','positive');
S=sym('S','positive');
%
% Descrierea nodurilor
%
X=[0 L 2*L];
P=[1 0 1];
F=[0 S 0];
%
% Descrierea elementelor
%
Q=[1 2; 2 3];
Eb=[ E 0; E 0];
2.20.4.2 Asamblarea matricei de rigiditate şi a vectorului termen liber.
date_sa;
[K,f,PAt]=asamb_red_0('mat_sa');
function [K,f,PAt]=asamb_red_0(f_mat)
%
% asamb_red_0
%
% Asambleaza matricea redusa
%
global P
PAt=pre_asamb_0(P)
[K,f]=init_k_redus(PAt)
[K,f]=k_redus_0(f_mat, K, f, PAt)
function PAt=pre_asamb_0(P)
96 Solicitarea elastică mono-dimensională Capitolul 2
%
% Pregatire asamblare
%
% Vectorul/Matricea PAt
%
ind=find(P==0);
ind1=find(ind);
PAt=zeros(size(P));
PAt(ind)=ind1;
function [K,f]=init_k_redus(PAt)
%
% Initializare K si f redus
%
% Numai pentru calcul simbolic
%
syms K f
%
% Initializare la zero
%
d=max(max(PAt));
K(1,1)=0;
K(d,d)=0;
f(1,1)=0;
f(d,1)=0;
function at=GLe(Q,PAt,e)
%
% Stabileste at
%
Ne=size(Q,2); % numarul noduri pe element
at=[];% gradele de libertate ale elementului e (libere)
for i=1:Ne
Nd=Q(e,i); % nodul curent
at=[at; PAt(:,Nd)];
end
function [Ke,fe]=mat_sa(e)
% stabileste matricea Ke si vectorul fe pe elementul e
global Q X Eb
% nodurile elementului
n1=Q(e,1);
n2=Q(e,2);
% abscisele nodurilor
x1=X(n1);
x2=X(n2);
% lungimea elementului
Le=x2-x1;
% caracteristici sectionale
Ee=Eb(e,1);
be=Eb(e,2);
% matricea de rididitate
Ke=[1 -1; -1 1]*Ee/Le
% vectorul de incarcare
fe=[1 ; 1]*be*Le/2;
det_sol_0('sol_sa',K,f,PAt);
function det_sol_0(tens,K,f,PAt)
% det_sol_0
%
% determina si afiseaza solutia
global Q
%
ut=simple(K\f); % rezolva sistemul de ecuatii
%
% genereaza si afiseaza u
%
% dimensiunea lui u
syms u
dim_u=prod(size(PAt));
u(1,1)=0;
u(dim_u,1)=0;
indt=find(PAt~=0);
u(indt,1)=ut;
Gn=size(PAt,1); % numarul de grade de libertate pe nod
N=size(PAt,2); % numarul de noduri
i=1;
fprintf(' n Deplasari\n');
for j=1:N
fprintf('%5d',j);
for k=1:Gn
a=char(u(i));
fprintf(' %14s',a);
i=i+1;
end;
fprintf('\n');
end
fprintf('\n');
%
% calculeaza si afiseaza sigma
%
Ne=size(Q,1); % numarul de elemente
fprintf(' e Efort\n');
for e=1:Ne
feval(tens,e,u);
end
Capitolul 2 Solicitarea elastică mono-dimensională 99
function sol_sa(e,u)
global Q X AEb
% nodurile elementului
n1=Q(e,1);
n2=Q(e,2);
% abscisele nodurilor
x1=X(n1);
x2=X(n2);
% lungimea elementului
Le=x2-x1;
% caracteristici sectionale
Ee=Eb(e,1);
be=Eb(e,2);
% deplasarile pe element
u1=u(n1);
u2=u(n2);
% tensiunea pe element
s=(u2-u1)*Ee/Le;
s_=char(s);
% afisare tensiune
fprintf('%5d %14s\n',e,s_);
Se obţin rezultatele:
n Deplasari
1 0
2 1/2*S/E*L
3 0
e Eforturi
1 1/2*S
2 -1/2*S
2.20.4.4 Concluzii
date_sa;
[K,f,PAt]=asamb_red_0('mat_sa');
det_sol_0('sol_sa',K,f,PAt);
100 Solicitarea elastică mono-dimensională Capitolul 2
e Eforturi
1 -1/2*S 1/2*S
2 1/2*S -1/2*S
Capitolul 2 Solicitarea elastică mono-dimensională 101
2.20.5.1 Exemplul 1
function date_sa_1
% Se presupune ca se face un calcul simbolic
global X P F Q Eb
%
E=sym('E','positive');
L=sym('L','positive');
S=sym('S','positive');
%
% Descrierea nodurilor
%
X=[0 L];
P=[0 1];
F=[S 0];
%
% Descrierea elementelor
%
Q=[1 2];
Eb=[E b];
Se obţin rezultatele:
n Deplasari
1 (1/2*L*b-S)/E*L
2 0
e Eforturi
1 -S -L*b+S
102 Solicitarea elastică mono-dimensională Capitolul 2
2.20.5.2 Exemplul 2
function date_sa_2
%
% Se presupune ca se face un calcul simbolic
global X P F Q Eb
%
E=sym('E','positive');
L=sym('L','positive');
S=sym('S','positive');
b=sym('b','positive');
%
% Descrierea nodurilor
%
X=[0 L/2 L];
P=[0 0 1];
F=[-S 0 0];
%
% Descrierea elementelor
%
Q=[1 2; 2 3];
Eb=[E b; E b];
date_sa_2;
[K,f,PAt]=asamb_red_0('mat_sa');
det_sol_0('sol_sa_1',K,f,PAt);
Se obţin rezultatele:
n Deplasari
1 (1/2*L*b-S)*L/E
2 1/8*L*(3*L*b-4*S)/E
3 0
e Eforturi
Capitolul 2 Solicitarea elastică mono-dimensională 103
1 -S -1/2*L*b+S
2 1/2*L*b-S -L*b+S
x
u h
u D
u
oricare ar fi h V h
unde ecuaţia variaţională se descompune astfel:
n
G h , h Ge h , h (2.301)
e1
0 , u L u (2.305)
şi că nodurile sunt numerotate în ordine 1,2,...,n începând de la x = 0 şi
terminând cu x = L. Evident că pentru alte condiţii la limită se vor obţine în
continuare alte relaţii. În acest caz rezultă:
h
m n1
G h , h h bdx h 0 h 0 h xi h xi h xi
e1 D
e
x i2
e 1 De
h
x
b dx h h
e 1
De
e 1 De
h
dx
dx h bdx
e 1 De
unde
h h
De
h x e2 h x e2 h x e1 h x e1 (2.311)
Capitolul 2 Solicitarea elastică mono-dimensională 105
m
e 1
h h
De
n 1
h xn h xn h x1 h x1 h xi h xi h xi h xi
i 2
n 1
h xn h xn h x1 h x1 h xi h xi h xi
i 2
- se ţine cont de (2.308) şi (2.309):
m
h h
h x 1 (2.312)
De
e 1