USO DEI COMANDI DI MESHING AUTOMATICO

 

 A partire dalla versione 7.30 Sargon è in grado di generare reticoli di elementi andando a riempire automaticamente regioni assegnate.

 Questa funzionalità consente di generare rapidamente mesh in regioni definite, rispettando nodi esistenti e con dati requisiti di regolarità.

 

Triangolarizzazione di Delaunay

 

 Dato un insieme di punti (nodi selezionati) chiamiamo triangolarizzazione di Delaunay una triangolarizzazione che abbia la seguente proprietà: tutti i triangoli sono tali per cui non esiste alcun punto di quelli iniziali all’interno della circonferenza passante per i tre nodi di ciascun triangolo.

 I comandi di meshing di Sargon cominciano sempre con una triangolarizzazione di Delaunay. Si può dimostrare che una triangolarizzazione di Delaunay è sempre possibile ed è unica.

Delaunay1

 

 Chiamiamo triangolarizzazione vincolata una triangolarizzazione che debba salvaguardare un certo numero di lati assegnati, vale a dire una triangolarizzazione che faccia sì che nessun lato di nessun triangolo intersechi un certo insieme di lati predefiniti. In Sargon ciò è ottenibile selezionando i lati (definiti a mezzo di travi e bielle) che devono essere salvaguardati.

 Dopo una triangolarizzazione di Delaunay la mesh si presenta di solito non molto soddisfacente, a causa della presenza di elementi eccessivamente distorti.

 Sono pertanto stati proposti alcuni possibili metodi per migliorare una triangolarizzazione di Delaunay (o brevemente una DT) o una triangolarizzazione di Delaunay vincolata (o brevemente CDT, constrained Delaunay Triangolarization).

 Questi metodi richiedono l’aggiunta di nodi ulteriori e sono governati essenzialmente da due parametri: l’angolo minimo dei triangoli e/o la dimensione massima dei lati.

 Entrambi i parametri sono estremamente delicati e una piccola variazione può portare a grandi tempi di calcolo ed a numeri di nodi assai differenti.

 Di questi metodi Sargon presentemente (versione 7.30) ne implementa due.

 Un primo metodo consiste nell’ottenere una mesh con elementi aventi tutti più o meno la stessa dimensione e lo stesso angolo minimo (si parla in tal caso di mesh omogenee).

 Un secondo metodo consiste nell’ottenere mesh con dimensione (fortemente) variabile, in modo da lasciare con mesh rozzamente definite le zone che non interessano e meshare invece più finemente le zone ove ci si attende una forte variazione degli sforzi.

 

Ottimizzazione omogenea (algoritmo di )

Delaunay2

 

L’algoritmo divide i triangoli quando i lati superano la lunghezza di mesh massima stabilita. Quando la lunghezza massima è pari a zero i lati non vengono suddivisi in base alla loro lunghezza.

L’algoritmo tende a dare angoli minimi intorno a 30° e mesh omogenea purchè venga impostata una lunghezza massima prossima o inferiore al minimo segmento presente inizialmente (in figura il minimo segmento è lungo 78). Sulla base del limite di lunghezza introdotto i lati iniziali vengono suddivisi, in modo che nessuno di loro possegga lunghezza superiore al limite. L’algoritmo non è sensibile a variazioni di angolo.

Questo genere di algoritmo si applica bene a segmenti iniziali aventi tutti più o meno la medesima lunghezza (o resi tali specificando opportunamento il limite). Quando l’algoritmo viene impiegato con limiti superiori ai minimi presenti nei segmenti iniziali esso può convergere con modesti valori di angolo minimo e quindi con mesh di scarsa qualità.

 

Ottimizzazione eterogenea (algoritmo di Ruppert)

delaunay3

 

Mesh ottenute con l’algoritmo di Ruppert (mesh eterogenee) senza limitazioni ai lati: si noti la forte influenza del valore dell’angolo sulle mesh ottenute.

 

Questo algoritmo è invece stato espressamente inventato al fine di consentire la mesh con elevati standard di qualità pur se in presenza di lati di dimensione assai diversa tra loro. L’algoritmo originario divide i triangoli di una triangolarizzazione non vincolata sulla base dell’angolo minimo al loro interno. Questo algoritmo, tenendo in conto solo gli angoli e non la lunghezza dei lati, genera mesh con dimensioni dei lati disomogenee, ed è quindi adatto a coprire regioni con ben differente passo di mesh.

