BeamLab 2.2

Welcome to BeamLab 2.2! We are pleased to announce our latest release which is packed with exciting new features as well as performance and stability improvements. Read on to learn more about some of the highlights or directly jump to the release notes.

Creating a waveguide’s refractive index distribution via an image file

One of BeamLab’s strengths is a simple user-interface that does not require the user to learn how to use a proprietary CAD tool to set up the simulation model. As such, BeamLab comes with a large number of pre-defined waveguide functions to enable a quick and easy setup of basic waveguide structures such as tapers, splitters, couplers, etc. Although these functions and their combinations cover a wide range of applications, it is also clear that they could never fulfill the design needs with respect to all thinkable waveguide structures. To break through a potential design limitation based on pre-defined functions and thus provide our users with greater flexibility in designing and simulating the waveguides of their choice, we added this time a new waveguide function dubbed importedwaveguide that allows one to import and create waveguides based on a two-dimensional image representing the refractive index distribution of the waveguide’s cross-section in either the x-y, x-z, or y-z plane. In the following example, we show the refractive index contour and respective field propagation through a planar waveguide representing the input star coupler of an arrayed waveguide grating that was created by means of a black & white PNG image drawn with a third-party CAD software and imported into BeamLab. In this specific example the image represents the waveguide’s cross-section in the x-z plane. The waveguide’s thickness was separately defined by the optional parameter  Width of the function importedwaveguide to be 2 µm.

PNG image (left) and two-dimensional intensity distribution (right)

Three-dimensional intensity distribution displayed with black mesh lines (illustrating BeamLab’s extensive plot capabilities)

Cascading simulations with different grid sizes and resolutions

A simulation model in which the lateral extension of the propagation beam varies by a large factor, e.g., hundred or more, can be computationally very expensive as the resolution for the whole model needs to be set according to the smallest extension or feature. In this release we added a function dubbed resizefield that allows one to easily adjust the size and resolution of the output field of the previous calculation to the size and resolution of the next one and thus optimize calculation speed without sacrificing accuracy. In the following example, we illustrate this by focussing a collimated Gaussian input beam with a beam width of 1 mm into a waveguide core with a width of 5 µm by using a thin lens with a focal length of 2.5 mm. By splitting the simulation model into multiple sections, the grid size is gradually reduced from 2 mm to 60 µm and thus optimized to cover just the area where the beam’s field strength is mostly concentrated and significant enough to affect the propagation characteristics.

Intensity distribution of 1st section (lateral size: 2 mm, length: 1.05 mm) including a thin lens at z = 0.05 mm

Intensity distribution of 2nd section (lateral size: 1.5 mm, length: 1.2 mm)

Intensity distribution of 3rd section (lateral size: 0.4 mm, length: 0.25 mm)

Intensity distribution of 4th section (lateral size: 0.06 mm, length: 1.05 mm) including the waveguide

Calculating the electric and magnetic field simultaneously

Algorithms based on the beam propagation method mostly focus on the calculation of the electric field. However, for an accurate evaluation of the power flow throughout the simulation model it is essential to have also knowledge on the real part of the Poynting vector which in turn requires also knowledge of the magnetic field. Starting with this release, BeamLab offers the possibility to calculate the electric and magnetic field simultaneously and thus provides a means for the accurate evaluation of the Poynting vector. If the parameter FieldType is set to 'EH', any intensity related calculation will be automatically based by default on the real part of the Poynting vector.

Exciting new demos

In this release we also expanded significantly our demo library. One of the new demos is dubbed nanf and gives an example on how to calculate the eigenmodes of a nested antiresonant nodeless hollow core fiber (NANF). Among the various types of photonic crystal fibers developed so far, NANFs have attracted considerable attention in recent years for their potential to achieve for the first time a lower propagation loss over a broader wavelength range than conventional solid core fibers. The following figures depict the NANF’s cross-sectional refractive index and fundamental mode’s intensity distribution, respectively.

Refractive index distribution (left) and intensity distribution of the fundamental mode (right)

Another demo dubbed metal_slit illustrates how BeamLab works with media that exhibit a complex refractive index such as metals. In this demo a metal slit made from Aluminium is illuminated with a Gaussian beam in width twice that of the slit. The following figures show the intensity distribution in the x-z plane for the cases where the input beam exhibits y (or TE) polarization and x (or TM) polarization, respectively.

Intensity distribution of TE-polarized (left) and TM-polarized (right) light propagating through a metal slit

