{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Resolving the ordering and dependencies between shear elastic modulus" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/Users/chazeon/Documents/Projects/qha-cij-2/cij/core/phonon_contribution/nonshear.py:119: RuntimeWarning: divide by zero encountered in true_divide\n", " return h_div_k * (self.freq_array[nax,:,:,:] / self.t_array[:,nax,nax,nax])\n", "/Users/chazeon/Documents/Projects/qha-cij-2/cij/core/phonon_contribution/nonshear.py:119: RuntimeWarning: invalid value encountered in true_divide\n", " return h_div_k * (self.freq_array[nax,:,:,:] / self.t_array[:,nax,nax,nax])\n", "/Users/chazeon/Documents/Projects/qha-cij-2/cij/core/phonon_contribution/nonshear.py:141: RuntimeWarning: overflow encountered in exp\n", " return self.Q ** 2 * numpy.exp(self.Q) / (numpy.exp(self.Q) - 1) ** 2\n", "/Users/chazeon/Documents/Projects/qha-cij-2/cij/core/phonon_contribution/nonshear.py:141: RuntimeWarning: overflow encountered in square\n", " return self.Q ** 2 * numpy.exp(self.Q) / (numpy.exp(self.Q) - 1) ** 2\n", "/Users/chazeon/Documents/Projects/qha-cij-2/cij/core/phonon_contribution/nonshear.py:141: RuntimeWarning: invalid value encountered in true_divide\n", " return self.Q ** 2 * numpy.exp(self.Q) / (numpy.exp(self.Q) - 1) ** 2\n", "/Users/chazeon/Documents/Projects/qha-cij-2/cij/core/phonon_contribution/nonshear.py:130: RuntimeWarning: overflow encountered in exp\n", " return self.Q / (numpy.exp(self.Q) - 1)\n", "/Users/chazeon/Documents/Projects/qha-cij-2/cij/core/phonon_contribution/nonshear.py:130: RuntimeWarning: invalid value encountered in true_divide\n", " return self.Q / (numpy.exp(self.Q) - 1)\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "03 -> []\n", "03 -> [11(1111), 12(1122), 12(1122), 22(2222)]\n", "04 -> dict_keys([])\n", "04 -> dict_keys([11(1111), 12(1122), 22(2222)])\n", "03 -> []\n", "03 -> [11(1111), 12(1122), 12(1122), 22(2222)]\n", "04 -> dict_keys([])\n", "04 -> dict_keys([11(1111), 12(1122), 22(2222)])\n", "03 -> []\n", "03 -> [11(1111), 12(1122), 12(1122), 22(2222)]\n", "04 -> dict_keys([])\n", "04 -> dict_keys([11(1111), 12(1122), 22(2222)])\n" ] } ], "source": [ "import cij.core.calculator\n", "\n", "calculator = cij.core.calculator.Calculator(\"_attachments/plotting/config.yml\")" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "%matplotlib inline\n", "from matplotlib import pyplot as plt\n", "from cij.plot.tasks import plot_tasklist_dependencies, plot_phonon_contribution_dependencies, make_legend" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "image/png": "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VQqRmQSfEOKlWVpasnLlSnr37k2LFi04ffp0tvYbPHgwixcvpkuXLvz55595XKUQhuRSpxAiV6xfv55x48axatUqunbtmq19AgICGDZsGOvXr6d9+/Z5XKEQT5hPmzZtmqmLEEIUfvXq1aNVq1YMGTIEGxsbmjZt+sJ9atasSbNmzRgwYAAuLi7S8CLyhZzxCSFy1bVr1/D09KRLly788MMP2er4/Ouvv+jRowe//PILffr0yYcqRXEmwSeEyHUZHZ92dnasWbMmWx2foaGheHh48P333zNs2LB8qFIUV9LcIoTIdRkdn6VLl8bV1TVbHZ+NGjXi4MGDfP755yxdujQfqhTFlQSfECJPWFpasmLFCvr27Uvz5s05derUC/epW7cuhw8fZtasWcybNy8fqhTFkVzqFELkuYyOTz8/Pzw8PF64/a1bt+jYsSPDhw/niy++QJXNUUpCZIcEnxAiX4SEhNC7d2++/PJLPvjggxduf//+fTp16kS3bt3473//K+Enco0EnxAi3+S04/PRo0d07tyZVq1aMX/+fMzM5O6MeHUSfEKIfPX48WP69u2Lra0tq1evxtbW9rnbx8TE4OHhQZ06dViyZEm2H4gtRFbkn09CiHxVqlQp9uzZQ5kyZbLV8eng4MDevXu5fv06w4YNIy0tLZ8qFUWVBJ8QIt9ZWlqyfPly+vXrl62OT1tbW3bu3ElMTAz9+vUjJSUlnyoVRZEEnxDCJFQqFZ9//jlz5syhY8eO7N69+7nbW1tbs3XrVtRqNd27dycxMTGfKhVFjQSfEMKkBgwYgL+/Pz4+PixatOi521paWrJu3TrKly9P165diYuLy6cqRVEizS1CiAIho+Ozc+fOzJ0797lNLDqdjrFjxxIaGqqfCShEdskZnxCiQKhevTohISH873//o1evXsTHx2e5rZmZGYsXL6ZVq1a0a9eOhw8f5mOlorCT4BNCFBglS5Zkz549lC1bFldXV+7evZvltiqVirlz59K9e3fatm373G2FeJoEnxCiQHm647NFixaEhYVlua1KpWL69Ol4e3vj6urKjRs38q9QUWjJIFohRIGjUqlo06YNFStWZODAgbi4uPD6669nuX3r1q0xNzdn9OjReHp6Urp06XysVhQ2EnxCiALLxcUFV1dXhgwZgkaj4e23385y27fffhsHBweGDx+Ou7s75cuX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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.figure()\n", "\n", "plot_phonon_contribution_dependencies(calculator)\n", "make_legend()\n", "\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "For a more complicated example, see the following example with **monoclinic** system" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [], "source": [ "from cij.util import c_\n", "from cij.core.tasks import PhononContributionTaskList\n", "from cij.plot.tasks import plot_tasklist_dependencies\n", "\n", "task_list = PhononContributionTaskList(calculator)\n", "task_list.resolve(\n", " (1/3, 1/3, 1/3),\n", " [\n", " c_(11), c_(22), c_(33),\n", " c_(44), c_(55), c_(66),\n", " c_(12), c_(23), c_(13),\n", " c_(15), c_(25), c_(35),\n", " c_(46),\n", " ]\n", ")" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from cij.plot.tasks import plot_tasklist_dependencies, make_legend\n", "\n", "plt.figure()\n", "\n", "plot_tasklist_dependencies(task_list)\n", "make_legend()\n", "\n", "plt.show()" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "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.6.8" } }, "nbformat": 4, "nbformat_minor": 2 }