• Non ci sono risultati.

Elementi finiti: esempio in MATLab

N/A
N/A
Protected

Academic year: 2022

Condividi "Elementi finiti: esempio in MATLab"

Copied!
43
0
0

Testo completo

(1)

Elementi finiti: esempio in MATLab

®

Giovanni Miano

Corso di Modelli Numerici per i Campi

(2)

Problema

Ω

∂Ω

2

u = f P ( )

u

∂Ω

= g

⎨ ⎪

⎩⎪

(3)

%  Matrice  p:  matrice  dei  nodi  della  mesh  [2xNp],  dove  Np  è  il  numero  dei   nodi   della   mesh   (interni   +   quelli   di   fron>era).   La   prima   riga   con>ene   le   ascisse   dei   nodi,   la   seconda   le   ordinate.   I   nodi   sono   numera>   in   base   all’indice  di  colonna.  

(4)

%  Matrice  p:  matrice  dei  nodi  della  mesh  [2xNp],  dove  Np  è  il  numero  dei   nodi   della   mesh   (interni   +   quelli   di   fron>era).   La   prima   riga   con>ene   le   ascisse   dei   nodi,   la   seconda   le   ordinate.   I   nodi   sono   numera>   in   base   all’indice  di  colonna.  

(5)

%  Matrice  e:  matrice  del  contorno  della  mesh  [7xNe],  dove  Ne  è  il  numero  di   nodi   di   fron>era.   La   prima   e   la   seconda   riga   contengono   gli   indici   dei   nodi   iniziali  e  finali  dei  la>  di  fron>era;  la  terza  e  la  quarta  riga  contengono  i  valori   iniziali  e  finali  di  un  parametro  non  rilevante  ai  fini  della  nostra  traKazione;  la   quinta  riga  con>ene  il  numero  che  iden>fica  il  lato  di  fron>era,  la  sesta  e  la   seLma   contengono   i   numeri   che   iden>ficano   i   soKodomini   a   destra   e   a   sinistra  del  lato  di  fron>era.  

1

2

N

e

(6)

%  Matrice  e:  matrice  del  contorno  della  mesh  [7xNe],  dove  Ne  è  il  numero  di   nodi   di   fron>era.   La   prima   e   la   seconda   riga   contengono   gli   indici   dei   nodi   iniziali  e  finali  dei  la>  di  fron>era;  la  terza  e  la  quarta  riga  contengono  i  valori   iniziali  e  finali  di  un  parametro  non  rilevante  ai  fini  della  nostra  traKazione;  la   quinta  riga  con>ene  il  numero  che  iden>fica  il  lato  di  fron>era,  la  sesta  e  la   seLma   contengono   i   numeri   che   iden>ficano   i   soKodomini   a   destra   e   a   sinistra  del  lato  di  fron>era.  

(7)

%  Matrice  t:  matrice  dei  triangoli  della  mesh  [4xNt],  dove  Nt  è  il  numero  di   triangoli.   La   colonna   r-­‐ma   corrisponde   al   r-­‐mo   triangolo   e   con>ene   la   terna   an>oraria   degli   indici   dei   suoi   ver>ci   i,   j,   k.   Il   valore   nella   quarta   riga   è   il   numero  che  idenfica  il  soKodominio  al  quale  appar>ene  il  triangolo.  E’  u>le   per   problemi   con   parametri   costan>   a   traL   (ad   esempio   dieleKrici   con   diverse  permiLvità,  ecc.).  

T

n

V

( )i

V

( )j

V

( )k

(8)

%  Matrice  t:  matrice  dei  triangoli  della  mesh  [4xNt],  dove  Nt  è  il  numero  di   triangoli.   La   colonna   r-­‐ma   corrisponde   al   r-­‐mo   triangolo   e   con>ene   la   terna   an>oraria   degli   indici   dei   suoi   ver>ci   i,   j,   k.   Il   valore   nella   quarta   riga   è   il   numero  che  idenfica  il  soKodominio  al  quale  appar>ene  il  triangolo.  E’  u>le   per   problemi   con   parametri   costan>   a   traL   (ad   esempio   dieleKrici   con   diverse  permiLvità,  ecc.).  

