# Release notes IPKISS 3.1.2

IPKISS 3.1.2 is a release combining bugfixes and small improvements. Please check the changelog at the bottom for the full list of changes. The highlights are shown below:

### 1. Improvements to internal cachingÂ¶

In previous versions of IPKISS, in some cases the value of a property was calculated multiple times. In most cases this lead to a slowdown. We took a thorough look at the internal caching mechanisms and fixed several bugs. This also results in an average performance improvement of 25% in IPKISS.

### 2. Virtual fabricationÂ¶

We did a several bugfixes / improvements in the virtual fabrication (used to export your layout for physical simulations such as FDTD, mode solvers). In summary, small slivers at the edge of the simulation window should now be discarded, boundaries with coincidal edges can be fabricated (see image below), 2D cross-sections can now be joined of they have the same cross-section, improved error message when a material stack can not be found, and the not operation on layers is now supported.

### 3. Using matplotlib notebookÂ¶

You can now use the %matplotlib notebook magic in a notebook to use interactive plotting of ipkiss pcells. This used to fail when trying to visualize multiple times. For example, you can now do:

In [5]:
%matplotlib notebook
RingRect180DropFilter().Layout().visualize(annotate=True)


Note that in a live notebook session, you can now scroll/pan/save the figure.

### Full list of improvements and bugfixesÂ¶

#### Installation & Getting StartedÂ¶

• Most of the packages that are bundled with IPKISS have received small updates. Ipkiss now ships with numpy 1.11.3 and scipy 0.19. One major update is conda (the package manager used to install / update packages), which is now version 4.3.
• Setting the PATH environment variable when using IPKISS inside a code editor is not required anymore.

#### IpcoreÂ¶

• Many improvements and bugfixes to the internal caching. These also result in an average performance increase of 25% in Ipkiss.

#### ipkissÂ¶

• Bugfix: equality check of Library objects (Library.__eq__ operator, e.g. lib1==lib2) is fixed.
• Bugfix: missing imports for compiled ShapeWaveguideTransition.CapheModel (numpy exp and pi).
• Bugfix: SizeInfo.snap_to_grid contained dysfunctional code, raising an exception.
• Bugfix: importing ipkiss no longer modifies PYTHONPATH (it removed the string '.', which changes the behavior of scripts which rely on packages / modules being present in the current working directory).
• Improvement: snap the virtual fabrication canvas to the technology grid, to avoid small slivers at the edge of the simulation window.
• Improvement: GDSCell is now available in ipkiss3.all and does not need to be imported separately anymore.
• Bugfix: virtual fabrication: fix error message when a material stack cannot be found.
• Bugfix: Boundaries with coincidal edges can now be virtually fabricated.
• Bugfix: MRef.size_info was dysfunctional (using SizeInfo without importing it).
• Improvement: visualizations no longer specify the matplotlib figure number, this enables the use of %matplotlib notebook magic in notebooks and using matplotlib interactive mode.
• Improvement: not operation on layers is now supported in virtual fabrication.

#### PysicsÂ¶

• Bugfix: MaterialStackGeometry2D.consolidate() was dysfunctional (typo fixed).

#### PicazzoÂ¶

• Bugfix: ThinnedWireWireWaveguideTransitionLinear was not always using the correct start trace template.
• Bugfix: Ring resonators could raise a validation error even if a valid value was specified for coupler_spacings.

#### Ipkiss.edaÂ¶

• Bugfix: The transformation of Group and PolygonText elements is now taken into account when exporting to OpenAccess.
• Bugfix: The transformation of a Path element is now taken into account when exporting to OpenAccess.

#### Ipkiss 2.4 CompatibilityÂ¶

• Bugfix: technologies.compat24.picazzo24 could not be imported if a technology already contained TECH.PURPOSE.NO_FILL.

#### DocumentationÂ¶

• Added a guide on waveguides which centralizes all waveguide documentation.
• Added examples for ChildCellProperty and ChildCellListProperty.

#### Backward compatibilityÂ¶

This release is fully compatible with Ipkiss 3.1.1 with one small exception: previously one could override a ChildCellProperty in a derived class with a LockedProperty, now this is not possible anymore; instead it will raise an exception. Please check the known backwards incompatibility 3.1.2.