header blog

Blog R&D

Storie di innovazione e facili tutorial per conoscere il mondo dell'opensource

In questo secondo tutorial di Code_Aster verrà trattato il tema delle deformazioni indotte da uno shock termico o da un generico raffreddamento brusco in un componente metallico, sarà pertanto necessario accoppiare l'analisi termica ad un'analisi meccanica (sforzo-deformazione).

Durante la tempra (raffreddamento improvviso) di componenti dalla geometria complessa è importante trovare la disposizione o orientamento che minimizza le deformazioni e le tensioni residue. Nella realtà il raffreddamento non è omogeneo; è impossibile infatti che tutte le facce del componente vengono raffreddate nello stesso identico istante. Per questo motivo è opportuno inserire nella simulazione, come condizione al contorno, la direzione e la velocità di immersione nel bagno di tempra.

Nel tutorial viene introdotta una funzione arbitraria per la gestione della condizione al contorno superficiale durante l'immersione. La funzione generata è una funzione logistica in quanto l'obiettivo dichiarato è avere una variazione brusca del coefficiente_h ma non istantanea. Tale funzione ha come variabili la direzione di immersione (coordinata Z ad esempio) e il tempo (INST). Il componente utilizzato, un generico carter di forma mediamente complessa, è stato scaricato da GrabCad .

Sono state simulate due direzioni di immersione, scelte in modo arbitrario, allo scopo di evidenziare il raffreddamento non omogeneo e conseguentemente la differente distribuzione di tensioni residue nel pezzo alla fine del trattamento.


 


 

RISULTATI

 

Distribuzione di temperatura nella configurazione Z dopo 1,2 secondi dall'immersione

 

Tensioni residue dopo raffreddamento in configurazione Y

 

Tensioni residue dopo raffreddamento in configurazione Z

CONCLUSIONI 

Come era possibile aspettarsi, la direzione lungo Y genera maggiori tensioni residue all'interno del pezzo rispetto alla direzione Z. La disposizione "di piatto" (lungo Z) del carter in lega d'alluminio durante il ciclo di trattamento sembra pertanto da preferirsi per diminuire sia le deformazioni sia gli stress residui da tempra

 

