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)
)