


{"id":403549,"date":"2025-01-05T14:08:00","date_gmt":"2025-01-05T14:08:00","guid":{"rendered":"https:\/\/innovationspace.ansys.com\/forum\/forums\/topic\/lumopt-wentizixun-2\/"},"modified":"2025-01-06T01:59:11","modified_gmt":"2025-01-06T01:59:11","slug":"lumopt-wentizixun-2","status":"publish","type":"topic","link":"https:\/\/innovationspace.ansys.com\/forum\/forums\/topic\/lumopt-wentizixun-2\/","title":{"rendered":"lumopt \u95ee\u9898\u54a8\u8be2"},"content":{"rendered":"<p>&lt;p&gt;&lt;p&gt;\u8001\u5e08\u60a8\u597d\uff0c\u76ee\u524d\u6211\u6b63\u5728\u53c2\u7167\u5b98\u7f51\u6848\u4f8b&ldquo;CWDM_splitter_1310_4ch_2D_TE_topology&rdquo;\u8fdb\u884c\u5149\u5b50\u5668\u4ef6\u7684\u9006\u5411\u8bbe\u8ba1\u5de5\u4f5c\uff0c\u76ee\u524d\u9047\u5230\u4e86\u4e00\u4e2a\u95ee\u9898\uff0c\u8fd8\u8bf7\u8001\u5e08\u89e3\u7b54\u4e00\u4e0b\uff1a&lt;\/p&gt;&lt;p&gt;\u5b98\u7f51\u6848\u4f8b\u7ed9\u7684\u662f2D\u4eff\u771f\uff0c\u6211\u6240\u8fdb\u884c\u7684\u662f3D\u4eff\u771f\u3002\u518d\u8fdb\u884cbase_simulation\u5efa\u6a21\u65f6\uff0c\u6211\u662f\u5b8c\u5168\u53c2\u8003\u6848\u4f8b\u4e2d\u7684\u8bbe\u7f6e\u8fdb\u884c\u7684\uff0c\u5373\u5728\u8bbe\u7f6efom\u76d1\u89c6\u5668\u65f6\uff0c\u4f1a\u5728\u76f8\u5e94\u4f4d\u7f6e\u5904\u8bbe\u7f6e\u4e00\u4e2amesh\uff0cmesh\u7684\u8de8\u5ea6\u521a\u597d\u4e3a2\u4e2adx\u3002\u4f46\u662f\u6211\u5728\u8fd0\u884c\u4eff\u771f\u65f6\uff0c\u4f1a\u51fa\u73b0\u8b66\u544a\uff1a&ldquo;&lt;span data-slate-string=&#8221;true&#8221;&gt;WARNING: The monitor &#8220;fom_1&#8243; is not aligned with the grid. Its distance to the nearest mesh point is [2.00000159e-07]. &lt;\/span&gt;&lt;span data-slate-string=&#8221;true&#8221;&gt;This can introduce small phase errors which sometimes result in inaccurate gradients.&lt;\/span&gt;&rdquo;\u3002\u6211\u4e5f\u5df2\u7ecf\u68c0\u67e5\u4e86\u6240\u8bbe\u7f6e\u76d1\u89c6\u5668\u7684\u4f4d\u7f6e\u548cmesh\u7684\u4f4d\u7f6e\uff0c\u53d1\u73b0\u6ca1\u6709\u95ee\u9898\uff0c\u76d1\u89c6\u5668\u7684\u4f4d\u7f6e\u521a\u597d\u5904\u4e8emesh\u7684\u4e2d\u5fc3\u3002&lt;\/p&gt;&lt;p&gt;\u4e0d\u6e05\u695a\u7a76\u7adf\u662f\u4ec0\u4e48\u539f\u56e0\u9020\u6210\u7684\uff0c\u8fd8\u8bf7\u8001\u5e08\u4e88\u4ee5\u89e3\u7b54\u3002\u4e0b\u9762\u662f\u6211\u6240\u5199\u7684\u811a\u672c\u3002\u795d\u60a8\u8eab\u4f53\u5065\u5eb7\uff0c\u5de5\u4f5c\u987a\u5229\uff01&lt;\/p&gt;&lt;p&gt;switchtolayout;&lt;\/p&gt;&lt;p&gt;selectall;&lt;\/p&gt;&lt;p&gt;delete;&lt;\/p&gt;&lt;p&gt;&nbsp;&lt;\/p&gt;&lt;p&gt;## SIM PARAMS&lt;\/p&gt;&lt;p&gt;L_block=6e-6;&lt;\/p&gt;&lt;p&gt;H_block=6e-6;&lt;\/p&gt;&lt;p&gt;num_of_outport=4;&lt;\/p&gt;&lt;p&gt;num_of_input=num_of_outport;&lt;\/p&gt;&lt;p&gt;with_of_input=2.0e-6;&lt;\/p&gt;&lt;p&gt;length_input=5e-6;&lt;\/p&gt;&lt;p&gt;length_output=5e-6;&lt;\/p&gt;&lt;p&gt;h_si=220e-9;&lt;\/p&gt;&lt;p&gt;inputmode=[1,2,3,4];&lt;\/p&gt;&lt;p&gt;&nbsp;&lt;\/p&gt;&lt;p&gt;opt_size_x=L_block;&lt;\/p&gt;&lt;p&gt;opt_size_y=H_block;&lt;\/p&gt;&lt;p&gt;opt_size_z=h_si;&lt;\/p&gt;&lt;p&gt;&nbsp;&lt;\/p&gt;&lt;p&gt;size_x=opt_size_x+1e-6;&lt;\/p&gt;&lt;p&gt;size_y=opt_size_y+1e-6;&lt;\/p&gt;&lt;p&gt;size_z=2e-6;&lt;\/p&gt;&lt;p&gt;&nbsp;&lt;\/p&gt;&lt;p&gt;with_of_output=0.5e-6;&lt;\/p&gt;&lt;p&gt;gap_of_outport=H_block\/num_of_outport;&lt;\/p&gt;&lt;p&gt;&nbsp;&lt;\/p&gt;&lt;p&gt;wg_index = 3.48;&lt;\/p&gt;&lt;p&gt;bg_index = 1.44;&lt;\/p&gt;&lt;p&gt;&nbsp;&lt;\/p&gt;&lt;p&gt;dx = 20e-9;&lt;\/p&gt;&lt;p&gt;&nbsp;&lt;\/p&gt;&lt;p&gt;addfdtd; ##&lt;\/p&gt;&lt;p&gt;set(&#8220;dimension&#8221;,2); # 1 = 2D, 2 = 3D&lt;\/p&gt;&lt;p&gt;set(&#8220;x&#8221;,0);&lt;\/p&gt;&lt;p&gt;set(&#8220;x span&#8221;,size_x);&lt;\/p&gt;&lt;p&gt;set(&#8220;y&#8221;,0);&lt;\/p&gt;&lt;p&gt;set(&#8220;y span&#8221;,size_y);&lt;\/p&gt;&lt;p&gt;set(&#8220;z&#8221;,0);&lt;\/p&gt;&lt;p&gt;set(&#8220;z span&#8221;,size_z);&lt;\/p&gt;&lt;p&gt;set(&#8220;mesh accuracy&#8221;,3);&lt;\/p&gt;&lt;p&gt;set(&#8220;simulation time&#8221;,4000e-15);&lt;\/p&gt;&lt;p&gt;set(&#8220;index&#8221;,bg_index);&lt;\/p&gt;&lt;p&gt;set(&#8220;auto shutoff min&#8221;,1e-7);&lt;\/p&gt;&lt;p&gt;&nbsp;&lt;\/p&gt;&lt;p&gt;&nbsp;&lt;\/p&gt;&lt;p&gt;addrect; ##&lt;\/p&gt;&lt;p&gt;set(&#8220;name&#8221;,&#8221;input&#8221;);&lt;\/p&gt;&lt;p&gt;set(&#8220;x max&#8221;, -L_block\/2);&lt;\/p&gt;&lt;p&gt;set(&#8220;x min&#8221;, -L_block\/2-length_input);&lt;\/p&gt;&lt;p&gt;set(&#8220;y min&#8221;, -H_block\/2);&lt;\/p&gt;&lt;p&gt;set(&#8220;y max&#8221;,-H_block\/2+with_of_input);&lt;\/p&gt;&lt;p&gt;set(&#8220;z&#8221;, 0);&lt;\/p&gt;&lt;p&gt;set(&#8220;z span&#8221;, h_si);&lt;\/p&gt;&lt;p&gt;set(&#8220;index&#8221;,wg_index);&lt;\/p&gt;&lt;p&gt;&nbsp;&lt;\/p&gt;&lt;p&gt;for (index=linspace(-(num_of_outport-1)\/2,(num_of_outport-1)\/2,num_of_outport)){&lt;\/p&gt;&lt;p&gt;addrect; ##&lt;\/p&gt;&lt;p&gt;set(&#8220;index&#8221;,wg_index);&lt;\/p&gt;&lt;p&gt;#set(&#8220;material&#8221;,&#8221;Si (Silicon) &#8211; Palik&#8221;);&lt;\/p&gt;&lt;p&gt;set(&#8220;z&#8221;, 0);&lt;\/p&gt;&lt;p&gt;set(&#8220;z span&#8221;, h_si);&lt;\/p&gt;&lt;p&gt;set(&#8220;x min&#8221;, L_block\/2);&lt;\/p&gt;&lt;p&gt;set(&#8220;x max&#8221;, L_block\/2+length_output);&lt;\/p&gt;&lt;p&gt;set(&#8220;y&#8221;, index*gap_of_outport);&lt;\/p&gt;&lt;p&gt;set(&#8220;y span&#8221;,with_of_output);&lt;\/p&gt;&lt;p&gt;}&lt;\/p&gt;&lt;p&gt;&nbsp;&lt;\/p&gt;&lt;p&gt;addmode;##&lt;\/p&gt;&lt;p&gt;set(&#8220;name&#8221;,&#8221;source&#8221;);&lt;\/p&gt;&lt;p&gt;set(&#8220;direction&#8221;,&#8221;Forward&#8221;);&lt;\/p&gt;&lt;p&gt;set(&#8220;injection axis&#8221;, &#8220;x-axis&#8221;);&lt;\/p&gt;&lt;p&gt;set(&#8220;x&#8221;, -size_x\/2+0.2e-6);&lt;\/p&gt;&lt;p&gt;set(&#8220;z&#8221;,0);&lt;\/p&gt;&lt;p&gt;set(&#8220;z span&#8221;,2e-6);&lt;\/p&gt;&lt;p&gt;set(&#8220;y&#8221;, -H_block\/2+with_of_input\/2);&lt;\/p&gt;&lt;p&gt;set(&#8220;y span&#8221;,5e-6);&lt;\/p&gt;&lt;p&gt;set(&#8220;wavelength start&#8221;,1.55e-6); ##&lt;\/p&gt;&lt;p&gt;set(&#8220;wavelength stop&#8221;,1.55e-6);&lt;\/p&gt;&lt;p&gt;updatesourcemode(1);&lt;\/p&gt;&lt;p&gt;&nbsp;&lt;\/p&gt;&lt;p&gt;&nbsp;&lt;\/p&gt;&lt;p&gt;addpower;#&lt;\/p&gt;&lt;p&gt;set(&#8220;name&#8221;,&#8221;opt_fields&#8221;);&lt;\/p&gt;&lt;p&gt;set(&#8216;monitor type&#8217;,&#8217;3D&#8217;); # 1 = point, 2 = linear x, 3 = linear y, 4 = linear z, 5 = 2D x-normal, 6 = 2D y-normal, 7 = 2D z-normal, 8 = 3D&lt;\/p&gt;&lt;p&gt;set(&#8220;z&#8221;,0);&lt;\/p&gt;&lt;p&gt;set(&#8220;z span&#8221;,opt_size_z);&lt;\/p&gt;&lt;p&gt;set(&#8220;x&#8221;, 0);&lt;\/p&gt;&lt;p&gt;set(&#8220;x span&#8221;,opt_size_x);&lt;\/p&gt;&lt;p&gt;set(&#8220;y&#8221;, 0);&lt;\/p&gt;&lt;p&gt;set(&#8220;y span&#8221;,opt_size_y);&lt;\/p&gt;&lt;p&gt;&nbsp;&lt;\/p&gt;&lt;p&gt;&nbsp;&lt;\/p&gt;&lt;p&gt;index=linspace(-(num_of_outport-1)\/2,(num_of_outport-1)\/2,num_of_outport);&lt;\/p&gt;&lt;p&gt;for (xnum=1:num_of_outport){&lt;\/p&gt;&lt;p&gt;addpower;&lt;\/p&gt;&lt;p&gt;set(&#8220;name&#8221;,&#8221;fom_&#8221;+num2str(xnum));&lt;\/p&gt;&lt;p&gt;set(&#8220;monitor type&#8221;,5); # 1 = point, 2 = linear x, 3 = linear y, 4 = linear z, 5 = 2D x-normal, 6 = 2D y-normal, 7 = 2D z-normal, 8 = 3D&lt;\/p&gt;&lt;p&gt;set(&#8220;x&#8221;, size_x\/2-0.2e-6);&lt;\/p&gt;&lt;p&gt;set(&#8220;z&#8221;,0);&lt;\/p&gt;&lt;p&gt;set(&#8220;z span&#8221;,2e-6);&lt;\/p&gt;&lt;p&gt;set(&#8220;y&#8221;, index(xnum)*gap_of_outport);&lt;\/p&gt;&lt;p&gt;set(&#8220;y span&#8221;,1.5e-6);&lt;\/p&gt;&lt;p&gt;if(1){&lt;\/p&gt;&lt;p&gt;addmodeexpansion;##&lt;\/p&gt;&lt;p&gt;set(&#8220;name&#8221;,&#8221;mode_expansion&#8221;+num2str(xnum));&lt;\/p&gt;&lt;p&gt;set(&#8220;monitor type&#8221;,1); # 1 = 2D x-normal, 2 = 2D y-normal&lt;\/p&gt;&lt;p&gt;set(&#8220;x&#8221;, size_x\/2-0.2e-6);&lt;\/p&gt;&lt;p&gt;set(&#8220;z&#8221;,0);&lt;\/p&gt;&lt;p&gt;set(&#8220;z span&#8221;,2e-6);&lt;\/p&gt;&lt;p&gt;set(&#8220;y&#8221;, index(xnum)*gap_of_outport);&lt;\/p&gt;&lt;p&gt;set(&#8220;y span&#8221;,1.5e-6);&lt;\/p&gt;&lt;p&gt;select(&#8220;mode_expansion&#8221;+num2str(xnum));&lt;\/p&gt;&lt;p&gt;setexpansion(&#8220;input&#8221;, &#8220;fom_&#8221;+num2str(xnum));&lt;\/p&gt;&lt;p&gt;set(&#8220;mode selection&#8221;,&#8221;user select&#8221;); # use the &#8216;user select&#8217; option&lt;\/p&gt;&lt;p&gt;seteigensolver(&#8220;use max index&#8221;,1); # specify a custom value for &#8216;n'&lt;\/p&gt;&lt;p&gt;updatemodes(1);&lt;\/p&gt;&lt;p&gt;}&lt;\/p&gt;&lt;p&gt;&nbsp;&lt;\/p&gt;&lt;p&gt;addmesh; ##&lt;\/p&gt;&lt;p&gt;set(&#8220;name&#8221;,&#8221;fom_&#8221;+num2str(xnum)+&#8221;_mesh&#8221;);&lt;\/p&gt;&lt;p&gt;set(&#8220;set maximum mesh step&#8221;,1);&lt;\/p&gt;&lt;p&gt;set(&#8220;override x mesh&#8221;,1);&lt;\/p&gt;&lt;p&gt;set(&#8220;dx&#8221;,dx);&lt;\/p&gt;&lt;p&gt;set(&#8220;override y mesh&#8221;,0);&lt;\/p&gt;&lt;p&gt;set(&#8220;override z mesh&#8221;,0);&lt;\/p&gt;&lt;p&gt;set(&#8220;x&#8221;,size_x\/2-0.2e-6);&lt;\/p&gt;&lt;p&gt;set(&#8220;x span&#8221;,2*dx);&lt;\/p&gt;&lt;p&gt;set(&#8220;y&#8221;,index(xnum)*gap_of_outport);&lt;\/p&gt;&lt;p&gt;set(&#8220;y span&#8221;,1.5e-6);&lt;\/p&gt;&lt;p&gt;set(&#8220;z&#8221;,0);&lt;\/p&gt;&lt;p&gt;set(&#8220;z span&#8221;,size_z);&lt;\/p&gt;&lt;p&gt;&nbsp;&lt;\/p&gt;&lt;p&gt;}&lt;\/p&gt;&lt;p&gt;&nbsp;&lt;\/p&gt;&lt;p&gt;&nbsp;&lt;\/p&gt;&lt;p&gt;## For visualization later&lt;\/p&gt;&lt;p&gt;addindex;&lt;\/p&gt;&lt;p&gt;set(&#8216;name&#8217;,&#8217;global_index&#8217;);&lt;\/p&gt;&lt;p&gt;set(&#8216;x min&#8217;,-size_x\/2);&lt;\/p&gt;&lt;p&gt;set(&#8216;x max&#8217;,size_x\/2);&lt;\/p&gt;&lt;p&gt;set(&#8216;y min&#8217;,-size_y\/2);&lt;\/p&gt;&lt;p&gt;set(&#8216;y max&#8217;,size_y\/2);&lt;\/p&gt;&lt;p&gt;set(&#8216;z min&#8217;,-size_z\/2);&lt;\/p&gt;&lt;p&gt;set(&#8216;z max&#8217;,size_z\/2);&lt;\/p&gt;&lt;p&gt;set(&#8216;enabled&#8217;,false);&lt;\/p&gt;&lt;p&gt;&nbsp;&lt;\/p&gt;&lt;p&gt;## Optional: Naive design which can be used as initial guess&lt;\/p&gt;&lt;p&gt;index=linspace(-(num_of_outport-1)\/2,(num_of_outport-1)\/2,num_of_outport);&lt;\/p&gt;&lt;p&gt;addstructuregroup;&lt;\/p&gt;&lt;p&gt;set(&#8220;name&#8221;,&#8221;initial_guess&#8221;);&lt;\/p&gt;&lt;p&gt;for( i=1:num_of_outport ) {&lt;\/p&gt;&lt;p&gt;addwaveguide;&lt;\/p&gt;&lt;p&gt;set(&#8220;name&#8221;,&#8221;bend&#8221;+num2str(i));&lt;\/p&gt;&lt;p&gt;set(&#8220;base width&#8221;,500e-9);&lt;\/p&gt;&lt;p&gt;set(&#8220;base height&#8221;,220e-9);&lt;\/p&gt;&lt;p&gt;set(&#8220;base angle&#8221;,90);&lt;\/p&gt;&lt;p&gt;poles = [-opt_size_x\/2,-H_block\/2+with_of_input-i*with_of_input\/4+with_of_input\/8;&lt;\/p&gt;&lt;p&gt;0,-H_block\/2+with_of_input-i*with_of_input\/4+with_of_input\/8;&lt;\/p&gt;&lt;p&gt;0,index(num_of_outport-(i-1))*gap_of_outport;&lt;\/p&gt;&lt;p&gt;opt_size_x\/2,index(num_of_outport-(i-1))*gap_of_outport];&lt;\/p&gt;&lt;p&gt;set(&#8220;poles&#8221;,poles);&lt;\/p&gt;&lt;p&gt;set(&#8220;index&#8221;,wg_index);&lt;\/p&gt;&lt;p&gt;addtogroup(&#8220;initial_guess&#8221;);&lt;\/p&gt;&lt;p&gt;}&lt;\/p&gt;&lt;p&gt;&nbsp;&lt;\/p&gt;&lt;p&gt;&nbsp;&lt;\/p&gt;&lt;p&gt;&nbsp;&lt;\/p&gt;&lt;p&gt;&nbsp;&lt;\/p&gt;&lt;\/p&gt;<\/p>\n","protected":false},"template":"","class_list":["post-403549","topic","type-topic","status-publish","hentry"],"aioseo_notices":[],"acf":[],"custom_fields":[{"0":{"_bbp_forum_id":["27835"],"_bbp_topic_id":["403549"],"_bbp_author_ip":["2001:250:4000:8246:9092:249:d0e0:9a76"],"_bbp_last_reply_id":["403824"],"_bbp_last_active_id":["403824"],"_bbp_last_active_time":["2025-01-07 03:34:05"],"_bbp_reply_count":["4"],"_bbp_reply_count_hidden":["0"],"_bbp_voice_count":["3"],"_bbp_engagement":["118177","473055","70910"],"_btv_view_count":["126"],"_bbp_topic_status":["unanswered"],"_bbp_subscription":["473055","118177","70910"],"_edit_last":["473055"],"_bbp_revision_log":["a:1:{i:403652;a:2:{s:6:\"author\";i:473055;s:6:\"reason\";s:0:\"\";}}"],"_bbp_likes_count":["1"]},"test":"m202373352hust-edu-cn"}],"_links":{"self":[{"href":"https:\/\/innovationspace.ansys.com\/forum\/wp-json\/wp\/v2\/topics\/403549","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/innovationspace.ansys.com\/forum\/wp-json\/wp\/v2\/topics"}],"about":[{"href":"https:\/\/innovationspace.ansys.com\/forum\/wp-json\/wp\/v2\/types\/topic"}],"version-history":[{"count":1,"href":"https:\/\/innovationspace.ansys.com\/forum\/wp-json\/wp\/v2\/topics\/403549\/revisions"}],"predecessor-version":[{"id":403652,"href":"https:\/\/innovationspace.ansys.com\/forum\/wp-json\/wp\/v2\/topics\/403549\/revisions\/403652"}],"wp:attachment":[{"href":"https:\/\/innovationspace.ansys.com\/forum\/wp-json\/wp\/v2\/media?parent=403549"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}