Geometry optimization

Fixed cell

We use DFTK and the GeometryOptimization package to find the minimal-energy bond length of the $H_2$ molecule. First we set up an appropriate DFTKCalculator (see AtomsCalculators integration), for which we use the LDA model just like in the Tutorial for silicon in combination with a pseudodojo pseudopotential (see Pseudopotentials).

using DFTK
using PseudoPotentialData

pseudopotentials = PseudoFamily("dojo.nc.sr.pbe.v0_4_1.standard.upf")
calc = DFTKCalculator(;
    model_kwargs = (; functionals=LDA(), pseudopotentials),  # model_DFT keyword arguments
    basis_kwargs = (; kgrid=[1, 1, 1], Ecut=10)  # PlaneWaveBasis keyword arguments
)
DFTKCalculator(functionals=Xc(lda_x, lda_c_pw), pseudopotentials=PseudoFamily("dojo.nc.sr.pbe.v0_4_1.standard.upf"), Ecut=10, kgrid=[1, 1, 1])

Next we set up an initial hydrogen molecule within a box of vacuum. We use the parameters of the equivalent tutorial from ABINIT and DFTK's AtomsBase integration to setup the hydrogen molecule. We employ a simulation box of 10 bohr times 10 bohr times 10 bohr and a pseudodojo pseudopotential.

using LinearAlgebra
using Unitful
using UnitfulAtomic

r0 = 1.4   # Initial bond length in Bohr
a  = 10.0  # Box size in Bohr

cell_vectors = [[a, 0, 0]u"bohr", [0, a, 0]u"bohr", [0, 0, a]u"bohr"]
h2_crude = periodic_system([:H => [0, 0, 0.]u"bohr",
                            :H => [r0, 0, 0]u"bohr"],
                           cell_vectors)
FlexibleSystem(H₂, periodicity = TTT):
    cell_vectors      : [      10        0        0;
                                0       10        0;
                                0        0       10]u"a₀"

    Atom(H,  [       0,        0,        0]u"a₀")
    Atom(H,  [     1.4,        0,        0]u"a₀")

Finally we call minimize_energy! to start the geometry optimisation. We use verbosity=2 to get some insight into the minimisation. With verbosity=1 only a summarising table would be printed and with verbosity=0 (default) the minimisation would be quiet.

using GeometryOptimization
results = minimize_energy!(h2_crude, calc; tol_forces=2e-6, verbosity=2)
nothing  # hide
n     Energy            log10(ΔE)   log10(Δρ)   α      Diag   Δtime 
---   ---------------   ---------   ---------   ----   ----   ------
  1   -1.110428504884                   -0.82   0.80    7.0    5.83s
  2   -1.117198408182       -2.17       -1.85   0.80    1.0    2.32s
  3   -1.117250272375       -4.29       -2.71   0.80    1.0   23.2ms
  4   -1.117251140878       -6.06       -3.42   0.80    1.0   19.1ms
  5   -1.117251185056       -7.35       -3.84   0.80    1.0   19.4ms
  6   -1.117251189999       -8.31       -5.00   0.80    1.0   19.5ms
  7   -1.117251190136       -9.86       -5.22   0.80    2.0   22.3ms
  8   -1.117251190142      -11.24       -5.73   0.80    1.0   20.7ms
  9   -1.117251190143      -12.05       -6.96   0.80    1.0   20.8ms
 10   -1.117251190143      -13.77       -7.35   0.80    2.0   40.8ms
 11   -1.117251190143      -14.42       -7.49   0.80    1.0   21.0ms
 12   -1.117251190143   +  -14.40       -8.01   0.80    1.0   23.0ms
 13   -1.117251190143      -14.88       -9.33   0.80    1.0   22.8ms
n     Energy            log10(ΔE)   log10(Δρ)   α      Diag   Δtime 
---   ---------------   ---------   ---------   ----   ----   ------
  1   -1.117251190143                   -9.82   0.80    1.0    4.12s
  2   -1.117251190143   +  -14.88      -10.59   0.80    1.0   18.9ms

    Geometry optimisation convergence (in atomic units)
