Dear Anders.
About the restart feature, I have been puzzled according to my test on this feature.
http://www.quantumwise.com/publications/tutorials/item/502-restarting-stopped-calculationsAs the tutorial mentioned, I reivsed my script of input file to
#----------------------------------------
# Device Calculator
#----------------------------------------
calculator = DeviceLCAOCalculator(
basis_set=basis_set,
exchange_correlation=exchange_correlation,
numerical_accuracy_parameters=device_numerical_accuracy_parameters,
iteration_control_parameters=device_iteration_control_parameters,
contour_parameters=contour_parameters,
electrode_calculators=
[left_electrode_calculator, right_electrode_calculator],
)
device_configuration.setCalculator(calculator)
device_configuration = nlread("checkpoint-0.4.nc")[0]
device_configuration.update(force_restart=True)
nlsave("Au-C6H4S2-Au-restart.nc", device_configuration)
transmission_spectrum = TransmissionSpectrum(
configuration=device_configuration,
energies=numpy.linspace(-2,2,100)*eV,
kpoints=MonkhorstPackGrid(6,6),
energy_zero_parameter=AverageFermiLevel,
infinitesimal=1.36057e-05*eV,
self_energy_calculator=RecursionSelfEnergy(),
)
nlsave("Au-C6H4S2-Au-restart.nc", transmission_spectrum)
nlprint(transmission_spectrum)
transmission_spectrum.current()
The file
checkpoint-0.4.nc is generated by
CheckpointHandler in a previous run (and this job terminated normally, that is the SCF convergence has been done).
Here, whether I use a checkpoint *nc file or a *nc file generated by
nlsave, the calculation always does from the scratch.
What wrong with my use of
force_restart=True ?
In constrast, for the following script,
#----------------------------------------
# Device Calculator
#----------------------------------------
calculator = DeviceLCAOCalculator(
basis_set=basis_set,
exchange_correlation=exchange_correlation,
numerical_accuracy_parameters=device_numerical_accuracy_parameters,
iteration_control_parameters=device_iteration_control_parameters,
contour_parameters=contour_parameters,
electrode_calculators=
[left_electrode_calculator, right_electrode_calculator],
)
device_configuration.setCalculator(calculator)
old_calculation = nlread("Au-C6H4S2-Au-0.4.nc", DeviceConfiguration)[0]
device_configuration.setCalculator(
calculator(electrode_voltages=(0.2*Volt, -0.2*Volt)),
initial_state=old_calculation,
)
device_configuration.update()
nlsave("Au-C6H4S2-Au-initial2.nc", device_configuration)
transmission_spectrum = TransmissionSpectrum(
configuration=device_configuration,
energies=numpy.linspace(-2,2,400)*eV,
kpoints=MonkhorstPackGrid(6,6),
energy_zero_parameter=AverageFermiLevel,
infinitesimal=1.36057e-05*eV,
self_energy_calculator=RecursionSelfEnergy(),
)
nlsave("Au-C6H4S2-Au-initial2.nc", transmission_spectrum)
nlprint(transmission_spectrum)
transmission_spectrum.current()
The sentance
old_calculation = nlread("Au-C6H4S2-Au-0.4.nc", DeviceConfiguration)[0]
also can be written as
old_calculation = nlread("Au-C6H4S2-Au-0.4.nc")[0]
and
Au-C6H4S2-Au-0.4.nc file can be either the one generated by
CheckpointHandler or
nlsave, the continue calculation is OK.
So, what is the story for the
restart calculation by using
force_restart=True? And what is the
difference beween the *nc files generated by
CheckpointHandler and
nlsave for a continue scf calcualtion?
With best regards,
/Guangping