MCPcopy Create free account
hub / github.com/NanoComp/meep / multilayer_stack

Function multilayer_stack

python/examples/adjoint_optimization/multilayer_opt.py:146–230  ·  view source on GitHub ↗

Sets up the adjoint optimization of a multilayer stack. Returns: A `meep.adjoint.Optimization` callable object.

()

Source from the content-addressed store, hash-verified

144
145
146def multilayer_stack() -> mpa.OptimizationProblem:
147 """Sets up the adjoint optimization of a multilayer stack.
148
149 Returns:
150 A `meep.adjoint.Optimization` callable object.
151 """
152 pml_layers = [mp.PML(thickness=PML_UM)]
153
154 size_z_um = PML_UM + AIR_UM + DESIGN_REGION_UM.z + AIR_UM + PML_UM
155 cell_size = mp.Vector3(0, 0, size_z_um)
156
157 frequency_center = np.mean(frequencies)
158
159 # Set source bandwidth to be larger than the range of design wavelengths.
160 frequency_width = 1.2 * (np.max(frequencies) - np.min(frequencies))
161
162 src_cmpt = mp.Ex
163 src_pt = mp.Vector3(0, 0, -0.5 * size_z_um + PML_UM)
164 sources = [
165 mp.Source(
166 mp.GaussianSource(frequency_center, fwidth=frequency_width),
167 component=src_cmpt,
168 center=src_pt,
169 )
170 ]
171
172 mat_1 = mp.Medium(index=N_LAYER[0])
173 mat_2 = mp.Medium(index=N_LAYER[1])
174
175 matgrid = mp.MaterialGrid(
176 mp.Vector3(0, 0, NZ_SIM_GRID),
177 mat_1,
178 mat_2,
179 weights=np.ones(NZ_SIM_GRID),
180 do_averaging=False,
181 )
182
183 matgrid_region = mpa.DesignRegion(
184 matgrid,
185 volume=mp.Volume(center=mp.Vector3(), size=DESIGN_REGION_UM),
186 )
187
188 geometry = [
189 mp.Block(
190 material=matgrid, size=matgrid_region.size, center=matgrid_region.center
191 )
192 ]
193
194 sim = mp.Simulation(
195 resolution=RESOLUTION_UM,
196 cell_size=cell_size,
197 dimensions=1,
198 boundary_layers=pml_layers,
199 sources=sources,
200 geometry=geometry,
201 )
202
203 obj_args = [

Callers 1

multilayer_opt.pyFile · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected