The Pymatgen python library allows to setup
solid-state calculations using a flexible set of classes as well as an API
to an online data base of structures. Its Structure
and Lattice
objects are directly supported by the DFTK load_atoms
and load_lattice
functions, such that DFTK may be readily used to run calculation on systems
defined in pymatgen. Using the pymatgen_structure
function a conversion
from DFTK to pymatgen structures is also possible. In the following we
use this to create a silicon supercell and find its LDA ground state
using direct minimisation.
First we setup the silicon lattice in DFTK.
using DFTK
a = 10.263141334305942 # Lattice constant in Bohr
lattice = a / 2 .* [[0 1 1.]; [1 0 1.]; [1 1 0.]]
Si = ElementPsp(:Si, psp=load_psp("hgh/lda/Si-q4"))
atoms = [Si => [ones(3)/8, -ones(3)/8]];
Next we make a [2, 2, 2]
supercell using pymatgen
pystruct = pymatgen_structure(lattice, atoms)
pystruct.make_supercell([2, 2, 2])
lattice = load_lattice(pystruct)
atoms = [Si => [s.frac_coords for s in pystruct.sites]];
Setup an LDA model and discretize using
a single kpoint and a small Ecut
of 5 Hartree.
model = model_LDA(lattice, atoms)
basis = PlaneWaveBasis(model, 5, kgrid=(1, 1, 1))
PlaneWaveBasis (Ecut=5.0, 1 kpoints)
Find the ground state using direct minimisation (always using SCF is boring ...)
scfres = direct_minimization(basis, tol=1e-5);
Iter Function value Gradient norm 0 1.121736e+02 1.543532e+00 * time: 0.6848011016845703 1 1.085481e+01 8.940654e-01 * time: 2.0310211181640625 2 -1.228226e+01 9.634674e-01 * time: 2.718388080596924 3 -3.434843e+01 8.233876e-01 * time: 3.668174982070923 4 -4.800090e+01 6.609128e-01 * time: 4.6324169635772705 5 -5.680566e+01 2.845932e-01 * time: 5.593683958053589 6 -5.945220e+01 2.747412e-01 * time: 6.2140419483184814 7 -6.062499e+01 1.031030e-01 * time: 6.88067102432251 8 -6.119585e+01 4.246864e-02 * time: 7.520668983459473 9 -6.147872e+01 3.586425e-02 * time: 8.176743030548096 10 -6.171315e+01 2.937246e-02 * time: 8.81228494644165 11 -6.188294e+01 2.458883e-02 * time: 9.448822021484375 12 -6.200539e+01 2.401420e-02 * time: 10.112662076950073 13 -6.206713e+01 1.945006e-02 * time: 10.76079797744751 14 -6.212006e+01 1.233435e-02 * time: 11.42314100265503 15 -6.214706e+01 1.386318e-02 * time: 12.083470106124878 16 -6.216790e+01 1.299556e-02 * time: 12.715481996536255 17 -6.218216e+01 1.111749e-02 * time: 13.33731198310852 18 -6.219355e+01 7.730938e-03 * time: 13.993356943130493 19 -6.220106e+01 6.446501e-03 * time: 14.626105070114136 20 -6.220724e+01 5.986005e-03 * time: 15.266288995742798 21 -6.221295e+01 5.995300e-03 * time: 15.976226091384888 22 -6.221869e+01 7.461268e-03 * time: 16.59588098526001 23 -6.222413e+01 5.387484e-03 * time: 17.21696710586548 24 -6.222934e+01 6.147206e-03 * time: 17.849141120910645 25 -6.223458e+01 5.137485e-03 * time: 18.507045030593872 26 -6.224012e+01 5.840076e-03 * time: 19.14129400253296 27 -6.224531e+01 5.770205e-03 * time: 19.767625093460083 28 -6.225026e+01 5.031678e-03 * time: 20.40631914138794 29 -6.225440e+01 3.793222e-03 * time: 21.080587148666382 30 -6.225735e+01 3.095922e-03 * time: 21.727144956588745 31 -6.225921e+01 2.731297e-03 * time: 22.379591941833496 32 -6.226032e+01 1.728797e-03 * time: 23.009972095489502 33 -6.226097e+01 1.181067e-03 * time: 23.648182153701782 34 -6.226129e+01 8.241737e-04 * time: 24.296297073364258 35 -6.226147e+01 6.578705e-04 * time: 24.946780920028687 36 -6.226155e+01 5.156948e-04 * time: 25.58837914466858 37 -6.226159e+01 4.375162e-04 * time: 26.22631597518921 38 -6.226162e+01 2.879797e-04 * time: 26.893393993377686 39 -6.226163e+01 2.372885e-04 * time: 27.50838804244995 40 -6.226164e+01 2.254807e-04 * time: 28.134989976882935 41 -6.226165e+01 1.852172e-04 * time: 28.785408973693848 42 -6.226166e+01 1.371360e-04 * time: 29.449342012405396 43 -6.226166e+01 1.055437e-04 * time: 30.081033945083618 44 -6.226166e+01 7.774477e-05 * time: 30.751049041748047 45 -6.226167e+01 5.615661e-05 * time: 31.388726949691772 46 -6.226167e+01 3.651206e-05 * time: 32.03332495689392 47 -6.226167e+01 2.451593e-05 * time: 32.68710207939148 48 -6.226167e+01 1.905260e-05 * time: 33.34993505477905 49 -6.226167e+01 1.193822e-05 * time: 34.00900602340698 50 -6.226167e+01 1.030623e-05 * time: 34.65874195098877 51 -6.226167e+01 8.943683e-06 * time: 35.31452298164368 52 -6.226167e+01 6.612344e-06 * time: 35.996204137802124 53 -6.226167e+01 6.356308e-06 * time: 36.64549994468689 54 -6.226167e+01 4.779317e-06 * time: 37.27297496795654 55 -6.226167e+01 3.616759e-06 * time: 37.9034321308136 56 -6.226167e+01 2.942389e-06 * time: 38.53810906410217 57 -6.226167e+01 1.924942e-06 * time: 39.21419310569763
scfres.energies
Energy breakdown: Kinetic 25.7671068 AtomicLocal -18.8557706 AtomicNonlocal 14.8522671 Ewald -67.1831486 PspCorrection -2.3569765 Hartree 4.8485376 Xc -19.3336821 total -62.261666461944