P HI T S PHITS Tutorial for making Voxel Phantom Multi-Purpose Particle and Heavy Ion Transport code...

26
PHITS PHITS Tutorial for making Voxel Phantom Multi-Purpose Particle and Heavy Ion Transport code System title 1 Last revised 2014/8

Transcript of P HI T S PHITS Tutorial for making Voxel Phantom Multi-Purpose Particle and Heavy Ion Transport code...

Page 1: P HI T S PHITS Tutorial for making Voxel Phantom Multi-Purpose Particle and Heavy Ion Transport code System title1 Last revised 2014/8.

PHITSPHITS Tutorial

for making Voxel Phantom

Multi-Purpose Particle and Heavy Ion Transport code System

title 1

Last revised 2014/8

Page 2: P HI T S PHITS Tutorial for making Voxel Phantom Multi-Purpose Particle and Heavy Ion Transport code System title1 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)

Page 3: P HI T S PHITS Tutorial for making Voxel Phantom Multi-Purpose Particle and Heavy Ion Transport code System title1 Last revised 2014/8.

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

Page 4: P HI T S PHITS Tutorial for making Voxel Phantom Multi-Purpose Particle and Heavy Ion Transport code System title1 Last revised 2014/8.

Table of Contents

4

Table of Contents

1. Universe

2. Lattice

3. Simple voxel phantom

4. Conversion from DICOM format

5. Summary

6. Appendix

Page 5: P HI T S PHITS Tutorial for making Voxel Phantom Multi-Purpose Particle and Heavy Ion Transport code System title1 Last revised 2014/8.

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

Page 6: P HI T S PHITS Tutorial for making Voxel Phantom Multi-Purpose Particle and Heavy Ion Transport code System title1 Last revised 2014/8.

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

Page 7: P HI T S PHITS Tutorial for making Voxel Phantom Multi-Purpose Particle and Heavy Ion Transport code System title1 Last revised 2014/8.

Table of Contents

7

Table of Contents

1. Universe

2. Lattice

3. Simple voxel phantom

4. Conversion from DICOM format

5. Summary

6. Appendix

Page 8: P HI T S PHITS Tutorial for making Voxel Phantom Multi-Purpose Particle and Heavy Ion Transport code System title1 Last revised 2014/8.

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

Page 9: P HI T S PHITS Tutorial for making Voxel Phantom Multi-Purpose Particle and Heavy Ion Transport code System title1 Last revised 2014/8.

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

Page 10: P HI T S PHITS Tutorial for making Voxel Phantom Multi-Purpose Particle and Heavy Ion Transport code System title1 Last revised 2014/8.

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

Page 11: P HI T S PHITS Tutorial for making Voxel Phantom Multi-Purpose Particle and Heavy Ion Transport code System title1 Last revised 2014/8.

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

Page 12: P HI T S PHITS Tutorial for making Voxel Phantom Multi-Purpose Particle and Heavy Ion Transport code System title1 Last revised 2014/8.

Table of Contents

12

Table of Contents

1. Universe

2. Lattice

3. Simple voxel phantom

4. Conversion from DICOM format

5. Summary

6. Appendix

Page 13: P HI T S PHITS Tutorial for making Voxel Phantom Multi-Purpose Particle and Heavy Ion Transport code System title1 Last revised 2014/8.

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

Page 14: P HI T S PHITS Tutorial for making Voxel Phantom Multi-Purpose Particle and Heavy Ion Transport code System title1 Last revised 2014/8.

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

Page 15: P HI T S PHITS Tutorial for making Voxel Phantom Multi-Purpose Particle and Heavy Ion Transport code System title1 Last revised 2014/8.

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

Page 16: P HI T S PHITS Tutorial for making Voxel Phantom Multi-Purpose Particle and Heavy Ion Transport code System title1 Last revised 2014/8.

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

Page 17: P HI T S PHITS Tutorial for making Voxel Phantom Multi-Purpose Particle and Heavy Ion Transport code System title1 Last revised 2014/8.

Table of Contents

17

Table of Contents

1. Universe

2. Lattice

3. Simple voxel phantom

4. Conversion from DICOM format

5. Summary

6. Appendix

Page 18: P HI T S PHITS Tutorial for making Voxel Phantom Multi-Purpose Particle and Heavy Ion Transport code System title1 Last revised 2014/8.

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)

Page 19: P HI T S PHITS Tutorial for making Voxel Phantom Multi-Purpose Particle and Heavy Ion Transport code System title1 Last revised 2014/8.

"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

Page 20: P HI T S PHITS Tutorial for making Voxel Phantom Multi-Purpose Particle and Heavy Ion Transport code System title1 Last revised 2014/8.

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…

Page 21: P HI T S PHITS Tutorial for making Voxel Phantom Multi-Purpose Particle and Heavy Ion Transport code System title1 Last revised 2014/8.

Table of Contents

21

Table of Contents

1. Universe

2. Lattice

3. Simple voxel phantom

4. Conversion from DICOM format

5. Summary

6. Appendix

Page 22: P HI T S PHITS Tutorial for making Voxel Phantom Multi-Purpose Particle and Heavy Ion Transport code System title1 Last revised 2014/8.

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

Page 23: P HI T S PHITS Tutorial for making Voxel Phantom Multi-Purpose Particle and Heavy Ion Transport code System title1 Last revised 2014/8.

Table of Contents

23

Table of Contents

1. Universe

2. Lattice

3. Simple voxel phantom

4. Conversion from DICOM format

5. Summary

6. Appendix

Page 24: P HI T S PHITS Tutorial for making Voxel Phantom Multi-Purpose Particle and Heavy Ion Transport code System title1 Last revised 2014/8.

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

Page 25: P HI T S PHITS Tutorial for making Voxel Phantom Multi-Purpose Particle and Heavy Ion Transport code System title1 Last revised 2014/8.

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?

Page 26: P HI T S PHITS Tutorial for making Voxel Phantom Multi-Purpose Particle and Heavy Ion Transport code System title1 Last revised 2014/8.

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