┌─────┬─────────────────┬───────────┬─────────────┬────────┐
│   n │          Energy │ log10(ΔE) │  max(Force) │  Δtime │
├─────┼─────────────────┼───────────┼─────────────┼────────┤
│   0 │ -1.117251190143 │           │   0.0269318 │  23.5s │
└─────┴─────────────────┴───────────┴─────────────┴────────┘

n     Energy            log10(ΔE)   log10(Δρ)   α      Diag   Δtime 
---   ---------------   ---------   ---------   ----   ----   ------
  1   -1.117517997999                   -2.46   0.80    1.0   13.2ms
  2   -1.117520586053       -5.59       -3.49   0.80    1.0   18.6ms
  3   -1.117520612986       -7.57       -4.23   0.80    1.0   18.6ms
  4   -1.117520613449       -9.33       -5.14   0.80    1.0   46.0ms
  5   -1.117520613464      -10.81       -5.92   0.80    1.0   19.7ms
  6   -1.117520613465      -12.15       -6.42   0.80    1.0   19.8ms
  7   -1.117520613465      -13.34       -7.40   0.80    1.0   20.1ms
  8   -1.117520613465      -15.05       -8.21   0.80    1.0   30.3ms
  9   -1.117520613465   +    -Inf       -8.93   0.80    1.0   21.0ms
n     Energy            log10(ΔE)   log10(Δρ)   α      Diag   Δtime 
---   ---------------   ---------   ---------   ----   ----   ------
  1   -1.118247264592                   -1.69   0.80    1.0   13.1ms
  2   -1.118339043933       -4.04       -2.70   0.80    1.0   24.1ms
  3   -1.118340011112       -6.01       -3.44   0.80    1.0   18.7ms
  4   -1.118340028553       -7.76       -4.36   0.80    1.0   18.9ms
  5   -1.118340029137       -9.23       -5.12   0.80    1.0   25.2ms
  6   -1.118340029164      -10.57       -5.62   0.80    1.0   20.2ms
  7   -1.118340029166      -11.73       -6.68   0.80    1.0   22.9ms
  8   -1.118340029166      -13.60       -7.58   0.80    1.0   20.9ms
  9   -1.118340029166      -15.35       -8.12   0.80    1.0   23.5ms
 10   -1.118340029166   +  -15.35       -8.55   0.80    1.0   21.0ms
n     Energy            log10(ΔE)   log10(Δρ)   α      Diag   Δtime 
---   ---------------   ---------   ---------   ----   ----   ------
  1   -1.118340029166                   -9.05   0.80    1.0   13.1ms
  2   -1.118340029166   +  -14.54      -10.36   0.80    1.0   18.8ms
n     Energy            log10(ΔE)   log10(Δρ)   α      Diag   Δtime 
---   ---------------   ---------   ---------   ----   ----   ------
  1   -1.118340029166                  -11.05   0.80    1.0   13.1ms
  2   -1.118340029166   +  -14.31      -11.42   0.80    1.0   24.7ms

┌─────┬─────────────────┬───────────┬─────────────┬────────┐
│   n │          Energy │ log10(ΔE) │  max(Force) │  Δtime │
├─────┼─────────────────┼───────────┼─────────────┼────────┤
│   1 │ -1.118340029166 │           │  0.00297055 │  2.98s │
└─────┴─────────────────┴───────────┴─────────────┴────────┘

n     Energy            log10(ΔE)   log10(Δρ)   α      Diag   Δtime 
---   ---------------   ---------   ---------   ----   ----   ------
  1   -1.118346721506                   -3.09   0.80    1.0   19.0ms
  2   -1.118346864758       -6.84       -4.11   0.80    1.0   18.9ms
  3   -1.118346866235       -8.83       -4.86   0.80    1.0   18.7ms
  4   -1.118346866261      -10.59       -5.78   0.80    1.0   24.8ms
  5   -1.118346866262      -12.08       -6.55   0.80    1.0   19.5ms
  6   -1.118346866262      -13.43       -7.04   0.80    1.0   22.7ms
  7   -1.118346866262      -15.35       -8.13   0.80    1.0   20.2ms
  8   -1.118346866262      -14.65       -8.95   0.80    1.0   23.0ms