(9)

%  Dimensioni  delle  matrici  t,  p,  e    Np=size(p,2);  %  numero  di  nodi  

Ne=size(e,2);  %  numero  di  nodi  di  fron>era   Nt=size(t,2);  %  numero  di  triangoli  della  mesh  

(10)

%  Dichiarazione  delle  matrici  K,  F,  U,  FR    K=sparse(Np,Np);  %  matrice  di  s>ffness   F=zeros(Np,1);  %  termine  noto  

U=zeros(Np,1);  %  veKore  delle  incognite  nodali   Fr=e(1,:);  %  indici  dei  nodi  di  fron>era  

(11)

%  Condizione  al  contorno  

 U(Fr)=g_fun(p(1,Fr),p(2,Fr));  %  impone  U  =  g  sulla  fron>era  del  dominio.  

(12)

 %  Assemblaggio  matrice  di  s>ffness  e  termine  noto  “f”  

 for  n=1:Nt  

 %  indici  dei  nodi  del  triangolo  n-­‐mo    ni=t(1,n);    

nj=t(2,n);  

nk=t(3,n);  

 %  coordinate  dei  ver>ci  del  triangolo  n-­‐mo    xi=p(1,ni);    

yi=p(2,ni);  

xj=p(1,nj);  

yj=p(2,nj);  

xk=p(1,nk);  

yk=p(2,nk);  

(13)

y

x T

n

V

( )i

V

( )j

V

( )k

r

Area ( ) T

n

= 1 2 det D ( )

n

Elemento  

D

n

=

1 x

( )i

y

( )i

1 x

( )j

y

( )j

1 x

( )k

y

( )k

(14)

l

n( )r

( ) r = a

n

( )r

x + b

n( )r

y + c

n( )r

a

n( )r

= 1

2A ( ) T

n

( y

( )s

− y

( )t

) b

n( )r

= − 2A 1 T

( )

n

( x

( )s

− x

( )t

)

c

n( )r

= 1

2A ( ) T

n

( x

( )s

y

( )t

− x

( )t

y

( )s

)

r = i, j,k s = j,k,i t = k,i, j Polinomi  Lagrangiani  di  Grado  1  

y

x T

n

V

( )i

V

( )j

V

( )k

r

(15)

D=[1  xi  yi;  1  xj  yj;  1  xk  yk];    

 A=det(D)/2;  %  area  del  triangolo  n-­‐mo    ai=(yj-­‐yk)/A/2;  

bi=-­‐(xj-­‐xk)/A/2;  

 aj=(yk-­‐yi)/A/2;  

bj=-­‐(xk-­‐xi)/A/2;  

 ak=(yi-­‐yj)/A/2;  

bk=-­‐(xi-­‐xj)/A/2;  

(16)

A

ii

= A

ii

+ ∇ϕ

i 2

dS

Tn

Contributo del triangolo T

n

alla matrice di stiffness

T

n

V

( )i

V

( )j

V

( )k

(17)

ϕ

i Tn

= a

n( )i

x + b

n( )i

y + c

n( )i

∇ϕ

i Tn

= a

n( )i

ˆx + b

n( )i

ˆy Contributo del triangolo T

n

alla matrice di stiffness

T

n

V

( )i

V

( )j

V

( )k

A

ii

= A

ii

+ ∇ϕ

i 2

dS

Tn

(18)

∇ϕ

i Tn 2

= a ( )

n( )i 2

+ b ( )

n( )i 2

ϕ

i Tn

= a

n( )i

x + b

n( )i

y + c

n( )i

∇ϕ

i Tn

= a

n( )i

ˆx + b

n( )i

ˆy Contributo del triangolo T

n

alla matrice di stiffness

T

n

V

( )i

V

( )j

V

( )k

A

ii

