• Non ci sono risultati.

Il codice PENELOPE

Nel documento L’uso del gadolinio nella NCT (pagine 106-113)

Capitolo 8 Analisi e definizione dei codici di calcolo (MCNP PENELOPE)

8.3. Il codice PENELOPE

Il codice di calcolo PENELOPE [212], esegue la simulazione Monte Carlo del trasporto accoppiato degli elettroni e dei fotoni in materiali di qualsiasi tipo, coprendo un vasto range energetico. Per quanto riguarda il trasporto degli elettroni (e dei positroni), le storie sono generate sulla base di un procedimento misto, che combina una simulazione dettagliata per quanto riguarda le principali interazioni (quelle nelle quali l’angolo di scattering o il deposito di energia sono al di sopra di un valore di soglia scelto dall’utente) ed una simulazione condensata degli eventi meno importanti. L’algoritmo è basato su un modello di scattering che combina l’utilizzo di database numerici e modelli analitici di sezioni d’urto e fornisce risultati estremamente precisi da poche centinaia di eV a circa 1 GeV, ma è in

grado di fornire risultati validi in buona approssimazione fino a 50 eV. Poiché si è trovato che gli elettroni con energie da 1 keV in giù rilasciano il 100% della loro energia quasi esclusivamente alla molecola di DNA alla quale sono legati, il range energetico del codice soddisfa le nostre necessità.

Il nome del codice è un acronimo (PENetration and Energy LOss of Positrons and Electrons). La prima versione è stata rilasciata nel 1996, e simulava solamente gli elettroni. In un secondo tempo è stato aggiunto il trasporto dei fotoni (si basa su un metodo dettagliato) e ci sono state ulteriori aggiunte e miglioramenti fino alla versione più recente, attualmente indicata come PENELOPE-2006 [206]. Lo scattering degli elettroni è ora descritto per mezzo di un database numerico di sezioni d’urto differenziali, che è stato generato con il codice ELSEPA [237]

Il cuore del programma PENELOPE è costituito dall’omonimo pacchetto di subroutines che effettua la simulazione “analogica” dei fasci di elettroni e fotoni in un mezzo omogeneo infinito. Trattandosi di un semplice pacchetto di subroutines per poter funzionare è necessario disporre di un programma principale (MAIN) che procede a chiamare le varie subroutines a seconda delle necessità dell’utilizzatore. Ciononostante la struttura del programma chiamante è normalmente abbastanza semplice in quanto deve solo controllare l’evoluzione delle tracce simulate e tenere il conteggio delle quantità che l’utilizzatore vuole calcolare. PENELOPE è stato cioè concepito per eseguire la parte principale del lavoro di simulazione pur consentendo all’utilizzatore di scrivere il proprio programma di simulazione. Egli deve solo trovare un modo per descrivere la geometria con un metodo arbitrario a sua scelta, ed un modo per programmare il calcolo delle grandezze dosimetriche di suo interesse, e tutto questo anche senza avere una conoscenza approfondita degli aspetti teorici dello scattering e delle teorie del trasporto.

In figura 8.1 è riportata la struttura di massima che deve avere il programma principale predisposto dall’utilizzatore. La connessione tra PENELOPE ed il programma principale avviene tramite una COMMON area,

COMMON/TRACK/E,X,Y,Z,U,V,W,WGHT,KPAR,IBODY,MAT,ILB(5) Nella quale le principali variabili hanno il seguente significato:

KPAR indica il tipo di particella (vale 1 per gli elettroni, 2 per i fotoni e 3 per i positroni); E è l’energia in eV della particella che il codice sta seguendo in un determinato momento; X, Y e Z sono le coordinate rettangolari (in cm) della particella nel sistema di riferimento del “laboratorio” che può essere fissato arbitrariamente;

U, V e W sono i coseni direttori della direzione di movimento della particella;

WGHT non ha un significato se si sta effettuando una simulazione “analogica”, ma rappresenta il peso della particella se si utilizzano delle tecniche di riduzione della varianza;

IBODY serve per identificare “corpi” diversi all’interno di complicate strutture materiali; MAT indica il materiale nel quale la particella si sta muovendo;

Fig. 8.1 - Diagramma di flusso del programma principale da scrivere per la simulazione di un fascio di elettroni o fotoni con PENELOPE

