Recently ICRP has published adult mesh type computational phantoms [ ICRP 145, VOLUME 49 NO. 3, 2020 ] and they have mentioned this following paragraph:
Most of the major general-purpose Monte Carlo simulation codes such as
Geant4, MCNP6, PHITS, and FLUKA can now implement PM or TM geometries
directly. The Geant4 code implements both PM and TM geometries using the
G4TessellatedSolid class and G4Tet class, respectively (Agostinelli et al., 2003).
The MCNP6 code, as a merger of the MCNP5 and MCNPX versions, provides a new feature for implementation of unstructured mesh geometries, including TM
geometries. Note that since Version 1.1 beta of the MCNP6 code, the unstructured
mesh geometry can support the transport of most particles available in the MCNP6
code (Goorley et al., 2013), whereas in the previous version (i.e. Version 1.0), only
the transport of neutrons and gamma rays was supported (Martz, 2014). The PHITS
code, since Version 2.82, provides a new feature for implementation of TM geometries (Sato et al., 2013). The FLUKA code can implement the PM geometry via
FluDAG (DAGMC: Direct Accelerated Geometry Monte Carlo — DAGMC).
I find it difficult to understand how this FluDAG works in FLUKA and how the PM/TM files can be incorporated. Is there any exercise available ?
FluDAG developer here, there is some documentation on using FluDAG here - Code-specific steps for FluDAG — DAGMC - but if you’re talking mesh phantoms that documentation won’t help you, its more focussed at the main CAD->MC workflow rather than mesh. Here are a bunch of exampe use cases using the tetmesh->surfacemesh->dagmc workflow.
I’ve not regenerated the mesh since we first demonstrated this probably 5 or 6 years ago, but if you can point me to the new mesh releases I can go back through the process and regenerate the meshes for use in FluDAG. One of the differences with what one must do (at least with DAGMC) when using a pure mesh based geometry, the is no GUI, but we do have a bunch of programs and python interfaces which make it a little bit easier.
Its also possible of course, to have a CAD based representation of, say the treatment room and equipment, and then include the phantom afterwards to represent the patient. This bit is a little tricky, since one has to be careful positioning the phantom in the CAD geometry, but its entirely possible. We did this with a space habitat module to demonstrate mixing the geometry types.
If you need any help during the process or you want more explanation, Im very happy to help out.
Just to add, the general process is in your CAD geometry you must associate CAD volumes with material properties. These associations between volumes and material names are carried in the CAD geometry and are fed into a FLUKA input file. e.g.
PROTON B FIELD EXAMPLE
BEAM -100.0 0. PROTON
BEAMPOS 0.0 0.0 -400.
ASSIGNMA AIR 1.
ASSIGNMA VACUUM 2.
ASSIGNMA LEAD 3.
ASSIGNMA BLCKHOLE 4.
ASSIGNMA VACUUM 5.
MGNFIELD 30. 1E-4 100. 100. 0.
Note here that one must use the FluGG geometry setting, this allows the particle transport to be pass off to the DAGMC routines. So in essence, in terms of running calculations its almost identical to regular FLUKA, except one must also have the DAGMC geometry. You add materials to your FLUKA input as normal, you add scoring the same way you would, with the added note that you basically have to use the volume index as an ID to score with, this can be a little tricky, but I use the FLUKA plotter to figure out which ID’s correspond to which regions in space.
Happy to record some videos to make a FLUDAG tutorial if its helpful?
Thank you for the response. Here is the ICRP publication link where the whole report is available along with supplementary files containing the mesh information in PM/ TM geometry format.
They even have provided some inputs prepared for other radiation transport code. For example, the following lines are mentioned in a “README” file.
- Data files in MC_examples
This folder contains the following three compressed files:
The data files contain input examples for implementation of the TM-version phantoms in the three Monte Carlo codes, i.e. Geant4, MCNP6 and PHITS. Each of the compressed files include examples for internal and external exposures, where the source is defined as homogeneous liver source and a point source located at 1 m in front of the phantom, respectively, both emitting 1-MeV photons. Detailed information on the implementation is described in the ‘README.txt’ file included in each compressed file. Please note that neither the ICRP nor Task Group 103 shall not be liable for any result produced by any of these input examples.
But they have not provided any sample inputs for FLUKA, though in their report, they have mentioned that it can be implemented in FLUKA (the texts that I have added in the previous mail).
Since, ICRP has mentioned that in future they are going to use mesh type phantoms at large and will publish mesh type phantom data for other age groups, hence I was trying to explore its applicability in FLUKA.
All necessary files and documents can be found from the above ICRP link regarding mesh type phantoms.
No problem got those files, and I’ll try to run it through the conversion process and get you some reference FluDAG inputs for them. If I were to produce the raw geometries with basic run-able inputs, would you like to take care of turning them into the various cases, liver sources and point source. The point source is a easy since its just a regular FLUKA source. However, the liver source will need some additional work, probably a custom source subroutine with cell rejection.
Perhaps someone who has done more advanced sources than I, can we currently with writing ‘no code’ do a uniform volumetric sampling over a region and concurrently reject particles not born in particular cell?
Also, do you have a use case in mind, or are you just ‘playing’?
Also, perhaps If you can get me some email addresses of the folks involve, I can ask them to include FluDAG meshes and inputs by default, I can probably push some code in their direction to help.
Thank you so much for the help. There are certain things that are in my mind.
If we are able to incorporate mesh phantom inputs in Fluka, first we can use it to reproduce the dcfs for external parallel gamma ray exposure, let’s say for AP or PA, so that we can verify our geometry is fine.
Next we can go for a source inside the body : a) point source, b) whole liver as a source.
I have already done these studies with voxel phantoms using ICRP 110 phantoms, for mesh type phantoms, I think the overall process will be same.
Once we are able to perform this, there will be more applications to this. I am interested to use the mesh phantom to create non reference phantoms like phantoms by changing body weight or organ weight etc and then use it for various dosimetric studies like ICRP did in their recent report.
Also, one more thing I want to ask. Do I need to install any software now ? I have the latest Fluka and Flair installed on my system.
Hi @makeclean ,
Sorry I could not understand whose mail you require. Can you please explain ? Do you need mail ids of Fluka experts ?
I was meaning the folks that are involved in the creation of the meshes. Maybe its not the end of the world, I think I have the processing chain almost working, I can probably put it on a github page somewhere. I’ve got the geometry working, now Im busy writing scripts to autotranslate the materials.
Thank you @makeclean,
Sorry, I do not have any contact information for those concerned ICRP authors.
Since you have finished the geometry creation, is it similar to .vxl creation using writect.f program in Fluka ? Will you share the steps as well after completion ? For example, if we want to change the posture or overall body height, weight, then how to change that etc.
Earlier, while using voxel phantom, I also used a matlab based code for filling the material inside voxels.
No not really, its a complete DAGMC geometry like that for FLUDAG.
I absolutely will share the process, I’ve written the steps that one must go through. If one wants to change posture, thats not something I’ve considered here, all I will supply is the meshes as supplied by the ICRP. If they can provide you with phantoms of different postures then thats fine, but all im doing here is translating the mehses as they are supplied.
I could trivially support artbitrary scaling, making things 20% bigger in x and y, and 40% in z for example. However, changing weight changes the distribution of subcutaneous fat for example, which fundamentally changes the distribution of organs.
So what I can provide when Im done, its basically a direct translation of the female and male phantoms as supplied by ICRP. If they have other options, children, weight, postures then we can translate those too, but in terms of having this →
But for phantoms, thats an interesting project, but without some research money - not something I can do in the short term
Thank you @makeclean for this help, really looking forward to the final form
Dear @makeclean ,
As a side note, can these mesh geometry be incorporated in CFD based programs like Openfoam ?