# -------------------------------------------------------------
# Left Electrode
# -------------------------------------------------------------

# Set up lattice
vector_a = [13.9168058717, 0.0, 0.0]*Angstrom
vector_b = [0.0, 13.9168058717, 0.0]*Angstrom
vector_c = [0.0, 0.0, 4.26258]*Angstrom
left_electrode_lattice = UnitCell(vector_a, vector_b, vector_c)

# Define elements
left_electrode_elements = [Carbon, Carbon, Carbon, Carbon, Carbon, Carbon, Carbon, Carbon,
                           Carbon, Carbon, Carbon, Carbon, Carbon, Carbon, Carbon, Carbon,
                           Carbon, Carbon, Carbon, Carbon]

# Define coordinates
left_electrode_coordinates = [[ 6.353223146836,  5.095851062159,  0.710189999999],
                              [ 8.542784192795,  5.807282572106,  0.710189999999],
                              [ 4.999999999988,  6.95840293585 ,  0.710189999999],
                              [ 8.542784192795,  8.109523299594,  0.710189999999],
                              [ 6.353223146836,  8.820954809541,  0.710189999999],
                              [ 6.353223146836,  5.095851062159,  2.131050000001],
                              [ 8.542784192795,  5.807282572106,  2.131050000001],
                              [ 4.999999999988,  6.95840293585 ,  2.131050000001],
                              [ 8.542784192795,  8.109523299594,  2.131050000001],
                              [ 6.353223146836,  8.820954809541,  2.131050000001],
                              [ 7.563582724864,  5.095851062159,  2.841479999999],
                              [ 5.374021678905,  5.807282572106,  2.841479999999],
                              [ 8.916805871712,  6.95840293585 ,  2.841479999999],
                              [ 5.374021678905,  8.109523299594,  2.841479999999],
                              [ 7.563582724864,  8.820954809541,  2.841479999999],
                              [ 7.563582724864,  5.095851062159,  4.262340000001],
                              [ 5.374021678905,  5.807282572106,  4.262340000001],
                              [ 8.916805871712,  6.95840293585 ,  4.262340000001],
                              [ 5.374021678905,  8.109523299594,  4.262340000001],
                              [ 7.563582724864,  8.820954809541,  4.262340000001]]*Angstrom

# Set up configuration
left_electrode = BulkConfiguration(
    bravais_lattice=left_electrode_lattice,
    elements=left_electrode_elements,
    cartesian_coordinates=left_electrode_coordinates
    )

# Add external potential
external_potential = AtomicCompensationCharge([
    ('doping_0', 0.000412782888435),
    ('doping_1', 0.000412782888435)
    ])

left_electrode.setExternalPotential(external_potential)

# -------------------------------------------------------------
# Right Electrode
# -------------------------------------------------------------

# Set up lattice
vector_a = [13.9168058717, 0.0, 0.0]*Angstrom
vector_b = [0.0, 13.9168058717, 0.0]*Angstrom
vector_c = [0.0, 0.0, 4.26258]*Angstrom
right_electrode_lattice = UnitCell(vector_a, vector_b, vector_c)

# Define elements
right_electrode_elements = [Carbon, Carbon, Carbon, Carbon, Carbon, Carbon, Carbon, Carbon,
                            Carbon, Carbon, Carbon, Carbon, Carbon, Carbon, Carbon, Carbon,
                            Carbon, Carbon, Carbon, Carbon]

# Define coordinates
right_electrode_coordinates = [[ 7.563582724864,  5.095851062159,  0.000239999999],
                               [ 5.374021678905,  5.807282572106,  0.000239999999],
                               [ 8.916805871712,  6.95840293585 ,  0.000239999999],
                               [ 5.374021678905,  8.109523299594,  0.000239999999],
                               [ 7.563582724864,  8.820954809541,  0.000239999999],
                               [ 7.563582724864,  5.095851062159,  1.421100000001],
                               [ 5.374021678905,  5.807282572106,  1.421100000001],
                               [ 8.916805871712,  6.95840293585 ,  1.421100000001],
                               [ 5.374021678905,  8.109523299594,  1.421100000001],
                               [ 7.563582724864,  8.820954809541,  1.421100000001],
                               [ 6.353223146836,  5.095851062159,  2.131529999999],
                               [ 8.542784192795,  5.807282572106,  2.131529999999],
                               [ 4.999999999988,  6.95840293585 ,  2.131529999999],
                               [ 8.542784192795,  8.109523299594,  2.131529999999],
                               [ 6.353223146836,  8.820954809541,  2.131529999999],
                               [ 6.353223146836,  5.095851062159,  3.552390000001],
                               [ 8.542784192795,  5.807282572106,  3.552390000001],
                               [ 4.999999999988,  6.95840293585 ,  3.552390000001],
                               [ 8.542784192795,  8.109523299594,  3.552390000001],
                               [ 6.353223146836,  8.820954809541,  3.552390000001]]*Angstrom

# Set up configuration
right_electrode = BulkConfiguration(
    bravais_lattice=right_electrode_lattice,
    elements=right_electrode_elements,
    cartesian_coordinates=right_electrode_coordinates
    )

# Add external potential
external_potential = AtomicCompensationCharge([
    ('doping_0', 0.000412782888435),
    ('doping_1', 0.000412782888435)
    ])

right_electrode.setExternalPotential(external_potential)

# -------------------------------------------------------------
# Central Region
# -------------------------------------------------------------

# Set up lattice
vector_a = [13.9168058717, 0.0, 0.0]*Angstrom
vector_b = [0.0, 13.9168058717, 0.0]*Angstrom
vector_c = [0.0, 0.0, 62.51736]*Angstrom
central_region_lattice = UnitCell(vector_a, vector_b, vector_c)

