Simulazione della tempra con Code_Aster

Stampa

Traduzione dell'intervento di ARGO al Code_Aster day di Modena del 23/11/18, English version here

Abstract. La simulazione del raffreddamento è uno strumento importante per la progettazione della tempra di un componente meccanico. I fattori che influenzano la qualità del processo sono molteplici e un approccio virtuale è sicuramente vincente e utile, specie quando è possibile farlo con strumenti open source ed affidabili come Code_Aster. Nel caso esposto, grazie alla simulazione, è stata individuata e risolta la causa di elevata difettosità su lotti temprati: la degradazione dell'olio da tempra era tale da non consentire più un raffreddamento utile a temprare il componente scelto. Il modello finale è stato quindi re-impiegato come strumento di controllo qualità per valutare nel tempo l'idoneità del bagno d'olio, valutandone l'idoneità a seconda delle geometrie trattate e della loro disposizione nel cesto, ottimizzando inoltre al meglio i costosi interventi di ricondizionamento dell'olio e soprattutto riducendo scarti e costi di esercizio.

 

Perchè la tempra. Tra tutti i trattamenti termici dei metalli, la tempra delle leghe ferrose (quenching) è sicuramente la più diffusa. Questo trattamento permette di aumentare la durezza e la resistenza di un acciaio attraverso la formazione della fase metallografica Martensite (detti appunto acciai martensitici). La martensite si forma quando viene impedita la trasformazione per diffusione della fase "calda" austenite nelle fasi termodinamicamente stabili (ferrite, perlite, bainite). Attraverso un rapido raffreddamento si toglie al carbonio il tempo di diffondere, restando così "congelato" nella struttura martensitica, fortemente tensionata e per questo più dura. Il raffreddamento rapido e la trasformazione stessa portano a drastici cambiamenti volumetrici che, se non controllati, generano forti tensioni e conseguenti deformazioni nel componente temprato. Distorsioni, cricche da tempra, durezze non omogenee sono infatti le cause più comuni nella generazione post-tempra di scarti di processo.


 La tempra con Code_Aster. La tempra è un fenomeno multi-fisico e multi-scala. La simulazione di Code_Aster calcola le tensioni e le deformazioni risultanti a partire da due contributi separati: la contrazione volumetrica data dal raffreddamento e l'espansione volumetrica data dalle trasformazioni di fase. In realtà come si può vedere dallo schema seguente entrambi i contributi hanno come variabile scatenante proprio il raffreddamento inteso come l'evoluzione termica del pezzo, pertanto possono considerarsi due contributi dipendenti.

 quench aster fig1

Le proprietà materiale e il conseguente calcolo delle trasformazioni sono gestite attraverso le librerie META_ACIER di Code_Aster. Per una descrizione accurata del modello e del suto utilizzo si rimanda, oltre al sito ufficiale del software , alla tesi di laurea magistrale [1] "Simulazione Numerica dello Stadio di Tempra con Diversi Mezzi Tempranti su Acciai Basso Legati Mediante Software Open Source" di Mario Questino (Politecnico di Torino) alla quale collaborai anche io. Ringrazio personalmente Mario che ha concesso l'utilizzo dei dati e dei risultati presenti nella sua tesi in questa presentazione e su questo sito.


 L'approccio di ARGO. Normalmente molta enfasi viene data alla modellazione della cinetica di trasformazione del materiale, mentre viene trascurata l'importanza delle condizioni al contorno di scambio termico alla superficie del componente. Infatti, nonostante venga spesso modellato in modo semplicistico, lo scambio di calore tra mezzo temprante e pezzo è funzione di molti parametri, dal tipo di mezzo temprante alla condizione di processo. In ARGO i processi di tempra, e più in generale di trattamento termico, vengono analizzati ricorrendo al coefficiente di scambio termico (HEC - W/m2K). Tale coefficiente è una misura quantitativa dello scambio termico alla superficie e, nel caso ad esempio di una tempra per immersione, è fortemente non lineare come si può vedere nell'immagine seguente.

HEC_quench

