Table of Contents

Zdenka Chromcova 2010/03/18 11:23

Using:

Switching the classic MD on/off

The using of classic potential could be switched on/off in file fireball.in :

Settings of parameters for classic MD

in directory Cdata are two types of files:

  1. Cdata/usePotential.in (define parameters of simulation)
  2. Cdata/NAME-OF-POTENTIAL-DEFINED-IN-FILE-ABOVE.dat (defines the parameters of potential)

usePotential.in

In this file is defined which potential will be used and other parameters used in classical MD only.

Format of file usePotential.in:

  all Lennard-Jones

or there could be defined potential for each pair: usePotential.in (not useful at this moment):

  H-H Lennard-Jones
  Si Lennard-Jones
  Si-H Lennard-Jones

Note: all pair potentials have to be of the same type. Thus this second type of definition of potential is not very usefull at this moment.

In the directory Cdata have to exist file with parameters of potential with name NAME-OF-POTENTIAL.dat (in case above the program will look for file Lennard-Jones.dat).

The implicit value is each 1000th cycle. The example of the definition:

  freq_of_outputs 100

Files with potentials

The parameters of potential is defined in files with name: Cdata/NAME-OF-POTENTIAL.dat . The string NAME-OF-POTENTIAL have to match with string which define potential in file usePotential.in .

In this file are parameters for pair potential for different types of atoms in shape: Atom1-Atom2 params = [ params separate by comas ] . Comments starts with character “#”. The example for for Lennard-Jones potential is below:

Lennard-Jones.dat:

  #                   epsilon         ro          cutoff  
  # shape of potential( 4epsilon( (ro/r)**12 - 2(ro/r)**6) cutoff = 2.5 ro/2**(1/6)
  H-H     params = [      2   ,       2.4     ,   9.35 ]
  Si-Si   params = [      2   ,       1.4     ,   9.35 ]
  Si-H    params = [      2   ,       1.9     ,   9.35 ]

In these files could be defined more pairs than will be used in simulations. If the program do not find an pair defined in basisfile it ends with error message which pair is missing.

Supported potentials

At this moment there is only Lennard-Jones potential. There going to be addaed also RGL, EAM, MEAM and Tersoff potential.

List of potentials:

Example

The input files for a nanocluster of Pd13 is here: pd.tar.gz. The initial configuration (in.bas file) is in global minima according a program for MD of Ficcardo Ferrando using the same shape of RGL potential with the same parameters. The value of total energy in the global minima is -42.09318eV (according Riccardo's program). The shape of the cluster in GM is icosahedral.

New files and changes in Fireball:

New files

Because of classic MD there were added these files:

Details of files:

DASSEMBLERS/getforces_classic.f90

Here is defined the main procedure for classic_forces which call the relevant procedure for given potential. The “relevant procedures” will be defined in the individual files in future.

MODULES/classicMD.f90

Definition of global variable “*Potential”, user-defined types and interface for subroutines and functions.

NEIGHBORS/neighbors.f90, MODULES/neighbor_map.f90, ALLOCATE/allocate_neigh.f90, NEIGHBOR/find_neigh_max_class.f90, INITIALIZERS/initbasics.f90

if iclassicMD = 1 there is allocate and initialized also new arrays:

  !CHROM neighbor for classical MD simulation (MODULES/neighbor_map.f90)
  integer :: neigh_max_class = 0 !size of arrays
  integer, dimension(:,:),   allocatable     ::  neigh_classic
  integer, dimension(:),     allocatable     ::  neighn_classic
  integer, dimension(:,:),   allocatable     ::  neigh_b_classic
  !END CHROM

The arrays of quantum neighbors are kept unchanged to should be used in future eventually (i.e. there should be implemented the combination of classic and quantum simulation)

Changes in existing files

The code which was added or changed because of classic MD (by Zdenka Chromcova) is between tags:

The list of files which were changed:

i.e. this (2x3xN loops)

vatom(:,1:natoms) = vatom(:,1:natoms)*vscale 
xdot(1,:,1:natoms) = xdot(1,:,1:natoms)*vscale 

was rewritten as (Nx3 loops):

do iatom = 1, natoms 
  do k=1,3 
    vatom(k,iatom) = vatom(k,iatom)*vscale 
    xdot(1,k,iatom) = xdot(1,k,iatom)*vscale 
  enddo 
enddo

—- Download (a bit old verion: January 2010)


ToDo list (zdenka)

Optimazlization of the code