# Define elements
central_region_elements = [Carbon, Carbon, Carbon, Carbon, Carbon, Carbon, Carbon, Carbon,
                           Carbon, Carbon, Carbon, Carbon, Carbon, Carbon, Carbon, Carbon,
                           Carbon, Carbon, Carbon, Carbon, Carbon, Carbon, Carbon, Carbon,
                           Carbon, Carbon, Carbon, Carbon, Carbon, Carbon, Carbon, Carbon,
                           Carbon, Carbon, Carbon, Carbon, Carbon, Carbon, Carbon, Carbon,
                           Carbon, Carbon, Carbon, Carbon, Carbon, Carbon, Carbon, Carbon,
                           Carbon, Carbon, Carbon, Carbon, Carbon, Carbon, Carbon, Carbon,
                           Carbon, Carbon, Carbon, Carbon, Carbon, Carbon, Carbon, Carbon,
                           Carbon, Carbon, Carbon, Carbon, Carbon, Carbon, Carbon, Carbon,
                           Carbon, Carbon, Carbon, Carbon, Carbon, Carbon, Carbon, Carbon,
                           Carbon, Carbon, Carbon, Carbon, Carbon, Carbon, Carbon, Carbon,
                           Carbon, Carbon, Carbon, Carbon, Carbon, Carbon, Carbon, Carbon,
                           Carbon, Carbon, Carbon, Carbon, Carbon, Carbon, Carbon, Carbon,
                           Carbon, Carbon, Carbon, Carbon, Carbon, Carbon, Carbon, Carbon,
                           Carbon, Carbon, Carbon, Carbon, Carbon, Carbon, Carbon, Carbon,
                           Carbon, Carbon, Carbon, Carbon, Carbon, Carbon, Carbon, Carbon,
                           Carbon, Carbon, Carbon, Carbon, Carbon, Carbon, Carbon, Carbon,
                           Carbon, Carbon, Carbon, Carbon, Carbon, Carbon, Carbon, Carbon,
                           Carbon, Carbon, Carbon, Carbon, Carbon, Carbon, Carbon, Carbon,
                           Carbon, Carbon, Carbon, Carbon, Carbon, Carbon, Carbon, Carbon,
                           Carbon, Carbon, Carbon, Carbon, Carbon, Carbon, Carbon, Carbon,
                           Carbon, Carbon, Carbon, Carbon, Carbon, Carbon, Carbon, Carbon,
                           Carbon, Carbon, Carbon, Carbon, Carbon, Carbon, Carbon, Carbon,
                           Carbon, Carbon, Carbon, Carbon, Carbon, Carbon, Carbon, Carbon,
                           Carbon, Carbon, Carbon, Carbon, Carbon, Carbon, Carbon, Carbon,
                           Carbon, Carbon, Carbon, Carbon, Carbon, Carbon, Carbon, Carbon,
                           Carbon, Carbon, Carbon, Carbon, Carbon, Carbon, Carbon, Carbon,
                           Carbon, Carbon, Carbon, Carbon, Carbon, Carbon, Carbon, Carbon,
                           Carbon, Carbon, Carbon, Carbon, Carbon, Carbon, Carbon, Carbon,
                           Carbon, Carbon, Carbon, Carbon, Carbon, Carbon, Carbon, Carbon,
                           Carbon, Carbon, Carbon, Carbon, Carbon, Carbon, Carbon, Carbon,
                           Carbon, Carbon, Carbon, Carbon, Carbon, Carbon, Carbon, Carbon,
                           Carbon, Carbon, Carbon, Carbon, Carbon, Carbon, Carbon, Carbon,
                           Carbon, Carbon, Carbon, Carbon, Carbon, Carbon, Carbon, Carbon,
                           Carbon, Carbon, Carbon, Carbon, Carbon, Carbon, Carbon, Carbon,
                           Carbon, Carbon, Carbon, Carbon, Carbon, Carbon, Carbon, Carbon,
                           Carbon, Carbon]

