## Troubleshooting Minima-Hopping

- Introduction
- Minima Hopping is not finding new minima
- The minima obtained are actually same structures

## Material

- Minima Hopping Tutorial Hands-on
- Minima Hopping Tutorial Lecture

# Troubleshooting Minima-Hopping

## Introduction

In this section we would like to discuss how to troubleshoot a few commonly faced problems during a Minima Hopping run. As Minima Hopping relies on BigDFT for energy and force calculation and also for the geometry optimizations, very often it is found that the Minima Hopping is not performing well because of problems like poor convergence in wavefunction optimization or geometry optimizations in BigDFT. In those cases one should try to solve the problem by adjusting BigDFT input parameters or input geometry configuration in `poscur.xyz`. Users are advised to refer BigDFT manual for more detail. In this section we will discuss only the problems which arise only from Minima Hopping code.

### Problem 1: Minima Hopping is not finding new Minima

This is the most common problem one is expected to face at the start of a new Minima Hopping run. Depending on the system under study and the computing resources, One may have to wait several hours after starting the calculation to analyze any information about the status of the run. To know how to make an input set for efficient run follow the tutorial carefully.

To troubleshoot this problem we will check the `global.mon` file and `screen output`. To understand the `global.mon` file please see the tutorial presentation. Now we will discuss different possible scenarios.

### Scenario 1:

`global.mon` file looks like the following.

    maia:~/test >tail global.mon
             0.  1.58431372956184E+01  4.459E-03  4.139E-03
             1.  1.58894746509521E+01  4.459E-03  3.762E-03  0.00  0.00  1.00  T R     1
             2.  1.58608541045569E+01  4.905E-03  3.420E-03  0.00  0.00  1.00  T R     1
             3.  1.58555734322905E+01  5.396E-03  3.109E-03  0.00  0.00  1.00  T R     1
             4.  1.58500896035491E+01  5.935E-03  2.827E-03  0.00  0.00  1.00  T R     1
             5.  1.58519955699513E+01  6.529E-03  2.570E-03  0.00  0.00  1.00  T R     1

This means that the program visited new minima but all of them were rejected because they were too high in energy with respect to the starting configuration. The acceptance of a new minimum which is higher in energy than the present one is controlled by the `ediff` parameter, which is written in the third column. One can see the program is automatically increasing the `ediff`. The Fourth column is `ekinetic`: The kinetic energy of the MD simulation. The present situation arises mainly due to a High `ekinetic` input value in `ioput` file. One can see that the program is automatically reducing the `ekinetic` value and if the value of `ekinetic` is not too high, the program can adjust it by itself. But in case the input value was too high, you should try starting a new run with lower `ekinetic` value.

### Scenario 2:

`global.mon` file looks like the following.

    maia:~/test >tail global.mon
            30.  7.22850844672024E+00  2.727E-02  4.139E-03  0.20  0.10  0.70   S
            31.  7.22850845241805E+00  2.727E-02  4.552E-03  0.23  0.10  0.68   S
            32.  7.22850834576138E+00  2.727E-02  5.008E-03  0.25  0.09  0.66   S
            33.  7.22850839261770E+00  2.727E-02  5.508E-03  0.27  0.09  0.64   S

This means that the same minimum is visited again and again. This is because of a low `ekinetic` value. The program will try to increase the kinetic energy automatically but in some case one may have to increase the value of `ekinetic` in the `ioput` file manually.

### Problem 2: Minima Hopping Found many minima but most of them are very close in energy and the corresponding `poslow*****.xyz` files are similar looking:

In such cases the `earr.dat` file looks like the following.

       40        50 # of minima already found, # of minima to be found in consecutive run
    -0.74000000000000000E+03    eref
     0.50000000000000001E-03    accur
     0.82085000000000008E+01  2.0000000000E+00
     0.82100000000000009E+01  1.0000000000E+00
     0.82110000000000003E+01  3.0000000000E+00
     0.82115000000000009E+01  2.0000000000E+00
     0.82119999999999997E+01  2.0000000000E+00
     0.82125000000000004E+01  1.0000000000E+00
     0.82130000000000010E+01  1.0000000000E+00
     0.82134999999999998E+01  1.0000000000E+00
     0.82140000000000004E+01  1.0000000000E+00
     0.82145000000000010E+01  3.0000000000E+00
     0.82149999999999999E+01  1.0000000000E+00
     0.82155000000000005E+01  1.0000000000E+00
     0.82159999999999993E+01  2.0000000000E+00
     0.82164999999999999E+01  1.0000000000E+00
     0.82170000000000005E+01  1.0000000000E+00
     0.82174999999999994E+01  2.0000000000E+00
     0.82180000000000000E+01  1.0000000000E+00
     0.82185000000000006E+01  1.0000000000E+00
     0.82189999999999994E+01  1.0000000000E+00
     0.82195000000000000E+01  5.0000000000E+00
     0.82200000000000006E+01  2.0000000000E+00
     0.82204999999999995E+01  2.0000000000E+00
     0.82210000000000001E+01  3.0000000000E+00
     0.82215000000000007E+01  1.0000000000E+00
     0.82219999999999995E+01  2.0000000000E+00
     0.82225000000000001E+01  2.0000000000E+00
     0.82240000000000002E+01  1.0000000000E+00

In this `earr.dat` file we can see the program found several minima which differ in energy by the value of `accur` in the third line of the file. In these cases one should check the corresponding `poslow*****.xyz` files visually by softwares file V_Sim to confirm if they are really structurally different or not. If one see that the structures are same or differs only by rotation angles then it suggest that accuracy which was set for this calculation by `accur` in the `earr.dat` file is not compatible with the actual accuracy in total energy calculation by BigDFT. To say more explicitly, The accuracy set by `accur` parameter by which minima hopping program is distinguishing between two structures are lower in value than the actual accuracy of the BigDFT energy calculation. In the present case the solution is to increase the value of `accur` or to prepare a `input.dft` file which is able to produce result in higher accuracy than the present `expected accuracy in energy` . Please follow the tutorial and presentation to adjust the accuracy of the program correctly.