Si assume che una particella che si muove nel materiale M, venga assorbita quando la sua energia scenda al di sotto di un valore EABS(KPAR,M) specificato dall’utente in eV. Nell’effettuare calcoli di dose a livello macroscopico questo valore deve essere determinato in modo che il range residuo delle particelle dotate di tale energia sia più piccolo delle dimensioni del volume di tally utilizzato per valutare la distribuzione di dose spaziale. In ogni caso poiché il database distribuito con il codice è limitato inferiormente da

50 eV di energia non può essere assegnato un valore inferiore a 50 eV. L’algoritmo di trasporto è controllato in ciascun materiale M dai seguenti parametri di simulazione:

C1(M) – Deflessione angolare media tra due eventi importanti: C1 ≈ 1 – cos θ (di

solito è adeguato un valore di 0,05; non può superare 0,2)

C2(M) – Frazione massima di energia perduta tra due eventi importanti consecutivi

(di solito è adeguato un valore di 0,05; non può superare 0,2)

WCC(M) - limite di energia che può essere persa in un evento importante di

collisione anelastica (in eV)

WCR(M) - limite di energia che può essere persa in un evento importante di

emissione di bremsstrahlung (in eV)

Questi parametri determinano l’accuratezza e la velocità della simulazione. Per assicurare l’accuratezza C1(M) e C2(M) devono avere i valori più piccoli possibile (dell’ordine di 0,01 o meno). Con valori elevati di C1(M) e C2(M) la simulazione diventa più veloce a costo di una certa perdita nell’accuratezza del calcolo. Le energie di cutoff WCC(M) e WCR(M) influenzano principalmente la simulazione della distribuzione di energia. Il tempo della simulazione viene accelerato usando energie di cutoff grandi, ma se sono troppo grandi la distribuzione di energia risultante viene in qualche modo distorta.

Dopo la subroutine di inizializzazione PEINIT, che setta alcuni parametri generali (ad esempio definisce le unità logiche di ingresso ed uscita per il codice), le principali subroutines che devono essere chiamate dal programma principale sono:

CLEANS – Inizializza lo stack nel quale vengono poste le particelle secondarie.

• START – Deve essere chiamata prima di iniziare una nuova traccia, primaria o secondaria.

• JUMP – determina e restituisce la lunghezza DS della traccia prima della successiva interazione.

• KNOCK – simula un evento di interazione, calcola la nuova direzione e l’energia residua della particella, e memorizza lo stato iniziale di eventuali particelle secondarie che sono state generate inserendole nello stack. Restituisce due parametri, DE che è l’energia depositata nel corso dell’evento (ed include l’energia delle particelle secondarie generate), e ICOL che rappresenta il tipo di evento che è stato simulato (vedi tabella 8.3)

• SECPAR – setta lo stato iniziale di una particella secondaria, rimuovendola dallo

stack. Restituisce il parametro LEFT, che rappresenta il numero di particelle

secondarie che rimangono nello stack.

ICOL Elettroni (KPAR = 1) Fotoni (KPAR = 2) Positroni (KPAR = 3)

1 Evento “morbido” artificiale Scattering coerente (Raileigh) Evento “morbido” artificiale 2 Collisione elastica importante Scattering incoerente

(Compton)

Collisione elastica importante 3 Collisione anelastica importante Assorbimento fotoelettrico Collisione anelastica importante 4 Emissione per bremmstrahlung

importante

Produzione di coppia elettrone - positrone

Emissione per bremmstrahlung importante

5 Ionizzazione di orbitale interno Ionizzazione di orbitale interno

6 Annichilazione

7 Interazione delta Interazione delta Interazione delta

8 Interazione ausiliaria Interazione ausiliaria Interazione ausiliaria Tab. 8.3 - Codice dei vari tipi di eventi di interazione

Le informazioni sulle proprietà fisiche dei vari materiali, incluse le sezioni d’urto ed i dati di emissione di fotoni ed elettroni in caso di ionizzazione devono comunque essere

disponibili su file in un apposito formato che viene letto dalle subroutines di PENELOPE. A tal fine viene distribuito un programma ausiliario, denominato MATERIAL, che estrae le informazioni dal database distribuito con PENELOPE, determina le sezioni d’urto macroscopiche e prepara il file che deve essere letto da PENELOPE con i materiali di interesse. Il programma MATERIAL ha a disposizione i dati relativi agli elementi con numero atomico Z da 1 a 99, e ad ulteriori 181 materiali già preparati in composizioni standard. Volendo costruire il proprio materiale, MATERIAL richiede in ingresso la composizione chimica, la densità, le energie di eccitazione.