# Define coordinates
central_region_coordinates = [[  6.353223146836,   5.095851062159,   0.710189999999],
                              [  8.542784192795,   5.807282572106,   0.710189999999],
                              [  4.999999999988,   6.95840293585 ,   0.710189999999],
                              [  8.542784192795,   8.109523299594,   0.710189999999],
                              [  6.353223146836,   8.820954809541,   0.710189999999],
                              [  6.353223146836,   5.095851062159,   2.131050000001],
                              [  8.542784192795,   5.807282572106,   2.131050000001],
                              [  4.999999999988,   6.95840293585 ,   2.131050000001],
                              [  8.542784192795,   8.109523299594,   2.131050000001],
                              [  6.353223146836,   8.820954809541,   2.131050000001],
                              [  7.563582724864,   5.095851062159,   2.841479999999],
                              [  5.374021678905,   5.807282572106,   2.841479999999],
                              [  8.916805871712,   6.95840293585 ,   2.841479999999],
                              [  5.374021678905,   8.109523299594,   2.841479999999],
                              [  7.563582724864,   8.820954809541,   2.841479999999],
                              [  7.563582724864,   5.095851062159,   4.262340000001],
                              [  5.374021678905,   5.807282572106,   4.262340000001],
                              [  8.916805871712,   6.95840293585 ,   4.262340000001],
                              [  5.374021678905,   8.109523299594,   4.262340000001],
                              [  7.563582724864,   8.820954809541,   4.262340000001],
                              [  6.353223146836,   5.095851062159,   4.972769999999],
                              [  8.542784192795,   5.807282572106,   4.972769999999],
                              [  4.999999999988,   6.95840293585 ,   4.972769999999],
                              [  8.542784192795,   8.109523299594,   4.972769999999],
                              [  6.353223146836,   8.820954809541,   4.972769999999],
                              [  6.353223146836,   5.095851062159,   6.393630000001],
                              [  8.542784192795,   5.807282572106,   6.393630000001],
                              [  4.999999999988,   6.95840293585 ,   6.393630000001],
                              [  8.542784192795,   8.109523299594,   6.393630000001],
                              [  6.353223146836,   8.820954809541,   6.393630000001],
                              [  7.563582724864,   5.095851062159,   7.104059999999],
                              [  5.374021678905,   5.807282572106,   7.104059999999],
                              [  8.916805871712,   6.95840293585 ,   7.104059999999],
                              [  5.374021678905,   8.109523299594,   7.104059999999],
                              [  7.563582724864,   8.820954809541,   7.104059999999],
                              [  7.563582724864,   5.095851062159,   8.524920000001],
                              [  5.374021678905,   5.807282572106,   8.524920000001],
                              [  8.916805871712,   6.95840293585 ,   8.524920000001],
                              [  5.374021678905,   8.109523299594,   8.524920000001],
                              [  7.563582724864,   8.820954809541,   8.524920000001],
                              [  6.353223146836,   5.095851062159,   9.235349999999],
                              [  8.542784192795,   5.807282572106,   9.235349999999],
                              [  4.999999999988,   6.95840293585 ,   9.235349999999],
                              [  8.542784192795,   8.109523299594,   9.235349999999],
                              [  6.353223146836,   8.820954809541,   9.235349999999],
                              [  6.353223146836,   5.095851062159,  10.656210000001],
                              [  8.542784192795,   5.807282572106,  10.656210000001],
                              [  4.999999999988,   6.95840293585 ,  10.656210000001],
                              [  8.542784192795,   8.109523299594,  10.656210000001],
                              [  6.353223146836,   8.820954809541,  10.656210000001],
                              [  7.563582724864,   5.095851062159,  11.366639999999],
                              [  5.374021678905,   5.807282572106,  11.366639999999],
                              [  8.916805871712,   6.95840293585 ,  11.366639999999],
                              [  5.374021678905,   8.109523299594,  11.366639999999],
                              [  7.563582724864,   8.820954809541,  11.366639999999],
                              [  7.563582724864,   5.095851062159,  12.787500000001],
                              [  5.374021678905,   5.807282572106,  12.787500000001],
                              [  8.916805871712,   6.95840293585 ,  12.787500000001],
                              [  5.374021678905,   8.109523299594,  12.787500000001],
                              [  7.563582724864,   8.820954809541,  12.787500000001],
                              [  6.353223146836,   5.095851062159,  13.497929999999],
                              [  8.542784192795,   5.807282572106,  13.497929999999],
                              [  4.999999999988,   6.95840293585 ,  13.497929999999],
                              [  8.542784192795,   8.109523299594,  13.497929999999],
                              [  6.353223146836,   8.820954809541,  13.497929999999],
                              [  6.353223146836,   5.095851062159,  14.918790000001],
                              [  8.542784192795,   5.807282572106,  14.918790000001],
                              [  4.999999999988,   6.95840293585 ,  14.918790000001],
                              [  8.542784192795,   8.109523299594,  14.918790000001],
                              [  6.353223146836,   8.820954809541,  14.918790000001],
                              [  7.563582724864,   5.095851062159,  15.629219999999],
                              [  5.374021678905,   5.807282572106,  15.629219999999],
                              [  8.916805871712,   6.95840293585 ,  15.629219999999],
                              [  5.374021678905,   8.109523299594,  15.629219999999],
                              [  7.563582724864,   8.820954809541,  15.629219999999],
                              [  7.563582724864,   5.095851062159,  17.050080000001],
                              [  5.374021678905,   5.807282572106,  17.050080000001],
                              [  8.916805871712,   6.95840293585 ,  17.050080000001],
                              [  5.374021678905,   8.109523299594,  17.050080000001],
                              [  7.563582724864,   8.820954809541,  17.050080000001],
                              [  6.353223146836,   5.095851062159,  17.760509999999],
                              [  8.542784192795,   5.807282572106,  17.760509999999],
                              [  4.999999999988,   6.95840293585 ,  17.760509999999],
                              [  8.542784192795,   8.109523299594,  17.760509999999],
                              [  6.353223146836,   8.820954809541,  17.760509999999],
                              [  6.353223146836,   5.095851062159,  19.181370000001],
                              [  8.542784192795,   5.807282572106,  19.181370000001],
                              [  4.999999999988,   6.95840293585 ,  19.181370000001],
                              [  8.542784192795,   8.109523299594,  19.181370000001],
                              [  6.353223146836,   8.820954809541,  19.181370000001],
                              [  7.563582724864,   5.095851062159,  19.891799999999],
                              [  5.374021678905,   5.807282572106,  19.891799999999],
                              [  8.916805871712,   6.95840293585 ,  19.891799999999],
                              [  5.374021678905,   8.109523299594,  19.891799999999],
                              [  7.563582724864,   8.820954809541,  19.891799999999],
                              [  7.563582724864,   5.095851062159,  21.312660000001],
                              [  5.374021678905,   5.807282572106,  21.312660000001],
                              [  8.916805871712,   6.95840293585 ,  21.312660000001],
                              [  5.374021678905,   8.109523299594,  21.312660000001],
                              [  7.563582724864,   8.820954809541,  21.312660000001],
                              [  6.353223146836,   5.095851062159,  22.023089999999],
                              [  8.542784192795,   5.807282572106,  22.023089999999],
                              [  4.999999999988,   6.95840293585 ,  22.023089999999],
                              [  8.542784192795,   8.109523299594,  22.023089999999],
                              [  6.353223146836,   8.820954809541,  22.023089999999],
                              [  6.353223146836,   5.095851062159,  23.443950000001],
                              [  8.542784192795,   5.807282572106,  23.443950000001],
                              [  4.999999999988,   6.95840293585 ,  23.443950000001],
                              [  8.542784192795,   8.109523299594,  23.443950000001],
                              [  6.353223146836,   8.820954809541,  23.443950000001],
                              [  7.563582724864,   5.095851062159,  24.154379999999],
                              [  5.374021678905,   5.807282572106,  24.154379999999],
                              [  8.916805871712,   6.95840293585 ,  24.154379999999],
                              [  5.374021678905,   8.109523299594,  24.154379999999],
                              [  7.563582724864,   8.820954809541,  24.154379999999],
                              [  7.563582724864,   5.095851062159,  25.575240000001],
                              [  5.374021678905,   5.807282572106,  25.575240000001],
                              [  8.916805871712,   6.95840293585 ,  25.575240000001],
                              [  5.374021678905,   8.109523299594,  25.575240000001],
                              [  7.563582724864,   8.820954809541,  25.575240000001],
                              [  6.353223146836,   5.095851062159,  26.285669999999],
                              [  8.542784192795,   5.807282572106,  26.285669999999],
                              [  4.999999999988,   6.95840293585 ,  26.285669999999],
                              [  8.542784192795,   8.109523299594,  26.285669999999],
                              [  6.353223146836,   8.820954809541,  26.285669999999],
                              [  6.353223146836,   5.095851062159,  27.706530000001],
                              [  8.542784192795,   5.807282572106,  27.706530000001],
                              [  4.999999999988,   6.95840293585 ,  27.706530000001],
                              [  8.542784192795,   8.109523299594,  27.706530000001],
                              [  6.353223146836,   8.820954809541,  27.706530000001],
                              [  7.563582724864,   5.095851062159,  28.416959999999],
                              [  5.374021678905,   5.807282572106,  28.416959999999],
                              [  8.916805871712,   6.95840293585 ,  28.416959999999],
                              [  5.374021678905,   8.109523299594,  28.416959999999],
                              [  7.563582724864,   8.820954809541,  28.416959999999],
                              [  7.563582724864,   5.095851062159,  29.837820000001],
                              [  5.374021678905,   5.807282572106,  29.837820000001],
                              [  8.916805871712,   6.95840293585 ,  29.837820000001],
                              [  5.374021678905,   8.109523299594,  29.837820000001],
                              [  7.563582724864,   8.820954809541,  29.837820000001],
                              [  6.353223146836,   5.095851062159,  30.548249999999],
                              [  8.542784192795,   5.807282572106,  30.548249999999],
                              [  4.999999999988,   6.95840293585 ,  30.548249999999],
                              [  8.542784192795,   8.109523299594,  30.548249999999],
                              [  6.353223146836,   8.820954809541,  30.548249999999],
                              [  6.353223146836,   5.095851062159,  31.969110000001],
                              [  8.542784192795,   5.807282572106,  31.969110000001],
                              [  4.999999999988,   6.95840293585 ,  31.969110000001],
                              [  8.542784192795,   8.109523299594,  31.969110000001],
                              [  6.353223146836,   8.820954809541,  31.969110000001],
                              [  7.563582724864,   5.095851062159,  32.679539999999],
                              [  5.374021678905,   5.807282572106,  32.679539999999],
                              [  8.916805871712,   6.95840293585 ,  32.679539999999],
                              [  5.374021678905,   8.109523299594,  32.679539999999],
                              [  7.563582724864,   8.820954809541,  32.679539999999],
                              [  7.563582724864,   5.095851062159,  34.100400000001],
                              [  5.374021678905,   5.807282572106,  34.100400000001],
                              [  8.916805871712,   6.95840293585 ,  34.100400000001],
                              [  5.374021678905,   8.109523299594,  34.100400000001],
                              [  7.563582724864,   8.820954809541,  34.100400000001],
                              [  6.353223146836,   5.095851062159,  34.810829999999],
                              [  8.542784192795,   5.807282572106,  34.810829999999],
                              [  4.999999999988,   6.95840293585 ,  34.810829999999],
                              [  8.542784192795,   8.109523299594,  34.810829999999],
                              [  6.353223146836,   8.820954809541,  34.810829999999],
                              [  6.353223146836,   5.095851062159,  36.231690000001],
                              [  8.542784192795,   5.807282572106,  36.231690000001],
                              [  4.999999999988,   6.95840293585 ,  36.231690000001],
                              [  8.542784192795,   8.109523299594,  36.231690000001],
                              [  6.353223146836,   8.820954809541,  36.231690000001],
                              [  7.563582724864,   5.095851062159,  36.942119999999],
                              [  5.374021678905,   5.807282572106,  36.942119999999],
                              [  8.916805871712,   6.95840293585 ,  36.942119999999],
                              [  5.374021678905,   8.109523299594,  36.942119999999],
                              [  7.563582724864,   8.820954809541,  36.942119999999],
                              [  7.563582724864,   5.095851062159,  38.362980000001],
                              [  5.374021678905,   5.807282572106,  38.362980000001],
                              [  8.916805871712,   6.95840293585 ,  38.362980000001],
                              [  5.374021678905,   8.109523299594,  38.362980000001],
                              [  7.563582724864,   8.820954809541,  38.362980000001],
                              [  6.353223146836,   5.095851062159,  39.073409999999],
                              [  8.542784192795,   5.807282572106,  39.073409999999],
                              [  4.999999999988,   6.95840293585 ,  39.073409999999],
                              [  8.542784192795,   8.109523299594,  39.073409999999],
                              [  6.353223146836,   8.820954809541,  39.073409999999],
                              [  6.353223146836,   5.095851062159,  40.494270000001],
                              [  8.542784192795,   5.807282572106,  40.494270000001],
                              [  4.999999999988,   6.95840293585 ,  40.494270000001],
                              [  8.542784192795,   8.109523299594,  40.494270000001],
                              [  6.353223146836,   8.820954809541,  40.494270000001],
                              [  7.563582724864,   5.095851062159,  41.204699999999],
                              [  5.374021678905,   5.807282572106,  41.204699999999],
                              [  8.916805871712,   6.95840293585 ,  41.204699999999],
                              [  5.374021678905,   8.109523299594,  41.204699999999],
                              [  7.563582724864,   8.820954809541,  41.204699999999],
                              [  7.563582724864,   5.095851062159,  42.625560000001],
                              [  5.374021678905,   5.807282572106,  42.625560000001],
                              [  8.916805871712,   6.95840293585 ,  42.625560000001],
                              [  5.374021678905,   8.109523299594,  42.625560000001],
                              [  7.563582724864,   8.820954809541,  42.625560000001],
                              [  6.353223146836,   5.095851062159,  43.335989999999],
                              [  8.542784192795,   5.807282572106,  43.335989999999],
                              [  4.999999999988,   6.95840293585 ,  43.335989999999],
                              [  8.542784192795,   8.109523299594,  43.335989999999],
                              [  6.353223146836,   8.820954809541,  43.335989999999],
                              [  6.353223146836,   5.095851062159,  44.756850000001],
                              [  8.542784192795,   5.807282572106,  44.756850000001],
                              [  4.999999999988,   6.95840293585 ,  44.756850000001],
                              [  8.542784192795,   8.109523299594,  44.756850000001],
                              [  6.353223146836,   8.820954809541,  44.756850000001],
                              [  7.563582724864,   5.095851062159,  45.467279999999],
                              [  5.374021678905,   5.807282572106,  45.467279999999],
                              [  8.916805871712,   6.95840293585 ,  45.467279999999],
                              [  5.374021678905,   8.109523299594,  45.467279999999],
                              [  7.563582724864,   8.820954809541,  45.467279999999],
                              [  7.563582724864,   5.095851062159,  46.888140000001],
                              [  5.374021678905,   5.807282572106,  46.888140000001],
                              [  8.916805871712,   6.95840293585 ,  46.888140000001],
                              [  5.374021678905,   8.109523299594,  46.888140000001],
                              [  7.563582724864,   8.820954809541,  46.888140000001],
                              [  6.353223146836,   5.095851062159,  47.598569999999],
                              [  8.542784192795,   5.807282572106,  47.598569999999],
                              [  4.999999999988,   6.95840293585 ,  47.598569999999],
                              [  8.542784192795,   8.109523299594,  47.598569999999],
                              [  6.353223146836,   8.820954809541,  47.598569999999],
                              [  6.353223146836,   5.095851062159,  49.019430000001],
                              [  8.542784192795,   5.807282572106,  49.019430000001],
                              [  4.999999999988,   6.95840293585 ,  49.019430000001],
                              [  8.542784192795,   8.109523299594,  49.019430000001],
                              [  6.353223146836,   8.820954809541,  49.019430000001],
                              [  7.563582724864,   5.095851062159,  49.729859999999],
                              [  5.374021678905,   5.807282572106,  49.729859999999],
                              [  8.916805871712,   6.95840293585 ,  49.729859999999],
                              [  5.374021678905,   8.109523299594,  49.729859999999],
                              [  7.563582724864,   8.820954809541,  49.729859999999],
                              [  7.563582724864,   5.095851062159,  51.150720000001],
                              [  5.374021678905,   5.807282572106,  51.150720000001],
                              [  8.916805871712,   6.95840293585 ,  51.150720000001],
                              [  5.374021678905,   8.109523299594,  51.150720000001],
                              [  7.563582724864,   8.820954809541,  51.150720000001],
                              [  6.353223146836,   5.095851062159,  51.861149999999],
                              [  8.542784192795,   5.807282572106,  51.861149999999],
                              [  4.999999999988,   6.95840293585 ,  51.861149999999],
                              [  8.542784192795,   8.109523299594,  51.861149999999],
                              [  6.353223146836,   8.820954809541,  51.861149999999],
                              [  6.353223146836,   5.095851062159,  53.282010000001],
                              [  8.542784192795,   5.807282572106,  53.282010000001],
                              [  4.999999999988,   6.95840293585 ,  53.282010000001],
                              [  8.542784192795,   8.109523299594,  53.282010000001],
                              [  6.353223146836,   8.820954809541,  53.282010000001],
                              [  7.563582724864,   5.095851062159,  53.992439999999],
                              [  5.374021678905,   5.807282572106,  53.992439999999],
                              [  8.916805871712,   6.95840293585 ,  53.992439999999],
                              [  5.374021678905,   8.109523299594,  53.992439999999],
                              [  7.563582724864,   8.820954809541,  53.992439999999],
                              [  7.563582724864,   5.095851062159,  55.413300000001],
                              [  5.374021678905,   5.807282572106,  55.413300000001],
                              [  8.916805871712,   6.95840293585 ,  55.413300000001],
                              [  5.374021678905,   8.109523299594,  55.413300000001],
                              [  7.563582724864,   8.820954809541,  55.413300000001],
                              [  6.353223146836,   5.095851062159,  56.123729999999],
                              [  8.542784192795,   5.807282572106,  56.123729999999],
                              [  4.999999999988,   6.95840293585 ,  56.123729999999],
                              [  8.542784192795,   8.109523299594,  56.123729999999],
                              [  6.353223146836,   8.820954809541,  56.123729999999],
                              [  6.353223146836,   5.095851062159,  57.544590000001],
                              [  8.542784192795,   5.807282572106,  57.544590000001],
                              [  4.999999999988,   6.95840293585 ,  57.544590000001],
                              [  8.542784192795,   8.109523299594,  57.544590000001],
                              [  6.353223146836,   8.820954809541,  57.544590000001],
                              [  7.563582724864,   5.095851062159,  58.255019999999],
                              [  5.374021678905,   5.807282572106,  58.255019999999],
                              [  8.916805871712,   6.95840293585 ,  58.255019999999],
                              [  5.374021678905,   8.109523299594,  58.255019999999],
                              [  7.563582724864,   8.820954809541,  58.255019999999],
                              [  7.563582724864,   5.095851062159,  59.675880000001],
                              [  5.374021678905,   5.807282572106,  59.675880000001],
                              [  8.916805871712,   6.95840293585 ,  59.675880000001],
                              [  5.374021678905,   8.109523299594,  59.675880000001],
                              [  7.563582724864,   8.820954809541,  59.675880000001],
                              [  6.353223146836,   5.095851062159,  60.386309999999],
                              [  8.542784192795,   5.807282572106,  60.386309999999],
                              [  4.999999999988,   6.95840293585 ,  60.386309999999],
                              [  8.542784192795,   8.109523299594,  60.386309999999],
                              [  6.353223146836,   8.820954809541,  60.386309999999],
                              [  6.353223146836,   5.095851062159,  61.807170000001],
                              [  8.542784192795,   5.807282572106,  61.807170000001],
                              [  4.999999999988,   6.95840293585 ,  61.807170000001],
                              [  8.542784192795,   8.109523299594,  61.807170000001],
                              [  6.353223146836,   8.820954809541,  61.807170000001]]*Angstrom

