Release Notes

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.