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

# Set up lattice
vector_a = [3.82289, 0.0, 0.0]*Angstrom
vector_b = [0.0, 7.64578, 0.0]*Angstrom
vector_c = [0.0, 0.0, 9.09898335764]*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]

# Define coordinates
left_electrode_coordinates = [[ 1.911444817361,  0.            ,  1.137372919705],
                              [ 0.            ,  1.911444817358,  1.137372919705],
                              [ 1.911444817361,  3.822889634723,  1.137372919705],
                              [ 0.            ,  5.73433445208 ,  1.137372919705],
                              [ 0.            ,  0.            ,  3.412118759115],
                              [ 1.911444817361,  1.911444817358,  3.412118759115],
                              [ 0.            ,  3.822889634723,  3.412118759115],
                              [ 1.911444817361,  5.73433445208 ,  3.412118759115],
                              [ 1.911444817361,  0.            ,  5.686864598525],
                              [ 0.            ,  1.911444817358,  5.686864598525],
                              [ 1.911444817361,  3.822889634723,  5.686864598525],
                              [ 0.            ,  5.73433445208 ,  5.686864598525],
                              [ 0.            ,  0.            ,  7.961610437935],
                              [ 1.911444817361,  1.911444817358,  7.961610437935],
                              [ 0.            ,  3.822889634723,  7.961610437935],
                              [ 1.911444817361,  5.73433445208 ,  7.961610437935]]*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('Selection 0')

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

# Set up lattice
vector_a = [3.82289, 0.0, 0.0]*Angstrom
vector_b = [0.0, 7.64578, 0.0]*Angstrom
vector_c = [0.0, 0.0, 10.8127647377]*Angstrom
right_electrode_lattice = UnitCell(vector_a, vector_b, vector_c)

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

# Define coordinates
right_electrode_coordinates = [[  1.911462755699,   0.000009155753,   0.675797796135],
                               [  1.911462755699,   3.822898790476,   0.675797796135],
                               [  1.911462755699,   1.91145397311 ,   2.027393388295],
                               [  1.911462755699,   5.734343607833,   2.027393388295],
                               [  0.000017938338,   1.91145397311 ,   3.378988980565],
                               [  0.000017938338,   5.734343607833,   3.378988980565],
                               [  0.000017938338,   0.000009155753,   4.730584572725],
                               [  0.000017938338,   3.822898790476,   4.730584572725],
                               [  1.911462755699,   0.000009155753,   6.082180164995],
                               [  1.911462755699,   3.822898790476,   6.082180164995],
                               [  1.911462755699,   1.91145397311 ,   7.433775757155],
                               [  1.911462755699,   5.734343607833,   7.433775757155],
                               [  0.000017938338,   1.91145397311 ,   8.785371349425],
                               [  0.000017938338,   5.734343607833,   8.785371349425],
                               [  0.000017938338,   0.000009155753,  10.136966941585],
                               [  0.000017938338,   3.822898790476,  10.136966941585]]*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('Selection 1')

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