# Set up configuration
central_region = BulkConfiguration(
    bravais_lattice=central_region_lattice,
    elements=central_region_elements,
    cartesian_coordinates=central_region_coordinates
    )

# Add metallic region
metallic_region_0 = TubeRegion(
    0.0*Volt,
    start_point = [6.95840293585, 6.95840293585, 26.143584]*Angstrom,
    end_point = [6.95840293585, 6.95840293585, 36.373776]*Angstrom,
    inner_radius = 3.8*Angstrom,
    thickness = 1.0*Angstrom,
)

metallic_regions = [metallic_region_0]
central_region.setMetallicRegions(metallic_regions)

# Add external potential
external_potential = AtomicCompensationCharge([
    ('doping_0', 0.000412782888435),
    ('doping_1', 0.000412782888435)
    ])

central_region.setExternalPotential(external_potential)

device_configuration = DeviceConfiguration(
    central_region,
    [left_electrode, right_electrode],
    equivalent_electrode_lengths=[8.52516, 8.52516]*Angstrom,
    )

# Add tags
device_configuration.addTags('doping_0', [ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12,
                                          13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
                                          26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38,
                                          39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51,
                                          52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
                                          65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77,
                                          78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90,
                                          91, 92, 93, 94])
device_configuration.addTags('doping_1', [195, 196, 197, 198, 199, 200, 201, 202, 203, 204,
                                          205, 206, 207, 208, 209, 210, 211, 212, 213, 214,
                                          215, 216, 217, 218, 219, 220, 221, 222, 223, 224,
                                          225, 226, 227, 228, 229, 230, 231, 232, 233, 234,
                                          235, 236, 237, 238, 239, 240, 241, 242, 243, 244,
                                          245, 246, 247, 248, 249, 250, 251, 252, 253, 254,
                                          255, 256, 257, 258, 259, 260, 261, 262, 263, 264,
                                          265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
                                          275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
                                          285, 286, 287, 288, 289])

