Include power/energy (W/J) and spatial dimension units (m,cm, mm) in various classes of FullMonte
@Vaughn Please read and add any points that I might have missed
Now that the FullMonteWeb group have included units in their website for FullMonte, we think FullMonte should also enforce the definition of units in the simulations to help the user make sense of the simulation results.
There are a couple of classes that should either use the defined units or check if all units are consistent:
- Material
- TetraMesh
- Kernel
- EnergyToFluence
- TextFileMatrixWriter
- all VTK____Writer classes
The Material class should require the user to specify in which unit the optical properties are defined (eg. mm, cm, m). If the user does not do that, the kernel should not run and state that there is a unit mismatch.
The TetraMesh class should also require a unit definition because the unit of the mesh has to be consistent with the optical properties of the materials
The Kernel class needs to check if everything is consistent before running the kernel. If the units are not consistent, The simulation should not start. Additionally, the kernel should require an input specifying how much energy (in J) is being simulated by the total number of photon packets. This should then be integrated in the output data of the kernel. This information then helps the EnergyToFluence class to make the correct conversion.
The EnergyToFluence class requires the units to perform the correct conversions and then output the right units that will then be used by the Writer classes