n     Energy            log10(ΔE)   log10(Δρ)   α      Diag   Δtime 
---   ---------------   ---------   ---------   ----   ----   ------
  1   -1.118354724004                   -2.61   0.80    1.0   13.0ms
  2   -1.118356087056       -5.87       -3.62   0.80    1.0   21.3ms
  3   -1.118356101131       -7.85       -4.37   0.80    1.0   19.0ms
  4   -1.118356101377       -9.61       -5.29   0.80    1.0   21.7ms
  5   -1.118356101385      -11.10       -6.06   0.80    1.0   19.6ms
  6   -1.118356101386      -12.46       -6.55   0.80    1.0   22.4ms
  7   -1.118356101386      -13.55       -7.65   0.80    1.0   20.3ms
  8   -1.118356101386      -15.35       -8.45   0.80    1.0   22.7ms
n     Energy            log10(ΔE)   log10(Δρ)   α      Diag   Δtime 
---   ---------------   ---------   ---------   ----   ----   ------
  1   -1.118356101386                   -9.24   0.80    1.0   13.1ms
  2   -1.118356101386   +  -14.42       -9.82   0.80    1.0   84.2ms
n     Energy            log10(ΔE)   log10(Δρ)   α      Diag   Δtime 
---   ---------------   ---------   ---------   ----   ----   ------
  1   -1.118356101386                  -10.62   0.80    1.0    534ms
  2   -1.118356101386   +  -15.05      -11.46   0.80    1.0   19.1ms

┌─────┬─────────────────┬───────────┬─────────────┬────────┐
│   n │          Energy │ log10(ΔE) │  max(Force) │  Δtime │
├─────┼─────────────────┼───────────┼─────────────┼────────┤
│   2 │ -1.118356101386 │     -4.79 │  4.47268e-5 │  1.12s │
└─────┴─────────────────┴───────────┴─────────────┴────────┘

n     Energy            log10(ΔE)   log10(Δρ)   α      Diag   Δtime 
---   ---------------   ---------   ---------   ----   ----   ------
  1   -1.118356102848                   -4.94   0.80    1.0   13.1ms
  2   -1.118356102877      -10.54       -5.96   0.80    1.0   18.4ms
  3   -1.118356102877      -12.52       -6.70   0.80    1.0   18.6ms
  4   -1.118356102877      -14.35       -7.62   0.80    1.0   18.9ms
  5   -1.118356102877      -14.88       -8.40   0.80    1.0   19.3ms
  6   -1.118356102877      -15.35       -8.89   0.80    1.0   19.5ms
n     Energy            log10(ΔE)   log10(Δρ)   α      Diag   Δtime 
---   ---------------   ---------   ---------   ----   ----   ------
  1   -1.118356104771                   -4.40   0.80    1.0   13.2ms
  2   -1.118356105116       -9.46       -5.42   0.80    1.0   18.5ms
  3   -1.118356105120      -11.45       -6.17   0.80    1.0   18.6ms
  4   -1.118356105120      -13.20       -7.09   0.80    1.0   19.0ms
  5   -1.118356105120      -14.88       -7.86   0.80    1.0   19.2ms
  6   -1.118356105120   +  -15.18       -8.35   0.80    1.0   19.6ms
  7   -1.118356105120   +  -15.35       -9.45   0.80    1.0   27.2ms
n     Energy            log10(ΔE)   log10(Δρ)   α      Diag   Δtime 
---   ---------------   ---------   ---------   ----   ----   ------
  1   -1.118356105120                  -10.08   0.80    1.0   17.4ms
  2   -1.118356105120   +  -13.96      -11.02   0.80    1.0   31.2ms
n     Energy            log10(ΔE)   log10(Δρ)   α      Diag   Δtime 
---   ---------------   ---------   ---------   ----   ----   ------
  1   -1.118356105120                  -11.67   0.80    1.0   13.0ms
  2   -1.118356105120   +  -14.65      -12.44   0.80    1.0   18.5ms