= A

ii

+ ∇ϕ

i 2

dS

Tn

(19)

∇ϕ

i Tn 2

= a ( )

n( )i 2

+ b ( )

n( )i 2

ϕ

i Tn

= a

n( )i

x + b

n( )i

y + c

n( )i

∇ϕ

i Tn

= a

n( )i

ˆx + b

n( )i

ˆy

∇ϕ

i 2

dS

Tn

= a ⎡⎣

n( )i 2

+ b

n( )i 2

⎤⎦A T ( )

n

Contributo del triangolo T

n

alla matrice di stiffness

T

n

V

( )i

V

( )j

V

( )k

A

ii

= A

ii

+ ∇ϕ

i 2

dS

Tn

(20)

∇ϕ

i Tn 2

= a ( )

n( )i 2

+ b ( )

n( )i 2

ϕ

i Tn

= a

n( )i

x + b

n( )i

y + c

n( )i

∇ϕ

i Tn

= a

n( )i

ˆx + b

n( )i

ˆy

A

ii

= A

ii

+ a ⎡⎣

n( )i 2

+ b

n( )i 2

⎤⎦A T ( )

n

Contributo del triangolo T

n

alla matrice di stiffness

T

n

V

( )i

V

( )j

V

( )k

A

ii

= A

ii

+ ∇ϕ

i 2

dS

Tn

(21)

%  contribu>  del  triangolo  n-­‐mo  alla  matrice  di  s"ffness    K(ni,ni)  =  K(ni,ni)  +  (ai*ai+bi*bi)*A;    

K(nj,nj)  =  K(nj,nj)  +  (aj*aj+bj*bj)*A;  

K(nk,nk)  =  K(nk,nk)  +  (ak*ak+bk*bk)*A;  

(22)

Contributo del triangolo T

n

alla matrice di stiffness

T

n

V

( )i

V

( )j

V

( )k

A

ji

= A

ji

+ ∇ϕ

j

⋅∇ϕ

i

dS

Tn

(23)

Contributo del triangolo T

n

alla matrice di stiffness

T

n

V

( )i

V

( )j

V

( )k

A

ji

= A

ji

+ ∇ϕ

j

⋅∇ϕ

i

dS

Tn

ϕ

i Tn

= a

n( )i

x + b

n( )i

y + c

n( )i

ϕ

j Tn

= a

n( )j

x + b

n( )j

y + c

n( )j

(24)

∇ϕ

j

⋅∇ϕ

i

= a

n( )j

a

n( )i

+ b

n( )j

b

n( )i

Contributo del triangolo T

n

alla matrice di stiffness

T

n

V

( )i

V

( )j

V

( )k

A

ji

= A

ji

+ ∇ϕ

j

⋅∇ϕ

i

dS

Tn

ϕ

i Tn

= a

n( )i

x + b

n( )i

y + c

n( )i

ϕ

j Tn

= a

n( )j

x + b

n( )j

y + c

n( )j

(25)

ϕ

i Tn

= a

n( )i

x + b

n( )i

y + c

n( )i

A

ji

= A

ji

+ a ⎡⎣

n( )j

a

n( )i

+ b

n( )j

b

n( )i

⎤⎦A T ( )

n

Contributo del triangolo T

n

alla matrice di stiffness

T

n

V

( )i

V

( )j

V

( )k

A

ji

= A

ji

+ ∇ϕ

j

⋅∇ϕ

i

dS

Tn

∇ϕ

j

⋅∇ϕ

i

= a

n( )j

a

n( )i

+ b

n( )j

b

n( )i

ϕ

j Tn

= a

n( )j

x + b

n( )j

y + c

n( )j

(26)

%  contribu>  del  triangolo  alla  matrice  di  s"ffness    K(ni,ni)  =  K(ni,ni)  +  A*(ai*ai+bi*bi);    

K(nj,nj)  =  K(nj,nj)  +  A*(aj*aj+bj*bj);  

