Strumenti Utente

Strumenti Sito


wikipaom2015:lez19

Differenze

Queste sono le differenze tra la revisione selezionata e la versione attuale della pagina.

Link a questa pagina di confronto

Entrambe le parti precedenti la revisione Revisione precedente
wikipaom2015:lez19 [2015/07/08 18:19]
166250
wikipaom2015:lez19 [2015/07/21 18:00] (versione attuale)
166250
Linea 10: Linea 10:
 ====Analisi della subroutine per il processo di vincolamento in una matrice di rigidezza bandata==== ====Analisi della subroutine per il processo di vincolamento in una matrice di rigidezza bandata====
 {{:​wikipaom2015:​vincola.jpg?​300|}}\\ \\  {{:​wikipaom2015:​vincola.jpg?​300|}}\\ \\ 
-''​idof''​= gdl scelto per il vincolamento (idof-esima riga della matrice globale)\\ ''​val''​= valore imposto come vincolo\\ ''​nsize''​ = 2*nodes = numero gdl totali\\ ''​aband''​ = strutk (bandata)\\ ''​b''​ = forces (termine noto)\\ \\ Il processo da seguire per il vincolamento di un gdl è sempre quello visto nelle lezioni precendenti ([[wikipaom2015:​lez06|Lezione 6]]), ovviamente però la subroutine deve essere riadattata per poter lavorare con una matrice non più piena ma //​bandata//​.\\ {{:​wikipaom2015:​matrice_bandata.jpg?​300 ​ |}} \\ Operativamente parlando, nella matrice **aband** il __primo__ elemento della riga //​idof-esima//​ corrisponde a quello __diagonale__ (nella matrice piena) al quale va sostituito "​**1**";​ gli elementi __sopradiagonali__ (appartenenti alla banda nella matrice di rigidezza globale piena) devono essere presi in __diagonale a 45°__; quelli __sottodiagonali__ (non stoccati direttamente),​ siccome è possibile ​sfruttabile ​la proprietà di //​simmetria//​ della matrice piena, sono tutti quelli (tranne il primo) posti alla __riga idof-esima__ della matrice bandata; in questo modo si riesce a “ricostruire” tutta la //​idof-esima colonna// della matrice piena (utile concettualmente per seguire passo-passo in processo di vincolamento già visto).\\ ​+''​idof''​= gdl scelto per il vincolamento (idof-esima riga della matrice globale)\\ ''​val''​= valore imposto come vincolo\\ ''​nsize''​ = 2*nodes = numero gdl totali\\ ''​aband''​ = strutk (bandata)\\ ''​b''​ = forces (termine noto)\\ \\ Il processo da seguire per il vincolamento di un gdl è sempre quello visto nelle lezioni precendenti ([[wikipaom2015:​lez06|Lezione 6]]), ovviamente però la subroutine deve essere riadattata per poter lavorare con una matrice non più piena ma //​bandata//​.\\ {{:​wikipaom2015:​matrice_bandata.jpg?​300 ​ |}} \\ Operativamente parlando, nella matrice **aband** il __primo__ elemento della riga //​idof-esima//​ corrisponde a quello __diagonale__ (nella matrice piena) al quale va sostituito "​**1**";​ gli elementi __sopradiagonali__ (appartenenti alla banda nella matrice di rigidezza globale piena) devono essere presi in __diagonale a 45°__; quelli __sottodiagonali__ (non stoccati direttamente),​ siccome è possibile ​sfruttare ​la proprietà di //​simmetria//​ della matrice piena, sono tutti quelli (tranne il primo) posti alla __riga idof-esima__ della matrice bandata; in questo modo si riesce a “ricostruire” tutta la //​idof-esima colonna// della matrice piena (utile concettualmente per seguire passo-passo in processo di vincolamento già visto).\\ ​
 Sono implementati due cicli ''​do''​ __separati__,​ uno per trattare gli elementi **sopradiagonali** e l’altro per quelli **sottodiagonali** in cui scorre un indice "​**j**";​ tali indici scorrono da 1 al minimo tra due grandezze che indicano sostanzialmente i limiti da non superare per rimanere all’interno della banda e all’interno della matrice piena, questo per non rischiare di andare a cercare termini che non sono dentro la banda, quindi non sono da considerare assolutamente o che addirittura non esistono!\\ Per seguire il processo di vincolamento,​ all’interno di ogni ciclo, scorrendo l’indice di riga, (muovendosi quindi lungo l’__idof-esima colonna__ della matrice piena) viene selezionato un elemento, moltiplicato per **val**, cambiato di segno e aggiunto all’elemento ternime noto //​corrispondente//​ (con stesso indice di riga), una volta fatta questa operazione il termine considerato in partenza nella matrice di banda viene azzerato.\\ \\ Sono implementati due cicli ''​do''​ __separati__,​ uno per trattare gli elementi **sopradiagonali** e l’altro per quelli **sottodiagonali** in cui scorre un indice "​**j**";​ tali indici scorrono da 1 al minimo tra due grandezze che indicano sostanzialmente i limiti da non superare per rimanere all’interno della banda e all’interno della matrice piena, questo per non rischiare di andare a cercare termini che non sono dentro la banda, quindi non sono da considerare assolutamente o che addirittura non esistono!\\ Per seguire il processo di vincolamento,​ all’interno di ogni ciclo, scorrendo l’indice di riga, (muovendosi quindi lungo l’__idof-esima colonna__ della matrice piena) viene selezionato un elemento, moltiplicato per **val**, cambiato di segno e aggiunto all’elemento ternime noto //​corrispondente//​ (con stesso indice di riga), una volta fatta questa operazione il termine considerato in partenza nella matrice di banda viene azzerato.\\ \\
 __Oss__: le due operazioni non possono essere invertite, altrimenti se prima si azzera poi si moltiplica di fatto non si aggiunge nessun contributo!\\ __Oss__: le due operazioni non possono essere invertite, altrimenti se prima si azzera poi si moltiplica di fatto non si aggiunge nessun contributo!\\
wikipaom2015/lez19.txt · Ultima modifica: 2015/07/21 18:00 da 166250