This is an old revision of the document!
Here we describe how to perform structure optimization of a simple molecule using new version of Fireball. These are minimal steps required to optimize atomic structure using quenching optimization method:
In this particular case, we are about to optimize atomic structure of benzene molecule. An initial configuration is written in a file with an arbitrary name (e.g. initial.bas, see text bellow)
12 6 -4.183081 -4.008593 -0.000092 6 -3.047805 -3.090020 0.004490 6 -3.275844 -1.647830 0.001899 6 -4.639523 -1.125588 0.002371 6 -5.775305 -2.043508 0.000193 6 -5.546619 -3.485699 -0.007522 1 -6.432266 -4.204789 -0.015592 1 -4.005535 -5.135519 -0.000976 1 -1.983459 -3.500264 0.005183 1 -2.389446 -0.929457 -0.002861 1 -4.816925 0.001517 -0.000293 1 -6.839935 -1.633156 -0.001403
The fireball.in
input file provides control over what sort of calculation will be done. If the file is not presented, fireball run default task with predefined parameters. Complete list of all choices can be found here.
In our particular case, fireball.in
file looks like:
&OPTION basisfile = initial.bas nstepf = 5000 iquench = -1 icluster = 1 dt = 0.5 &END &OUTPUT iwrtxyz = 1 &END
where
keyword 'basisfile
' defines name of a file with an initial atomic configuration;
keyword 'nstepf
' defines the maximal number of time steps;
keyword 'iquench
' sets a type of structure optimization;
keyword 'icluster
' defines type of boundary conditions (here no periodicity);
keyword 'dt
' is time step in femtoseconds;
keyword 'iwrtxyz
' allows to save history of atomic trajectories during optimization proces into xyz-format output file answer.xyz
To initiate Fireball run, we need to create Fdata directory in working directory, which contains all electronic integrals to build up Hamiltonian for each geometry. These integrals has to be calculated in advance by create module. Once we have these data, usually we create Fdata dir via symbolic link
ln -s $CURRENT_DIR_Fdata Fdata
Initiate Fireball run we need to execute binary file fireball.x. Usually we do that via shell script e.g. named run.bat:
rm -fr CHARGES *.xv *.ac *.xyz $DIR_FIR/fireball.x
to run code we simply type in command line:
./run.bat > out &
this command run fireball on background.
Status of optimization process we can follow by simple command:
grep "+++" out
You'll obtain on your screen comprehensive information how close optimization criteria are to used convergence tolerance:
++++ iter = 31 Etot= -83.90490326 Fi_max= 0.049773 +++ Etot RES = 0.00044855 TOL = 0.00010000 NOT CONVERGED +++ Fmax RES = 0.04977333 TOL = 0.05000000 CONVERGED ++++ iter = 32 Etot= -83.90475702 Fi_max= 0.037080 +++ Etot RES = 0.00175489 TOL = 0.00010000 NOT CONVERGED +++ Fmax RES = 0.03707963 TOL = 0.05000000 CONVERGED ++++ iter = 33 Etot= -83.90472022 Fi_max= 0.025251 +++ Etot RES = 0.00044161 TOL = 0.00010000 NOT CONVERGED +++ Fmax RES = 0.02525064 TOL = 0.05000000 CONVERGED ++++ iter = 34 Etot= -83.90468896 Fi_max= 0.025764 +++ Etot RES = 0.00037510 TOL = 0.00010000 NOT CONVERGED +++ Fmax RES = 0.02576449 TOL = 0.05000000 CONVERGED ++++ iter = 35 Etot= -83.90457769 Fi_max= 0.031889 +++ Etot RES = 0.00133533 TOL = 0.00010000 NOT CONVERGED +++ Fmax RES = 0.03188856 TOL = 0.05000000 CONVERGED ++++ iter = 36 Etot= -83.90458419 Fi_max= 0.030593 +++ Etot RES = 0.00007808 TOL = 0.00010000 CONVERGED +++ Fmax RES = 0.03059333 TOL = 0.05000000 CONVERGED +++++ Quenching process converged +++++
History of the total energy during the optimization process can be easily plotted using Gnuplot program as follows:
grep ETOT so_sp.out | cut -b22- > etot.dat gnuplot
Current optimized structure is placed in answer.bas
file and it can be directly used as input file for a next run.
12 6 -4.183421 -4.006572 -0.000382 6 -3.049741 -3.089443 0.004202 6 -3.277656 -1.649257 0.001957 6 -4.639330 -1.127297 0.002109 6 -5.773138 -2.044253 -0.000364 6 -5.544980 -3.484420 -0.006813 1 -6.429495 -4.202168 -0.013594 1 -4.005512 -5.131722 -0.001362 1 -1.986751 -3.498702 0.006074 1 -2.392519 -0.932155 -0.000013 1 -4.815967 -0.001880 0.002503 1 -6.836271 -1.634989 -0.002052
In addition, there is a file CHARGES
which contains projected Lowdin charges onto individual shells.
12 c6h6.bas 1 0.99538890 3.10407153 0.99534701 3.10417360 0.99539011 3.10410887 0.99538154 3.10398977 0.99535394 3.10408536 0.99536810 3.10408846 0.88948727 0.01101221 0.88959544 0.01102157 0.88948600 0.01101498 0.88949241 0.01100765 0.88961717 0.01102288 0.88948823 0.01100698