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:
- No waveguide symmetry, i.e.,
SymmetryX = false
andSymmetryY = false
SymmetryX = true
SymmetryX = true
andSymmetryY = 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 x–z and y–z 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 parameterPhaseConjugation
, 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 abeamProblem
. 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 toinputplot
as second, optional parameter. Consequently, theMonitor
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 of0
corresponds to the Padé order (0,1) and represents paraxial approximation. Furthermore, the values1
,2
, and3
correspond to the Padé orders (1,1), (2,2), and (3,3), respectively. The default value ofWideAngleOrder
is0
except forhomogeneous
sections where BPM automatically adapts the algorithm for aWideAngleOrder
of1
. - Add parameter
ProfileExponent
to the waveguide functionsplc
andrib
. 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 differentShift
andAngle
values) that propagate simultaneously in free space.
Enhancements:
- 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.