def SetupElectronSRVAtInterface(device, interface): ''' Surface Recombination Velocity At Interface ''' devsim.set_parameter(device=device, name="alpha_n", value=1e-7) iexp = "(alpha_n@r0)*(Electrons@r0-Electrons@r1)" for name, equation in ( ("srvElectrons", iexp), ("srvElectrons2", "srvElectrons"), ("srvElectrons:Electrons@r0", "diff(%s,Electrons@r0)" % iexp), ("srvElectrons:Electrons@r1", "diff(%s,Electrons@r1)" % iexp), ("srvElectrons2:Electrons@r0", "srvElectrons:Electrons@r0"), ("srvElectrons2:Electrons@r1", "srvElectrons:Electrons@r1"), ): devsim.interface_model(device=device, interface=interface, name=name, equation=equation) devsim.interface_equation(device=device, interface=interface, name="ElectronContinuityEquation", variable_name="Electrons", interface_model="srvElectrons2", type="fluxterm")
def CreateSiliconOxideInterface(device, interface): ''' continuous potential at interface ''' model_name = CreateContinuousInterfaceModel(device, interface, "Potential") ds.interface_equation(device=device, interface=interface, name="PotentialEquation", interface_model=model_name, type="continuous")
def createSiliconOxideInterface(device, interface): for name, equation in ( ("continuousPotential", "Potential@r0-Potential@r1"), ("continuousPotential:Potential@r0", "1"), ("continuousPotential:Potential@r1", "-1"), ): devsim.interface_model(device=device, interface=interface, name=name, equation=equation) devsim.interface_equation(device=device, interface=interface, name="PotentialEquation", variable_name="Potential", interface_model="continuousPotential", type="continuous")
def SetupContinuousElectronsAtInterface(device, interface): # type continuous means that regular equations in both regions are swapped into the primary region devsim.interface_model(device=device, interface=interface, name="continuousElectrons", equation="Electrons@r0-Electrons@r1") devsim.interface_model(device=device, interface=interface, name="continuousElectrons:Electrons@r0", equation="1") devsim.interface_model(device=device, interface=interface, name="continuousElectrons:Electrons@r1", equation="-1") devsim.interface_equation(device=device, interface=interface, name="ElectronContinuityEquation", variable_name="Electrons", interface_model="continuousElectrons", type="continuous")
def SetupContinuousPotentialAtInterface(device, interface): # type continuous means that regular equations in both regions are swapped into the primary region devsim.interface_model(device=device, interface=interface, name="continuousPotential", equation="Potential@r0-Potential@r1") devsim.interface_model(device=device, interface=interface, name="continuousPotential:Potential@r0", equation="1") devsim.interface_model(device=device, interface=interface, name="continuousPotential:Potential@r1", equation="-1") devsim.interface_equation(device=device, interface=interface, name="PotentialEquation", variable_name="Potential", interface_model="continuousPotential", type="continuous")
def createSiliconSiliconInterface(device, interface): for variable in ("Potential", "Electrons", "Holes"): format_dict = {"var", variable} for name, equation in ( ("continuous%(var)s", "%(var)s@r0-%(var)s@r1"), ("continuous%(var)s:%(var)s@r0", "1"), ("continuous%(var)s:%(var)s@r1", "-1"), ): name_sub = name % format_dict equation_sub = equation % format_dict devsim.interface_model(device=device, interface=interface, name=name_sub, equation=equation_sub) eqname = "%sEquation" % variable ieqname = "continuous%s" % variable devsim.interface_equation(device=device, interface=interface, name=eqname, variable_name=variable, interface_model=ieqname, type="continuous")
# type continuous means that regular equations in both regions are swapped into the primary region devsim.interface_model(device=device, interface=interface, name="continuousPotential", equation="Potential@r0-Potential@r1") devsim.interface_model(device=device, interface=interface, name="continuousPotential:Potential@r0", equation="1") devsim.interface_model(device=device, interface=interface, name="continuousPotential:Potential@r1", equation="-1") devsim.interface_equation(device=device, interface=interface, name="PotentialEquation", variable_name="Potential", interface_model="continuousPotential", type="continuous") def print_charge(): print( devsim.get_contact_charge(device=device, contact="top", equation="PotentialEquation")) print( devsim.get_contact_charge(device=device, contact="bot", equation="PotentialEquation"))