# -*- coding: utf-8 -*-

e_cut_list = range(20,110,10)*Hartree

for e_cut in e_cut_list:

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

    # Set up lattice
    lattice = FaceCenteredCubic(3.61496*Angstrom)

    # Define elements
    elements = [Copper]

    # Define coordinates
    fractional_coordinates = [[ 0.,  0.,  0.]]

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

    # -------------------------------------------------------------
    # Calculator
    # -------------------------------------------------------------
    k_point_sampling = MonkhorstPackGrid(
        na=7,
        nb=7,
        nc=7,
        )
    numerical_accuracy_parameters = NumericalAccuracyParameters(
        k_point_sampling=k_point_sampling,
        density_mesh_cutoff=e_cut*4,
        )

    calculator = PlaneWaveCalculator(
        wave_function_cutoff=e_cut,
        numerical_accuracy_parameters=numerical_accuracy_parameters,
        )
    bulk_configuration.setCalculator(calculator)
    nlprint(bulk_configuration)
    bulk_configuration.update()
    nlsave('e-cut-conv.hdf5', bulk_configuration)

    # -------------------------------------------------------------
    # Total Energy
    # -------------------------------------------------------------
    total_energy = TotalEnergy(bulk_configuration)
    nlsave('e-cut-conv.hdf5', total_energy)
    nlprint(total_energy)
