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

# Set up lattice
vector_a = [5.13498110527, 0.0, 0.0]*Angstrom
vector_b = [0.0, -3.45897297536, 0.0]*Angstrom
vector_c = [0.0, 0.0, 9.2392788066]*Angstrom
left_electrode_lattice = UnitCell(vector_a, vector_b, vector_c)

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

# Define coordinates
left_electrode_coordinates = [[ 1.953948519928,  0.            ,  0.221181997402],
                              [ 2.601709243681,  0.            ,  1.347130855356],
                              [ 3.910323049787,  0.            ,  1.371393448854],
                              [ 1.969296828916,  0.            ,  2.522605893448],
                              [ 0.028583840044,  0.            ,  2.90092366278 ],
                              [ 2.56749055263 , -1.72948648768 ,  4.398457405883],
                              [ 4.521439072558, -1.72948648768 ,  4.840821400721],
                              [ 0.03421869104 , -1.72948648768 ,  5.966770258642],
                              [ 1.342832497147, -1.72948648768 ,  5.991032852173],
                              [ 4.536787381546, -1.72948648768 ,  7.142245296767],
                              [ 2.596074392674, -1.72948648768 ,  7.520563066099],
                              [-0.00000000001 ,  0.            ,  9.018096809202]]*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 = [5.13498110527, 0.0, 0.0]*Angstrom
vector_b = [0.0, -3.45897297536, 0.0]*Angstrom
vector_c = [0.0, 0.0, 7.7064545086]*Angstrom
right_electrode_lattice = UnitCell(vector_a, vector_b, vector_c)

# Define elements
right_electrode_elements = [Oxygen, Oxygen, Lithium, Lithium, Oxygen, Oxygen, Lithium, Lithium,
                            Oxygen, Oxygen, Lithium, Lithium, Oxygen, Oxygen, Lithium, Lithium]

# Define coordinates
right_electrode_coordinates = [[ 1.711652750657,  0.000000000003,  0.571658826021],
                               [ 4.279143303292, -1.729486487677,  0.571658826021],
                               [ 3.423320798822,  0.000000000003,  1.35490491344 ],
                               [ 0.855830246182, -1.729486487677,  1.35490491344 ],
                               [ 1.711652750657,  0.000000000003,  2.138151000825],
                               [ 4.279143303292, -1.729486487677,  2.138151000825],
                               [ 0.            ,  0.            ,  3.281468652901],
                               [ 2.567490552635, -1.72948648768 ,  3.281468652901],
                               [ 3.423328033122,  0.000000000003,  4.420513667495],
                               [ 0.855837480487, -1.72948648768 ,  4.420513667495],
                               [ 1.711660217628,  0.000000000003,  5.208132167721],
                               [ 4.279150770263, -1.729486487677,  5.208132167721],
                               [ 3.423328033122,  0.000000000003,  5.995750668048],
                               [ 0.855837480487, -1.72948648768 ,  5.995750668048],
                               [ 0.            ,  0.            ,  7.134795682575],
                               [ 2.567490552635, -1.72948648768 ,  7.134795682575]]*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 = [5.13498110527, 0.0, 0.0]*Angstrom
vector_b = [0.0, -3.45897297536, 0.0]*Angstrom
vector_c = [0.0, 0.0, 34.241943459]*Angstrom
central_region_lattice = UnitCell(vector_a, vector_b, vector_c)

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

# Define coordinates
central_region_coordinates = [[  1.953948519928,   0.            ,   0.221181997402],
                              [  2.601709243681,   0.            ,   1.347130855356],
                              [  3.910323049787,   0.            ,   1.371393448854],
                              [  1.969296828916,   0.            ,   2.522605893448],
                              [  0.028583840044,   0.            ,   2.90092366278 ],
                              [  2.56749055263 ,  -1.72948648768 ,   4.398457405883],
                              [  4.521439072558,  -1.72948648768 ,   4.840821400721],
                              [  0.03421869104 ,  -1.72948648768 ,   5.966770258642],
                              [  1.342832497147,  -1.72948648768 ,   5.991032852173],
                              [  4.536787381546,  -1.72948648768 ,   7.142245296767],
                              [  2.596074392674,  -1.72948648768 ,   7.520563066099],
                              [ -0.00000000001 ,   0.            ,   9.018096809202],
                              [  1.953948519918,   0.            ,   9.460460804006],
                              [  2.60170924367 ,   0.            ,  10.586409661927],
                              [  3.910323049777,   0.            ,  10.610672255458],
                              [  1.969296828906,   0.            ,  11.761884700052],
                              [  0.028583840034,   0.            ,  12.140202469384],
                              [  2.56749055262 ,  -1.72948648768 ,  13.637736212487],
                              [  4.521439072548,  -1.72948648768 ,  14.080100207325],
                              [  0.03421869103 ,  -1.72948648768 ,  15.206049065212],
                              [  1.342832497137,  -1.72948648768 ,  15.230311658777],
                              [  4.536787381541,  -1.72948648768 ,  16.381524103371],
                              [  2.596074392664,  -1.72948648768 ,  16.759841872703],
                              [ -0.000000000021,   0.            ,  18.257375615806],
                              [  1.711652750657,   0.000000000003,  19.400693267848],
                              [  4.279143303292,  -1.729486487677,  19.400693267848],
                              [  3.423320798822,   0.000000000003,  20.183939355267],
                              [  0.855830246182,  -1.729486487677,  20.183939355267],
                              [  1.711652750657,   0.000000000003,  20.967185442652],
                              [  4.279143303292,  -1.729486487677,  20.967185442652],
                              [  0.            ,   0.            ,  22.110503094727],
                              [  2.567490552635,  -1.72948648768 ,  22.110503094727],
                              [  3.423328033122,   0.000000000003,  23.249548109322],
                              [  0.855837480487,  -1.72948648768 ,  23.249548109322],
                              [  1.711660217628,   0.000000000003,  24.037166609548],
                              [  4.279150770263,  -1.729486487677,  24.037166609548],
                              [  3.423328033122,   0.000000000003,  24.824785109875],
                              [  0.855837480487,  -1.72948648768 ,  24.824785109875],
                              [  0.            ,   0.            ,  25.963830124402],
                              [  2.567490552635,  -1.72948648768 ,  25.963830124402],
                              [  1.711652750657,   0.000000000003,  27.107147776444],
                              [  4.279143303292,  -1.729486487677,  27.107147776444],
                              [  3.423320798822,   0.000000000003,  27.890393863863],
                              [  0.855830246182,  -1.729486487677,  27.890393863863],
                              [  1.711652750657,   0.000000000003,  28.673639951248],
                              [  4.279143303292,  -1.729486487677,  28.673639951248],
                              [  0.            ,   0.            ,  29.816957603323],
                              [  2.567490552635,  -1.72948648768 ,  29.816957603323],
                              [  3.423328033122,   0.000000000003,  30.956002617918],
                              [  0.855837480487,  -1.72948648768 ,  30.956002617918],
                              [  1.711660217628,   0.000000000003,  31.743621118144],
                              [  4.279150770263,  -1.729486487677,  31.743621118144],
                              [  3.423328033122,   0.000000000003,  32.531239618471],
                              [  0.855837480487,  -1.72948648768 ,  32.531239618471],
                              [  0.            ,   0.            ,  33.670284632998],
                              [  2.567490552635,  -1.72948648768 ,  33.670284632998]]*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])
central_region.addTags('Right Interface', [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])

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

