Bulk physics

Volumetric optical photon processes are commonly known as “bulk” physics as they happen in the bulk of the material. These processes are stochastic and based on the user-provided, wavelength-dependent mean free paths in the optical materials.

class PhysicsParams : public celeritas::ParamsDataInterface<PhysicsParamsData>

Bulk physics interaction models for optical photons.

Todo:

Rename BulkPhysicsParams

Built-in processes

The Interactor classes encapsulate the physics models for each physical process.

class AbsorptionInteractor

Sample optical absorption interaction.

Absorption rate is governed by sampling its mean free path in the action loop. The interactor simply returns an interaction saying the optical photon has been absorbed.

class RayleighInteractor

Sample optical Rayleigh scattering.

Optical Rayleigh scattering is the elastic scattering of optical photons in a material. The scattered polarization is guaranteed to be in the same plane as the original polarization and new direction.

class MieInteractor

Sample optical Mie scattering using the Henyey–Greenstein distribution.

\[ P(\cos\theta) \propto \frac{1 - g^2}{(1 + g^2 - 2g\cos\theta)^{3/2}} \]
. Parameters:
  • forward_ratio: probability of using forward vs backward lobe

  • forward_g, backward_g: HG asymmetry parameters for each lobe

class WavelengthShiftInteractor

Sample state change and number of secondaries from a WLS interaction.

The number of photons is sampled from a Poisson distribution. The secondary photons are sampled later by the WavelengthShiftGenerator.

Todo:

Initialize the first secondary directly in the parent’s track slot.

Mean free paths

class RayleighMfpCalculator

Calculate the Rayleigh MFP for a given set of material properties.

Uses the Einstein-Smoluchowski formula to calculate the mean free path at a given energy. In [Landau and Lífshíts, 1884] , the mean free path is given by equation (120.2):

\[ l^{-1} = \frac{1}{6\pi} k^4 \rho k_B T \left(\frac{\partial \rho}{\partial P}\right)_T \left(\frac{\partial \varepsilon}{\partial \rho}\right)_T^2 \]
where we only consider density fluctations at constant temperature. The first partial derivative may be rewritten in terms of the isothermal compressibility \( \beta_T \):
\[ \left(\frac{\partial \rho}{\partial P}\right)_T = \rho \beta_T. \]
The latter partial derivative may be calculated via the Clausius-Mossetti equation
\[ \frac{\varepsilon - 1}{\varepsilon + 2} = A \rho \]
for constant \( A \), giving
\[ \left(\frac{\partial \varepsilon}{\partial \rho}\right)_T = \frac{(\varepsilon - 1)(\varepsilon + 2)}{3\rho}. \]
The final equation for the MFP in terms of energy:
\[ l^{-1} = \frac{k_B T \beta_T}{6\pi} \left(\frac{E}{\hbar c}\right)^4 \left[ \frac{(\varepsilon - 1)(\varepsilon + 2)}{3} \right]^2. \]

The scale factor is a unitless user customizable factor that is multiplied to the inverse MFP.