# Set up lattice
vector_a = [3.82289, 0.0, 0.0]*Angstrom
vector_b = [0.0, 7.64578, 0.0]*Angstrom
vector_c = [0.0, 0.0, 76.0929522711]*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.911444817361,   0.            ,   1.137372919705],
                              [  0.            ,   1.911444817358,   1.137372919705],
                              [  1.911444817361,   3.822889634723,   1.137372919705],
                              [  0.            ,   5.73433445208 ,   1.137372919705],
                              [  0.            ,   0.            ,   3.412118759115],
                              [  1.911444817361,   1.911444817358,   3.412118759115],
                              [  0.            ,   3.822889634723,   3.412118759115],
                              [  1.911444817361,   5.73433445208 ,   3.412118759115],
                              [  1.911444817361,   0.            ,   5.686864598525],
                              [  0.            ,   1.911444817358,   5.686864598525],
                              [  1.911444817361,   3.822889634723,   5.686864598525],
                              [  0.            ,   5.73433445208 ,   5.686864598525],
                              [  0.            ,   0.            ,   7.961610437935],
                              [  1.911444817361,   1.911444817358,   7.961610437935],
                              [  0.            ,   3.822889634723,   7.961610437935],
                              [  1.911444817361,   5.73433445208 ,   7.961610437935],
                              [  1.911444817361,   0.            ,  10.236356277345],
                              [  0.            ,   1.911444817358,  10.236356277345],
                              [  1.911444817361,   3.822889634723,  10.236356277345],
                              [  0.            ,   5.73433445208 ,  10.236356277345],
                              [  0.            ,   0.            ,  12.511102116755],
                              [  1.911444817361,   1.911444817358,  12.511102116755],
                              [  0.            ,   3.822889634723,  12.511102116755],
                              [  1.911444817361,   5.73433445208 ,  12.511102116755],
                              [  1.911444817361,   0.            ,  14.785847956275],
                              [  0.            ,   1.911444817358,  14.785847956275],
                              [  1.911444817361,   3.822889634723,  14.785847956275],
                              [  0.            ,   5.73433445208 ,  14.785847956275],
                              [  0.            ,   0.            ,  17.060593795685],
                              [  1.911444817361,   1.911444817358,  17.060593795685],
                              [  0.            ,   3.822889634723,  17.060593795685],
                              [  1.911444817361,   5.73433445208 ,  17.060593795685],
                              [ -0.000000286846,   5.734326011931,  19.355242918493],
                              [ -0.000000187091,   1.911453387454,  19.35524306099 ],
                              [  1.911444726941,  -0.000000404873,  19.357441888127],
                              [  1.911444798665,   3.822889674465,  19.357479143268],
                              [  1.911444856569,   1.911245081573,  21.652870003795],
                              [  1.911444696235,   5.734534592845,  21.652870231866],
                              [ -0.000000249615,  -0.00000035008 ,  21.654865485827],
                              [ -0.000000195152,   3.822890043693,  21.654902384629],
                              [ -0.000000371893,   1.911427951693,  23.942843216345],
                              [ -0.000000492133,   5.734351980533,  23.942844024244],
                              [  1.911444596451,   3.822889975683,  23.953767566439],
                              [  1.911444561725,  -0.00000000801 ,  23.953975275508],
                              [  1.91144455675 ,   1.911197295596,  26.147010419383],
                              [  1.911444514763,   5.734584296183,  26.147011370673],
                              [ -0.000000334585,   3.822890575628,  26.436781132094],
                              [ -0.000000345477,   0.000000928462,  26.437603557979],
                              [  1.911444700679,   0.000002298417,  28.110113945966],
                              [  1.911444719053,   3.822891146253,  28.10996486504 ],
                              [  1.911444619822,   5.734357570114,  29.456797372745],
                              [  1.911444620708,   1.911426344969,  29.456798865137],
                              [ -0.00000031629 ,   5.733977238413,  30.814935568332],
                              [ -0.000000308125,   1.911810297404,  30.814936844168],
                              [ -0.000000130101,   0.000003820929,  32.164490233011],
                              [ -0.000000230176,   3.822894625137,  32.165730185875],
                              [  1.911445202887,   0.000006171979,  33.517898674129],
                              [  1.911445090607,   3.822897086937,  33.519058324329],
                              [  1.911446720254,   1.911050651071,  34.870099658732],
                              [  1.91144691458 ,   5.73474417572 ,  34.87010131317 ],
                              [  0.000002542773,   1.911092389832,  36.222960694502],
                              [  0.00000273835 ,   5.734705174994,  36.222961598818],
                              [  0.000007364893,   3.822898813514,  37.573480958456],
                              [  0.00000687542 ,   0.00000958887 ,  37.574323877294],
                              [  1.911453476462,   3.8229015685  ,  38.925451487929],
                              [  1.911453137111,   0.00001065141 ,  38.9261287642  ],
                              [  1.911459931637,   1.911741302285,  40.276206679298],
                              [  1.911459837809,   5.734060142197,  40.276207633757],
                              [  0.000014412204,   1.911454211548,  41.627753102501],
                              [  0.000014412204,   5.734343846271,  41.627753102501],
                              [  0.000014412204,   0.000009394191,  42.979348694771],
                              [  0.000014412204,   3.822899028914,  42.979348694771],
                              [  1.911459229565,   0.000009394191,  44.330944286931],
                              [  1.911459229565,   3.822899028914,  44.330944286931],
                              [  1.911459229565,   1.911454211548,  45.682539879201],
                              [  1.911459229565,   5.734343846271,  45.682539879201],
                              [  0.000014412204,   1.911454211548,  47.034135471361],
                              [  0.000014412204,   5.734343846271,  47.034135471361],
                              [  0.000014412204,   0.000009394191,  48.385731063631],
                              [  0.000014412204,   3.822899028914,  48.385731063631],
                              [  1.911459229565,   0.000009394191,  49.737326655791],
                              [  1.911459229565,   3.822899028914,  49.737326655791],
                              [  1.911459229565,   1.911454211548,  51.088922248061],
                              [  1.911459229565,   5.734343846271,  51.088922248061],
                              [  0.000014412204,   1.911454211548,  52.440517840221],
                              [  0.000014412204,   5.734343846271,  52.440517840221],
                              [  0.000014412204,   0.000009394191,  53.792113432491],
                              [  0.000014412204,   3.822899028914,  53.792113432491],
                              [  1.911459229565,   0.000009394191,  55.143709024651],
                              [  1.911459229565,   3.822899028914,  55.143709024651],
                              [  1.911459229565,   1.911454211548,  56.495304616921],
                              [  1.911459229565,   5.734343846271,  56.495304616921],
                              [  0.000014412204,   1.911454211548,  57.846900209081],
                              [  0.000014412204,   5.734343846271,  57.846900209081],
                              [  0.000014412204,   0.000009394191,  59.198495801351],
                              [  0.000014412204,   3.822899028914,  59.198495801351],
                              [  1.911459229565,   0.000009394191,  60.550091393621],
                              [  1.911459229565,   3.822899028914,  60.550091393621],
                              [  1.911459229565,   1.911454211548,  61.901686985781],
                              [  1.911459229565,   5.734343846271,  61.901686985781],
                              [  0.000014412204,   1.911454211548,  63.253282577941],
                              [  0.000014412204,   5.734343846271,  63.253282577941],
                              [  0.000014412204,   0.000009394191,  64.604878170211],
                              [  0.000014412204,   3.822899028914,  64.604878170211],
                              [  1.911462755699,   0.000009155753,  65.955985329465],
                              [  1.911462755699,   3.822898790476,  65.955985329465],
                              [  1.911462755699,   1.91145397311 ,  67.307580921625],
                              [  1.911462755699,   5.734343607833,  67.307580921625],
                              [  0.000017938338,   1.91145397311 ,  68.659176513895],
                              [  0.000017938338,   5.734343607833,  68.659176513895],
                              [  0.000017938338,   0.000009155753,  70.010772106055],
                              [  0.000017938338,   3.822898790476,  70.010772106055],
                              [  1.911462755699,   0.000009155753,  71.362367698325],
                              [  1.911462755699,   3.822898790476,  71.362367698325],
                              [  1.911462755699,   1.91145397311 ,  72.713963290485],
                              [  1.911462755699,   5.734343607833,  72.713963290485],
                              [  0.000017938338,   1.91145397311 ,  74.065558882755],
                              [  0.000017938338,   5.734343607833,  74.065558882755],
                              [  0.000017938338,   0.000009155753,  75.417154474915],
                              [  0.000017938338,   3.822898790476,  75.417154474915]]*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('Selection 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])
central_region.addTags('Selection 1', [ 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])

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