Finally, a third demo that we would like to introduce here is the demo dubbed ronchi_grating_thick which depicts the field changes in close vicinity of a “thick” (in contrast to thin elements of zero thickness) Ronchi grating. The refractive index of the substrate is 1.5 and the grating’s groove depth is chosen to generate a phase delay of π . The following figure shows the field distribution of the electric field’s real part in the x-z plane. At the grating’s output plane the beam’s phase alternates between 0 and π . The generation of such thick gratings whose thickness, surface profile and refractive index of the unit cell can be freely defined by the user is now enabled by the new function grating.

Field distribution in close vicinity of a Ronchi grating illuminated by a Gaussian beam from the substrate side


Release notes

New features:

  • Add new function importedwaveguide. This function allows one to create a waveguide whose x-y, x-z, or y-z refractive index distribution is externally generated and imported by means of a matrix or an image file.
  • Add new function grating which emulates a grating whose thickness, surface profile and unit cell refractive index distribution is defined by the user.
  • Add possibility to calculate simultaneously the electric and magnetic field by specifying the new value 'EH' in FieldType.
  • Add possibility to use the parameter UseParallel in conjunction with modesolver to speed up mode calculations when the refractive index distribution is symmetric with respect to the x- and/or y-axis.
  • Add possibility to set QuiverPeriod in x- and y-direction independently.
  • Add possibility to define the parameter WideAngleOrder individually in each section.
  • Add new function resizefield. This function adapts the resolution of a field distribution from one bpmsolver calculation to the next.
  • Add new parameter SlicesXYPlotXYStep that allows one to adjust the plot resolution in the x-y plane of all field and monitor x-y plots.
  • Add new parameters IndexSlicesXZ, IndexSlicesXZGraphType, IndexSlicesYZ and IndexSlicesYZGraphType to indexplot that allow one to generate x-z and y-z plots of the refractive index distribution.
  • Add new parameters CoreRotation and CoreRotationEnd to waveguide function multicore to allow one to rotate the cores of each core ring independently of the total waveguide rotation.
  • Add new parameter AnisotropyRotationTransition to waveguide functions singlecore and multicore to define the way the orientation of the anisotropy changes from AnisotropyRotation to AnisotropyRotationEnd.
  • Add new parameter RotationTransition to waveguide function singlecore to define the way the core rotation angle changes from Rotation to RotationEnd.
  • Add new parameters Angle, Polarization, and Power to imageinput in accordance with the other input field functions.

New or modified demos:

  • Add demo awg which shows the beam propagation through the input star coupler of a simplified arrayed waveguide grating.
  • Add demo waveguide_coupler which shows an example on how to use the new function resizefield to simulate the coupling of a Gaussian beam with a beam width of 1 mm to a waveguide with a core width of 5 um.
  • Add demo nanf which calculates the field distributions and effective refractive indices of the eigenmodes of a nested antiresonant nodeless fiber.
  • Add demo metal_slit which shows the beam propagation through a metal slit for both TE and TM polarization.
  • Add demo photonic_lantern_modeselective which shows the beam propagation through two mode-selective photonic lanterns in a back-to-back configuration.
  • Add demo fiber_anglepolished which shows the beam propagation through a single-mode fiber that is terminated with an 8 degree angle-polished (slanted) end face.
  • Add demo fiber_loop_adiabatic which shows the beam propagation through a fiber loop with an adiabatic bend radius transition.
  • Add demo ronchi_grating_thick which shows the beam propagation through a thick Ronchi phase grating.
  • Add demo blazed_grating which shows deflection of a Gaussian beam when propagating through a blazed phase grating.
  • Rename demo ronchi_grating to ronchi_grating_thin.
  • Rename demo fiber_loop to fiber_loop_abrupt.


  • Improve the performance of modesolver calculations.
  • Improve warning and error messages.
  • Improve documentation.

Parameter changes:

  • Rename parameter CalculationCenter to Origin. In addition to defining the calculation origin in the x-y plane, this parameter now allows one to define also the z-coordinate of the calculation origin. In other words, the calculation origin does not necessarily need to be [0,0,0] but can be set to any location in the three-dimensional space.
  • Rename parameter RingAngleOffset to RingAngle in multicore.
  • Rename parameter RingAngleTransition to RotationTransition in multicore. RotationTransition defines the transition of the rotation angle from Rotation to RotationEnd, RingAngle to RingAngleEnd and CoreRotation to CoreRotationEnd.

Bug fixes:

  • Fix bug in input functions uniforminput, imageinput, and gaussinput.
  • Fix bug in thinaperture and thinlens.
  • Fix bug when displaying quiver arrows in field plots using the parameter Quiver.
  • Fix bug with respect to parameter SlicesXZYZPlotXYStep.
  • Various minor bug fixes.