pytint input file#

The inputfile is yaml formatted. In this section the possible keys in the inputfile is discussed. The input file consists of two main keys, and four separate blocks. For a sample of the inputfile see the end of this document. The two main keys are as shown below-

main keys#

  • element : Chemical symbol(s) of the element(s) in the simulation.
    type: string/list of strings
    example:

    element: 'Cu'
    element: ['Cu', 'Zr']
    
  • mass : Mass of the element(s) in the simulation. It should follow the same order as that of element.
    type: float/list of floats
    example:

    mass: 63.546
    mass: [63.546, 91.224]
    

calculation block#

Other than these two main keys, all other options are specified in blocks. The first block is the calculations block. This block can list all the calculations that pytint should perform and it can have more than one entry. A sample calculation block is shown below.

calculations:
- mode: ts 
  temperature: [1300, 1400]
  pressure: [0]
  lattice: [FCC]
  repeat: [2, 2, 2]
  state: solid
  nsims: 1

The various keys are-

  • mode : Calculation mode. Either fe for free energy calculations or ts for temperature sweep.
    type: string, fe or ts
    example:

    mode: fe
    mode: ts
    
  • temperature : Temperatures for the simulation in Kelvin.
    type: list of floats
    example:

    temperature: [1200, 1300]
    

    The way temperature is used pytint depends on the selected mode of calculation. If the mode is fe, a free energy calculation is launched for each temperature on the list. If the mode is ts, a temperature sweep is carried out. In that case, only two values of temperature should be specified.

  • pressure : Pressure for the simulation in bars.
    type: list of floats
    example:

    pressure: [0, 10000]
    

    For each pressure specified in the list, one calculation will be started. For example, in the following combination-

    mode: fe
    temperature: [1000, 1200]
    pressure: [0, 10000]
    

    A total of 2 temperatures * 2 pressures, 4 calculations will be started. If the mode is ts for the same configuration above, 2 calculations will be started.

  • lattice : Lattice to be used for the calculations.
    type: string of list of strings
    example:

    lattice: FCC
    lattice: [FCC, LQD]
    lattice: [FCC, conf.data]
    

    The lattice option can use either LAMMPS for creation of input structure or use an input file in the LAMMPS data format. To use LAMMPS to create the structure, the keyword specified should be from the following: BCC, FCC, HCP, DIA, SC and LQD. LAMMPS lattice creation can only be used for single species. If LQD is specified, a solid structure will be first created and melted within the MD run. Alternatively, a LAMMPS data file can be specified which contains the configuration.

  • state : The protocol to be used for the calculation.
    type: string of list of strings
    example:

    state: solid
    state: [solid, liquid]
    

    The state input is closely related to the lattice command. It should be of the same length as the lattice input. For each of the lattice specified, state command specifies which reference state to use.

  • lattice_constant : lattice constant for input structures
    type: list of floats
    example:

    lattice_constant: 3.68
    lattice_constant: [3.68, 5.43]
    

    Lattice constant values to be used for initial structure creation. Only required if the structure is created through LAMMPS. If not specified, the experimental lattice constant will be used.

  • iso : Specify if the barostat is isotropic or anisotropic.
    type: list of bools
    example:

    iso: True
    iso: [True, False]
    

    Specify whether the barostat will control the pressure isotropically or anisotropically.

  • repeat : The number of unit cells to be replicated in each direction.
    type: list of ints of length 3
    example:

    repeat: [3,3,3]
    

    repeat command specifies the number of unit cells required in each x, y and z directions. This is only used if lattice command uses one of the LAMMPS structure keywords.

  • nsims : The number of backward and forward interactions to be carried out.
    type: int
    example:

    nsims: 3
    

md block#

MD block consists of the various options required for the MD runs. An example block is given below and the keys are discussed.

md:
  pair_style: eam/alloy
  pair_coeff: "* * Cu_EAM/Cu01.eam.alloy Cu"
  timestep: 0.001
  tdamp: 0.1
  pdamp: 0.1
  te: 10000
  ts: 15000
  • pair_style : The pair style command for LAMMPS.
    type: string
    example:

    pair_style: eam/alloy
    pair_style: eam/fs
    pair_style: pace
    
  • pair_coeff : The pair coeff command for LAMMPS.
    type: string
    example:

    pair_coeff: "* * Cu_EAM/Cu01.eam.alloy Cu"
    pair_coeff: "* * CuZr_EAM/CuZr.eam.fs Cu Zr"
    
  • timestep : The timestep for MD in picoseconds.
    type: float
    example:

    timestep: 0.001
    
  • tdamp : The thermostat damping for MD in time units.
    type: float
    example:

    tdamp: 0.1
    
  • pdamp : The pressure damping for MD in time units.
    type: float
    example:

    pdamp: 0.1
    
  • te : The number of time steps for equilibrating the system.
    type: int
    example:

    te: 10000
    
  • ts : The number of time steps for switching between the system of interest and reference system.
    type: int
    example:

    ts: 10000
    

queue block#

This block consints of the options for specifying the scheduler for carrying out the calculations. An example block is given below-

queue:
  scheduler: local
  cores: 2
  jobname: ti
  walltime: "23:50:00"
  queuename: shorttime
  memory: 3GB
  modules:
    - anaconda/4
  commands:
    - conda activate env
  • scheduler : The scheduler to be used for the job. Can be local, slurm or sge.
    type: string
    example:

    scheduler: slurm
    

    The code has been tested only on local and slurm.

  • cores : The number of cores to be used for the job.
    type: int
    example:

    cores: 4
    
  • jobname : Name of the job.
    type: string
    example:

    jobname: cu
    

    Not used for local.

  • walltime : Walltime for the job.
    type: string
    example:

    walltime: "23:50:00"
    

    Not used for local.

  • queuename : Name of the queue.
    type: string
    example:

    queuename: "shorttime"
    

    Not used for local.

  • memory : memory to be used per core.
    type: string
    example:

    memory: 3GB
    

    Not used for local.

  • commands : Command that will be run before the actual calculations are carried out.
    type: list of strings
    example:

    command:
      - source .bashrc
      - conda activate ace
      - module load lammps
    

    This section can be used to specify commands that need to be run before the actual calculation. If the calculations are run within a conda environment, the activate command for conda should be specified here. If additional modules need to be loaded, that can also be specified here.

conv block#

This block helps to tune the internal convergence parameters that pytint uses. Generally, tuning these parameters are not required.

conv:
   k_tol: 0.01
   solid_frac: 0.7
   liquid_frac: 0.05
   p_tol: 0.5
  • k_tol : tolerance for the convergence of spring constant calculation.
    type: float
    example:

    ktol: 0.01
    
  • solid_frac : The minimum amount of solid particles that should be there in solid.
    type: float
    example:

    solid_frac: 0.7
    
  • liquid_frac : Maximum fraction of solid atoms allowed in liquid after melting.
    type: float
    example:

    liquid_frac: 0.05
    
  • p_tol : tolerance for the convergence of pressure.
    type: float
    example:

    p_tol: 0.5