bulk_configuration.setCalculator(calculator)

# MolecularDynamics
diffraction_peak = DiffractionPeak(
    cutoff_radius=10.0*Ang,
    q_value=2.1/Ang,
    included_atoms=[Cobalt],
)

hook_function = SteeredMolecularDynamics(
    collective_variable=diffraction_peak,
    velocity=300/1000/ps,
    spring_constant=0.1*eV,
    measurement_interval=50,
)

method = Langevin(
    initial_velocity=MaxwellBoltzmannDistribution(
        temperature=1400.0*Kelvin,
        remove_center_of_mass_momentum=None
    ),
    reservoir_temperature=1400.0*Kelvin,
    friction=0.05*1/fs
)
constraints = [PositionRestraint(atom_selection='silicon', spring_constant=1.0*eV/Ang**2)]
md_trajectory_1 = MolecularDynamics(
    configuration=bulk_configuration,
    constraints=constraints,
    trajectory_filename='restrained_steered_MD.hdf5',
    steps=2000000,
    post_step_hook=[
        hook_function,
    ],
    measurement_hook=hook_function.measurements,
    log_interval=1000,
    method=method
)
