BeamLab 1.3

Today, we are pleased to announce the release of our next major version BeamLab 1.3 including numerous new and (hopefully also for your application) most attractive features. Throughout the development of this release, we placed emphasis mainly on one thing: performance.

Faster than ever

BeamLab is now faster than ever since we’ve significantly improved the performance of our bpmsolver for full-vectorial calculations and for calculations using a WideAngleOrder greater than 0, a new parameter which has also been introduced in this release. The following diagram shows a comparison of the execution times of a full-vectorial BPM simulation with our demo gradedindex_waveguide for three different use cases:

  1. No waveguide symmetry, i.e., SymmetryX = false and SymmetryY = false
  2. SymmetryX = true
  3. SymmetryX = true and SymmetryY = true

Thanks to the optimized algorithms, BeamLab 1.3 outperforms BeamLab 1.2 by up to a factor of 4 with respect.

Benchmark results using an Intel® Core™ i7-7500U CPU @ 2.70GHz, 16 GB RAM, and MATLAB® version 9.3 (R2017b)

Next to these changes to bpmsolver, we’ve also significantly improved the performance of the function gaussinput and the performance of our license manager.

Not yet fast enough?

In BeamLab 1.3, we’ve also added a new waveguide function called fasthomogeneous, which opens up completely new possibilities in terms of decreasing the execution time of your simulations. Unlike the conventional function homogeneous, the new function fasthomogeneous allows you to skip entire homogeneous propagation sections by calculating in almost a twinkle of an eye the resulting field at any desired z-position thanks to an innovative combination of the beam propagation method and the angular spectrum method. For illustrative purposes, the following two figures show how fasthomogeneous can be used to replace a part of a homogeneous propagation section in order to significantly decrease the overall execution time. Since fasthomogeneous does not calculate any intermediate steps between z = 0.3 mm and 0.7 mm, this part is depicted as a white area in xz and yz slices.

Conventional free-space beam propagation using the function homogeneous

Free-space beam propagation with a fasthomogeneous section

Like any other waveguide function, fasthomogeneous can also be used together with a complex refractive index for modeling optical attenuation or gain. Furthermore, by setting the optional parameter PhaseConjugation to false or true, it is possible to quickly obtain the outcome of a forward or backward (i.e., phase-conjugate) propagation. The following figure shows the case where in the first half of the simulation a Gaussian beam is amplified while being propagated forward, whereas in the second half the amplified beam is propagated backwards to its original input state. Note that backward propagation of an amplified beam involves attenuation which is automatically taken care of.

Forward and backward propagation as well as amplification and attenuation capabilities of fasthomogeneous

Exciting new demos

We’ve added two new demos, one of which shows the beam propagation in one core of a photonic lantern. The device consists of 6 cores surrounded by an inner and outer cladding tapered down to a multimode fiber where the inner and outer cladding of the photonic lantern take over the role of the core and cladding of the multimode fiber.

3D refractive index contour (left) and intensity profiles in the photonic lantern

Video of refractive index (left) and intensity of the beam propagating in the photonic lantern (right)

Interested in more examples? Please also check out our examples page.

Release Notes

New features:

  • Add waveguide function fasthomogeneous. This function calculates propagation through a homogeneous section in very short time. Furthermore, by using the optional parameter PhaseConjugation, one can also quickly obtain the outcome of a backward (phase-conjugate) propagation.
  • Add new possibilities for defining input fields. Input fields of bpmsolver are now defined via function handles or cell arrays of function handles, which allows one to efficiently define now also multiple and superimposed input fields. For backward compatibility, it is still possible to use the old definition via field structures generated when directly calling an input field function.
  • Add function inputplot, which displays the input field defined in a beamProblem. The input field to be displayed can also be specified as an input field function handle or cell array of input field function handles and passed to inputplot as second, optional parameter. Consequently, the Monitor parameters have been removed from all input field functions.
  • Add possibility to define complex refractive indices with negative or positive imaginary parts to all waveguide functions for modeling optical attenuation or gain. Until now, only negative imaginary parts were allowed.
  • Add parameter WideAngleOrder. This parameter allows one to specify the order of a Padé approximant up to order 3. A value of 0 corresponds to the Padé order (0,1) and represents paraxial approximation. Furthermore, the values 1, 2, and 3 correspond to the Padé orders (1,1), (2,2), and (3,3), respectively. The default value of WideAngleOrder is 0 except for homogeneous sections where BPM automatically adapts the algorithm for a WideAngleOrder of 1.
  • Add parameter ProfileExponent to the waveguide functions plc and rib. This parameter allows one to specify the exponent of the core’s permittivity distribution to simulate various types of graded-index profiles.
  • Add possibility to specify VideoResolution in dots per inch (DPI). VideoResolution can now alternatively be defined as a string containing '-r' and an integer value indicating the resolution in DPI. For example, '-r300' sets the output resolution to 300 DPI.
  • Add demo photonic_lantern, which simulates the beam propagation in a photonic lantern with vanishing cores.
  • Add demo three_beam_interference. This demo shows how to define multiple input fields (three Gaussian beams with different Shift and Angle values) that propagate simultaneously in free space.


  • Improve performance of bpmsolver for full-vectorial calculations.
  • Improve performance of gaussinput.
  • Improve performance of license manager.
  • Improve the definition of graded-index core profiles in conjunction with core shapes other than circular.
  • Improve multicore waveguide code with respect to 2D BPM simulations.
  • Improve figure titles.
  • Improve demo scripts.
  • Improve documentation.

Bug fixes:

  • Fix license manager bug when using certain MATLAB® versions.
  • Fix bug when displaying the phase distribution during a BPM calculation.
  • Various minor bug fixes.