{ "cells": [ { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "# Custom Models in pycalphad: Viscosity" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "## Viscosity Model Background\n", "\n", "We are going to take a CALPHAD-based property model from the literature and use it to predict the viscosity of Al-Cu-Zr liquids.\n", "\n", "For a binary alloy liquid under small undercooling, Gąsior suggested an entropy model of the form\n", "$$\\eta = (\\sum_i x_i \\eta_i ) (1 - 2\\frac{S_{ex}}{R})$$\n", "\n", "where $\\eta_i$ is the viscosity of the element $i$, $x_i$ is the mole fraction, $S_{ex}$ is the excess entropy, and $R$ is the gas constant.\n", "\n", "For more details on this model, see \n", "\n", "1. M.E. Trybula, T. Gancarz, W. Gąsior, *Density, surface tension and viscosity of liquid binary Al-Zn and ternary Al-Li-Zn alloys*, Fluid Phase Equilibria 421 (2016) 39-48, [doi:10.1016/j.fluid.2016.03.013](http://dx.doi.org/10.1016/j.fluid.2016.03.013).\n", "\n", "2. Władysław Gąsior, *Viscosity modeling of binary alloys: Comparative studies*, Calphad 44 (2014) 119-128, [doi:10.1016/j.calphad.2013.10.007](http://dx.doi.org/10.1016/j.calphad.2013.10.007).\n", "\n", "3. Chenyang Zhou, Cuiping Guo, Changrong Li, Zhenmin Du, *Thermodynamic assessment of the phase equilibria and prediction of glass-forming ability of the Al–Cu–Zr system*, Journal of Non-Crystalline Solids 461 (2017) 47-60, [doi:10.1016/j.jnoncrysol.2016.09.031](https://doi.org/10.1016/j.jnoncrysol.2016.09.031)." ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "deletable": true, "editable": true, "execution": { "iopub.execute_input": "2022-02-19T19:24:46.402127Z", "iopub.status.busy": "2022-02-19T19:24:46.402127Z", "iopub.status.idle": "2022-02-19T19:24:49.201546Z", "shell.execute_reply": "2022-02-19T19:24:49.201546Z" } }, "outputs": [], "source": [ "from pycalphad import Database" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "## TDB Parameters\n", "We can calculate the excess entropy of the liquid using the Al-Cu-Zr thermodynamic database from Zhou et al.\n", "\n", "We add three new parameters to describe the viscosity (in Pa-s) of the pure elements Al, Cu, and Zr:\n", "```\n", " $ Viscosity test parameters\n", " PARAMETER ETA(LIQUID,AL;0) 2.98150E+02 +0.000281*EXP(12300/(8.3145*T)); 6.00000E+03 \n", " N REF:0 !\n", " PARAMETER ETA(LIQUID,CU;0) 2.98150E+02 +0.000657*EXP(21500/(8.3145*T)); 6.00000E+03 \n", " N REF:0 !\n", " PARAMETER ETA(LIQUID,ZR;0) 2.98150E+02 +4.74E-3 - 4.97E-6*(T-2128) ; 6.00000E+03 \n", " N REF:0 !\n", "```\n", "\n", "Great! However, if we try to load the database now, we will get an error. This is because `ETA` parameters are not supported by default in pycalphad, so we need to tell pycalphad's TDB parser that \"ETA\" should be on the list of supported parameter types." ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": false, "deletable": true, "editable": true, "execution": { "iopub.execute_input": "2022-02-19T19:24:49.210107Z", "iopub.status.busy": "2022-02-19T19:24:49.201546Z", "iopub.status.idle": "2022-02-19T19:24:49.261598Z", "shell.execute_reply": "2022-02-19T19:24:49.261598Z" }, "jupyter": { "outputs_hidden": false } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Failed while parsing: PARAMETER ETA(LIQUID,AL;0) 2.98150E+02 +0.000281*EXP(12300/(8.3145*T)); 6.00000E+03 N REF:0 \n", "Tokens: None\n", "Expected {{'ELEMENT' W:(-/A-Za-z){1,2} W:(()-/-:A-Z_a-z) Re:('[-+]?([0-9]+\\.(?!([0-9]|[eE])))|([0-9]*\\.?[0-9]+([eE][-+]?[0-9]+)?)') Re:('[-+]?([0-9]+\\.(?!([0-9]|[eE])))|([0-9]*\\.?[0-9]+([eE][-+]?[0-9]+)?)') Re:('[-+]?([0-9]+\\.(?!([0-9]|[eE])))|([0-9]*\\.?[0-9]+([eE][-+]?[0-9]+)?)') LineEnd} | {'SPECIES' W:(*+--9A-Z_a-z) [Suppress:('%')] Group:({{W:(A-Za-z){1,2} [Re:('[-+]?([0-9]+\\.(?!([0-9]|[eE])))|([0-9]*\\.?[0-9]+([eE][-+]?[0-9]+)?)')]}}...) [Suppress:('/') W:(+-0-9)] LineEnd} | {'TYPE_DEFINITION' Suppress:() !W:( !) SkipTo:(LineEnd)} | {'FUNCTION' W:(()-/-:A-Z_a-z) {{Re:('[-+]?([0-9]+\\.(?!([0-9]|[eE])))|([0-9]*\\.?[0-9]+([eE][-+]?[0-9]+)?)') | [',']...} {{SkipTo:(';') Suppress:(';') [Suppress:(',')]... [Re:('[-+]?([0-9]+\\.(?!([0-9]|[eE])))|([0-9]*\\.?[0-9]+([eE][-+]?[0-9]+)?)')] Suppress:([(Yy)])}}... Suppress:([(Nn)])} [Suppress:(W:(-0-:A-Z_a-z))] LineEnd} | {'ASSESSED_SYSTEMS' SkipTo:(LineEnd)} | {'DEFINE_SYSTEM_DEFAULT' SkipTo:(LineEnd)} | {'DEFAULT_COMMAND' SkipTo:(LineEnd)} | {'DATABASE_INFO' SkipTo:(LineEnd)} | {'VERSION_DATE' SkipTo:(LineEnd)} | {'REFERENCE_FILE' SkipTo:(LineEnd)} | {'ADD_REFERENCES' SkipTo:(LineEnd)} | {'LIST_OF_REFERENCES' SkipTo:(LineEnd)} | {'TEMPERATURE_LIMITS' SkipTo:(LineEnd)} | {'PHASE' W:(()-/-:A-Z_a-z) Suppress:() !W:( !) Suppress:() Suppress:(W:(0-9)) Group:({Re:('[-+]?([0-9]+\\.(?!([0-9]|[eE])))|([0-9]*\\.?[0-9]+([eE][-+]?[0-9]+)?)')}...) Suppress:(SkipTo:(LineEnd))} | {'CONSTITUENT' W:(()-/-:A-Z_a-z) Suppress:() Suppress:(':') Group:(Group:({{[Suppress:(',')] W:(*+--9A-Z_a-z) [Suppress:('%')]}}...) [: Group:({{[Suppress:(',')] W:(*+--9A-Z_a-z) [Suppress:('%')]}}...)]...) Suppress:(':') LineEnd} | {'PARAMETER' {'BMAGN' | 'DF' | 'DQ' | 'ELRS' | 'G' | 'GD' | 'L' | 'MF' | 'MQ' | 'NT' | 'SIGM' | 'TC' | 'THCD' | 'THETA' | 'V0' | 'VA' | 'VC' | 'VISC' | 'VK' | 'VS' | 'XI'} Suppress:('(') W:(()-/-:A-Z_a-z) [Suppress:('&') W:(-/A-Za-z){1,2}] Suppress:(',') Group:(Group:({{[Suppress:(',')] W:(*+--9A-Z_a-z) [Suppress:('%')]}}...) [: Group:({{[Suppress:(',')] W:(*+--9A-Z_a-z) [Suppress:('%')]}}...)]...) [Suppress:(';') W:(0-9)] Suppress:(')') {{Re:('[-+]?([0-9]+\\.(?!([0-9]|[eE])))|([0-9]*\\.?[0-9]+([eE][-+]?[0-9]+)?)') | [',']...} {{SkipTo:(';') Suppress:(';') [Suppress:(',')]... [Re:('[-+]?([0-9]+\\.(?!([0-9]|[eE])))|([0-9]*\\.?[0-9]+([eE][-+]?[0-9]+)?)')] Suppress:([(Yy)])}}... Suppress:([(Nn)])} [Suppress:(W:(-0-:A-Z_a-z))] LineEnd} | {'ZEROVOLUME_SPECIES' SkipTo:(LineEnd)} | {'DIFFUSION' SkipTo:(LineEnd)}}, found '(' (at char 17), (line:1, col:18)\n" ] } ], "source": [ "try:\n", " dbf = Database('alcuzr-viscosity.tdb')\n", "except Exception as e:\n", " print(e)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Adding the `ETA` parameter to the TDB parser " ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": false, "deletable": true, "editable": true, "execution": { "iopub.execute_input": "2022-02-19T19:24:49.261598Z", "iopub.status.busy": "2022-02-19T19:24:49.261598Z", "iopub.status.idle": "2022-02-19T19:24:49.281502Z", "shell.execute_reply": "2022-02-19T19:24:49.281502Z" }, "jupyter": { "outputs_hidden": false } }, "outputs": [], "source": [ "import pycalphad.io.tdb_keywords\n", "pycalphad.io.tdb_keywords.TDB_PARAM_TYPES.append('ETA')" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "Now the database will load:" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": false, "deletable": true, "editable": true, "execution": { "iopub.execute_input": "2022-02-19T19:24:49.281502Z", "iopub.status.busy": "2022-02-19T19:24:49.281502Z", "iopub.status.idle": "2022-02-19T19:24:49.341526Z", "shell.execute_reply": "2022-02-19T19:24:49.341526Z" }, "jupyter": { "outputs_hidden": false } }, "outputs": [], "source": [ "dbf = Database('alcuzr-viscosity.tdb')" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "## Writing the Custom Viscosity Model\n", "\n", "Now that we have our `ETA` parameters in the database, we need to write a `Model` class to tell pycalphad how to compute viscosity. All custom models are subclasses of the pycalphad `Model` class.\n", "\n", "When the `ViscosityModel` is constructed, the `build_phase` method is run and we need to construct the viscosity model after doing all the other initialization using a new method `build_viscosity`. The implementation of `build_viscosity` needs to do four things:\n", "1. Query the Database for all the `ETA` parameters\n", "2. Compute their weighted sum\n", "3. Compute the excess entropy of the liquid\n", "4. Plug all the values into the Gąsior equation and return the result\n", "\n", "Since the `build_phase` method sets the attribute `viscosity` to the `ViscosityModel`, we can access the property using `viscosity` as the output in pycalphad caluclations." ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "deletable": true, "editable": true, "execution": { "iopub.execute_input": "2022-02-19T19:24:49.351408Z", "iopub.status.busy": "2022-02-19T19:24:49.351408Z", "iopub.status.idle": "2022-02-19T19:24:49.361677Z", "shell.execute_reply": "2022-02-19T19:24:49.361677Z" } }, "outputs": [], "source": [ "from tinydb import where\n", "from pycalphad import Model, variables as v\n", "\n", "class ViscosityModel(Model):\n", " def build_phase(self, dbe):\n", " super(ViscosityModel, self).build_phase(dbe)\n", " self.viscosity = self.build_viscosity(dbe)\n", "\n", " def build_viscosity(self, dbe):\n", " if self.phase_name != 'LIQUID':\n", " raise ValueError('Viscosity is only defined for LIQUID phase')\n", " phase = dbe.phases[self.phase_name]\n", " param_search = dbe.search\n", " # STEP 1\n", " eta_param_query = (\n", " (where('phase_name') == phase.name) & \\\n", " (where('parameter_type') == 'ETA') & \\\n", " (where('constituent_array').test(self._array_validity))\n", " )\n", " # STEP 2\n", " eta = self.redlich_kister_sum(phase, param_search, eta_param_query)\n", " # STEP 3\n", " excess_energy = self.GM - self.models['ref'] - self.models['idmix']\n", " #liquid_mod = Model(dbe, self.components, self.phase_name)\n", " ## we only want the excess contributions to the entropy\n", " #del liquid_mod.models['ref']\n", " #del liquid_mod.models['idmix']\n", " excess_entropy = -excess_energy.diff(v.T)\n", " ks = 2\n", " # STEP 4\n", " result = eta * (1 - ks * excess_entropy / v.R)\n", " self.eta = eta\n", " return result" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "## Performing Calculations\n", "\n", "Now we can create an instance of `ViscosityModel` for the liquid phase using the `Database` object we created earlier. We can verify this model has a `viscosity` attribute containing a symbolic expression for the viscosity." ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": false, "deletable": true, "editable": true, "execution": { "iopub.execute_input": "2022-02-19T19:24:49.372613Z", "iopub.status.busy": "2022-02-19T19:24:49.372613Z", "iopub.status.idle": "2022-02-19T19:24:49.381328Z", "shell.execute_reply": "2022-02-19T19:24:49.381328Z" }, "jupyter": { "outputs_hidden": false } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(0.000657*LIQUID0CU*2.71828182845905**(2585.84400745685*T**(-1.0)) + LIQUID0ZR*(0.00474 - 4.97e-06*(-2128.0 + T)))*(1 + 0.240543628600637*(LIQUID0CU*LIQUID0ZR*(392.8485 - 51.3121*log(T)) + (LIQUID0CU - LIQUID0ZR)*LIQUID0CU*LIQUID0ZR*(75.3798 - 9.6125*log(T)) + (LIQUID0CU - LIQUID0ZR)**2*LIQUID0CU*LIQUID0ZR*(-270.5305 + 36.8512*log(T)) + (LIQUID0CU - LIQUID0ZR)**3*LIQUID0CU*LIQUID0ZR*(105.895 - 13.6488*log(T)))/(LIQUID0CU + LIQUID0ZR))\n" ] } ], "source": [ "mod = ViscosityModel(dbf, ['CU', 'ZR'], 'LIQUID')\n", "print(mod.viscosity)" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "Finally we calculate and plot the viscosity." ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "collapsed": false, "deletable": true, "editable": true, "execution": { "iopub.execute_input": "2022-02-19T19:24:49.431215Z", "iopub.status.busy": "2022-02-19T19:24:49.411882Z", "iopub.status.idle": "2022-02-19T19:24:49.657823Z", "shell.execute_reply": "2022-02-19T19:24:49.657823Z" }, "jupyter": { "outputs_hidden": false } }, "outputs": [ { "data": { "image/png": "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2zbr1q3TnXfeqeuvv15z585VSEjR/zns3bu3Nm/enC9k/PTTT/ryyy9122235W276aabVLp0aU2fPj1f/+nTp6tYsWJ5v4uCPPPMMxo6dKgWLlyoBx54oMg1A76Aqb2AB1WvXl1JSUlasmSJJDkVRubMmaM333xTPXv2VGJios6cOaOZM2cqJiYmL2DceOON6tevn/7zn//ol19+UYcOHeRwOLR+/XrdeOONeuSRR9SkSRMNGDBAM2bMyLv98d1332nOnDnq0aOHbrzxRqePV5DmzZtL+uvL8s4771R4eLi6du2aF1KaNm2qhg0bauHChapXr56aNWt22c+elJSkuLg4DRgwQI899phsNpv+97//XRSWLhx/wYIFeuKJJ3T11VerRIkS6tq1a4H7PXjwoLp16yabzabevXtr4cKF+d5v3LixGjdunPfz//73Px08eFDnzp2T9FeQee655yT9FbIuXFV6+OGHNXPmTHXu3FlPPfWUwsPD9corr6hChQp5A4Wlv8aATJgwQYMHD9Ztt92m9u3ba/369Xr//fc1ceLES479kaSXX35Zp06d0jvvvKPSpUvn3bYC/Jb3JvIAwenCNM8WLVoU+P4/p/Z+//33Rp8+fYwrrrjCiIyMNMqXL2906dLF2LJlS75+ubm5xosvvmjUrVvXiIiIMMqVK2d07NjR2Lp1a16bnJwcY9y4cUb16tWN8PBwIyEhwRgxYkS+KbLOHk8FTHGdMGGCUblyZSMkJKTAab4vvPCCIcmYNGmS0+fr66+/Nlq2bGlER0cblSpVMv79738bK1asMCQZa9asyWuXkZFh3HXXXUapUqUMSZec5rtmzRpDUqGvf36uNm3aFNr27zUYhmEcPnzY6N27txETE2OUKFHC6NKly0Urul4wY8YMo06dOkZERISRmJhovPrqqxc9BqCg5eAN46/fd48ePQxJxuTJky95DgFfZzOMAv4XAwAs8Prrr2vo0KFKSUnRFVdc4e1yAPgIwggAjzAMQ02aNFGZMmW0Zs0ab5cDwIcwZgSApc6ePatPPvlEa9as0Y4dO/LGywDABVwZAWCplJQUVa9eXaVKldLDDz+siRMnerskAD6GMAIAALyKdUYAAIBXEUYAAIBXBd0AVofDoaNHj6pkyZIuLR8NAECwMgxDZ86cUaVKldyyavEFQRdGjh49qoSEBG+XAQCA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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "%matplotlib inline\n", "import matplotlib.pyplot as plt\n", "import numpy as np\n", "from pycalphad import calculate\n", "\n", "mod = ViscosityModel(dbf, ['CU', 'ZR'], 'LIQUID')\n", "\n", "temp = 2100\n", "# NOTICE: we need to tell pycalphad about our model for this phase\n", "models = {'LIQUID': mod}\n", "res = calculate(dbf, ['CU', 'ZR'], 'LIQUID', P=101325, T=temp, model=models, output='viscosity') \n", "\n", "fig = plt.figure(figsize=(6,6))\n", "ax = fig.gca()\n", "ax.scatter(res.X.sel(component='ZR'), 1000 * res.viscosity.values)\n", "ax.set_xlabel('X(ZR)')\n", "ax.set_ylabel('Viscosity (mPa-s)')\n", "ax.set_xlim((0,1))\n", "ax.set_title('Viscosity at {}K'.format(temp));" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "We repeat the calculation for Al-Cu." ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "collapsed": false, "deletable": true, "editable": true, "execution": { "iopub.execute_input": "2022-02-19T19:24:49.701334Z", "iopub.status.busy": "2022-02-19T19:24:49.701334Z", "iopub.status.idle": "2022-02-19T19:24:49.911692Z", "shell.execute_reply": "2022-02-19T19:24:49.911692Z" }, "jupyter": { "outputs_hidden": false } }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAhYAAAIjCAYAAABf8FLNAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy80BEi2AAAACXBIWXMAAA9hAAAPYQGoP6dpAABRuUlEQVR4nO3dd3gVZfrG8fuk0xIITSKhRSnSpAvoIoJSQnFRWJVFFOuKDdSVJr3EslixI/DbBVFBRKVKL4J0BEGpoYPSEgIhh5wzvz9cskYCZM6ZOS3fz3XlusxknjlPxpBzZ+ad93UYhmEIAADAAmH+bgAAAIQOggUAALAMwQIAAFiGYAEAACxDsAAAAJYhWAAAAMsQLAAAgGUIFgAAwDIECwAAYBmCBWCjiRMnyuFwKDU11d+tXJHD4dDQoUP93QaAEECwAEzo1KmTChcurDNnzlx2n+7duysqKkonTpzwYWfW+v777zV06FCdPn3aL68/ZcoUvfHGG/nef/78+XrooYdUq1YthYeHq1KlSnnud/jwYf39739XtWrVVKxYMRUvXlyNGzfWpEmTlNfqBocOHVK3bt1UvHhxxcbGqnPnztqzZ0+exx4/frxq1KihmJgYXX/99Xr77bcv2eeBBx5Q0aJFL9n+448/qlSpUqpUqVLAh1DgqgwA+TZ16lRDkjFp0qQ8v3727FmjSJEiRseOHQ3DMIzs7GwjMzPTcLvdvmzTtMzMTOPChQs5n7/66quGJGPv3r1+6Sc5OdmoWLFivvfv2bOnERMTYzRr1swoX778ZWs3b95stGjRwhgwYIDx/vvvG2+//bbRqVMnQ5LRv3//XPueOXPGuP76640yZcoYL7/8sjF27FgjMTHRKF++vHH8+PFc+77//vuGJOOuu+4yPvzwQ6NHjx6GJCMlJeWSPosUKZJr25YtW4xSpUoZFSpUMPbs2ZPv7xkIVAQLwIRz584ZxYoVM9q0aZPn16dMmWJIMqZOnerjzqwVbMHi0KFDhtPp9KjWMAyjQ4cORpEiRYzs7OycbS+//LIhyVizZk3Otu3btxvh4eG5Qsi5c+eMkiVLGsnJybmO2b17d6NIkSLGyZMnc7b9OVhs3brVKF26tJGYmGjs3r3bVM9AoOJWCGBCoUKF1KVLFy1cuFC//vrrJV+fMmWKihUrpk6dOknKe4zFunXr1KZNG5UqVUqFChVS5cqV1atXr1zHcbvdevPNN1W7dm3FxMSodOnSatu2rdatW5ezT3Z2tkaMGKGkpCRFR0erUqVKGjBggLKysnIdKz+v98cxFkOHDtULL7wgSapcubIcDkfO99CiRQvVrVs3z3NTrVo1tWnT5ornb+bMmUpOTlZCQoKio6OVlJSkESNGyOVy5exz6623atasWdq3b1/Oa1/u1sZFCQkJioyMvOI+V1KpUiWdO3dOTqczZ9u0adPUqFEjNWrUKGdb9erV1apVK33++ec52xYvXqwTJ07oiSeeyHXM3r176+zZs5o1a1aer7l9+3a1atVK0dHRWrx4sapUqeJx/0AgifB3A0Cw6d69uyZNmqTPP/9cTz75ZM72kydPat68ebr33ntVqFChPGt//fVX3XHHHSpdurT69eun4sWLKzU1VV9++WWu/R566CFNnDhR7dq108MPP6zs7GwtX75cq1evVsOGDSVJDz/8sCZNmqS7775bzz33nH744QeNGTNG27dv14wZM0y93h916dJFO3bs0KeffqrXX39dpUqVkiSVLl1aPXr00COPPKKtW7eqVq1aOTVr167Vjh07NGjQoCueu4kTJ6po0aLq27evihYtqkWLFmnw4MFKT0/Xq6++KkkaOHCg0tLSdPDgQb3++uuSlOe4BG9kZmbq7NmzysjI0NKlSzVhwgQ1bdo05/+b2+3Wjz/+eEkAk6TGjRtr/vz5OnPmjIoVK6aNGzdKUs7/l4saNGigsLAwbdy4UX//+99zfe2XX37RbbfdpoiICC1evFhJSUmWfn+AX/n7kgkQbLKzs41y5coZTZs2zbX94n32efPm5WybMGFCrlsKM2bMMCQZa9euvezxFy1aZEgynn766Uu+dnGsxqZNmwxJxsMPP5zr688//7whyVi0aFG+X88wDEOSMWTIkJzPL3cr5PTp00ZMTIzx4osv5tr+9NNPG0WKFDEyMjKu+Drnzp27ZNtjjz1mFC5c2Dh//nzONk9uZ5ipHTNmjCEp56NVq1bG/v37c77+22+/GZKM4cOHX1I7btw4Q5Lx888/G4ZhGL179zbCw8PzfJ3SpUsb99xzT87nPXv2NCIjI41y5coZCQkJxo4dOzz4DoHAxq0QwKTw8HDdc889WrVqVa5bHFOmTFHZsmXVqlWry9YWL15ckvTtt9/qwoULee4zffp0ORwODRky5JKvORwOSdLs2bMlSX379s319eeee06Sci6/5+f1zIiLi1Pnzp316aef5jxF4XK59Nlnn+nOO+9UkSJFrlj/xys5Z86c0fHjx3XLLbfo3Llz+vnnn73uL7/uvfdefffdd5oyZYruu+8+Sb9fxbjo4n9HR0dfUhsTE5Nrn8zMTEVFReX5OjExMbmOK/1+vo4fP674+Picq0FAKCFYAB7o3r27pN/DhCQdPHhQy5cv1z333KPw8PDL1rVo0UJ33XWXhg0bplKlSqlz586aMGFCrnERu3fvVkJCguLj4y97nH379iksLEzXXXddru3XXHONihcvrn379uX79cy6//77tX//fi1fvlyStGDBAh07dkw9evS4au1PP/2kv/71r4qLi1NsbKxKly6dc5sgLS3N457Mqlixolq3bq17771XkydPVpUqVdS6deucEHAxAOV1ns6fP59rn0KFCuUam/Hnff98W6xQoUL6v//7P23btk3Jyck6e/asZd8XEAgIFoAHGjRooOrVq+vTTz+VpJy/4C8GjstxOByaNm2aVq1apSeffFKHDh1Sr1691KBBA2VkZJju4+IVDF+9niS1adNGZcuW1X/+8x9J0n/+8x9dc801at269RXrTp8+rRYtWmjz5s0aPny4vvnmG3333Xd6+eWXJf0+rsFf7r77bh04cEDLli2TJMXHxys6OlpHjhy5ZN+L2xISEiRJ5cqVk8vlumQwr9Pp1IkTJ3L2+6N77rlH77zzjlatWqUuXbpcNpgAwYhgAXioe/fu2rp1q3788UdNmTJF119/fa4nCK7kpptu0qhRo7Ru3TpNnjxZP/30k6ZOnSpJSkpK0uHDh3Xy5MnL1lesWFFut1s7d+7Mtf3YsWM6ffq0KlasmO/Xy8uVAkt4eLjuu+8+TZs2TadOndJXX32le++994pXaiRpyZIlOnHihCZOnKhnnnlGHTp0UOvWrVWiRAlTr2+Hi1cqLl41CQsLU+3atXM9hXPRDz/8oCpVqqhYsWKSpBtvvFGSLtl33bp1crvdOV//s3/84x8aOXKk5s+fr7///e9+DVaAlQgWgIcuXp0YPHiwNm3adNWrFZJ06tSpS2Z4vPjGc/Gy+1133SXDMDRs2LBL6i/Wtm/fXpIumZ1y7NixkqTk5OR8v15eLo6VuNzMmz169NCpU6f02GOPKSMj45KnHvJyMXj8sR+n06l33303z9e349bIb7/9luf28ePHy+FwqH79+jnb7r77bq1duzZXYPjll1+0aNEide3aNWfbbbfdpvj4eL333nu5jvnee++pcOHCOf8v8jJw4ED16dNHX3zxhR577DFPvy0goPC4KeChypUrq1mzZpo5c6Yk5StYTJo0Se+++67++te/KikpSWfOnNFHH32k2NjYnLDQsmVL9ejRQ2+99ZZ27typtm3byu12a/ny5WrZsqWefPJJ1a1bVz179tSHH36Yc4thzZo1mjRpku688061bNky36+XlwYNGkj6/Y3vnnvuUWRkpDp27JgTOOrVq6datWrpiy++UI0aNXK9IV9Os2bNVKJECfXs2VNPP/20HA6H/v3vf+c5lXaDBg302WefqW/fvmrUqJGKFi2qjh07XvbYP/74o77++mtJ0q5du5SWlqaRI0dKkurWrZtTO2rUKK1cuVJt27ZVhQoVdPLkSU2fPl1r167VU089lWvMyhNPPKGPPvpIycnJev755xUZGamxY8eqbNmyOYNkpd/HTIwYMUK9e/dW165d1aZNGy1fvlz/+c9/NGrUqCuOlZGkf/3rXzp16pQ+/vhjxcfH59waAoKW/x5IAYLfxUcPGzdunOfX//y46YYNG4x7773XqFChghEdHW2UKVPG6NChg7Fu3bpcddnZ2carr75qVK9e3YiKijJKly5ttGvXzli/fn3OPhcuXDCGDRtmVK5c2YiMjDQSExON/v3753psM7+vpz89bmoYhjFixAjj2muvNcLCwvJ89PSVV14xJBmjR4/O9/lauXKlcdNNNxmFChUyEhISjH/+85/GvHnzDEnG4sWLc/bLyMgw7rvvPqN48eKGpKs+PnrxPOf10bNnz5z95s+fb3To0MFISEgwIiMjjWLFihnNmzc3JkyYkOe06wcOHDDuvvtuIzY21ihatKjRoUMHY+fOnXn28OGHHxrVqlUzoqKijKSkJOP111+/5Jh5TeltGL///77zzjsNScaYMWOu+L0Cgc5hGHn8uQAAV/Hmm2+qT58+Sk1NVYUKFfzdDoAAQbAAYJphGKpbt65KliypxYsX+7sdAAGEMRYA8u3s2bP6+uuvtXjxYm3ZsiVnfAkAXMQVCwD5lpqaqsqVK6t48eJ64oknNGrUKH+3BCDAECwAAIBlmMcCAABYhmABAAAsE9SDN91utw4f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8X3jQczsz/kfESw8Y/acf//990aTJk2M6Ohoo0qVKsaoUaOM7OxsH3cd3Myc8wsXLhhDhw41kpKSjJiYGCMxMdF44oknjFOnTvm+8SC1ePHiPH8/XzzPPXv2NFq0aHFJzY033mhERUUZVapUMSZMmGD6dVk2HQAAWCZgx1gAAIDgQ7AAAACWIVgAAADLECwAAIBlCBYAAMAyBAsAAGAZggUAALAMwQIAAFiGYAHAYy+99JIeffRR245/0003afr06bYdH4D1CBYAcnG5XGrWrJm6dOmSa3taWpoSExM1cOBASdLRo0f15ptv5nx+0dGjR/XUU0+pSpUqio6OVmJiojp27JhrcSOHw6Gvvvrqktd+4IEHdOedd+Z8PmjQIPXr1y/X4l8AAhvBAkAu4eHhmjhxoubOnavJkyfnbH/qqacUHx+vIUOGSJI+/vhjNWvWTBUrVszZJzU1VQ0aNNCiRYv06quvasuWLZo7d65atmyp3r17m+6lXbt2OnPmjObMmeP9NwbAJyL83QCAwFO1alWlpKToqaee0m233aY1a9Zo6tSpWrt2bc4y4VOnTtU//vGPXHVPPPGEHA6H1qxZoyJFiuRsr1mzpnr16mW6j/DwcLVv315Tp05VcnKyd98UAJ/gigWAPD311FOqW7euevTooUcffVSDBw9W3bp1JUknT57Utm3b1LBhw5z9T548qblz56p37965QsVFxYsX96iPxo0ba/ny5R7VAvA9rlgAyJPD4dB7772nGjVqqHbt2urXr1/O1/bv3y/DMJSQkJCzbdeuXTIMQ9WrV7e0j4SEBB04cEBut1thYfwtBAQ6/pUCuKxPPvlEhQsX1t69e3Xw4MGc7ZmZmZKkmJiYnG2GYdjSQ6FCheR2u5WVlWXL8QFYi2ABIE/ff/+9Xn/9dX377bdq3LixHnrooZzwUKpUKUnSqVOncva//vrr5XA49PPPP1/12MWKFVNaWtol20+fPq24uLhc206ePKkiRYqoUKFC3nw7AHyEYAHgEufOndMDDzygf/zjH2rZsqXGjx+vNWvW6P3335ckJSUlKTY2Vtu2bcupiY+PV5s2bTRu3DidPXv2kmOePn0657+rVaum9evX5/q6y+XS5s2bVbVq1Vzbt27dqnr16ln43QGwE8ECwCX69+8vwzCUkpIiSapUqZJee+01/fOf/1RqaqrCwsLUunVrrVixIlfduHHj5HK51LhxY02fPl07d+7U9u3b9dZbb6lp06Y5+/Xt21cff/yx3n33Xe3cuVObNm3So48+qlOnTunhhx/Odczly5frjjvusP+bBmAJh2HXjVEAQWnp0qVq1aqVlixZoptvvjnX19q0aaPs7GwtWLBAc+fO1SOPPKL9+/fnGlR55MgRjRo1St9++62OHDmi0qVLq0GDBurTp49uvfXWnP2mTJmisWPHaseOHSpcuLAaNGigMWPGqE6dOjn7HDp0SJUrV9aePXtUvnx52793AN4jWADwiGEYatKkifr06aN7773Xltd48cUXderUKX344Ye2HB+A9bgVAsAjDodDH374obKzs217jTJlymjEiBG2HR+A9bhiAQAALMMVCwAAYBmCBQAAsAzBAgAAWIZgAQAALEOwAAAAliFYAAAAyxAsAACAZQgWAADAMgQLAABgmf8HZU3hrOasZKoAAAAASUVORK5CYII=", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "%matplotlib inline\n", "import matplotlib.pyplot as plt\n", "import numpy as np\n", "from pycalphad import calculate\n", "\n", "temp = 1300\n", "models = {'LIQUID': ViscosityModel} # we can also use Model class\n", "res = calculate(dbf, ['CU', 'AL'], 'LIQUID', P=101325, T=temp, model=models, output='viscosity')\n", "\n", "fig = plt.figure(figsize=(6,6))\n", "ax = fig.gca()\n", "ax.scatter(res.X.sel(component='CU'), 1000 * res.viscosity.values)\n", "ax.set_xlabel('X(CU)')\n", "ax.set_ylabel('Viscosity (mPa-s)')\n", "ax.set_xlim((0,1))\n", "ax.set_title('Viscosity at {}K'.format(temp));" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "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.6" } }, "nbformat": 4, "nbformat_minor": 4 }