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)    Valence    BVSum(Sigma)

    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

 

Zone de Texte:  

Figure 1: Screen shot of the GUI for Bond_Str after importing a CIF file. Notice that there is no information about valences, the user must complete this lack of information by changing the name of the chemical species, for instance changing PB by PB+2, etc.
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.

 

Zone de Texte:  
Figure 2: Some of the most important buttons of GBond_Str.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.