Spesso come condizione al contorno viene imposto un HEC medio e ciò comporta un errore a monte di tutto il modello di trasformazione, errore non colmabile nelle operazioni a valle. Non ha quindi senso investire elevata precisione nel complesso modello di trasformazione metallurgica se il raffreddamento stesso non è aderente alla realtà sperimentale. Il principale suggerimento rivolto a chiunque voglia intraprendere la simulazione di tempra è di dedicare sempre una precisione ragionevole alla modellazione delle condizioni reali di raffreddamento, sfruttando misure sperimentali e ripetibili del coefficiente HEC (o HTC a seconda delle diciture) e impostando condizioni al contorno idonee. L'inserimento di una condizione di HEC funzione della temperatura superficiale avviene in Code_aster grazie alla funzione FLUX_NL già esposta nel tutorial Analisi termica non lineare con Code_Aster.


Caso applicativo. A scopo di illustrare le potenzialità del software e dell'approccio scientifico viene esposto un caso applicativo reale mutuato dalla tesi di Mario Questino [1]. La misura dell'HEC, unita alla simulazione della tempra, ha permesso di identificare nella degradazione dell'olio temprante il responsabile di una serie di difetti riscontrati sui pezzi quali: durezze inferiori, disomogeneità di trattamento all'interno del lotto, "soft spot" casuali misurati sulla superficie dei pezzi. Industrialmente ogni ciclo di tempra comporta una degradazione dell'olio che compone il bagno di raffreddamento. Col passare del tempo non è più sufficiente il semplice rabbocco della frazione evaporata o combusta ma si rende necessaria una filtrazione o addirittura la sostituzione. Dato l'onere economico di tale procedura spesso questa viene ritardata il più a lungo possibile, mancando però un approccio scientifico efficace per valutare quando si supera il punto limite oltre al quale si incorrono in difetti e sale vertiginosamente il numero degli scarti. Nella figura successiva il coefficiente HEC sperimentale dell'olio nuovo e dell'olio degradato (prelevato dal bagno), si nota come il potere dissipativo di quest'ultimo sia decisamente inferiore a quello originale [1].

 quench aster fig2

Utilizzando i coefficienti HEC sperimentalmente misurati, sono state condotte due simulazioni di tempra su di una geometria (ingranaggio) rappresentativa dei componenti in lega 42CrMo4 trattati. Il risultato mostra come il potere temprante dell'olio degradato non consenta di ottenere sulla superficie del dente uno strato martensitico omogeneo, si ottengono quindi durezze inferiori rispetto a quanto previsto e, come conseguenza, una maggiore usura in fase di utilizzo. Nella figura successiva un confronto dei risultati ottenuti con i due olii.

quench aster fig3


Conclusioni. Questo è un esempio concreto di come la simulazione con Code_Aster possa portare ad ottimizzazioni reali e a risparmi di tempo e denaro concreti in Azienda. La simulazione dei trattamenti termici è uno strumento che deve diventare parte integrante della progettazione stessa del trattamento. Il modello di Code_Aster per la tempra ha ancora alcune lacune, una fra tutte la previsione della reale durezza del componente fatta snza considerare la velocità di raffreddamento. Il modello metallurgico conduce a risultati compatibili con la realtà sperimentale, tuttavia i parametri richiesti per inserire le proprietà materiale per le funzioni META_ACIER sono numerosi e non semplici da reperire, inoltre la loro implementazione è abbastanza laboriosa, ad esempio le curve CCT vanno convertite in tabelle (DEFI_TRC). 


 ESEMPIO UTILIZZO COMANDI META_ACIER

