7
« on: March 15, 2012, 14:42 »
If I execute an ab initio molecular dynamics simulation on 6-ZGNR
at room temperature (T=300 K) with a time step of 1 fs. Is it right for the following script? Do I need to make some revisions for some parameters in the following scrip? Who can provide the corresponding tutorial for molecular dynamics simulation in ATK 11.8. Thanks!
# -------------------------------------------------------------
# Bulk configuration
# -------------------------------------------------------------
# Set up lattice
vector_a = [10.0, 0.0, 0.0]*Angstrom
vector_b = [0.0, 23.56888, 0.0]*Angstrom
vector_c = [0.0, 0.0, 2.46100171044]*Angstrom
lattice = UnitCell(vector_a, vector_b, vector_c)
# Define elements
elements = [Carbon, Carbon, Carbon, Carbon, Carbon, Carbon, Carbon, Carbon,
Carbon, Carbon, Carbon, Carbon, Hydrogen, Hydrogen]
# Define coordinates
cartesian_coordinates = [[ 5. , 17.46788 , 0. ],
[ 5. , 6.101 , 0. ],
[ 5. , 6.81143 , 1.23050086],
[ 5. , 8.23229 , 1.23050086],
[ 5. , 8.94272 , 0. ],
[ 5. , 10.36358 , 0. ],
[ 5. , 11.07401 , 1.23050086],
[ 5. , 12.49487 , 1.23050086],
[ 5. , 13.2053 , 0. ],
[ 5. , 14.62616 , 0. ],
[ 5. , 15.33659 , 1.23050086],
[ 5. , 16.75745 , 1.23050086],
[ 5. , 18.56888 , 0. ],
[ 5. , 5. , 0. ]]*Angstrom
# Set up configuration
bulk_configuration = BulkConfiguration(
bravais_lattice=lattice,
elements=elements,
cartesian_coordinates=cartesian_coordinates
)
# -------------------------------------------------------------
# Calculator
# -------------------------------------------------------------
numerical_accuracy_parameters = NumericalAccuracyParameters(
grid_mesh_cutoff=150.0*Hartree,
k_point_sampling=(1, 1, 100),
)
iteration_control_parameters = IterationControlParameters(
tolerance=1e-05,
)
calculator = LCAOCalculator(
numerical_accuracy_parameters=numerical_accuracy_parameters,
iteration_control_parameters=iteration_control_parameters,
)
bulk_configuration.setCalculator(calculator)
nlprint(bulk_configuration)
bulk_configuration.update()
nlsave('analysis.nc', bulk_configuration)
initial_velocity = None
method = VelocityVerlet(
time_step=1.0*femtoSecond,
initial_velocity=initial_velocity
)
molecular_dynamics = MolecularDynamics(
bulk_configuration,
constraints=[],
log_filename='trajectory.nc',
steps=1000,
log_interval=1,
method=method
)
nlsave('analysis.nc', molecular_dynamics)
nlprint(molecular_dynamics)