# -------------------------------------------------------------
# Calculator
# -------------------------------------------------------------
#----------------------------------------
# Basis Set
#----------------------------------------

hydrogen_onsite_term = SlaterKosterOnsiteParameters(
    element=PeriodicTable.Hydrogen,
    angular_momenta=[ 0 ],
    occupations=[ 1.0 ],
    filling_method=SphericalSymmetric,
    ionization_potential=[ 0.6*eV ],
    onsite_hartree_shift=[ 10.89*eV ],
    onsite_spin_split=[[0.0]]*eV,
    onsite_spin_orbit_split=[0.0]*eV,
    vacuum_level=0.0*Hartree,
    )

carbon_onsite_term = SlaterKosterOnsiteParameters(
    element=PeriodicTable.Carbon,
    angular_momenta=[ 0 , 1 , 0 ],
    occupations=[ 1.129 , 2.807 , 0.064 ],
    filling_method=SphericalSymmetric,
    ionization_potential=[ -4.545*eV , 3.84*eV , 11.37*eV ],
    onsite_hartree_shift=[ 10.030004*eV , 10.030004*eV , 10.030004*eV ],
    onsite_spin_split=[[-0.8611, -0.71315, -0.8611], [-0.71315, -0.6199, -0.71315], [-0.8611, -0.71315, -0.8611]]*eV,
    onsite_spin_orbit_split=[0.0, 0.0, 0.0]*eV,
    vacuum_level=0.0*Hartree,
    )

