Cohesive energy of Albite from Materials Project for LAMMPS comparison

Hi,

I am doing some work using LAMMPS to calculate the cohesive energy of various silicates. I notice when I do albite I am getting a much lower cohesive energy than expected so I am looking for some kind of a comparison.

Does materials project have the cohesive energy of albite listed? I see final energy/atom, but am not sure if this is the cohesive energy? Further, should cohesive energy be for the mineral (all atoms in the system), or for each individual atom type in the system. For example, the cohesive energy of Na in albite is …

If anyone has DFT data or materials project data for the cohesive energy of albite it would be much appreciated.

Thanks!

Liam

Mat Proj has pure albite if that’s what you’re looking for: mp-721988: NaAlSi3O8 (triclinic, P-1, 2)

1 Like

Thanks, but where do I actually find the cohesive energy?

It is not directly listed.

E_{cohesive} = E_{bulk} - \sum_{i \in bulk} n_i E_{i}

Where n is the number of atoms of type i in the bulk structure, and E_i is the energy of isolated atom i. Usually if you want to analyze phase stability, you can use the formation energy, which defined with the pure elemental crystals as the reference states in MP. If you want to calculate the cohesive energy itself, you should use VASP to calculate the isolated atom energies. You can find these values listed in the pseudopotential file, which we cannot give out publically, you need to have a vasp license.

You might want to check the MPDS: MPDS materials platform however we don’t have that property from ab initio just yet (only ML). ETA is August 2021.

MP hosts a collection of calculated isolated-atom energies and facilitates calculation of cohesive energy given a material ID via the pymatgen.ext.matproj.MPRester.get_cohesive_energy method. You can see from the linked method code how to directly fetch the isolated-atom calculation results if you wish to compute cohesive energy in an alternative way. We never quite got these up on the website. Example:

from pymatgen.ext.matproj import MPRester
mpr = MPRester()
mpr.get_cohesive_energy('mp-721988', per_atom=True) # 6.73 eV/atom

Hi all,

Thanks very much for the help. I will go through these and message back if it isn’t working.

Hi, as a quick follow up I tried running this cohesive short script in mybinder.org by modifying one of the Jupyter notebooks. It worked fine but I realized I was actually modifying the main notebook so tried to follow the steps. I forked the github and made my own binder:

When I run one of the pre made notebooks in there it works fine, but when I modify it for my cohesive script it no longer works. I get the error:

TypeError Traceback (most recent call last)
in
3 # Alternatively, you will need to supply the API key as an arg to MPRester.
4 mpr = MPRester(“xptfS7B0XQq3cO1R”)
----> 5 mpr.get_cohesive_energy(‘mp-721988’, per_atom=True)

/srv/conda/envs/notebook/lib/python3.7/site-packages/pymatgen/ext/matproj.py in get_cohesive_energy(self, material_id, per_atom)
1315 Cohesive energy (eV).
1316 “”"
→ 1317 entry = self.get_entry_by_material_id(material_id)
1318 ebulk = entry.energy / entry.composition.get_integer_formula_and_factor()[1]
1319 comp_dict = entry.composition.reduced_composition.as_dict()

/srv/conda/envs/notebook/lib/python3.7/site-packages/pymatgen/ext/matproj.py in get_entry_by_material_id(self, material_id, compatible_only, inc_structure, property_data, conventional_unit_cell)
752 inc_structure=inc_structure,
753 property_data=property_data,
→ 754 conventional_unit_cell=conventional_unit_cell,
755 )
756 return data[0]

/srv/conda/envs/notebook/lib/python3.7/site-packages/pymatgen/ext/matproj.py in get_entries(self, chemsys_formula_id_criteria, compatible_only, inc_structure, property_data, conventional_unit_cell, sort_by_e_above_hull)
568 with warnings.catch_warnings():
569 warnings.filterwarnings(“ignore”, message=“Failed to guess oxidation states.*”)
→ 570 entries = MaterialsProject2020Compatibility().process_entries(entries, clean=True)
571 if sort_by_e_above_hull:
572 entries = sorted(entries, key=lambda entry: entry.data[“e_above_hull”])

/srv/conda/envs/notebook/lib/python3.7/site-packages/pymatgen/entries/compatibility.py in process_entries(self, entries, clean, verbose)
557 processed_entry_list = []
558
→ 559 for entry in PBar(entries, disable=(not verbose)):
560 ignore_entry = False
561 # if clean is True, remove all previous adjustments from the entry

TypeError: init() got an unexpected keyword argument ‘disable’

Sorry meant to reply directly, see above

Hello.
Sorry for bringing this topic back up after three years.

Currently, with the materials project being renewed, it seems that using the existing pymatgen.ext.matproj for get_cohesive_energy isn’t possible. I’ve actually tried several times, and I keep running into the following error:

cohesive = mpr.get_cohesive_energy(self, ‘mp-1206874’, per_atom=True)
^^^^^^^^^^^^^^^^^^^^^^^
File “/home/{my_folder_name}/anaconda3/lib/python3.11/site-packages/mp_api/client/mprester.py”, line 399, in getattr
raise AttributeError(
AttributeError: ‘MPRester’ object has no attribute ‘get_cohesive_energy’

It seems that the newest version of pymatgen (24.10.3) no longer have the get_cohesive_~ part.

Is there any other way to retrieve the cohesive energy? I think there’s also a method using entry (pulling total energy and dividing by the number of atoms), but this wouldn’t give an accurate calculation for isolated atoms, making the reliability of the results questionable.

Please let me know if there’s a good method available. I really debated whether to call back this topic for several days and tried various things, but it’s just not working out as I hoped…

One sure way to handle this would be to downgrade pymatgen version which contain that codes, but unfortunately, due to some errors, downgrading is currently not an option.

Best regards.