pn junction

Author

Stefan Birner

Input files for nextnano³ software

  • GaAs_pn_junction_1D_nn3.in

  • GaAs_pn_junction_1D_QM_nn3.in

  • GaAs_pn_junction_2D_nn3.in

  • GaAs_pn_junction_3D_nn3.in

  • GaAs_pn_junction_1D_ForwardBias_nn3.in

  • GaAs_pn_junction_2D_ForwardBias_nnp.in

  • GaAs_pn_junction_3D_ForwardBias_nnp.in

Input files for nextnano++ software

  • GaAs_pn_junction_1D_nnp.in

  • GaAs_pn_junction_2D_nnp.in

  • GaAs_pn_junction_3D_nnp.in

  • GaAs_pn_junction_1D_ForwardBias_nnp.in

The input file dicussed below is based on the nextnano³ tutorial which contains more explanation and many figures. It is available here .

#***************************************************************************!
#                                                                           !
# pn_junction_GaAs_1D_nnp.in                                                !
# --------------------------                                                !
#                                                                           !
# This is an input file for nextnano++ to calculate the band edges of a     !
# simple pn-junction with classical charge densities.                       !
#                                                                           !
# It's part of the 1D pn-junction tutorial which can be found at:           !
# https://www.nextnano.com/nextnano3/tutorial/1Dtutorial_pn_junction.htm     !
#                                                                           !
# For help on the individual keywords please go to                          !
# https://www.nextnano.com/nextnanoplus/software_documentation/input_file.htm !
#                                                                           !
# nextnano (c) nextnano GmbH                                                !
# This input file is (c) Stefan Birner, nextnano GmbH.                      !
# This file is protected by applicable copyright laws. You may use it       !
# within your research or work group, but you are not allowed to give       !
# copies to other people without explicit permission.                       !
#                                                                           !
# Documentation: https://www.nextnano.com/nextnanoplus/                     !
# Support:       support@nextnano.com                                       !
#***************************************************************************!


global{
   simulate1D{}

   temperature = 300.0                                                    # Kelvin

   substrate{ name = "GaAs" }

   crystal_zb{
      x_hkl = [1, 0, 0]
      y_hkl = [0, 1, 0]
   }
}

grid{
 #
 # For consistency reasons, we use the same nonuniform grid spacing as the nextnano3 input file.
 # However, using jumps in the grid spacing (e.g. at x=100.0 where the grid spacing changes abruptly)
 # is not a good practice, as numerical errors increase.
 #
   xgrid{
      line{ pos = 0.0       spacing = 2.0  }
      line{ pos = 10.0      spacing = 2.0  }
      line{ pos = 10.0      spacing = 1.0  }
      line{ pos = 100.0     spacing = 1.0  }
      line{ pos = 100.0     spacing = 0.5  }
      line{ pos = 140.0     spacing = 0.5  }
      line{ pos = 140.0     spacing = 0.25 }
      line{ pos = 180.0     spacing = 0.25 }
      line{ pos = 180.0     spacing = 0.5  }
      line{ pos = 220.0     spacing = 0.5  }
      line{ pos = 220.0     spacing = 1.0  }
      line{ pos = 310.0     spacing = 1.0  }
      line{ pos = 310.0     spacing = 2.0  }
      line{ pos = 320.0     spacing = 2.0  }
   }
}

structure{
   output_region_index{ boxes = no }
   output_material_index{ boxes = no }
   output_alloy_composition{ boxes = no }
   output_impurities{ boxes = no }

   region{
      everywhere{}
      binary{ name = "GaAs" }
   }
   region{
      line{
         x = [0.0, 10.0]
      }
      binary{
         name = "GaAs"
      }
      contact { name = source }
   }
   region{
      line{
         x = [10.0, 310.0]
      }
      binary{
         name = "GaAs"
      }
   }
   region{
      line{
         x = [310.0, 320.0]
      }
      binary{
         name = "GaAs"
      }
      contact { name = drain }
   }

   region{
      line{
         x = [ 0.0, 160.0]
       # x = [10.0, 160.0]     # doping must not start at 10.0
      }
      doping{
         constant{
            name = "p-type"
            conc =  0.5e18
         }
      }
   }

   region{
      line{
       # x = [160.0, 310.0]    # doping must not end at 310.0
         x = [160.0, 320.0]
      }
      doping{
         constant{
            name = "n-type"
            conc = 2.0e18
         }
      }
   }
}

impurities{
#    donor{ name = "n-type" energy = 0.027   degeneracy = 2 }
# acceptor{ name = "p-type" energy = 0.0058  degeneracy = 4 }
     donor{ name = "n-type" energy = -1000.0 degeneracy = 2 }    # '-1000.0' eV = all ionized
  acceptor{ name = "p-type" energy = -1000.0 degeneracy = 4 }    # '-1000.0' eV = all ionized
}

contacts{
   ohmic{ name = "source" bias = 0.0 }
   ohmic{ name = "drain"  bias = 0.0 }
}

classical{
   Gamma{}
   HH{}
   LH{}
   SO{}

   output_bandedges{ averaged = no}
   output_carrier_densities{}
   output_ionized_dopant_densities{}
   output_intrinsic_density{}
}

poisson{
   output_potential{}
   output_electric_field{}
}

run{
   solve_poisson{}
}