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.125163e+02 1.683444e+00 * time: 0.07442092895507812 1 1.060166e+01 1.000549e+00 * time: 1.4081988334655762 2 -1.175219e+01 1.139735e+00 * time: 1.520354986190796 3 -3.379286e+01 7.842161e-01 * time: 1.6302669048309326 4 -4.714633e+01 5.825166e-01 * time: 1.7564399242401123 5 -5.683189e+01 2.328308e-01 * time: 1.8736579418182373 6 -5.968533e+01 1.874247e-01 * time: 1.9463839530944824 7 -6.088317e+01 8.674795e-02 * time: 2.021021842956543 8 -6.141235e+01 4.472139e-02 * time: 2.1063590049743652 9 -6.169802e+01 3.852340e-02 * time: 2.1841468811035156 10 -6.185809e+01 4.134820e-02 * time: 2.2580888271331787 11 -6.199476e+01 2.409734e-02 * time: 2.342028856277466 12 -6.206872e+01 1.660792e-02 * time: 2.4303858280181885 13 -6.211469e+01 1.310387e-02 * time: 2.507253885269165 14 -6.214826e+01 1.475271e-02 * time: 2.5909459590911865 15 -6.217092e+01 1.152360e-02 * time: 2.66666579246521 16 -6.218638e+01 9.419403e-03 * time: 2.743010997772217 17 -6.219778e+01 9.358290e-03 * time: 2.821047782897949 18 -6.220660e+01 8.234250e-03 * time: 2.9060728549957275 19 -6.221401e+01 8.072754e-03 * time: 2.9810659885406494 20 -6.222055e+01 7.100349e-03 * time: 3.057788848876953 21 -6.222747e+01 6.683824e-03 * time: 3.138162851333618 22 -6.223485e+01 6.105189e-03 * time: 3.2177109718322754 23 -6.224213e+01 5.368224e-03 * time: 3.2914319038391113 24 -6.224824e+01 5.012342e-03 * time: 3.368626832962036 25 -6.225240e+01 4.592077e-03 * time: 3.451521873474121 26 -6.225529e+01 4.193766e-03 * time: 3.5256879329681396 27 -6.225732e+01 3.318391e-03 * time: 3.598994016647339 28 -6.225871e+01 2.742178e-03 * time: 3.6811928749084473 29 -6.225970e+01 2.116828e-03 * time: 3.7565958499908447 30 -6.226045e+01 1.866317e-03 * time: 3.8327929973602295 31 -6.226097e+01 1.430458e-03 * time: 3.9161159992218018 32 -6.226129e+01 9.715023e-04 * time: 3.993825912475586 33 -6.226148e+01 6.852608e-04 * time: 4.069645881652832 34 -6.226158e+01 4.247420e-04 * time: 4.1444008350372314 35 -6.226163e+01 3.352697e-04 * time: 4.228296995162964 36 -6.226165e+01 3.274319e-04 * time: 4.305337905883789 37 -6.226166e+01 2.120502e-04 * time: 4.3909900188446045 38 -6.226166e+01 1.262009e-04 * time: 4.474836826324463 39 -6.226166e+01 9.257791e-05 * time: 4.550301790237427 40 -6.226166e+01 7.835113e-05 * time: 4.6262218952178955 41 -6.226166e+01 6.367422e-05 * time: 4.708501815795898 42 -6.226167e+01 6.091855e-05 * time: 4.786352872848511 43 -6.226167e+01 3.732886e-05 * time: 4.865405797958374 44 -6.226167e+01 2.822522e-05 * time: 4.940643787384033 45 -6.226167e+01 2.716651e-05 * time: 5.024302959442139 46 -6.226167e+01 1.805857e-05 * time: 5.098430871963501 47 -6.226167e+01 1.445114e-05 * time: 5.176337003707886 48 -6.226167e+01 1.337830e-05 * time: 5.262537956237793 49 -6.226167e+01 7.807462e-06 * time: 5.339044809341431 50 -6.226167e+01 6.624390e-06 * time: 5.414999961853027 51 -6.226167e+01 5.694768e-06 * time: 5.489182949066162 52 -6.226167e+01 4.835063e-06 * time: 5.570072889328003 53 -6.226167e+01 4.180646e-06 * time: 5.6441168785095215 54 -6.226167e+01 3.024080e-06 * time: 5.720885992050171 55 -6.226167e+01 2.529014e-06 * time: 5.807113885879517 56 -6.226167e+01 1.511129e-06 * time: 5.880239009857178
scfres.energies
Energy breakdown: Kinetic 25.7671069 AtomicLocal -18.8557672 AtomicNonlocal 14.8522639 Ewald -67.1831486 PspCorrection -2.3569765 Hartree 4.8485372 Xc -19.3336820 total -62.261666462606