basis_set = SlaterKosterTable(
    hydrogen=hydrogen_onsite_term,
    carbon=carbon_onsite_term,
    h_c_sps=[
        (1.36*Angstrom, 4.5*eV),
        (1.394*Angstrom, 4.5*eV),
        (1.428*Angstrom, 4.5*eV),
        (1.462*Angstrom, 4.5*eV),
        (1.496*Angstrom, 4.5*eV),
        (1.53*Angstrom, 4.5*eV),
        (1.564*Angstrom, 4.5*eV),
        (1.598*Angstrom, 4.5*eV),
        (1.632*Angstrom, 4.5*eV),
        (1.666*Angstrom, 4.5*eV),
        (1.7*Angstrom, 4.5*eV),
        (1.734*Angstrom, 4.5*eV),
        (1.768*Angstrom, 4.5*eV),
        (1.802*Angstrom, 4.5*eV),
        (1.836*Angstrom, 4.5*eV),
        (1.87*Angstrom, 4.5*eV),
        (1.904*Angstrom, 4.5*eV),
        (1.938*Angstrom, 4.5*eV),
        (1.972*Angstrom, 4.5*eV),
        (2.006*Angstrom, 4.5*eV),
        (2.04*Angstrom, 4.5*eV),
        (2.2*Angstrom, 0.0*eV),
    ],
    c_c_pps=[
        (1.38737269686*Angstrom, 8.38888888889*eV),
        (1.40278794905*Angstrom, 8.205530733*eV),
        (1.41820320124*Angstrom, 8.02811909263*eV),
        (1.43361845342*Angstrom, 7.85639958377*eV),
        (1.44903370561*Angstrom, 7.69013128112*eV),
        (1.4644489578*Angstrom, 7.52908587258*eV),
        (1.47986420999*Angstrom, 7.373046875*eV),
        (1.49527946217*Angstrom, 7.22180890637*eV),
        (1.51069471436*Angstrom, 7.07517700958*eV),
        (1.52610996655*Angstrom, 6.93296602388*eV),
        (1.54152521874*Angstrom, 6.795*eV),
        (1.55694047092*Angstrom, 6.66111165572*eV),
        (1.57235572311*Angstrom, 6.53114186851*eV),
        (1.5877709753*Angstrom, 6.40493920256*eV),
        (1.60318622749*Angstrom, 6.28235946746*eV),
        (1.61860147967*Angstrom, 6.16326530612*eV),
        (1.63401673186*Angstrom, 6.0475258099*eV),
        (1.64943198405*Angstrom, 5.93501615862*eV),
        (1.66484723624*Angstrom, 5.82561728395*eV),
        (1.68026248842*Angstrom, 5.71921555425*eV),
        (1.69567774061*Angstrom, 5.61570247934*eV),
        (2.02941267988*Angstrom, 0.0*eV),
    ],
    c_c_ppp=[
        (1.38737269686*Angstrom, -2.41666666667*eV),
        (1.40278794905*Angstrom, -2.36384494626*eV),
        (1.41820320124*Angstrom, -2.3127362949*eV),
        (1.43361845342*Angstrom, -2.26326742976*eV),
        (1.44903370561*Angstrom, -2.21536894522*eV),
        (1.4644489578*Angstrom, -2.16897506925*eV),
        (1.47986420999*Angstrom, -2.1240234375*eV),
        (1.49527946217*Angstrom, -2.08045488362*eV),
        (1.51069471436*Angstrom, -2.03821324448*eV),
        (1.52610996655*Angstrom, -1.99724517906*eV),
        (1.54152521874*Angstrom, -1.9575*eV),
        (1.55694047092*Angstrom, -1.91892951671*eV),
        (1.57235572311*Angstrom, -1.88148788927*eV),
        (1.5877709753*Angstrom, -1.84513149213*eV),
        (1.60318622749*Angstrom, -1.80981878698*eV),
        (1.61860147967*Angstrom, -1.77551020408*eV),
        (1.63401673186*Angstrom, -1.74216803133*eV),
        (1.64943198405*Angstrom, -1.70975631059*eV),
        (1.66484723624*Angstrom, -1.67824074074*eV),
        (1.68026248842*Angstrom, -1.64758858682*eV),
        (1.69567774061*Angstrom, -1.61776859504*eV),
        (2.02941267988*Angstrom, 0.0*eV),
    ],
    c_c_ps1s=[
        (1.38737269686*Angstrom, 4.38941233823*eV),
        (1.40278794905*Angstrom, 4.29347179564*eV),
        (1.41820320124*Angstrom, 4.20064271499*eV),
        (1.43361845342*Angstrom, 4.1107919921*eV),
        (1.44903370561*Angstrom, 4.02379356492*eV),
        (1.4644489578*Angstrom, 3.93952797115*eV),
        (1.47986420999*Angstrom, 3.8578819379*eV),
        (1.49527946217*Angstrom, 3.77874800081*eV),
        (1.51069471436*Angstrom, 3.70202415032*eV),
        (1.52610996655*Angstrom, 3.62761350267*eV),
        (1.54152521874*Angstrom, 3.55542399397*eV),
        (1.55694047092*Angstrom, 3.48536809525*eV),
        (1.57235572311*Angstrom, 3.41736254707*eV),
        (1.5877709753*Angstrom, 3.35132811195*eV),
        (1.60318622749*Angstrom, 3.28718934353*eV),
        (1.61860147967*Angstrom, 3.22487437094*eV),
        (1.63401673186*Angstrom, 3.16431469737*eV),
        (1.64943198405*Angstrom, 3.10544501176*eV),
        (1.66484723624*Angstrom, 3.04820301266*eV),
        (1.68026248842*Angstrom, 2.9925292433*eV),
        (1.69567774061*Angstrom, 2.93836693716*eV),
        (2.02941267988*Angstrom, 0.0*eV),
    ],
    c_c_sss=[
        (1.38737269686*Angstrom, -7.01388888889*eV),
        (1.40278794905*Angstrom, -6.86058447047*eV),
        (1.41820320124*Angstrom, -6.71225189036*eV),
        (1.43361845342*Angstrom, -6.56867845994*eV),
        (1.44903370561*Angstrom, -6.42966274332*eV),
        (1.4644489578*Angstrom, -6.29501385042*eV),
        (1.47986420999*Angstrom, -6.16455078125*eV),
        (1.49527946217*Angstrom, -6.03810181741*eV),
        (1.51069471436*Angstrom, -5.91550395668*eV),
        (1.52610996655*Angstrom, -5.79660238751*eV),
        (1.54152521874*Angstrom, -5.68125*eV),
        (1.55694047092*Angstrom, -5.56930693069*eV),
        (1.57235572311*Angstrom, -5.46064013841*eV),
        (1.5877709753*Angstrom, -5.35512300877*eV),
        (1.60318622749*Angstrom, -5.25263498521*eV),
        (1.61860147967*Angstrom, -5.15306122449*eV),
        (1.63401673186*Angstrom, -5.05629227483*eV),
        (1.64943198405*Angstrom, -4.962223775*eV),
        (1.66484723624*Angstrom, -4.87075617284*eV),
        (1.68026248842*Angstrom, -4.78179446175*eV),
        (1.69567774061*Angstrom, -4.69524793388*eV),
        (2.02941267988*Angstrom, 0.0*eV),
    ],
    h_c_sss=[
        (1.36*Angstrom, -3.5*eV),
        (1.394*Angstrom, -3.5*eV),
        (1.428*Angstrom, -3.5*eV),
        (1.462*Angstrom, -3.5*eV),
        (1.496*Angstrom, -3.5*eV),
        (1.53*Angstrom, -3.5*eV),
        (1.564*Angstrom, -3.5*eV),
        (1.598*Angstrom, -3.5*eV),
        (1.632*Angstrom, -3.5*eV),
        (1.666*Angstrom, -3.5*eV),
        (1.7*Angstrom, -3.5*eV),
        (1.734*Angstrom, -3.5*eV),
        (1.768*Angstrom, -3.5*eV),
        (1.802*Angstrom, -3.5*eV),
        (1.836*Angstrom, -3.5*eV),
        (1.87*Angstrom, -3.5*eV),
        (1.904*Angstrom, -3.5*eV),
        (1.938*Angstrom, -3.5*eV),
        (1.972*Angstrom, -3.5*eV),
        (2.006*Angstrom, -3.5*eV),
        (2.04*Angstrom, -3.5*eV),
        (2.2*Angstrom, 0.0*eV),
    ],
    c_c_sps=[
        (1.38737269686*Angstrom, 8.13668287706*eV),
        (1.40278794905*Angstrom, 7.95883725446*eV),
        (1.41820320124*Angstrom, 7.78675936959*eV),
        (1.43361845342*Angstrom, 7.62020248632*eV),
        (1.44903370561*Angstrom, 7.45893292261*eV),
        (1.4644489578*Angstrom, 7.30272923038*eV),
        (1.47986420999*Angstrom, 7.15138143492*eV),
        (1.49527946217*Angstrom, 7.00469032886*eV),
        (1.51069471436*Angstrom, 6.86246681635*eV),
        (1.52610996655*Angstrom, 6.72453130336*eV),
        (1.54152521874*Angstrom, 6.59071313042*eV),
        (1.55694047092*Angstrom, 6.46085004453*eV),
        (1.57235572311*Angstrom, 6.33478770706*eV),
        (1.5877709753*Angstrom, 6.21237923501*eV),
        (1.60318622749*Angstrom, 6.09348477295*eV),
        (1.61860147967*Angstrom, 5.97797109335*eV),
        (1.63401673186*Angstrom, 5.86571122323*eV),
        (1.64943198405*Angstrom, 5.75658409505*eV),
        (1.66484723624*Angstrom, 5.65047422018*eV),
        (1.68026248842*Angstrom, 5.54727138323*eV),
        (1.69567774061*Angstrom, 5.44687035572*eV),
        (2.02941267988*Angstrom, 0.0*eV),
    ],
    h_c_ss1s=[
        (1.36*Angstrom, 0.0*eV),
        (1.394*Angstrom, 0.0*eV),
        (1.428*Angstrom, 0.0*eV),
        (1.462*Angstrom, 0.0*eV),
        (1.496*Angstrom, 0.0*eV),
        (1.53*Angstrom, 0.0*eV),
        (1.564*Angstrom, 0.0*eV),
        (1.598*Angstrom, 0.0*eV),
        (1.632*Angstrom, 0.0*eV),
        (1.666*Angstrom, 0.0*eV),
        (1.7*Angstrom, 0.0*eV),
        (1.734*Angstrom, 0.0*eV),
        (1.768*Angstrom, 0.0*eV),
        (1.802*Angstrom, 0.0*eV),
        (1.836*Angstrom, 0.0*eV),
        (1.87*Angstrom, 0.0*eV),
        (1.904*Angstrom, 0.0*eV),
        (1.938*Angstrom, 0.0*eV),
        (1.972*Angstrom, 0.0*eV),
        (2.006*Angstrom, 0.0*eV),
        (2.04*Angstrom, 0.0*eV),
        (2.2*Angstrom, 0.0*eV),
    ],
    )