L’algoritmo di Ruppert, comunque, non garantisce che i lati originari restino invariati e ciò talvolta pone un problema in quanto capita che sia richiesto che la mesh non interferisca con altre regioni già meshate. In questi casi, se è necessario non suddividere ulteriormente i lati già esistenti, si dovrebbe usare l’algoritmo precedente. Naturalmente i vincoli corrispondenti al fatto di non suddividere lati esistenti possono essere incompatibili con le richieste in termini di massima dimensione del lato e/o minimo valore dell’angolo, pertanto l’utente deve fornire questi valori in modo coerente con la lunghezza dei lati esistenti (e da non toccare) oppure, in alternativa, accettare che i lati inizialmente esistenti siano modificati.

L’algoritmo di Ruppert è stato modificato per aggiungere (facoltativamente) anche il criterio del massimo lato. In questo caso, oltre a soddisfare il requisito sull’angolo, i triangoli dovranno soddisfare anche il requisito sulla lunghezza massima dei lati.

 

Quadrangolarizzazione

 

 La quadrangolarizzazione è il procedimento che, partendo da mesh triangolari, cerca di trasformarle in mesh quadrangolari. La quadrangolarizzazione può essere completa o parziale. Alla versione 8.00 di Sargon esiste un unico modo per quadrangolarizzare la mesh generata coi triangoli, ed è un modo semplificato. In pratica all’interno della regione triangolarizzata si cercano le migliori coppie di triangoli adiacenti atte a fornire quadrangoli aventi tutti una certa qualità minima.

 La misura della qualità è fatta mediante un indice ottenuto da un numero reale, tanto maggiore quanto maggiore è la qualità del quadrangolo e compreso tra 0 e 1. Dato il valor medio della qualità di una mesh costituita da quadrangoli, secondo Lee e Lo tale mesh può essere categorizzata come segue:

Qualità media < 0.36                        Inaccettabile

0.36 < qualità media < 0.54                Accettabile

0.54 < qualità media < 0.72                Buona

0.72 < qualità media                        Eccellente

 

Il programma prende in input una qualità minima al di sotto della quale i quadrangoli vengono scartati perché inaccettabili. Il valore di default proposto è 0.36.

 

Mancanza di convessità del dominio, fori

 

 Gli algoritmi descritti non distinguono tra domini concavi o convessi. Per poter meshare su domini concavi è necessario attivare una specifica opzione che rimuove i triangoli posti al di fuori del dominio originario. La stessa opzione consente di svuotare eventuali fori presenti nella regione da meshare.

 Per far capire al programma quali sono i fori, occorre che il perimetro di questi sia interamente descritto da una serie di lati contigui che siano tutti selezionati al momento della esecuzione del comando. Il numero di fori è arbitrario. Non sono ovviamente ammessi fori nei fori. La forma dei fori è determinata dalla successioned ei lati rettilinei e può quindi essere qualsiasi.

 

delaunay4

Nella figura si vede ciò che succede se si mesha una regione concava senza specificare di tener conto dei pieni e dei vuoti.

 

Come agire operativamente

 

 Per usare questo potente comando occorre includere la regione da meshare (che deve essere piana) all’interno di un ciclo chiuso di elementi monodimensionali selezionati (travi o bielle) che indicano i lati iniziali. Opzionalmente è possibile aggiungere anche lati interni alla regione da meshare, anche disgiunti: se questi sono selezionati al momento della esecuzione del comando, la mesh finale li rispetterà, nel senso che il lato (eventualmente suddiviso) sarà incluso all’interno dei lati della mesh. Se si desidera che i lati iniziali non vengano suddivisi è necessario specificare la richiesta esplicitamente nel dialogo opportuno.

 Ove siano presenti fori o la regione da meshare non sia convessa, è necessario attivare una specifica opzione per la ricerca e cancellazione automatica delle regioni esterne all’area di mesh (dominio concavo) o interne ai fori.

 Una volta fatte le proprie scelte si può eseguire il comando. Se la mesh non è di proprio gradimento basterà eseguire il comando Annulla per tornare all’inizio, così da sperimentare nuove scelte dei parametri.

 

Estratto della Bibliografia consultata

 

J.R. Shewchuk, Lecture notes on Delaunay Mesh Generation, September 20, 1999, Department of Electrical Engineering and Computer Science, University of California at Berkeley

J. Ruppert, A Delaunay Refinement Algorithm for Quality 2-Dimensional Mesh Generation, NASA Ames Research Center, February, 2, 1994, Submission to the Journal of Algorithms.

Kyu-Yeul Lee, In-Il Kim, Doo-Yeoun Cho, Tae-wan Kim, An algorithm for automatic 2D quadrilateral mesh generation with line constraints, Computer Aided Design, 35 (2003), 1055-1068