
markov_chain = nlread('akmc_markov_chain.nc')[0]

initial_state_id = 0
final_state_id = 17

initial_conf = markov_chain.getStateConfiguration(initial_state_id)
final_conf = markov_chain.getStateConfiguration(final_state_id)

# -------------------------------------------------------------
# Calculator
# -------------------------------------------------------------
#----------------------------------------
# Basis Set
#----------------------------------------
basis_set = [
    GGABasis.Boron_DoubleZetaPolarized,
    GGABasis.Silicon_SingleZetaPolarized,
    ]

#----------------------------------------
# Exchange-Correlation
#----------------------------------------
exchange_correlation = GGA.PBES

k_point_sampling = MonkhorstPackGrid(
    na=1,
    nb=1,
    nc=1,
    shift_to_gamma=[True, True, True],
    )
numerical_accuracy_parameters = NumericalAccuracyParameters(
    k_point_sampling=k_point_sampling,
    density_mesh_cutoff=50.0*Hartree
    )

calculator = LCAOCalculator(
    basis_set=basis_set,
    exchange_correlation=exchange_correlation,
    numerical_accuracy_parameters=numerical_accuracy_parameters,
    )
    
initial_conf.setCalculator(calculator)
final_conf.setCalculator(calculator)

# -------------------------------------------------------------
# Optimize Geometry - Initial conf
# -------------------------------------------------------------
initial_conf = OptimizeGeometry(
        initial_conf,
        max_forces=0.01*eV/Ang,
        max_steps=200,
        max_step_length=0.2*Ang,
        trajectory_filename=None,
        disable_stress=True,
        optimizer_method=LBFGS(),
        )
nlsave('initial_conf.nc', initial_conf)

# -------------------------------------------------------------
# Optimize Geometry - Final conf
# -------------------------------------------------------------
final_conf = OptimizeGeometry(
        final_conf,
        max_forces=0.01*eV/Ang,
        max_steps=200,
        max_step_length=0.2*Ang,
        trajectory_filename=None,
        disable_stress=True,
        optimizer_method=LBFGS(),
        )
nlsave('final_conf.nc', final_conf)