#----------------------------------------
# Numerical Accuracy Settings
#----------------------------------------
left_electrode_k_point_sampling = MonkhorstPackGrid(
    nc=222,
    )
left_electrode_numerical_accuracy_parameters = NumericalAccuracyParameters(
    k_point_sampling=left_electrode_k_point_sampling,
    density_mesh_cutoff=10.0*Hartree,
    )

right_electrode_k_point_sampling = MonkhorstPackGrid(
    nc=222,
    )
right_electrode_numerical_accuracy_parameters = NumericalAccuracyParameters(
    k_point_sampling=right_electrode_k_point_sampling,
    density_mesh_cutoff=10.0*Hartree,
    )

device_k_point_sampling = MonkhorstPackGrid(
    nc=222,
    )
device_numerical_accuracy_parameters = NumericalAccuracyParameters(
    k_point_sampling=device_k_point_sampling,
    density_mesh_cutoff=10.0*Hartree,
    )

#----------------------------------------
# Iteration Control Settings
#----------------------------------------
left_electrode_iteration_control_parameters = IterationControlParameters()

right_electrode_iteration_control_parameters = IterationControlParameters()

device_iteration_control_parameters = IterationControlParameters()

#----------------------------------------
# Poisson Solver Settings
#----------------------------------------
left_electrode_poisson_solver = MultigridSolver(
    boundary_conditions=[[PeriodicBoundaryCondition(),PeriodicBoundaryCondition()],
                         [PeriodicBoundaryCondition(),PeriodicBoundaryCondition()],
                         [PeriodicBoundaryCondition(),PeriodicBoundaryCondition()]]
    )

