# -------------------------------------------------------------
# Bulk Configuration
# -------------------------------------------------------------

# Set up lattice
vector_a = [3.84001408591, 0.0, 0.0]*Angstrom
vector_b = [0.0, 3.84001408591, 0.0]*Angstrom
vector_c = [1.92000704296, 1.92000704296, 2.7153]*Angstrom
lattice = UnitCell(vector_a, vector_b, vector_c)

# Define elements
elements = [Silicon, Silicon]

# Define coordinates
fractional_coordinates = [[ 0.25,  0.75,  0.5 ],
                          [ 0.  ,  0.  ,  1.  ]]

# Set up configuration
bulk_configuration = BulkConfiguration(
    bravais_lattice=lattice,
    elements=elements,
    fractional_coordinates=fractional_coordinates
    )

# -------------------------------------------------------------
# Calculator
# -------------------------------------------------------------
#----------------------------------------
# Basis Set
#----------------------------------------
basis_set = [
    CerdaHuckelParameters.Silicon_GW_diamond_Basis,
    ]

numerical_accuracy_parameters = NumericalAccuracyParameters(
    k_point_sampling=(5, 5, 5),
    )

calculator = HuckelCalculator(
    basis_set=basis_set,
    numerical_accuracy_parameters=numerical_accuracy_parameters,
    )

bulk_configuration.setCalculator(calculator)
nlprint(bulk_configuration)
bulk_configuration.update()
nlsave('si_100_cbs.nc', bulk_configuration)

# -------------------------------------------------------------
# Complex Bandstructure
# -------------------------------------------------------------
complex_bandstructure = ComplexBandstructure(
    configuration=bulk_configuration,
    energies=numpy.linspace(-15,10,501)*eV,
    k_point=(0,0),
    energy_zero_parameter=FermiLevel,
    )
nlsave('si_100_cbs.nc', complex_bandstructure)