The program Bond_Str and its GUI GBond_Str
(Version March 2005, J. Rodríguez-Carvajal - LLB)
The program Bond_Str calculates distances and angles in
crystal structures. It is based in old Fortran 77 versions but is has been
completely re-written and it is now based in CrysFML (Crystallographic Fortran
95 Modules Library). CrysFML contains in its "Atom_Module" (in file CFML_Atom_Mod.f90), procedures making all
calculations. The main program calls the two procedures "Calc_Dist_Angle_Sigma" and "Calc_BVS" to perform the calculations.
The most reliable bond-valence parameters
(based in the file bvparm.cif from I.D. Brown) are stored in CFML_BVpar.f90, but, alternatively, user-given
bond-valence parameters can be read form the input file instead of using the
internal parameters.
The program needs an input file that can be
either a standard CIF file or a CFL file containing just the necessary
structural information and the ionic species. A CFL file is a file with a
format that is recognized by all programs based in CrysFML. They have the
extension *.cfl and are in
free format. The different items are recognized thanks to keywords. A CFL file
can be generated from a CIF file just running Bond_Str.
Alternatively, the GUI GBond_Str program can be used directly to
convert CIF files to CFL files. Remember that information about the chemical
species (ionic oxidation states) is not always included in CIF files, so the
user has to include it in the appropriate place in the atom string (see below)
if he(she) wants to make bond-valence calculations.
An example of CFL file is given below.
The program can be invoked from the command
line together with the code (name without extension) of a CIF or CFL file. The
program looks first for the existence of a CFL file with the given code, if
there is no CFL file it looks for a CIF file.
All it is needed to know about the input files
and running the program is explained in the following two examples.
Example 1:
A CIF file, called myfile.cif, exists in the current directory
(and there is no file called myfile.cfl); the program can be invoked as follows:
Current_directory>
Bond_Str myfile <cr>
<cr> corresponds to carriage return
(ENTER key)
The screen output is the following:
==============================
====== PROGRAM BOND_STR ======
==============================
***********************************************************************
* Distances,
angles and Bond-Valence Sums from *.cfl
or *.cif files *
***********************************************************************
(JRC
- LLB, version: March 2005 )
=> A CFL-file has been generated from CIF ->
CFL_file.cfl
This file may
be used to add instructions for BOND_STR
=> Bond-Valence calculations impossible: ionic
charges must be provided!
=> Normal End of: PROGRAM BOND_STR
=> Results in File: myfile.bvs
In the input CIF file there is no information
to calculate the oxidation state of the different ions, so bond-valence calculations
are not performed.
Only distances up to 3.2 angstroms are
calculated for the current structure. A file called CFL_file.cfl has also been generated and the
user can include the necessary information to perform the complete calculations
in further runs (using the CFL file instead of the CIF file). This can be done
more easily using the GUI GBond_Str and importing a CIF file that is automatically transformed into a CFL
file.
Example 2:
A CFL file, called mfepo5.cfl, exists in the current directory;
the program is invoked as follows:
Current_directory>
Bond_Str mfepo5 <cr>
. . . .
The screen output is the following:
==============================
====== PROGRAM BOND_STR
======
==============================
***********************************************************************
* Distances, angles and Bond-Valence Sums from *.cfl or *.cif files *
***********************************************************************
(JRC - LLB, version: March 2005 )
Subroutine Calc_BVS (JRC-LLB, version: March-2005)
Title: Summary of Bond-Valence calculations for file: mfepo5.cfl
Atom Coord D_aver Sigm
Distort(x10-4)
Ni 6.00 2.0801(
6) 3.127 2.000 1.906(
3)
Fe 6.00 2.0470(
21) 72.020 3.000 3.015( 20)
P 4.00 1.5301(
20) 0.967 5.000 5.064( 28)
O1 4.00 2.0251(
31) 15.651 -2.000 1.784( 19)
O2 4.00 2.0538(
17) 231.644 -2.000 1.929( 18)
O3 2.00 1.7029(
32) 132.640 -2.000 2.032( 21)
O4 3.00 1.8603(
7) 156.068 -2.000 2.120(
5)
=> Old Global Instability Index
(
GII=SQRT{SUM{|BVS-abs(q)|^2}/Num_Atoms} ) = 10.71 /100
=>
Normalized GII(a)= SUM {|BVS-abs(q)| *mult}
/N_Atoms_UCell = 9.15 /100
=>
Normalized GII(b)= SUM {|BVS-abs(q)| *mult/abs(q)}/N_Atoms_UCell = 4.31 %
=>
Normalized GII(c)= SQRT{ SUM
{|BVS-abs(q)|^2*mult}
/N_Atoms_UCell}= 10.88 /100
=> Normal End of: PROGRAM BOND_STR
=> Results in File: mfepo5.bvs
The screen output is the content of the summary
file mfepo5_sum.bvs.
All details are in the output file mfepo5.bvs
The content of the CFL corresponding to the
above calculation is the following:
------------------- Start of the mfepo5.cfl file ---------------------
Title NiFePO5
!
a b c alpha
beta gamma
Cell
7.1882(2) 6.3924(2) 7.4847(3)
90.000 90.000 90.000
!
! Space
Group
Spgr P n m a
! label Spc x y z Biso occ
Atom Ni NI2+
0.0000 0.0000 0.0000 0.74
0.5
Atom Fe FE+3
0.1443(9) 0.2500 0.7074(2) 0.63
0.5
Atom P P5+
0.3718(9) 0.2500 0.1424(2) 0.79
0.5
Atom O1 O2-
0.3988(9) 0.2500 0.64585(2) 0.71
0.5
Atom O2 O-2
0.19415(4) 0.2500 0.0253(4) 0.70
0.5
Atom O3 O-2
0.0437(2) 0.2500 0.4728(2) 0.83
0.5
Atom O4 O-2
0.3678(2) 0.0566(1) 0.2633(2)
0.77 1.0
! Instructions for Bond_STR
DISTANCE !
Calculation and output of distances and angles
!RESTRAINS !
Uncomment for restraints file for FullProf
DMAX 3.4
2.7 ! Fixing maximum distances dmax_dis
and dmax_angl
!
For angle calculations dmax_angl /= 0 (defaults: 3.2 0.0)
-------------------
End of the mfepo5.cfl file
---------------------
Notice the way of giving the oxidation state of
the ions: the name of the element followed by +/-n or n+/- being "n" the assumed valence. Notice
also that the standard deviations can be given in parenthesis (as usual) but
immediately following the last number. No space is permitted between the value
and its standard deviation. The minimal set of keywords in a CFL file for being
used as input of the program Bond_Str are: cell, spgr and atom. They are case insensitive.
The symbol "!" is used as a comment.
The items following an atom keyword are: Label of the atom, element or species,
fractional coordinates x, y, z, isotropic displacement parameter (Biso) and occupation factor
(proportional to the multiplicity of the site, e.g. occ=m/M).
Two more items can be given: magnetic moment
value and ionic charge as real values. If instead of the ionic species only the
element symbol is provided the two additional items are needed: even if the
magnetic moment is not used it should be given. An alternative atom-line
corresponding to the first line in the above example can be written as follows:
! Label
Element x y
z Biso occ
MagM Charge
Atom ni ni
0.0000 0.0000 0.0000
0.74 0.5 1.80
2.00
The
commented keywords DISTANCE and RESTRAINS in the above examples do not need numerical values. They just instruct
the program to change the output with respect to the default values.
The keyword
DMAX is for
limiting the distance and angle calculations.
Two real
values (dmax_dis and dmax_angl) are needed for DMAX.
Be careful
not giving a high number for dmax_angle because the number of possible angles between three atoms that are at
or below a distance dmax_angl increases strongly with dmax_angl.
If
user-given bond-valence parameters are to be provided, the instruction in the
CFL file is as follows (for instance in the case of La3+-O2-
and Mn3+-O2-):
BVPARM LA+3 O-2
2.172 0.370
BVPARM MN+3 O-2
1.760 0.370
Notes
about the GUI GBond_Str
The program GBond_Str is a GUI for running Bond_Str without direct editing the input
file. The interface has only a single window, except when the internal editor
is invoked to visualise the results. The aspect of the interface after importing
a CIF file is shown in figure 1. It may be used to transform CIF files to CFL
files with just a click as shown in figure 2.
Notice that the user can provide bond-valence
parameters by filling the appropriate box that is activated as soon as one
increases the number of user-given bond-valence parameter that is initially put
to zero.
The program GBond_Str is just a tool for manipulating CIF and CFL files. There is no
calculation inside GBond_Str. When the user clicks on the run button (or select Run in the menu) the
program saves the current CFL file and invokes Bond_Str with the code of the current file
as argument. The normal output of Bond_Str that is directed to the screen when run in a
DOS-like window shell is not seen. As soon as Bond_Str finishs the calculations GBond_Str takes the control and edit the
output file from Bond_Str.