Beispiel #1
0
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")
Beispiel #3
0
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")
Beispiel #4
0
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")
Beispiel #5
0
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")
Beispiel #6
0
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")
Beispiel #7
0
# 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"))