def layer_add(self): obj=self.gl_objects_get_first_selected() if obj!=None: epi=get_epi() s=epi.find_shape_by_id(obj.id[0]) if type(s)==epi_layer or type(s)==shape: layer_index=epi.find_layer_by_id(obj.id[0]) new_filename=epi.new_electrical_file("shape")+".inp" orig_filename=os.path.join(get_default_material_path(),"shape.inp") inp_copy_file(os.path.join(get_sim_path(),new_filename),os.path.join(get_sim_path(),orig_filename)) mesh=get_mesh() my_shape=shape() my_shape.load(new_filename) my_shape.dy=epi.layers[layer_index].dy my_shape.dx=mesh.get_xlen() my_shape.dz=mesh.get_zlen() my_shape.shape_electrical=epi.gen_new_electrical_file("electrical") my_shape.shape_nx=1 my_shape.shape_ny=1 my_shape.shape_nz=1 my_shape.name="New shape" my_shape.save() epi.layers[layer_index].shapes.append(my_shape) epi.save() self.force_redraw()
def gen_new_electrical_file(self,prefix): new_file_name=self.new_electrical_file(prefix) full_new_file_name=new_file_name+".inp" db_file=os.path.join(get_default_material_path(),prefix+".inp") if inp().isfile(full_new_file_name)==False: inp_copy_file(full_new_file_name,db_file) return new_file_name
def update_layer_type(self, layer, data): l = self.layers[layer] if data == "active" and l.dos_file.startswith("dos") == False: l.dos_file = self.new_electrical_file("dos") mat_dir = os.path.join(get_materials_path(), l.optical_material) new_dos_file = l.dos_file + ".inp" if inp().isfile(new_dos_file) == False: dos_path_generic = os.path.join(get_default_material_path(), "dos.inp") inp_copy_file(new_dos_file, dos_path_generic) dos_path_material = os.path.join(mat_dir, "dos.inp") if os.path.isfile(dos_path_material) == True: archive_merge_file( os.path.join(get_sim_path(), "sim.gpvdm"), os.path.join(mat_dir, "sim.gpvdm"), new_dos_file, "dos.inp") if data == "active" and l.pl_file.startswith("pl") == False: l.pl_file = self.gen_new_electrical_file("pl") if data == "active" and l.lumo_file.startswith("lumo") == False: l.lumo_file = self.gen_new_electrical_file("lumo") if data == "active" and l.homo_file.startswith("h**o") == False: l.homo_file = self.gen_new_electrical_file("h**o") #if l.electrical_file=="none" or inp().isfile(l.electrical_file+".inp")==False: # l.electrical_file=self.gen_new_electrical_file("electrical") l.layer_type = data if data != "active": l.dos_file = data l.pl_file = "none" l.lumo_file = "none" l.homo_file = "none" self.clean_unused_files()
def add_new_electrical_to_shape(self,shape_file): s=self.find_shape_by_file_name(shape_file) if s.shape_dos!="none": return s.shape_dos new_file=self.new_electrical_file("electrical") s.shape_dos=new_file inp_update_token_value(s.file_name,"#shape_electrical",s.shape_electrical) new_electrical_file=new_file+".inp" if inp().isfile(new_electrical_file)==False: electrical_path_generic=os.path.join(get_default_material_path(),"electrical.inp") inp_copy_file(new_electrical_file,electrical_path_generic) return new_file
def layer_type_edit(self): for i in range(0, self.tab.rowCount()): if tab_get_value(self.tab, i, 3).lower() == "active layer" and tab_get_value( self.tab, i, 4).startswith("dos") == False: tab_set_value(self.tab, i, 4, epitay_get_next_dos()) tab_set_value(self.tab, i, 5, epitay_get_next_pl()) mat_dir = os.path.join(get_materials_path(), tab_get_value(self.tab, i, 2)) new_file = tab_get_value(self.tab, i, 4) + ".inp" if inp_isfile(new_file) == False: dos_path = os.path.join(mat_dir, "dos.inp") if os.path.isfile(dos_path) == False: dos_path = os.path.join(get_default_material_path(), "dos.inp") inp_copy_file(new_file, dos_path) new_file = tab_get_value(self.tab, i, 5) + ".inp" if inp_isfile(new_file) == False: inp_copy_file(new_file, os.path.join(mat_dir, "pl.inp")) if tab_get_value(self.tab, i, 3).lower() != "active layer" and tab_get_value( self.tab, i, 4).startswith("dos") == True: tab_set_value(self.tab, i, 4, tab_get_value(self.tab, i, 3)) tab_set_value(self.tab, i, 5, "none") if tab_get_value(self.tab, i, 3).lower() == "other": tab_set_value(self.tab, i, 4, tab_get_value(self.tab, i, 3)) if tab_get_value(self.tab, i, 3).lower() == "contact": tab_set_value(self.tab, i, 4, tab_get_value(self.tab, i, 3)) self.save_model() self.emit_change() global_object_run("dos_update") global_object_run("pl_update")
def draw_graph(self): self.layer_end=[] self.layer_name=[] self.optical_mode_file=os.path.join(get_sim_path(),"light_dump",self.data_file) self.my_figure.clf() ax1 = self.my_figure.add_subplot(111) ax2 = ax1.twinx() x_pos=0.0 layer=0 color =['r','g','b','y','o','r','g','b','y','o'] start=0.0 for i in range(0,epitaxy_get_layers()): if epitaxy_get_electrical_layer(i).startswith("dos")==False: start=start-epitaxy_get_width(i) else: break start=start*1e9 x_pos=start for i in range(0,epitaxy_get_layers()): # label=epitaxy_get_mat_file(i) layer_ticknes=epitaxy_get_width(i) layer_material=epitaxy_get_mat_file(i) lumo=0.0 h**o=0.0 delta=float(layer_ticknes)*1e9 #print(epitaxy_get_electrical_layer(i)) lines=[] material_type=inp_get_token_value(os.path.join(get_materials_path(),layer_material,'mat.inp'), "#material_type") if epitaxy_get_electrical_layer(i).startswith("dos")==False: dos_file=os.path.join(get_materials_path(),layer_material,'dos.inp') if os.path.isfile(dos_file)==False: dos_file=os.path.join(get_default_material_path(),"dos.inp") lines=inp_load_file(dos_file) if lines!=False: lumo=-float(inp_search_token_value(lines, "#Xi")) Eg=float(inp_search_token_value(lines, "#Eg")) else: lines=inp_load_file(os.path.join(get_sim_path(),epitaxy_get_electrical_layer(i)+".inp")) if lines!=False: lumo=-float(inp_search_token_value(lines, "#Xi")) Eg=float(inp_search_token_value(lines, "#Eg")) #print("b") x = [x_pos,x_pos+delta,x_pos+delta,x_pos] #print("lumo=",lumo) lumo_delta=lumo-0.1 h**o=lumo-Eg homo_delta=h**o-0.1 draw_homo=True y_name_pos=lumo-Eg/2 if Eg==0.0 or material_type=="metal": lumo_delta=-7.0 draw_homo=False y_name_pos=lumo-1.0 x_pos=x_pos+delta self.layer_end.append(x_pos) self.layer_name.append(layer_material) item=ax2.text(x_pos-delta/1.5, y_name_pos, epitaxy_get_name(i)) item.set_fontsize(15) lumo_shape = [lumo,lumo,lumo_delta,lumo_delta] ax2.fill(x,lumo_shape, color[layer],alpha=0.4) item=ax2.text(x_pos-delta/1.5, lumo+0.1, "%.2f eV" % lumo) item.set_fontsize(15) if draw_homo==True: homo_shape = [h**o,h**o,homo_delta,homo_delta] ax2.fill(x,homo_shape, color[layer],alpha=0.4) item=ax2.text(x_pos-delta/1.5, lumo-Eg-0.4, "%.2f eV" % h**o) item.set_fontsize(15) layer=layer+1 state=dat_file() if dat_file_read(state,self.optical_mode_file)==True: ax1.set_ylabel(state.data_label+" ("+state.data_units+")") ax1.set_xlabel(_("Position")+" (nm)") ax2.set_ylabel(_("Energy")+" (eV)") ax2.set_xlim([start, x_pos]) #ax2.axis(max=)#autoscale(enable=True, axis='x', tight=None) for i in range(0,len(state.y_scale)): state.y_scale[i]=state.y_scale[i]*1e9 ax1.plot(state.y_scale,state.data[0][0], 'black', linewidth=3 ,alpha=0.5) self.my_figure.tight_layout()
file_list.append(file_type(name="windows_list2.inp",dest="archive",copy_opp=file_type().JUST_COPY,base_file="windows_list2.inp")) file_list.append(file_type(name="epitaxy.inp",dest="archive",copy_opp=file_type().CHECK_VER_THEN_COPY,base_file="epitaxy.inp")) file_list.append(file_type(name="contacts.inp",dest="archive",copy_opp=file_type().CHECK_VER_THEN_COPY,base_file="contacts.inp")) file_list.append(file_type(name="thermal.inp",dest="archive",copy_opp=file_type().MERGE,base_file="thermal.inp")) file_list.append(file_type(name="thermal_boundry.inp",dest="archive",copy_opp=file_type().MERGE,base_file="thermal_boundry.inp")) file_list.append(file_type(name="fdtd.inp",dest="archive",copy_opp=file_type().MERGE,base_file="fdtd.inp")) file_list.append(file_type(name="mesh_x.inp",dest="archive",copy_opp=file_type().CHECK_VER_THEN_COPY,base_file="mesh_x.inp")) file_list.append(file_type(name="mesh_y.inp",dest="archive",copy_opp=file_type().CHECK_VER_THEN_COPY,base_file="mesh_y.inp")) file_list.append(file_type(name="mesh_z.inp",dest="archive",copy_opp=file_type().CHECK_VER_THEN_COPY,base_file="mesh_z.inp")) file_list.append(file_type(name="dump_file.inp",dest="archive",copy_opp=file_type().CHECK_VER_THEN_COPY,base_file="dump_file.inp")) file_list.append(file_type(name="time_mesh_config",dest="archive",copy_opp=file_type().CHECK_VER_THEN_COPY,base_file="time_mesh_config0.inp")) file_list.append(file_type(name="dos",dest="archive",copy_opp=file_type().MERGE,base_file=os.path.join(get_default_material_path(),"dos.inp"),needed=False)) file_list.append(file_type(name="electrical",dest="archive",copy_opp=file_type().MERGE,base_file=os.path.join(get_default_material_path(),"electrical.inp"))) file_list.append(file_type(name="interface",dest="archive",copy_opp=file_type().MERGE,base_file=os.path.join(get_default_material_path(),"interface.inp"))) file_list.append(file_type(name="shape",dest="archive",copy_opp=file_type().MERGE,base_file=os.path.join(get_default_material_path(),"shape.inp"))) file_list.append(file_type(name="pl",dest="archive",copy_opp=file_type().MERGE,base_file=os.path.join(get_default_material_path(),"pl.inp"))) file_list.append(file_type(name="h**o",dest="archive",copy_opp=file_type().JUST_COPY,base_file=os.path.join(get_default_material_path(),"h**o.inp"))) file_list.append(file_type(name="lumo",dest="archive",copy_opp=file_type().JUST_COPY,base_file=os.path.join(get_default_material_path(),"lumo.inp"))) file_list.append(file_type(name="pulse",dest="archive",copy_opp=file_type().MERGE,base_file="pulse0.inp")) file_list.append(file_type(name="laser",dest="archive",copy_opp=file_type().MERGE,base_file="laser0.inp")) file_list.append(file_type(name="jv",dest="archive",copy_opp=file_type().MERGE,base_file="jv0.inp")) file_list.append(file_type(name="pl_ss",dest="archive",copy_opp=file_type().MERGE,base_file="pl_ss0.inp")) file_list.append(file_type(name="is",dest="archive",copy_opp=file_type().MERGE,base_file="is0.inp")) file_list.append(file_type(name="is_fxdomain_data",dest="archive",copy_opp=file_type().MERGE,base_file="is_fxdomain_data0.inp",needed=False)) file_list.append(file_type(name="cv",dest="archive",copy_opp=file_type().MERGE,base_file="cv0.inp")) file_list.append(file_type(name="cv_fxdomain_data",dest="archive",copy_opp=file_type().MERGE,base_file="cv_fxdomain_data0.inp"))
file_list.append(file_type(name="epitaxy.inp",dest="archive",copy_opp=file_type().CHECK_VER_THEN_COPY,base_file="epitaxy.inp")) file_list.append(file_type(name="contacts.inp",dest="archive",copy_opp=file_type().CHECK_VER_THEN_COPY,base_file="contacts.inp")) file_list.append(file_type(name="constraints.inp",dest="archive",copy_opp=file_type().CHECK_VER_THEN_COPY,base_file="constraints.inp")) file_list.append(file_type(name="duplicate.inp",dest="archive",copy_opp=file_type().CHECK_VER_THEN_COPY,base_file="duplicate.inp")) file_list.append(file_type(name="thermal.inp",dest="archive",copy_opp=file_type().MERGE,base_file="thermal.inp")) file_list.append(file_type(name="mesh_x.inp",dest="archive",copy_opp=file_type().CHECK_VER_THEN_COPY,base_file="mesh_x.inp")) file_list.append(file_type(name="mesh_y.inp",dest="archive",copy_opp=file_type().CHECK_VER_THEN_COPY,base_file="mesh_y.inp")) file_list.append(file_type(name="mesh_z.inp",dest="archive",copy_opp=file_type().CHECK_VER_THEN_COPY,base_file="mesh_z.inp")) file_list.append(file_type(name="dump_file.inp",dest="archive",copy_opp=file_type().CHECK_VER_THEN_COPY,base_file="dump_file.inp")) file_list.append(file_type(name="time_mesh_config",dest="archive",copy_opp=file_type().CHECK_VER_THEN_COPY,base_file="time_mesh_config0.inp")) file_list.append(file_type(name="h**o",dest="archive",copy_opp=file_type().CHECK_VER_THEN_COPY,base_file="homo0.inp")) file_list.append(file_type(name="lumo",dest="archive",copy_opp=file_type().CHECK_VER_THEN_COPY,base_file="lumo0.inp")) file_list.append(file_type(name="dos",dest="archive",copy_opp=file_type().MERGE,base_file=os.path.join(get_default_material_path(),"dos.inp"))) file_list.append(file_type(name="pl",dest="archive",copy_opp=file_type().MERGE,base_file=os.path.join(get_default_material_path(),"pl.inp"))) file_list.append(file_type(name="pulse",dest="archive",copy_opp=file_type().MERGE,base_file="pulse0.inp")) file_list.append(file_type(name="laser",dest="archive",copy_opp=file_type().MERGE,base_file="laser0.inp")) file_list.append(file_type(name="jv",dest="archive",copy_opp=file_type().MERGE,base_file="jv0.inp")) file_list.append(file_type(name="ver.inp",copy_opp=file_type().MERGE)) file_list.append(file_type(name="sim.ref",copy_opp=file_type().JUST_COPY)) file_list.append(file_type(name="sim.inp",copy_opp=file_type().MERGE)) file_list.append(file_type(name="device.inp",copy_opp=file_type().MERGE)) file_list.append(file_type(name="parasitic.inp",copy_opp=file_type().MERGE)) file_list.append(file_type(name="led.inp",copy_opp=file_type().MERGE)) file_list.append(file_type(name="ray.inp",copy_opp=file_type().MERGE)) file_list.append(file_type(name="stark.inp",copy_opp=file_type().MERGE)) file_list.append(file_type(name="shg.inp",copy_opp=file_type().MERGE)) file_list.append(file_type(name="math.inp",copy_opp=file_type().MERGE))
file_list.append( file_type(name="h**o", dest="archive", copy_opp=file_type().CHECK_VER_THEN_COPY, base_file="homo0.inp")) file_list.append( file_type(name="lumo", dest="archive", copy_opp=file_type().CHECK_VER_THEN_COPY, base_file="lumo0.inp")) file_list.append( file_type(name="dos", dest="archive", copy_opp=file_type().MERGE, base_file=os.path.join(get_default_material_path(), "dos.inp"))) file_list.append( file_type(name="pl", dest="archive", copy_opp=file_type().MERGE, base_file=os.path.join(get_default_material_path(), "pl.inp"))) file_list.append( file_type(name="pulse", dest="archive", copy_opp=file_type().MERGE, base_file="pulse0.inp")) file_list.append( file_type(name="laser", dest="archive", copy_opp=file_type().MERGE, base_file="laser0.inp"))