Le immagini ottenute attraverso un microscopio a scansione elettronica (SEM) sono, per vincoli tecnici, ricostruzioni in bianco e nero (toni di grigio) della superficie osservata . Attualmente lo standard di pubblicazione di riviste con alto fattore di impatto richiede che tali immagini vengano colorate per aumentarne la profondità di campo e migliorarne la visualizzabilità. Esistono svariati metodi di complessità crescente per aggiungere colore alle immagini SEM. In questa prima guida verrà introdotto un metodo relativamente semplice per aumentare la profondità di campo a partire da una singola immagine utilizzando il software opensource GIMP (https://www.gimp.org/). Di seguito la procedura in pochi semplici passi:

1- Importare l'immagine in GIMP.

2- Convertirla in formato a colori (RGB) : Immagine -> Modalità -> RGB.

3- Generare due immagini identiche sovrapposte : Livello -> Duplica Livello.

4- Dal pannello laterale Livelli  ridurre l'opacità del livello più alto (livello 2) ad un valore compreso tra il 50% ed il 70%, a seconda del tipo di immagine.

5- Colorare il livello 1 (ad opacità 100%) : selezionare il livello 1 quindi  Colori -> Colora . Selezionare un colore di fondo dell'immagine dosandone anche saturazione e luminosità.

6- Intervenire sul livello 2 : selezionare il livello 2 quindi Colori -> Bilanciamento colore . In questa fase non esiste una regola precisa, generalmente operando su alte luci e ombre è possibile generare sfumature colorate in grado di aumentare il livello di profondità fittizia dell'immagine.

7- Ripetere il punto 4 fino a trovare la condizione di equilibrio desiderata.

8- Lavorare sul contrasto del livello 2 : Colori -> Luminosità-contrasto . Apportare piccoli cambiamenti al contrasto, generalmente aumentandolo, può portare ad un risultato sensibilmente migliore.

Nota: bisogna porre attenzione a non rovinare la risoluzione sgranando o "bruciando" (sovraesposizione) i colori durante le modifiche.

 

Fonte : http://remf.dartmouth.edu/images/insectPart3SEM/source/25.html

 

 

Fonte: http://www.azonano.com/article.aspx?ArticleID=3646


Nel primo tutorial viene trattato il tema delle analisi termiche con il software Code-Aster (http://code-aster.org). L'analisi è contestualizzata nello studio del raffreddamento dopo solubilizzazione di un generico componente meccanico, in lega di alluminio, caratterizzato da una massa termica non bilanciata. Il componente esce dal forno alla temperatura di 500°C e viene quindi immerso in acqua non agitata alla temperatura di 50 °C.

SALOME MECA

Attraverso questo software opensource (http://www.code-aster.org/V2/spip.php?article303) liberamente scaricabile è possibile eseguire tutti gli step dell'analisi. Gli step si dividono in : definizione della geometria, calcolo della mesh, definizione delle istruzioni di calcolo, soluzione, post-processing.

MODULO GEOMETRIA

La geometria viene importata in file STEP, successivamente viene creato un gruppo di facce sul quale applicare le condizioni al contorno. Vengono selezionate le superfici di scambio termico pezzo-acqua, tale gruppo prende il nome di "quench"; la superficie inferiore del componente, appoggiato su una piastra di supporto durante il trattamento, non entra in contatto con l'acqua e pertanto al momento non viene inserita nel gruppo quench.

MODULO MESH

La mesh viene calcolato attraverso l'algoritmo NETGEN con elementi triangolari e quadrangolari, il dimensionamento degli elementi è stato eseguito in modo da avere almeno 3 nodi per ogni sezione. La mesh quindi viene esportata in formato MED

 

MODULO ASTER

Attraverso "Aster -> add study case" è possibile iniziare una nuova simulazione fornendo un file di comandi, il file .comm e un file con la mesh .med.

file .comm =

DEBUT();

#MESH IMPORT: lire_maillage per importare la mesh in formato MED

mesh=LIRE_MAILLAGE(FORMAT='MED',);

#MATERIAL DEFINITION / DEFINIZIONE MATERIALE
#funzione DEFI_MATERIAU. THER = thermal properties / proprietà termiche
#IMPORTANT !!!!  RHO_CP = density * specific heat  [J/(m^3 *K)]

mate=DEFI_MATERIAU(THER=_F(LAMBDA=140.0,
                           RHO_CP=2430000.0,),);

#MATERIAL DOMAIN / DEFINIZIONE DEL DOMINIO DEL MATERIALE
#command AFFE_MATERIAU . Define wich part (TOUT=OUI) of the mesh (MAILLAGE) is affected by material properties (MATER)

affe_t=AFFE_MATERIAU(MAILLAGE=mesh,
                     AFFE=_F(TOUT='OUI',
                             MATER=mate,),
                     AFFE_VARC=_F(TOUT='OUI',
                                  NOM_VARC='TEMP',
                                  VALE_REF=20.0,),);

#MODEL DEFINITION / DEFINIZIONE DEL MODELLO
#command AFFE_MODELE , definition of the phisical domain (PHENOMENE=thermique)

m_ter=AFFE_MODELE(MAILLAGE=mesh,
                  AFFE=_F(TOUT='OUI',
                          PHENOMENE='THERMIQUE',
                          MODELISATION='3D_DIAG',),);

#THERMAL BOUNDARY CONDITION / CONDIZIONI AL CONTORNO TERMICHE
#Boundary Exchange / Scambio Termico alla superficie (ECHANGE)
#In this water quenching case a static mean exchange coefficient (COEF_H) [W/(m^2 * K)]  is used with a defined water temperature (TEMP_EXT)

char_t=AFFE_CHAR_THER(MODELE=m_ter,
                      ECHANGE=_F(GROUP_MA='quench',
                                 COEF_H=3000.0,
                                 TEMP_EXT=50.0,),);

#TIME TRANSIENT DEFINITION / DEFINIZIONE DELLA LISTA DEGLI ISTANTI DI CALCOLO
#Starting from a list of number defined with DEFI_LIST_REEL in several intervals, the intervals have smaller timesteps during the firsts seconds of the simulation

tempo=DEFI_LIST_REEL(DEBUT=0.0,
                     INTERVALLE=(_F(JUSQU_A=1.0,
                                    NOMBRE=20,),
                                 _F(JUSQU_A=5.0,
                                    NOMBRE=20,),
                                 _F(JUSQU_A=20.0,
                                    NOMBRE=20,),),);

inst=DEFI_LIST_INST(DEFI_LIST=_F(METHODE='AUTO',
                                 LIST_INST=tempo,
                                 PAS_MINI=0.005,
                                 PAS_MAXI=3.0,),
                    ADAPTATION=_F(),);

#THERMAL SOLVER / RISOLUZIONE DEL PROBLEMA TERMICO
#since this is a linear case the command for the resolution is THER_LINEARE, the initial state (ETAT_INIT) is defined in temperature (500 C)  at the time 0.0 (INST_ETAT_INIT)

t_lin=THER_LINEAIRE(MODELE=m_ter,
                    CHAM_MATER=affe_t,
                    EXCIT=_F(CHARGE=char_t,),
                    ETAT_INIT=_F(VALE=500.0,
                                 INST_ETAT_INIT=0.0,),
                    INCREMENT=_F(LIST_INST=inst,
                                 INST_INIT=0.0,),
                    SOLVEUR=_F(METHODE='MULT_FRONT',),
                    PARM_THETA=0.57,);

#SAVING RESULTS / SALVATAGGIO DEI RISULTATI
#The data calculated in THER_LINEAIRE, defined by the command RESU, are saved in MED format.

IMPR_RESU(FORMAT='MED',
          RESU=_F(MAILLAGE=mesh,
                  RESULTAT=t_lin,
                  TOUT_CHAM='OUI',),);

FIN();

Una volta definito il file di comando si lancia la simulazione attraverso il tasto play

MODULO DI POST PROCESSING (PARAVIEW)

I risultati ottenuti dal calcolo sono quindi importati nel modulo di paraview per essere analizzati.

0.5s
Distribuzione di temperatura a 0.5 secondi

Page 3 of 3

L.THEME