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

# Set up lattice
vector_a = [20.2231832312, 0.0, 0.0]*Angstrom
vector_b = [0.0, -2.88902617589, 0.0]*Angstrom
vector_c = [0.0, 0.0, 8.1714]*Angstrom
left_electrode_lattice = UnitCell(vector_a, vector_b, vector_c)

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

# Define coordinates
left_electrode_coordinates = [[  0.            ,   0.            ,   1.021425      ],
                              [  2.88902617589 ,  -0.            ,   1.021425      ],
                              [  5.77805235178 ,  -0.            ,   1.021425      ],
                              [  8.66707852767 ,  -0.            ,   1.021425      ],
                              [ 11.55610470356 ,  -0.            ,   1.021425      ],
                              [ 14.44513087945 ,   0.            ,   1.021425      ],
                              [ 17.33415705534 ,  -0.            ,   1.021425      ],
                              [  1.444513087945,  -1.444513087945,   3.064275      ],
                              [  4.333539263835,  -1.444513087945,   3.064275      ],
                              [  7.222565439725,  -1.444513087945,   3.064275      ],
                              [ 10.111591615615,  -1.444513087945,   3.064275      ],
                              [ 13.000617791505,  -1.444513087945,   3.064275      ],
                              [ 15.889643967395,  -1.444513087945,   3.064275      ],
                              [ 18.778670143285,  -1.444513087945,   3.064275      ],
                              [  0.            ,   0.            ,   5.107125      ],
                              [  2.88902617589 ,  -0.            ,   5.107125      ],
                              [  5.77805235178 ,  -0.            ,   5.107125      ],
                              [  8.66707852767 ,  -0.            ,   5.107125      ],
                              [ 11.55610470356 ,  -0.            ,   5.107125      ],
                              [ 14.44513087945 ,   0.            ,   5.107125      ],
                              [ 17.33415705534 ,  -0.            ,   5.107125      ],
                              [  1.444513087945,  -1.444513087945,   7.149975      ],
                              [  4.333539263835,  -1.444513087945,   7.149975      ],
                              [  7.222565439725,  -1.444513087945,   7.149975      ],
                              [ 10.111591615615,  -1.444513087945,   7.149975      ],
                              [ 13.000617791505,  -1.444513087945,   7.149975      ],
                              [ 15.889643967395,  -1.444513087945,   7.149975      ],
                              [ 18.778670143285,  -1.444513087945,   7.149975      ]]*Angstrom

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

# Add tags
left_electrode.addTags('Left Interface')

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

# Set up lattice
vector_a = [20.2231832312, 0.0, 0.0]*Angstrom
vector_b = [0.0, -2.88902617589, 0.0]*Angstrom
vector_c = [0.0, 0.0, 7.06373620597]*Angstrom
right_electrode_lattice = UnitCell(vector_a, vector_b, vector_c)

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

# Define coordinates
right_electrode_coordinates = [[  3.371303538537,  -0.000000000001,   1.17728936766 ],
                               [  8.427099346345,  -0.000000000001,   1.17728936766 ],
                               [ 13.482895154152,  -0.000000000001,   1.17728936766 ],
                               [ 18.53869096196 ,  -0.000000000001,   1.17728936766 ],
                               [  0.843405634634,  -1.444513087946,   1.17728936766 ],
                               [  5.899201442441,  -1.444513087946,   1.17728936766 ],
                               [ 10.954997250249,  -1.444513087946,   1.17728936766 ],
                               [ 16.010793058056,  -1.444513087946,   1.17728936766 ],
                               [  1.68603826927 ,   0.000000000001,   3.531868102989],
                               [  6.741834077078,   0.000000000001,   3.531868102989],
                               [ 11.797629884885,   0.000000000001,   3.531868102989],
                               [ 16.853425692693,   0.000000000001,   3.531868102989],
                               [  4.213936173174,  -1.444513087944,   3.531868102989],
                               [  9.269731980981,  -1.444513087944,   3.531868102989],
                               [ 14.325527788789,  -1.444513087944,   3.531868102989],
                               [ 19.381323596596,  -1.444513087944,   3.531868102989],
                               [  0.000773      ,  -0.            ,   5.88644683831 ],
                               [  5.056568807808,  -0.            ,   5.88644683831 ],
                               [ 10.112364615615,  -0.            ,   5.88644683831 ],
                               [ 15.168160423423,   0.            ,   5.88644683831 ],
                               [  2.528670903904,  -1.444513087945,   5.88644683831 ],
                               [  7.584466711711,  -1.444513087945,   5.88644683831 ],
                               [ 12.640262519519,  -1.444513087945,   5.88644683831 ],
                               [ 17.696058327326,  -1.444513087945,   5.88644683831 ]]*Angstrom

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

