Physics behind roughness in frghns.f

Dear Expert,
I have a simple question in the code what is FRGHNS? what is the formula behind it and how can I find the exact physics of it. I search about it on google but I do not find an exact document to talk about it in Fluka.
Best regards,

Dear @rezaei.m.p ,

by default surfaces in your geometry are perfectly polished, meaning that any reflection of optical photons will be based on a specular reflection model. This means that the incoming particle is reflected using the (perfect) normal of the surface.

However, in reality most surfaces exhibit diffuse reflection because the surface has some roughness. This roughness comes from the fact that the surface is consisting of a large collection of microfacets where each of them has a normal that has a orientation which can be more or less different from the normal of the macroscopic surface. As a consequence the reflection will be imperfect and follow a distribution of the normals of the microfacets centered around the normal of the macroscopic surface.

In FLUKA this perturbation can be taken into account to a certain extent but with a very very simplified approach. FLUKA samples a cosine angle following a Gaussian distribution. Using this angle as an offset a new microscopic normal is calculated based on the macroscopic surface normal. The routine FRGHNS should return a value between [0, 0.5] which is then used as the standard deviation of the Gaussian distribution that is sampled. How this value is calculated (e.g. based on reflection measurements, microfacet models etc.) is the responsibility of the user.

Depending on the use case this very simplified approach might work. However, the assumption of the Gaussian is physically not necessarily correct and cannot account for anisotropic effects for example. There are better models like:

  • Trowbridge, S., and K. P. Reitz. Average irregularity representation of a rough ray reflection. Journal of the Optical Society of America 65 (5), 531–36.
  • Beckmann, P., and A. Spizzichino. 1963. The Scattering of Electromagnetic Waves from Rough Surfaces .
  • Kurt, M., L. Szirmay-Kalos, and J. Křivánek. An anisotropic BRDF model for fitting and Monte Carlo rendering. SIGGRAPH Computer Graphics 44 (1), 3:1–3:15.

Yet, they are not straightforward to implement in a general purpose MC code like FLUKA which is not specifically targeting optical effects.

Hope that helps

Dear @ctheis ,
Thanks for explaining.
Is it possible to give me an example:
if the angle of photons is 30 degrees and I put roughness 0.1 what is the angle of reflection?
And why the upper limit is 0.5?
Best regards,


The limitation of 0.5 is arbitrary. As mentioned the approach is a very rough approximation and there is no strong physically justified basis for this. For such methods you should refer to the literature links that I have mentioned.

If you have a photon coming in under 30 degrees and 0.1 roughness then the outgoing one will follow a Gaussian which is centered around -30 degrees (considering that 0 degrees is coinciding with the normal vector) with an offset that is given by a Gaussian normal distribution with a sigma of 0.1.