┌─────┬─────────────────┬───────────┬─────────────┬────────┐
│   n │          Energy │ log10(ΔE) │  max(Force) │  Δtime │
├─────┼─────────────────┼───────────┼─────────────┼────────┤
│   3 │ -1.118356105120 │     -8.43 │   1.0532e-8 │  476ms │
└─────┴─────────────────┴───────────┴─────────────┴────────┘

Structure after optimisation (note that the atom has wrapped around)

results.system
FlexibleSystem(H₂, periodicity = TTT):
    cell_vectors      : [      10        0        0;
                                0       10        0;
                                0        0       10]u"a₀"

    Atom(H,  [-0.0431829, 1.0405e-17, -8.83171e-18]u"a₀")
    Atom(H,  [ 1.44318, -9.37814e-18, 1.00489e-18]u"a₀")

Compute final bond length:

rmin = norm(position(results.system[1]) - position(results.system[2]))
println("Optimal bond length: ", rmin)
Optimal bond length: 1.486365866575932 a₀

Our result (1.486 Bohr) agrees with the equivalent tutorial from ABINIT.

Variable cell

Recent versions of GeometryOptimization support cell optimization as well by passing variablecell=true to minimize_energy!.

For a plane-wave code like DFTK, variable cells pose an additional challenge: changes to the cell's size affect the used plane waves, leading to discontinuities in the energy and stresses. This can cause the geometry optimization to struggle and/or fail to converge.

A practical strategy to overcome this problem is Energy cutoff smearing. As a demonstration let us find the optimal lattice constant of silicon.

Like before we define a calculator, this time with a kinetic_blowup set to use energy cutoff smearing:

calc = DFTKCalculator(;
    model_kwargs = (; functionals=LDA(), pseudopotentials,
                      kinetic_blowup=BlowupCHV()),
    basis_kwargs = (; kgrid=[2, 2, 2], Ecut=10)
)
DFTKCalculator(functionals=Xc(lda_x, lda_c_pw), pseudopotentials=PseudoFamily("dojo.nc.sr.pbe.v0_4_1.standard.upf"), Ecut=10, kgrid=[2, 2, 2])

And here is our starting silicon structure:

a = 10.0u"bohr"   # Approximate Silicon lattice constant
cell_vectors = a/2 * [[0, 1, 1], [1, 0, 1], [1, 1, 0]]
initial_silicon = periodic_system([:Si =>  ones(3)/8,
                                   :Si => -ones(3)/8],
                                  cell_vectors;
                                  fractional=true)
FlexibleSystem(Si₂, periodicity = TTT):
    cell_vectors      : [       0        5        5;
                                5        0        5;
                                5        5        0]u"a₀"

    Atom(Si, [    1.25,     1.25,     1.25]u"a₀")
    Atom(Si, [   -1.25,    -1.25,    -1.25]u"a₀")

We now minimize, passing variablecell=true:

using GeometryOptimization
results = minimize_energy!(initial_silicon, calc; variablecell=true,
                           tol_virial=2e-6, verbosity=2)
nothing  # hide
n     Energy            log10(ΔE)   log10(Δρ)   α      Diag   Δtime 
---   ---------------   ---------   ---------   ----   ----   ------
  1   -8.335089037754                   -0.80   0.80    8.0    758ms
  2   -8.340929603864       -2.23       -1.69   0.80    1.3    617ms
  3   -8.341201947316       -3.56       -2.77   0.80    2.7   33.5ms
  4   -8.341214216506       -4.91       -3.19   0.80    3.7   41.5ms
  5   -8.341214263673       -7.33       -3.76   0.80    1.3   27.5ms
  6   -8.341214272297       -8.06       -5.05   0.80    2.3   60.7ms
  7   -8.341214272507       -9.68       -5.24   0.80    3.7   44.7ms
  8   -8.341214272517      -11.00       -6.04   0.80    1.0   27.1ms
  9   -8.341214272518      -12.14       -7.09   0.80    3.3   39.9ms
