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

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

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

# Define coordinates
left_electrode_coordinates = [[ 1.911007789077,  0.            ,  1.131332143953],
                              [ 0.            ,  1.911007789077,  1.131332143953],
                              [ 0.            ,  0.            ,  3.394580845052],
                              [ 1.911007789077,  1.911007789077,  3.394580845052]]*Angstrom

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

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

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

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

# Define coordinates
right_electrode_coordinates = [[ 1.911067603434,  0.000000000006,  0.675280580319],
                               [ 1.91106760343 ,  1.911007789083,  2.026567146873],
                               [ 0.000059814357,  1.911007789083,  3.377853713433],
                               [ 0.000059814353,  0.000000000006,  4.729140279987]]*Angstrom

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

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

# Set up lattice
vector_a = [3.822015578154954, 0.0, 0.0]*Angstrom
vector_b = [0.0, 7.644031156309908, 0.0]*Angstrom
vector_c = [0.0, 0.0, 75.99367870746524]*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,
                           Silicon, Silicon, Silicon, Silicon, Silicon, Silicon, Silicon,
                           Silicon, Silicon, Silicon, Silicon, Silicon, Silicon, Silicon,
                           Silicon, Silicon, Silicon, Silicon, Silicon, Silicon, Silicon,
                           Silicon, Silicon, Silicon, Silicon, Silicon, Silicon, Silicon,
                           Silicon, Silicon, Silicon, Silicon, Silicon, Silicon, Silicon,
                           Silicon, Silicon, Silicon, Silicon, Silicon, Silicon, Silicon,
                           Silicon, Silicon, Silicon, Silicon, Silicon, Silicon, Silicon,
                           Silicon, Silicon, Silicon, Silicon, Silicon, Silicon, Silicon,
                           Silicon, Silicon, Silicon, Silicon, Silicon, Silicon, Silicon,
                           Silicon, Silicon, Silicon, Silicon, Silicon, Silicon, Silicon,
                           Silicon, Silicon]

