Indice

Marc/Mentat

INTRODUZIONE AL MARC-MENTAT

L' MSC Marc Mentat è un software per l'analisi di problemi non lineari, dove il Mentat è il programma di pre-processing (mi permette sostanzialmente di costruire la mesh dell'elemento) e di post-processing (fornisce l'output al termine dell'analisi che mi permette di effettuare diverse operazioni sull'elemento calcolato) mentre il Marc è il solutore di equazioni non lineari. I due programmi sono separati poiché in generale girano o possono girare su macchine diverse, infatti il pre- ed il post-processore girano sui nostri computer mentre il solutore può girare su un server a distanza. Il link che rimanda alla presentazione del programma è il seguente:

http://www.mscsoftware.com/product/marc

La necessità di utilizzare un codice commerciale nasce dal fatto che sarebbe molto difficile effettuare modellazioni complesse programmate da un utente medio, anche se indubbiamente ciò gli conferirebbe maggiore controllo su tale modellazione.

Le principali alternative a pagamento al Marc-Mentat sono:

Abaqus: http://www.3ds.com/products-services/simulia/portfolio/abaqus/overview/

Ansys: http://ansys.com/

Marc, Abaqus e Ansys sono codici pensati per gestire problematiche non lineari. Un problema è lineare se una caratteristica di sollecitazione può essere descritta come combinazione lineare delle forze o delle sollecitazioni che la provocano. In tutti i casi in cui ciò non succede il problema non è lineare. Un esempio di problema lineare è la classica trave incastrata con forza all'estremità libera P, esempi di problemi non lineari sono ad esempio i problemi di contatto monolatero e i problemi in cui i materiali non seguono la legge di Hooke (ad esempio raggiungono lo snervamento) e ci sono grosse deformazioni.

I codici sopra citati consentono di trattare quindi anche problemi non lineari. La maggior parte dei simulatori agli elementi finiti associati ai modellatori solidi sono invece di tipo lineare (si tratta ad esempio dei solutori associati a ProE e Solidworks tanto per citarne un paio). Un altro programma storico agli elementi finiti è l'MSC Nastan (http://www.mscsoftware.com/it/product/msc-nastran), nato inizialmente in ambiente NASA come codice lineare e poi espanso con funzionalità non lineari. Oggi si utilizza per calcoli di base per fatica (calcoli lineari).

