Facilitate advanced waveguide layout definitions and optimization tasks via a powerful Python interface
Model straight and bent waveguides and fibers made of dispersive, anisotropic, and lossy materials
Model multi-mode, multi-core, and photonic crystal optical fibers
Model uni- and bidirectional electromagnetic field propagation and scattering matrices for 2D and 3D photonic devices
Verify cross-sections and device layouts and analyze results using advanced and highly customizable visualization capabilities
Integrate with the circuit-level simulator VPIcomponentMaker Photonic Circuits
Powerful Object-Oriented Python Interface
Python provides easy to learn and feature-rich object-oriented programming environment
User-friendly Jupyter Notebook and Juypter Lab environments allow combining interactive simulation scripts with results, figures, problem descriptions, and equations
Integration with the SciPy – ecosystem of Python open-source libraries enables advanced
visualization and mathematical, scientific, and engineering computations
Full-Vectorial Finite-Difference Optical Mode Solvers
Full-vectorial and semi-vectorial finite-difference 2D mode solvers for straight and bent anisotropic and isotropic channel waveguides and fibers
Specialized finite-difference 1D mode solver for straight and bent planar waveguides
Support of nondiagonal anisotropy for straight waveguides
Handling of electric field singularities near sharp corners of plasmonic and high-index contrast waveguides
Calculation of guided and leaky modes (leakage to substrate, leakage due to bending)
Support of perfectly matched layer (PML) boundaries
Symmetric perfect electric or magnetic conductor (PEC, PMC) boundary conditions
BPM and EME Solvers for Modeling Photonic Devices
Calculation of electromagnetic field propagation in 2D and 3D photonic devices
Extraction of scattering matrices for multi-port photonic devices
Support of arbitrary excitation sources:
• Port modes and their superpositions
• Gaussian beams and plane waves
• User-defined fields
Beam Propagation Method (BPM)
Full-vectorial finite-difference 2D and 3D BPM schemes
Uni-directional field propagation
Paraxial and wide-angle approximations
Absorbing PMLs and transparent boundary conditions
Efficient for devices with low refractive index contrast and smoothly varying cross-sections
Application examples: tapers, S-bends, directional couplers, Y-splitters
Eigenmode Expansion (EME) Method
Based on full-vectorial finite-difference mode solvers
Bi-directional field propagation handling back reflections
Efficient for device length optimization, devices with high refractive index contrast and step-like varying cross-sections
Application examples: multi-mode interference (MMI) couplers and reflectors, waveguide-based polarization and mode converters
Dispersive, Lossy and Anisotropic Optical Materials
Single-line definition of dispersionless lossy optical materials
Native support of Sellmeier, Lorentz-Drude, Tauc-Lorentz, and Cody-Lorentz models of dispersive materials
Easy definition of arbitrary measured and analytical frequency dependences for refractive index or dielectric permittivity, absorption, and thermo-optic coefficient
Easy definition of dispersive anisotropic optical materials (including gyrotropic birefringence and magneto-optic effect)
Easy definition of dispersive graded-index optical materials for modeling graded-index fibers and diffused waveguides
Library of predefined dispersive and thermo-optic materials (Air, Silicon, Silica, Si3N4, InP, LiNbO3, and standard metals)
Customizable Nonuniform Finite-Difference Meshing
Built-in adaptive quasi-uniform mesh
Uniform, quasi-uniform, and stretched meshes in user-defined layout areas
Arbitrary user-defined nonuniform meshes
Sub-pixel averaging of discretized dielectric constant
Flexible Layouts for Waveguides, Fibers and 3D Devices
Predefined 2D shapes: finite-area (circle, ellipse, rectangle, trapezium, polygon) and infinite-area (plane, half-plane, plane sector, layer, half-layer)
Predefined 3D shapes: finite-volume (cuboid, prism, cylinder, sphere) and infinite-volume (space, half-space, slab, half-slab)
Creating new complex 2D shapes by combining and modifying predefined shapes using Boolean operations, scaling, rotating, and mirroring
Creating new arbitrarily complex 3D shapes by loading them from STL files
Easy creation of arbitrarily curved (including vertically shifted) and tapered waveguides and fibers by parametric extrusion of the given cross-section along a user-defined path
Custom graded-index layout objects for doped fibers and diffused waveguides
Advanced visualization of 2D and 3D shapes, layouts, and layout cross-sections
Parametric Modeling with Automated Sweeps
New interface class for mode solvers
Easy sweeping of wavelength and one more arbitrary model parameter (e.g., waveguide width, bend radius, mesh resolution, or refractive index)
Automated fitting or interpolation of sweep results
Plotting a mode property vs. the sweep parameter is easy—correct axis labels and legend entries are created automatically
Mode Properties Analysis
Immediate access to dispersive waveguide properties (group mode index, group velocity dispersion, and dispersion slope) as well as mode attenuation, effective mode area, and vectorial mode fields
Easy calculation of mode expansion coefficients, mode overlap integrals, optical coupling efficiency, mode power, and other characteristics
Electric and magnetic fields are Python objects natively supporting mathematical operations such as field superposition and scaling, scalar and vector products, etc.
Advanced Plotting Capabilities
Built-in field interpolation and visualization
Single-line plot methods for a quick overview of results
Highly configurable field plots supporting field lines, contour lines, density plots, etc.
Access to underlying Matplotlib objects for additional plot customization
Interoperability and Data Export
Export guided mode properties and device scattering matrices for use in VPIcomponentMaker Photonic Circuits
Save your results (guided modes and fields) to reuse them later without recalculation
Utilize Python's power and flexibility to postprocess and export results for the desired target application