#!/usr/bin/env amspython # coding: utf-8 # ## Initial imports from scm.plams import * try: from ase import Atoms from pymatgen.core.structure import Structure from pymatgen.analysis.diffraction.xrd import XRDCalculator except ImportError as e: print( "You need ASE and pymatgen installed in the AMS python environment to run this example. Install the package for m3gnet to do this." ) print(e) exit(1) # ## Create ASE atoms object for BaTiO3 at = Atoms( symbols=[ "Ba", "Ti", "O", "O", "O", ], scaled_positions=[ [ 0.0, 0.0, 0.0, ], [0.5, 0.5, 0.5], [0.0, 0.0, 0.5], [0.0, 0.5, 0.0], [0.5, 0.0, 0.0], ], cell=[4.01, 4.01, 4.01], pbc=(True, True, True), ) plot_molecule(at, rotation="-5x,5y,0z") # show in Jupyter notebook # ## Save ASE Atoms to .cif format fname = "batio3.cif" at.write(fname) # ## Load .cif in pymatgen and calculate XRD # Available radiation sources: print(f"Available radiation sources: {XRDCalculator.AVAILABLE_RADIATION}") # Let's choose Cu K-alpha (default): structure = Structure.from_file(fname) xrd_calc = XRDCalculator(wavelength="CuKa") xrd_calc.show_plot(structure) pattern = xrd_calc.get_pattern(structure) print("2*Theta Intensity hkl d_hkl(angstrom)") for two_theta, intensity, hkls, d_hkl in zip(pattern.x, pattern.y, pattern.hkls, pattern.d_hkls): hkl_tuples = [hkl["hkl"] for hkl in hkls] for hkl in hkl_tuples: label = ", ".join(map(str, hkl)) print(f"{two_theta:.2f} {intensity:.2f} {hkl} {d_hkl:.3f}")