# -------------------------------------------------------------
# Configurations
# -------------------------------------------------------------
surface_slab = nlread('Aluminum_Slab.hdf5')[-1]
teflon_monomer = nlread('Teflon_Monomer.hdf5')[-1]

# -------------------------------------------------------------
# Teflon Polymer Sequence
# -------------------------------------------------------------
polymer_sequence = PolymerSequence(
    monomer_configurations=[teflon_monomer],
    number_of_monomers=20,
    number_of_chains=9,
    tactic_ratio=0.5,
)

# -------------------------------------------------------------
# Polymer Monte Carlo Builder
# -------------------------------------------------------------
polymer_builder = PolymerMonteCarloBuilder(
    polymer_sequence=polymer_sequence,
    host_configuration=surface_slab,
    monte_carlo_temperature=300.0*Kelvin,
    angle_sampling_points=20,
    repack_molecules=True,
)
bulk_configuration = polymer_builder.buildPolymerConfiguration()
nlsave('Teflon_Aluminum_Interface.hdf5', bulk_configuration)

# -------------------------------------------------------------
# Force Capped Equilibration
# -------------------------------------------------------------
equilibration_method = ForceCappedEquilibration(
    temperature=300.00*Kelvin,
    md_steps_per_force_capped_simulation=40000,
    md_time_step=0.50*fs,
    force_capped_simulations=4,
    starting_factor=1.040,
    ending_factor=0.800,
    fixed_indices=bulk_configuration.indicesFromTags('HOST_CONFIGURATION'),
)
bulk_configuration = equilibration_method.runEquilibration(bulk_configuration)
nlsave('Teflon_Aluminum_Interface.hdf5', bulk_configuration)
