Surface layouts

Surface layouts can be used to describe complex interfaces at the top and bottom sample surfaces, such as the surface of the optical fiber probe tip. The surface layouts are subclasses of xopto.mcml.mcsurface.base.SurfaceLayoutBase. Note that the top and bottom sample surface can be assigned a different surface layout.

Readily available surface layots are conveniently imported into the xopto.mcml.mc and xopto.mcml.mcsurface modules and include:

  • xopto.mcml.mcsurface.lambertian.LambertianReflector implements a uniform surface with optical properties varying from an ideal first surface mirror to a an ideal Lambertian surface with an optional absorption.

  • The surface layouts of optical fiber probes are implemented in:

    • ‘py:mod:xopto.mcml.mcsurface.probe.sixaroundone.SixAroundOne implements a parameterized layout of a six-around-one optical fiber probe.

    • ‘py:mod:mcml.mcsurface.probe.lineararray.LinearArray implements a parameterized layout of probe with linear placement of optical fibers.

    • ‘py:mod:mcml.mcsurface.probe.fiberarray.FiberArray implements a general parameterized layout of differnt optical fibers in an optical fiber probe.

In this example we create a layout of a tightly packed six-around-one optical fiber probe with 7 multimode fused silica fibers. The multimode optical fibers have a core diameter of 400 μm, a cladding diameter of 420 μm and a numerical aperture 0.22. The stainless steel tip of the optical fiber probe has a 6 mm diameter and a reflectivity of 65%. Note that we utilize the xopto.mcbase.mcutil.fiber module to create an instance of MultimodeFiber that represents a multimode fiber.

from xopto.mcml.mcutil import fiber
from xopto.mcml import mc

fiber.MultimodeFiber(
    400e-6,
    420e-6,
    ncore=ri.glass.fusedsilica.default(550e-9)
)

mc.mcsurface.SixAroundOne(fiber, diameter=6.0e-3, reflectivity=0.65)

Use in Monte Carlo simulator

The complex layouts at the top and / or bottom sample surface are passed to the Monte Carlo simulator through xopto.mcml.mcsurface.base.SurfaceLayouts. In the following example we set the layout at the top sample surface to a six-around-one probe SixAroundOne and the layout at the bottom sample surface to a Lambertian reflector LambertianReflector that absorbs 30% of the incident light and reflects the remaining 70% as an ideal Lambertian reflector. Note that it is not required to populate both the top and bottom sample surface layouts as illustrated in this example.

from xopto.mcml.mcutil import fiber
from xopto.mcml import mc

fiber.MultimodeFiber(
    400e-6,
    420e-6,
    ncore=ri.glass.fusedsilica.default(550e-9)
)

layouts = mc.mcsurface.SurfaceLayouts(
    top=mc.mcsurface.SixAroundOne(fiber, diameter=6.0e-3, reflectivity=0.65),
    bottom=mc.mcsurface.LambertianReflector(reflectance=0.7)
)