5.2. isomer with xTB
xTB is a semi-empirical quantum chemical program developed by Prof. Stefan Grimme. It is highly recommended for global optimization of chemical clusters that are unable to be described by force fields.
Tip
The source code and compilation instructions of xTB can be found here.
Tip
The stable structures obtained by xTB should be further optimized with sophisticated quantum chemical methods.
Attention
In geom
, xTB has been integrated inside the program (even in Windows version) so you do not need to install or compile xTB. This is another reason for using geom
.
5.2.1. Example: Au8
Tip
The sample input and output files can be found in testfiles/isomer/3-au8-xTB
.
Here we want to find the global minimum of \(\mathrm{Au}_8\). We will show how to use xTB and isomer
to do this.
Step 1: Prepare an input file named au8.inp
.
1au8 # Result file name
2Au 8 # Symbols
3cube 3 3 3 # Structure types
450 # Maximal number of calculations
5>>>>
6./runxTB.sh $inp$ $out$ $xxx$
7>>>>
Since at this moment, we assume that we know nothing about the global minimum of \(\mathrm{Au}_8\), so we just randomly sample it in a cube.
Step 2: Copy misc/runxTB.sh
to the current path. This is the script used to connect xTB and ABCluster. Open it you will see
1# This is the script to connect ABCluster with xTB.
2#
3# What you can change: arguments of xtb like --chrg, --gfn, --uhf, etc.
4#
5
6cp $1 $3.xyz
7xtb -o --chrg 0 --gfn 1 $3.xyz > $3.out 2>/dev/null
8
9# Do NOT change things below!
10energy=`awk 'NR==2{print $2}' xtbopt.xyz` ; sed "2s/^.*/${energy}/g" xtbopt.xyz > $2
11rm -rf $3.xyz $3.out charges wbo xtbopt.log xtbopt.xyz xtbrestart xtbtopo.mol .xtboptok
You can change the number after --chrg
to the charge of the system. Here, --gfn 1
is used to select GFN1 Hamiltonian instead of the default GFN2 Hamiltonian, because it seems that GFN2 Hamiltonian does not work well for metallic clusters.
Step 3: Now you can run the global optimization:
$ isomer au8.inp > au8.out
The end of au8.out
is
Reordered from low to high energy:
===============================================================
# Energy Match-RMSD
===============================================================
10 -31.82883469 0.00000000
31 -31.82879105 0.09780278
49 -31.81744864 1.87717016
19 -31.81703116 1.06064506
14 -31.81614914 1.74735890
26 -31.81613549 1.74618650
2 -31.81468986 1.66046500
20 -31.81414834 1.55327721
21 -31.81373995 1.50768747
45 -31.81256386 1.72172715
32 -31.81242730 1.88329240
29 -31.81053323 1.85723016
23 -31.80945836 1.81423700
22 -31.80737746 1.23237316
40 -31.80544331 2.00421183
6 -31.80494744 1.14790243
28 -31.80483576 1.65162493
42 -31.80296347 1.19522877
27 -31.80092339 1.24375689
11 -31.80090745 1.24153852
39 -31.79799814 1.29473162
34 -31.79521218 1.86632054
46 -31.79422879 1.53204441
1 -31.79411906 1.58712360
7 -31.78526106 1.61499059
8 -31.76968806 2.06136973
33 -31.76852420 2.03850515
===============================================================
So the global minimum is to au8-LM/10.xyz
and is shown below:
5.2.2. Example: Li5F5 and Li5F6(-)
Tip
The sample input and output files can be found in testfiles/isomer/4-lif-xTB
.
What is the most stable isomer of ionic crystal cluster, say \(\mathrm{Li}_5\mathrm{F}_5\) and \(\mathrm{Li}_5\mathrm{F}_6^{-}\)? This can be done easily with xTB and isomer
.
For \(\mathrm{Li}_5\mathrm{F}_5\), prepare the following input file li5f5.inp
:
1li5f5 # Result file name
2Li 5 F 5 # Symbols
3cube 4 4 4 # Structure types
450 # Maximal number of calculations
5>>>>
6./runxTB.sh $inp$ $out$ $xxx$
7>>>>
Make sure that in runxTB.sh
, the charge is set to zero: --chrg 0
. Run the global optimization:
$ isomer li5f5.inp > li5f5.out
In the output file li5f5.out
, you can find the following output:
1Reordered from low to high energy:
2===============================================================
3 # Energy Match-RMSD
4===============================================================
5 34 -27.87204520 0.00000000
6 20 -27.87203437 0.01480934
7 37 -27.87026892 0.65137537
8 47 -27.86927464 0.49860402
9 30 -27.86443620 1.57936656
10 6 -27.86441245 1.67313269
11 33 -27.86442855 1.61882031
12 48 -27.85946003 1.06822035
13 16 -27.85944440 1.06103075
14===============================================================
The global minimum is li5f5-LM/34.xyz
which is shown below:
For \(\mathrm{Li}_5\mathrm{F}_6^{-}\), prepare the following input file li5f6.inp
:
1li5f6 # Result file name
2Li 5 F 6 # Symbols
3cube 4 4 4 # Structure types
450 # Maximal number of calculations
5>>>>
6./runxTB.sh $inp$ $out$ $xxx$
7>>>>
Make sure that in runxTB.sh
, the charge is set to -1: --chrg -1
. Run the global optimization:
$ isomer li5f6.inp > li5f6.out
In the output file li5f6.out
, you can find the following output:
1Reordered from low to high energy:
2===============================================================
3 # Energy Match-RMSD
4===============================================================
5 48 -33.32394780 0.00000000
6 49 -33.32393734 0.02303966
7 28 -33.30781652 1.23466538
8 23 -33.30779733 1.25483032
9 33 -33.30777537 1.25590962
The global minimum is li5f6-LM/48.xyz
which is shown below: