Potencial fitting

Dear Dr. Gale,
I hope this message finds you well. I am a member of a laboratory that has been using GULP for a long time for materials modeling. However, most of the time, parameter adjustments are performed empirically and manually, when not found in the literature.

I recently started exploring the adjustment algorithms available in GULP, such as BFGS and SIMPLEX. Despite following the examples provided in the documentation, I found it difficult to use them; when activating the “fit” flag, errors appear, which I will show below.

In addition, I had doubts about the functionality described in the documentation related to the genetic algorithm: does it only search for possible structures or does it also adjust the parameters of the potentials? When discussing these questions with other users, I realized that they are recurrent in the community.

Another point that I did not find clarification in the manual was the meaning of the number that follows the “fractional” command, as well as the practical differences between the “fractional” and “frac” commands.

I would like to thank you in advance for your attention and availability. Below I have attached the input file corresponding to the problem to facilitate analysis, as well as the error that appears.

Kind regards,
Willamis A Silva

INPUT:

fit relax conp optimise properties compare phono distance
cell
5.4200 38.5800 5.5270 90.0 90.0 90.0
fractional 6
Y core 0.71400 0.03590 0.25000
Y core 0.29500 0.10760 0.28600
Y core 0.71500 0.17980 0.24300
Y core 0.29400 0.25000 0.29400
O core 0.50000 0.00000 0.47800
O shel 0.50000 0.00000 0.47800
O core 0.48900 0.07230 0.01900
O shel 0.48900 0.07230 0.01900
O core 0.46800 0.14360 0.99600
O shel 0.46800 0.14360 0.99600
F core 0.44200 0.21320 0.01000
F shel 0.44200 0.21320 0.01000
O core 0.00000 0.00000 0.05700
O shel 0.00000 0.00000 0.05700
F core 0.03100 0.06310 0.40000
F shel 0.03100 0.06310 0.40000
F core 0.94000 0.12730 0.12100
F shel 0.94000 0.12730 0.12100
F core 0.10300 0.19130 0.36900
F shel 0.10300 0.19130 0.36900
F core 0.92000 0.25000 0.12200
F shel 0.92000 0.25000 0.12200
space
39
temperature 293 K
cell
10.60380 10.60380 10.60380 90.0000 90.0000 90.0000
fraccional 6
Y core -0.03200 0.00000 0.25000
Y core 0.25000 0.25000 0.25000
O core 0.39110 0.15160 0.38270
O shel 0.39110 0.15160 0.38270
space
206
temperature 293 K
cell
6.35370 6.85450 4.39530 90.0000 90.0000 90.0000
fraccional 6
Y core 0.36730 0.25000 0.05910
F core 0.52270 0.25000 0.59100
F shel 0.52270 0.25000 0.59100
F core 0.16520 0.06430 0.37550
F shel 0.16520 0.06430 0.37550
space
62
temperature 293 K
species
Y core 3.00
O core 0.86902
O shel -2.86902
F core 0.59
F shel -1.59
buck
Y core O shell 1345.1000 0.3491 0.00 0.00 10.0 1 1 0
Y core F shel 1515.68 0.3011 0.0 0.0 12.0 0 0 0
O shell O shell 22764.00 0.1490 27.88 0.00 10.0 0 0 0
O shel F shel 100.54 0.0029 22.10 0.0 12.0 0 0 0
F shel F shel 1127.7 0.2953 15.83 0.0 12.0 0 0 0
spring
O 74.92
F 20.77

OUTPUT:


  •                   GENERAL UTILITY LATTICE PROGRAM                        *
    
  •                             Julian Gale                                  *
    
  •                   Curtin Institute for Computation                       *
    
  •                School of Molecular and Life Sciences                     *
    
  •                Curtin University, Western Australia                      *
    

  • Version = 6.0.0 * Last modified = 9th June 2021 *

!!!
!! ERROR : Incorrect potential coefficient input
!! : Error is apparently on line 64
!!!

Program terminated by processor 0 in potword22

STOP GULP terminated with an error

Dear Willamis,
Thanks for your message. If there are any cases where you think that fitting algorithms aren’t doing what they should then I would encourage you to post them so that they can be checked. As far as I’m aware, everything does what it should. Of course automated fitting might not do what a user would like, but this usually reflects issues with the input (weights not matching the user’s priorities, insufficient data to constrain the fit, etc). To answer your specific questions:

  1. Genetic algorithms can be used either on structural coordinates (for searching for global rather than local minima) and also for fitting force field parameters. However, in my experience it’s very rare (if at all) that there are lots of local minima in force field parameter space and so conventional fitting methods from a physically sensible set of start values is usually much better.
  2. The number after “fractional” (or “cartesian”) is only there for backward compatability. Prior to version 1.0 of GULP this was the number of particles that would be supplied on the subsequent lines (i.e. how many cores and shells in the input). However, since version 1.0 the code just reads until it finds something which is not an atom/coordinate line and then works out the number from this. In short, for any version of GULP from 1.0 onwards the number is no longer used & so the value is irrelevant.
  3. The error when you specify fitting for your input is because you’ve forgotten to include the fitting flags for the “spring” option. There should be a 0 or 1 after the spring constant values to tell the code whether you want to fit these values or not.
    Hope this helps,
    Julian