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.110639496168                   -0.82   0.80    7.0    1.64s
  2   -1.117203460545       -2.18       -1.88   0.80    1.0    887ms
  3   -1.117250567098       -4.33       -2.71   0.80    1.0   11.3ms
  4   -1.117251170511       -6.22       -3.58   0.80    1.0   11.0ms
  5   -1.117251188157       -7.75       -4.04   0.80    1.0   11.1ms
  6   -1.117251189934       -8.75       -4.60   0.80    1.0   11.1ms
  7   -1.117251190132       -9.70       -5.86   0.80    1.0   42.0ms
  8   -1.117251190143      -10.99       -5.94   0.80    2.0   12.2ms
  9   -1.117251190143      -12.62       -6.20   0.80    1.0   11.0ms
 10   -1.117251190143      -12.96       -6.83   0.80    1.0   11.1ms
 11   -1.117251190143      -14.16       -7.45   0.80    1.0    136ms
 12   -1.117251190143   +  -15.05       -8.26   0.80    1.0   11.6ms
 13   -1.117251190143   +  -15.65       -9.00   0.80    1.0   11.4ms
n     Energy            log10(ΔE)   log10(Δρ)   α      Diag   Δtime 
---   ---------------   ---------   ---------   ----   ----   ------
  1   -1.117251190143                   -9.38   0.80    1.0    1.62s
  2   -1.117251190143      -15.35      -10.38   0.80    1.0   10.5ms

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

n     Energy            log10(ΔE)   log10(Δρ)   α      Diag   Δtime 
---   ---------------   ---------   ---------   ----   ----   ------
  1   -1.117517993617                   -2.46   0.80    1.0   7.25ms
  2   -1.117520586039       -5.59       -3.49   0.80    1.0   49.4ms
  3   -1.117520613009       -7.57       -4.23   0.80    1.0   10.5ms
  4   -1.117520613449       -9.36       -5.17   0.80    1.0   10.3ms
  5   -1.117520613464      -10.82       -5.95   0.80    1.0   10.3ms
  6   -1.117520613465      -12.18       -6.47   0.80    1.0   10.3ms
  7   -1.117520613465      -13.42       -7.56   0.80    1.0   27.3ms
  8   -1.117520613465   +  -14.61       -8.27   0.80    1.0   10.4ms
  9   -1.117520613465      -14.45       -8.62   0.80    1.0   10.5ms
n     Energy            log10(ΔE)   log10(Δρ)   α      Diag   Δtime 
---   ---------------   ---------   ---------   ----   ----   ------
  1   -1.118247264674                   -1.69   0.80    1.0   12.9ms
  2   -1.118339043937       -4.04       -2.70   0.80    1.0   9.70ms
  3   -1.118340011116       -6.01       -3.44   0.80    1.0   9.88ms
  4   -1.118340028555       -7.76       -4.36   0.80    1.0   10.1ms
  5   -1.118340029140       -9.23       -5.12   0.80    1.0   16.1ms
  6   -1.118340029167      -10.57       -5.62   0.80    1.0   10.2ms
  7   -1.118340029169      -11.73       -6.68   0.80    1.0   10.3ms
  8   -1.118340029169      -13.55       -7.58   0.80    1.0   53.3ms
  9   -1.118340029169   +  -14.54       -8.12   0.80    1.0   10.8ms
 10   -1.118340029169      -14.75       -8.55   0.80    1.0    286ms
n     Energy            log10(ΔE)   log10(Δρ)   α      Diag   Δtime 
---   ---------------   ---------   ---------   ----   ----   ------
  1   -1.118340029169                   -9.05   0.80    1.0   6.92ms
  2   -1.118340029169   +  -14.88      -10.33   0.80    1.0   9.91ms
n     Energy            log10(ΔE)   log10(Δρ)   α      Diag   Δtime 
---   ---------------   ---------   ---------   ----   ----   ------
  1   -1.118340029169                  -11.10   0.80    1.0   6.76ms
  2   -1.118340029169   +  -14.40      -11.49   0.80    1.0   9.78ms

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

