front_materials = [] back_materials = [] # whether pyramids are upright or inverted is relative to front incidence. # so if the same etch is applied to both sides of a slab of silicon, one surface # will have 'upright' pyramids and the other side will have 'not upright' (inverted) # pyramids in the model surf = regular_pyramids(elevation_angle=55, size=5, upright=True) front_surf = Interface('RT_TMM', texture=surf, layers=[Layer(si('0.1nm'), Air)], name='pyramids' + str(options['n_rays'])) back_surf = Interface('Lambertian', layers=[], name='lambertian') bulk_Si = BulkLayer(201.8e-6, Si, name='Si_bulk') # bulk thickness in m SC = Structure([front_surf, bulk_Si, back_surf], incidence=Air, transmission=Air) process_structure(SC, options) results = calculate_RAT(SC, options) RAT = results[0] results_per_pass = results[1] # load OPTOS/measured data sim = np.loadtxt('data/optos_fig7_sim.csv', delimiter=',')
# so if the same etch is applied to both sides of a slab of silicon, one surface # will have 'upright' pyramids and the other side will have 'not upright' (inverted) # pyramids in the model ## TMM, matrix framework front_surf = Interface('TMM', layers=front_materials, name='GaInP_GaAs_SiGeSn_TMM', coherent=True) back_surf = Interface('TMM', layers=back_materials, name='SiN_Air_TMM', coherent=True) bulk_Si = BulkLayer(bulkthick, Ge, name='Ge_bulk') # bulk thickness in m SC = Structure([front_surf, bulk_Si, back_surf], incidence=Air, transmission=Air) process_structure(SC, options) results_TMM_Matrix = calculate_RAT(SC, options) results_per_pass = results_TMM_Matrix[1] R_per_pass = np.sum(results_per_pass['r'][0], 2) R_0 = R_per_pass[0] R_escape = np.sum(R_per_pass[1:, :], 0) # only select absorbing layers, sum over passes