n     Energy            log10(ΔE)   log10(Δρ)   α      Diag   Δtime 
---   ---------------   ---------   ---------   ----   ----   ------
  1   -8.341214272518                   -7.79   0.80    1.0    606ms
  2   -8.341214272518      -14.75       -8.50   0.80    1.0   25.7ms
n     Energy            log10(ΔE)   log10(Δρ)   α      Diag   Δtime 
---   ---------------   ---------   ---------   ----   ----   ------
  1   -8.341214272518                   -8.94   0.80    1.0   23.8ms
  2   -8.341214272518      -14.75       -9.23   0.80    1.0   26.1ms

              Geometry optimisation convergence (in atomic units)
┌─────┬─────────────────┬───────────┬─────────────┬─────────────┬──────────┬────
│   n │          Energy │ log10(ΔE) │  max(Force) │ max(Virial) │ Pressure │   ⋯
├─────┼─────────────────┼───────────┼─────────────┼─────────────┼──────────┼────
│   0 │ -8.341214272518 │           │ 3.38722e-15 │    0.163458 │    -0.16 │   ⋯
└─────┴─────────────────┴───────────┴─────────────┴─────────────┴──────────┴────
                                                                1 column omitted

n     Energy            log10(ΔE)   log10(Δρ)   α      Diag   Δtime 
---   ---------------   ---------   ---------   ----   ----   ------
  1   -8.350589293661                   -1.21   0.80   10.0   76.6ms
  2   -8.351864268022       -2.89       -1.88   0.80    1.3   62.4ms
  3   -8.351926767172       -4.20       -2.79   0.80    3.0   38.2ms
  4   -8.351928506370       -5.76       -3.71   0.80    3.3   41.1ms
  5   -8.351928514462       -8.09       -4.86   0.80    3.3   39.8ms
  6   -8.351928514629       -9.78       -5.73   0.80    4.7   46.7ms
  7   -8.351928514632      -11.56       -6.72   0.80    4.0   60.1ms
n     Energy            log10(ΔE)   log10(Δρ)   α      Diag   Δtime 
---   ---------------   ---------   ---------   ----   ----   ------
  1   -8.353393886508                   -1.52   0.80    8.0   67.1ms
  2   -8.353732741381       -3.47       -2.21   0.80    1.0   26.2ms
  3   -8.353757281606       -4.61       -2.98   0.80    3.3   44.7ms
  4   -8.353757521973       -6.62       -4.18   0.80    3.0   35.9ms
  5   -8.353757531659       -8.01       -4.85   0.80    3.0   40.3ms
  6   -8.353757531731      -10.15       -5.63   0.80    2.0   34.9ms
  7   -8.353757531736      -11.27       -6.55   0.80    4.0   44.3ms
  8   -8.353757531736      -13.50       -7.84   0.80    2.3   35.1ms
n     Energy            log10(ΔE)   log10(Δρ)   α      Diag   Δtime 
---   ---------------   ---------   ---------   ----   ----   ------
  1   -8.353757531736                   -8.94   0.80    1.0   23.8ms
  2   -8.353757531736      -14.75       -9.60   0.80    1.0   26.5ms
n     Energy            log10(ΔE)   log10(Δρ)   α      Diag   Δtime 
---   ---------------   ---------   ---------   ----   ----   ------
  1   -8.353757531736                   -9.98   0.80    1.0   23.4ms
  2   -8.353757531736   +  -14.75      -10.22   0.80    1.0   30.9ms
n     Energy            log10(ΔE)   log10(Δρ)   α      Diag   Δtime 
---   ---------------   ---------   ---------   ----   ----   ------
  1   -8.353757531736                  -10.48   0.80    1.0   23.8ms
  2   -8.353757531736   +  -14.45      -10.80   0.80    1.0   26.3ms

┌─────┬─────────────────┬───────────┬─────────────┬─────────────┬──────────┬────
│   n │          Energy │ log10(ΔE) │  max(Force) │ max(Virial) │ Pressure │   ⋯
├─────┼─────────────────┼───────────┼─────────────┼─────────────┼──────────┼────
│   1 │ -8.353757531736 │           │ 9.85249e-15 │   0.0156413 │   -0.016 │   ⋯
└─────┴─────────────────┴───────────┴─────────────┴─────────────┴──────────┴────
                                                                1 column omitted

