next up previous contents
Next: About this document ... Up: Assemblaggio della matrice di Previous: Assemblaggio della matrice di   Indice

La matrice di puntatori TRIJA

L'operazione di assemblaggio della matrice di rigidezza globale è resa picomplessa dalla memorizzazione compatta di $ H$. L'elemento globale $ h_{i,j}$ va, infatti, sempre cercato nel vettore SYSMAT a partire dalla posizione IA$ (i)$ attraverso lo scorrimento delle componenti di JA. Per facilitare tale operazione, si può definire una matrice tridimensionale di puntatori denominata TRIJA (Figura 3).

Figura 3: Struttura della matrice tridimensionale dei puntatori TRIJA.
\includegraphics[width=7cm]{trija.eps}

La matrice tridimensionale TRIJA è un insieme di matrici $ 3 \times 3$ generate per ciascun elemento triangolare. L'elemento TRIJA$ (i,j,k)$ individua l'indice $ ind$ della componente del vettore SYSMAT relativo alla matrice globale $ H$ a cui va aggiunto il contributo locale $ h_{i,j}^{(k)}$, cioè il termine in posizione $ (i,j)$ della matrice locale generata sull'elemento $ k$.

Determiniamo, ad esempio, la componente della matrice TRIJA relativa all'elemento 2 della patch riportata in Figura 2. Data la successione dei nodi 4,3,2, il contributo locale alla matrice di rigidezza possiede la seguente struttura:



  4 3 2
4 $ h_{1,1}^{(2)}$ $ h_{1,2}^{(2)}$ $ h_{1,3}^{(2)}$
3 $ h_{2,1}^{(2)}$ $ h_{2,2}^{(2)}$ $ h_{2,3}^{(2)}$
2 $ h_{3,1}^{(2)}$ $ h_{3,2}^{(2)}$ $ h_{3,3}^{(2)}$



La corrispondente matrice TRIJA$ (i,j,2)$ avrà coefficienti non nulli solo nei termini per cui, detti $ ii$ e $ jj$ gli indici globali dei nodi, vale $ jj \geq ii$. Ad esempio, l'elemento $ h_{1,1}^{(2)}$ corrisponde ad $ ii=jj=4$, cioè all'elemento diagonale della matrice globale $ h_{4,4}$. La posizione $ ind$ in SYSMAT di tale elemento è individuata da IA$ (ii)$, vale a dire 9 nel caso in esame. Agli elementi $ h_{1,2}^{(2)}$, $ h_{1,3}^{(2)}$ e $ h_{2,3}^{(2)}$ corrispondono indici $ jj < ii$ e pertanto gli elementi ad essi collegati in TRIJA sono nulli. L'elemento $ h_{2,1}^{(2)}$ contribuisce, invece, al termine globale $ h_{3,4}$, la cui posizione $ ind$ in SYSMAT è determinata partendo da IA(3) e scorrendo JA fintantoché si trova l'indice 4. Nel caso in esame, quindi, l'elemento corrispondente in TRIJA è 8. Proseguendo in questo modo per gli altri contributi locali, si trova TRIJA$ (i,j,2)$:



9 0 0
8 7 0
6 5 4



La procedura appena descritta può essere implementata mediante il seguente algoritmo:




001 Per $ k=1,ne$
002 trasferimento nodi dell'elemento $ k$ in I2(3)
003 Per $ i=1,3$
004 $ ii:=$ I2$ (i)$
005 Per $ j=1,3$
006 $ jj:=$ I2$ (j)$
007 TRIJA $ (i,j,k):=0$
008 Se $ jj \geq ii$
009 $ ind:=$ IA$ (ii)$
010 Se JA$ (ind)=jj$
011 TRIJA $ (i,j,k):=ind$
012 Altrimenti
013 $ ind:=ind+1$
014 vai all'istruzione 010
015 Fine Se
016 Fine Se
017 Fine Per
018 Fine Per
019 Fine Per




Determinata la matrice dei puntatori TRIJA, l'operazione di assemblaggio dei contributi locali sulla matrice globale diventa pressoché immediata.


next up previous contents
Next: About this document ... Up: Assemblaggio della matrice di Previous: Assemblaggio della matrice di   Indice
Massimiliano Ferronato 2004-11-05