K(nk,nk)  =  K(nk,nk)  +  A*(ak*ak+bk*bk);  

K(ni,nj)  =  K(ni,nj)  +  A*(ai*aj+ai*aj);  

K(ni,nj)  =  K(ni,nj)  +  (ai*aj+bi*bj)*A;  

K(nj,ni)  =  K(ni,nj);  

K(ni,nk)  =  K(ni,nk)  +  (ai*ak+bi*bk)*A;  

K(nk,ni)  =  K(ni,nk);  

K(nj,nk)  =  K(nj,nk)  +  (aj*ak+bj*bk)*A;  

K(nk,nj)  =  K(nj,nk);  

(27)

Contributo del triangolo T

n

alla matrice di stiffness

T

n

V

( )i

V

( )j

V

( )k

F

i

= F

i

+

T

ϕ

i

( ) r f r ( ) dS

n

(28)

ϕ

i

( ) r ⋅ f r ( ) dS

Tn

ϕ

i

( ) r

bn

f r ( )

bn

A ( ) T

n

ϕ

i

( ) r

bn

= 1 3

Contributo del triangolo T

n

alla matrice di stiffness

T

n

V

( )i

V

( )j

V

( )k

F

i

= F

i

+

T

ϕ

i

( ) r f r ( ) dS

n

(29)

ϕ

i

( ) r

bn

= 1 3

F

i

≅ F

i

+ 1

3 ˆf r ( )

bn

A ( ) T

n

Contributo del triangolo T

n

alla matrice di stiffness

T

n

V

( )i

V

( )j

V

( )k

F

i

= F

i

+

T

ϕ

i

( ) r f r ( ) dS

n

ϕ

i

( ) r ⋅ f r ( ) dS

Tn

ϕ

i

( ) r

bn

f r ( )

bn

A ( ) T

n

(30)

%  contribu>  del  triangolo  al  termine  noto  

 %  coordinate  del  baricentro  del  triangolo  n-­‐mo   xc  =  (xi+xj+xk)/3;  yc=(yi+yj+yk)/3;  

F([ni  nj  nk])  =  F([ni  nj  nk])+f_fun(xc,yc)*A/3;  %  assemblaggio  termine  noto    end  %  “end  ciclo  for  sui  triangoli”    

(31)

%  Contributo  fron>era    for  h=1:Np  %  ciclo  sui  nodi  

F=F  +  K(1:Np,h)*U(h);  %  completo  termine  noto  

if  any(h==e(1,1:Ne))  %  se  il  nodo  "h"  è  di  fron>era  allora   K(h,1:Np)=zeros(1,Np);  %  azzero  riga  h-­‐ma  di  K  

K(1:Np,h)=zeros(Np,1);  %  azzero  la  colonna  h-­‐ma  di  K    end  

end  

(32)

Matrice K

Ni    numero  dei  nodi  interni;  Ne  numero  dei  nodi  di  fron>era;    

Np  =  Ni  +  Ne  numero  totale  di  nodi.  

K = A A

A

T

A

∂∂

Np  righe  

Np  colonne   Ne          

( ) A

ij

= ∇ϕ

i

, ∇ϕ

j

i, j = 1,2,..., N

i

A

∂∂

( )

mn

= ∇ϕ

m

, ∇ϕ

n

m,n = 1,2,..., N

e

Ni          

A

( )

in

= ∇ϕ

i

, ∇ϕ

n

i = 1,2,..., N

i

n = 1,2,...N

e

(33)

Matrice K

Ni    numero  dei  nodi  interni;  Ne  numero  dei  nodi  di  fron>era;    

Np  =  Ni  +  Ne  numero  totale  di  nodi.  

K = A A

A

T

A

∂∂ Ne  righe  corrisponden>    

ai  nodi  di  fron>era  

Ne  colonne  corrisponden>    

ai  nodi  di  fron>era  

(34)

Matrice K, termine noto F

Ni    numero  dei  nodi  interni;  Ne  numero  dei  nodi  di  fron>era;    

