Waveguide InputΒΆ

Learning targets

  • Transparent boundary conditions in 3D

  • Inhomogeneous exterior domain: waveguides and layered media

  • Boolean Difference

This example describes a computational domain with transparent boundary conditions at all sides. In this case, waveguides are included some of which touch the boundary of the computational domain, and which are modeled to extend also to the exterior domain. Further, a substrate is included which also extends to the exterior domain.

The following figure shows an image of parts of the geometry and mesh:

_images/ex3d_waveguide_input_mesh.png

The waveguides exhibit a sidewall angle for the vertical flanks. This is achieved by a normal displacement of the waveguide structure during the extrusion process. To ease this we use the Boolean difference operator to form the ring resonator, so that we can apply the normal shift on the entire ring composed from the different geometrical primitives. For the straight waveguide adjacent to the ring we only apply the displacements on segments which are not extended to the exterior domain. Here, a SegmentNormalDisplacement is used in place of the NormalDisplacement.

Input Files

  • layout.jcm [ASCII]

      1
      2Layout3D { 
      3  Name = "TutorialExample3D" 
      4  UnitOfLength = 1e-06 
      5  
      6  MeshOptions {
      7    MaximumSideLength = 1 
      8    MinimumMeshAngle = 18 
      9
     10  }
     11  Extrusion {
     12    Objects {
     13      Parallelogram {  
     14        DomainId = 10  
     15        Priority = ComputationalDomain
     16        Name = "ComputationalDomain"
     17        Width = 14
     18        Height = 14
     19        GlobalPosition = [-5 0]
     20        Boundary { 
     21          Class = Transparent 
     22        } 
     23      } 
     24      
     25      Parallelogram {  
     26        Name = "Waveguide"  
     27        DomainId = 20  
     28        Priority = 1 
     29        Width = 0.5
     30        Height = 14
     31        SegmentNormalDisplacement {           
     32          Segment = [2 4]
     33          Value {
     34            PiecewiseLinear {
     35              AtInterface {
     36                Interface = 1              
     37                Value = 0
     38              }
     39              AtInterface {
     40                Interface = 2
     41                Value = 0.05
     42              }
     43            }
     44          }
     45        }       
     46        MeshOptions {
     47          MaximumSideLength = 0.45 
     48        }
     49      } 
     50      
     51      BooleanOperation {
     52        Operator = Difference
     53        DomainId = 20
     54        Name = "Ring"
     55        A {
     56          Parallelogram {
     57            Name = "P"
     58            Width = 10.5
     59            Height = 2.5
     60          }
     61          CircleSector {
     62            Radius = 5.25
     63            RefineAll = 2
     64            AngleRange = [0 180]
     65            Alignment {
     66              Parent {
     67                Domain = "P"
     68                Port = North
     69              }
     70              Orientation = AntiParallel
     71            }
     72          }
     73          CircleSector {
     74            AngleRange = [0 180]
     75            Radius = 5.25
     76            RefineAll = 2
     77            Alignment {
     78              Parent {
     79                Domain = "P"
     80                Port = South
     81              }
     82              Orientation = AntiParallel
     83            }
     84          }
     85        }
     86        
     87        B {
     88          Parallelogram {
     89            Name = "P"
     90            DomainId = 25
     91            Width = 9.5
     92            Height = 2.5
     93          }
     94          CircleSector {
     95            Radius = 4.75
     96            RefineAll = 2
     97            AngleRange = [0 180]
     98            
     99            Alignment {
    100              Parent {
    101                Domain = "P"
    102                Port = North
    103              }
    104              Orientation = AntiParallel
    105            }
    106          }
    107          CircleSector {
    108            Radius = 4.75
    109            RefineAll = 2
    110            AngleRange = [0 180]
    111            Alignment {
    112              Parent {
    113                Domain = "P"
    114                Port = South
    115              }
    116              Orientation = AntiParallel
    117            }
    118          }
    119        }
    120        Alignment {
    121          Parent {
    122            Domain = "Waveguide"
    123            Port = Center
    124          }
    125          Orientation = Parallel
    126          Displacement = [-5.8 0.0]
    127        }
    128        NormalDisplacement { 
    129          PiecewiseLinear {
    130            AtInterface {
    131              Interface = 1
    132              NormalDisplacement = 0
    133            }
    134            AtInterface {
    135              Interface = 2
    136              NormalDisplacement = 0.05
    137            }
    138          }
    139        }             
    140      }
    141    }     
    142    MultiLayer { 
    143      Layer {  
    144        Thickness = 0.225 
    145        DomainIdMapping = [10 1, 20 1] 
    146      } 
    147      LayerInterface {
    148        GlobalZ = 0.0
    149      }
    150      Layer {  
    151        Thickness = 0.25 
    152        DomainIdMapping = [10 3, 20 2] 
    153      } 
    154      Layer {  
    155        Thickness = 0.225 
    156        DomainIdMapping = [10 3, 20 3] 
    157      } 
    158    } 
    159  } 
    160} 
    161  
    162  
    163  
    164