#!/usr/bin/env plams # Calculate lattice parameters of ZnO using DFTB for different k-space samplings # This file is part of the "Crystals and Surfaces" tutorial of the Amsterdam Modeling Suite # USAGE: $AMSBIN/plams dftb_lattopt_example.py mol = Molecule("ZnO_wurtzite.xyz") s = Settings() s.input.ams.Task = "GeometryOptimization" s.input.ams.GeometryOptimization.OptimizeLattice = "Yes" s.input.dftb.model = "SCC-DFTB" s.input.dftb.resourcesdir = "DFTB.org/znorg-0-1" jobs = [] for kspace in ["Basic", "Normal", "Good", "VeryGood"]: s.input.dftb.kspace.quality = kspace jobs.append(AMSJob(settings=s, molecule=mol, name=kspace)) for job in jobs: job.run() print("ZnO wurtzite optimized with SCC-DFTB znorg-0-1") print("lengths in angstrom, angles in degrees") print("kspace a b c alpha beta gamma") for job in jobs: try: opt_mol = job.results.get_main_molecule() cellpars = list(toASE(opt_mol).get_cell_lengths_and_angles()) print( "{} {:.3f} {:.3f} {:.3f} {:.3f} {:.3f} {:.3f}".format( job.name, cellpars[0], cellpars[1], cellpars[2], cellpars[3], cellpars[4], cellpars[5] ) ) except: pass