Skip to content

Commit f90995b

Browse files
authored
Merge pull request #104 from gdsfactory/add_heater_model
add heater models
2 parents d936322 + 94f8bbb commit f90995b

File tree

3 files changed

+46
-3626
lines changed

3 files changed

+46
-3626
lines changed

CHANGELOG.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,16 @@
22

33
<!-- towncrier release notes start -->
44

5+
## 0.14.0
6+
7+
- fix release flow [#102](https://github.com/gdsfactory/cspdk/pull/102)
8+
- update gdsfactory9 [#100](https://github.com/gdsfactory/cspdk/pull/100)
9+
10+
## 0.13.0
11+
12+
- add radius_loopback [#99](https://github.com/gdsfactory/cspdk/pull/99)
13+
- update gdsfactory9 [#100](https://github.com/gdsfactory/cspdk/pull/100)
14+
515
## 0.12.4
616

717
- update to gdsfactory 8.31.0

cspdk/si220/models.py

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -373,6 +373,42 @@ def heater() -> sax.SDict:
373373
raise NotImplementedError("No model for 'heater'")
374374

375375

376+
def straight_heater_metal_sc(
377+
wl: float = 1.55,
378+
neff: float = 2.34,
379+
voltage: float = 0,
380+
vpi: float = 1.0, # Voltage required for π-phase shift
381+
length: float = 10,
382+
loss: float = 0.0,
383+
) -> sax.SDict:
384+
"""Returns simple phase shifter model.
385+
386+
Args:
387+
wl: wavelength.
388+
neff: effective index.
389+
voltage: applied voltage.
390+
vpi: voltage required for a π-phase shift.
391+
length: length.
392+
loss: loss.
393+
"""
394+
# Calculate additional phase shift due to applied voltage.
395+
deltaphi = (voltage / vpi) * jnp.pi
396+
phase = 2 * jnp.pi * neff * length / wl + deltaphi
397+
amplitude = jnp.asarray(10 ** (-loss * length / 20), dtype=complex)
398+
transmission = amplitude * jnp.exp(1j * phase)
399+
return sax.reciprocal(
400+
{
401+
("o1", "o2"): transmission,
402+
("l_e1", "r_e1"): 0.0,
403+
("l_e2", "r_e2"): 0.0,
404+
("l_e3", "r_e3"): 0.0,
405+
("l_e4", "r_e4"): 0.0,
406+
}
407+
)
408+
409+
410+
straight_heater_metal_so = straight_heater_metal_sc
411+
376412
crossing_so = sm.crossing
377413
crossing_rc = sm.crossing
378414
crossing_sc = sm.crossing

0 commit comments

Comments
 (0)