Proposal: inhomogeneous absorption
Dear Raysect team,
currently Raysect provides a class to create an inhomogeneous radiation emitter, i.e. InhomogeneousVolumeEmitter.
By relying on the linear attenuation law (Lambert-Beer), the integrated emission between two consecutive samples in InhomogeneousVolumeEmitter can be attenuated of an appropriate factor depending on local material properties (specified by an absorption_function_3d() to be defined by the user). This would therefore model an absorbing material, e.g. a plasma with respect to the radiation emission therein.
Quoting the wise strategy suggested by @vsnever (from this issue):
-
I think inhomogeneous emitter and inhomogeneous absorber are two different materials and should be implemented independently. If material combines both properties, it can be implemented using the
Add()modifier with an emitter as the first argument. -
In general, absorption depends on wavelength, so
material.absorption_function_3d()should return aSpectralFunction.
What do you think? Thank you! Cheers, Matteo
Unfortunately it is not as simple as suggested. Volume integration through overlapping volumes, containing a mixture of absorption and emission would not correctly integrate. The volume handling needs to be completely rewritten to perform a piecewise integration from every volume simultanously, not one after the other as it is currently implemented. This was planned for v1.0, but it is a breaking change and would require cherab's materials to be completely rewritten.
See #357.