{"id":1681,"date":"2021-03-26T06:26:17","date_gmt":"2021-03-26T06:26:17","guid":{"rendered":"https:\/\/wtheiss.com\/wordpress\/?p=1681"},"modified":"2021-03-26T06:26:45","modified_gmt":"2021-03-26T06:26:45","slug":"optimizing-thin-film-solar-cells-with-code","status":"publish","type":"post","link":"https:\/\/wtheiss.com\/wordpress\/?p=1681","title":{"rendered":"Optimizing thin film solar cells with CODE"},"content":{"rendered":"<p>With CODE you can compute the photocurrent in an active layer of a solar cell. The photocurrent is available as integral quantity which can be the target of the layer stack optimization &#8211; very likely the target is \u2018as high as possible\u2019. Photocurrent objects make use of a special spectrum type in CODE which is called \u2018Charge carrier generation\u2019. Since the required steps to setup such a computational scheme are non-trivial (and a little bit hidden in the documentation) we have generated this tutorial which explains all details.<\/p>\n<p>The example is a thin film solar cell with 2 active layers. One is micro-crystalline (mc-Si) and the other one amorphous (a-Si). Light enters through glass from the top. Between glass and the absorber layers a transparent conductive layer (TCO) collects charge charriers. The backside contact is made of aluminum.<\/p>\n<p><a href=\"https:\/\/wtheiss.com\/wordpress\/wp-content\/uploads\/2021\/03\/layer-stack.png\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone size-full wp-image-1682\" src=\"https:\/\/wtheiss.com\/wordpress\/wp-content\/uploads\/2021\/03\/layer-stack.png\" alt=\"\" width=\"478\" height=\"539\" srcset=\"https:\/\/wtheiss.com\/wordpress\/wp-content\/uploads\/2021\/03\/layer-stack.png 478w, https:\/\/wtheiss.com\/wordpress\/wp-content\/uploads\/2021\/03\/layer-stack-266x300.png 266w\" sizes=\"(max-width: 478px) 100vw, 478px\" \/><\/a><\/p>\n<p>The reflectance of the stack is easily calculated \u2013 this is standard in CODE:<\/p>\n<p><a href=\"https:\/\/wtheiss.com\/wordpress\/wp-content\/uploads\/2021\/03\/reflectance.png\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone size-large wp-image-1683\" src=\"https:\/\/wtheiss.com\/wordpress\/wp-content\/uploads\/2021\/03\/reflectance-1024x626.png\" alt=\"\" width=\"474\" height=\"290\" srcset=\"https:\/\/wtheiss.com\/wordpress\/wp-content\/uploads\/2021\/03\/reflectance-1024x626.png 1024w, https:\/\/wtheiss.com\/wordpress\/wp-content\/uploads\/2021\/03\/reflectance-300x183.png 300w, https:\/\/wtheiss.com\/wordpress\/wp-content\/uploads\/2021\/03\/reflectance-768x469.png 768w, https:\/\/wtheiss.com\/wordpress\/wp-content\/uploads\/2021\/03\/reflectance.png 1059w\" sizes=\"(max-width: 474px) 100vw, 474px\" \/><\/a><\/p>\n<p>If you are interested how much light is absorbed in one of the active layers you have to generate a spectrum of type \u2018Layer absorption\u2019 in the list of spectra. Please note that this spectrum type works for layer stacks which consist of either \u2018thick layers\u2019 or \u2018thin films\u2019 \u2013 you should not have \u2018rough interface\u2019 or \u2018thickness averaging\u2019 layers in the stack.<\/p>\n<p>\u2018Layer absorption\u2019 objects require the selection of the active layer. A control element for this is available in the upper left corner:<\/p>\n<p><a href=\"https:\/\/wtheiss.com\/wordpress\/wp-content\/uploads\/2021\/03\/layer-selection.png\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone size-full wp-image-1684\" src=\"https:\/\/wtheiss.com\/wordpress\/wp-content\/uploads\/2021\/03\/layer-selection.png\" alt=\"\" width=\"316\" height=\"130\" srcset=\"https:\/\/wtheiss.com\/wordpress\/wp-content\/uploads\/2021\/03\/layer-selection.png 316w, https:\/\/wtheiss.com\/wordpress\/wp-content\/uploads\/2021\/03\/layer-selection-300x123.png 300w\" sizes=\"(max-width: 316px) 100vw, 316px\" \/><\/a><\/p>\n<p>In addition, you have to set a parameter called \u2018Number of sources\u2019. CODE divides the layer of interest into several sublayers and computes the local electric field inside each sublayer. Then the absorbed power is computed and added up for all sublayers. \u2018Number of sources\u2019 is the number of sublayers \u2013 it should be selected high enough so that the final results do not change significantly if you change the number of sources somewhat.<\/p>\n<p>In our example the fraction of light absorbed in the a-Si layer is this:<\/p>\n<p><a href=\"https:\/\/wtheiss.com\/wordpress\/wp-content\/uploads\/2021\/03\/local-absorption.png\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone size-large wp-image-1685\" src=\"https:\/\/wtheiss.com\/wordpress\/wp-content\/uploads\/2021\/03\/local-absorption-1024x771.png\" alt=\"\" width=\"474\" height=\"357\" srcset=\"https:\/\/wtheiss.com\/wordpress\/wp-content\/uploads\/2021\/03\/local-absorption-1024x771.png 1024w, https:\/\/wtheiss.com\/wordpress\/wp-content\/uploads\/2021\/03\/local-absorption-300x226.png 300w, https:\/\/wtheiss.com\/wordpress\/wp-content\/uploads\/2021\/03\/local-absorption-768x578.png 768w, https:\/\/wtheiss.com\/wordpress\/wp-content\/uploads\/2021\/03\/local-absorption.png 1491w\" sizes=\"(max-width: 474px) 100vw, 474px\" \/><\/a><\/p>\n<p>What really counts for the performance of the solar cell is the number of electron-hole pairs generate by the absorbed light. Not every photon may generate an electron-hole pair that contributes to the current of the cell. The spectrum type \u2018Charge carrier generation\u2019 is used here: It works like the type \u2018Layer absorption\u2019 discussed above, but multiplies the absorbed fraction by an internal efficiency function.<\/p>\n<p>Each spectrum of type \u2018Charge carrier generation\u2019 has subobjects called \u2018Local absorption\u2019 and \u2018Generation efficiency\u2019. The local absorption subobject shows the local absorption of light within the stack:<\/p>\n<p><a href=\"https:\/\/wtheiss.com\/wordpress\/wp-content\/uploads\/2021\/03\/local-absorption-3D.png\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone size-large wp-image-1686\" src=\"https:\/\/wtheiss.com\/wordpress\/wp-content\/uploads\/2021\/03\/local-absorption-3D-1024x699.png\" alt=\"\" width=\"474\" height=\"324\" srcset=\"https:\/\/wtheiss.com\/wordpress\/wp-content\/uploads\/2021\/03\/local-absorption-3D-1024x699.png 1024w, https:\/\/wtheiss.com\/wordpress\/wp-content\/uploads\/2021\/03\/local-absorption-3D-300x205.png 300w, https:\/\/wtheiss.com\/wordpress\/wp-content\/uploads\/2021\/03\/local-absorption-3D-768x525.png 768w, https:\/\/wtheiss.com\/wordpress\/wp-content\/uploads\/2021\/03\/local-absorption-3D.png 1467w\" sizes=\"(max-width: 474px) 100vw, 474px\" \/><\/a><\/p>\n<p>Starting at z=0 on the left we see the absorption within the Al layer, followed by the a-Si and mc-Si absorption. Finally, on the right side, the TCO absorbs in the UV and the NIR.<\/p>\n<p>The subobject \u2018Generation efficiency\u2019 is used to define the spectral function that returns the probability of the generation of an electron-hole pair by the absorption of a photon. Per default setting the internal efficiency is one:<\/p>\n<p><a href=\"https:\/\/wtheiss.com\/wordpress\/wp-content\/uploads\/2021\/03\/ideal-internal-efficiency.png\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone size-full wp-image-1687\" src=\"https:\/\/wtheiss.com\/wordpress\/wp-content\/uploads\/2021\/03\/ideal-internal-efficiency.png\" alt=\"\" width=\"804\" height=\"607\" srcset=\"https:\/\/wtheiss.com\/wordpress\/wp-content\/uploads\/2021\/03\/ideal-internal-efficiency.png 804w, https:\/\/wtheiss.com\/wordpress\/wp-content\/uploads\/2021\/03\/ideal-internal-efficiency-300x226.png 300w, https:\/\/wtheiss.com\/wordpress\/wp-content\/uploads\/2021\/03\/ideal-internal-efficiency-768x580.png 768w\" sizes=\"(max-width: 804px) 100vw, 804px\" \/><\/a><\/p>\n<p>However, you can click on \u2018Definition\u2019 to open a list that allows more flexibility:<\/p>\n<p><a href=\"https:\/\/wtheiss.com\/wordpress\/wp-content\/uploads\/2021\/03\/internal-efficiency-definition.png\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone size-full wp-image-1688\" src=\"https:\/\/wtheiss.com\/wordpress\/wp-content\/uploads\/2021\/03\/internal-efficiency-definition.png\" alt=\"\" width=\"700\" height=\"179\" srcset=\"https:\/\/wtheiss.com\/wordpress\/wp-content\/uploads\/2021\/03\/internal-efficiency-definition.png 700w, https:\/\/wtheiss.com\/wordpress\/wp-content\/uploads\/2021\/03\/internal-efficiency-definition-300x77.png 300w\" sizes=\"(max-width: 700px) 100vw, 700px\" \/><\/a>In this list you can define a spectral dependence of the generation efficiency, using terms that you usually use for dielectric functions. You can use oscillators like this one:<\/p>\n<p><a href=\"https:\/\/wtheiss.com\/wordpress\/wp-content\/uploads\/2021\/03\/internal-efficiency-example.png\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone size-full wp-image-1689\" src=\"https:\/\/wtheiss.com\/wordpress\/wp-content\/uploads\/2021\/03\/internal-efficiency-example.png\" alt=\"\" width=\"998\" height=\"730\" srcset=\"https:\/\/wtheiss.com\/wordpress\/wp-content\/uploads\/2021\/03\/internal-efficiency-example.png 998w, https:\/\/wtheiss.com\/wordpress\/wp-content\/uploads\/2021\/03\/internal-efficiency-example-300x219.png 300w, https:\/\/wtheiss.com\/wordpress\/wp-content\/uploads\/2021\/03\/internal-efficiency-example-768x562.png 768w\" sizes=\"(max-width: 998px) 100vw, 998px\" \/><\/a><\/p>\n<p>Or a superposition of many oscillators or any user-defined function. The parameters of each term show up as potential fit parameters \u2013 this allows to tune the model and get some information about the generation process.<\/p>\n<p>For simplicity in this example the internal efficiency is 1.0.<\/p>\n<p>Having defined \u2018Charge carrier generation\u2019 objects for both active layers (mc-Si and a-Si) CODE knows the relation of absorbed photons and generated electron-hole pairs for each wavelength. In order to compute a macroscopic property we have to integrate over the whole spectrum. This is done by objects of type \u2018photocurrent\u2019 in the list of integral quantities. For each active layer you have to define one photocurrent object and assign the proper spectrum:<\/p>\n<p><a href=\"https:\/\/wtheiss.com\/wordpress\/wp-content\/uploads\/2021\/03\/int-quant-list.png\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone size-full wp-image-1690\" src=\"https:\/\/wtheiss.com\/wordpress\/wp-content\/uploads\/2021\/03\/int-quant-list.png\" alt=\"\" width=\"637\" height=\"100\" srcset=\"https:\/\/wtheiss.com\/wordpress\/wp-content\/uploads\/2021\/03\/int-quant-list.png 637w, https:\/\/wtheiss.com\/wordpress\/wp-content\/uploads\/2021\/03\/int-quant-list-300x47.png 300w\" sizes=\"(max-width: 637px) 100vw, 637px\" \/><\/a><\/p>\n<p>Editing a photocurrent object you can define the spectrum of the incident light and its integrated, total power. Please note that CODE uses the unit mA\/cm^2 for the current density:<\/p>\n<p><a href=\"https:\/\/wtheiss.com\/wordpress\/wp-content\/uploads\/2021\/03\/dialog_1.png\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone size-full wp-image-1691\" src=\"https:\/\/wtheiss.com\/wordpress\/wp-content\/uploads\/2021\/03\/dialog_1.png\" alt=\"\" width=\"419\" height=\"326\" srcset=\"https:\/\/wtheiss.com\/wordpress\/wp-content\/uploads\/2021\/03\/dialog_1.png 419w, https:\/\/wtheiss.com\/wordpress\/wp-content\/uploads\/2021\/03\/dialog_1-300x233.png 300w\" sizes=\"(max-width: 419px) 100vw, 419px\" \/><\/a><\/p>\n<p>Next you have to define the spectrum of the incident radiation. Should the graph be missing press \u2018Update\u2019 to see it \u2013 or press \u2018a\u2019 on your keyboard for automatic scaling. Our example uses an AM1.5 spectrum. Do not worry about normalization \u2013 CODE will do that for you. You just have to provide the wanted spectral shape:<\/p>\n<p><a href=\"https:\/\/wtheiss.com\/wordpress\/wp-content\/uploads\/2021\/03\/am1_5-spectrum.png\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone size-large wp-image-1692\" src=\"https:\/\/wtheiss.com\/wordpress\/wp-content\/uploads\/2021\/03\/am1_5-spectrum-1024x771.png\" alt=\"\" width=\"474\" height=\"357\" srcset=\"https:\/\/wtheiss.com\/wordpress\/wp-content\/uploads\/2021\/03\/am1_5-spectrum-1024x771.png 1024w, https:\/\/wtheiss.com\/wordpress\/wp-content\/uploads\/2021\/03\/am1_5-spectrum-300x226.png 300w, https:\/\/wtheiss.com\/wordpress\/wp-content\/uploads\/2021\/03\/am1_5-spectrum-768x578.png 768w, https:\/\/wtheiss.com\/wordpress\/wp-content\/uploads\/2021\/03\/am1_5-spectrum.png 1317w\" sizes=\"(max-width: 474px) 100vw, 474px\" \/><\/a><\/p>\n<p>Finally, the total power of the illumination is entered in W\/m^2:<\/p>\n<p><a href=\"https:\/\/wtheiss.com\/wordpress\/wp-content\/uploads\/2021\/03\/total-power-dialog.png\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone size-full wp-image-1693\" src=\"https:\/\/wtheiss.com\/wordpress\/wp-content\/uploads\/2021\/03\/total-power-dialog.png\" alt=\"\" width=\"351\" height=\"110\" srcset=\"https:\/\/wtheiss.com\/wordpress\/wp-content\/uploads\/2021\/03\/total-power-dialog.png 351w, https:\/\/wtheiss.com\/wordpress\/wp-content\/uploads\/2021\/03\/total-power-dialog-300x94.png 300w\" sizes=\"(max-width: 351px) 100vw, 351px\" \/><\/a><\/p>\n<p>Now CODE knows all parameters and computes the current density generated in the active layer.<\/p>\n<p>In our example we have 2 active layers which may have different layer absorption and also different current densities:<\/p>\n<p><a href=\"https:\/\/wtheiss.com\/wordpress\/wp-content\/uploads\/2021\/03\/results_1.png\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone size-large wp-image-1694\" src=\"https:\/\/wtheiss.com\/wordpress\/wp-content\/uploads\/2021\/03\/results_1-1010x1024.png\" alt=\"\" width=\"474\" height=\"481\" srcset=\"https:\/\/wtheiss.com\/wordpress\/wp-content\/uploads\/2021\/03\/results_1-1010x1024.png 1010w, https:\/\/wtheiss.com\/wordpress\/wp-content\/uploads\/2021\/03\/results_1-296x300.png 296w, https:\/\/wtheiss.com\/wordpress\/wp-content\/uploads\/2021\/03\/results_1-768x778.png 768w, https:\/\/wtheiss.com\/wordpress\/wp-content\/uploads\/2021\/03\/results_1.png 1190w\" sizes=\"(max-width: 474px) 100vw, 474px\" \/><\/a><\/p>\n<p>Depending on layer thickness values one or the other active layer produces more current. You can generate graphs like the following doing a parameter variation (which generates all data in the workbook) and a view element showing workbook data:<\/p>\n<p><a href=\"https:\/\/wtheiss.com\/wordpress\/wp-content\/uploads\/2021\/03\/results_2.png\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone size-large wp-image-1695\" src=\"https:\/\/wtheiss.com\/wordpress\/wp-content\/uploads\/2021\/03\/results_2-1024x601.png\" alt=\"\" width=\"474\" height=\"278\" srcset=\"https:\/\/wtheiss.com\/wordpress\/wp-content\/uploads\/2021\/03\/results_2-1024x601.png 1024w, https:\/\/wtheiss.com\/wordpress\/wp-content\/uploads\/2021\/03\/results_2-300x176.png 300w, https:\/\/wtheiss.com\/wordpress\/wp-content\/uploads\/2021\/03\/results_2-768x451.png 768w, https:\/\/wtheiss.com\/wordpress\/wp-content\/uploads\/2021\/03\/results_2.png 1031w\" sizes=\"(max-width: 474px) 100vw, 474px\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>With CODE you can compute the photocurrent in an active layer of a solar cell. The photocurrent is available as integral quantity which can be the target of the layer stack optimization &#8211; very likely the target is \u2018as high as possible\u2019. Photocurrent objects make use of a special spectrum type in CODE which is [&hellip;]<\/p>\n","protected":false},"author":10,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":[],"categories":[2,9,4,1],"tags":[],"_links":{"self":[{"href":"https:\/\/wtheiss.com\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/1681"}],"collection":[{"href":"https:\/\/wtheiss.com\/wordpress\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wtheiss.com\/wordpress\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wtheiss.com\/wordpress\/index.php?rest_route=\/wp\/v2\/users\/10"}],"replies":[{"embeddable":true,"href":"https:\/\/wtheiss.com\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1681"}],"version-history":[{"count":1,"href":"https:\/\/wtheiss.com\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/1681\/revisions"}],"predecessor-version":[{"id":1696,"href":"https:\/\/wtheiss.com\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/1681\/revisions\/1696"}],"wp:attachment":[{"href":"https:\/\/wtheiss.com\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1681"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wtheiss.com\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1681"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wtheiss.com\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1681"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}