Release Notes

0.1.1: May 7, 2024

  • Fixed a bug with the MATLAB connection.

  • Fixed a bug with the shape() argument position.

  • Fixed a bug with the scattering() calculate that was overestimating the scattering loss.

0.1.0: April 24, 2024

  • The EME module has been added, including section(), EME(), and plot_S_matrix(). These are only available with an active EMode3D license.

  • EME solver is limited to only use field_to_solve of ‘Et’.

  • EME length sweeps are solved in the reverse order.

  • Changed the parameter length_nm to length for all EME sections and functions.

  • EME sections automatically re-solved after a shape change and label reset.

  • Materials added to the material database: InGaAs, InGaP, InP, InSb, PMMA, SU8, TiO2_rutile, HfO2, H2O, GGG, GaSb, GaP, BBO, and InSb.

  • Material explorer: fixed bug saving certain filetypes, fixed bug with logo placement in saved files, and added gridlines.

  • Updated material_explorer() plot display and saving resolution.

  • The add_material() function now accepts citation and wavelength_range as an inputs.

  • Updated add_material() so that is accepts a list of three equations for defining anisotropic materials with dispersion.

  • New function import_database() added, which supports the import of a custom database text file.

  • The west boundary condition has been re-defined to reflect the Ex (a)symmetry, so it matches the south boundary condition.

  • The default y-position has been changed from -1 to ‘auto’.

  • In the plot() function, scaling is added to the cursor data-value for field plotting.

  • Fixed a plot error following a call to group_index().

  • Fixed a bug when iteratively updating a shape setting.

  • MATLAB connection now outputs text to the MATLAB command window.

  • Updated the scattering loss tool to make the calculation more consistent.

  • Fixed bugs with saving and opening EMode simulation files with MATLAB.

  • Added the new parameter propagation_resolution to the settings() function.

0.0.7-b5: December 12, 2023

  • Fixed bugs with conformal layers.

  • Added arbitrary number of masks for each shape.

  • Added input parameters to shape: mask_offset and tone. Either mask, mask_offset, or both can be a list. The length of each parameter will be matched by padding with the last value. Settings from tone and etch are applied to all mask/mask_offset values.

  • Added etch functionality to conformal layers.

  • Fixed the bug the made incorrect mode list ordering.

  • Added the function orthogonality to test the othogonality of the mode list. This is helpful to determine if the mode list is sufficiently accurate.

  • Added the input parameter label to get(), so users can extract data from labeled datasets.

  • The label() function now saves all settings and field data under in a Python dictionary or a MATLAB structure array called dataset_LABEL.

  • Changed the default operation in confinement() to only include areas of a shape that define the refractive index, not including areas that are overlapped by other shapes with higher priority.

  • Added a boolean option ignore_priority to confinement() that toggles ignoring overlapping shapes with higher priority.

  • Added user-accessible variables shape_materials, priority_indices, and shape_vertices.

  • Added support for iPython.

  • Added functionality to use an existing material name to define a custom material. This will override the EMode database material during the session.

  • FDM() now takes the input parameter label to automatically save the simulation result as a labaled dataset.

  • Updated group_index() so it will run without running FDM() first.

  • Added ‘min’ as an option for slice_op parameter in scattering().

  • Shapes and associated properties are now saved as dictionaries. This also includes the scattering loss results.

  • Interfacial roughness and correlation length values are now specified in the shape parameters: correlation_length (alias Lc_nm) and roughness_rms (alias st_dev_nm).

  • Added the new function reset() to clear all shapes, reset settings, or both.

  • Shape argument position now accepts a single float to specify only the x-position and automatically place the y-position of a planar layer on top of the previous layer.

  • Added boundary conditions options ‘TE-h’, ‘TE-v’, ‘TM-h’, and ‘TM-v’ to specify only horizontal or vertical symmetry for TE or TM modes.

  • Fixed bugs with MATLAB connection: default file_type is now ‘.mat’ for close(), and ‘.eph’ file is preserved after save().

0.0.6-b4: March 13, 2023

  • Added an option to remove the legend from plot.

  • Now planar layers do not add fill material by default, only if fill_refractive_index is defined.

  • Updated meshing algorithm to fix bugs at shape interfaces.

  • plot now shows positive and negative field values on the colorbar.

  • Fixed error when setting wavelength units to ‘um’ in add_material.

  • Added options to improve sidewall scattering accuracy. See details in the documentation for the scattering function.

0.0.5-b3: February 3, 2023

  • Scattering loss now works with angled sidewalls.

  • For scattering, the default for mode is ‘all’.

  • Added imaginary index capability to add_material.

  • Bend mode solver updated so field patterns and loss are now more accurate.

  • Switched from uniaxial pml to stretched-coordinate pml.

  • User-defined materials now override EMode database materials.

  • plot now shows shapes with the same refractive index in a different color.

  • Added capability to solve for the magnetic field instead of the electric field. See the field_to_solve parameter in settings.

  • Removed the field_calc option from FDM. Now the fields will always be available, but they will not be stored in memory. This reduces the memory usage by about 7x.

  • Saved .eph files do not contain the raw field data by default. This can be controlled with the save_all_fields parameter in save and close.

  • material_explorer now shows user added materials.