n     Energy            log10(ΔE)   log10(Δρ)   α      Diag   Δtime 
---   ---------------   ---------   ---------   ----   ----   ------
  1   -1.118346721507                   -3.09   0.80    1.0   6.95ms
  2   -1.118346864760       -6.84       -4.11   0.80    1.0   9.91ms
  3   -1.118346866237       -8.83       -4.86   0.80    1.0   9.88ms
  4   -1.118346866263      -10.59       -5.78   0.80    1.0   10.0ms
  5   -1.118346866264      -12.09       -6.55   0.80    1.0   10.0ms
  6   -1.118346866264      -13.39       -7.04   0.80    1.0   18.8ms
  7   -1.118346866264   +  -14.75       -8.13   0.80    1.0   10.6ms
  8   -1.118346866264      -15.05       -8.95   0.80    1.0   10.5ms
n     Energy            log10(ΔE)   log10(Δρ)   α      Diag   Δtime 
---   ---------------   ---------   ---------   ----   ----   ------
  1   -1.118354724004                   -2.61   0.80    1.0   6.83ms
  2   -1.118356087056       -5.87       -3.62   0.80    1.0   9.90ms
  3   -1.118356101131       -7.85       -4.37   0.80    1.0   9.86ms
  4   -1.118356101377       -9.61       -5.29   0.80    1.0   9.93ms
  5   -1.118356101385      -11.10       -6.06   0.80    1.0   17.1ms
  6   -1.118356101386      -12.45       -6.55   0.80    1.0   10.4ms
  7   -1.118356101386      -13.64       -7.65   0.80    1.0   10.5ms
  8   -1.118356101386      -14.88       -8.45   0.80    1.0   10.4ms
n     Energy            log10(ΔE)   log10(Δρ)   α      Diag   Δtime 
---   ---------------   ---------   ---------   ----   ----   ------
  1   -1.118356101386                   -9.24   0.80    1.0   6.77ms
  2   -1.118356101386   +  -15.35       -9.82   0.80    1.0   13.0ms
n     Energy            log10(ΔE)   log10(Δρ)   α      Diag   Δtime 
---   ---------------   ---------   ---------   ----   ----   ------
  1   -1.118356101386                  -10.62   0.80    1.0   6.80ms
  2   -1.118356101386   +  -14.22      -11.46   0.80    1.0   9.90ms

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

n     Energy            log10(ΔE)   log10(Δρ)   α      Diag   Δtime 
---   ---------------   ---------   ---------   ----   ----   ------
  1   -1.118356102848                   -4.94   0.80    1.0   6.98ms
  2   -1.118356102877      -10.54       -5.96   0.80    1.0   9.87ms
  3   -1.118356102877      -12.53       -6.70   0.80    1.0   9.79ms
  4   -1.118356102877      -14.12       -7.62   0.80    1.0   10.0ms
  5   -1.118356102877   +  -14.88       -8.39   0.80    1.0   16.8ms
  6   -1.118356102877      -14.51       -8.89   0.80    1.0   10.3ms
n     Energy            log10(ΔE)   log10(Δρ)   α      Diag   Δtime 
---   ---------------   ---------   ---------   ----   ----   ------
  1   -1.118356104771                   -4.40   0.80    1.0   9.56ms
  2   -1.118356105116       -9.46       -5.42   0.80    1.0   9.94ms
  3   -1.118356105120      -11.45       -6.17   0.80    1.0   9.84ms
  4   -1.118356105120      -13.21       -7.09   0.80    1.0   12.9ms
  5   -1.118356105120      -15.05       -7.86   0.80    1.0   10.4ms
  6   -1.118356105120      -15.35       -8.35   0.80    1.0   10.3ms
  7   -1.118356105120      -15.35       -9.45   0.80    1.0   13.0ms
n     Energy            log10(ΔE)   log10(Δρ)   α      Diag   Δtime 
---   ---------------   ---------   ---------   ----   ----   ------
  1   -1.118356105120                  -10.08   0.80    1.0   6.90ms
  2   -1.118356105120   +  -14.21      -11.02   0.80    1.0   9.91ms
