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