TRC=DEFI_TRC(HIST_EXP=(_F(VALE=(-0.020833333,6.0,80563.0,-0.0276,0.000122,-2.955e-07,3.402e-10,-1.517e-13,0.0,0.0,0.0,820.0,0.0,
0.0,0.0,760.0,0.01,0.0,0.0,756.0,0.4,0.01,0.0,707.0,0.4,0.6,0.0,686.0,0.4,0.6,0.0,600.0,
0.4,0.6,0.0,500.0,0.4,0.6,0.0,400.0,0.4,0.6,0.0,300.0,0.4,0.6,0.0,200.0,0.4,0.6,0.0,100.0,
),),
_F(VALE=(-0.041666667,6.0,80563.0,-0.0276,0.000122,-2.955e-07,3.402e-10,-1.517e-13,0.0,0.0,0.0,820.0,0.0,
0.0,0.0,760.0,0.01,0.0,0.0,750.0,0.35,0.01,0.0,702.0,0.35,0.65,0.0,678.0,0.35,0.65,0.0,
600.0,0.35,0.65,0.0,500.0,0.35,0.65,0.0,400.0,0.35,0.65,0.0,300.0,0.35,0.65,0.0,200.0,0.35,
0.65,0.0,100.0,),),
_F(VALE=(-0.083333333,6.0,80563.0,-0.0276,0.000122,-2.955e-07,3.402e-10,-1.517e-13,0.0,0.0,0.0,820.0,0.0,
0.0,0.0,760.0,0.01,0.0,0.0,738.0,0.35,0.01,0.0,698.0,0.35,0.65,0.0,672.0,0.35,0.65,0.0,
600.0,0.35,0.65,0.0,500.0,0.35,0.65,0.0,400.0,0.35,0.65,0.0,300.0,0.35,0.65,0.0,200.0,0.35,
0.65,0.0,100.0,),),
_F(VALE=(-0.166666667,6.0,80563.0,-0.0276,0.000122,-2.955e-07,3.402e-10,-1.517e-13,0.0,0.0,0.0,820.0,0.0,
0.0,0.0,760.0,0.01,0.0,0.0,733.0,0.35,0.01,0.0,690.0,0.35,0.62,0.0,590.0,0.35,0.62,0.0,
500.0,0.35,0.62,0.01,470.0,0.35,0.62,0.02,199.0,0.35,0.62,0.02,100.0,),),
_F(VALE=(-0.333333333,6.0,80563.0,-0.0276,0.000122,-2.955e-07,3.402e-10,-1.517e-13,0.0,0.0,0.0,820.0,0.0,
0.0,0.0,760.0,0.0,0.0,0.0,750.0,0.01,0.0,0.0,727.0,0.3,0.01,0.0,680.0,0.3,0.4,0.0,592.0,
0.3,0.4,0.01,501.0,0.3,0.4,0.28,210.0,0.3,0.4,0.28,100.0,),),
_F(VALE=(-0.461538462,6.0,80563.0,-0.0276,0.000122,-2.955e-07,3.402e-10,-1.517e-13,0.0,0.0,0.0,820.0,0.0,
0.0,0.0,760.0,0.0,0.0,0.0,750.0,0.01,0.0,0.0,718.0,0.25,0.01,0.0,658.0,0.25,0.15,0.0,593.0,
0.25,0.15,0.01,516.0,0.25,0.15,0.57,219.0,0.25,0.15,0.57,100.0,),),
_F(VALE=(-1.2,6.0,80563.0,-0.0276,0.000122,-2.955e-07,3.402e-10,-1.517e-13,0.0,0.0,0.0,820.0,0.0,0.0,0.0,
760.0,0.0,0.0,0.0,750.0,0.0,0.0,0.0,700.0,0.01,0.0,0.0,698.0,0.05,0.0,0.0,600.0,0.05,0.0,
0.01,556.0,0.05,0.0,0.9,265.0,0.05,0.0,0.9,200.0,0.05,0.0,0.9,100.0,),),
_F(VALE=(-2.0,6.0,80563.0,-0.0276,0.000122,-2.955e-07,3.402e-10,-1.517e-13,0.0,0.0,0.0,820.0,0.0,0.0,0.0,
760.0,0.0,0.0,0.0,750.0,0.0,0.0,0.0,700.0,0.0,0.0,0.0,650.0,0.0,0.0,0.0,600.0,0.0,0.0,0.01,
567.0,0.0,0.0,0.92,280.0,0.0,0.0,0.92,200.0,0.0,0.0,0.92,100.0,),),
_F(VALE=(-3.0,6.0,80563.0,-0.0276,0.000122,-2.955e-07,3.402e-10,-1.517e-13,0.0,0.0,0.0,820.0,0.0,0.0,0.0,
760.0,0.0,0.0,0.0,750.0,0.0,0.0,0.0,700.0,0.0,0.0,0.0,650.0,0.0,0.0,0.0,600.0,0.0,0.0,0.01,
569.0,0.0,0.0,0.9,286.0,0.0,0.0,0.9,200.0,0.0,0.0,0.9,100.0,),),
_F(VALE=(-7.5,6.0,80563.0,-0.0276,0.000122,-2.955e-07,3.402e-10,-1.517e-13,0.0,0.0,0.0,820.0,0.0,0.0,0.0,
760.0,0.0,0.0,0.0,750.0,0.0,0.0,0.0,700.0,0.0,0.0,0.0,650.0,0.0,0.0,0.0,600.0,0.0,0.0,0.01,
556.0,0.0,0.0,0.8,300.0,0.0,0.0,0.8,250.0,0.0,0.0,0.8,200.0,0.0,0.0,0.8,100.0,),),
_F(VALE=(-12.0,6.0,80563.0,-0.0276,0.000122,-2.955e-07,3.402e-10,-1.517e-13,0.0,0.0,0.0,820.0,0.0,0.0,
0.0,760.0,0.0,0.0,0.0,750.0,0.0,0.0,0.0,700.0,0.0,0.0,0.0,650.0,0.0,0.0,0.0,600.0,0.0,0.0,
0.01,550.0,0.0,0.0,0.6,313.0,0.0,0.0,0.6,300.0,0.0,0.0,0.6,200.0,0.0,0.0,0.6,100.0,),),
_F(VALE=(-15.0,6.0,80563.0,-0.0276,0.000122,-2.955e-07,3.402e-10,-1.517e-13,0.0,0.0,0.0,820.0,0.0,0.0,
0.0,760.0,0.0,0.0,0.0,750.0,0.0,0.0,0.0,700.0,0.0,0.0,0.0,650.0,0.0,0.0,0.0,600.0,0.0,0.0,
0.01,545.0,0.0,0.0,0.45,320.0,545.0,0.0,0.0,0.45,320.0,0.0,0.0,0.45,300.0,0.0,0.0,0.45,
200.0,0.0,0.0,0.45,100.0,),),
_F(VALE=(-30.0,6.0,80563.0,-0.0276,0.000122,-2.955e-07,3.402e-10,-1.517e-13,0.0,0.0,0.0,820.0,0.0,0.0,
0.0,760.0,0.0,0.0,0.0,750.0,0.0,0.0,0.0,700.0,0.0,0.0,0.0,650.0,0.0,0.0,0.0,600.0,0.0,0.0,
0.0,545.0,0.0,0.0,0.01,503.0,0.0,0.0,0.15,348.0,0.0,0.0,0.15,300.0,0.0,0.0,0.15,200.0,0.0,
0.0,0.15,100.0,),),
_F(VALE=(-50.0,6.0,80563.0,-0.0276,0.000122,-2.955e-07,3.402e-10,-1.517e-13,0.0,0.0,0.0,820.0,0.0,0.0,
0.0,760.0,0.0,0.0,0.0,750.0,0.0,0.0,0.0,700.0,0.0,0.0,0.0,650.0,0.0,0.0,0.0,600.0,0.0,0.0,
0.0,545.0,0.0,0.0,0.0,503.0,0.0,0.0,0.01,465.0,0.0,0.0,0.05,349.0,0.0,0.0,0.05,300.0,0.0,
0.0,0.05,200.0,0.0,0.0,0.05,100.0,),),),
TEMP_MS=_F(SEUIL=0.05,
AKM=-31.0,
BKM=14.0,
TPLM=-0.166666667,),
GRAIN_AUST=_F(DREF=0.0,
A=0.0,),);

