Creating supercells with pymatgen
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.114418e+02 1.526206e+00 * time: 0.047692060470581055 1 1.049564e+01 8.605299e-01 * time: 0.14389991760253906 2 -1.134795e+01 1.060693e+00 * time: 0.2367839813232422 3 -3.404157e+01 8.941909e-01 * time: 0.3957839012145996 4 -4.740175e+01 6.439889e-01 * time: 0.5156588554382324 5 -5.702877e+01 2.358206e-01 * time: 0.6330578327178955 6 -5.993787e+01 1.260153e-01 * time: 0.7251260280609131 7 -6.101202e+01 5.559138e-02 * time: 0.8184869289398193 8 -6.138705e+01 6.000568e-02 * time: 0.9138128757476807 9 -6.162523e+01 3.829022e-02 * time: 1.0091838836669922 10 -6.181351e+01 2.763832e-02 * time: 1.1057829856872559 11 -6.196712e+01 2.065320e-02 * time: 1.2032098770141602 12 -6.203423e+01 1.986066e-02 * time: 1.317816972732544 13 -6.210270e+01 1.659723e-02 * time: 1.411789894104004 14 -6.213859e+01 1.367832e-02 * time: 1.5082659721374512 15 -6.217271e+01 1.120699e-02 * time: 1.6009080410003662 16 -6.219195e+01 1.026648e-02 * time: 1.695051908493042 17 -6.220646e+01 8.779729e-03 * time: 1.7879760265350342 18 -6.221666e+01 7.002889e-03 * time: 1.8813378810882568 19 -6.222467e+01 7.553672e-03 * time: 1.974294900894165 20 -6.223173e+01 6.789086e-03 * time: 2.0674619674682617 21 -6.223870e+01 7.977724e-03 * time: 2.1975958347320557 22 -6.224586e+01 6.431757e-03 * time: 2.3457388877868652 23 -6.225236e+01 5.454031e-03 * time: 2.452260971069336 24 -6.225679e+01 3.493221e-03 * time: 2.5463459491729736 25 -6.225909e+01 2.430389e-03 * time: 2.6400208473205566 26 -6.226021e+01 1.673224e-03 * time: 2.7346689701080322 27 -6.226074e+01 1.493230e-03 * time: 2.8290178775787354 28 -6.226104e+01 1.197603e-03 * time: 2.921243906021118 29 -6.226123e+01 8.886174e-04 * time: 3.0136139392852783 30 -6.226137e+01 8.574643e-04 * time: 3.1082520484924316 31 -6.226148e+01 6.646317e-04 * time: 3.2020649909973145 32 -6.226155e+01 5.598096e-04 * time: 3.3101859092712402 33 -6.226160e+01 4.040120e-04 * time: 3.4022579193115234 34 -6.226163e+01 2.922187e-04 * time: 3.4949469566345215 35 -6.226165e+01 2.480550e-04 * time: 3.5875749588012695 36 -6.226166e+01 1.668518e-04 * time: 3.682229995727539 37 -6.226166e+01 1.232849e-04 * time: 3.775825023651123 38 -6.226166e+01 6.498902e-05 * time: 3.869248867034912 39 -6.226166e+01 5.376250e-05 * time: 3.962890863418579 40 -6.226167e+01 4.511735e-05 * time: 4.05699896812439 41 -6.226167e+01 3.597531e-05 * time: 4.1641528606414795 42 -6.226167e+01 2.807706e-05 * time: 4.258270978927612 43 -6.226167e+01 2.550638e-05 * time: 4.352470874786377 44 -6.226167e+01 2.046943e-05 * time: 4.445940971374512 45 -6.226167e+01 1.608685e-05 * time: 4.538280963897705 46 -6.226167e+01 1.207549e-05 * time: 4.630908966064453 47 -6.226167e+01 8.533072e-06 * time: 4.724808931350708 48 -6.226167e+01 7.089667e-06 * time: 4.818917989730835 49 -6.226167e+01 5.092450e-06 * time: 4.914306879043579 50 -6.226167e+01 3.498343e-06 * time: 5.008074998855591
scfres.energies
Energy breakdown: Kinetic 25.7671069 AtomicLocal -18.8557669 AtomicNonlocal 14.8522634 Ewald -67.1831486 PspCorrection -2.3569765 Hartree 4.8485374 Xc -19.3336822 total -62.261666460080