Examples¶
Generate Geometry¶
Coupler geometry: 1x1¶
1 2 3 4 5 6 | from SuPyModes.Geometry import Geometry, Circle
from SuPyModes.sellmeier import Fused_silica
Clad = Circle(Radi = 62.5, Position = (0,0), Index = Fused_silica(1.55))
Clad.Plot()
|
Coupler geometry: 2x2¶
1 2 3 4 5 6 | from SuPyModes.Geometry import Geometry, Fused2
from SuPyModes.sellmeier import Fused_silica
Clad = Fused2(Radius = 62.5, Fusion = 1, Index = Fused_silica(1.55))
Clad.Plot()
|
Coupler geometry: 3x3¶
1 2 3 4 5 6 | from SuPyModes.Geometry import Geometry, Circle, Fused3
from SuPyModes.sellmeier import Fused_silica
Clad = Fused3(Radius = 62.5, Fusion = 0.8, Index = Fused_silica(1.55))
Clad.Plot()
|
Coupler geometry: 4x4¶
1 2 3 4 5 6 | from SuPyModes.Geometry import Geometry, Circle, Fused4
from SuPyModes.sellmeier import Fused_silica
Clad = Fused4(Radius = 62.5, Fusion = 0.2, Index = Fused_silica(1.55))
Clad.Plot()
|
Compute indexes-coupling-adiabatic¶
1x1 Coupler¶
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | from SuPyModes.Geometry import Geometry, Circle
from SuPyModes.Solver import SuPySolver
from SuPyModes.sellmeier import Fused_silica
Clad = Circle(Radi = 62.5, Position = (0,0), Index = Fused_silica(1.0))
Core0 = Circle( Position=Clad.C[0], Radi = 4.2, Index = Fused_silica(1.0)+0.005 )
Geo = Geometry(Objects = [Clad, Core0],
Xbound = [0, 70],
Ybound = [0, 70],
Nx = 100,
Ny = 100)
Geo.Plot()
Sol = SuPySolver(Coupler=Geo)
SuperModes = Sol.GetModes(wavelength = 1.0,
Nstep = 250,
Nsol = 10,
debug = False,
Xsym = 1,
Ysym = -1 )
SuperModes.SaveFig(Directory = '1x1Coupler',
Input = ['All'],
nMax = 4)
|
2x2 Coupler¶
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | from SuPyModes.Geometry import Geometry, Fused2, Circle
from SuPyModes.Solver import SuPySolver
from SuPyModes.sellmeier import Fused_silica
Clad = Fused2(Radius = 62.5,
Fusion = 1,
Index = Fused_silica(1.55))
Core0 = Circle( Position=Clad.C[0], Radi = 4.2, Index = Fused_silica(1.55)+0.005 )
Core1 = Circle( Position=Clad.C[1], Radi = 4.2, Index = Fused_silica(1.55)+0.005 )
Geo = Geometry(Objects = [Clad, Core0, Core1],
Xbound = [-100, 100],
Ybound = [-100, 100],
Nx = 80,
Ny = 80)
Geo.Plot()
Sol = SuPySolver(Coupler=Geo)
SuperModes = Sol.GetModes(wavelength = 1.55,
Nstep = 50,
Nsol = 7,
debug = False,
ITRi = 1,
ITRf = 0.05,
tolerance = 1e-20,
error = 3,
Xsym = 0,
Ysym = 0 )
SuperModes.SaveFig(Directory = '2x2Coupler',
Input = ['All'],
nMax = 4)
|
3x3 Coupler¶
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | from SuPyModes.Geometry import Geometry, Circle, Fused3
from SuPyModes.Solver import SuPySolver
from SuPyModes.sellmeier import Fused_silica
Clad = Fused3(Radius = 62.5, Fusion = 0.8, Index = Fused_silica(1.55))
Core0 = Circle( Position=Clad.C[0], Radi = 4.2, Index = Fused_silica(1.55)+0.005 )
Core1 = Circle( Position=Clad.C[1], Radi = 4.2, Index = Fused_silica(1.55)+0.005 )
Core2 = Circle( Position=Clad.C[2], Radi = 4.2, Index = Fused_silica(1.55)+0.005 )
Geo = Geometry(Objects = [Clad, Core0, Core1, Core2],
Xbound = [-120, 120],
Ybound = [-110, 130],
Nx = 100,
Ny = 100)
Geo.Plot()
Sol = SuPySolver(Coupler=Geo)
SuperModes = Sol.GetModes(wavelength = 1.55,
Nstep = 250,
Nsol = 7,
debug = False,
ITRi = 1,
ITRf = 0.05,
tolerance = 1e-20,
error = 3,
Xsym = 0,
Ysym = 0 )
SuperModes.SaveFig(Directory = '3x3Coupler',
Input = ['All'],
nMax = 4)
|
4x4 Coupler¶
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | from SuPyModes.Geometry import Geometry, Circle, Fused4
from SuPyModes.Solver import SuPySolver
from SuPyModes.sellmeier import Fused_silica
Clad = Fused4(Radius = 62.5, Fusion = 0.8, Index = Fused_silica(1.55))
Core0 = Circle( Position=Clad.C[0], Radi = 4.2, Index = Fused_silica(1.55)+0.005 )
Core1 = Circle( Position=Clad.C[1], Radi = 4.2, Index = Fused_silica(1.55)+0.005 )
Core2 = Circle( Position=Clad.C[2], Radi = 4.2, Index = Fused_silica(1.55)+0.005 )
Core3 = Circle( Position=Clad.C[3], Radi = 4.2, Index = Fused_silica(1.55)+0.005 )
Geo = Geometry(Objects = [Clad, Core0, Core1, Core2, Core3],
Xbound = [0, 160],
Ybound = [0, 160],
Nx = 100,
Ny = 100)
Geo.Plot(
Sol = SuPySolver(Coupler=Geo)
SuperModes = Sol.GetModes(wavelength = 1.55,
Nstep = 200,
Nsol = 7,
debug = False,
ITRi = 1,
ITRf = 0.05,
tolerance = 1e-20,
error = 3,
Xsym = 1,
Ysym = -1 )
SuperModes.SaveFig(Directory='4x4Coupler',
Input = ['All'],
nMax=4)
|