How exactly do we define fluence?

210 views
Skip to first unread message

Ife E

unread,
Nov 14, 2023, 11:55:10 AM11/14/23
to mcx-users
Hi Dr. Fang,

I was hoping you could clarify the exact units of fluence and the normalisation process in MCX-cloud. I am currently trying to validate my forward model by computing the source term from the simulated fluence, but I'm unsure what the form of my source should be and if I am using the simulation output correctly.

My model is the same frequency domain model as derived by Arridge (here) so it assumes the measurement represents photon flux - photons per unit area (m^-2).

As far as I can tell MCX-cloud outputs the fluence as photons per unit area per second (m^-2 s^-1), so to properly validate my model I need to convert to flux. My (possibly misguided) understanding here is that the since the structure of the media is time-invariant (even if it isn't compared to the speed of light it is) any relationship between two fluxes is true for two fluences. But if that is not the case is there some factor I can multiply by or option I can set to retrieve flux instead?

Or am I very wrong and fluence is measured in J m^-2? I've noticed that some people define it this way. As far as I can tell there is no option to set photon energy in MCX-cloud is there a standard value it uses?

Finally what should I expect the source term to look like? I've chosen an pencil beam input so I would expect it to be a delta function of the form 𝛿(r-a,t) where a is the position of the source, but what is the amplitude of this source term? My initial guess would have been Nphotons./(voxelFaceArea*timeBin) but reading other posts on normalisation in the simulation has left me unsure.

Any help would be greatly appreciated.

Thanks,
Ife

Qianqian Fang

unread,
Nov 14, 2023, 12:25:57 PM11/14/23
to mcx-...@googlegroups.com, Ife E
hi Ife,

there is a misnomer in many mcx's sample code variable names - we often used "flux" (1/mm^2/s) as the default mcx output, although what we should have been using is "fluence_rate" - the two quantities have the same unit, but true optical flux is a vector, fluence-rate is a scalar.

regarding the unit, please see this FAQ entry


mcx/mmc solutions are linear to the source term - so, whatever unit you should use in the numerator of the output fluence-rate unit, whether it is J/mm^2/s, or W/mm^2/s, or 1/mm^2/s, is directly dependent on what is the unit that you assume your source "intensity" is supposed to be - it could be total 1 packet (particle fluence), or 1 J (energy fluence), or 1W (power fluence). MCX does not make the assumption on the source intensity unit, as long as it is unitary (by default, mcx normalizes the solution so that the total source intensity is 1).

please note that we only compute scalar-valued fluence rate (or fluence, or energy deposition) distributions in the volumetric output of mcx, and we do not compute or store the vector-formed true "optical flux".

however, for detected photons, you can in fact compute the directional flux using the recorded exiting angle and area of the detector aperture.

for the assumed source term - yes, it is a Dirac-delta(r=r_s, t=0), and the output is a time-gated TPSF of the quantity specified by cfg.outputtype (when cfg.isnormalized is set to 1)


the definitions of fluence, flux, fluence-rate we follow are based on Lihong's Biomedical optics book.


for better understand the source handling, please also see this recent reply



Qianqian


On 11/14/23 11:55, Ife E wrote:misnomer
--
You received this message because you are subscribed to the Google Groups "mcx-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to mcx-users+...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/mcx-users/6f7c4b93-dae9-467c-aa73-ce1ab2052b2bn%40googlegroups.com.


Ife E

unread,
Dec 1, 2023, 11:15:53 AM12/1/23
to mcx-users
Hi Qianqian,

Thanks for your response it has been really helpful in initialising/validating my model. 

Regarding the normalisation I just want to verify that when  cfg.isnormalized = 1 the fluence at each voxel is distributed such that the amplitude of the dirac source term is 1?

So far I have been verifying my model by constructing the source fluence at each node in my mesh (each node corresponds to an MCX voxel). My x, y and time localisation is pretty good, I'm not expecting perfect dirac delta distributions but the reconstructed source fluence has an amplitude a good few orders of magnitude larger than the expected amplitude of 1, if anything with the poor localisation of the reconstruction source I was expecting it to be lower than expected.

Looking at the fluence values I'm getting back from MCX-cloud (that I've loaded into MATLAB with loadjson and jdatadecode) they seem extremely large for a unit normalised source, the largest value is over 1.7e10.

Is there some data pre-processing I need to do to ensure the normalisation to a unitary source? Or a way to assess the correct amplitude of the source? My initial guess would be to set the amplitude to the total fluence rate in my object.

If it helps I just ran the same simulation parameters that I've been using in MCX-cloud, Job ID: 18935558C927866A3D813AE8560764BA161F93F9.

Thanks again for your help,
Ife

Reply all
Reply to author
Forward
0 new messages