Users working on complex device designs that require multiple solvers often encounter challenges understanding the steps necessary to configure and execute the required sequence of simulation. For example, the electro-optic and thermal modulators require an initial CHARGE or HEAT simulation (where a single simulation generates multiple results parameterized by the boundary conditions – e.g. contact bias), followed by an exchange of data (update the material index based on the carrier density or temperature) then a sequence of eigenmode calculations (e.g. one for each contact bias). By providing a pre-defined workflow that captures those steps and can be run completely from within the design environment, users will have the benefits such as a consistent simulation approach that can be shared within a group and better association between the model properties and results of interest and the specific application.
The workflow management tool (currently available in CHARGE and HEAT only) offers a series of pre-defined tasks (as summarized below) to enable the users to specify their desired simulation workflow, design parameters and simulation results entirely through the user interface while providing the capability to run the entire simulation workflow with a single click. Below is a list of the type of tasks can be included in a simulation workflow.
Requirements
Lumerical CHARGE, HEAT R2019a or newer
Workflow tasks
A simulation workflow defined using the workflow manager can include one or more of the following tasks as the steps of the workflow:
Task |
Purpose |
---|---|
![]() |
Running a solver |
![]() |
Post-processing data from a previous step or transferring data to the next step using scripts |
![]() |
Sweeping one or multiple parameters over a pre-defined range |
Adding a workflow to simulation
Adding a workflow to the simulation can be done through the Optimizations and Sweeps tab. To add a workflow, simply click on the "Create New Workflow" button. Once the work flow is added, tasks can be added to the workflow by selecting the desired workflow (or one of the existing tasks under the workflow) in the tree and clicking the corresponding task button from the toolbar. Once the workflow definition is complete, it can be run by clicking the
"Run" button on the toolbar.
Workflow parameters
A workflow can be used to define various parameters based on the user's and simulation's requirements and may include the following:
Parameter | Definition/Use case | Example |
---|---|---|
User parameter |
Design inputs for the device under simulation defined by the user. |
Device operation wavelength |
Model Parameter |
Referring to an object model property to be able to parse or modify that property. Changes to the parameter value will be reflected in the object model at the beginning of the task containing the parameter. |
Imported dataset index for an import object such as optical generation import which needs to be swept during the workflow execution |
Configuration Parameter |
Object model properties that are set at the beginning of the workflow execution to specified values and should remain constant during the run. Changes to a configuration value during execution will not be reflected in the state of the object model. |
Max edge length of a mesh constraint object which should be specified for each workflow but not changed between different runs to ensure consistent mesh setup |
Result |
The output of each workflow task (step) which might be used as an input for the next step(s) |
Charge dataset returned by a charge monitor which can be used by an script task to calculate index perturbation |
Note: Configuring workflows through scripts Currently it is NOT possible to configure a workflow through Lumerical scripting language and the setup has to be done via the user interface. Note that the script task is capable of running script commands for data processing and transfer purposes but not for simulation setup such as the setup scripts used in objects such as "model". |
Solver task
The solver task can be used for running a desired solver.
How to add the task to a workflow
To add a solver task to a desired workflow, simply select the workflow and click on the "Add solver task" button. The added task will be shown as a child of the selected workflow and can be reordered among the other tasks as necessary.
Task inputs
The inputs of the task can be specified under the task properties window and include the following:
- Solver: The solver to be run by the task
- Mesh only: If checked, the task will only generate the mesh for the specified solver but will not run the solver itself
Note: Solver selection The solver to be selected for this task must be first added to the simulation before selection in order to be available in the list. |
Task outputs (results)
Any outputs of the task (e.g. a result returned by a monitor object) can be specified under the Results section of the task properties window to get passed along to succeeding tasks.
Script task
The script task can typically be used for post-processing data from a previous step or transferring data to the next step using scripts.
How to add the task to a workflow
To add a script task to a desired workflow, simply select the workflow and click on the "Add script task" button. The added task will be shown as a child of the selected workflow and can be reordered among the other tasks as necessary.
Task inputs
The inputs of the task can be specified under the Inputs tab of the task properties window and include the following:
- User parameters: User-defined parameters used as input for the scripts run by the task
- Parent parameters: Parameters taken from the workflow that the task belongs to
- Preceding results: Results obtained from a preceding task
Note: Modifying parent variables during the task If the script task includes actions that modify the parent parameters, the parameters will not get updated in the model until the entire script task is run. |
Task outputs (results)
Any outputs of the task (e.g. a variable obtained from a script) can be specified under the Results tab of the task properties window to get passed along to succeeding tasks.
Script
The scripts to be run by the task can be included under the Script tab of the task properties window. The output of the script including any possible errors can be obtained by clicking the Calculate Results button in the same tab.
Note: Supported scripts for script task Note that not all script commands available in Lumerical scripting environment are supported to be run by the script task. For example, script commands used for simulation setup (not analysis) such as set are not supported. |
Example: Data transfer between objects using script task
The script task can be used to transfer data between simulation objects during a workflow. Below is an example which uses the script task to transfer charge data from a charge monitor in CHARGE solver to the nkimport object in FEEM solver:
1. The script task takes the charge results from a preceding solver task for CHARGE solver:
2. The task uses scripts to save the charge data in a MATLAB file:
3. The nkimport object is linked to the file containing the data with "automatic reload" option enabled using the parameters set by the workflow. This means that every time the workflow is run, the data will be updated inside the nkimport object:
Sweep task
The sweep task can typically be used for sweeping one or multiple parameters over a pre-defined range.
How to add the task to a workflow
To add a sweep task to a desired workflow, simply select the workflow and click on the "Add script task" button. The added task will be shown as a child of the selected workflow and can be reordered among the other tasks as necessary.
Task inputs (parameters)
The inputs of the task can be specified under the task properties window and include the following:
- Solver: The solver to be used for the sweep
- Parameters list: List of parameters to be swept during the task. The parameter can only be a parent parameter from the workflow and cannot be a parameter directly selected from the simulation model
- Type: The type of sweep which could be over a range with equal intervals or specific values
- Number of points: The number of points the parameter(s) should be swept over
Note: Solver selection The solver to be selected for this task must be first added to the simulation before selection in order to be available in the list. |
Task outputs (results)
Any outputs of the task (e.g. a result dataset returned by a monitor object) can be specified under the Results section of the task properties window to get passed along to succeeding tasks.
Advanced
Resave files after analysis: Optionally, resave the project files after the analysis scripts have been run. This can be helpful when the analysis scripts are slow to run.
Note: The "save to files" and "load from files" options are NOT available in a workflow sweep task as opposed to a standalone parameter sweep |