@params [params] @nuclei [x y z charge] @electrons [x y z spin r] @nuc_velocities [# vx vy vz] @elec_velocities [# vx vy vz vr] @nuc_masses [# mx my mz] @elec_masses [# mx my mz mr] @restraints coordinate # [x y z] distance # # [d] angle # # # [ang] dihedral # # # # [ang] line # # # (at least 3) plane # # # # (at least 4) tether # # (at least 2)
The @params section describes the type of calculation to execute and related parameters, while the @nuclei and @electrons sections list the coordinates of the nuclei and electrons, with positions and electron radii in units of bohr, charges in electron charges, and spin = 1 for spin up and -1 for spin down. In these sections, appending the character # to a nuclear position, or an electron position or size, will freeze that coordinate during minimization or dynamics runs.
The @nuc_velocities and @elec_velocities section make it possible to specify initial velocities for individual particles. Not all the particles have to be listed here - if a particle does not appear in this section, the initial velocity will be set to zero, or to a random velocity from a Maxwell-Boltzmann distribution if a start_temperature is given. The index count # starts at 1.
Velocity units are in bohr per atu, where 1 atu = 1.03275 fs. As an example, the kinetic energy of a carbon nucleus moving at 1 bohr/atu would be
The @nuc_masses and @elec_masses sections allow the user to assign different masses to different coordinates. If no entry is made, the program defaults to stored nuclei masses based on atomic weights, and sets the electron mass to the value given by electron_mass, using
. Note that the factor of
present in the semiclasssical equation of motion for the radial electron coordinate must be explicitly included. Masses are in atomic mass units.
Constraints are quantities that remain fixed during a simulation. As mentioned above, appending # to a nuclear coordinate in the @nuclei section, or an electron coordinate in the @electrons section, will freeze the coordinate during a minimization or dynamics run.
Restraints are conditions the program tries to satisfy during a simulation through use of appropriate restraining potentials. The condition may not be exactly met during the simulation, and may never be met if a large enough force pushes the system away from the restraint. The restraining potentials modify the internal forces and energies, but only the non-restrained energies and forces are returned back to the user.
Restraints can act between any collection of nuclei and electrons. When referencing particles, the prefix "e" is used to refer to an electron, e.g. 4 refers to nucleus 4, but e5 refers to electron 5.
The following restraint types are supported by eFF:
[position_nuc] 3 0.500000 1.000000 0.500000To find out what these numbers mean, we look for the a line containing the header tag position_nuc_header:
[position_nuc_header] Z x y zIf we apply the grep command to the output file, we can selectively list the lines that are related to the positions of the nuclei:
% cat output.eff | grep position_nuc
[position_nuc_header] Z x y z
[position_nuc] 1 0.000000 0.000000 0.000000
[position_nuc] 2 0.000000 0.500000 0.000000
[position_nuc] 3 0.500000 1.000000 0.500000
...
and so on. The output file is divided into several sections, listed below.
This section lists the values of all the parameters known to the program, including default parameters not explicitly specified by the user.
[params] param = value
This section lists the number of nuclei and electrons, the charge on the nuclei and their atomic label, and the spins of the electrons, all of which are assumed to remain fixed during the calculation.
[num_nuclei] [num_electrons] [nuc_header] index Z label [nuc] [elec_header] index spin [elec]
[Minimize_iter_header], # iters, # func evals, f, grad2 [Minimize_iter]
Particle energies and forces (section 3.2.2), positions (section 3.2.2), and restraints (section 3.2.2) are then printed if desired.
[dynamics_header], t(fs), kinetic_e, potential_e, total_e, target_temp, measured_temp, p_ke_rigid, p_ke_flexible, p_pe_rigid, p_pe_flexible [dynamics_iter]
Particle energies and forces (section 3.2.2), positions (section 3.2.2), velocities (section 3.2.2), and restraints (section 3.2.2) are then printed if desired. Also, if adaptive_step_size is true, the following message is printed whenever the step size is shrunk:
[adaptive_step_size] step size set to [time_step], energy difference is [delta_e], try [num_tries] of [max_num_tries].
[total_dipole] in Debye [total_energy] in hartrees [pressure_rigid] in GPa [pressure_flexible] in GPa [cpu_time_elapsed] in seconds [total_time_elapsed] in seconds
[energy_force_nuc_header], #, E, fx, fy, fz [energy_force_nuc] [energy_force_elec_header], #, E, fx, fy, fz, fr [energy_force_elec]
[position_nuc_header], #, x, y, z [position_nuc] [position_elec_header], #, x, y, z, r [position_elec]
[velocity_nuc_header], #, vx, vy, vz [velocity_nuc] [velocity_elec_header], #, vx, vy, vz, vr [velocity_elec]
[restraint_coordinate_header], idx, x0, y0, z0, value [restraint_coordinate] [restraint_distance_header], idx1, idx2, distance, value [restraint_distance] [restraint_angle_header], idx1, idx2, idx3, angle, value [restraint_angle] [restraint_dihedral_header], idx1, idx2, idx3, idx4, dihedral, value [restraint_dihedral] [restraint_line_header], idx, distance [restraint_line] [restraint_plane_header], idx, distance [restraint_plane] [restraint_tether_header], idx [restraint_tether]
The restart file is identical in format to the input .cfg file. All parameters are printed out, both the ones specified explicitly by the user, and the ones taken from default settings. Nuclear and electron coordinates and velocities are taken from the last saved step of the calculation; steps are saved every print_every steps. User-specified masses and restraint settings do not change during the calculation, and their values should be identical to those read in from the input file.