{ "cells": [ { "cell_type": "markdown", "id": "2feb87ef", "metadata": {}, "source": [ "# Magnetic Structure Generation as Input for Initial DFT Calculations\n", "\n", "_Author: Shivam Beniwal_\n", "\n", "Date: 26 August 2021" ] }, { "cell_type": "markdown", "id": "f8548d15", "metadata": {}, "source": [ "## Introduction\n", "\n", "This notebook demonstrates a helpful method from the pymatgen magnetism analyzer module to add magnetic information to a structure as an input to a DFT run where the outcome of the calculation is dependent on the initial magnetic structure, and/or requires some magnetic moment as starting point. This can be extremely useful in case of newly predicted structures." ] }, { "cell_type": "code", "execution_count": null, "id": "e167481e", "metadata": {}, "outputs": [], "source": [ "# Uncomment the subsequent lines in this cell to install dependencies for Google Colab.\n", "# !pip install pymatgen==2022.7.19" ] }, { "cell_type": "code", "execution_count": null, "id": "4622d496", "metadata": {}, "outputs": [], "source": [ "from pymatgen.analysis.magnetism.analyzer import CollinearMagneticStructureAnalyzer\n", "from pymatgen.core.structure import Structure\n", "from pymatgen.ext.matproj import MPRester\n", "from pymatgen.symmetry.analyzer import SpacegroupAnalyzer" ] }, { "cell_type": "code", "execution_count": null, "id": "299fd4df", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Full Formula (Li14 Fe9 P16 O56)\n", "Reduced Formula: Li14Fe9(P2O7)8\n", "abc : 10.747796 9.625861 12.724342\n", "angles: 68.820392 116.025779 107.299876\n", "Sites (95)\n", " # SP a b c\n", "--- ---- -------- -------- --------\n", " 0 Li+ 0.137339 0.92805 0.597441\n", " 1 Li+ 0.126045 0.434026 0.0847\n", " 2 Li+ 0.626176 0.453868 0.590839\n", " 3 Li+ 0.373824 0.546132 0.409161\n", " 4 Li+ 0.021288 0.643996 0.39688\n", " 5 Li+ 0.862661 0.07195 0.402559\n", " 6 Li+ 0.978712 0.356004 0.60312\n", " 7 Li+ 0.497222 0.8674 0.316203\n", " 8 Li+ 0.514158 0.632938 0.173531\n", " 9 Li+ 0.62191 0.955426 0.089457\n", " 10 Li+ 0.485842 0.367062 0.826469\n", " 11 Li+ 0.37809 0.044574 0.910543\n", " 12 Li+ 0.502778 0.1326 0.683797\n", " 13 Li+ 0.873955 0.565974 0.9153\n", " 14 Fe2+ 0.744962 0.435377 0.3042\n", " 15 Fe2+ 0.264262 0.071531 0.201932\n", " 16 Fe2+ 0.217648 0.200486 0.416895\n", " 17 Fe2+ 0.735738 0.928469 0.798068\n", " 18 Fe2+ 0.255038 0.564623 0.6958\n", " 19 Fe2+ 0.782352 0.799514 0.583105\n", " 20 Fe2+ 0.780133 0.300909 0.07859\n", " 21 Fe2+ 0 0 0\n", " 22 Fe2+ 0.219867 0.699091 0.92141\n", " 23 P5+ 0.700902 0.638321 0.014979\n", " 24 P5+ 0.208131 0.231393 0.659702\n", " 25 P5+ 0.538911 0.196141 0.132759\n", " 26 P5+ 0.052823 0.968562 0.776985\n", " 27 P5+ 0.798275 0.263793 0.843927\n", " 28 P5+ 0.299098 0.361679 0.985021\n", " 29 P5+ 0.050175 0.469029 0.273158\n", " 30 P5+ 0.949825 0.530971 0.726842\n", " 31 P5+ 0.947177 0.031438 0.223015\n", " 32 P5+ 0.461089 0.803859 0.867241\n", " 33 P5+ 0.300562 0.864765 0.485466\n", " 34 P5+ 0.699438 0.135235 0.514534\n", " 35 P5+ 0.201725 0.736207 0.156073\n", " 36 P5+ 0.464356 0.308442 0.367888\n", " 37 P5+ 0.535644 0.691558 0.632112\n", " 38 P5+ 0.791869 0.768607 0.340298\n", " 39 O2- 0.539863 0.158192 0.024743\n", " 40 O2- 0.092099 0.652773 0.225938\n", " 41 O2- 0.176637 0.901046 0.105233\n", " 42 O2- 0.20505 0.21303 0.022179\n", " 43 O2- 0.907901 0.347227 0.774062\n", " 44 O2- 0.716621 0.007461 0.47944\n", " 45 O2- 0.687158 0.754916 0.709086\n", " 46 O2- 0.954695 0.45511 0.336803\n", " 47 O2- 0.27639 0.492284 0.014508\n", " 48 O2- 0.8474 0.341196 0.944993\n", " 49 O2- 0.458339 0.562539 0.70479\n", " 50 O2- 0.043629 0.050809 0.156863\n", " 51 O2- 0.542044 0.165795 0.421783\n", " 52 O2- 0.540547 0.662135 0.919652\n", " 53 O2- 0.985828 0.405574 0.162943\n", " 54 O2- 0.302814 0.399019 0.860061\n", " 55 O2- 0.283379 0.992539 0.52056\n", " 56 O2- 0.312842 0.245084 0.290914\n", " 57 O2- 0.79495 0.78697 0.977821\n", " 58 O2- 0.354953 0.203087 0.752629\n", " 59 O2- 0.180042 0.392693 0.609766\n", " 60 O2- 0.808738 0.58249 0.640002\n", " 61 O2- 0.956371 0.949191 0.843137\n", " 62 O2- 0.308298 0.743719 0.790965\n", " 63 O2- 0.460137 0.841808 0.975257\n", " 64 O2- 0.72361 0.507716 0.985492\n", " 65 O2- 0.200766 0.718122 0.515678\n", " 66 O2- 0.459453 0.337865 0.080348\n", " 67 O2- 0.34922 0.712757 0.247493\n", " 68 O2- 0.98317 0.904386 0.66758\n", " 69 O2- 0.045305 0.54489 0.663197\n", " 70 O2- 0.539787 0.65326 0.525967\n", " 71 O2- 0.193456 0.914965 0.862184\n", " 72 O2- 0.093481 0.150897 0.728314\n", " 73 O2- 0.906519 0.849103 0.271686\n", " 74 O2- 0.536855 0.934374 0.793678\n", " 75 O2- 0.191262 0.41751 0.359998\n", " 76 O2- 0.823363 0.098954 0.894767\n", " 77 O2- 0.819958 0.607307 0.390234\n", " 78 O2- 0.1526 0.658804 0.055007\n", " 79 O2- 0.460213 0.34674 0.474033\n", " 80 O2- 0.541661 0.437461 0.29521\n", " 81 O2- 0.841986 0.849279 0.439014\n", " 82 O2- 0.65078 0.287243 0.752507\n", " 83 O2- 0.697186 0.600981 0.139939\n", " 84 O2- 0.699212 0.094667 0.641348\n", " 85 O2- 0.014173 0.594426 0.837057\n", " 86 O2- 0.158014 0.150721 0.560986\n", " 87 O2- 0.300788 0.905333 0.358652\n", " 88 O2- 0.806544 0.085035 0.137816\n", " 89 O2- 0.01683 0.095614 0.33242\n", " 90 O2- 0.691702 0.256281 0.209035\n", " 91 O2- 0.463145 0.065626 0.206322\n", " 92 O2- 0.645047 0.796913 0.247371\n", " 93 O2- 0.457956 0.834205 0.578217\n", " 94 O2- 0.799234 0.281878 0.484322\n" ] } ], "source": [ "# Specify location of CIF on your device\n", "structure = Structure.from_file(\"/home/user/Documents/cifs/lfp.cif\")\n", "print(structure)" ] }, { "cell_type": "markdown", "id": "e5fc1f62", "metadata": {}, "source": [ "## Add magmoms to initial structure\n", "\n", "Here we define magnetic moments of individual species present in the structure, if not already present. Refer to pymatgen [docs](https://pymatgen.org/pymatgen.analysis.magnetism.analyzer.html) for more information on options available for the argument overwrite_magmom_mode. Here we add magmoms for all sites in the structure irrespective of input structure, suitable for a spin-polarized (a.k.a 'magnetic') calculation.\n", "\n", "This is particularly interesting in case of either attempting a ferromagnetic calculation or an antiferromagnetic calculation." ] }, { "cell_type": "code", "execution_count": null, "id": "7c7b6ea0", "metadata": {}, "outputs": [], "source": [ "magmom = CollinearMagneticStructureAnalyzer(\n", " structure, overwrite_magmom_mode=\"replace_all_if_undefined\"\n", ")" ] }, { "cell_type": "code", "execution_count": null, "id": "94b18ea1", "metadata": {}, "outputs": [], "source": [ "# Assume an initial ferromagnetic order\n", "fm_structure = magmom.get_ferromagnetic_structure(make_primitive=True)" ] }, { "cell_type": "code", "execution_count": null, "id": "64729507", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Full Formula (Li14 Fe9 P16 O56)\n", "Reduced Formula: Li14Fe9(P2O7)8\n", "abc : 10.747796 9.625861 12.724342\n", "angles: 68.820392 116.025779 107.299876\n", "Sites (95)\n", " # SP a b c magmom\n", "--- ---- -------- -------- -------- --------\n", " 0 Li+ 0.137339 0.92805 0.597441 0\n", " 1 Li+ 0.126045 0.434026 0.0847 0\n", " 2 Li+ 0.626176 0.453868 0.590839 0\n", " 3 Li+ 0.373824 0.546132 0.409161 0\n", " 4 Li+ 0.021288 0.643996 0.39688 0\n", " 5 Li+ 0.862661 0.07195 0.402559 0\n", " 6 Li+ 0.978712 0.356004 0.60312 0\n", " 7 Li+ 0.497222 0.8674 0.316203 0\n", " 8 Li+ 0.514158 0.632938 0.173531 0\n", " 9 Li+ 0.62191 0.955426 0.089457 0\n", " 10 Li+ 0.485842 0.367062 0.826469 0\n", " 11 Li+ 0.37809 0.044574 0.910543 0\n", " 12 Li+ 0.502778 0.1326 0.683797 0\n", " 13 Li+ 0.873955 0.565974 0.9153 0\n", " 14 Fe2+ 0.744962 0.435377 0.3042 5\n", " 15 Fe2+ 0.264262 0.071531 0.201932 5\n", " 16 Fe2+ 0.217648 0.200486 0.416895 5\n", " 17 Fe2+ 0.735738 0.928469 0.798068 5\n", " 18 Fe2+ 0.255038 0.564623 0.6958 5\n", " 19 Fe2+ 0.782352 0.799514 0.583105 5\n", " 20 Fe2+ 0.780133 0.300909 0.07859 5\n", " 21 Fe2+ 0 0 0 5\n", " 22 Fe2+ 0.219867 0.699091 0.92141 5\n", " 23 P5+ 0.700902 0.638321 0.014979 0\n", " 24 P5+ 0.208131 0.231393 0.659702 0\n", " 25 P5+ 0.538911 0.196141 0.132759 0\n", " 26 P5+ 0.052823 0.968562 0.776985 0\n", " 27 P5+ 0.798275 0.263793 0.843927 0\n", " 28 P5+ 0.299098 0.361679 0.985021 0\n", " 29 P5+ 0.050175 0.469029 0.273158 0\n", " 30 P5+ 0.949825 0.530971 0.726842 0\n", " 31 P5+ 0.947177 0.031438 0.223015 0\n", " 32 P5+ 0.461089 0.803859 0.867241 0\n", " 33 P5+ 0.300562 0.864765 0.485466 0\n", " 34 P5+ 0.699438 0.135235 0.514534 0\n", " 35 P5+ 0.201725 0.736207 0.156073 0\n", " 36 P5+ 0.464356 0.308442 0.367888 0\n", " 37 P5+ 0.535644 0.691558 0.632112 0\n", " 38 P5+ 0.791869 0.768607 0.340298 0\n", " 39 O2- 0.539863 0.158192 0.024743 0\n", " 40 O2- 0.092099 0.652773 0.225938 0\n", " 41 O2- 0.176637 0.901046 0.105233 0\n", " 42 O2- 0.20505 0.21303 0.022179 0\n", " 43 O2- 0.907901 0.347227 0.774062 0\n", " 44 O2- 0.716621 0.007461 0.47944 0\n", " 45 O2- 0.687158 0.754916 0.709086 0\n", " 46 O2- 0.954695 0.45511 0.336803 0\n", " 47 O2- 0.27639 0.492284 0.014508 0\n", " 48 O2- 0.8474 0.341196 0.944993 0\n", " 49 O2- 0.458339 0.562539 0.70479 0\n", " 50 O2- 0.043629 0.050809 0.156863 0\n", " 51 O2- 0.542044 0.165795 0.421783 0\n", " 52 O2- 0.540547 0.662135 0.919652 0\n", " 53 O2- 0.985828 0.405574 0.162943 0\n", " 54 O2- 0.302814 0.399019 0.860061 0\n", " 55 O2- 0.283379 0.992539 0.52056 0\n", " 56 O2- 0.312842 0.245084 0.290914 0\n", " 57 O2- 0.79495 0.78697 0.977821 0\n", " 58 O2- 0.354953 0.203087 0.752629 0\n", " 59 O2- 0.180042 0.392693 0.609766 0\n", " 60 O2- 0.808738 0.58249 0.640002 0\n", " 61 O2- 0.956371 0.949191 0.843137 0\n", " 62 O2- 0.308298 0.743719 0.790965 0\n", " 63 O2- 0.460137 0.841808 0.975257 0\n", " 64 O2- 0.72361 0.507716 0.985492 0\n", " 65 O2- 0.200766 0.718122 0.515678 0\n", " 66 O2- 0.459453 0.337865 0.080348 0\n", " 67 O2- 0.34922 0.712757 0.247493 0\n", " 68 O2- 0.98317 0.904386 0.66758 0\n", " 69 O2- 0.045305 0.54489 0.663197 0\n", " 70 O2- 0.539787 0.65326 0.525967 0\n", " 71 O2- 0.193456 0.914965 0.862184 0\n", " 72 O2- 0.093481 0.150897 0.728314 0\n", " 73 O2- 0.906519 0.849103 0.271686 0\n", " 74 O2- 0.536855 0.934374 0.793678 0\n", " 75 O2- 0.191262 0.41751 0.359998 0\n", " 76 O2- 0.823363 0.098954 0.894767 0\n", " 77 O2- 0.819958 0.607307 0.390234 0\n", " 78 O2- 0.1526 0.658804 0.055007 0\n", " 79 O2- 0.460213 0.34674 0.474033 0\n", " 80 O2- 0.541661 0.437461 0.29521 0\n", " 81 O2- 0.841986 0.849279 0.439014 0\n", " 82 O2- 0.65078 0.287243 0.752507 0\n", " 83 O2- 0.697186 0.600981 0.139939 0\n", " 84 O2- 0.699212 0.094667 0.641348 0\n", " 85 O2- 0.014173 0.594426 0.837057 0\n", " 86 O2- 0.158014 0.150721 0.560986 0\n", " 87 O2- 0.300788 0.905333 0.358652 0\n", " 88 O2- 0.806544 0.085035 0.137816 0\n", " 89 O2- 0.01683 0.095614 0.33242 0\n", " 90 O2- 0.691702 0.256281 0.209035 0\n", " 91 O2- 0.463145 0.065626 0.206322 0\n", " 92 O2- 0.645047 0.796913 0.247371 0\n", " 93 O2- 0.457956 0.834205 0.578217 0\n", " 94 O2- 0.799234 0.281878 0.484322 0\n" ] } ], "source": [ "print(fm_structure)" ] }, { "cell_type": "code", "execution_count": null, "id": "56698524", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Ordering.FM\n" ] } ], "source": [ "order = magmom.ordering # Useful if magnetic order is unknown or not user-defined\n", "print(order)" ] }, { "cell_type": "markdown", "id": "cb607211", "metadata": {}, "source": [ "## Get space group information" ] }, { "cell_type": "code", "execution_count": null, "id": "c3e09dbc", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'-1'" ] }, "execution_count": null, "metadata": {}, "output_type": "execute_result" } ], "source": [ "spa = SpacegroupAnalyzer(structure)\n", "spa.get_point_group_symbol()" ] }, { "cell_type": "code", "execution_count": null, "id": "10867b71", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'P-1'" ] }, "execution_count": null, "metadata": {}, "output_type": "execute_result" } ], "source": [ "spa.get_space_group_symbol()" ] }, { "cell_type": "code", "execution_count": null, "id": "4a8ec0de", "metadata": {}, "outputs": [], "source": [ "fm_structure.to(filename=\"lfp.mcif\") # Save the structure in magCIF format." ] }, { "cell_type": "code", "execution_count": null, "id": "8703b5d7", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Full Formula (Li14 Fe9 P16 O56)\n", "Reduced Formula: Li14Fe9(P2O7)8\n", "abc : 10.747796 9.625861 12.724342\n", "angles: 68.820392 116.025779 107.299876\n", "Sites (95)\n", " # SP a b c\n", "--- ----------- -------- -------- --------\n", " 0 Li+,spin=0 0.137339 0.92805 0.597441\n", " 1 Li+,spin=0 0.126045 0.434026 0.0847\n", " 2 Li+,spin=0 0.626176 0.453868 0.590839\n", " 3 Li+,spin=0 0.373824 0.546132 0.409161\n", " 4 Li+,spin=0 0.021288 0.643996 0.39688\n", " 5 Li+,spin=0 0.862661 0.07195 0.402559\n", " 6 Li+,spin=0 0.978712 0.356004 0.60312\n", " 7 Li+,spin=0 0.497222 0.8674 0.316203\n", " 8 Li+,spin=0 0.514158 0.632938 0.173531\n", " 9 Li+,spin=0 0.62191 0.955426 0.089457\n", " 10 Li+,spin=0 0.485842 0.367062 0.826469\n", " 11 Li+,spin=0 0.37809 0.044574 0.910543\n", " 12 Li+,spin=0 0.502778 0.1326 0.683797\n", " 13 Li+,spin=0 0.873955 0.565974 0.9153\n", " 14 Fe2+,spin=5 0.744962 0.435377 0.3042\n", " 15 Fe2+,spin=5 0.264262 0.071531 0.201932\n", " 16 Fe2+,spin=5 0.217648 0.200486 0.416895\n", " 17 Fe2+,spin=5 0.735738 0.928469 0.798068\n", " 18 Fe2+,spin=5 0.255038 0.564623 0.6958\n", " 19 Fe2+,spin=5 0.782352 0.799514 0.583105\n", " 20 Fe2+,spin=5 0.780133 0.300909 0.07859\n", " 21 Fe2+,spin=5 0 0 0\n", " 22 Fe2+,spin=5 0.219867 0.699091 0.92141\n", " 23 P5+,spin=0 0.700902 0.638321 0.014979\n", " 24 P5+,spin=0 0.208131 0.231393 0.659702\n", " 25 P5+,spin=0 0.538911 0.196141 0.132759\n", " 26 P5+,spin=0 0.052823 0.968562 0.776985\n", " 27 P5+,spin=0 0.798275 0.263793 0.843927\n", " 28 P5+,spin=0 0.299098 0.361679 0.985021\n", " 29 P5+,spin=0 0.050175 0.469029 0.273158\n", " 30 P5+,spin=0 0.949825 0.530971 0.726842\n", " 31 P5+,spin=0 0.947177 0.031438 0.223015\n", " 32 P5+,spin=0 0.461089 0.803859 0.867241\n", " 33 P5+,spin=0 0.300562 0.864765 0.485466\n", " 34 P5+,spin=0 0.699438 0.135235 0.514534\n", " 35 P5+,spin=0 0.201725 0.736207 0.156073\n", " 36 P5+,spin=0 0.464356 0.308442 0.367888\n", " 37 P5+,spin=0 0.535644 0.691558 0.632112\n", " 38 P5+,spin=0 0.791869 0.768607 0.340298\n", " 39 O2-,spin=0 0.539863 0.158192 0.024743\n", " 40 O2-,spin=0 0.092099 0.652773 0.225938\n", " 41 O2-,spin=0 0.176637 0.901046 0.105233\n", " 42 O2-,spin=0 0.20505 0.21303 0.022179\n", " 43 O2-,spin=0 0.907901 0.347227 0.774062\n", " 44 O2-,spin=0 0.716621 0.007461 0.47944\n", " 45 O2-,spin=0 0.687158 0.754916 0.709086\n", " 46 O2-,spin=0 0.954695 0.45511 0.336803\n", " 47 O2-,spin=0 0.27639 0.492284 0.014508\n", " 48 O2-,spin=0 0.8474 0.341196 0.944993\n", " 49 O2-,spin=0 0.458339 0.562539 0.70479\n", " 50 O2-,spin=0 0.043629 0.050809 0.156863\n", " 51 O2-,spin=0 0.542044 0.165795 0.421783\n", " 52 O2-,spin=0 0.540547 0.662135 0.919652\n", " 53 O2-,spin=0 0.985828 0.405574 0.162943\n", " 54 O2-,spin=0 0.302814 0.399019 0.860061\n", " 55 O2-,spin=0 0.283379 0.992539 0.52056\n", " 56 O2-,spin=0 0.312842 0.245084 0.290914\n", " 57 O2-,spin=0 0.79495 0.78697 0.977821\n", " 58 O2-,spin=0 0.354953 0.203087 0.752629\n", " 59 O2-,spin=0 0.180042 0.392693 0.609766\n", " 60 O2-,spin=0 0.808738 0.58249 0.640002\n", " 61 O2-,spin=0 0.956371 0.949191 0.843137\n", " 62 O2-,spin=0 0.308298 0.743719 0.790965\n", " 63 O2-,spin=0 0.460137 0.841808 0.975257\n", " 64 O2-,spin=0 0.72361 0.507716 0.985492\n", " 65 O2-,spin=0 0.200766 0.718122 0.515678\n", " 66 O2-,spin=0 0.459453 0.337865 0.080348\n", " 67 O2-,spin=0 0.34922 0.712757 0.247493\n", " 68 O2-,spin=0 0.98317 0.904386 0.66758\n", " 69 O2-,spin=0 0.045305 0.54489 0.663197\n", " 70 O2-,spin=0 0.539787 0.65326 0.525967\n", " 71 O2-,spin=0 0.193456 0.914965 0.862184\n", " 72 O2-,spin=0 0.093481 0.150897 0.728314\n", " 73 O2-,spin=0 0.906519 0.849103 0.271686\n", " 74 O2-,spin=0 0.536855 0.934374 0.793678\n", " 75 O2-,spin=0 0.191262 0.41751 0.359998\n", " 76 O2-,spin=0 0.823363 0.098954 0.894767\n", " 77 O2-,spin=0 0.819958 0.607307 0.390234\n", " 78 O2-,spin=0 0.1526 0.658804 0.055007\n", " 79 O2-,spin=0 0.460213 0.34674 0.474033\n", " 80 O2-,spin=0 0.541661 0.437461 0.29521\n", " 81 O2-,spin=0 0.841986 0.849279 0.439014\n", " 82 O2-,spin=0 0.65078 0.287243 0.752507\n", " 83 O2-,spin=0 0.697186 0.600981 0.139939\n", " 84 O2-,spin=0 0.699212 0.094667 0.641348\n", " 85 O2-,spin=0 0.014173 0.594426 0.837057\n", " 86 O2-,spin=0 0.158014 0.150721 0.560986\n", " 87 O2-,spin=0 0.300788 0.905333 0.358652\n", " 88 O2-,spin=0 0.806544 0.085035 0.137816\n", " 89 O2-,spin=0 0.01683 0.095614 0.33242\n", " 90 O2-,spin=0 0.691702 0.256281 0.209035\n", " 91 O2-,spin=0 0.463145 0.065626 0.206322\n", " 92 O2-,spin=0 0.645047 0.796913 0.247371\n", " 93 O2-,spin=0 0.457956 0.834205 0.578217\n", " 94 O2-,spin=0 0.799234 0.281878 0.484322\n" ] } ], "source": [ "spn_structure = (\n", " magmom.get_structure_with_spin()\n", ") # Returns spin decorated values in structure instead of magmom site properties\n", "print(spn_structure)" ] }, { "cell_type": "markdown", "id": "9dc72f40", "metadata": {}, "source": [ "The above structure is saved as a magCIF with .mcif extension. This can be converted back to a CIF with relevant magnetic information associated with each site. OpenBabel does this easily, on command line write-\n", "```\n", "obabel -imcif lfp.mcif -ocif -O lfp.cif \n", "```" ] }, { "cell_type": "markdown", "id": "130df9f1", "metadata": {}, "source": [ "## Analyze magnetic moment present in a calculated structure using MAPI\n", "\n", "In some cases, it might be useful to analyze magnetic behavior of a strucure from the Materials Project database. " ] }, { "cell_type": "code", "execution_count": null, "id": "e90dcfb8", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Full Formula (Li14 Co9 P16 O56)\n", "Reduced Formula: Li14Co9(P2O7)8\n", "abc : 10.747796 9.625861 12.724342\n", "angles: 68.820392 116.025779 107.299876\n", "Sites (95)\n", " # SP a b c magmom\n", "--- ---- -------- -------- -------- --------\n", " 0 Li 0.137339 0.92805 0.597441 0\n", " 1 Li 0.126045 0.434026 0.0847 0\n", " 2 Li 0.626176 0.453868 0.590839 0.001\n", " 3 Li 0.373824 0.546132 0.409161 0.001\n", " 4 Li 0.021288 0.643996 0.39688 0\n", " 5 Li 0.862661 0.07195 0.402559 0\n", " 6 Li 0.978712 0.356004 0.60312 0\n", " 7 Li 0.497222 0.8674 0.316203 -0\n", " 8 Li 0.514158 0.632938 0.173531 -0\n", " 9 Li 0.62191 0.955426 0.089457 0.001\n", " 10 Li 0.485842 0.367062 0.826469 -0\n", " 11 Li 0.37809 0.044574 0.910543 0.001\n", " 12 Li 0.502778 0.1326 0.683797 -0\n", " 13 Li 0.873955 0.565974 0.9153 0\n", " 14 Co 0.744962 0.435377 0.3042 2.768\n", " 15 Co 0.264262 0.071531 0.201932 2.762\n", " 16 Co 0.217648 0.200486 0.416895 2.746\n", " 17 Co 0.735738 0.928469 0.798068 2.762\n", " 18 Co 0.255038 0.564623 0.6958 2.768\n", " 19 Co 0.782352 0.799514 0.583105 2.747\n", " 20 Co 0.780133 0.300909 0.07859 2.739\n", " 21 Co 0 0 0 -0.988\n", " 22 Co 0.219867 0.699091 0.92141 2.739\n", " 23 P 0.700902 0.638321 0.014979 0.007\n", " 24 P 0.208131 0.231393 0.659702 0.004\n", " 25 P 0.538911 0.196141 0.132759 0.003\n", " 26 P 0.052823 0.968562 0.776985 0.009\n", " 27 P 0.798275 0.263793 0.843927 0.004\n", " 28 P 0.299098 0.361679 0.985021 0.007\n", " 29 P 0.050175 0.469029 0.273158 0.007\n", " 30 P 0.949825 0.530971 0.726842 0.009\n", " 31 P 0.947177 0.031438 0.223015 0.008\n", " 32 P 0.461089 0.803859 0.867241 0.003\n", " 33 P 0.300562 0.864765 0.485466 0.008\n", " 34 P 0.699438 0.135235 0.514534 0.009\n", " 35 P 0.201725 0.736207 0.156073 0.004\n", " 36 P 0.464356 0.308442 0.367888 0.004\n", " 37 P 0.535644 0.691558 0.632112 0.004\n", " 38 P 0.791869 0.768607 0.340298 0.006\n", " 39 O 0.539863 0.158192 0.024743 0.024\n", " 40 O 0.092099 0.652773 0.225938 0.007\n", " 41 O 0.176637 0.901046 0.105233 0.036\n", " 42 O 0.20505 0.21303 0.022179 0.018\n", " 43 O 0.907901 0.347227 0.774062 0.008\n", " 44 O 0.716621 0.007461 0.47944 0.025\n", " 45 O 0.687158 0.754916 0.709086 0.053\n", " 46 O 0.954695 0.45511 0.336803 0.025\n", " 47 O 0.27639 0.492284 0.014508 0.026\n", " 48 O 0.8474 0.341196 0.944993 0.032\n", " 49 O 0.458339 0.562539 0.70479 0.025\n", " 50 O 0.043629 0.050809 0.156863 0.029\n", " 51 O 0.542044 0.165795 0.421783 0.003\n", " 52 O 0.540547 0.662135 0.919652 0.002\n", " 53 O 0.985828 0.405574 0.162943 0.026\n", " 54 O 0.302814 0.399019 0.860061 0.026\n", " 55 O 0.283379 0.992539 0.52056 0.024\n", " 56 O 0.312842 0.245084 0.290914 0.053\n", " 57 O 0.79495 0.78697 0.977821 0.018\n", " 58 O 0.354953 0.203087 0.752629 0.001\n", " 59 O 0.180042 0.392693 0.609766 0.03\n", " 60 O 0.808738 0.58249 0.640002 0.037\n", " 61 O 0.956371 0.949191 0.843137 0.029\n", " 62 O 0.308298 0.743719 0.790965 0.05\n", " 63 O 0.460137 0.841808 0.975257 0.024\n", " 64 O 0.72361 0.507716 0.985492 0.026\n", " 65 O 0.200766 0.718122 0.515678 0.026\n", " 66 O 0.459453 0.337865 0.080348 0.002\n", " 67 O 0.34922 0.712757 0.247493 0.002\n", " 68 O 0.98317 0.904386 0.66758 0.026\n", " 69 O 0.045305 0.54489 0.663197 0.023\n", " 70 O 0.539787 0.65326 0.525967 0.024\n", " 71 O 0.193456 0.914965 0.862184 0.036\n", " 72 O 0.093481 0.150897 0.728314 0.008\n", " 73 O 0.906519 0.849103 0.271686 0.008\n", " 74 O 0.536855 0.934374 0.793678 0.026\n", " 75 O 0.191262 0.41751 0.359998 0.037\n", " 76 O 0.823363 0.098954 0.894767 0.036\n", " 77 O 0.819958 0.607307 0.390234 0.028\n", " 78 O 0.1526 0.658804 0.055007 0.032\n", " 79 O 0.460213 0.34674 0.474033 0.021\n", " 80 O 0.541661 0.437461 0.29521 0.023\n", " 81 O 0.841986 0.849279 0.439014 0.03\n", " 82 O 0.65078 0.287243 0.752507 0.002\n", " 83 O 0.697186 0.600981 0.139939 0.028\n", " 84 O 0.699212 0.094667 0.641348 0.027\n", " 85 O 0.014173 0.594426 0.837057 0.026\n", " 86 O 0.158014 0.150721 0.560986 0.034\n", " 87 O 0.300788 0.905333 0.358652 0.027\n", " 88 O 0.806544 0.085035 0.137816 0.036\n", " 89 O 0.01683 0.095614 0.33242 0.026\n", " 90 O 0.691702 0.256281 0.209035 0.05\n", " 91 O 0.463145 0.065626 0.206322 0.026\n", " 92 O 0.645047 0.796913 0.247371 0.001\n", " 93 O 0.457956 0.834205 0.578217 0.003\n", " 94 O 0.799234 0.281878 0.484322 0.026\n" ] } ], "source": [ "# Establish rester for accessing Materials API\n", "mpr = MPRester(api_key=\"API_KEY\")\n", "mp_id = \"mp-504263\" # Previously reported structure; Co replaced at Fe site\n", "structure_from_mp = mpr.get_structure_by_material_id(mp_id)\n", "print(structure)" ] }, { "cell_type": "code", "execution_count": null, "id": "eb53cc57", "metadata": {}, "outputs": [], "source": [ "mgmmnt = CollinearMagneticStructureAnalyzer(\n", " structure_from_mp, overwrite_magmom_mode=\"replace_all_if_undefined\"\n", ")" ] }, { "cell_type": "code", "execution_count": null, "id": "ccedc00c", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "True" ] }, "execution_count": null, "metadata": {}, "output_type": "execute_result" } ], "source": [ "mgmmnt.is_magnetic" ] }, { "cell_type": "code", "execution_count": null, "id": "d400c9af", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'Co': [0.988, 2.739, 2.746, 2.747, 2.762, 2.768]}" ] }, "execution_count": null, "metadata": {}, "output_type": "execute_result" } ], "source": [ "mgmmnt.magnetic_species_and_magmoms" ] }, { "cell_type": "code", "execution_count": null, "id": "1436c1aa", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": null, "metadata": {}, "output_type": "execute_result" } ], "source": [ "mgmmnt.ordering" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3.10.5 64-bit", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.10.5" }, "vscode": { "interpreter": { "hash": "8022b3e932e045c760cb4633b91dd1cb8bc60d104ca9808334cbd1645adbe837" } } }, "nbformat": 4, "nbformat_minor": 5 }