right_electrode_poisson_solver = MultigridSolver(
    boundary_conditions=[[PeriodicBoundaryCondition(),PeriodicBoundaryCondition()],
                         [PeriodicBoundaryCondition(),PeriodicBoundaryCondition()],
                         [PeriodicBoundaryCondition(),PeriodicBoundaryCondition()]]
    )

#----------------------------------------
# Electrode Calculators
#----------------------------------------
left_electrode_calculator = SlaterKosterCalculator(
    basis_set=basis_set,
    numerical_accuracy_parameters=left_electrode_numerical_accuracy_parameters,
    iteration_control_parameters=left_electrode_iteration_control_parameters,
    poisson_solver=left_electrode_poisson_solver,
    )

right_electrode_calculator = SlaterKosterCalculator(
    basis_set=basis_set,
    numerical_accuracy_parameters=right_electrode_numerical_accuracy_parameters,
    iteration_control_parameters=right_electrode_iteration_control_parameters,
    poisson_solver=right_electrode_poisson_solver,
    )

#----------------------------------------
# Device Calculator
#----------------------------------------
calculator = DeviceSlaterKosterCalculator(
    basis_set=basis_set,
    numerical_accuracy_parameters=device_numerical_accuracy_parameters,
    iteration_control_parameters=device_iteration_control_parameters,
    electrode_calculators=
        [left_electrode_calculator, right_electrode_calculator],
    electrode_voltages=( 0.0*Volt, 0.1*Volt),
    )

device_configuration.setCalculator(calculator)

nlsave('iv_characteristics_device_setup.py', device_configuration)
