# -*- coding: utf-8 -*-
# -------------------------------------------------------------
# Analysis from File
# -------------------------------------------------------------
path = 'au-h2-au.nc'
configuration = nlread(path, object_id='gID000')[0]

# -------------------------------------------------------------
# Dynamical Matrix
# -------------------------------------------------------------
dynamical_matrix = DynamicalMatrix(
    configuration=configuration,
    repetitions=(1, 1, 1),
    atomic_displacement=0.01*Angstrom,
    acoustic_sum_rule=True,
    symmetrize=True,
    finite_difference_method=Central,
    processes_per_displacement=1,
    constraints=[0, 1, 2, 3, 4, 5, 8, 9, 10, 11, 12, 13],
    constrain_electrodes=True,
    use_equivalent_bulk=True,
    )
nlsave('analysis.nc', dynamical_matrix)

# -------------------------------------------------------------
# Vibrational Mode
# -------------------------------------------------------------
vibrational_mode = VibrationalMode(
    configuration=configuration,
    dynamical_matrix=dynamical_matrix,
    kpoint_fractional=[0, 0, 0],
    mode_indices=None,
    )
nlsave('analysis.nc', vibrational_mode)

# -------------------------------------------------------------
# Hamiltonian Derivatives
# -------------------------------------------------------------
hamiltonian_derivatives = HamiltonianDerivatives(
    configuration=configuration,
    repetitions=(1, 1, 1),
    atomic_displacement=0.01*Angstrom,
    constraints=[0, 1, 2, 3, 4, 5, 8, 9, 10, 11, 12, 13],
    use_equivalent_bulk=True,
    )
nlsave('analysis.nc', hamiltonian_derivatives)

# -------------------------------------------------------------
# Inelastic Transmission Spectrum
# -------------------------------------------------------------
inelastic_transmission_spectrum = InelasticTransmissionSpectrum(
    configuration=configuration,
    dynamical_matrix=dynamical_matrix,
    hamiltonian_derivatives=hamiltonian_derivatives,
    energies=numpy.linspace(-0.4, 0.4, 101)*eV,
    kpoints=MonkhorstPackGrid(1, 1),
    qpoints=MonkhorstPackGrid(1, 1),
    self_energy_calculator=RecursionSelfEnergy(),
    energy_zero_parameter=AverageFermiLevel,
    infinitesimal=1e-06*eV,
    phonon_modes=None,
    method=LOE,
    spectral_representation=True,
    electrode_extensions=[0, 0],
)
nlsave('analysis.nc', inelastic_transmission_spectrum)

# -------------------------------------------------------------
# Inelastic Transmission Spectrum
# -------------------------------------------------------------
inelastic_transmission_spectrum = InelasticTransmissionSpectrum(
    configuration=configuration,
    dynamical_matrix=dynamical_matrix,
    hamiltonian_derivatives=hamiltonian_derivatives,
    energies=numpy.linspace(-0.4, 0.4, 101)*eV,
    kpoints=MonkhorstPackGrid(1, 1),
    qpoints=MonkhorstPackGrid(1, 1),
    self_energy_calculator=RecursionSelfEnergy(),
    energy_zero_parameter=AverageFermiLevel,
    infinitesimal=1e-06*eV,
    phonon_modes=None,
    method=XLOE,
    spectral_representation=True,
    electrode_extensions=[0, 0],
)
nlsave('analysis.nc', inelastic_transmission_spectrum)

# -------------------------------------------------------------
# Transmission Eigenstate
# -------------------------------------------------------------
transmission_eigenstate = TransmissionEigenstate(
    configuration=configuration,
    energy=0*eV,
    k_point=[0, 0],
    quantum_number=0,
    contributions=Left,
    energy_zero_parameter=AverageFermiLevel,
    )
nlsave('analysis.nc', transmission_eigenstate)