n     Energy            log10(ΔE)   log10(Δρ)   α      Diag   Δtime 
---   ---------------   ---------   ---------   ----   ----   ------
  1   -8.353663199927                   -3.21   0.80    8.0   63.3ms
  2   -8.353744693864       -4.09       -3.81   0.80    1.0   24.9ms
  3   -8.353770526385       -4.59       -3.76   0.80    6.3   54.8ms
  4   -8.353770535237       -8.05       -4.06   0.80    1.3   27.0ms
  5   -8.353770536767       -8.82       -4.47   0.80    2.0   29.5ms
  6   -8.353770537391       -9.21       -5.30   0.80    2.3   31.3ms
  7   -8.353770537411      -10.69       -5.74   0.80    2.3   33.6ms
  8   -8.353770537412      -12.13       -5.94   0.80    1.3   36.6ms
  9   -8.353770537412      -12.36       -7.10   0.80    2.0   31.6ms
n     Energy            log10(ΔE)   log10(Δρ)   α      Diag   Δtime 
---   ---------------   ---------   ---------   ----   ----   ------
  1   -8.353812551128                   -2.00   0.80    9.0   72.2ms
  2   -8.353885763179       -4.14       -2.71   0.80    1.0   26.2ms
  3   -8.353895068389       -5.03       -3.35   0.80    4.7   47.4ms
  4   -8.353895108054       -7.40       -4.27   0.80    2.7   36.0ms
  5   -8.353895110700       -8.58       -5.03   0.80    2.3   34.8ms
  6   -8.353895110777      -10.11       -6.04   0.80    3.7   40.8ms
  7   -8.353895110779      -11.84       -6.70   0.80    3.0   38.8ms
  8   -8.353895110779      -13.71       -7.45   0.80    2.7   43.6ms
n     Energy            log10(ΔE)   log10(Δρ)   α      Diag   Δtime 
---   ---------------   ---------   ---------   ----   ----   ------
  1   -8.353895110779                   -7.97   0.80    1.0   23.3ms
  2   -8.353895110779   +  -14.27       -9.21   0.80    1.0   26.0ms
n     Energy            log10(ΔE)   log10(Δρ)   α      Diag   Δtime 
---   ---------------   ---------   ---------   ----   ----   ------
  1   -8.353895110779                   -9.70   0.80    1.0   23.0ms
  2   -8.353895110779   +    -Inf      -10.02   0.80    1.0   25.7ms
n     Energy            log10(ΔE)   log10(Δρ)   α      Diag   Δtime 
---   ---------------   ---------   ---------   ----   ----   ------
  1   -8.353895110779                  -10.42   0.80    1.0   22.9ms
  2   -8.353895110779      -14.75      -10.51   0.80    1.0   32.3ms

┌─────┬─────────────────┬───────────┬─────────────┬─────────────┬──────────┬────
│   n │          Energy │ log10(ΔE) │  max(Force) │ max(Virial) │ Pressure │   ⋯
├─────┼─────────────────┼───────────┼─────────────┼─────────────┼──────────┼────
│   2 │ -8.353895110779 │     -3.86 │ 8.10604e-15 │  0.00064617 │ -0.00065 │   ⋯
└─────┴─────────────────┴───────────┴─────────────┴─────────────┴──────────┴────
                                                                1 column omitted

