k-dot-p 0.1

kdotp::libkdotp::hamiltonian Namespace Reference

Classes

struct  parameters_8band_nostrain
class  cartesian_8band
struct  effective_mass_properties
class  cartesian_effective_mass
class  hamiltonian

Typedefs

typedef
libmodelxx::grid::cartesian_grid
< libmodelxx::structure::material *, 1, 1 > 
matgrid
typedef
libmodelxx::grid::cartesian_grid
< double, 1, 1 > 
potgrid
typedef
libmodelxx::grid::cartesian_grid
< libmodelxx::structure::material *, 1, 1 > 
matgrid_t
typedef
libmodelxx::grid::cartesian_grid
< double, 1, 1 > 
potgrid_t

Enumerations

enum  cartesian_8terms {
  CS_P = 0, CS_M, VH_P, VL_P,
  VL_M, VH_M, VO_P, VO_M
}
enum  effective_mass_parameter {
  OOMSTAR, MSTAR, POTENTIAL, TOTAL_POTENTIAL,
  EC, EPSILON
}
enum  gerror_domains { HAMILTONIAN_CARTESIAN_EFFECTIVE_MASS_GERROR_DOMAIN, HAMILTONIAN_CARTESIAN_8BAND_GERROR_DOMAIN }
enum  model { KDOTP_EFFECTIVE_MASS, KDOTP_8BAND }
enum  boundary_condition { HARDWALL, PERIODIC }

Functions

static short get_consts_index (short unsigned row, short unsigned col)
static int check_constants_hermiticity (unsigned short *eye)
static GError * store_reduced_material_parameters (struct parameters_8band_nostrain *params, matgrid *mg, potgrid *pg)

Variables

static const struct
llw_complex_double 
consts_8band []

Typedef Documentation


Enumeration Type Documentation

Enumerator:
HARDWALL 
PERIODIC 

Definition at line 44 of file hamiltonians.h++.

Note:
CS = conduction band S-state VH is valence heavy hole VL is valence light hole VO is valence split-off _P is plus (+ 1/2 or 3/2 depending on state) _M is minus (- 1/2 or 3/2 depending on state)
Enumerator:
CS_P 
CS_M 
VH_P 
VL_P 
VL_M 
VH_M 
VO_P 
VO_M 

Definition at line 41 of file hamiltonian_cartesian_8band.h++.

                            {
  CS_P = 0,
  CS_M,
  VH_P,
  VL_P,
  VL_M,
  VH_M,
  VO_P,
  VO_M
      };
Enumerator:
OOMSTAR 
MSTAR 
POTENTIAL 
TOTAL_POTENTIAL 
EC 
EPSILON 

Definition at line 50 of file hamiltonian_cartesian_effective_mass.h++.

Enumerator:
HAMILTONIAN_CARTESIAN_EFFECTIVE_MASS_GERROR_DOMAIN 
HAMILTONIAN_CARTESIAN_8BAND_GERROR_DOMAIN 

Definition at line 31 of file hamiltonians.h++.

Enumerator:
KDOTP_EFFECTIVE_MASS 
KDOTP_8BAND 

Definition at line 39 of file hamiltonians.h++.


Function Documentation

static int kdotp::libkdotp::hamiltonian::check_constants_hermiticity ( unsigned short *  eye) [static]

does a quick check to make sure the constants matrix is truly Hermitean

Parameters:
eyepointer to a short unsigned int to store the row index of the invalid constant.
Returns:
-j if a real portion was not identical across a transpose +j if a complex portion was not negated across a transpose 0 if identical
Note:
this is a debugging/safety aid, but costs basically no time.

Definition at line 139 of file hamiltonian_cartesian_8band.c++.

Referenced by kdotp::libkdotp::hamiltonian::cartesian_8band::cartesian_8band().

                                                                  {
  for(unsigned short i=0; i<8; i++) {
    for(unsigned short j=0; j<8; j++) {
      /*
       *This is buggy and this file currently unused, so it's been commented out so that things will build.
      if(consts_8band[get_consts_index(i, j)].re 
         != consts_8band[get_consts_index(i, j)].re) {
        *eye = i;
        return -j;
      }
      if(consts_8band[get_consts_index(i, j)].im 
         != -consts_8band[get_consts_index(i, j)].im) {
        *eye = i;
        return j;
      }
      */
    }
  }
  return 0;
      }