...

steel=DEFI_MATERIAU(THER_NL=_F(LAMBDA=Lambda,
RHO_CP=RoCp,),
META_ACIER=_F(TRC=TRCrMo,
AR3=760.0,
ALPHA=-0.0306,
MS0=400.0,
AC1=740.0,
AC3=825.0,
TAUX_1=0.034,
TAUX_3=0.034,
LAMBDA0=0.117,
QSR_K=37500.0,
D10=3.31,
WSR_K=18860.0,),
DURT_META=_F(F1_DURT=150.0,
F2_DURT=300.0,
F3_DURT=430.0,
F4_DURT=690.0,
C_DURT=200.0,),);

...

PhasINIT=CREA_CHAMP(TYPE_CHAM='CART_VAR2_R',
OPERATION='AFFE',
MAILLAGE=griglia,
AFFE=_F(TOUT='OUI',
NOM_CMP=('V1','V2','V3','V4','V5',),
VALE=(0.6,0.1,0.3,0.0,0.0,),),);

...

Rez1=CALC_META(reuse =Rez1,
MODELE=ChModel,
CHAM_MATER=ChMater,
RESULTAT=Rez1,
OPTION=('META_ELNO','DURT_ELNO',),
TOUT='OUI',
ETAT_INIT=_F(META_INIT_ELNO=PhasINIT,),
COMP_INCR=_F(RELATION='ACIER',),);