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()
_images/Geometry:1x1coupler.png
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()
_images/Geometry:2x2coupler.png
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()
_images/Geometry:3x3coupler.png
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()
_images/Geometry:4x4coupler.png

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)
_images/Full:1x1Coupler_profile.png _images/Full:1x1Coupler_index.png _images/Full:1x1Coupler_coupling.png _images/Full:1x1Coupler_adiabatic.png _images/Full:1x1Coupler_fields.png
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)
_images/Full:2x2Coupler_profile.png _images/Full:2x2Coupler_index.png _images/Full:2x2Coupler_coupling.png _images/Full:2x2Coupler_adiabatic.png _images/Full:2x2Coupler_fields.png
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)
_images/Full:3x3Coupler_profile.png _images/Full:3x3Coupler_index.png _images/Full:3x3Coupler_coupling.png _images/Full:3x3Coupler_adiabatic.png _images/Full:3x3Coupler_fields.png
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)
_images/Full:4x4Coupler_profile.png _images/Full:4x4Coupler_index.png _images/Full:4x4Coupler_coupling.png _images/Full:4x4Coupler_adiabatic.png _images/Full:4x4Coupler_fields.png