Insieme con il pacchetto principale di subroutines vengono distribuiti tre esempi di programma principale, che oltre a valere come esempi di programmazione consentono di utilizzare direttamente il programma nei casi più semplici:

• PENSLAB che simula il trasporto in geometrie “a slab”.

• PENCYL che simula il trasporto in geometrie cilindriche

• PENMAIN che consente di descrivere geometrie arbitrarie nelle quali ogni regione è contornata da superfici quadriche.

Le informazioni che questi programmi forniscono in uscita sono abbastanza dettagliate ma le loro capacità sono limitate. Si assume inoltre che un singolo tipo di particella con energia fissa venga emesso da una sorgente puntiforme, ma con un minimo di programmazione possono essere generalizzati al caso in cui siano emessi più tipi di particelle con spettri diversi (continui o discreti). I tre programmi operano in modo simile. Tutti leggono i dati da un file di input, chiamano le subroutines di PENELOPE, calcolano i risultati con le loro incertezze statistiche e generano i files di uscita. Nel caso del programma PENMAIN si fa uso di un ulteriore pacchetto di subroutines distribuite con il codice, denominato PENGEOM, pacchetto che permette di rappresentare generiche geometrie tridimensionali costituite da corpi omogenei delimitati da superfici quadriche (sfere, cilindri, ecc…). PENGEOM prevede appunto la possibilità di descrivere una complessa geometria tridimensionale utilizzando un metodo analogo a quello impiegato in MCNP, cioè descrivendo dapprima varie superfici di contorno, e successivamente le celle che sono delimitate da tali superfici, a ognuna delle quali viene associato un verso per poter indicare in quale delle due parti, in cui le superfici dividono lo spazio, è presente la cella in questione. L’utilizzo del pacchetto PENGEOM è comunque più complesso dell’analogo pacchetto di MCNP. L’utente del codice può decidere se per descrivere la geometria di interesse, voglia utilizzare il pacchetto PENGEOM oppure se preferisce inserire un proprio pacchetto di subroutines appositamente redatto. In figura 8.2 si può vedere come si modifica la struttura di massima del programma principale qualora si usi il pacchetto geometrico PENGEOM.

Presso l’Istituto di tecnica energetica dell’Università di Catalogna è stato messo a punto il programma PENEASY [200, 313], un programma completo “general purpose” basato sulle subroutines di PENELOPE. Si tratta di un programma principale completo, strutturato in modo da descrivere in input qualsiasi geometria (utilizza il pacchetto PENGEOM) e qualsiasi sorgente (anche con distribuzione e spettro complessi). Utilizzando PENEASY non è normalmente necessario alcuna attività di programmazione: è semplicemente richiesto il file di input. Insieme con il sorgente è infatti distribuito anche l’eseguibile che incorpora le subroutines di PENELOPE. Il programma PENEASY è inoltre in grado di calcolare un vasto numero di tipologie di tally (ed è possibile crearne di nuovi adattando quelli esistenti con minimo sforzo). Il programma PENEASY è strutturato in modo da poter facilmente essere modificato qualora le necessità dell’utilizzatore non siano completamente soddisfatte dalle possibilità già implementate nel programma. Anche il

programma PENEASY è costantemente aggiornato e la versione attuale è compatibile con PENELOPE 2006.

Fig. 8.2 - Diagramma di flusso del programma principale da scrivere per la simulazione di un fascio di elettroni o fotoni con PENELOPE

utilizzando il pacchetto geometrico PENGEOM

Il codice PENELOPE è usato anche per la determinazione di quantità microdosimetriche e, potendo calcolare, opportunamente programmato, anche la lineal energy [295, 296], può efficacemente essere usato anche in nanodosimetria. Recentemente, date queste sue

positive caratteristiche, esso è stato incorporato anche all’interno del sistema GEANT4 [294].

In questo ambito il dottorando è entrato a far parte del "PENELOPE team", e ne segue costantemente gli sviluppi.

Nel documento L’uso del gadolinio nella NCT (pagine 106-113)