SDKFrameworksAnsys

Ansys Photonics Integration

OptixLog integration philosophy for Ansys photonics simulation tools

Ansys Photonics Integration

OptixLog provides integration pathways for Ansys's comprehensive suite of optics and photonics simulation tools, including Lumerical, SPEOS, and Zemax OpticStudio.

Ansys acquired Lumerical in 2020, bringing together world-class photonics simulation capabilities under one umbrella. OptixLog aims to enhance these tools with unified experiment tracking and collaboration features.


Our Integration Philosophy

The Challenge

Ansys photonics tools are commercial, closed-source software with proprietary file formats and workflows. Unlike open-source tools (Meep, MPB), we cannot directly instrument the simulation core. This presents unique integration challenges:

AspectOpen-Source (Meep)Commercial (Ansys/Lumerical)
Code accessFull source availableProprietary
APIPython-nativelumapi (inter-process)
Data formatsNumPy/HDF5.lms, .fsp, .ldev
WorkflowScript-drivenGUI + scripting
CustomizationUnlimitedAPI-limited

Our Approach: Two Pathways

We recognize that photonics engineers using Ansys tools have different workflow preferences. OptixLog supports both:

Python API Integration

Use lumapi to script simulations and log results via OptixLog SDK

Companion App (Planned)

Desktop app that syncs simulation data directly from Lumerical tools


Python API Integration (Available Now)

For users who script their simulations using lumapi, OptixLog integrates naturally:

import lumapi
import os
from optixlog import Optixlog

# Initialize OptixLog
client = Optixlog(api_key=os.getenv("OPTIX_API_KEY"))
project = client.project(name="LumericalSimulations", create_if_not_exists=True)

# Create run
run = project.run(
    name="ring_resonator_sweep",
    config={
        "tool": "Lumerical FDTD",
        "version": "2024 R1",
        "geometry": "ring_resonator",
        "radius": 5.0
    }
)

# Run Lumerical simulation via lumapi
with lumapi.FDTD() as fdtd:
    fdtd.load("ring_resonator.fsp")
    fdtd.run()
    
    # Extract results
    transmission = fdtd.getresult("monitor", "T")
    
    # Log to OptixLog
    run.log(step=0, 
            peak_transmission=float(max(transmission["T"])),
            center_wavelength=float(transmission["lambda"][0]))

# Log visualization
run.log_matplotlib("transmission_spectrum", fig)

Pros:

  • Works today with existing SDK
  • Full programmatic control
  • Integrates with automation pipelines

Cons:

  • Requires scripting knowledge
  • Not suitable for GUI-primary workflows
  • lumapi can be finicky to set up

Companion App (Planned)

Coming Soon — The OptixLog Companion App is currently in development. This section describes our planned architecture.

For engineers who primarily use the Lumerical GUI, we're developing a companion desktop application that bridges the gap:

How It Will Work

┌─────────────────────┐      ┌──────────────────────┐      ┌─────────────────┐
│   Lumerical GUI     │      │  OptixLog Companion  │      │  OptixLog Cloud │
│   (FDTD, MODE...)   │◄────►│    (System Tray)     │─────►│                 │
│                     │      │                      │      │                 │
│  • Run simulations  │      │  • Monitor .fsp/.lms │      │  • Store runs   │
│  • Save results     │      │  • Extract metrics   │      │  • Visualize    │
│  • Export data      │      │  • Sync on demand    │      │  • Compare      │
└─────────────────────┘      └──────────────────────┘      └─────────────────┘

Planned Features

  1. System Tray Application

    • Lightweight background process
    • Available for Windows and Linux
    • Minimal resource usage
  2. Automatic File Monitoring

    • Watch project directories for simulation completions
    • Parse .fsp, .lms, .ldev files
    • Extract key metrics and results
  3. One-Click Sync

    • Press "Sync" to upload current session
    • Selective sync for specific simulations
    • Batch upload for sweeps
  4. Configuration

    • Set API key once
    • Configure watched directories
    • Set default project mappings

Technical Requirements (Planned)

# companion-config.yaml
api_key: "your_optixlog_api_key"
watch_directories:
  - "C:/Users/engineer/Lumerical Projects"
  - "/home/engineer/simulations"
default_project: "Lumerical Experiments"
auto_sync: false  # Manual sync preferred

Lumerical Product Suite

Ansys Lumerical offers specialized tools for different aspects of photonics design:


Why Integrate with OptixLog?

Even with Lumerical's built-in project management, OptixLog adds value:

FeatureLumerical NativeWith OptixLog
Version controlManual file savesAutomatic run tracking
Parameter comparisonSide-by-side windowsUnified comparison dashboard
Team collaborationFile sharingReal-time shared workspace
Cross-tool trackingSeparate per toolUnified across FDTD/MODE/etc.
Automationlumapi scriptsSDK + CI/CD integration
Long-term storageLocal filesCloud-backed archive

Getting Started

Choose your integration path:

For Script-Based Workflows

  1. Install the OptixLog SDK: pip install optixlog
  2. Set up lumapi for your Lumerical installation
  3. Follow the tool-specific guides below

For GUI-Based Workflows

  1. Sign up for early access to the Companion App
  2. We'll notify you when the beta is available
  3. Installation will be a single executable

Other Ansys Optics Tools (Planned)

Coming Soon — Integration with SPEOS and Zemax OpticStudio is planned for 2025.


Next Steps

On this page