Here is the caller graph for this function:

static short kdotp::libkdotp::hamiltonian::get_consts_index ( short unsigned  row,
short unsigned  col 
) [inline, static]

Simple helper function to get the appropriate constant out of consts_8band[]

Note:
entries are stored in column-major order.
rows, cols are in the order of page 215 in Winkler's spin-orbit book

Definition at line 128 of file hamiltonian_cartesian_8band.c++.

                                                                                   {
  return row*8 + col;
      }
static GError* kdotp::libkdotp::hamiltonian::store_reduced_material_parameters ( struct parameters_8band_nostrain *  params,
matgrid mg,
potgrid pg 
) [static]

Definition at line 160 of file hamiltonian_cartesian_8band.c++.

References kdotp::libmodelxx::grid::cartesian_grid< T, D, Nc >::data, kdp::constants::e, kdotp::libkdotp::hamiltonian::parameters_8band_nostrain::Ec, kdotp::libkdotp::hamiltonian::parameters_8band_nostrain::Eso, kdotp::libkdotp::hamiltonian::parameters_8band_nostrain::Ev, kdotp::libkdotp::hamiltonian::parameters_8band_nostrain::gamma1, kdotp::libkdotp::hamiltonian::parameters_8band_nostrain::gamma2, kdotp::libkdotp::hamiltonian::parameters_8band_nostrain::gamma3, kdotp::libmodelxx::structure::material::get_name(), kdotp::libmodelxx::structure::material::get_property(), HAMILTONIAN_CARTESIAN_8BAND_GERROR_DOMAIN, kdp::constants::hbar, kdotp::libmodelxx::grid::cartesian_grid< T, D, Nc >::L, kdp::constants::m0, kdotp::libkdotp::hamiltonian::parameters_8band_nostrain::oo_mstar, and kdotp::libkdotp::hamiltonian::parameters_8band_nostrain::P.

Referenced by kdotp::libkdotp::hamiltonian::cartesian_8band::cartesian_8band().

                                                                                                                           {
  int e;
  char *s;
  const char* paramstring[] = {"E_g_Gamma", "E_v", "Delta", "m_e_Gamma", "gamma1", "gamma2", "gamma3", "Ep"};
  double temp_params[8];
  for(long unsigned i=0; i<mg->L[0]; i++) {
    for(short unsigned p=0; p<8; p++) {
      temp_params[i] = mg->data[i]->get_property(paramstring[p], &e);
      if(e != 0) {
        return g_error_new(HAMILTONIAN_CARTESIAN_8BAND_GERROR_DOMAIN, 10+e, "Got error %d getting property (%s) at site %lu (material %s).\n", e, paramstring[p], i, s=mg->data[i]->get_name());
      }
    }
    params[i].Ec = temp_params[0]+temp_params[1];
    params[i].Ev = temp_params[1];
    params[i].Eso = temp_params[1]-temp_params[2];
    params[i].P = sqrt(hbar*hbar/(2*m0)*temp_params[7]);
    /*For the reduced param terms, see Winkler's Spin-orbit book page 216*/
    params[i].oo_mstar = 1.0/temp_params[4] - temp_params[7]/(3*m0)*(2/(temp_params[0]+temp_params[1]) + 1/(temp_params[0]+temp_params[1]+temp_params[2]));
    params[i].gamma1 = temp_params[4] - temp_params[7]/(3*(temp_params[0] + temp_params[1]));
    params[i].gamma2 = temp_params[5] - temp_params[7]/(6*(temp_params[0] + temp_params[1]));
    params[i].gamma3 = temp_params[6] - temp_params[7]/(6*(temp_params[0] + temp_params[1]));
  }
  return NULL;
      }

Here is the call graph for this function:

Here is the caller graph for this function:


Variable Documentation

const struct llw_complex_double kdotp::libkdotp::hamiltonian::consts_8band[] [static]
Note:
This matrix contains all of the *constants* of the 8-band k-dot-p matrix. Any non-constants across the nanostructure (e.g. the coupling constants P, gamma_i, m', etc.) are dependent upon position and, therefore, not included (they're not constant across the entire structure (nor can they be determined at compile time)

Definition at line 50 of file hamiltonian_cartesian_8band.c++.

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Defines