Multi-Physics
- FEM
Calculate the waveguide modes with the full-vector finite-element method. Requires a ‘3D’ license. The cross-section is meshed with triangles that follow every material interface, and the mesh is refined where the modes are under-resolved, as set by the
fem_*settings insettings(). The saved fields, effective indices, losses and TE fractions are the same quantities, with the same normalization, as described underFDM(), soget(),get_fields(),report(),plot()andEME()work the same way. CallingFEM()sets the profile’ssolversetting to ‘FEM’.All
boundary_conditionvalues, PMLs, expansion regions, bends, transformation-optics sections (bends, the ring and general couplers, and simulation-space transforms), lossy and anisotropic materials (including crystals tilted out of the cross-section withtheta), andheat()andelectrostatic()perturbations are supported. A symmetric or antisymmetric boundary on an axis whose mirror a crystal’s orientation breaks raises an error, since it would describe a different structure. Field plots sample the FEM solution atx_resolutionandy_resolution, andplot(mesh_display=True)shows the triangle mesh.- Parameters:
profile (str or int) – profile name to save the solved profile under, default: ‘_default’
section (str) – name of an EME section to solve a slice from, instead of the profile’s own settings/shapes, default: None
propagation_distance (float) – [nm] where along
sectionto take the cross-section, default: Noneinclude_heat (bool) – whether to include the temperature change from the most recent
heat()solve, default: Trueinclude_static (bool) – whether to apply the electro-optic (Pockels) permittivity perturbation from the most recent
electrostatic()solve, default: Trueverbose (bool) – print progress, default: True
simulation_name (str) – simulation name, default: ‘emode’
- Returns:
a dict with
field(a Field object),n_eff_tilde,TE_fraction,TE_indices,TM_indices,PML_indices,mesh(vertices,trianglesandregion, the triangle mesh solved on), andrefinement(n_eff_history,num_dofsandnum_elementsper refinement level, andstopped_by, the rule that ended refinement).
- heat
Run a steady-state thermal simulation of a waveguide cross-section. Requires a ‘3D’ license.
Warning
This function is only available under beta release. Please report any issues or bugs.
Note
Each
shape()now accepts an input parameter calledheat_only(default: False), which can be used to set additional shapes on top or bottom of the photonic layer stack. For example, commonheat_onlyshapes are the substrate and metal heater layers.Each
shape()also now accepts an input parameter calledfem_resolution(default: 500), which is used to refine the triangular mesh within certain shapes.Every material carries
thermal_conductivity(W/m·K),resistivity(Ohm·nm),dn_dT(1/K), andeps_r_dc; the defaults are1e-10, infinity,0, and1.0where no reliable published value has been entered. See the Material Database page for values and sources.- Parameters:
min_angle (float) – Minimum angle for triangular mesh. Smaller values result in a finer mesh, but can prevent the meshing algorithm from converging. Default: 30.
boundary_temperature (float) – Fixed temperature boundary condition in ‘K’ set along each perimeter indicated by
boundaries. Default: 298.boundaries (list[str]) – ‘top’, ‘bottom’, ‘left’, or ‘right’; Indicates which boundaries are set to the fixed temperature
boundary_temperature. Default: [‘bottom’].verbose (bool) – Control the display of the progress bar. Default: True.
simulation_name (str) – Simulation name. Default: ‘emode’.
- Returns:
A dictionary/struct with the mesh points (
p), mesh triangles (t),temperature,thermal_conductivity, andheat_generationarrays. It also includes theboundary_temperatureandboundariessettings.
- electrostatic
Run a steady-state electrostatic simulation of a waveguide cross-section. Requires a ‘3D’ license.
Warning
This function is only available under beta release. Please report any issues or bugs.
Note
Each
shape()also now accepts an input parameter calledvoltage(default: None), which is set to create electric field sources. Shapes withvoltageleft as None do not get a voltage boundary condition applied.Each
shape()also now accepts an input parameter calledfem_resolution(default: 500), which is used to refine the triangular mesh within certain shapes.Each material in the EMode material database now has
eps_r_dc(relative permittivity at ~1 kHz).The DC field derived here perturbs the permittivity through each material’s linear electro-optic (Pockels) tensor
r(get('<material>')['r'], m/V): \(\Delta(1/n^2)_{ij} = \sum_k r_{ijk} E_k\), then \(\Delta\varepsilon = -\varepsilon \cdot \Delta(1/n^2) \cdot \varepsilon\).FDM()applies this automatically on the next solve (include_static=Falseto skip it), the same wayheat()’s temperature field perturbs the permittivity throughdn_dT.- Parameters:
min_angle (float) – Minimum angle for triangular mesh. Smaller values result in a finer mesh, but can prevent the meshing algorithm from converging. Default: 30.
verbose (bool) – Control the display of the progress bar. Default: True.
simulation_name (str) – Simulation name. Default: ‘emode’.
- Returns:
A dictionary/struct with the mesh points (
p), mesh triangles (t),voltage,eps_dc_grid, the per-element electric field (Ex,Ey, in V/nm), andcentroids(element centers, in the optical window’s frame).