
Elekta tillverkar strålknivar för strålbehandling av cancertumörer i huvud och nacke. Metoden bygger på att man skapar ett mycket väldefinierat strålfält av gammafotoner som effektivt dödar tumörvävnaden med så små skador på omgivande vävnad som möjligt.
Elekta kontaktade Savantic för att få hjälp med att simulera strålfälten i detalj. För att lösa detta använde vi Monte Carlo-simuleringar, som med hjälp av slumptal beräknar hur strålningen breder ut sig och interagerar med materia i ett system. Monte Carlo-metoden ger resultat som ligger väldigt nära de som man kan mäta i verkliga situationer men kräver mycket datorkraft. Ett problem med de Monte Carlo-simuleringssystem som finns att tillgå är att de har egna geometribeskrivningar som kräver att geometrin definieras speciellt för Monte Carlo-simuleringen. Ska detta göras manuellt blir det kostsamt om man ursprungligen har geometrierna definierade i ett annat format, till exempel CAD-format. Det är också svårt att verifiera att Monte Carlo-geometrin överensstämmer med originalet.
Savantic tog fram ett Monte Carlo-system som
- kan köras på ett datorkluster vilket ger den datorkraft som behövs
- kan läsa in geometrier exporterade från kommersiella CAD-system.
Systemet baseras på Monte Carlo-koden Penelope utvecklad av Universitat de Barcelona. Penelope, som är skriven i FORTRAN, har en struktur som gör det enkelt att utvidga koden med egna tillägg.
För att hantera CAD-geometrier skrev vi en ny geometrimodul som hanterar triangulariserade geometrier. Sådana geometribeskrivningar kan exporteras från många CAD-program.
För att kunna köra koden i klustermiljö skrev vi ett nytt huvudprogram som via MPI (Message Passing Interface) kommunicerar inom klustret. Monte Carlo-program är välkända för att de är lätta att parallellisera, utom i fallet med de slumptal som används i simuleringarna. De måste vara okorrelerade mellan de olika klusternoderna, vilket utesluter användandet av vanliga slumptalsgeneratorer. För att säkerställa detta används en parallell slumptalsgenerator, SPRNG.
Savantics tillägg gjordes i C++, för att dra nytta av objektsorienterade programmeringstekniker. Savantics kod länkar mot Penelopes FORTRAN-kod, vilket underlättar inkorporerandet av nya Penelopeversioner och säkerställer att fysiken simuleras korrekt.
Systemet är modulärt uppbyggt och generering av primärpartiklar samt resultatutläsning är helt frikopplad från den övriga koden. Nya sådana moduler kan skapas utan att huvudprogrammet behöver kompileras om.
Det utvecklade Monte Carlo-systemet har installerats på ett kluster hos Elekta och har blivit ett viktigt verktyg i utvecklingsarbetet.