Np  =  Ni  +  Ne  numero  totale  di  nodi.  

K = A A

A

T

A

∂∂

F = F

i

F

(35)

K1  =  sparse(Np-­‐Ne,Np);  %  matrice  di  s>ffness  ausiliaria  ridoKa   A  =  sparse(Np-­‐Ne,Np-­‐Ne);  %  matrice  di  s>ffness  ridoKa  

FI  =  zeros(Np-­‐Ne,1);  %  termine  noto  ridoKo  ai  soli  pun>  interni  

(36)

w=1;  

for  h=1:Np  %  ciclo  di  eliminazione  righe  di  K  corrisponden>  ai  nodi  di  fron>era   if  K(h,h)~=0  

K1(w,1:Np)=K(h,1:Np);  

FI(w)=F(h);  

w=w+1;  

end   end  

(37)

w=1;  

for  h=1:Np  %  ciclo  di  eliminazione  colonne  di  K  corrisponden>  ai  nodi  di  fron>era   if  K(h,h)~=0  

A(1:Np-­‐Ne,w)  =  K1(1:Np-­‐Ne,h);  

w=w+1;  

end   end  

(38)

UI=A\-­‐FI;  %  soluzione  del  problema  ridoKo  

(39)

w=1;  

 for  h=1:Np  %  ricostruzione  dell'incognita  su  tuL  i  nodi   if  not(any(h==e(1,1:Ne)))  

U(h)=UI(w);  

w=w+1;  

 end   end    

(40)

pdeplot(p,e,t,'xydata',U,'contour','on');  %  plot  della  soluzione  

(41)

A A

0 I

U

i

U

e

= − F

i

−G

e

Un  modo  diverso  di  imporre  le  condizioni  al  contorno  

K   U   F  

I

e’  la  matrice  iden>tà  Ne  x  Ne.    

         e’  il  veKore  dei  campioni  della  funzione  g  (condizione  al  contorno)  nei  nodi  del   contorno.  

G

e

(42)

%  Contributo  fron>era  

K(Fr,1:Np)=0;  %  implementazione  delle  condizioni  al  contorno  >po  Dirichlet  

%  nel  nodo  h-­‐mo  di  fron>era  l’equazione  è  U(h)=g(h)   for  h=1:Ne    

K(Fr(h),Fr(h))=1;  

end  

F(Fr)=-­‐U(Fr);  

Un  modo  diverso  di  imporre  le  condizioni  al  contorno  

(43)

%  Soluzione  del  sistema  lineare   U=K\-­‐F;    

%  plot  della  soluzione  

pdeplot(p,e,t,'xydata',U,'contour','on');    

Un  modo  diverso  di  imporre  le  condizioni  al  contorno  

Riferimenti

Documenti correlati

Because the European Commission, which has a monopoly on initiating legislative proposals under the EC Treaty, also had an environmental department since the early 1970s,

Among these are the weak incentives for EU citizens to apply for Austrian citizenship because this would not add significantly to their rights (except that of voting in

In Hungary around 2001-2002 when external citizenship was first proposed in connection with the socalled Status Law granting mostly cultural benefits to external ethnic Hungarians

Como sabe bien la autora, la literatura es aprendizaje, igual que la vida; según ella, aprender no es experimentar la vida sin más, sino ganar en comprensión de los demás

Il piano prevede 10 zone di intervento, uguali per ogni fiume, dislocate per quanto riguarda l’Ombrone, dalla località Pontelungo fino a Poggio a Caiano, per il Bisenzio, dalla

With the signing of the Memorandum of Understanding on Specific Economic Policy Conditionality (MoU) by the so-called 'Troika' (International Monetary Fund, European

We find that one percentage point increase in the enrollment ratio reduces adolescent crime by 2.47 percent, and that the effect is highly heterogeneous across areas and

Ogni nodo perimetrale degli elementi plate del vertice della lastra si collega tramite 2 link tipo master-slave ed 1 elemento beam tipo point contact - normal (tabella