# Define coordinates
central_region_coordinates = [[  1.911007789077,   0.            ,   1.131332143953],
                              [  0.            ,   1.911007789077,   1.131332143953],
                              [  0.            ,   0.            ,   3.394580845052],
                              [  1.911007789077,   1.911007789077,   3.394580845052],
                              [  1.911007789077,   0.            ,   5.657829546152],
                              [  0.            ,   1.911007789077,   5.657829546152],
                              [  0.            ,   0.            ,   7.921078247251],
                              [  1.911007789077,   1.911007789077,   7.921078247251],
                              [  1.911007789077,   3.822015578155,   1.131332143953],
                              [  0.            ,   5.733023367232,   1.131332143953],
                              [  0.            ,   3.822015578155,   3.394580845052],
                              [  1.911007789077,   5.733023367232,   3.394580845052],
                              [  1.911007789077,   3.822015578155,   5.657829546152],
                              [  0.            ,   5.733023367232,   5.657829546152],
                              [  0.            ,   3.822015578155,   7.921078247251],
                              [  1.911007789077,   5.733023367232,   7.921078247251],
                              [  1.911007789077,   0.            ,  10.184326948351],
                              [  0.            ,   1.911007789077,  10.184326948351],
                              [  1.911007789077,   3.822015578155,  10.184326948351],
                              [  0.            ,   5.733023367232,  10.184326948351],
                              [  0.            ,   0.            ,  12.44757564945 ],
                              [  1.911007789077,   1.911007789077,  12.44757564945 ],
                              [  0.            ,   3.822015578155,  12.44757564945 ],
                              [  1.911007789077,   5.733023367232,  12.44757564945 ],
                              [  1.911007789077,   0.            ,  14.71082435055 ],
                              [  0.            ,   1.911007789077,  14.71082435055 ],
                              [  1.911007789077,   3.822015578155,  14.71082435055 ],
                              [  0.            ,   5.733023367232,  14.71082435055 ],
                              [  0.            ,   0.            ,  16.974073051649],
                              [  1.911007789077,   1.911007789077,  16.974073051649],
                              [  0.            ,   3.822015578155,  16.974073051649],
                              [  1.911007789077,   5.733023367232,  16.974073051649],
                              [  1.911007789077,   0.            ,  19.237321752749],
                              [  0.            ,   1.911007789077,  19.237321752749],
                              [  1.911007789077,   3.822015578155,  19.237321752749],
                              [  0.            ,   5.733023367232,  19.237321752749],
                              [  0.            ,   0.            ,  21.500570453848],
                              [  1.911007789077,   1.911007789077,  21.500570453848],
                              [  0.            ,   3.822015578155,  21.500570453848],
                              [  1.911007789077,   5.733023367232,  21.500570453848],
                              [ -0.000000078696,   5.733026454941,  23.794103960939],
                              [ -0.000000078698,   1.911004701815,  23.794103960969],
                              [  1.911007867027,   3.822015577935,  23.807626580773],
                              [  1.911007865153,  -0.000000000116,  23.807664082005],
                              [  1.911007753676,   5.73352648383 ,  25.982162651269],
                              [  1.911007753676,   1.910504672792,  25.982162651342],
                              [  0.000000141082,  -0.000000000016,  26.361537403865],
                              [  0.000000184254,   3.822015578171,  26.362151791583],
                              [  1.911008042482,  -0.000000000012,  28.025702850528],
                              [  1.911008026535,   3.822015578149,  28.025929240167],
                              [  1.911007827796,   5.73364687088 ,  29.374166378321],
                              [  1.911007827787,   1.910384285454,  29.374166378325],
                              [  0.000001042824,   5.732978267279,  30.732062558598],
                              [  0.000001042833,   1.911052889105,  30.732062558605],
                              [ -0.000037850128,   3.822015578108,  32.079504493591],
                              [ -0.000038934408,  -0.000000000031,  32.08001157524 ],
                              [  1.911067603434,   0.000000000006,  33.427789157961],
                              [  1.911067603434,   3.822015578161,  33.427789157961],
                              [  1.91106760343 ,   1.911007789083,  34.779075724515],
                              [  1.91106760343 ,   5.733023367238,  34.779075724515],
                              [  0.000059814357,   1.911007789083,  36.130362291075],
                              [  0.000059814357,   5.733023367238,  36.130362291075],
                              [  0.000059814353,   0.000000000006,  37.481648857629],
                              [  0.000059814353,   3.822015578161,  37.481648857629],
                              [  1.911067603434,   0.000000000006,  38.832935424189],
                              [  1.911067603434,   3.822015578161,  38.832935424189],
                              [  1.91106760343 ,   1.911007789083,  40.184221990743],
                              [  1.91106760343 ,   5.733023367238,  40.184221990743],
                              [  0.000059814357,   1.911007789083,  41.535508557303],
                              [  0.000059814357,   5.733023367238,  41.535508557303],
                              [  0.000059814353,   0.000000000006,  42.886795123857],
                              [  0.000059814353,   3.822015578161,  42.886795123857],
                              [  1.911067603434,   0.000000000006,  44.238081690416],
                              [  1.911067603434,   3.822015578161,  44.238081690416],
                              [  1.91106760343 ,   1.911007789083,  45.589368256971],
                              [  1.91106760343 ,   5.733023367238,  45.589368256971],
                              [  0.000059814357,   1.911007789083,  46.940654823531],
                              [  0.000059814357,   5.733023367238,  46.940654823531],
                              [  0.000059814353,   0.000000000006,  48.291941390085],
                              [  0.000059814353,   3.822015578161,  48.291941390085],
                              [  1.911067603434,   0.000000000006,  49.643227956645],
                              [  1.911067603434,   3.822015578161,  49.643227956645],
                              [  1.91106760343 ,   1.911007789083,  50.994514523199],
                              [  1.91106760343 ,   5.733023367238,  50.994514523199],
                              [  0.000059814357,   1.911007789083,  52.345801089759],
                              [  0.000059814357,   5.733023367238,  52.345801089759],
                              [  0.000059814353,   0.000000000006,  53.697087656313],
                              [  0.000059814353,   3.822015578161,  53.697087656313],
                              [  1.911067603434,   0.000000000006,  55.048374222873],
                              [  1.911067603434,   3.822015578161,  55.048374222873],
                              [  1.91106760343 ,   1.911007789083,  56.399660789427],
                              [  1.91106760343 ,   5.733023367238,  56.399660789427],
                              [  0.000059814357,   1.911007789083,  57.750947355987],
                              [  0.000059814357,   5.733023367238,  57.750947355987],
                              [  0.000059814353,   0.000000000006,  59.102233922541],
                              [  0.000059814353,   3.822015578161,  59.102233922541],
                              [  1.911067603434,   0.000000000006,  60.453520489101],
                              [  1.911067603434,   3.822015578161,  60.453520489101],
                              [  1.91106760343 ,   1.911007789083,  61.804807055655],
                              [  1.91106760343 ,   5.733023367238,  61.804807055655],
                              [  0.000059814357,   1.911007789083,  63.156093622215],
                              [  0.000059814357,   5.733023367238,  63.156093622215],
                              [  0.000059814353,   0.000000000006,  64.507380188769],
                              [  0.000059814353,   3.822015578161,  64.507380188769],
                              [  1.911067603434,   0.000000000006,  65.858666755329],
                              [  1.91106760343 ,   1.911007789083,  67.209953321883],
                              [  0.000059814357,   1.911007789083,  68.561239888443],
                              [  0.000059814353,   0.000000000006,  69.912526454997],
                              [  1.911067603434,   0.000000000006,  71.263813021557],
                              [  1.91106760343 ,   1.911007789083,  72.615099588111],
                              [  0.000059814357,   1.911007789083,  73.966386154671],
                              [  0.000059814353,   0.000000000006,  75.317672721225],
                              [  1.911067603434,   3.822015578161,  65.858666755329],
                              [  1.91106760343 ,   5.733023367238,  67.209953321883],
                              [  0.000059814357,   5.733023367238,  68.561239888443],
                              [  0.000059814353,   3.822015578161,  69.912526454997],
                              [  1.911067603434,   3.822015578161,  71.263813021557],
                              [  1.91106760343 ,   5.733023367238,  72.615099588111],
                              [  0.000059814357,   5.733023367238,  73.966386154671],
                              [  0.000059814353,   3.822015578161,  75.317672721225]]*Angstrom

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

device_configuration = DeviceConfiguration(
    central_region,
    [left_electrode, right_electrode],
    equivalent_electrode_lengths=[9.052994804398, 10.810292532456]*Angstrom,
    transverse_electrode_repetitions=[[1, 2], [1, 2]],
    )

# Add tags
device_configuration.addTags('Left Interface 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])
device_configuration.addTags('Right Interface 0', [ 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,  95,  96,  97,
                                                    98,  99, 100, 101, 102, 103, 104, 105, 106, 107,
                                                   108, 109, 110, 111, 112, 113, 114, 115, 116, 117,
                                                   118, 119])