


{"id":346928,"date":"2024-01-29T06:08:26","date_gmt":"2024-01-29T06:08:26","guid":{"rendered":"\/forum\/forums\/reply\/346928\/"},"modified":"2024-01-29T06:08:26","modified_gmt":"2024-01-29T06:08:26","slug":"346928","status":"publish","type":"reply","link":"https:\/\/innovationspace.ansys.com\/forum\/forums\/reply\/346928\/","title":{"rendered":"Reply To: Calculate EQE in CHARGE"},"content":{"rendered":"<p>&lt;p&gt;Hello, khashayar. It&#8217;s been a long time.&nbsp;&lt;\/p&gt;&lt;p&gt;Your replies were helpful for me and I have tested a lot of simulations.&lt;br&gt;Here&#8217;s a new question with my latest progress.&lt;\/p&gt;&lt;p&gt;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&lt;\/p&gt;&lt;p class=&#8221;MsoNormal&#8221;&gt;&lt;span lang=&#8221;EN-US&#8221;&gt;I have a question about running CHARGE simulation with scripts.&lt;\/span&gt;&lt;\/p&gt;&lt;p class=&#8221;MsoNormal&#8221;&gt;&lt;span lang=&#8221;EN-US&#8221;&gt;&nbsp;&lt;\/span&gt;&lt;\/p&gt;&lt;p class=&#8221;MsoNormal&#8221;&gt;&lt;span lang=&#8221;EN-US&#8221;&gt;My final goal in this simulation is plotting spectral EQE at 300~1100 nm wavelength range.&lt;\/span&gt;&lt;\/p&gt;&lt;p class=&#8221;MsoNormal&#8221;&gt;&lt;span lang=&#8221;EN-US&#8221;&gt;I&rsquo;m now testing my simulation including script file at 300 ~ 305 nm.&lt;\/span&gt;&lt;\/p&gt;&lt;p class=&#8221;MsoNormal&#8221;&gt;&lt;span lang=&#8221;EN-US&#8221;&gt;The process to plot spectral EQE is as follows (Figure 1):&lt;\/span&gt;&lt;\/p&gt;&lt;p class=&#8221;MsoNormal&#8221;&gt;&lt;span lang=&#8221;EN-US&#8221;&gt;&nbsp;&lt;\/span&gt;&lt;\/p&gt;&lt;p class=&#8221;MsoNormal&#8221;&gt;&lt;span lang=&#8221;EN-US&#8221;&gt;At first, I run the FDTD and generate .mat files that contain optical generation rate (G vs. x, y, z) at each single wavelength. &lt;span style=&#8221;mso-spacerun: yes;&#8221;&gt;&nbsp;&lt;\/span&gt;(It was conducted by the script of analysis group in FDTD.)&lt;\/span&gt;&lt;\/p&gt;&lt;p class=&#8221;MsoNormal&#8221;&gt;&lt;span lang=&#8221;EN-US&#8221;&gt;Now, these .mat files (300 ~ 304.mat) are ready to import from script in CHARGE. (Figure 2)&lt;\/span&gt;&lt;\/p&gt;&lt;p class=&#8221;MsoNormal&#8221;&gt;&lt;span lang=&#8221;EN-US&#8221;&gt;&nbsp;&lt;\/span&gt;&lt;\/p&gt;&lt;p class=&#8221;MsoNormal&#8221;&gt;&lt;span lang=&#8221;EN-US&#8221;&gt;In CHARGE, there is a generation folder that has optical generation imports named with 300 ~ 1100. (Figure 3)&lt;\/span&gt;&lt;\/p&gt;&lt;p class=&#8221;MsoNormal&#8221;&gt;&lt;span lang=&#8221;EN-US&#8221;&gt;Run the script and get result. &lt;\/span&gt;&lt;\/p&gt;&lt;p class=&#8221;MsoNormal&#8221;&gt;&lt;span lang=&#8221;EN-US&#8221;&gt;The script file is modified from cis_QE.lsf in the below example:&lt;\/span&gt;&lt;\/p&gt;&lt;p class=&#8221;MsoNormal&#8221;&gt;&lt;span lang=&#8221;EN-US&#8221;&gt;<a href=\"https:\/\/optics.ansys.com\/hc\/en-us\/articles\/360042356894-CMOS-Cross-talk-and-QE-extraction\">CMOS &#8211; Cross talk and QE extraction &ndash; Ansys Optics<\/a> &lt;\/span&gt;&lt;\/p&gt;&lt;p class=&#8221;MsoNormal&#8221;&gt;&lt;span lang=&#8221;EN-US&#8221;&gt;&nbsp;&lt;\/span&gt;&lt;\/p&gt;&lt;p class=&#8221;MsoNormal&#8221;&gt;&lt;span lang=&#8221;EN-US&#8221;&gt;However, there are some problems in the CHARGE step of process.&lt;\/span&gt;&lt;\/p&gt;&lt;p class=&#8221;MsoNormal&#8221;&gt;&lt;span lang=&#8221;EN-US&#8221;&gt;.mat files could not be imported by script. In the script, .mat files are imported by &lsquo;importdataset&rsquo; command. But, the script result shows that very low Jsc, and it would might be dark current. It means optical generation rates are not successfully imported. &lt;\/span&gt;&lt;\/p&gt;&lt;p class=&#8221;MsoNormal&#8221;&gt;&lt;span lang=&#8221;EN-US&#8221;&gt;&nbsp;<img loading=\"lazy\" decoding=\"async\" src=\"\/forum\/wp-content\/uploads\/sites\/2\/2024\/01\/29-01-2024-1706508469-mceclip0.png\" width=\"1262\" height=\"710\" \/><img loading=\"lazy\" decoding=\"async\" src=\"\/forum\/wp-content\/uploads\/sites\/2\/2024\/01\/29-01-2024-1706508483-mceclip1.png\" width=\"1308\" height=\"736\" \/>&lt;\/span&gt;&lt;\/p&gt;&lt;p class=&#8221;MsoNormal&#8221;&gt;&lt;span lang=&#8221;EN-US&#8221;&gt;I&rsquo;m not sure that my script is optimized. &lt;\/span&gt;&lt;\/p&gt;&lt;p class=&#8221;MsoNormal&#8221;&gt;&lt;span lang=&#8221;EN-US&#8221;&gt;I put a lot of effort into calculating spectral EQE, but it still hard work for me.&lt;\/span&gt;&lt;\/p&gt;&lt;p class=&#8221;MsoNormal&#8221;&gt;&lt;span lang=&#8221;EN-US&#8221;&gt;If you have any idea on the script or script codes for calculating EQE, please give me some advice.&lt;\/span&gt;&lt;\/p&gt;&lt;p class=&#8221;MsoNormal&#8221;&gt;&lt;span lang=&#8221;EN-US&#8221;&gt;&nbsp;&lt;\/span&gt;&lt;\/p&gt;&lt;p class=&#8221;MsoNormal&#8221;&gt;&lt;span lang=&#8221;EN-US&#8221;&gt;The whole codes in this script are shared below:&lt;\/span&gt;&lt;\/p&gt;&lt;p class=&#8221;MsoNormal&#8221;&gt;&nbsp;&lt;\/p&gt;&lt;p&gt;##########################################################################&lt;\/p&gt;&lt;p&gt;# Scriptfile: cis_QE.lsf&lt;\/p&gt;&lt;p&gt;#&lt;\/p&gt;&lt;p&gt;# Description:&lt;\/p&gt;&lt;p&gt;# This file runs a sweep over all generation objects for each angle&lt;\/p&gt;&lt;p&gt;# and calculates efficiency and cross talk&lt;\/p&gt;&lt;p&gt;#&lt;\/p&gt;&lt;p&gt;# Copyright 2012, Lumerical Solutions, Inc.&lt;\/p&gt;&lt;p&gt;###########################################################################&lt;\/p&gt;&lt;p&gt;&nbsp;&lt;\/p&gt;&lt;p&gt;start_wl = 300;&lt;\/p&gt;&lt;p&gt;end_wl = 304;&lt;\/p&gt;&lt;p&gt;npts = end_wl &#8211; start_wl + 1;&lt;\/p&gt;&lt;p&gt;surface_area = getnamed(&#8220;CHARGE simulation region&#8221;,&#8221;x span&#8221;)*(getnamed(&#8220;CHARGE simulation region&#8221;,&#8221;y span&#8221;));&lt;\/p&gt;&lt;p&gt;Jsc = linspace(0,0,npts);&lt;\/p&gt;&lt;p&gt;&nbsp;&lt;\/p&gt;&lt;p&gt;clearjobs;&lt;\/p&gt;&lt;p&gt;original_filename = currentfilename;&lt;\/p&gt;&lt;p&gt;for (i = start_wl:end_wl) {&lt;\/p&gt;&lt;p&gt;select(&#8220;CHARGE::generation::&#8221;+num2str(i));&lt;\/p&gt;&lt;p&gt;importdataset(num2str(i)+&#8221;.mat&#8221;);&lt;\/p&gt;&lt;p&gt;groupscope(&#8220;::model&#8221;);&lt;\/p&gt;&lt;p&gt;generation_object_name = num2str(i);&lt;\/p&gt;&lt;p&gt;groupscope(&#8220;CHARGE::generation&#8221;);&lt;\/p&gt;&lt;p&gt;selectall;&lt;\/p&gt;&lt;p&gt;set(&#8220;x&#8221;,0);&lt;\/p&gt;&lt;p&gt;set(&#8220;y&#8221;,0);&lt;\/p&gt;&lt;p&gt;set(&#8220;z&#8221;,0);&lt;\/p&gt;&lt;p&gt;set(&#8220;enabled&#8221;,0);&lt;\/p&gt;&lt;p&gt;setnamed(generation_object_name,&#8221;enabled&#8221;,1);&lt;\/p&gt;&lt;p&gt;filename = num2str(i);&lt;\/p&gt;&lt;p&gt;save(filename);&lt;\/p&gt;&lt;p&gt;addjob(currentfilename);&lt;\/p&gt;&lt;p&gt;&nbsp;&lt;\/p&gt;&lt;p&gt;?&#8221;Added &#8221; + currentfilename;&lt;\/p&gt;&lt;p&gt;groupscope(&#8220;::model&#8221;);&lt;\/p&gt;&lt;p&gt;}&lt;\/p&gt;&lt;p&gt;load(original_filename);&lt;\/p&gt;&lt;p&gt;&nbsp;&lt;\/p&gt;&lt;p&gt;?&#8221;Running sweep&#8230;&#8221;;&lt;\/p&gt;&lt;p&gt;&nbsp;&lt;\/p&gt;&lt;p&gt;&nbsp;&lt;\/p&gt;&lt;p&gt;runjobs;&lt;\/p&gt;&lt;p&gt;&nbsp;&lt;\/p&gt;&lt;p&gt;##########################################################################&lt;\/p&gt;&lt;p&gt;?&#8221;Processing results&#8230;&#8221;;&lt;\/p&gt;&lt;p&gt;&nbsp;&lt;\/p&gt;&lt;p&gt;for (i = 1:npts) {&lt;\/p&gt;&lt;p&gt;load(num2str(299+i));&lt;\/p&gt;&lt;p&gt;filetag = &#8220;wavelength&#8221; + num2str(299+i) + &#8220;nm&#8221;;&lt;\/p&gt;&lt;p&gt;Jsc(i) = pinch(getdata(&#8220;CHARGE&#8221;,&#8221;emitter.I&#8221;)\/surface_area*0.1);&lt;\/p&gt;&lt;p&gt;}&lt;\/p&gt;&lt;p&gt;&nbsp;&lt;\/p&gt;&lt;p&gt;load(original_filename);&lt;\/p&gt;&lt;p&gt;&nbsp;&lt;\/p&gt;&lt;p&gt;print(Jsc);&lt;\/p&gt;&lt;p&gt;wl = linspace(start_wl,end_wl,npts);&lt;\/p&gt;&lt;p&gt;EQE = (-Jsc*1239.8)\/(100*wl);&lt;\/p&gt;&lt;p&gt;&nbsp;&lt;\/p&gt;&lt;p&gt;plot(wl,EQE,&#8221;wavelength&#8221;, &#8220;EQE %&#8221;);&lt;\/p&gt;&lt;p&gt;setplot(&#8220;y min&#8221;,0);&lt;\/p&gt;&lt;p&gt;setplot(&#8220;y max&#8221;,1);&lt;\/p&gt;&lt;p&gt;legend(&#8220;&#8221;);&lt;\/p&gt;&lt;p&gt;&nbsp;&lt;\/p&gt;&lt;p class=&#8221;MsoNormal&#8221;&gt;&nbsp;&lt;\/p&gt;&lt;p class=&#8221;MsoNormal&#8221;&gt;&nbsp;&lt;\/p&gt;<\/p>\n","protected":false},"template":"","class_list":["post-346928","reply","type-reply","status-publish","hentry"],"aioseo_notices":[],"acf":[],"_links":{"self":[{"href":"https:\/\/innovationspace.ansys.com\/forum\/wp-json\/wp\/v2\/replies\/346928","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/innovationspace.ansys.com\/forum\/wp-json\/wp\/v2\/replies"}],"about":[{"href":"https:\/\/innovationspace.ansys.com\/forum\/wp-json\/wp\/v2\/types\/reply"}],"version-history":[{"count":0,"href":"https:\/\/innovationspace.ansys.com\/forum\/wp-json\/wp\/v2\/replies\/346928\/revisions"}],"wp:attachment":[{"href":"https:\/\/innovationspace.ansys.com\/forum\/wp-json\/wp\/v2\/media?parent=346928"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}