[ Home ] [ News ] [ Contact ] [ Search ]

 ==> Download Software
 nextnano³ documentation

 Copyright notice
 About us
 Useful Links
 Publications
 
 * password protected

 

 
 

Update k.p states

Subroutine update_kp updates for given potential phiV the k.p states.

!------------------------------------------------------------------------------------------------------
! solves kp equation for all relevant k_parallel and writes solution to
! module quantum_solutions
!
! input
!
!    chargeC = 'el' or 'hl'
!
!    num_qr ...  number of quantum region
!
!    phiV(1..lengvecV) ..  electrostatic potential
!
! if no kp is done in this region --> return
!
!-----------------------------------------
! note:
!-------
!
! This subroutine assumes that
! -  conduction band 1 == gamma band
! -  valence bands 1,2,3 == hh,lh,soh-band  (if kp is done here)
!
! This version can only handle situations, where throughout the whole
! region the minimum of the conduction band lies above the maximum of the
! valence band.
! see also internal subroutine prepare_det_edge
!
!-------------------------------------------------------------------------------------------------------------
 

The proceeding is as follows:

1)  checks if k.p is done, if not: return

      call get_which_kp(num_qr,kpL,kind_kpC,kp_chargeC)
      if (.not.kpL) return

 2)   phiV   --> Note: For setup of k.p Hamiltonian, E_c and E_v contain the electrostatic potential
                                The electrostatic potential is taken from phiV in MODULE potentials.

 3)  call prepare_det_edge

       internal  subroutine prepare_det_edge
       !------------------------------------------------------------------------------------------------------
       !   sets up pot_condM,pot_valM in [J]
       !   E_separate in [J]
       !
       !-----------------------------------------
       ! note:
       !-------
       !
       ! This subroutine assumes that
       ! -  conduction band 1 == gamma band
       ! -  valence bands 1,2,3 == hh,lh,soh-band  (if kp is done here)
       !
       ! This version can only handle situations, where throughout the whole
       ! region the minimum of the conduction band lies above the maximum of the
       ! valence band.
       !
       !-------------------------------------------------------------------------------------------------------

      In principle the band edge profile for the given potential phiV and E_separate are calculated.
      NOTE: E_separate is necessary for calculation of inner eigenvalues,
                 pot_condM,pot_valM for determination of energy edge.

 4)  calculate eigenstates for (k_parallel=0 and k_z=0) and determines energy_edge (above energy edge classical treatment)
      NOTE: energy_edge  is only determined due to states for k_par =0

        - Setup k.p matrix
        - Solve k.p eigenvalue problem

 5)  get k_parallel points : first get range for k_parallel then get k_parallel (only for 1D and 2D)

 6)  determine number of eigenvalues (on basis of k_parallel=0, k_z=0 states) and SeparationEnergyEdge
      which are necessary
and define number of eigenvalues

 7)  calculate states for k_parallel (/=0)   (only 1D and 2D)

 

Technical details

  • The setup routine for the k.p matrix obtains the k.p parameters from subroutine Get_kp_MaterialParameters. (More details here.)
    The band edges include the potential. This potential is passed to this subroutine via MODULE pass_over_mod.
  • In 1D, additionally superlattices are possible: Here one additionally has a superlattice vector. The according k-points are provided by subroutine get_K_z_points1D.
  • In case of mixed boundary conditions (Dirichlet- and Neumann) the variable dim_boundaryd is 2 (else 1). So the extra loop of dim_bnd=1,dim_boundary accounts for this kind of boundary conditions.
  • The solution is written to kp_el(hl)M in MODULE quantum_solutions.
  • For the determination of the separation energy the same is true as for the single-band Schrödinger equation (the internal subroutine prepare_det_energy_edge  is in fact the same).
   
Last modified: 09-Jun-2011