n     Energy            log10(ΔE)   log10(Δρ)   α      Diag   Δtime 
---   ---------------   ---------   ---------   ----   ----   ------
  1   -1.118356105120                  -11.67   0.80    1.0   6.84ms
  2   -1.118356105120      -14.37      -12.44   0.80    1.0   12.7ms

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

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, -2.09533e-34, -1.55967e-34]u"a₀")
    Atom(H,  [ 1.44318, -1.3127e-34, 7.22625e-35]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.486365868323205 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.335352360974                   -0.81   0.80    7.3    392ms
  2   -8.340909603303       -2.26       -1.69   0.80    1.3   41.0ms
  3   -8.341203711551       -3.53       -2.79   0.80    2.3   15.8ms
  4   -8.341214233336       -4.98       -3.26   0.80    3.3   18.6ms
  5   -8.341214269137       -7.45       -3.97   0.80    1.3   14.1ms
  6   -8.341214272347       -8.49       -5.22   0.80    2.0   15.1ms
  7   -8.341214272517       -9.77       -5.70   0.80    4.0   20.6ms
  8   -8.341214272518      -11.87       -6.40   0.80    2.0   15.1ms
  9   -8.341214272518      -13.07       -7.44   0.80    2.7   34.0ms
n     Energy            log10(ΔE)   log10(Δρ)   α      Diag   Δtime 
---   ---------------   ---------   ---------   ----   ----   ------
  1   -8.341214272518                   -9.05   0.80    1.0   37.8ms
  2   -8.341214272518   +  -14.75      -10.02   0.80    1.0   12.7ms
n     Energy            log10(ΔE)   log10(Δρ)   α      Diag   Δtime 
---   ---------------   ---------   ---------   ----   ----   ------
  1   -8.341214272518                  -10.25   0.80    1.0   11.3ms
  2   -8.341214272518   +  -14.75      -10.51   0.80    1.0   12.5ms

                 Geometry optimisation convergence (in atomic units)
┌─────┬─────────────────┬───────────┬─────────────┬─────────────┬──────────┬────────┐
│   n │          Energy │ log10(ΔE) │  max(Force) │ max(Virial) │ Pressure │  Δtime │
├─────┼─────────────────┼───────────┼─────────────┼─────────────┼──────────┼────────┤
│   0 │ -8.341214272518 │           │ 4.86142e-33 │    0.163458 │    -0.16 │  17.2s │
└─────┴─────────────────┴───────────┴─────────────┴─────────────┴──────────┴────────┘

n     Energy            log10(ΔE)   log10(Δρ)   α      Diag   Δtime 
---   ---------------   ---------   ---------   ----   ----   ------
  1   -8.350404694746                   -1.20   0.80    8.7   74.6ms
  2   -8.351871327008       -2.83       -1.88   0.80    2.0   16.4ms
  3   -8.351926123941       -4.26       -2.79   0.80    3.0   18.1ms
  4   -8.351928511201       -5.62       -3.86   0.80    3.3   19.6ms
  5   -8.351928514542       -8.48       -5.17   0.80    3.0   18.1ms
  6   -8.351928514651       -9.97       -5.93   0.80    4.0   21.4ms
  7   -8.351928514651      -12.19       -7.11   0.80    3.7   19.2ms
n     Energy            log10(ΔE)   log10(Δρ)   α      Diag   Δtime 
---   ---------------   ---------   ---------   ----   ----   ------
  1   -8.353402075518                   -1.52   0.80    8.0   31.4ms
  2   -8.353732391083       -3.48       -2.21   0.80    1.0   13.3ms
  3   -8.353757270372       -4.60       -2.99   0.80    3.0   18.5ms
  4   -8.353757526836       -6.59       -4.25   0.80    2.3   39.5ms
  5   -8.353757531711       -8.31       -5.36   0.80    3.0   19.7ms
  6   -8.353757531722      -10.97       -6.35   0.80    3.3   19.3ms
  7   -8.353757531722      -13.00       -7.26   0.80    3.0   20.1ms
n     Energy            log10(ΔE)   log10(Δρ)   α      Diag   Δtime 
---   ---------------   ---------   ---------   ----   ----   ------
  1   -8.353757531722                   -8.17   0.80    1.0   11.8ms
  2   -8.353757531722      -14.75       -9.21   0.80    1.0   13.2ms
n     Energy            log10(ΔE)   log10(Δρ)   α      Diag   Δtime 
---   ---------------   ---------   ---------   ----   ----   ------
  1   -8.353757531722                   -9.73   0.80    1.0   11.8ms
  2   -8.353757531722   +  -14.27      -10.08   0.80    1.0   18.8ms
n     Energy            log10(ΔE)   log10(Δρ)   α      Diag   Δtime 
---   ---------------   ---------   ---------   ----   ----   ------
  1   -8.353757531722                  -10.32   0.80    1.0   11.9ms
  2   -8.353757531722   +  -14.27      -10.67   0.80    1.0   13.3ms

┌─────┬─────────────────┬───────────┬─────────────┬─────────────┬──────────┬────────┐
│   n │          Energy │ log10(ΔE) │  max(Force) │ max(Virial) │ Pressure │  Δtime │
├─────┼─────────────────┼───────────┼─────────────┼─────────────┼──────────┼────────┤
│   1 │ -8.353757531722 │           │             │   0.0156413 │   -0.016 │  3.14s │
└─────┴─────────────────┴───────────┴─────────────┴─────────────┴──────────┴────────┘

n     Energy            log10(ΔE)   log10(Δρ)   α      Diag   Δtime 
---   ---------------   ---------   ---------   ----   ----   ------
  1   -8.353642347329                   -3.06   0.80    8.0   31.5ms
  2   -8.353746570395       -3.98       -3.29   0.80    1.0   13.7ms
  3   -8.353770534550       -4.62       -3.58   0.80    4.7   24.5ms
  4   -8.353770534594      -10.35       -3.84   0.80    1.0   13.7ms
  5   -8.353770536958       -8.63       -4.43   0.80    1.0   26.5ms
  6   -8.353770537300       -9.47       -4.70   0.80    1.3   14.8ms
  7   -8.353770537363      -10.20       -4.89   0.80    2.0   16.0ms
  8   -8.353770537398      -10.46       -5.88   0.80    1.0   13.8ms
  9   -8.353770537399      -11.83       -6.70   0.80    3.3   20.3ms
 10   -8.353770537399      -13.75       -6.80   0.80    2.7   18.7ms
n     Energy            log10(ΔE)   log10(Δρ)   α      Diag   Δtime 
---   ---------------   ---------   ---------   ----   ----   ------
  1   -8.353788835860                   -2.00   0.80    8.0   31.8ms
  2   -8.353880576819       -4.04       -2.71   0.80    1.0   13.6ms
  3   -8.353895063247       -4.84       -3.36   0.80    3.7   25.3ms
  4   -8.353895107578       -7.35       -4.30   0.80    2.0   16.4ms
  5   -8.353895110736       -8.50       -5.07   0.80    3.7   20.6ms
  6   -8.353895110778      -10.38       -5.82   0.80    2.7   18.1ms
  7   -8.353895110779      -11.77       -6.76   0.80    2.7   22.2ms
n     Energy            log10(ΔE)   log10(Δρ)   α      Diag   Δtime 
---   ---------------   ---------   ---------   ----   ----   ------
  1   -8.353895110779                   -7.50   0.80    1.0   12.2ms
  2   -8.353895110779      -14.45       -8.35   0.80    1.0   18.1ms
n     Energy            log10(ΔE)   log10(Δρ)   α      Diag   Δtime 
---   ---------------   ---------   ---------   ----   ----   ------
  1   -8.353895110779                   -8.82   0.80    1.0   12.2ms
  2   -8.353895110779      -14.27       -9.02   0.80    1.0   13.6ms
n     Energy            log10(ΔE)   log10(Δρ)   α      Diag   Δtime 
---   ---------------   ---------   ---------   ----   ----   ------
  1   -8.353895110779                   -9.33   0.80    1.0   12.2ms
  2   -8.353895110779   +  -14.75       -9.53   0.80    1.0   13.5ms

┌─────┬─────────────────┬───────────┬─────────────┬─────────────┬──────────┬────────┐
│   n │          Energy │ log10(ΔE) │  max(Force) │ max(Virial) │ Pressure │  Δtime │
├─────┼─────────────────┼───────────┼─────────────┼─────────────┼──────────┼────────┤
│   2 │ -8.353895110779 │     -3.86 │ 1.07896e-32 │ 0.000646168 │ -0.00065 │  1.67s │
└─────┴─────────────────┴───────────┴─────────────┴─────────────┴──────────┴────────┘

n     Energy            log10(ΔE)   log10(Δρ)   α      Diag   Δtime 
---   ---------------   ---------   ---------   ----   ----   ------
  1   -8.353823546659                   -3.60   0.80    7.7   36.7ms
  2   -8.353882947632       -4.23       -3.85   0.80    1.0   13.9ms
  3   -8.353895212184       -4.91       -4.03   0.80    5.3   26.9ms
  4   -8.353895212315       -9.88       -4.26   0.80    1.0   13.7ms
  5   -8.353895212473       -9.80       -4.76   0.80    1.0   17.1ms
  6   -8.353895212508      -10.46       -5.01   0.80    1.0   13.6ms
  7   -8.353895212521      -10.88       -6.30   0.80    1.7   14.8ms
  8   -8.353895212522      -11.96       -6.52   0.80    3.3   22.9ms
  9   -8.353895212522      -13.91       -6.70   0.80    1.0   13.5ms
 10   -8.353895212522      -14.27       -7.21   0.80    1.0   13.2ms
n     Energy            log10(ΔE)   log10(Δρ)   α      Diag   Δtime 
---   ---------------   ---------   ---------   ----   ----   ------
  1   -8.353799507279                   -3.34   0.80    7.7   33.6ms
  2   -8.353877625165       -4.11       -3.73   0.80    1.0   13.0ms
  3   -8.353895360921       -4.75       -4.03   0.80    5.3   24.9ms
  4   -8.353895362545       -8.79       -4.63   0.80    1.3   17.1ms
  5   -8.353895362667       -9.91       -5.13   0.80    2.0   15.5ms
  6   -8.353895362684      -10.77       -5.75   0.80    2.0   16.0ms
  7   -8.353895362686      -11.88       -6.52   0.80    2.3   16.7ms
  8   -8.353895362686      -13.30       -7.22   0.80    3.0   22.0ms
n     Energy            log10(ΔE)   log10(Δρ)   α      Diag   Δtime 
---   ---------------   ---------   ---------   ----   ----   ------
  1   -8.353895362686                   -8.02   0.80    1.0   11.4ms
  2   -8.353895362686      -14.45       -9.13   0.80    1.0   12.8ms
n     Energy            log10(ΔE)   log10(Δρ)   α      Diag   Δtime 
---   ---------------   ---------   ---------   ----   ----   ------
  1   -8.353895362686                   -9.46   0.80    1.0   11.4ms
  2   -8.353895362686   +    -Inf       -9.67   0.80    1.0   12.9ms
n     Energy            log10(ΔE)   log10(Δρ)   α      Diag   Δtime 
---   ---------------   ---------   ---------   ----   ----   ------
  1   -8.353895362686                   -9.85   0.80    1.0   11.5ms
  2   -8.353895362686   +  -14.75      -10.23   0.80    1.0   12.8ms

┌─────┬─────────────────┬───────────┬─────────────┬─────────────┬──────────┬────────┐
│   n │          Energy │ log10(ΔE) │  max(Force) │ max(Virial) │ Pressure │  Δtime │
├─────┼─────────────────┼───────────┼─────────────┼─────────────┼──────────┼────────┤
│   3 │ -8.353895362686 │     -6.60 │             │  1.71267e-6 │  -1.7e-6 │  1.50s │
└─────┴─────────────────┴───────────┴─────────────┴─────────────┴──────────┴────────┘

Structure after optimization

results.system
FlexibleSystem(Si₂, periodicity = TTT):
    cell_vectors      : [-4.2362e-51  5.27783  5.27783;
                          5.27783 -4.51861e-51  5.27783;
                          5.27783  5.27783 -4.51861e-51]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.55566293659422 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.