La principale alternativa non lineare opensource al Marc è invece Code_Aster, un codice agli elementi finiti sviluppato dalla EDF francese (ente corrispondete all'ENEL italiano) e reso disponibile da qualche anno al download libero in formato sorgente.

Si tratta di un codice Fortran ed è soltanto il solutore. Ha faticato a trovare largo impiego per il fatto che i manuali d'uso e tutta la documentazione annessa nascevano in francese e solo negli ultimi anni hanno cominciato ad essere tradotti in inglese.

Solutori opensource noti sono Calculix e Z88 Aurora disponibile in versione free ed opensource.

I difetti principali che accumunano un po' tutti i codici opensource stanno nel fatto che non possiedono un solutore integrato e i meshatori implementati talvolta non sono in grado di restituire all'utente una mesh molto corretta, per esempio in zone dove si hanno elevati gradienti (per esempio nei raccordi) o più in generale dove si vuole ottenere un grado di raffinatezza più “spinto”.

I vantaggi del mentat risiedono nel fatto che si tratta di un software profondamente radicato nel passato (nasce intorno agli anni '70) e quindi permette un approccio di basso livello estremamente didattico: i nodi all'interno del mentat sono infatti visibili. Inoltre Mentat è molto preciso nel collocare i nodi, funzione che invece Hypermesh svolge in maniera più approssimata. In Mentat abbiamo la numerazione dei nodi sia locale sia globale.

Oggigiorno tale software trova maggiore applicazione nel campo della modellazione degli elastomeri.

I codici sin qui citati sono anche detti codici “impliciti”, ossia codici in cui la variabile tempo viene trascurata e su cui si lavora principalmente attraverso equazioni di equilibrio. I codici cosiddetti “espliciti” sono invece codici in cui la variabile tempo è quella dominante.

Lo scopo è individuare l'accelerazione delle masse in modo poi da ricavare la deformazione della struttura come l'integrale della accelerazione nel tempo. Sono molto utili in casi ad alto contenuto dinamico, per esempio nei crash test.

COME LANCIARE IL PROGRAMMA

Dalle macchine di laboratorio aprire il terminale e digitare:

mentat2013.1 oppure

mentat2013.1 -ogl -glflush (nel caso si volesse attivare l'accelerazione 3D ove fosse disponibile).

Per istruzioni più dettagliate si rimanda a:

https://cdm.ing.unimo.it/dokuwiki/wikipaom2015/utilizzolabdidattici

https://cdm.ing.unimo.it/dokuwiki/wikipaom2015/softwaredidattico

Da PC personale è possibile lanciare il programma da Linux Mint dopo aver effettuato l'accesso con le proprie credenziali ad X2GO con i medesimi comandi.

In alternativa è possibile fare riferimento a https://cdm.ing.unimo.it/.mediawiki/index.php/Marc_Mentat_1 in cui si spiega come installare fisicamente Marc-Mentat sul proprio pc windows, sottolineando che il numero di licenze è limitato e quindi si invita a non utilizzare possibilmente Mentat sul proprio pc durante le esercitazioni in laboratorio.

NB: nel caso in cui si lanci il programma da terminale, si ricorda che tale programma è figlio del terminale con cui è stato lanciato e di conseguenza se si chiude il terminale si perde il lavoro effettuato al Mentat se non salvato.

L'intefaccia della versione del mentat qui considerata è ancora quella classica (che è stata implementata fino al 2012) che differisce da quella nuova essenzialmente per l'aspetto visivo (simile a word) e per la possibilità di copiare ed incollare numeri.

L'interfaccia presenta un menù laterale, una barra dei comandi inferiore e un'ampia zona dello schermo dedicata al modello. Il menù è organizzato seguendo il flusso logico di una analisi agli elementi finiti e pertanto si compone di varie parti dedicate rispettivamente al pre-processing, ossia alla creazione del modello, cui seguono la definizione ed il lancio dell'analisi e infine si passa al post-processing ossia all'elaborazione dei risultati.

FUNZIONI GENERALI

Come già accennato, data la complessità dei casi reali di interesse ingegneristico è impossibile compilare un codice Fortran capace di schematizzare il modello e risolvere il problema, almeno lo è per un utente medio. Proprio per questo motivo ci si basa su un programma commerciale che consente di effettuare analisi (FEA) che vanno dalle più classiche (strutturali) alle più complesse (termiche, fluidodinamiche e magnetiche), utilizzando per la modellazione svariati tipi di elementi, ognuno con caratteristiche molto diverse.

Durante questo corso verrà usato il programma agli elementi finiti Marc/Mentat.

E' importante tenere a mente che il software in questione non prevede l'inserimento di unità di misura.

Al fine di evitare errori macroscopici è quindi necessario prestare attenzione nell'inserimento dei dati.

Aprendo il programma si presenta la schermata del menù principale, dalla quale si può accedere alle funzioni di base del programma (nel corso della lezione verranno illustrati i tasti utilizzati).

Le voci principali del menù sono:

Mesh Generation: consente di creare geometrie, meshature e di effettuare altre operazioni utili riguardanti la mesh;

Geometric Properties: associa agli elementi creati in precedenza le proprietà geometriche (es: tensione piana, elementi piastra, spessori e altro);

Material Properties: assegna uno o più materiali alla struttura, consentendo di simulare svariate situazioni reali;

Boundary Conditions: definisce ed applica le condizioni al contorno (carichi, vincoli..);

Jobs: delinea le opzioni dell'analisi scegliendo i risultati da visualizzare, fa partire la simulazione.

La colorazione dei tasti assume un certo significato nel programma: un colore azzurro caratterizza infatti i pulsanti relativi a dei comandi veri e propri, mentre il colore verde identifica pulsanti relativi ai sottomenù (questi pulsanti hanno anche una freccetta che ci informa che il menù verrà espanso cliccando sul pulsante).

Vi sono dei menù con a fianco un led che si spegne o accende quando vi clicchiamo sopra (ad esempio per il comando dyn. model) che avverte se quella specifica opzione è attivata o meno.

In riferimento proprio a quest'ultimo comando, DYN.MODEL, se esso è selezionato viene permessa la rototraslazione del modello rappresentato, rototraslazione che si ottiene attraverso l'uso dei tasti sinistro, centrale e destro del mouse. Quando esso è invece deselezionato permette ad esempio la selezione dei nodi col tasto sinistro del mouse ed altre funzioni.

Una volta selezionato uno o più menù, per ritornare al menù principale è sufficiente cliccare sulla voce MAIN, mentre per tornare al menù precedente si può usare il comando RETURN o cliccare con il tasto destro del mouse nell'area del menù.

Per salvare con nome si clicca nel menù FILES dalla barra dei comandi inferiore e si sceglie SAVE AS; facendo riferimento invece al comando SAVE il nostro progetto verrà salvato con il nome model1, se non già salvato con un nome diverso in precedenza. L’estensione sarà .mud se il file è stoccato in formato binario o .mfd se testuale, quest’ultimo modificabile con editor di testo.

E' buona abitudine salvare spesso il lavoro sul programma in quanto esso permette un solo UNDO e non di risalire alle operazioni precedenti cliccando ripetutamente su UNDO. Il file che si verrà a creare con estensione t16.mud contenuto nella cartella home è completamente inutile e si origina quando si salva il file durante altre operazioni, ad esempio mentre il marc effettua il calcolo. Perciò se si intende salvare il proprio lavoro su dispositivo esterno, è bene copiare il file con estensione .mud.

Nel nome del file non devono esserci spazi così come non devono esserci spazi nel percorso del file; il mancato rispetto di questa regola è causa frequente di errore. Perciò se voglio salvare versioni successive del file inerente all'analisi del tubo in pressione, conviene nominare i file come tubo_1.mud, tubo_2.mud, tubo_3.mud… dove l'underscore è usato al posto dello spazio (che ricordo non essere lecito). Per aprire un file occorre invece premere su OPEN mentre per ripristinare la versione dal salvataggio precedente si usa il comando RESTORE. E' molto importante gestire con attenzione i salvataggi perchè il comando UNDO che si trova nella barra dei comandi inferiore consente di annullare solamente l'ultima modifica apportata.

Per importare varie geometrie/file (generalmente provenienti da programmi di modellazione es Catià, Proe) utilizzare il comando IMPORT del menù FILES. Il marc-mentat riconosce i formati .DVG o .XF.

Tasto help: collocato in basso a destra, permette all'utente di accedere al manuale d'uso e a tutti i documenti correlati.

Menù Plot: attraverso questo menù si decide cosa si vuole visualizzare. NOTA: ciò che non è visualizzato non è selezionabile. Dal menù plot è possibile accedere alle impostazioni di ciò che è visualizzato a schermo. Per esempio in basso è riportato lo screenshot delle impostazioni delle curve. A titolo di esempio si è selezionata il led DIRECTION e poi si è cliccato il tasto REGEN per visualizzare le direzioni delle curve (in mentat tutte le curve sono orientate).

Se ho due finestre Mentat aperte, la principale sembrerà bloccata fino anche non verrà chiusa la finestra secondaria; per chiudere la finestra usare CANCEL oppure OK (il chiudi finestra solitamente non funziona).

Consiglio utile (Liberare zoom dinamico):

Andare in System → preferenze Windows → Modificare “Movement Key” da Alt (utilizzato dal Mentat) con Super (or “windows logo”) così da liberare l’ALT che serve per lo zoom dinamico. Una volta cambiata l’opzione riaprire il programma.

NOTA: quando si dice “confrontare risultato numerico con quello esatto” si intende valutare l'errore numerico che proviene non dal troncamento di cifre significative (il marc-mentat usa infatti la doppia precisione) dall'errore che si commette discretizzando il dominio.

IMPOSTAZIONE DEL MODELLO DI UN TUBO PRESSURIZZATO

Stato Tensionale

Iniziamo ad usare il programma modellando il problema di un tubo in pressione. Prima di descrivere la modellazione è utile richiamare alcuni concetti riguardanti la tensione e la deformazione piana.

Si parla di stato tensionale piano se la tensione fuori dal piano che caratterizza la sezione del problema è nulla.

In particolare se consideriamo il piano Oxy come il piano delle tensioni, deve essere σz=0 τxz= τyz=0. Generalmente lo stato tensionale piano è caratteristico di corpi sottili in cui la sezione non varia bruscamente e in cui sono marginali gli effetti intaglio; ovviamente il caricamento di questi corpi deve essere piano. Sotto queste ipotesi risulta spesso lecito trascurare la tensione ortogonale al piano in quanto essa, dovendo annullarsi sulle superfici a contatto con l'aria, deve necessariamente mantenersi limitata anche all'interno del corpo. Si parla invece di stato deformativo piano o di deformazione piana quando εz =0 ove l'asse z è ortogonale al piano. Generalmente si fa l'ipotesi di deformazione piana quando il caricamento è significativo in una zona localizzata della sezione del corpo mentre tutta la restante sezione, che immagino grande rispetto alla parte più sollecitata, tende a trattenere la deformazione perché sottocaricata. Perciò in uno stato deformativo piano ho che punti sottocaricati trattengono la deformazione di punti adiacenti molto più sollecitati. Fatta questa doverosa premessa passiamo a studiare agli elementi finiti il caso di un tubo di elevato spessore e lunghezza, sollecitato da forze solo sul contorno interno o esterno, e che si trova in condizioni di tensione piana in quanto libero alle estremità o dotato di soffietti (ha tensioni in direzione assiale nulle non essendovi forze esterne agenti in questa direzione) .Il tubo sembrerebbe non rientrare nella definizione di caso di stato tensionale piano, ma la soluzione esatta per il tubo pressurizzato prevede tensioni assiali nulle per cui è un caso perfetto di tensione piana.

MESH GENERATION

I menù sono ordinati cercando di seguire la creazione logica di un modello. Il primo Menù è quello di generazione della Mesh [MESH GENERATION].Questo menù è suddiviso in diverse aree (nuclei di comandi concettualmente aggregati) come ci mostra la figura successiva. Nella parte superiore del menù viene data la possibilità di aggiungere, modificare, eliminare o interrogare nodi (NODES), elementi (ELEMS), punti (PTS), curve (CRVS), superfici (SRFS), solidi (SOLIDS). Nodi ed elementi sono entità riguardanti la mesh, mentre curve, superfici e punti sono entità geometriche. Ad esempio la differenza tra un nodo ed un punto è che pur essendo entrambi definiti da un punto nello spazio, ai nodi sono anche associate incognite di spostamento e/o rotazione e quindi un nodo è un punto che ha possibilità di muoversi secondo un numero di spostamenti incogniti che dipendono dal tipo di geometria del modello.

Nel nostro esempio considereremo un tubo di raggio interno Ri = 10mm e raggio esterno Re = 20mm, in alluminio (Young modulus 70000 MPa) e pressurizzato da una pressione interna di 1 MPa.

NOTA BENE: in mentat non si distinguono le unità di misura. Si inseriscono quindi valori coerenti tra loro, coerenza che sta all'utente rispettare. Per esempio sarebbe bene far riferimento al SI. Siccome per i pezzi meccanici si fa riferimento spesso al [mm] come unità fondamentale della lunghezza, è bene adeguarsi ed esprimere quindi la pressione in MPa ossia [N/mm^2], le forze in [N] il tempo in [s] e le masse in [Mg], ossia in tonnellate.

Di conseguenza è bene far attenzione ad esprimere la densità in [Mg/mm^3].

Il modello in questo caso è descritto dalla sola sezione del tubo, una corona circolare; la prima cosa da fare è definire l' origine del sistema di riferimento; si tratta di un'entità prettamente geometrica che individua un punto che non si sposta nello spazio. Allora per fissare l'origine clicco su PTS (points)/ADD e nel prompt dei comandi (in basso nella schermata principale del mentat) devo battere le coordinate del punto separate da invio (le coordinate sono 0,0,0).

NOTA: ogni volta che si clicca un tasto nella schermata del mentat, nel prompt viene scritta la riga di comando che gli corrisponde. Ciò potrebbe non interessare, ma sarebbe utile conoscere le stringhe di comando nel caso in cui si vogliano creare scripts per meshature automatiche.

A questo punto dovrebbe comparire sul monitor, nella zona di visualizzazione del modello, un punto che definisce l'origine chiamato Point 1. Nel Marc Mentat ogni entità ha un nome numerico che tipicamente è progressivo e perciò se andassi a creare un secondo punto esso avrebbe nome Point 2.

Se volessi rimuovere un punto posso seguire il comando PTS→ REM e cliccare sul punto da eliminare; il punto non viene eliminato immediatamente e infatti posso continuare a selezionarne altri ed una volta finita la lista di punti da cancellare posso procedere con l'operazione dando il fine lista o con un [#] battuto al prompt oppure selezionando il comando END LIST oppure ancora con un colpo di tasto destro nell’area di lavoro. Se volessi deselezionare un punto della lista, prima di aver chiuso la lista, uso il tasto centrale: viene annullata l'ultima selezione. Per selezionare un insieme di punti o clicco su ciascuno di essi oppure, il tasto sinistro del mouse, nella zona di visualizzazione del modello si crea un rettangolo all'interno del quale vengono automaticamente selezionati i punti che sono poi aggiunti alla lista. Se poi volessi fare una selezione poligonale, tenendo premuto Ctrl, do una sequenza di click a video definendo una poligonale chiusa.

Se vogliamo riprendere i punti cancellati, ma più in generale ritornare indietro all’ultima operazione eseguita, possiamo usare il comando UNDO. NB: come già detto in precedenza si ha a disposizione un unico UNDO, quindi è utile salvare molto frequentemente. Cliccare la prima volta su undo permette di correggere un errore ma cliccare una seconda volta su undo non fa altro che ripristinare l'errore appena cancellato.

NOTA: nella cartella home viene creato un file denominato mentat.proc che contiene tutti i comandi che sono stati lanciati durante una sessione del mentat. Se si lancia una nuova sessione tale file viene sovrascritto.

Per costruire la corona circolare caratterizzante la geometria del problema procediamo come segue:

MESH GENERATION, CRVS ADD

e si inseriscono le coordinate del centro e i la misura dei due raggi.

Si creano così due circonferenze concentriche.

Su video probabilmente non vediamo che sono stati creati due nodi dal momento che essi si trovano fuori dalla zona di inquadratura (lo zoom di default è centrato sull'origine con raggio circa unitario) e quindi conviene fornire al lettore qualche indicazione sulla gestione dello zoom: se dalla barra dei comandi inferiori clicco su RESET VIEW mi riporto nelle condizioni predefinite di visualizzazione mentre se invece premo su FILL lo zoom si modifica fino a includere tutte le entità del modello.

I tasti fisici (implementati cioè nell'interfaccia grafica di mentat) di traslazione sono:

TX+ : trasla leggermente verso destra

TX- : trasla leggermente verso sinistra

TY+ : trasla leggermente in alto

TY- : trasla leggermente in basso

Analogamente i tasti RX+, RX-,RY+,RY-,RZ+,RZ- permettono di controllare la rotazione attorno agli assi di vista (che non coincidono necessariamente con gli assi di riferimento).

Con i comandi IN e OUT aumento e riduco rispettivamente lo zoom; se premo su ZOOM BOX posso effettuare a video una selezione rettangolare su cui zoomare. Come già detto, si può rototraslare anche usando il mouse se è attivo il comando DYN. MODEL, che può essere attivato rapidamente anche da tastiera tenendo premuto il tasto Alt.

L'opzione REPAIR GEOMETRY all'interno del sottomenù AUTOMESH all'interno del menù MESH GENERATION è molto utile quando la meshatura è stata creata in automatico e che quindi possa prensentare delle impecisioni soprattutto in zone delicate della mesh (elevati gradienti). Questa opzione permette per esempio di unire due segmenti che non si uniscono ed è fondamentale utilizzarla prima della run nel caso si abbiano dubbi sulla correttezza della mesh.

Il menù CURVE DIVISIONS permette di subbividere la mesh in zone di dimensioni sempre maggiori o minori a seconda di una direzione scelta.

Durante lo svolgimento della lezione in laboratorio sono state generate mesh diverse a seconda del numero di suddivisioni della mesh in base alla fila di appartenenza degli studenti. Tralasciando questo aspetto si sono create mesh da 8 a 48 suddivisioni.

In questo caso si prenderà come riferimento una suddivisione della mesh in 12 elementi come si vede dallo screenshot in basso. Una volta inserito il valore della suddivisione nel menù CURVE DIVISIONS, si clicca apply e nel prompt ci verrà chiesto a quali “enti” applicare la mesh. Si selezionano con il tasto sinistro del mouse le due circonferenze tracciate e si clocca END LIST.

Cliccando RETURN si ritorna al menù AUTOMESH. Il menù CURVE MESHING mostra le linee di mesh, utili nella modellazione delle travi. La funzione che interessa in questo momento è 2D PLANAR MESHING. Vi sono essenzialmente quattro opzioni all'interno.

QUADRILATERALS ADV FRNT: avanzamento di fronte, parto dalle curve e vado verso l'interno (il mentat “rappezzerà” ciò che non sarà completo).

QUADRILATERALS (OVERLAY): poco usata.

TRIANGLES (DELAUNAY): quella che verrà applicata nel seguito. Gli elementi variano di grandezza in modo soddisfacente, ha il difetto che se la geometria è particolare tale algoritmo va in crash e non è utilizzabile.

TRIANGLES (ADV FRONT): ????

In basso si mostra il menù automesh.

Nota: ogni elemento della mesh viene percorso in senso antiorario concorde alla convenzione degli elementi finiti.

Esiste una opzione che consente di controllare automaticamente se l'orientamento dei nodi è corretto e per accedere a questa funzione devo andare in MESH GENERATION/CHECK/UPSIDE DOWN: si tratta del controllo che verifica se gli elementi sono percorsi in senso antiorario; viene fatta una selezione automatica (azzurrina) da parte del programma che mi consente con un solo comando di rinumerare i nodi e correggere così l'orientamento. Se premo sul comando FLIP ELEMENTS posso girare gli elementi e fargli assumere l'orientamento corretto: alla richiesta di quali elementi girare premo ALL SELECTED. Se ora andassi a rifare il controllo sugli elementi UPSIDE DOWN osserverei che non ci sono più elementi problematici.

L'altro problema molto più subdolo che può presentare la mia mesh è il fatto che non sia chiusa: in questo modo io non ho ottenuto una corona circolare a forma della lettera O ma ho ottenuto una corona a forma di C chiusa, ossia una corona in cui i lembi di inizio e fine estrusione sono solo appoggiati ma non saldati tra loro: così se caricassi la struttura potrei assistere all'apertura della stessa come appunto se il tubo non fosse una geometria chiusa. Due elementi tra loro adiacenti sono saldati se si “attaccano” agli stessi nodi mentre se ci sono due nodi sovrapposti i nodi non sono saldati e si staccheranno a struttura caricata. Come faccio a capire se ho dei nodi sovrapposti? La procedura è un po' complessa: vado nel menù PLOT dalla barra dei comandi inferiore da cui posso gestire le opzioni di visualizzazione degli oggetti del modello. Ad esempio, cliccando sul quadratino giallo a fianco di NODES, disabilito la visione dei nodi su schermo (per aggiornare la vista premere REGEN). Ma non è questo quello che voglio fare: devo andare nelle modalità di visualizzazione dei nodi (NODES SETTINGS)e chiedere che per ogni nodo sia visualizzata la sua etichetta (LABEL). A questo punto, dopo aver premuto REGEN, vicino a ogni nodo compare il proprio numero: si vede bene che i nodi che si trovano sul segmento originario da cui avevo fatto partire l'estrusione sono contati due volte (ho etichette sovrapposte poco leggibili) e perciò la struttura non è saldata ma in questa zona ha la classica forma a C chiusa con nodi sovrapposti.

Con questo controllo mi sono accorto del secondo problema della mesh e per risolverlo devo fare collassare i nodi sovrapposti in un unico nodo (in questo modo trasformo la C chiusa in una O).

Il comando di collasso nodale lo trovo in MESH GENERATION/SWEEP: questo comando mi chiede attraverso la tolleranza quando deve considerare due nodi sovrapposti e saldarli ( di default due nodi sono sovrapposti se sono distanti meno di 0.0001 ossia secondo il mio sistema di misure se sono distanti meno di un decimillesimo di millimetro).

Scelgo di non modificare la tolleranza di default e dico al software di collassare tutti i nodi esistenti (NODES/ALL/EXIST.).

A questo punto la mesh dovrebbe essere stata correttamente generata: la geometria del problema è ben definita.

In generale se voglio modificare la mia mesh mi conviene utilizzare il menù CLEAR MESH e rifarla da zero. Se invece voglio modificare solo alcune parti, posso selezionare, come gia anticipato, i nodi uno per uno oppure selezionare gli elementi compresi all'interno di un rettangolo (creato muovendo il mouse e tenendo premuto il tasto sinistro) oppure creando una poligonale chiusa col tasto ctrl come gia esposto.

Ritornando al menù MESH GENERATION è possibile raffinare la mesh passando ad esempio ad elementi quadratici da elementi triangolari a tre nodi (abbiamo quindi elementi triangolari a sei nodi, ove i nodi vengono aggiunti a metà del lato come si può vedere sotto).

A questo punto abbiamo concluso la fase di creazione della mesh. Tornando al menu iniziale possiamo definire gli altri parametri del problema.

GEOMETRICS PROPERTIES, MATERIAL PROPERTIES E BOUNDARY CONDITIONS

Si definiscono ora le proprietà geometriche. Si torna al menù MAIN e si clicca sul menù GEOMETRIC PROPERTIES. Si andrà ora a stabilire che si tratta di un problema di tensione piana.

Quindi GEOMETRIC PROPERTIES, NEW, STRUCTURAL, PLANAR, PLANE STRESS. Nelle proprietà di questo è meno è anche possibile attivare il comando ASSUMED STRAIN che permette ad esempio di risolvere la maggior parte dei problemi di shear locking, cioè sostanzialmente il metodo trapezio viene sostituito con quello curvilineo (lo svantaggio è che quindi non posso più utilizzare il metodo del trapezio).

Per applicare lo stato di tensione piana si clicca su ADD ELEMENTS.

Se vogliamo rimuovere qualche elemento da questa scheda di proprietà geometrica è possibile utilizzare il comando REM (che sta per “rimuovi”), di fianco al comando ADD, selezionando quindi gli elementi interessati e dando il fine lista END LIST.

Quanto detto è riassunto nell'immagine in basso.

Si definiscono adesso le proprietà del materiale:

Dal menù MAIN si seleziona MATERIAL PROPERTIES,NEW (e si fornisce il nome alluminio cliccando sulla voce “general”) Cliccando sulla voce GENERAL si inserisce una densità (anche se inutile in questa analisi) di 2.7e-9 ( si tratta di Mg/mm^3, si ricorda il discorso sulle unità di misura), mentre cliccando su STRUCTURAL si definisce il modulo di young di 70000 e un modulo di Poisson di 0.3 valido per la maggior parte dei materiali di uso ingegneristico.

Si applicano ora queste proprietà a tutti gli elementi con ELEMENTS, ADD, ALL EXISTING.

NB: Il Mentat nelle passate edizioni è stato programmato per leggere il valore zero come: “usa il comando di default”, quindi se lasciassimo densità zero, il mentat, che per la densità ha valore di defaul pari ad 1, considererebbe densità del tubo pari ad 1. E' possibile che questa impostazione, che rappresenava un problema per l'utente medio, sia stata corretta in questa versione ma è bene comunque inserire tutti i valori che si hanno a disposizione.

Infine si applicano le condizioni al contorno.

Le più comuni Boundary Condition disponibili sono:

FIXED DISPLACEMENT: usato nei casi in cui si ha spostamento imposto pari a 0;

FIXED ACCELERATION: usato sopratutto per carichi inerziali;

POINT LOAD: carico nodale usato per dare un carico finito su uno specifico nodo;

EDGE LOAD: carico su un lato (nel caso in esame sarà un carico sul bordo interno) applicabile ad un modello 2D;

FACE LOAD:come il precedente, ma riferito ad un modello 3D;

GLOBAL LOAD: carico per unità di volume non scalato per la densità;

GRAVITY LOAD: un carico per unità di volume scalato per la densità.

In questo caso si vuole applicare una pressione di 1 MPa (10 bar) al bordo interno:

Dal MAIN, BOUNDARY CONDITION, NEW, STRUCTURAL, EDGE LOAD, rinomino in pressione e nelle PROPRIETA' attivo PRESSURE, inserisco 1 (1MPa).

NB Essendo un problema lineare nel caso in cui le dimensioni del tubo venissero scalate, anche la pressione aumenterebbe, basterebbe moltiplicarla per il fattore di scala.

E' anche possibile applicare uno sforzo di taglio (shear load) dallo stesso menù PROPERTIES.

NOTA: La pressione è un carico compressivo e le è stato assegnato un segno positivo. Se avessi voluto introdurre un carico trattivo avrei dovuto inserire il segno meno.

Se la mesh è molto fitta per selezionare i bordi di applicazione del carico, conviene nascondere gli EDGE interni (dato che ciò che non è visibile non può essere selezionato), lasciando così la selezione possibile solo per quelli di superficie.

Tale regolazione si esegue dal menù PLOT, ELEMENTS, SETTINGS e si decide di visualizzare tutti gli edge di OUTLINE nascondendo così tutti quelli che non sono di bordo (ossia che non sono comuni a due elementi): PLPT, ELEMNTS, SETTINGS, OUTLINE, DRAW seguito da regen per visualizzare le notifiche.

Si seleziona il bordo su cui applicare la “pressione”, ossia la condizione appena creata:

comando EDGES, ADD e selezionando i bordi tenendo premuto il tasto sx (selezione rettangolare) o CTRL+click sx (selezione poligonale) i bordi interni del tubo seguito da END LIST (#).

In questo modo la struttura è ben definita ma non è risolvibile dato che la soluzione non è univoca dal momento che esistono ∞3 soluzioni. E' quindi necessario isostaticizzare la struttura, mantenendola cioè in posizione.

I comandi sono:

BOUNDARY CONDITIONS, NEW, STRUCTURAL, FIXED DISPLACEMENT, PROPERTIES, DISPLACEMENT Y inserendo il valore 0.

Lasciando il valore 0 (il carrello vincola lo spostamento lungo y). Applichiamo il vincolo a un qualunque nodo appartenente al tubo con il comando NODES, ADD cliccando su un qualunque nodo della struttura, seguito da END LIST (#).

Allo stesso modo si procede per creare una cerniera che elimini i restanti gradi di libertà della struttura, inserendo il valore zero anche alla voce DISPLACEMENT X e poi cliccando su un solo nodo (qualsiasi) della struttura diverso dal precedente ma con asse non incidente in quello del carrello. In tal caso il sistema sarebbe labile e iperstatico allo stesso tempo.

NB Non si può mai inserire un incastro perchè andrei a bloccare la rotazione, rotazione che non è stata definita per gli elementi triangoli o quadrilateri.

Ora dalla MAIN si clicchi JOBS, NEW (nominandola “P-interna”) , STRUCTURAL, PROPERTIES, RESULTS e sotto la voce AVAIABLE TENSORS selezionare ELASTIC STRAIN e STRESS

Sotto la voce SCALARI selezionare VM EQUIVALENT STRESS;

Dal menù QUANTITA' NODALI, selezionare CUSTOM e inserire DISPLACEMENT, EXTERNAL FORCE, REACTION FORCE per ogni nodo.

Non è indispensabile includere la Von Mises stress perché è calcolabile a posteriori dal tensore degli sforzi, ma è consigliabile dato che questa è quella di calcolo, cioè quella che il solutore vede in un determinato istante di calcolo. Sulla base di questa tensione di Von Mises viene fatta la plasticizzazione del materiale, quindi è comodo averla se qualcosa non funziona [reaction force]

N.B. E' bene includere sempre gli spostamenti per vedere la deformata, le forze esterne per vedere come la pressione distribuita è stata ridotta a carichi nodali, le reazioni vincolari per controllare che i vincoli di posizionamento non portino carico come deve essere in un sistema autoequilibrato.

Ora si devono dichiarare gli elementi:

JOBS, ELEMENT TYPES, ANALYSIS DIMENSION, PLANAR

Si cerca poi l'intersezione, in SOLID, tra la colonna TRIA 6 (elemento triangolare a 6 nodi) e la riga PLANE STRESS, come mostrato di sotto;

Tale intersezione è l'elemento 124, da applicare a tutti gli elementi con il solito comando ALL EXISTING.

Si salvi poi tramite;

FILES, SAVE AS, TUBO_V3 per esempio,

A questo punto si clicca su RUN nel menù JOBS e poi SUBMIT e nella propria HOME sarà disponibile il file creato dal MARC in formato .MUD.

Si può verificare il procedere del calcolo guardando in basso a destra nella schermata di lavoro.

Il programma è in 'working'. Quando il calcolo finisce torna su 'Ready' e nella finestra RUN JOBviene restituito un numero che indica l'esito del calcolo (exit number). L'unico valore che indica la buona riuscita del calcolo è 3004. 2004 significa singolarità della matrice di rigidezza della struttura, 13 indica un errore nel modello, etc.

Cliccare su [open post file] per aprire i risultati.

Inoltre vi è una voce SINGLE RATIO che fornisce la singolarità (mal condizionamento) della matrice risolta, se il numero restituito è molto basso (10^-14) sicuramente ci si è scordati un moto di corpo rigido residuo.

POST-PROCESSING:GESTIONE DEI RISULTATI

I risultati del calcolo vengono salvati su tre diversi file: file.dat, file.log, file.t16. I primi due possono essere aperti con un programma tipo blocco note. L'immagine seguente è un esempio di quanto si può leggere nel file.log (un diario del programma riporta tutti i passaggi effettuati).

Si osserva che è possibile verificare o meno la buona riuscita del calcolo e, in caso di successo, si può leggere il tempo che è stato necessario.

Il file.t16 è il risultato espresso in codice binario e non lo si può aprire con un normale programma di lettura.

Lo si può aprire con il Marc/Mentant, il quale esprime i risultati in modo visivo. Per la visualizzazione dei risultati, sfruttando l'interfaccia grafica di Marc/Mentat, bisogna aprire il file dei risultati cliccando sul pulsante Open Post File (Results Menù) presente nella finestra JOBS/Run. E' possibile notare che si sta lavorando su un file di risultati (postprocessing) in quanto l'estensione del file non sarà più .mud, ma .t16.

FORMA DEFORMATA

Innanzitutto tramite il comando Deformed shape è possibile visualizzare la forma dell'oggetto deformato in relazione a quella dell'oggetto indeformato. Cliccando su [deformed and original], [settings] ed attivando automatic è possibile confrontare (con una scala opportuna) la deformata con la forma originale . Attivando invece la voce manual è possibile scegliere la scala desiderata. Come si vede dalla figura seguente, deformata e originale si discostano per via dell'imposizione di spostamento non nullo fatta sul carrello.

Spesso si è soliti studiare la deformata applicando un fattore di scala in modo che sia visibile ciò che varia rispetto alla originale. E' bene in questo caso cliccare sull'impostazione SHOW FACTOR in modo che il lettore sia consapevole di star osservando una amplificazione (spesso è così) dell deformata.

SCALAR PLOT

Tramite il sottomenù Scalar Plot è possibile visualizzare i risultati riguardanti grandezze scalari in diversi metodi rappresentativi. Ad esempio un metodo di semplice comprensione visiva è quello di visualizzare le bande di livello (contour bands) che caratterizzano la grandezza selezionata. Cliccando su [scalar] è possibile selezionare il parametro scalare da visualizzare, come ad esempio la tensione equivalente di Von Mises.

VISUALIZZAZIONE TENSIONI DI VON MISES

Selezionando la tensione equivalente di Von Mises come valore da visualizzare in uscita, si osserva come lo stato tensionale è uniforme su ogni strato radiale, massimo all'interno del tubo e in progressiva diminuzione man mano che ci si muove verso l'esterno, proprio come è riportato in letteratura.


Per permettere una migliore stampabilità del wiki chiederei di acquisire gli screenshot con fondo NON nero.

per fondo bianco mentat, area modello UTILS → POSTSCRIPT.SETTINGS →PREDEFINED COLORMAPS.2

per fondo bianco mentat, area menu CONFIGURATION.DEVICE → MENU COLORS → COLOR TABLE.GRAY

foglio di calcolo bias factor corone circolari

tubo mesh cattedra 48 suddivisioni, quad8

BIBLIOGRAFIA

APPUNTI LEZIONE TEORICA, INTEGRATI CON REGISTRAZIONE AUDIO, WIKI 2014 PAGINA CORRISPONDENTE

Maxima

kill(all);
load(eigen);

definisco funzione lunghezza

define (

lunghezza(xA,yA,xB,yB)
,
sqrt((xB-xA)^2 + (yB-yA)^2  )

);

visualizzo lunghezza di indeformato e deformato

lunghezza(xi,yi,xj,yj);
lunghezza(xi+ui,yi+vi,xj+uj,yj+vj);

calcolo sforzo normale (>0 se trattivo) barra, k = rigidezza molla

N : k * (
    lunghezza(xi+ui,yi+vi,xj+uj,yj+vj) 
    -
    lunghezza(xi,yi,xj,yj)
    );

calcolo cos(alpha) e sin(alpha) in funzione delle coord. nodali

define(
c(xi,yi,xj,yj)
,
(xj-xi)/lunghezza(xi,yi,xj,yj)
);
define(
s(xi,yi,xj,yj)
,
(yj-yi)/lunghezza(xi,yi,xj,yj)
);

compongo il vettore (lista!!) delle forze nodali F sulla deformata

F_csdef: [
-N*c(xi+ui,yi+vi,xj+uj,yj+vj),
-N*s(xi+ui,yi+vi,xj+uj,yj+vj),
+N*c(xi+ui,yi+vi,xj+uj,yj+vj),
+N*s(xi+ui,yi+vi,xj+uj,yj+vj)
] ;

linearizzo (= espando in serie di Taylor al primo ordine) nell'intorno della condizione indeformata

taylor ( 
 F_csdef
,
 [ui,vi,uj,vj]
,
 [ 0, 0, 0, 0]
,
 1
)$

raccolgo i coefficienti di influenza dei termini spostamento

K:coefmatrix(%,[ui,vi,uj,vj]);
define(
        Kfun(xi,yi,xj,yj,k),
        %
);

testo su di uno specifico dimensionamento

myK : Kfun(0,0,1,1,1);

testo su di una specifica deformazione

delta : transpose(matrix([0,0,1,1]));
myK . delta;

via energetica

U : 1/2 * k * (lunghezza(xi+ui,yi+vi,xj+uj,yj+vj) - lunghezza(xi,yi,xj,yj))^2;
diff(U,ui);
ev(%,ui=0,uj=0,vi=0,vj=0);
hessian(U,[ui,vi,uj,vj])$
ev(%,ui=0,uj=0,vi=0,vj=0);
define(
        KUfun(xi,yi,xj,yj,k,l0),
        %
);
KUfun(0,0,1,1,1,0)-myK;