header blog

Blog R&D

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

In questo terzo tutorial verrà illustrata la grande flessibilità del software Code_Aster nella gestione di condizioni al contorno particolari. L'esempio riguarda il raffreddamento per immersione in un bagno temprante di un componente in acciaio. Nei tutorial precedenti il raffreddamento era guidato da un coefficiente di scambio termico h [W/m^2 K ] costante; in realtà tale coefficiente subisce forti variazioni in funzione della temperatura superficiale del componente. Un generico mezzo temprante in fase liquida (sia acqua che olio) attraversa infatti 3 fasi di raffreddamento dette :

- film boiling : valori di coeff. h bassi

- nucleation/bubble boiling : valori di coeff.h molto alti

- convezione naturale : valori di coeff. h medio/bassi

 Nell'immagine sottostante un esempio di quanto il coefficiente di scambio per l'acqua e per l'olio possa variare durante le fasi di raffreddamento.

Fonte : ALD VACUUM TECHNOLOGIES

 A livello numerico la simulazione di un raffreddamento con coefficiente h variabile con la temperatura diventa pertanto non lineare in campo termico, Code_Aster in questi casi prevede l'utilizzo della funzione THER_NON_LINE.

La condizione al contorno di scambio termico tuttavia non prevede un coefficiente h funzione della temperatura h(T) ma solamente funzione del tempo : h(t); bisogna quindi sviluppare una condizione al contorno, definita dall'utente, che gestisca lo scambio di calore alla superficie.

Inizialmente vengono inseriti nel software i valori di coefficiente h in funzione delle diverse temperature di superficie, quindi vengono interpolati in modo lineare su tutto il dominio generando così la funzione "hT"; si definisce quindi la FORMULA "hec" (heat exchange coefficient) dello scambio termico funzione della temperatura T.

hec(T) = hT(T) * (Text - T) 

con Text la temperatura del bagno di tempra.

L'algoritmo di simulazione è stato testato su di un generico componente di media complessità a forma cilindrica ottenuto da GrabCad. Il componente alla temperatura di 850° in acciaio è stato immerso in un bagno di tempra a base olio. In questa simulazione per semplicità è stato considerato un tempo di immersione così ridotto da trascurare la velocità di ingresso nel bagno temprante. Di seguito i profili di temperatura rispettivamente dopo 2 e 10 secondi dall'immersione.

 

Profili di temperatura alla superficie ed in sezione dopo 2 secondi
Profili di temperatura alla superficie ed in sezione dopo 10 secondi

 CONCLUSIONI

Si può notare come, a causa dei diversi regimi di raffreddamento implementati, il gradiente di temperatura tra superficie e cuore varia in maniera non lineare rispetto al tempo: dopo 2 s il deltaT è di circa 200°C mentre dopo 10 s il deltaT è aumentato a 340 °C per poi ridursi via via che si raggiunge la temperatura di equilibrio del bagno. Questo avviene perchè alcune zone raggiungono una velocità di raffreddamento superiore ( passaggio tra film boiling e nucleation boiling) alcuni istanti prima di altre e questo fa si che la forbice di valori si allarghi notevolmente.

 

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

Pagina 3 di 3

L.THEME