I vincoli interni sono costituiti essenzialiamente da condizioni di vincolo di tipo geometrico imposte fra gli spostamenti di alcuni nodi. Nel seguito si indicherà con la notazione di nodo Master il primo nodo definito nel vincolo interno e di nodo Slave il secondo nodo collegato dal vincolo interno.
Avremo inoltre:
dx = x.nodoSlave - x.nodoMaster
dy = y.nodoSlave - y.nodoMaster
dz = z.nodoSlave - z.nodoMaster
In Winstrand sono implementate diverse forme di vincolo interno:
Impone tra due nodi i e j l'uguaglianza delle componenti di spostamento selezionate dall'utente.
Si tratta cioè di una o più relazioni del tipo
Ui = Uj
come ad esempio
Ux.nodo128 = Ux.nodo546
Il numero di equazioni generate è pari al numero di componenti di spostamento vincolate.
Impone tra due nodi i e j l'uguaglianza delle componenti di spostamento traslazionale lungo una retta ij.
Si tratta cioè di una relazione del tipo
Ui = Uj
valutata lungo la retta d'azione del vincolo interno.
Il numero di equazioni generate è pari ad uno che coinvolge da una a tre componenti di traslazione dei due nodi.
Impone tra due nodi i e j gli spostamenti di corpo rigido sul piano di vincolamento trascurando la conservazione della rotazione Rz.
Si tratta cioè di una coppia di relazioni del tipo
Ux.slave = Ux.master - dy Rz.master
Uy.slave = Uy.master + dx Rz.master
Si deve considerare che il piano di vincolamento può essere un piano coordinato qualunque o un piano generico. In base a ciò si riconosce che le espressioni poste ad esempio assumono il corretto significato se si considera il piano X-Y come piano di vincolamento. Negli altri casi si dovrà porre l'opportuna rotazione degli indici e nel caso generico la rotazione da considerare è quella con vettore parallelo al versore del piano considerato.
Si fa osservare che queste due condizioni di vincolo:
Il numero di equazioni generate è pari a due.
Impone tra due nodi i e j gli spostamenti di corpo rigido sul piano di vincolamento.
Si tratta cioè di una terna di relazioni del tipo
Ux.slave = Ux.master - dy Rz.master
Uy.slave = Uy.master + dx Rz.master
Rz.slave = Rz.master
Si deve considerare che il piano di vincolamento può essere un piano coordinato qualunque o un piano generico. In base a ciò si riconosce che le espressioni poste ad esempio assumono il corretto significato se si considera il piano X-Y come piano di vincolamento. Negli altri casi si dovrà porre l'opportuna rotazione degli indici e nel caso generico la rotazione da considerare è quella con vettore parallelo al versore del piano considerato.
Si fa osservare che queste due condizioni di vincolo:
Il numero di equazioni generate è pari a tre.
Impone tra due nodi i e j gli spostamenti di corpo rigido nello spazio tridimensionale trascurando la conservazione delle rotazioni Rx, Ry, Rz.
Si tratta cioè di una terna di relazioni del tipo
Ux.slave = Ux.master - dy Rz.master + dz Ry.master
Uy.slave = Uy.master + dx Rz.master - dz Rx.master
Uz.slave = Uz.master + dy Rx.master - dx Ry.master
Si fa osservare che queste tre condizioni di vincolo:
Il numero di equazioni generate è pari a tre.
Impone tra due nodi i e j gli spostamenti di corpo rigido nello spazio tridimensionale.
Si tratta cioè di una serie di relazioni del tipo
Ux.slave = Ux.master - dy Rz.master + dz Ry.master
Uy.slave = Uy.master + dx Rz.master - dz Rx.master
Uz.slave = Uz.master + dy Rx.master - dx Ry.master
Rx.slave = Rx.master
Ry.slave = Ry.master
Rz.slave = Rz.master
Si fa osservare che queste condizioni di vincolo:
Il numero di equazioni generate è pari a sei.
Dal punto di vista dell'implementazione la letteratura tecnica prevede sostanzialmente 3 tipi di tecniche per tener conto dei vincoli interni.
Il primo metodo, noto anche come Master-Slave Elimination, si basa su una codifica a livello di elemento delle condizioni di vincolo interno. Questo modo di procedere, per altro utilizzato anche dal codice di calcolo di WinStrand, si attaglia bene a problemi molto ben definti dal punto di vista topologico quali:
Il metodo tuttavia perde di generalità nel caso si vogliano introdurre vincoli generici in quanto la codifica a livello di elemento risulta pressochè improponibile.
Il secondo metodo, noto anche come Penalty Augmentation o penalty function method, si basa sull'assemblaggio, nella matrice di rigidezza della struttura, di matrici auto-equilibrate a forte diagonale dominante (da cui il nome penalty element) che forzano o meglio, tendono a forzare numericamente, il soddisfacimento di una determinata condizione di vincolo.
Per chiarire le idee supponiamo di dover risolvere la seguente struttura composta di bielle e di voler imporre che lo spostamento del nodo 2 sia uguale allo spostamento del nodo 6:
Fig. 1 Schema statico di esempio.
Introducendo un ulteriore elemento, per cosi dire 'infintamente rigido', fra i nodi 2 e 6 si può introdurre questa condizione ottenendo una matrice di rigidezza assemblata della struttura del tipo:
dove:
è la matrice di rigidezza dell'elemento penalty che impone la condizione che ci interessa. Al tendere di w all'infinito si otterrà l'eguaglianza dei due spostamenti.
Questo metodo ha i seguenti vantaggi:
Presenta i seguenti svantaggi:
Se infatti il coefficiente w di penalizzazione è piccolo non produce l'effetto desiderato (per w=0 è come se l'elemento non fosse stato introdotto).
Se il suo valore è troppo grande può rendere mal condizionata la matrice di rigidezza della struttura producendo non solo una errata imposizione della condizione di vincolo ma addirittura il prodursi di righe linearmente dipendenti e l'impossibilità di risolvere il sistema di equazioni.
Se, infatti, w è molto maggiore del termine massimo della matrice di rigidezza assemblata orginiale, a causa di problemi di arrotondamento e di propagazione dell'errore numerico, le righe che non sono state modificate dagli elementi penalty tendono a zero.
Il terzo metodo, noto anche come Lagrange Multiplier Agjunction, si basa sull'assemblaggio, nella matrice di rigidezza della struttura, di tante equazioni quante sono le condizioni di vincolo imposte esternamente.
Se riprendiamo la struttura precedentemente analizzata:
Fig. 2 Schema statico di esempio secondo il metodo di Lagrange.
e pensiamo di introdurre una forza λ (parametro noto come moltiplicatore di Lagrange), che sia in grado di imporre il soddisfacimento della condizione di vincolo interno U2=U6 il sistema risolvente diventa:
Poichè λ va determinato ossia è un'incognita del problema va trasferito nella parte di sisnistra del sistema risolutivo appendendolo al vettore delle incognite spostamento:
con il che si ottiene un sistema di 7 equazioni in 8 incognite. Al fine di rendere il sistema determinato è sufficiente appendere l'equazioni di vincolo interno U2-U6 = 0 quale ottava equazione:
In forma più generale, l'energia potenziale totale del modello a elementi finiti privo di vincoli interni è data da:
Al fine di introdurre le equazioni di vincolo interno viene aggiunto il set di equazioni di ordine m per n essendo m il numero di equazioni di vincolo e n la dimensione del sistema risolvente:
Orlando la matrice originale con quella dei moltiplicatori di Lagrange
Estremando il funzionale L(u, λ) rispetto alle variabili u e λ si ottiene il sistema risolutivo
Questo metodo ha i seguenti vantaggi:
Presenta i seguenti svantaggi:
Il codice di calcolo di WinStrand implementa il metodo dei moltiplicatori di Lagrange e per ovviare alla seconda controindicazione assembla sempre le equazioni di vincolo interno in coda alle equazioni originali della struttura in modo da poter controllare che la struttura sia correttamente vincolata anche se questo puo condurre a impropri aumenti della semibanda della matrice di rigidezza assemblata.
Benchè di grande utilità in molte situazioni e di facile impiego, l'uso dei moltiplicatori di Lagrange richiede attenzione ed in particolare segnaliamo che:
Si pensi ad esempio alla semplice struttura:
Fig. 3 Esempio di applicazione dei vincoli interni con WinStrand.
si passa da 18 (3x9=18) modi di vibrare a 3 soli modi in quanto le componenti di spostamento di piano sono condensate nel Master e, a tutti gli effetti, con esclusione della posizione del centro di massa di piano e del valore della massa di piano stessa, si ottengono risultati analoghi a quanto si otterrebbe definendo i classici solai rigidi.
Ciò che però interessa sottolineare è il fatto che richiedendo più di 3 modi di vibrare il codice di calcolo andrà in errore durante il calcolo dei modi di vibrare stessi in quanto non sarà in grado di calcolare modi di vibrare lineramente dipendenti.
In questo ed in casi analoghi è bene utilizzare l'algoritmo di Ritz che, entro certi limiti, si accorge che non è più in grado di calcolare modi indipendenti e ne sospende automaticamente la ricerca.
Durante l'elaborazione di un modello in cui siano presenti vincoli interni il codice di calcolo segnala il numero di vincoli individuato ed i moltiplicatori di Lagrange impiegati.
Fig. 4 Informazioni del CodeCal sui vincoli interni.
In questo esempio si nota la presenza di tre vincoli interni che hanno richiesto l'introduzione di nove moltiplicatori di Lagrange.