• Non ci sono risultati.

Codice UDF in linguaggio C++

7 Analisi termo-fluido dinamica

7.5 Implementazione della conducibilità termica effettiva tramite User Defined Function

7.5.1 Codice UDF in linguaggio C++

Il codice dell’UDF in linguaggio C++ è stato fornito allo studente dai docenti responsabili di questo lavoro di diploma, Ing. Roncolato Jonathan e Ing. Puragliesi Riccardo, su gentile concessione dell’Ing. Simone Zavattoni che è colui che ha realizzato questa UDF. Il compito dello studente è stato quello di comprendere le quantità calcolate e come esse venivano calcolate tramite il codice in C++. Il passo successivo è stato quello di modificare l’UDF in base alle esigenze e al modello utilizzato durante lo studio di questo lavoro di tesi. Vengono riportate di seguito solo le proprietà principali e rilevanti che sono state modificate, questo per evitare di rendere difficoltosa la lettura e la comprensione del lavoro svolto, mentre è possibile trovare il file completo dell’UDF all’interno degli allegati del seguente lavoro di diploma. Per prima cosa sono state modificate le seguenti righe di codice:

#define Dp 0.03 /* Particle diameter [m] To be modified*/

#define ID_in_top 15 /* Inlet top ID red from fluent BC panel*/

#define ID_in_bot 21 /* Inlet bottom ID red from fluent BC panel */

#define ID_fluid 7 /* Fluid ID red from cells zone fluent */

Qui è stato definito il diametro delle particelle delle rocce presenti all’interno del mezzo d’accumulo e sono stati definiti gli ID identificativi delle boundary conditions principali, quali inlet, outlet e la zona fluida all’interno del modello.

real emiss = 0.95; /* Particles emissivity*/

real por_b = 0.4; /* Bulk porosity To be modified*/

double h = 3; /* To be modified, altezza mezzo d'accumulo */

Successivamente è stato variato il valore dell’emissività delle rocce e il valore della porosità del mezzo d’accumulo, sulla base dei valori decisi e introdotti all’interno del quaderno dei compiti. Infine, è stata definita una nuova grandezza h che corrisponde all’altezza del mezzo d’accumulo, questa risulterà necessaria successivamente quando verrà calcolata l’area di attraversamento del letto di rocce da parte del fluido per la definizione del numero di Reynolds.

C_CENTROID(x, c, t); /* Porosity variation */

r = x[1]; /* Y-component cell center */

ax = x[0];

/* Variation of the radius as a function of the axial position */ /* To be modified according to the specific case*/

rad = r;

Tramite questa definizione viene descritto come varia il raggio che caratterizza l’area di passaggio del flusso radiale all’interno del sistema.

In questo modo si tiene conto del fatto che man mano che ci si allontana dall’asse del condotto centrale di ingresso, il raggio varia e aumenta più ci si sposta verso l’esterno. Questa variazione è dovuta alla configurazione adottata per questo sistema TES a flusso orizzontale, dove il mezzo d’accumulo viene stoccato all’interno di una struttura che assume una forma toroidale con sezione rettangolare, e non ha quindi una configurazione “classica” a flusso verticale dove il letto di rocce assumerebbe una forma cilindrica o una forma a tronco di cono.

Infine, è stata modificato il metodo con cui veniva calcolato il numero di Reynolds, che ricordiamo essere definito come rapporto tra le forze inerziali e tra le forze viscose, che corrisponde a:

𝑅𝑒 = 𝜌 ∙ 𝑤 ∙ 𝐷 𝜇

Si evidenzia che il parametro D corrisponde alla lunghezza caratteristica del caso preso in considerazione, nel nostro caso D=𝐷𝑝 . Il numero di Raynolds può anche essere definito anche

in funzione della portata massica, per questo può diventare: 𝑅𝑒 = 𝑚̇ ∙ 𝐷𝑝

𝐴 ∙ 𝜇

Re = (my_mass_flow * Dp / (M_PI * 2*rad*h * mu));

Tramite la riga di codice sopra presentata è possibile calcolare il Re. È possibile notare come sia stato necessario definite l’area di passaggio come l’area laterale di un cilindro, questo è legato al fatto che il mezzo d’accumulo assume una geometria ben definita, cioè quella di un toroide a sezione rettangolare. All’interno di questa descrizione viene considerato il

parametro h, precedentemente definito, corrispondente all’altezza del mezzo d’accumulo. In questo modo si tiene conto della variazione dell’area di passaggio del flusso radiale all’interno del sistema.

/* Thermal conductivity of rocks */

/* To be modified according to the specific case*/ Ks=2.79;

È stata assegnata la conducibilità termica del letto di rocce con un valore costante e non in funzione della temperatura. Questa approssimazione è stata fatta a causa della mancanza in letteratura di studi sul tipo di materiale adottato come mezzo d’accumulo, che fossero in grado di valutare il cambiamento della conducibilità in relazione alla temperatura.

Grazie all’implementazione dell’UDF è possibile calcolare la conducibilità termica effettiva 𝑘𝑒𝑓𝑓, che tiene conto di tutti i meccanicismi di scambio termico che entrano a fare parte della simulazione del processo di carica-idle-scarica del sistema TES e tiene anche conto della variazione delle proprietà chimico-fisiche, come Cp, conducibilità termica e viscosità dinamica, dell’aria in funzione della temperatura.

7.5.1.1 Implementazione UDF in Fluent

Una volta adattata l’UDF in base al caso di studio, si è proseguito con l’implementazione della stessa all’interno del software di simulazione Fluent. Di seguito vengono presentati i passaggi principali per l’implementazione dell’UDF.

È necessario possedere il programma “Windows Microsoft Visual Studio”, versione 2013 o superiore, per la compilazione del file. Successivamente è stato caricato il file contenente l’UDF nella stessa cartella di lavoro contenente il file Workbench/Fluent precedentemente utilizzato per la creazione di geometria, mesh e primi impostazioni Fluent. A questo punto è stato necessario andare a caricare l’UDF all’interno del software tramite i seguenti passaggi:

Figure 44-Caricamento UDF 1

Figure 45-Caricamento UDF 2

1

4

3

Per verificare la corretta compilazione è necessario che all’interno dell’interfaccia TUI vengano mostrate le seguenti righe di codice una volta che è stata caricata l’UDF:

 Get_mass_flow  My_exec_at_end  ETC_LTE

 Done

Una volta compilata con successo è fondamentale assegnarla alle zone di interesse, questa operazione viene effettuata tramite il comando “Function Hooks” assegnando alla sezione “Adjust” e “Execute at end” le rispettive funzioni disponibili:

Figure 46-Caricamento delle UDF Hooks

Per finire l’UDF va attivata all’interno delle proprietà del materiale di interesse, una volta definito il materiale tramite il database di Fluent o tramite creazione di uno nuovo, si attiva la funzione:

Figure 47-Implementazione UDF nel materiale "Rocce"

In questo caso è stato necessario creare un nuovo materiale dove sono stati definite densità, calore specifico e conducibilità termica, quest’ultima tramite la definizione dell’UDF precedentemente caricata.