# Add tags
right_electrode.addTags('Right Interface')

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

# Set up lattice
vector_a = [20.2231832312, 0.0, 0.0]*Angstrom
vector_b = [0.0, -2.88902617589, 0.0]*Angstrom
vector_c = [0.0, 0.0, 28.7291527796]*Angstrom
central_region_lattice = UnitCell(vector_a, vector_b, vector_c)

# Define elements
central_region_elements = [Silver, Silver, Silver, Silver, Silver, Silver, Silver, Silver,
                           Silver, Silver, Silver, Silver, Silver, Silver, Silver, Silver,
                           Silver, Silver, Silver, Silver, Silver, Silver, Silver, Silver,
                           Silver, Silver, Silver, Silver, Silver, Silver, Silver, Silver,
                           Silver, Silver, Silver, Silver, Silver, Silver, Silver, Silver,
                           Silver, Silver, Silver, Silver, Silver, Silver, Silver, Silver,
                           Silver, Gold, Gold, Gold, Gold, Gold, Gold, Gold, Gold, Gold, Gold,
                           Gold, Gold, Gold, Gold, Gold, Gold, Gold, Gold, Gold, Gold, Gold,
                           Gold, Gold, Gold, Gold, Gold, Gold, Gold, Gold, Gold, Gold, Gold,
                           Gold, Gold, Gold, Gold, Gold, Gold, Gold, Gold, Gold, Gold, Gold,
                           Gold, Gold, Gold, Gold, Gold]

