/// <summary> /// Evaluates the temporal frequency radially resolved reflectance using the distribution of /// the source-image point source configuration. /// </summary> /// <param name="dp">DiffusionParameters object</param> /// <param name="rho">radial location</param> /// <param name="k">wavevector</param> /// <param name="fr1">Fresnel Moment 1</param> /// <param name="fr2">Fresnel Moment 2</param> /// <returns></returns> public override Complex TemporalFrequencyReflectance(DiffusionParameters dp, double rho, Complex k, double fr1, double fr2) { var dpLocalReal = DiffusionParameters.Copy(dp); var dpLocalImag = DiffusionParameters.Copy(dp); Func <DiffusionParameters, double, Complex, double, Complex> kernelFunc = (dpLocal, r, kLocal, zp) => { dpLocal.zp = zp; return (_pointSourceForwardSolver.TemporalFrequencyReflectance( dpLocal, r, kLocal, fr1, fr2)); }; return ((CalculatorToolbox.EvaluateDistributedExponentialLineSourceIntegral( zp => kernelFunc(dpLocalReal, rho, k, zp).Real, dp.mutTilde) + Complex.ImaginaryOne * CalculatorToolbox.EvaluateDistributedExponentialLineSourceIntegral( zp => kernelFunc(dpLocalImag, rho, k, zp).Imaginary, dp.mutTilde) ) * dp.musTilde); }
private double StationaryFlux(double rho, double z, DiffusionParameters dp) { var dpLocal = DiffusionParameters.Copy(dp); return(CalculatorToolbox.EvaluateDistributedExponentialLineSourceIntegral( zp => { dpLocal.zp = zp; return _pointSourceForwardSolver.StationaryFlux(rho, z, dpLocal); }, dp.mutTilde) * dp.musTilde); }
/// <summary> /// Evaluation of the temporally and radially resolved fluence rate using the distribution of /// source-image point sources. /// </summary> /// <param name="dp">DiffusionParameters object</param> /// <param name="rho">radial location</param> /// <param name="z">depth location</param> /// <param name="t">time</param> /// <returns>fluence rate</returns> public override double TemporalFluence( DiffusionParameters dp, double rho, double z, double t) { var dpLocal = DiffusionParameters.Copy(dp); return(CalculatorToolbox.EvaluateDistributedExponentialLineSourceIntegral( zp => { dpLocal.zp = zp; return _pointSourceForwardSolver.TemporalFluence(dpLocal, rho, z, t); }, dp.mutTilde) * dp.musTilde); }