source icon indicating copy to clipboard operation
source copied to clipboard

Proposal: inhomogeneous absorption

Open MMoscheni opened this issue 2 years ago • 2 comments

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 a SpectralFunction.

What do you think? Thank you! Cheers, Matteo

MMoscheni avatar Jan 19 '23 09:01 MMoscheni

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.

CnlPepper avatar Jan 29 '23 17:01 CnlPepper

See #357.

CnlPepper avatar Jan 29 '23 17:01 CnlPepper