Upload
alexia-bond
View
217
Download
0
Embed Size (px)
Citation preview
PHITSPHITS Tutorial
for making Voxel Phantom
Multi-Purpose Particle and Heavy Ion Transport code System
title 1
Last revised 2014/8
What is Voxel Phantom?
Introduction 2
Reproduce a complex structure such as human body based on repeated rectangles filled with a certain material (See Manual 5.7.5)
Low resolution
High resolution
You can make voxel phantom in PHITS virtual space using Universe and Lattice functions(See Manual 5.7.3 and 5.7.4)
Examples of PHITS calculations using voxel phantom
3
Biological dose estimation for charged-particle therapy
Treatment planning for BNCTT. Sato et al.
Radiat. Res. (2009)H. Kumada et al. J. Phys.: Conf. Ser. (2007)
Introduction
Table of Contents
4
Table of Contents
1. Universe
2. Lattice
3. Simple voxel phantom
4. Conversion from DICOM format
5. Summary
6. Appendix
What is Universe?
Universe 5
You can define many universes in PHITS virtual space
But only 1 universe (main space) is the stage of particle transport simulation
Other universes are used for replacing some parts of the main space using “fill” command Some parts of the main space (inside
the boxes) are filled with universe 1
Universe1
Main space
→ Virtual space in PHITS
Example of Universe
Universe 6
universe.inp[ C e l l ]$ Main space 1 0 11 -12 13 -14 15 -17 FILL=1 2 0 11 -12 13 -14 17 -16 FILL=2 9 -1 #1 #2$ Universe 1 101 1 -1.00 -10 13 -14 U=1 102 0 #101 U=1$ Universe 2 201 2 -7.86 -10 13 -14 U=2 202 1 -1.00 #201 U=2
[ S u r f a c e ] 10 CY 5 11 PX -6 12 PX 6 13 PY -6 14 PY 6 15 PZ -6 16 PZ 6 17 PZ 0
Declare universe 1
always void
PX -3PX 9
Filled withUniverse1
Figure 5.13 (a) Two rectangular solids. (b) Cylinder filled with water. (c) Iron cylinder in water
Table of Contents
7
Table of Contents
1. Universe
2. Lattice
3. Simple voxel phantom
4. Conversion from DICOM format
5. Summary
6. Appendix
What is Lattice?
Lattice 8
→ Repeated structure used in PHITS virtual space
It is troublesome to define all surfaces and cells used in repeated structure
Define only surfaces and cells used in fundamental structure
Examples of Lattice in PHITS
Express the repeated structure using “lat” command
How to define lattice?
9
Only repeated structure can be defined in lattice universe
You have to fill lattice with other universe
It is better to define lattice notin main space but in a universe
You cannot directly define the contents inside lattice
Define repeated structure using more than 2 universes
Universe1(Lattice structure)
Universe2(fundamental structure)
fill
Main space
fill
Lattice
10
lattice.inp[ S u r f a c e ] 1 rpp -5 5 -5 5 -1 1 2 rpp -6 6 -6 6 -2 1 99 so 100101 rpp -1 1 -1 1 -1 1201 sph 0 0 0 1[ C e l l ]$ Main space 1 3 -8.96 1 -2 2 0 -1 fill=1 98 0 -99 2 99 -1 99$ Universe 1 101 0 -101 lat=1 u=1 fill=-2:2 -2:2 0:0 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2$ Universe 2 201 1 -19.32 -201 u=2 202 0 201 u=2
Declare lattice type 1 (Rectangle)
Define the region of basic lattice
Define the number of repeated structure
Universe number to be filled with ( 5×5×1 matrix )Location should be adjusted to that of the basic lattice
Basic latticeBasic lattice (( 0,0,00,0,0 ))
-5 X 5
(( 2,2,02,2,0 ))
Region 101
-5
Y
5
(( -2,-2,0-2,-2,0 ))
PHITS input
Lattice
Change the contents of lattice
11
lattice1.inp[ C e l l ]$ Main space 1 3 -8.96 1 -2 2 0 -1 fill=1 98 0 -99 2 99 -1 99$ Universe 1 101 0 -101 lat=1 u=1 fill=-2:2 -2:2 0:0 3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2$ Universe 2 201 1 -19.32 -201 u=2 202 0 201 u=2$ Universe 3 302 0 -99 u=3
Before(lattice.inp)
Lattice
After(lattice1.inp)
Change 1st box from golden ball to void
Table of Contents
12
Table of Contents
1. Universe
2. Lattice
3. Simple voxel phantom
4. Conversion from DICOM format
5. Summary
6. Appendix
How to define voxel phantom?
13
Universe1(void)
Simple Voxel Phantom
① Make universes filled with an unique material such as bone and soft tissue
Universe2(water)
Universe3(Aluminum)
② Make voxel phantom by repeating those universes
Universe10(Voxel Phantom)
Main Space
③ Fill some part of the main space with the voxel phantom
PHITS input file
14Simple Voxel Phantom
robot.inp[ C e l l ]$ Material universe 1 0 -99 u=1 2 1 -1.00 -99 u=2 3 2 -2.70 -99 u=3$ Voxel universe 101 0 -101 lat=1 u=10 fill=0:4 0:4 0:4 1 1 1 1 1 1 2 1 2 1 1 2 1 2 1 1 1 1 1 1 1 1 1 1 1… repeat 4 times$ Main space 201 0 -201 fill=10 202 0 201 -202 203 3 -8.96 202 -203 204 0 -99 201 203 205 -1 99
[ S u r f a c e ]$ fundamental voxel 1 px -5 2 px -3 3 py 3 4 py 5 5 pz 3 6 pz 599 so 100$ Main space201 rpp -5 5 -5 5 -5 5202 rcc 0 0 -5 0 0 4 8203 rcc 0 0 -6 0 0 5 9
Lattice order: X+, Y+, Z+(start with left&lower voxel)
Surfaces for the basic lattice
Any large region is OK
x
yz
Change materials
15Simple Voxel Phantom
robot1.inp
[ C e l l ]$ Material universe 1 0 -99 u=1 2 1 -1.00 -99 u=2 3 2 -2.70 -99 u=3 4 3 -8.96 -99 u=4$ Voxel universe 101 0 -2 1 3 -4 5 -6 lat=1 u=10 fill=0:4 0:4 0:4... last one 1 1 1 1 1 1 1 1 1 1 1 1 4 1 1 1 1 1 1 1 1 1 1 1 1… repeat 4 times$ Main space 201 0 -201 fill=10 202 0 201 -202 203 3 -8.96 202 -203 204 0 -99 201 203 205 -1 99
Before(robot.inp)
After(robot1.inp)
Change the material of the phantom head from water to copper
Example of dose calculation
16Simple Voxel Phantom
[t-heat] tally usingmesh = xyz
[t-heat] tally usingmesh = reg
robot-heat-reg.out
Visualize the dose distribution
Calculate dose for each region(Head, torso, and arm&leg)
x: Serial Num. of Regiony: Heat [MeV/source] h: x n n y(total),l3 n# num reg volume heat r.err 1 2 1.0000E+00 9.5978E-01 0.1277 2 3 1.0000E+00 3.4847E+01 0.0000 3 4 1.0000E+00 5.1924E+01 0.0000
robot-heat-xz.eps
Useful for calculating doseinside tumor region
Table of Contents
17
Table of Contents
1. Universe
2. Lattice
3. Simple voxel phantom
4. Conversion from DICOM format
5. Summary
6. Appendix
DICOM format (Binary)
18
① Header (Information on time, voxel size etc.)
② CT values ( 1,1→2,1→3,1→…→nx-1, ny → nx, n
y )
Data for 1 slice ( sample001.dcm )
Several files are contained in one folder to represent an object
cross sectional view 3D view
Dicom to PHITS
It is necessary to convert from DICOM to PHITS-input format(CT value, binary) (Universe number, text)
"data/HumanVoxelTable.data" Conversion table"DICOM/" DICOM files are automatically identified in this directory "PHITSinputs" Directory for PHITS inputs to be created1 20 Slices to be used (1<=z<=20)70 430 90 460 Clipping (70<=x<=430, 90<=y<=460)4 4 1 Coarse graining (Average on 4 times 4 voxels in x and y direction)0 Origin option: 0:Center of data 1:Reading from DICOM header 0 PHITS parameter: 0:Minimal 1:Photon therapy 2:Particle therapy1 Reading slice order: +1:Ascending order or -1:Descending order
Conversion (DICOM2PHITS)
19
Convert from Dicom data to PHITS input format (voxel phantom)
1. Make an input file for DICOM2PHITS ( dicom2phits.inp )
2. Execute Windows: Drag dicom2phits.inp and drop into dicom2phits.bat Mac: Double click dicom2phits.command and type dicom2phits.inp + enter
DICOM2PHITS HowTo
Refer to “PHITS Tutorial How to use DICOM2PHITS”phits/utility/dicom2phits/phits-lec-dicom2phits-jp.ppt
A sample input file will be created in PHITSinputs/ directory
Reduce computational time
20
It converts its input file to binary, and re-reads the binary file
Make binary file of voxel phantom prior to the PHITS execution
Purpose
Procedure① Insert the following 2 lines in the [Parameters] section
ivoxel = 2 # Convert the “fill” part of lattice to binary and output to file(18)file(18) = voxel.bin # Output file name for binary voxel phantom
② Execute PHITS → Binary file was successfully generated!! ③ Change “ivoxel = 1”, and comment out “infl” commandivoxel = 1 # Read the “fill” part of lattice from file(18)
$ infl:{voxel1.inp} Speed up!
Dicom to PHITS
It is better to…
Every time PHITS runs…
Table of Contents
21
Table of Contents
1. Universe
2. Lattice
3. Simple voxel phantom
4. Conversion from DICOM format
5. Summary
6. Appendix
Summary
22Summary
① Voxel phantom can be implemented in PHITS using Universe and Lattice concepts
② DICOM format must be converted into PHITS input format using DICOM2PHITS
③ Computational time can be reduced by using “ivoxel” parameter
Table of Contents
23
Table of Contents
1. Universe
2. Lattice
3. Simple voxel phantom
4. Conversion from DICOM format
5. Summary
6. Appendix
How to Deal with High-Resolution Phantom?
24
High resolution voxel phantom requires numerous memory
Default setting of PHITS is allowed to use memory only less than 2 Byte
e.g.) Whole body voxel phantom (180cm×30cm×50cm) with 1mm3 resolution consists of 270,000,000 voxels, and costs 5.4 GByte memory, since PHITS uses memory approximately 20 Byte / voxel
Change “param.inc” included in “src” folderHow to deal with the situation?
• increase mdas: Maximum memory allowed to be used by PHITS (Byte) / 8• increase latmax: Maximum number of lattice in a cell• declare integer*8 for several parameters (see next page in detail)
Divide voxel phantom into several regions to reduce the area to be voxelized Memory is insufficient?
Combine several CT pixels into one voxel to decrease the resolution of phantom
Delete all object files (*.o) and re-compile PHITS*
*For Windows PC, gfortran is recommended to be used for this purpose, because PHITS executable file compiled by Intel Fortran may cause “stack overflow” for large voxel phantom
25Appendix
If #voxels is greater than 50 millions, many changes are necessarye.g. total #voxel = 150 millions, max #voxel per cell = 40 millions
Change include files in “src” folder
Add compiler options ( e.g. for Intel Fortran in Linux )
param.incinteger*8 mdas,mcmx,mci,mmdas,mmmax,nbnds,mct ! avoid overflow (integer*4 =< 2147483647 )parameter ( mdas = 500000000 ) ! Maximum memory allowed to be used by PHITS (Byte) / 8parameter ( latmax = 47000000 ) ! Maximum number of lattice in a cell
angel00.incinteger*8 mdas,mmdas,mmmax ! avoid overflow (integer*4 =< 2147483647)parameter ( mdas = 350000000 ) ! Maximum memory allowed to be used by ANGEL (Byte) / 8
makefileF77 = ifortFCFLAGS = -noautomatic -mcmodel=large -i-dynamic
-i-dynamic: Dynamic link to libraries-mcmodel=large: no limitation in memory use (this option is only valid for Linux)
How to Deal with High-Resolution Phantom?
Change the order of lattice
26
lattice2.inp[ S u r f a c e ] (pick up partially)101 px -1102 px 1103 py -1104 py 1105 pz -1106 pz 1[ C e l l ] (pick up partially)$ Universe 1 101 0 -102 101 -104 103 -106 105 lat=1 u=1 fill=-2:2 -2:2 0:0 3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
-102 101 103 -104 -106 105X: +, Y: –, Z:+
Appendix
RPP is dividedinto each surface
Order is important!
-102 101 -104 103 -106 105X:+, Y:+, Z:+
101 -102 -104 103 -106 105X: –, Y:+, Z: +
101 -102 103 -104 -106 105X: –, Y: –, Z: +
Prior surface faces tothe forward direction
Same as Same as RPP, BOXRPP, BOX