# Define coordinates
central_region_coordinates = [[  0.            ,   0.            ,   1.021425      ],
                              [  2.88902617589 ,  -0.            ,   1.021425      ],
                              [  5.77805235178 ,  -0.            ,   1.021425      ],
                              [  8.66707852767 ,  -0.            ,   1.021425      ],
                              [ 11.55610470356 ,  -0.            ,   1.021425      ],
                              [ 14.44513087945 ,   0.            ,   1.021425      ],
                              [ 17.33415705534 ,  -0.            ,   1.021425      ],
                              [  1.444513087945,  -1.444513087945,   3.064275      ],
                              [  4.333539263835,  -1.444513087945,   3.064275      ],
                              [  7.222565439725,  -1.444513087945,   3.064275      ],
                              [ 10.111591615615,  -1.444513087945,   3.064275      ],
                              [ 13.000617791505,  -1.444513087945,   3.064275      ],
                              [ 15.889643967395,  -1.444513087945,   3.064275      ],
                              [ 18.778670143285,  -1.444513087945,   3.064275      ],
                              [  0.            ,   0.            ,   5.107125      ],
                              [  2.88902617589 ,  -0.            ,   5.107125      ],
                              [  5.77805235178 ,  -0.            ,   5.107125      ],
                              [  8.66707852767 ,  -0.            ,   5.107125      ],
                              [ 11.55610470356 ,  -0.            ,   5.107125      ],
                              [ 14.44513087945 ,   0.            ,   5.107125      ],
                              [ 17.33415705534 ,  -0.            ,   5.107125      ],
                              [  1.444513087945,  -1.444513087945,   7.149975      ],
                              [  4.333539263835,  -1.444513087945,   7.149975      ],
                              [  7.222565439725,  -1.444513087945,   7.149975      ],
                              [ 10.111591615615,  -1.444513087945,   7.149975      ],
                              [ 13.000617791505,  -1.444513087945,   7.149975      ],
                              [ 15.889643967395,  -1.444513087945,   7.149975      ],
                              [ 18.778670143285,  -1.444513087945,   7.149975      ],
                              [  0.            ,   0.            ,   9.192825      ],
                              [  2.88902617589 ,  -0.            ,   9.192825      ],
                              [  5.77805235178 ,  -0.            ,   9.192825      ],
                              [  8.66707852767 ,  -0.            ,   9.192825      ],
                              [ 11.55610470356 ,  -0.            ,   9.192825      ],
                              [ 14.44513087945 ,   0.            ,   9.192825      ],
                              [ 17.33415705534 ,  -0.            ,   9.192825      ],
                              [  1.444513087945,  -1.444513087945,  11.235675      ],
                              [  4.333539263835,  -1.444513087945,  11.235675      ],
                              [  7.222565439725,  -1.444513087945,  11.235675      ],
                              [ 10.111591615615,  -1.444513087945,  11.235675      ],
                              [ 13.000617791505,  -1.444513087945,  11.235675      ],
                              [ 15.889643967395,  -1.444513087945,  11.235675      ],
                              [ 18.778670143285,  -1.444513087945,  11.235675      ],
                              [  0.            ,   0.            ,  13.278525      ],
                              [  2.88902617589 ,  -0.            ,  13.278525      ],
                              [  5.77805235178 ,  -0.            ,  13.278525      ],
                              [  8.66707852767 ,  -0.            ,  13.278525      ],
                              [ 11.55610470356 ,  -0.            ,  13.278525      ],
                              [ 14.44513087945 ,   0.            ,  13.278525      ],
                              [ 17.33415705534 ,  -0.            ,  13.278525      ],
                              [  3.371303538537,  -0.000000000001,  15.778969735321],
                              [  8.427099346345,  -0.000000000001,  15.778969735321],
                              [ 13.482895154152,  -0.000000000001,  15.778969735321],
                              [ 18.53869096196 ,  -0.000000000001,  15.778969735321],
                              [  0.843405634634,  -1.444513087946,  15.778969735321],
                              [  5.899201442441,  -1.444513087946,  15.778969735321],
                              [ 10.954997250249,  -1.444513087946,  15.778969735321],
                              [ 16.010793058056,  -1.444513087946,  15.778969735321],
                              [  1.68603826927 ,   0.000000000001,  18.133548470649],
                              [  6.741834077078,   0.000000000001,  18.133548470649],
                              [ 11.797629884885,   0.000000000001,  18.133548470649],
                              [ 16.853425692693,   0.000000000001,  18.133548470649],
                              [  4.213936173174,  -1.444513087944,  18.133548470649],
                              [  9.269731980981,  -1.444513087944,  18.133548470649],
                              [ 14.325527788789,  -1.444513087944,  18.133548470649],
                              [ 19.381323596596,  -1.444513087944,  18.133548470649],
                              [  0.000773      ,  -0.            ,  20.48812720597 ],
                              [  5.056568807808,  -0.            ,  20.48812720597 ],
                              [ 10.112364615615,  -0.            ,  20.48812720597 ],
                              [ 15.168160423423,   0.            ,  20.48812720597 ],
                              [  2.528670903904,  -1.444513087945,  20.48812720597 ],
                              [  7.584466711711,  -1.444513087945,  20.48812720597 ],
                              [ 12.640262519519,  -1.444513087945,  20.48812720597 ],
                              [ 17.696058327326,  -1.444513087945,  20.48812720597 ],
                              [  3.371303538537,  -0.000000000001,  22.842705941291],
                              [  8.427099346345,  -0.000000000001,  22.842705941291],
                              [ 13.482895154152,  -0.000000000001,  22.842705941291],
                              [ 18.53869096196 ,  -0.000000000001,  22.842705941291],
                              [  0.843405634634,  -1.444513087946,  22.842705941291],
                              [  5.899201442441,  -1.444513087946,  22.842705941291],
                              [ 10.954997250249,  -1.444513087946,  22.842705941291],
                              [ 16.010793058056,  -1.444513087946,  22.842705941291],
                              [  1.68603826927 ,   0.000000000001,  25.197284676619],
                              [  6.741834077078,   0.000000000001,  25.197284676619],
                              [ 11.797629884885,   0.000000000001,  25.197284676619],
                              [ 16.853425692693,   0.000000000001,  25.197284676619],
                              [  4.213936173174,  -1.444513087944,  25.197284676619],
                              [  9.269731980981,  -1.444513087944,  25.197284676619],
                              [ 14.325527788789,  -1.444513087944,  25.197284676619],
                              [ 19.381323596596,  -1.444513087944,  25.197284676619],
                              [  0.000773      ,  -0.            ,  27.55186341194 ],
                              [  5.056568807808,  -0.            ,  27.55186341194 ],
                              [ 10.112364615615,  -0.            ,  27.55186341194 ],
                              [ 15.168160423423,   0.            ,  27.55186341194 ],
                              [  2.528670903904,  -1.444513087945,  27.55186341194 ],
                              [  7.584466711711,  -1.444513087945,  27.55186341194 ],
                              [ 12.640262519519,  -1.444513087945,  27.55186341194 ],
                              [ 17.696058327326,  -1.444513087945,  27.55186341194 ]]*Angstrom

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

# Add tags
central_region.addTags('Left Interface',  [ 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])
central_region.addTags('Right Interface', [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, 95, 96])

device_configuration = DeviceConfiguration(
    central_region,
    [left_electrode, right_electrode]
    )

