Skip to content
Snippets Groups Projects
validation_LiAl.ipynb 260 KiB
Newer Older
  • Learn to ignore specific revisions
  • Sudarsan Surendralal's avatar
    Sudarsan Surendralal committed
    {
     "cells": [
      {
       "cell_type": "markdown",
       "id": "25d5b0d5-f330-4dcb-9b7c-f57c4bea9596",
       "metadata": {},
       "source": [
        "# **Workshop: From electrons to phase diagrams**\n",
        "\n",
    
        "# Day 2: Validation of the potentials\n",
        "\n",
        "Once we have the fitted potentials, it is necessary to validate them in order to assess their quality with respect to applications.\n",
        "\n",
        "In this exercise, we use the fitted potentials and perform some basic calculations."
    
    Sudarsan Surendralal's avatar
    Sudarsan Surendralal committed
       ]
      },
      {
       "cell_type": "markdown",
       "id": "4756d4c9-304a-4ccc-b772-ba67d008c5a4",
       "metadata": {},
       "source": [
    
        "## Import the fitted potentials for Li-Al (from earlier excercise)\n",
        "\n",
        "The same directory contains a `helper.py` file which among other things, also contains the necessary specifications of each of the potentials that we will use today. Individual potentials are descrbed in the LAMMPS format as:\n",
        "```\n",
        "pot_eam = pd.DataFrame({\n",
        "    'Name': ['LiAl_eam'],\n",
        "    'Filename': [[\"../potentials/AlLi.eam.fs\")]],\n",
        "    'Model': [\"EAM\"],\n",
        "    'Species': [['Li', 'Al']],\n",
        "    'Config': [['pair_style eam/fs\\n', 'pair_coeff * * AlLi.eam.fs Li Al\\n']]\n",
        "})\n",
        "\n",
        "```\n",
        "A list of such DataFrames describing the potentials is saved in a list called `potentials_list`. We import the list as:"
    
    Sudarsan Surendralal's avatar
    Sudarsan Surendralal committed
       ]
      },
      {
       "cell_type": "code",
       "execution_count": 1,
    
       "id": "b90e0ac0",
    
    Sudarsan Surendralal's avatar
    Sudarsan Surendralal committed
       "metadata": {},
       "outputs": [
        {
         "data": {
          "text/html": [
           "<div>\n",
           "<style scoped>\n",
           "    .dataframe tbody tr th:only-of-type {\n",
           "        vertical-align: middle;\n",
           "    }\n",
           "\n",
           "    .dataframe tbody tr th {\n",
           "        vertical-align: top;\n",
           "    }\n",
           "\n",
           "    .dataframe thead th {\n",
           "        text-align: right;\n",
           "    }\n",
           "</style>\n",
           "<table border=\"1\" class=\"dataframe\">\n",
           "  <thead>\n",
           "    <tr style=\"text-align: right;\">\n",
           "      <th></th>\n",
           "      <th>Name</th>\n",
           "      <th>Filename</th>\n",
           "      <th>Model</th>\n",
           "      <th>Species</th>\n",
           "      <th>Config</th>\n",
           "    </tr>\n",
           "  </thead>\n",
           "  <tbody>\n",
           "    <tr>\n",
           "      <th>0</th>\n",
           "      <td>LiAl_eam</td>\n",
    
           "      <td>[/home/minaam.qamar/workshop_POTENTIALS/new_no...</td>\n",
    
    Sudarsan Surendralal's avatar
    Sudarsan Surendralal committed
           "      <td>EAM</td>\n",
           "      <td>[Li, Al]</td>\n",
    
           "      <td>[pair_style eam/fs\\n, pair_coeff * * AlLi.eam....</td>\n",
    
    Sudarsan Surendralal's avatar
    Sudarsan Surendralal committed
           "    </tr>\n",
           "  </tbody>\n",
           "</table>\n",
           "</div>"
          ],
          "text/plain": [
    
           "       Name  ...                                             Config\n",
           "0  LiAl_eam  ...  [pair_style eam/fs\\n, pair_coeff * * AlLi.eam....\n",
    
    Sudarsan Surendralal's avatar
    Sudarsan Surendralal committed
           "\n",
    
           "[1 rows x 5 columns]"
    
    Sudarsan Surendralal's avatar
    Sudarsan Surendralal committed
          ]
         },
    
         "execution_count": 1,
    
    Sudarsan Surendralal's avatar
    Sudarsan Surendralal committed
         "metadata": {},
         "output_type": "execute_result"
        }
       ],
       "source": [
    
        "from helper import potentials_list\n",
        "\n",
        "potentials_list = [potentials_list[0]]\n",
        "\n",
        "# display the first element in the list\n",
        "# which is an EAM potential\n",
    
    Sudarsan Surendralal's avatar
    Sudarsan Surendralal committed
        "potentials_list[0]"
       ]
      },
    
      {
       "cell_type": "markdown",
       "id": "4c84560c",
       "metadata": {},
       "source": [
        "### Import other important modules"
       ]
      },
      {
       "cell_type": "code",
       "execution_count": 2,
       "id": "83f7a2c9-d45a-4987-9e35-59badd754d4f",
       "metadata": {},
       "outputs": [
        {
         "data": {
          "text/plain": [
           "6.366608268"
          ]
         },
         "execution_count": 2,
         "metadata": {},
         "output_type": "execute_result"
        }
       ],
       "source": [
        "import numpy as np\n",
        "import matplotlib.pylab as plt\n",
        "import seaborn as sns\n",
        "import pandas as pd\n",
        "import time\n",
        "from helper import get_clean_project_name\n",
        "from pyiron_atomistics import Project\n",
        "from pyiron import pyiron_to_ase\n",
        "import pyiron_gpl\n",
        "\n",
        "# save start time to record runtime of the notebook\n",
        "time_start =  time.process_time()\n",
        "time_start"
       ]
      },
      {
       "cell_type": "markdown",
       "id": "acc0ee8f",
       "metadata": {},
       "source": [
        "### Create a new project to perform validation calculations\n",
        "\n",
        "It is useful to create a new project directory for every kind of calculation. Pyiron will automatically create subdirectories for each potential and property we calculate. "
       ]
      },
      {
       "cell_type": "code",
       "execution_count": 3,
       "id": "706be2a9-5f94-4eb5-8e4f-6c349fe216b3",
       "metadata": {},
       "outputs": [],
       "source": [
        "pr = Project(\"validation_LiAl\")\n",
        "\n",
        "# remove earlier jobs\n",
        "# pr.remove_jobs(silently=True, recursive=True)"
       ]
      },
    
    Sudarsan Surendralal's avatar
    Sudarsan Surendralal committed
      {
       "cell_type": "markdown",
       "id": "3b84ed62-e841-4526-893e-dc4f61477c88",
       "metadata": {},
       "source": [
    
        "### Define the important pases to consider for validation\n",
        "\n",
        "We construct a python dictionary `struct_dict` which contains a description of all the important phases that we want to consider for this exercise. The descriptions given in the dictionary will be later used by Pyiron to generate or read the structural configurations for the respective phases.\n",
        "\n",
        "For unary phases, we provide an initial guess for the lattice parameter and use pyiron to generate the structural prototype.\n",
        "\n",
        "For binary phases, we provide a phase name and an additional dictionary `fl_dict` which maps the phase name to a `.cif` file saved in a subdirectory. Pyiron will use this information to read the respective configurations from the file."
    
    Sudarsan Surendralal's avatar
    Sudarsan Surendralal committed
       ]
      },
      {
       "cell_type": "code",
    
       "execution_count": 34,
    
    Sudarsan Surendralal's avatar
    Sudarsan Surendralal committed
       "id": "28778cef-2a07-4794-888f-7239500e7b5a",
       "metadata": {},
       "outputs": [
        {
         "data": {
          "text/plain": [
           "{'Al': {'s_murn': ['fcc', 'bcc'], 'a': 4.04},\n",
    
           " 'Li': {'s_murn': ['bcc', 'fcc'], 'a': 3.5},\n",
           " 'Li2Al2': {'s_murn': ['Li2Al2_cubic']},\n",
           " 'LiAl3': {'s_murn': ['LiAl3_cubic']},\n",
           " 'Li9Al4': {'s_murn': ['Li9Al4_monoclinic']},\n",
           " 'Li3Al2': {'s_murn': ['Li3Al2_trigonal']},\n",
           " 'Li4Al4': {'s_murn': ['Li4Al4_cubic']}}"
    
         "execution_count": 34,
    
    Sudarsan Surendralal's avatar
    Sudarsan Surendralal committed
         "metadata": {},
         "output_type": "execute_result"
        }
       ],
       "source": [
        "struct_dict = dict()\n",
        "struct_dict[\"Al\"] = dict()\n",
    
        "struct_dict[\"Al\"][\"s_murn\"] = [\"fcc\",\"bcc\"]\n",
    
    Sudarsan Surendralal's avatar
    Sudarsan Surendralal committed
        "struct_dict[\"Al\"][\"a\"] = 4.04\n",
        "\n",
        "struct_dict[\"Li\"] = dict()\n",
    
        "struct_dict[\"Li\"][\"s_murn\"] = [\"bcc\",\"fcc\"]\n",
    
    Sudarsan Surendralal's avatar
    Sudarsan Surendralal committed
        "struct_dict[\"Li\"][\"a\"] = 3.5\n",
        "\n",
        "\n",
    
        "\n",
        "\n",
        "struct_dict[\"Li2Al2\"] = dict()\n",
        "struct_dict[\"Li2Al2\"][\"s_murn\"] = [\"Li2Al2_cubic\"]\n",
        "# struct_dict[\"Li2Al2\"][\"a\"] = 3.7\n",
        "\n",
        "struct_dict[\"LiAl3\"] = dict()\n",
        "struct_dict[\"LiAl3\"][\"s_murn\"] = [\"LiAl3_tetragonal\"]\n",
        "# struct_dict[\"LiAl3\"][\"a\"] = 3.7\n",
        "\n",
        "struct_dict[\"LiAl3\"] = dict()\n",
        "struct_dict[\"LiAl3\"][\"s_murn\"] = [\"LiAl3_cubic\"]\n",
        "# struct_dict[\"LiAl3\"][\"a\"] = 3.7\n",
        "\n",
        "struct_dict[\"Li9Al4\"] = dict()\n",
        "struct_dict[\"Li9Al4\"][\"s_murn\"] = [\"Li9Al4_monoclinic\"]\n",
        "# struct_dict[\"Li9Al4\"][\"a\"] = 3.7\n",
        "\n",
        "struct_dict[\"Li3Al2\"] = dict()\n",
        "struct_dict[\"Li3Al2\"][\"s_murn\"] = [\"Li3Al2_trigonal\"]\n",
        "# struct_dict[\"Li3Al2\"][\"a\"] = 3.7\n",
        "\n",
        "struct_dict[\"Li4Al4\"] = dict()\n",
        "struct_dict[\"Li4Al4\"][\"s_murn\"] = [\"Li4Al4_cubic\"]\n",
    
    Sudarsan Surendralal's avatar
    Sudarsan Surendralal committed
        "\n",
        "struct_dict"
       ]
      },
    
      {
       "cell_type": "markdown",
       "id": "23b2e6d9",
       "metadata": {},
       "source": [
        "a dictionary is described to map the binary phases to their file locations"
       ]
      },
    
    Sudarsan Surendralal's avatar
    Sudarsan Surendralal committed
      {
       "cell_type": "code",
    
       "execution_count": 35,
       "id": "c1820db7",
    
    Sudarsan Surendralal's avatar
    Sudarsan Surendralal committed
       "metadata": {},
       "outputs": [],
    
       "source": [
        "fl_dict = {\"Li2Al2_cubic\": \"mp_structures/LiAl_mp-1067_primitive.cif\",\n",
        "           \"LiAl3_tetragonal\":\"mp_structures/LiAl3_mp-975906_primitive.cif\",\n",
        "           \"LiAl3_cubic\":\"mp_structures/LiAl3_mp-10890_primitive.cif\",\n",
        "           \"Li9Al4_monoclinic\":\"mp_structures/Li9Al4_mp-568404_primitive.cif\",\n",
        "           \"Li3Al2_trigonal\":\"mp_structures/Al2Li3-6021.cif\",\n",
        "           \"Li4Al4_cubic\":\"mp_structures/LiAl_mp-1079240_primitive.cif\"}"
       ]
    
    Sudarsan Surendralal's avatar
    Sudarsan Surendralal committed
      },
      {
       "cell_type": "markdown",
       "id": "198e9745-734a-4502-8f1b-0330ba8c8fca",
       "metadata": {},
       "source": [
    
        "### (a) Ground state: E-V curves\n",
        "\n",
        "Using a series of nested `for` loops, we calculate the murnaghan EV-curves using all three potentials for all the defined structures.\n",
        "\n",
        "We loop over:\n",
        " - All the potentials defined in `potentials_list` and name the project according to the potential\n",
        "   - All the chemical formulae defined in the keys of `struct_dict`\n",
        "     - All phases defined for a given chemical formula\n",
        "     \n",
        "Within the loops, the first step is to get the structure basis on which we will perform the calculations. \n",
        "\n",
        "- For unary phases, we use the pyiron function `pr_pot.create_ase_bulk(compound, crys_structure, a=compound_dict[\"a\"])` \n",
        "- For binary structures, we read the basis using `pr.create.structure.ase.read(fl_path)` with the `fl_path` given by `fl_dict` defined earlier.\n",
        "\n",
        "Once the structure and potential is defined as part of the pr_job, we run two calculations:\n",
        "- `job_relax` to relax the structure to the ground state\n",
        "- `murn_job` to calculate the energies in a small volume range around the equilibrium\n",
        "\n",
        "As the calculations are being performed, the status(s) of each calculation is printed. If a job is already calculated, the calculations are not re-run but rather re-read from the saved data."
    
    Sudarsan Surendralal's avatar
    Sudarsan Surendralal committed
       ]
      },
      {
       "cell_type": "code",
    
       "execution_count": 36,
    
    Sudarsan Surendralal's avatar
    Sudarsan Surendralal committed
       "id": "13f095d2-44d7-4711-b9a5-d58a95af42f6",
    
       "metadata": {
        "scrolled": true
       },
    
    Sudarsan Surendralal's avatar
    Sudarsan Surendralal committed
       "outputs": [
        {
         "name": "stdout",
         "output_type": "stream",
         "text": [
    
          "The job Al_fcc_relax was saved and received the ID: 481\n"
    
    Sudarsan Surendralal's avatar
    Sudarsan Surendralal committed
         ]
    
    Sudarsan Surendralal's avatar
    Sudarsan Surendralal committed
        {
    
         "name": "stderr",
         "output_type": "stream",
         "text": [
          "2022-05-30 19:18:40,708 - pyiron_log - WARNING - The job murn_job_Al_fcc is being loaded instead of running. To re-run use the argument 'delete_existing_job=True in create_job'\n"
         ]
        },
        {
         "name": "stdout",
         "output_type": "stream",
         "text": [
          "The job Al_bcc_relax was saved and received the ID: 482\n"
         ]
        },
        {
         "name": "stderr",
         "output_type": "stream",
         "text": [
          "2022-05-30 19:18:44,855 - pyiron_log - WARNING - The job murn_job_Al_bcc is being loaded instead of running. To re-run use the argument 'delete_existing_job=True in create_job'\n"
         ]
        },
        {
         "name": "stdout",
         "output_type": "stream",
         "text": [
          "The job Li_bcc_relax was saved and received the ID: 483\n"
         ]
        },
        {
         "name": "stderr",
         "output_type": "stream",
         "text": [
          "2022-05-30 19:18:49,187 - pyiron_log - WARNING - The job murn_job_Li_bcc is being loaded instead of running. To re-run use the argument 'delete_existing_job=True in create_job'\n"
         ]
        },
        {
         "name": "stdout",
         "output_type": "stream",
         "text": [
          "The job Li_fcc_relax was saved and received the ID: 484\n"
         ]
        },
        {
         "name": "stderr",
         "output_type": "stream",
         "text": [
          "2022-05-30 19:18:55,198 - pyiron_log - WARNING - The job murn_job_Li_fcc is being loaded instead of running. To re-run use the argument 'delete_existing_job=True in create_job'\n"
         ]
        },
        {
         "name": "stdout",
         "output_type": "stream",
         "text": [
          "The job Li2Al2_Li2Al2_cubic_relax was saved and received the ID: 485\n"
         ]
        },
        {
         "name": "stderr",
         "output_type": "stream",
         "text": [
          "2022-05-30 19:19:00,132 - pyiron_log - WARNING - The job murn_job_Li2Al2_Li2Al2_cubic is being loaded instead of running. To re-run use the argument 'delete_existing_job=True in create_job'\n"
         ]
        },
        {
         "name": "stdout",
         "output_type": "stream",
         "text": [
          "The job LiAl3_LiAl3_cubic_relax was saved and received the ID: 486\n"
         ]
        },
        {
         "name": "stderr",
         "output_type": "stream",
         "text": [
          "2022-05-30 19:19:06,418 - pyiron_log - WARNING - The job murn_job_LiAl3_LiAl3_cubic is being loaded instead of running. To re-run use the argument 'delete_existing_job=True in create_job'\n"
         ]
        },
        {
         "name": "stdout",
         "output_type": "stream",
         "text": [
          "The job Li9Al4_Li9Al4_monoclinic_relax was saved and received the ID: 487\n"
         ]
        },
        {
         "name": "stderr",
         "output_type": "stream",
         "text": [
          "2022-05-30 19:19:11,676 - pyiron_log - WARNING - The job murn_job_Li9Al4_Li9Al4_monoclinic is being loaded instead of running. To re-run use the argument 'delete_existing_job=True in create_job'\n"
         ]
        },
        {
         "name": "stdout",
         "output_type": "stream",
         "text": [
          "The job Li3Al2_Li3Al2_trigonal_relax was saved and received the ID: 488\n"
         ]
        },
        {
         "name": "stderr",
         "output_type": "stream",
         "text": [
          "2022-05-30 19:19:14,923 - pyiron_log - WARNING - The job murn_job_Li3Al2_Li3Al2_trigonal is being loaded instead of running. To re-run use the argument 'delete_existing_job=True in create_job'\n"
         ]
        },
        {
         "name": "stdout",
         "output_type": "stream",
         "text": [
          "The job Li4Al4_Li4Al4_cubic_relax was saved and received the ID: 489\n",
          "The job murn_job_Li4Al4_Li4Al4_cubic was saved and received the ID: 490\n",
          "The job murn_job_Li4Al4_Li4Al4_cubic_0_9 was saved and received the ID: 491\n",
          "The job murn_job_Li4Al4_Li4Al4_cubic_0_92 was saved and received the ID: 492\n",
          "The job murn_job_Li4Al4_Li4Al4_cubic_0_94 was saved and received the ID: 493\n",
          "The job murn_job_Li4Al4_Li4Al4_cubic_0_96 was saved and received the ID: 494\n",
          "The job murn_job_Li4Al4_Li4Al4_cubic_0_98 was saved and received the ID: 495\n",
          "The job murn_job_Li4Al4_Li4Al4_cubic_1_0 was saved and received the ID: 496\n",
          "The job murn_job_Li4Al4_Li4Al4_cubic_1_02 was saved and received the ID: 497\n",
          "The job murn_job_Li4Al4_Li4Al4_cubic_1_04 was saved and received the ID: 498\n",
          "The job murn_job_Li4Al4_Li4Al4_cubic_1_06 was saved and received the ID: 499\n",
          "The job murn_job_Li4Al4_Li4Al4_cubic_1_08 was saved and received the ID: 500\n",
          "The job murn_job_Li4Al4_Li4Al4_cubic_1_1 was saved and received the ID: 501\n"
         ]
    
    Sudarsan Surendralal's avatar
    Sudarsan Surendralal committed
        }
       ],
       "source": [
    
        "for pot in potentials_list:\n",
        "    with pr.open(get_clean_project_name(pot)) as pr_pot:\n",
        "        for compound, compound_dict in struct_dict.items():\n",
        "            for crys_structure in compound_dict[\"s_murn\"]:\n",
        "                \n",
        "                # Relax structure\n",
        "                if crys_structure in [\"fcc\",\"bcc\"]:\n",
        "                    basis = pr_pot.create_ase_bulk(compound, crys_structure, a=compound_dict[\"a\"])\n",
        "                else:\n",
        "                    basis = pr.create.structure.ase.read(fl_dict[crys_structure])\n",
        "                job_relax = pr_pot.create_job(pr_pot.job_type.Lammps, f\"{compound}_{crys_structure}_relax\", delete_existing_job=True)\n",
        "\n",
        "                job_relax.structure = basis\n",
        "                job_relax.potential = pot\n",
        "                job_relax.calc_minimize(pressure=0)\n",
        "                job_relax.run()\n",
        "                \n",
        "                # Murnaghan\n",
        "                job_ref = pr_pot.create_job(pr_pot.job_type.Lammps, f\"ref_job_{compound}_{crys_structure}\")\n",
        "                job_ref.structure = job_relax.get_structure(-1)\n",
        "                job_ref.potential = pot\n",
        "                job_ref.calc_minimize()\n",
        "                \n",
        "                murn_job = job_ref.create_job(pr_pot.job_type.Murnaghan, f\"murn_job_{compound}_{crys_structure}\")\n",
        "                murn_job.input[\"vol_range\"] = 0.1\n",
        "                murn_job.run()"
       ]
      },
      {
       "cell_type": "markdown",
       "id": "9d848f1a",
       "metadata": {},
       "source": [
        "One can display the technical details of all submitted jobs using `pr.job_table()` below."
       ]
      },
      {
       "cell_type": "code",
       "execution_count": 7,
       "id": "fdc89ebb-3c2a-4315-8fe0-3ae470375223",
       "metadata": {
        "scrolled": true
       },
       "outputs": [],
       "source": [
        "# pr.job_table()"
       ]
      },
      {
       "cell_type": "markdown",
       "id": "425dcaec",
       "metadata": {},
       "source": [
        "In order to get read useful results from the completed calculations (eq_energy, eq_volume, etc), it is useful to define the following functions"
    
    Sudarsan Surendralal's avatar
    Sudarsan Surendralal committed
       ]
      },
      {
       "cell_type": "code",
    
       "execution_count": 37,
    
    Sudarsan Surendralal's avatar
    Sudarsan Surendralal committed
       "id": "ef2f414b-64b8-49aa-87e9-e204950da938",
       "metadata": {},
       "outputs": [],
       "source": [
        "# Only work with Murnaghan jobs\n",
        "def get_only_murn(job_table):\n",
        "    return (job_table.hamilton == \"Murnaghan\") & (job_table.status == \"finished\") \n",
        "\n",
        "def get_eq_vol(job_path):\n",
        "    return job_path[\"output/equilibrium_volume\"]\n",
        "\n",
        "def get_eq_lp(job_path):\n",
        "    return np.linalg.norm(job_path[\"output/structure/cell/cell\"][0]) * np.sqrt(2)\n",
        "\n",
        "def get_eq_bm(job_path):\n",
        "    return job_path[\"output/equilibrium_bulk_modulus\"]\n",
        "\n",
        "def get_potential(job_path):\n",
        "    return job_path.project.path.split(\"/\")[-3]\n",
        "\n",
        "def get_eq_energy(job_path):\n",
        "    return job_path[\"output/equilibrium_energy\"]\n",
        "\n",
        "def get_n_atoms(job_path):\n",
        "    return len(job_path[\"output/structure/positions\"])\n",
        "\n",
    
        "def get_ase_atoms(job_path):\n",
        "    return pyiron_to_ase(job_path.structure).copy()\n",
        "\n",
    
    Sudarsan Surendralal's avatar
    Sudarsan Surendralal committed
        "\n",
        "def get_potential(job_path):\n",
        "    return job_path.project.path.split(\"/\")[-2]\n",
        "\n",
        "def get_crystal_structure(job_path):\n",
        "    return job_path.job_name.split(\"_\")[-1]\n",
        "\n",
        "def get_compound(job_path):\n",
        "    return job_path.job_name.split(\"_\")[-2]"
       ]
      },
    
      {
       "cell_type": "markdown",
       "id": "2fe57b8b",
       "metadata": {},
       "source": [
        "Using the functions defined above, one can now define a `pd.DataFrame` containing all useful results"
       ]
      },
    
    Sudarsan Surendralal's avatar
    Sudarsan Surendralal committed
      {
       "cell_type": "code",
    
       "execution_count": 38,
    
    Sudarsan Surendralal's avatar
    Sudarsan Surendralal committed
       "id": "255c28af-e4af-48c6-ae01-e90377c94e32",
       "metadata": {},
       "outputs": [
        {
         "name": "stdout",
         "output_type": "stream",
         "text": [
    
          "The job table_murn was saved and received the ID: 502\n"
    
    Sudarsan Surendralal's avatar
    Sudarsan Surendralal committed
         ]
        },
        {
         "data": {
          "application/vnd.jupyter.widget-view+json": {
    
           "model_id": "a5d41b6f348b4e31b85295d74e6f93b0",
    
    Sudarsan Surendralal's avatar
    Sudarsan Surendralal committed
           "version_major": 2,
           "version_minor": 0
          },
          "text/plain": [
    
           "Loading and filtering jobs:   0%|          | 0/9 [00:00<?, ?it/s]"
    
    Sudarsan Surendralal's avatar
    Sudarsan Surendralal committed
          ]
         },
         "metadata": {},
         "output_type": "display_data"
        },
        {
         "data": {
          "application/vnd.jupyter.widget-view+json": {
    
           "model_id": "5d4443355c4a458584cfc4343b77d69b",
    
    Sudarsan Surendralal's avatar
    Sudarsan Surendralal committed
           "version_major": 2,
           "version_minor": 0
          },
          "text/plain": [
    
           "Processing jobs:   0%|          | 0/9 [00:00<?, ?it/s]"
    
    Sudarsan Surendralal's avatar
    Sudarsan Surendralal committed
          ]
         },
         "metadata": {},
         "output_type": "display_data"
    
        },
        {
         "name": "stderr",
         "output_type": "stream",
         "text": [
          "/home/minaam.qamar/.conda/envs/workshop2/lib/python3.10/site-packages/pyiron_base/table/datamining.py:620: PerformanceWarning: \n",
          "your performance may suffer as PyTables will pickle object types that it cannot\n",
          "map directly to c-types [inferred_type->mixed,key->block2_values] [items->Index(['potential', 'ase_atoms', 'compound', 'crystal_structure'], dtype='object')]\n",
          "\n",
          "  self.pyiron_table._df.to_hdf(\n"
         ]
        },
    
    Sudarsan Surendralal's avatar
    Sudarsan Surendralal committed
        {
         "data": {
          "text/html": [
           "<div>\n",
           "<style scoped>\n",
           "    .dataframe tbody tr th:only-of-type {\n",
           "        vertical-align: middle;\n",
           "    }\n",
           "\n",
           "    .dataframe tbody tr th {\n",
           "        vertical-align: top;\n",
           "    }\n",
           "\n",
           "    .dataframe thead th {\n",
           "        text-align: right;\n",
           "    }\n",
           "</style>\n",
           "<table border=\"1\" class=\"dataframe\">\n",
           "  <thead>\n",
           "    <tr style=\"text-align: right;\">\n",
           "      <th></th>\n",
    
           "      <th>job_id</th>\n",
           "      <th>potential</th>\n",
           "      <th>ase_atoms</th>\n",
           "      <th>compound</th>\n",
           "      <th>crystal_structure</th>\n",
           "      <th>a</th>\n",
           "      <th>eq_vol</th>\n",
           "      <th>eq_bm</th>\n",
           "      <th>eq_energy</th>\n",
           "      <th>n_atoms</th>\n",
           "      <th>phase</th>\n",
    
    Sudarsan Surendralal's avatar
    Sudarsan Surendralal committed
           "    </tr>\n",
           "  </thead>\n",
           "  <tbody>\n",
           "    <tr>\n",
    
           "      <th>0</th>\n",
           "      <td>298</td>\n",
           "      <td>LiAl_eam</td>\n",
           "      <td>(Atom('Al', [0.0, 0.0, 0.0], index=0))</td>\n",
    
    Sudarsan Surendralal's avatar
    Sudarsan Surendralal committed
           "      <td>Al</td>\n",
    
           "      <td>fcc</td>\n",
           "      <td>4.039967</td>\n",
           "      <td>16.495612</td>\n",
           "      <td>85.876912</td>\n",
           "      <td>-3.483097</td>\n",
           "      <td>1</td>\n",
           "      <td>Al_fcc</td>\n",
    
    Sudarsan Surendralal's avatar
    Sudarsan Surendralal committed
           "    </tr>\n",
           "    <tr>\n",
    
           "      <th>1</th>\n",
           "      <td>311</td>\n",
           "      <td>LiAl_eam</td>\n",
           "      <td>(Atom('Al', [0.0, 0.0, 0.0], index=0))</td>\n",
    
    Sudarsan Surendralal's avatar
    Sudarsan Surendralal committed
           "      <td>Al</td>\n",
    
           "      <td>bcc</td>\n",
           "      <td>3.898853</td>\n",
           "      <td>16.147864</td>\n",
           "      <td>48.620841</td>\n",
           "      <td>-3.415312</td>\n",
           "      <td>1</td>\n",
           "      <td>Al_bcc</td>\n",
    
    Sudarsan Surendralal's avatar
    Sudarsan Surendralal committed
           "    </tr>\n",
           "    <tr>\n",
    
           "      <th>2</th>\n",
           "      <td>324</td>\n",
           "      <td>LiAl_eam</td>\n",
           "      <td>(Atom('Li', [0.0, 0.0, 0.0], index=0))</td>\n",
    
    Sudarsan Surendralal's avatar
    Sudarsan Surendralal committed
           "      <td>Li</td>\n",
    
           "      <td>bcc</td>\n",
           "      <td>4.195477</td>\n",
           "      <td>20.114514</td>\n",
           "      <td>13.690609</td>\n",
           "      <td>-1.757011</td>\n",
           "      <td>1</td>\n",
           "      <td>Li_bcc</td>\n",
    
    Sudarsan Surendralal's avatar
    Sudarsan Surendralal committed
           "    </tr>\n",
           "    <tr>\n",
    
           "      <th>3</th>\n",
           "      <td>337</td>\n",
           "      <td>LiAl_eam</td>\n",
           "      <td>(Atom('Li', [0.0, 0.0, 0.0], index=0))</td>\n",
    
    Sudarsan Surendralal's avatar
    Sudarsan Surendralal committed
           "      <td>Li</td>\n",
    
           "      <td>fcc</td>\n",
           "      <td>4.253841</td>\n",
           "      <td>19.241330</td>\n",
           "      <td>13.985972</td>\n",
           "      <td>-1.758107</td>\n",
           "      <td>1</td>\n",
           "      <td>Li_fcc</td>\n",
           "    </tr>\n",
           "    <tr>\n",
           "      <th>4</th>\n",
           "      <td>350</td>\n",
           "      <td>LiAl_eam</td>\n",
           "      <td>(Atom('Li', [4.359978178265942, 2.5172345748814804, 1.7799536377360752], index=0), Atom('Li', [6.53996726740165, 3.7758518623203585, 2.669930456604318], index=1), Atom('Al', [-3.964456982410852e-1...</td>\n",
           "      <td>Li2Al2</td>\n",
           "      <td>cubic</td>\n",
           "      <td>6.165940</td>\n",
           "      <td>58.604895</td>\n",
           "      <td>100.347240</td>\n",
           "      <td>-11.074362</td>\n",
           "      <td>4</td>\n",
           "      <td>Li2Al2_cubic</td>\n",
           "    </tr>\n",
           "    <tr>\n",
           "      <th>5</th>\n",
           "      <td>363</td>\n",
           "      <td>LiAl_eam</td>\n",
           "      <td>(Atom('Li', [0.0, 0.0, 0.0], index=0), Atom('Al', [1.9825515172760235, 1.9825515172760237, 2.427925369776811e-16], index=1), Atom('Al', [1.9825515172760235, 1.2139626848884054e-16, 1.9825515172760...</td>\n",
           "      <td>LiAl3</td>\n",
           "      <td>cubic</td>\n",
           "      <td>5.607502</td>\n",
           "      <td>62.227580</td>\n",
           "      <td>51.472656</td>\n",
           "      <td>-12.774590</td>\n",
           "      <td>4</td>\n",
           "      <td>LiAl3_cubic</td>\n",
           "    </tr>\n",
           "    <tr>\n",
           "      <th>6</th>\n",
           "      <td>376</td>\n",
           "      <td>LiAl_eam</td>\n",
           "      <td>(Atom('Li', [4.9874675377354745, 1.0099032069001204, 0.8188717268019969], index=0), Atom('Li', [3.1237856900347722, 1.4557299809760758, 2.6737242758835587], index=1), Atom('Li', [-3.44219970899484...</td>\n",
           "      <td>Li9Al4</td>\n",
           "      <td>monoclinic</td>\n",
           "      <td>13.023702</td>\n",
           "      <td>190.504371</td>\n",
           "      <td>53.125273</td>\n",
           "      <td>-28.970054</td>\n",
           "      <td>13</td>\n",
           "      <td>Li9Al4_monoclinic</td>\n",
    
    Sudarsan Surendralal's avatar
    Sudarsan Surendralal committed
           "    </tr>\n",
           "    <tr>\n",
    
           "      <th>7</th>\n",
           "      <td>389</td>\n",
           "      <td>LiAl_eam</td>\n",
           "      <td>(Atom('Al', [2.1548001975659243, 1.2440753587819189, 1.8617841750008692], index=0), Atom('Al', [-2.154798282819334, 3.7322233132135576, 2.664676023808053], index=1), Atom('Li', [8.560563403365655e...</td>\n",
           "      <td>Li3Al2</td>\n",
           "      <td>trigonal</td>\n",
           "      <td>6.094693</td>\n",
           "      <td>72.810229</td>\n",
           "      <td>69.231669</td>\n",
           "      <td>-12.413856</td>\n",
           "      <td>5</td>\n",
           "      <td>Li3Al2_trigonal</td>\n",
           "    </tr>\n",
           "    <tr>\n",
           "      <th>8</th>\n",
           "      <td>490</td>\n",
           "      <td>LiAl_eam</td>\n",
           "      <td>(Atom('Li', [2.1429671662366734, 1.237242669260901, 7.662122465542487], index=0), Atom('Li', [-8.827603092953495e-10, 2.4744853400282523, 0.5913662557792814], index=1), Atom('Li', [-8.827603092953...</td>\n",
           "      <td>Li4Al4</td>\n",
           "      <td>cubic</td>\n",
           "      <td>6.061226</td>\n",
           "      <td>131.389799</td>\n",
           "      <td>71.221356</td>\n",
           "      <td>-20.506570</td>\n",
           "      <td>8</td>\n",
           "      <td>Li4Al4_cubic</td>\n",
    
    Sudarsan Surendralal's avatar
    Sudarsan Surendralal committed
           "    </tr>\n",
           "  </tbody>\n",
           "</table>\n",
           "</div>"
          ],
          "text/plain": [
    
           "   job_id potential  ... n_atoms              phase\n",
           "0     298  LiAl_eam  ...       1             Al_fcc\n",
           "1     311  LiAl_eam  ...       1             Al_bcc\n",
           "2     324  LiAl_eam  ...       1             Li_bcc\n",
           "3     337  LiAl_eam  ...       1             Li_fcc\n",
           "4     350  LiAl_eam  ...       4       Li2Al2_cubic\n",
           "5     363  LiAl_eam  ...       4        LiAl3_cubic\n",
           "6     376  LiAl_eam  ...      13  Li9Al4_monoclinic\n",
           "7     389  LiAl_eam  ...       5    Li3Al2_trigonal\n",
           "8     490  LiAl_eam  ...       8       Li4Al4_cubic\n",
    
    Sudarsan Surendralal's avatar
    Sudarsan Surendralal committed
           "\n",
    
           "[9 rows x 11 columns]"
    
         "execution_count": 38,
    
    Sudarsan Surendralal's avatar
    Sudarsan Surendralal committed
         "metadata": {},
         "output_type": "execute_result"
        }
       ],
       "source": [
    
        "# Compile data using pyiron tables\n",
        "table = pr.create_table(\"table_murn\", delete_existing_job=True)\n",
        "table.convert_to_object = True\n",
        "table.db_filter_function = get_only_murn\n",
        "table.add[\"potential\"] = get_potential\n",
        "table.add[\"ase_atoms\"] = get_ase_atoms\n",
        "table.add[\"compound\"] = get_compound\n",
        "table.add[\"crystal_structure\"] = get_crystal_structure\n",
        "table.add[\"a\"] = get_eq_lp\n",
        "table.add[\"eq_vol\"] = get_eq_vol\n",
        "table.add[\"eq_bm\"] = get_eq_bm\n",
        "table.add[\"eq_energy\"] = get_eq_energy\n",
        "table.add[\"n_atoms\"] = get_n_atoms\n",
        "table.run()\n",
        "\n",
        "data_murn = table.get_dataframe()\n",
        "data_murn[\"phase\"] = data_murn.compound + \"_\" + data_murn.crystal_structure\n",
        "data_murn"
    
    Sudarsan Surendralal's avatar
    Sudarsan Surendralal committed
       ]
      },
      {
       "cell_type": "code",
    
       "execution_count": 40,
       "id": "30d27d75",
       "metadata": {},
       "outputs": [
        {
         "data": {
          "image/png": "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\n",
          "text/plain": [
           "<Figure size 480x432 with 1 Axes>"
          ]
         },
         "metadata": {
          "needs_background": "light"
         },
         "output_type": "display_data"
        }
       ],
       "source": [
        "fig, ax_list = plt.subplots(ncols=len(potentials_list), nrows=1, sharex=\"row\", sharey=\"row\")\n",
        "\n",
        "fig.set_figwidth(20/3)\n",
        "fig.set_figheight(6)\n",
        "\n",
        "color_palette = sns.color_palette(\"tab10\", n_colors=len(data_murn.phase.unique()))\n",
        "\n",
        "\n",
        "for i, pot in enumerate(potentials_list):\n",
        "    \n",
        "    if len(potentials_list) == 1:\n",
        "        ax = ax_list\n",
        "    else:\n",
        "        ax = ax_list[i]\n",
        "        \n",
        "    data = data_murn[data_murn.potential == get_clean_project_name(pot)]\n",
        "    \n",
        "    for j,(_, row) in enumerate(data.iterrows()):\n",
        "        murn_job = pr.load(row[\"job_id\"])\n",
        "        murn_df = murn_job.output_to_pandas()\n",
        "        n_atoms = row[\"n_atoms\"]\n",
        "        \n",
        "        ax.plot(murn_df[\"volume\"]/n_atoms, murn_df[\"energy\"]/n_atoms,\"o-\",\n",
        "                lw=4,\n",
        "                label= row[\"phase\"], \n",
        "                color=color_palette[j])\n",
        "        \n",
        "    ax.set_title(f\"{get_clean_project_name(pot)}\",fontsize=22)\n",
        "    ax.set_xlabel(\"Volume per atom, $\\mathrm{\\AA^3}$\",fontsize=20)\n",
        "    ax.set_ylabel(\"Energy per atom, eV/atom\",fontsize=20)\n",
        "    ax.tick_params(labelsize=18)\n",
        "    ax.legend(prop={\"size\":16})\n",
        "    #break\n",
        "fig.subplots_adjust(wspace=0.1);"
       ]
      },
      {
       "cell_type": "markdown",
       "id": "fba90359-a2a5-4f83-9fa8-6dc4d87f5743",
       "metadata": {},
       "source": [
        "## (b) Elastic constants and Phonons\n",
        "\n",
        "Pyiron also has job modules to calculate elastic constants and thermal properties using the quasi-harmonic approximation given by the `phonopy` package.\n",
        "\n",
        "As in the previous task, we again loop over the defined potentials and then over the given structures.\n",
        "\n",
        "Calculating elastic constants and thermal properties is considerably more expensive than calculating EV curves. Hence, it is useful to only calculate these properties for a subset of most important structures "
       ]
      },
      {
       "cell_type": "code",
       "execution_count": 11,
       "id": "7bf87f90",
    
    Sudarsan Surendralal's avatar
    Sudarsan Surendralal committed
       "metadata": {},
       "outputs": [
        {
         "data": {
          "text/html": [
           "<div>\n",
           "<style scoped>\n",
           "    .dataframe tbody tr th:only-of-type {\n",
           "        vertical-align: middle;\n",
           "    }\n",
           "\n",
           "    .dataframe tbody tr th {\n",
           "        vertical-align: top;\n",
           "    }\n",
           "\n",
           "    .dataframe thead th {\n",
           "        text-align: right;\n",
           "    }\n",
           "</style>\n",
           "<table border=\"1\" class=\"dataframe\">\n",
           "  <thead>\n",
           "    <tr style=\"text-align: right;\">\n",
           "      <th></th>\n",
           "      <th>job_id</th>\n",
           "      <th>potential</th>\n",
    
           "      <th>ase_atoms</th>\n",
    
    Sudarsan Surendralal's avatar
    Sudarsan Surendralal committed
           "      <th>compound</th>\n",
           "      <th>crystal_structure</th>\n",
           "      <th>a</th>\n",
           "      <th>eq_vol</th>\n",
           "      <th>eq_bm</th>\n",
           "      <th>eq_energy</th>\n",
           "      <th>n_atoms</th>\n",
    
           "      <th>phase</th>\n",
    
    Sudarsan Surendralal's avatar
    Sudarsan Surendralal committed
           "    </tr>\n",
           "  </thead>\n",
           "  <tbody>\n",
           "    <tr>\n",
           "      <th>0</th>\n",
    
           "      <td>298</td>\n",
           "      <td>LiAl_eam</td>\n",
           "      <td>(Atom('Al', [0.0, 0.0, 0.0], index=0))</td>\n",
           "      <td>Al</td>\n",
           "      <td>fcc</td>\n",
           "      <td>4.039967</td>\n",
           "      <td>16.495612</td>\n",
           "      <td>85.876912</td>\n",
           "      <td>-3.483097</td>\n",
    
    Sudarsan Surendralal's avatar
    Sudarsan Surendralal committed
           "      <td>1</td>\n",
    
           "      <td>Al_fcc</td>\n",
    
    Sudarsan Surendralal's avatar
    Sudarsan Surendralal committed
           "    </tr>\n",
           "    <tr>\n",
    
           "      <th>2</th>\n",
           "      <td>324</td>\n",
    
    Sudarsan Surendralal's avatar
    Sudarsan Surendralal committed
           "      <td>LiAl_eam</td>\n",
    
           "      <td>(Atom('Li', [0.0, 0.0, 0.0], index=0))</td>\n",
    
    Sudarsan Surendralal's avatar
    Sudarsan Surendralal committed
           "      <td>Li</td>\n",
           "      <td>bcc</td>\n",
           "      <td>4.195477</td>\n",
           "      <td>20.114514</td>\n",
           "      <td>13.690609</td>\n",
           "      <td>-1.757011</td>\n",
           "      <td>1</td>\n",
    
           "      <td>Li_bcc</td>\n",
    
    Sudarsan Surendralal's avatar
    Sudarsan Surendralal committed
           "    </tr>\n",
           "    <tr>\n",
           "      <th>4</th>\n",
    
           "      <td>350</td>\n",
    
    Sudarsan Surendralal's avatar
    Sudarsan Surendralal committed
           "      <td>LiAl_eam</td>\n",
    
           "      <td>(Atom('Li', [4.359978178265942, 2.5172345748814804, 1.7799536377360752], index=0), Atom('Li', [6.53996726740165, 3.7758518623203585, 2.669930456604318], index=1), Atom('Al', [-3.964456982410852e-1...</td>\n",
           "      <td>Li2Al2</td>\n",
           "      <td>cubic</td>\n",
           "      <td>6.165940</td>\n",
           "      <td>58.604895</td>\n",
           "      <td>100.347240</td>\n",
           "      <td>-11.074362</td>\n",
           "      <td>4</td>\n",
           "      <td>Li2Al2_cubic</td>\n",
           "    </tr>\n",
           "    <tr>\n",
           "      <th>5</th>\n",
           "      <td>363</td>\n",
           "      <td>LiAl_eam</td>\n",
           "      <td>(Atom('Li', [0.0, 0.0, 0.0], index=0), Atom('Al', [1.9825515172760235, 1.9825515172760237, 2.427925369776811e-16], index=1), Atom('Al', [1.9825515172760235, 1.2139626848884054e-16, 1.9825515172760...</td>\n",
           "      <td>LiAl3</td>\n",
           "      <td>cubic</td>\n",
           "      <td>5.607502</td>\n",
           "      <td>62.227580</td>\n",
           "      <td>51.472656</td>\n",
           "      <td>-12.774590</td>\n",
           "      <td>4</td>\n",
           "      <td>LiAl3_cubic</td>\n",
    
    Sudarsan Surendralal's avatar
    Sudarsan Surendralal committed
           "    </tr>\n",
           "  </tbody>\n",
           "</table>\n",
           "</div>"
          ],
          "text/plain": [
    
           "   job_id potential  ... n_atoms         phase\n",
           "0     298  LiAl_eam  ...       1        Al_fcc\n",
           "2     324  LiAl_eam  ...       1        Li_bcc\n",
           "4     350  LiAl_eam  ...       4  Li2Al2_cubic\n",
           "5     363  LiAl_eam  ...       4   LiAl3_cubic\n",
    
    Sudarsan Surendralal's avatar
    Sudarsan Surendralal committed
           "\n",
    
           "[4 rows x 11 columns]"
    
         "execution_count": 11,
    
    Sudarsan Surendralal's avatar
    Sudarsan Surendralal committed
         "metadata": {},
         "output_type": "execute_result"
        }
       ],
       "source": [
    
        "list_of_phases = [\"Al_fcc\",\"Li_bcc\",\"Li2Al2_cubic\",\"LiAl3_cubic\"]\n",
        "\n",
        "subset_murn = data_murn[data_murn[\"phase\"].isin(list_of_phases)]\n",
        "subset_murn"
    
    Sudarsan Surendralal's avatar
    Sudarsan Surendralal committed
       ]
      },
      {
       "cell_type": "code",
    
       "execution_count": 12,
    
    Sudarsan Surendralal's avatar
    Sudarsan Surendralal committed
       "id": "0d1c799c-f10b-462d-aaea-253cee4b4b3e",
    
       "metadata": {
        "scrolled": true