n     Energy            log10(ΔE)   log10(Δρ)   α      Diag   Δtime 
---   ---------------   ---------   ---------   ----   ----   ------
  1   -8.353826363365                   -3.57   0.80    9.0   72.1ms
  2   -8.353886349957       -4.22       -3.75   0.80    1.0   30.7ms
  3   -8.353895211169       -5.05       -3.89   0.80    6.0   58.1ms
  4   -8.353895212350       -8.93       -4.10   0.80    1.3   27.7ms
  5   -8.353895212283   +  -10.17       -4.51   0.80    1.3   31.2ms
  6   -8.353895212434       -9.82       -4.70   0.80    1.3   28.8ms
  7   -8.353895212508      -10.13       -5.16   0.80    1.0   26.7ms
  8   -8.353895212521      -10.89       -6.62   0.80    2.7   35.5ms
  9   -8.353895212520   +  -11.77       -5.51   0.80    4.7   53.2ms
 10   -8.353895212521      -11.84       -5.78   0.80    3.3   40.8ms
 11   -8.353895212522      -12.24       -6.53   0.80    2.7   37.5ms
 12   -8.353895212522      -14.45       -6.59   0.80    1.0   31.2ms
 13   -8.353895212522      -13.80       -8.06   0.80    1.0   28.5ms
n     Energy            log10(ΔE)   log10(Δρ)   α      Diag   Δtime 
---   ---------------   ---------   ---------   ----   ----   ------
  1   -8.353840256221                   -3.27   0.80    9.3   78.6ms
  2   -8.353887931386       -4.32       -3.75   0.80    1.0   26.0ms
  3   -8.353895360560       -5.13       -3.94   0.80    6.0   56.7ms
  4   -8.353895362507       -8.71       -4.32   0.80    2.0   39.6ms
  5   -8.353895362529      -10.65       -4.70   0.80    2.3   32.4ms
  6   -8.353895362652       -9.91       -5.09   0.80    1.7   30.3ms
  7   -8.353895362685      -10.49       -6.46   0.80    3.0   39.9ms
  8   -8.353895362686      -11.92       -6.57   0.80    4.0   48.7ms
  9   -8.353895362686      -13.71       -7.01   0.80    1.7   32.5ms
n     Energy            log10(ΔE)   log10(Δρ)   α      Diag   Δtime 
---   ---------------   ---------   ---------   ----   ----   ------
  1   -8.353895362686                   -8.00   0.80    1.0   23.4ms
  2   -8.353895362686   +    -Inf       -8.99   0.80    1.0   26.0ms
n     Energy            log10(ΔE)   log10(Δρ)   α      Diag   Δtime 
---   ---------------   ---------   ---------   ----   ----   ------
  1   -8.353895362686                   -9.55   0.80    1.0   23.5ms
  2   -8.353895362686   +    -Inf       -9.64   0.80    1.0   30.6ms
n     Energy            log10(ΔE)   log10(Δρ)   α      Diag   Δtime 
---   ---------------   ---------   ---------   ----   ----   ------
  1   -8.353895362686                  -10.18   0.80    1.0   23.8ms
  2   -8.353895362686   +    -Inf      -10.31   0.80    1.0   26.0ms

┌─────┬─────────────────┬───────────┬─────────────┬─────────────┬──────────┬────
│   n │          Energy │ log10(ΔE) │  max(Force) │ max(Virial) │ Pressure │   ⋯
├─────┼─────────────────┼───────────┼─────────────┼─────────────┼──────────┼────
│   3 │ -8.353895362686 │     -6.60 │ 5.09658e-15 │  1.71707e-6 │  -1.7e-6 │   ⋯
└─────┴─────────────────┴───────────┴─────────────┴─────────────┴──────────┴────
                                                                1 column omitted

Structure after optimization

results.system
FlexibleSystem(Si₂, periodicity = TTT):
    cell_vectors      : [2.76298e-18  5.27783  5.27783;
                          5.27783 2.76298e-18  5.27783;
                          5.27783  5.27783 2.76298e-18]u"a₀"

    Atom(Si, [ 1.31946,  1.31946,  1.31946]u"a₀")
    Atom(Si, [-1.31946, -1.31946, -1.31946]u"a₀")

Since here the cell was rescaled but its shape did not change, we directly extract the optimal lattice constant from one of the cell vectors:

using AtomsBase
amin = AtomsBase.cell_vectors(results.system)[1][2]*2
println("Optimal lattice constant: ", amin)
Optimal lattice constant: 10.555662918173487 a₀

Note that while for silicon the positions of the atoms are fixed by symmetry, in general a variable cell optimization will try to optimize both the cell and the positions of the individual atoms.