====== INTRODUZIONE AL MARC MENTAT - CONTINUO ======
===== PIASTRA FORATA CON ELEMENTO TRIANGOLARE 3 NODI =====
=== Dalla lezione precedente ===
Riprendiamo il modello di fine lezione precedente (lastra forata con un solo elemento triangolare con due cateti uguali). Avevamo deciso di prendere una formulazione di stato di tensione piana (cioè le sole componenti di tensione non nulle sono σx, σy, τxy). Abbiamo assegnato alla lastra uno spessore unitario (1 mm). Macroscopicamente, possiamo andare a ricavare le dimensioni del nostro oggetto utilizzando le funzioni nel menu ''**utils**''; tra queste funzioni c’è la funzione ''**distance**'', con la quale possiamo cliccare su due punti per ottenerne a schermo il valore della loro distanza (in particolare abbiamo visto che il raggio del foro è di 10 mm, la semi larghezza della lastra è 40 mm). La nostra lastra vorrebbe modellare una lastra infinitamente estesa in direzione y. Definita la formulazione di tensione piana, l’abbiamo associata al nostro elemento, oggetto della nostra analisi (vediamo infatti che nel menu ''**geometric properties**'', ''**plane stress**'', esiste un elemento che è stato associato a questa formulazione).
=== Definizione delle proprietà del materiale ===
Occorre definire le proprietà del materiale. Andiamo in ''**material properties**'' e creiamo una nuova scheda proprietà di materiale cliccando su ''**new**''; selezioniamo come tipologia un materiale ''**standard**''. Scegliamo per semplicità un materiale elastico omogeneo ed isotropo che chiameremo: ''lineare_elastico_isotropo'' (potrebbe essere un alluminio). Il materiale lo sceglieremo fittizio, dell’ordine di un polimero.
Le proprietà di un materiale elastico sono divise in due categorie:
* ''**general**'': comprende la densità e alcuni parametri per effettuare una eventuale ottimizzazione su base costo; non useremo né questi né la densità, che occorrerebbe specificare se ci fossero forze inerziali, ma la nostra analisi è quasi statica. Volendo dare una densità, potremmo assegnare quella dell’acqua: ''1e-9'' (cioè 1*10^-9 tonnellate a millimetro^3; per l’alluminio è 2.7e-9; per l’acciaio è 7.8e-9). **NOTA**: Le unità di misura che usa il software sono: **millimetri** per le lunghezze, **secondi** per il tempo, **newton** per le forze, **tonnellate** per la massa;
* ''**structural**''. Qui, siccome scegliamo che il nostro materiale sia elasto-plastico ed isotropo, gli unici parametri che dobbiamo fornire sono il modulo di Young, E, ed il coefficiente di Poisson ( ''**Poisson's ratio**''); sceglieremo un ''modulo di Young E = 1000'' e un ''coefficiente di Poisson = 0.3'' (se il materiale fosse alluminio, E = 70000 MPa; se acciaio, E circa 210000 MPa). Abbiamo scelto di utilizzare un materiale fittizio e solo il coefficiente di Poisson è realistico, che è 0.3 per tutti i materiali strutturali di interesse (acciaio, alluminio, plastiche; non va bene nè per le gomme, nè per le schiume). Il modulo E è scelto fittizio e non realistico, per sottolineare il fatto che i risultati che otterremo da questa analisi non sono funzioni del modulo di Young. Il materiale è elastico, quindi non attiviamo la plasticità e non si è tenuti a definire lo snervamento (che potrebbe essere necessario per descrivere un comportamento elasto-plastico). Per analisi lineare elastica, basta assegnare il modulo di Young E ed il coefficiente di Poisson.
Definita la scheda materiale, associo questa scheda all’elemento. Nel menu principale vado in:
''**elemets**--->**add**''.
Il sotware mi chiede la lista di elementi da associare (ricordiamo di disattivare il ''**dynamic model**'') e lo assegno cliccando sul nostro elemento e dando il fine lista (comando ''**end list**''). A questo punto, a questa scheda materiale è associato un elemento.
=== Assegnazione degli spostamenti ai nodi ===
Vogliamo investigare sul comportamento di questo elemento e per farlo decidiamo di impostare una deformazione, assegnando come si muovono i nodi. Bisogna allora definire delle condizioni al contorno. Andiamo in ''**boundary condition**'' e creiamo una scheda nuova con ''**new**'' e scegliamo, tra le varie condizioni possibili,''**structural**''. Abbiamo a disposizione, come prima scelta, ''**fixed displacement**'' (spostamento imposto) che si usa per definire i vincoli come cerniere, carrelli, incastri, sia omogenei (cioè vincoli che impongono uno spostamento nullo su una data direzione di un nodo), sia non omogenei (ossia vincoli che impongono uno spostamento non nullo). Altre scelte sono:
* ''**fixed acceleration**'' (non serve nel nostro calcolo quasi statico),
* ''**point load**'' (carichi concentrati di nodo),
* ''**edge load**'' (carichi su un lato, utili per definire pressioni distribuite o azioni taglianti distribuite su elementi piani),
* ''**face load**'' (carico sulla faccia; sono pressioni taglianti distribuite, azioni taglianti distribuite, sulle facce degli elementi tridimensionali),
* ''**global load**'' (sono carichi distribuiti per unità di volume),
* ''**gravity load**'' (sono carichi distribuiti base densità e sono carichi gravitazionali),
* ''**centrifugal load**'' ( sono forze centrifughe),
* ''**foundation load**'' (supporti elastici utili per dimensionare fondazioni di un edificio; è un collegamento a terra, cedevole).
A noi interessa imporre uno spostamento ad un nodo, quindi useremo: ''**fixed displacement**''.
Abbiamo così creato una nuova scheda "boundary condition", alla quale assegneremo il nome: ''fissi_o_incastro_o_cernira''. Questa condizione al contorno manterrà fissi i nodi a cui è applicata. Nel caso di nodi che portano solo spostamenti e non rotazioni,un incastro e una cerniera sono oggetti del tutto analoghi.
Andiamo nelle proprietà della condizione ''**fixed displacement**'', dove avremo la possibilità di imporre spostamenti e rotazioni in x,y,z. Ovviamente, __non avrebbe senso imporre uno spostamento nullo lungo z ai nostri nodi visto che non hanno uno spostamento lungo z come variabile nodale__. In questo menù devo attivare i ''**displacement x**'' e ''**displacemet y**'', in modo tale che gli spostamenti lungo x e y da liberi che erano, diventino imposti e a valore pari a quello che leggiamo nella stessa schermata, in particolare il valore nullo. Quindi, attivando ''**displacement x**'' e ''**displacement y**'', abbiamo imposto una boudary condition che vincola ad avere spostamenti nulli in x e y.
**NOTA**: leggere le impostazioni in tale schermata come impostazioni su: primo grado libertà (che l’interfaccia grafica chiama ''**displacement x**''), secondo grado di libertà (che l’interfaccia grafica chiama ''**displacement y**''), terzo grado di libertà (che l'interfaccia grafica chiama ''**displacement z**''), quarto grado di libertà, quinto grado di libertà, sesto grado di libertà (per gli ultimi tre gradi di libertà l'interfaccia grafica fa riferimento alle rotazioni attorno x,y,z). Quindi, se abbiamo una trave piana (che ha possibilità di traslare in x e y e di ruotare intorno a z) e voglio bloccare la rotazione intorno a z dovrò attivare il terzo grado di libertà, che l’interfaccia grafica chiama ''**displacement z**''.
=== Gradi di libertà associati ad un elemento in Marc Mentat ===
Per vedere quali sono realmente i gradi di libertà di un elemento (dipendono dal tipo di elemento) si va, dal menu principale, in:
''**jobs** --->**element types**''.
Questo menù permette di associare tipologie di elemento ai nostri triangolari 3 nodi. Qui scegliamo ''**analysis class** ---> **structural**'', ed in ''**analysis dimension**'' scegliamo ''**planar**'' (cioè cambiamo ''**analysis dimension**'' da ''**3D**'' a ''**planar**'') In questo modo vengono fuori gli elementi per stati piani. Tra tutti gli elementi possibili da scegliere, noi scegliamo ''**solid**'' (cioè materiale pieno, che riempie lo spazio su cui giace). I triangolari tre nodi a disposizione sono quelli della prima colonna; per questo tipo di elemento abbiamo, per ''**plane stress,full integration**'', l’elemento 201. Quindi, **il nostro elemento è il 201**. Clicchiamo su ''**element tipe 201**'' e diamo ''**ok**''. A questo punto il software chiede la lista degli elementi a cui associare la lista 201; posso assegnare la lista sia andando a cliccare sull’elemento trinagolare tre nodi e dando il fine lista, o cliccando su ''**all_exist**'', in modo che il software associ la tipologia 201 a tutti gli elementi che esistono. Usando il comando ''**id_types**'', tutti gli elementi tipo 201 verranno evidenziati in colore rosa (con colore diverso gli elementi di tipo diverso).
Andiamo ora in ''**help**'' (nella parte in basso a destra dell'interfaccia grafica); si apre una finestra che ci da accesso a delle schede in pdf, che sono la guida del Marc. Clicchiamo su ''**element_library**''; c’è un capitolo per ogni elemento; scegliamo l’elemento 201 e, scorrendo la pagina, troviamo la sezione in cui ci dice quali sono i gradi di libertà dei nodi dell’elemento: notiamo che i primi due gradi di libertà sono proprio lo spostamento lungo x e y.
=== Vincolare la base dell'elemento ===
Dopo aver definito lo spostamento imposto, andiamo ad associare a questo spostamento i nodi della struttura. Nel nostro esercizio andiamo ad incastrare i nodi che sono alla base dell'elemento triangolare.
Procedimento:
andiamo in ''**boundary conditions**--->**nodes**--->**add**'' e selezioniamo i due nodi che sono alla base dell'elemento. Per terminare l'operazione premiamo su ''**end list**''.
=== Associare lo spostamento al nodo ===
Adesso imponiamo uno spostamento al nodo superiore, in particolare si impone una pura traslazione in 'x' di entità unitaria.
Procedimento:
apriamo la finestra ''**boundary conditions**'' e creiamo una nuova scheda premendo su ''**new**--->**structural**--->**fixed displacement**''. Nella casella ''**name**'' possiamo inserire il nome della nuova scheda. Per assegnare le proprietà al nodo apriamo la finestra ''**properties**'', nella quale attiviamo:
* ''**displacement x**'' e lo poniamo uguale al valore unitario;
* ''**displacement y**'' e lo lasciamo uguale al valore nullo.
**NOTA**: si deve dare 'invio' per assegnare un valore diverso da zero agli spostamenti, altrimenti rimangono nulli.
Imposti i valori, possiamo chiudere la finestra e procedere ad associare l'ultimo nodo rimasto dell'elemento.
Procedimento: si preme su ''**nodes**--->**add**'' e si seleziona il nodo. Per terminare l'operazione premiamo su ''**end list**''.
A questo punto il nostro problema ha zero incognite perchè abbiamo imposto gli spostamenti a tutti i nodi che prima erano liberi.
=== Procediamo al calcolo ===
Per effettuare il calcolo si accede al sezione ''**jobs**'' e si crea un nuovo foglio di calcolo.
Procedura: clicchiamo su ''**new**--->**structural**--->**properties**''. Aperta la finestra ''**properties**'' selezioniamo ''**initial load**''.
In quest'ultima finestra si può controllare se sono attive le boundary conditions di nostro interesse per il calcolo, che comunque è possibile attivare e disattivare. Infatti tutte le boundary conditions che sono state definite in precedenza vengono inserite nel modello nel momento in cui si attiva ''**jobs**''. Per cui se si inseriscono nuove condizioni, dopo aver attivato ''**jobs**'', queste vanno inserite manualmente.
=== Risultati dell'analisi ===
Per quel che riguarda i risultati da visualizzare si deve considerare che le tensioni e le deformazioni sono definite base elemento, mentre gli spostamenti, le reazioni vincolari e le forze esterne sono definite base nodo. Nella finestra ''**properties**'' possiamo cliccare su:
- ''**job results**'' per le quantità base elemento. Per vedere lo stato tensionale si deve attivare ''**stress**''. Per vedere lo stato deformativo si deve attivare ''**total strain**'' oppure ''**elastic strain**''. **NOTA** cliccando su ''**layers**'' si ha una stratificazione immaginaria all'interno dello spessore dell'oggetto analizzato. Cioè permette di vedere come tensioni e deformazioni possono variare tra la superficie superiore e quella inferiore della sezione dell'elemento. Nel nostro caso si ha stato tensionale e deformativo uniforme lungo lo spessore.
- ''**nodal quantities**'' per le quantità base nodo. In questo caso si ha la possibilità di selezionare ''**default**'' nella quale include forze nodali, reazioni vincolari, spostamenti e rotazioni in modo automatico; oppure si può selezionare ''**custom**'' per avere un miglior controllo. Selezionando quest'ultima, attiviamo ''**displacement**'' per vedere la deformazione della struttura; attiviamo ''**external force**'' per vedere le forze esterne anche se nel nostro caso non ci sono; attiviamo ''**reaction force**'' per vedere le reazioni vincolari.
Sempre nella finestra ''**properties**'' possiamo attivare ''**force balance**''. Questo permette, per una certa quantità di nodi e per una certa quantità di elementi, di scrivere su un file di testo tutti i contributi all'equilibrio per ciascun nodo e per ciascun elemento. Nella finestra che si apre clicchiamo su ''**nodes**--->**all**'' e su ''**elements**--->**all**'' per selezionarli tutti.
Per vedere se ci sono errori e warnings si clicca, nella finestra ''**jobs**'', su ''**check**''. Per vederli basta accedere alla schermata di visualizzazione in basso e spostarsi su e giù nel testo per trovare la natura degli errori.
=== Lanciamo il calcolo ===
Per lanciare il calcolo si apre il menu ''**run**'' e cliccando su ''**submit**'' si effettua il calcolo.
**NOTA** In realtà premendo su ''**submit**'' viene creato un file di testo (file.dat) che contiene l'input che arriva al solutore. In questo file sono contenute tutte le informazioni che riguardano l'elemento e i nodi che sono stati inseriti prima.
Dopo che il solutore ha analizzato il file, appare nella cella ''**exit number**'' il risultato dell'analisi, cioè un codice che definisce come è andato l'analisi. Ad esempio:
* il numero '3004' vuol dire che è andato tutto bene;
* il numero '2004' vuol dire che la struttura è labile;
* il numero '2011' indica un problema di definizione dei link;
* il numero '13' segnala errori nel modello. Ci possono essere varie tipologie di errori nel modello, queste sono riportate in maniera più specifica in un file di formato .out presente nella cartella in cui è stato salvato il modello. Il procedimento consiste nell'aprire il file con un programma di testo e cercare in questo la stringa **error**: qui sarà riportata la tipologia di errore commesso. Si consiglia di aprire il file con il software **Geany**.
===Cartella di lavoro===
Supponiamo di aver salvato il file con il nome model_1, (è consigliabile non usare mai gli spazi nel nominare un file, ciò potrebbe generare problemi, quindi sostituirli con gli underscore) nella **cartella di lavoro** troviamo diverse tipologie di file:
* **model_1.out**:diario nel dettaglio dell'analisi;
* **model_1.log**:diario riassuntivo dell'analisi;
* **model_1.mfd**:si usa per modificare il modello;
* **model_1.t16**:è un file binario, contiene i risultati e si può aprire solo con Mentat selezionando ''**Post processing results->open default**'';
* **model_1.grd**:contiene informazioni riguardanti **forze sugli elementi**, ad esempio nel nostro caso l'elemento 127 riceve dal nodo 92 forze interne in x, y e z: queste sono o le reazioni elastiche o le forze per equilibrare le reazioni elastiche (di uguale modulo ma segno opposto),forze associate a carichi distribuiti, forze associate di supporto elastico tipo fondazione. Le **forze sul nodo** riportate sono reazioni elastiche che gli elementi esercitano sul nodo considerato (internal forces from element), reazioni e forze residue.
{{ :wikitelaio2016:file_modello_grd.jpg |}}
===Configurazione finale della struttura===
Dopo aver selezionato ''**Post processing results->open default**'' siamo sul file dei risultati e qualsiasi modifica apportata al modello non avrà alcun effetto: se si volesse modificare qualcosa si dovrebbe tornare al modello cliccando sul comando ''**Close**''.
La struttura, inizialmente, si presenta nella configurazione deformata come scritto nel menu: se si seleziona ''**Original**'' nel menu a tendina aperto cliccando su ''**Deformed**'', visualizziamo l'indeformata; se selezioniamo ''**Deformed & Original**'' appare il confronto tra le due configurazioni.Tipicamente le deformate se il corpo è di materiale compatto e metallico non sono visibili ad occhio nudo per cui si ricorre alle deformate amplificate in maniera tale da poterle visualizzare: il fattore di amplificazione lo definiamo dal menù DEFORM SHAPE in ''**Settings->Deformation scaling**''. Se ritroviamo il fattore 1 la scala non è amplificata e possiamo impostare manualmente un altro fattore, oppure scegliendo ''**Automatic**'' viene inserita automaticamente dal software (di solito il fattore di amplificazione non è un informazione visibile sul nostro modello per questo si consiglia di inserire il comando ''**Show factor**'' importante per la chiarezza dell'analisi ).Si ricordi che la posizione dei nodi nella deformata è uguale alla posizione dei nodi nell'indeformata sommata allo spostamento eventualmente moltiplicato con il fattore di amplificazione.
{{ :wikitelaio2016:def_orig_completo.jpg?600 |}}
===Quantità di interesse===
Si prendono in esame le quantità base scalare del modello, queste sono le singole componenti di tesione, deformazione o di forza. Per cominciare se sono presenti i numeri che indicano i nodi della struttura è consigliabile disattivarli per evitare sovrapposizione tra questi e le entità delle reazioni vincolari che visualizzeremo sul grafico:basta selezionare ''**plot->nodes->settings**'' e disattivare la visualizzazione dei label. A questo punto si selezioni ''**Scalar->Displacement x**'' cioè l'entità di spostamento x: con questo menu gestisco la visualizzazione degli scalari sulla struttura, ad esempio si possono trovare spostamenti o forze esterne su x o y.Inizialmente lo scalare scelto non è visualizzato poichè si deve successsivamente selezionare il tipo di visualizzazione preferito: con il comando ''**Contour Bands**'' ottengo una rappresentazione a bande colorate con una legenda che ci spiega le quantità da un minimo a un massimo; lo spostamento è definito ai nodi mentre agli elementi viene interpolato linearmente (in questo caso coerentemente con la teoria). Quando ci ritroviamo con dei numeri al di sotto delle cifre siginficative stabilite possiamo ritenerli nulli: si può verificare che lo spostamento y sarà omogeneamente nullo.
Altre quantità scalari sono: **component 1 1 of total strain**, allungamento lungo x (componente 1 1=componente primo asse, primo asse, cioè direzione x),**component 2 2 of total strain** è la deformazione lungo y, **component 2 3 of total strain** è la strizione dell elemento da considerare per l'effetto Poisson anche se si lavora con tensione piane e **component 1 2 total strain** è la deformazione gamma x y. Per analizzare numericamente il grafico si selezioni ''**Numerics**'' che offre quantità precise nodo per nodo. Per visualizzare le reazioni vincolari clicco sul comando ''**more**'' nel menù, seleziono ''**vector plot -> reaction force -> on**'' e il programma ci fornisce i risultati, che possono essere visualizzati anche sulla configurazione indeformata. Se vogliamo rendere le frecce più visibili andiamo a cambiare la scala di visualizzazione delle frecce in ''**vector plot settings**'', troviamo la scala di visualizzazione con fattore di amplificazione (quelle di default sono quelle di tipo //wireframe//). ''**Arrow plot settings**'' permette di scegliere se visualizzare le teste delle frecce in maniera //wireframe// o //solid// se si vuole renderle più visibili.
{{ :wikitelaio2016:reazioni.png?1000 |}}
Dallo stesso menù è possibile visualizzare le grandezze tensoriali, ad esempio il //tensore delle deformazioni// andando a selezionare ''**tensor plot -> total strain -> all principal values**''. Il risultato son le componenti del tensore già orientate secondo le direzioni principali, come in figura seguente.
{{ :wikitelaio2016:tensorplot.png?1000 |}}
Per uscire dal postprocessing (ovvero per chiudere il file .t16) seleziono nel menù principale ''**postprocessing -> results -> close**''.
====Autori====
Michele De Luca Matr. 104899
Matteo Notarianni Matr. 99717
Francesco Davide Di Lorenzo Matr.106218
Leonardo Mastromauro 105214
====Tabella di monitoraggio carico orario====
Ore-uomo richieste per la compilazione della pagina.
^ Autore/Revisore ^ Prima stesura ^ Prima revisione ^ Seconda stesura ^ Revisione finale ^ Totale ^
| De Luca | 6 | --- | --- | --- | --- |
| Notarianni | 4 | --- | --- | --- | --- |
| Di Lorenzo | 6 | --- | --- | --- | --- |
| Mastromauro | 4 | --- | --- | --- | --- |
| Andrea Hawila | 1 | --- | --- | --- | --- |
| Alessandro Mattei | 1.5 | --- | --- | --- | --- |
| Revisore 3 | --- | --- | --- | --- | --- |
| Revisore 4 | --- | --- | --- | --- | --- |
| **Totale** | --- | --- | --- | --- | --- |
La sezione relativa ai revisori è da compilarsi a cura del curatore.
==== File caricati dal docente ====
{{:wikitelaio216:lastra_forata_v000.mfd|modello di riferimento}}
{{:wikitelaio216:lastra_forata_v001.mfd|modello a fine lezione precedente}}
{{:wikitelaio2016:lastra_forata_v002.mfd|modello con mesh a taglia elemento non uniforme}}
{{:wikitelaio2016:lastra_forata_inutilmente_fine.mud|modello con mesh inutilmente fine}}
Riga di comando per lanciare Mentat
mentat2013.1 -ogl -glflush
Riferimenti: {{:restricted:estratto_capitolo_fem_da_boresi_schmidt_5th_ed.pdf|The Finite Element Method}} da Boresi Schmidt, 5a edizione.
{{:wikitelaio2016:lastra_forata_monoelemento_a_taglio_gruppo_a.mfd|modello fine lezione gruppo a}}
{{:wikitelaio2016:lastra_forata_v001b.mfd|modello fine lezione gruppo b}}
~~DISCUSSION~~