formelsammlung/scripts/cm_crystal_structures.py

52 lines
1.5 KiB
Python
Raw Normal View History

from formulary import *
from util.aseutil import set_atom_color, get_pov_settings
"""
Create crystal structures using ase and render them with povray
Rotation angle:
To get the rotation angle, open the structure in the ase.visualize.view
and use "View->Rotation" to get the desired angles
"""
set_atom_color("Na", COLORSCHEME["fg-red"])
set_atom_color("Cl", COLORSCHEME["fg-blue"])
set_atom_color("Zn", COLORSCHEME["fg-blue"])
set_atom_color("S", COLORSCHEME["fg-yellow"])
from ase.lattice import compounds
from ase.build import cut, bulk
from ase import Atom, Atoms
def zincblende():
zns = compounds.Zincblende(("Zn", "S"), latticeconstant=5.0, size=(1,1,1))
zns_cell = cut(zns, b=(0,0,1), origo=(0,0,0), extend=1.1)
return zns_cell
# NaCl cut
def nacl():
nacl = compounds.NaCl(("Na", "Cl"), latticeconstant=5.0, size=(1,1,1))
nacl_cell = cut(nacl, b=(0,0,1), origo=(0,0,0), extend=1.1)
return nacl_cell
def wurtzite():
compounds.L1_2
wurtzite = bulk('SZn', 'wurtzite', a=3.129, c=5.017)
wurtzite_cell = cut(wurtzite,
a=[1, 0, 0],
b=[-1, -1, 0],
c=[0, 0, 1], extend=1.1)
return wurtzite_cell
if __name__ == "__main__":
export_atoms(nacl(), "cm_crystal_NaCl", size_formula_half_quadratic)
export_atoms(wurtzite(), "cm_crystal_wurtzite", size_formula_half_quadratic, rotation="70x,20y,174z")
export_atoms(zincblende(), "cm_crystal_zincblende", size_formula_half_quadratic, rotation="-155x,70y,24z")
w = wurtzite()
from ase.visualize import view
view(w)