{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "## Fusione dell'olivina: equilibri solido/liquido per le soluzioni (ideali)\n", "\n", "In questo notebook usiamo il programma *melt.py* per studiare il comportamento delle soluzioni solide (in questo caso, si tratta del comportamento alla fusione, ma i principi sono del tutto generali ed applicabili anche al caso transizioni solido/solido).\n", "\n", "Volendo trattare soluzioni solide ideali, si è scelto il sistema dell'olivina che presenta solo piccole deviazioni dall'idealità. \n", "\n", "Il programma legge un piccolo database (melt_db.dat; file che deve essere presente nello stesso folder del programma e di questo stesso notebook) che contiene i parametri termodinamici delle fasi pure *forsterite* e *fayalite*, nonché i parametri dei liquidi di composizione corrispondente alle fasi pure. Il programma legge il database con le stesse routine già viste per il programma *gibbs_tp* e relativa esercitazione.\n", "\n", "Lanciamo il programma." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "%run melt.py\n", "%matplotlib inline" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Possiamo esaminare i parametri nel database, per le varie fasi, usando il metodo info() per ciascuna fase. Ad esempio, per la forsterite:" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Mineral: forsterite\n", "\n", "K0: 125.00 GPa, Kp: 4.00, dK0/dT: -0.0187 GPa/K, V0: 4.3660 J/bar\n", "G0: -2053138.00 J/mol, S0: 95.10 J/mol K\n", "\n", "Cp coefficients and powers:\n", "+2.3330e+02 +0.0\n", "+1.4940e-03 +1.0\n", "-6.0380e+05 -2.0\n", "-1.8697e+03 -0.5\n", "\n", "Alpha coefficients and powers:\n", "+6.1300e-05 +0.0\n", "-6.1300e-04 -0.5\n" ] } ], "source": [ "fo.info()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Se facciamo lo stesso per il liquido di composizione Mg2SiO4 (*foL*), vediamo qualcosa di strano..." ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Mineral: fo_liquid\n", "\n", "K0: 73.00 GPa, Kp: 4.00, dK0/dT: -0.0109 GPa/K, V0: 4.2430 J/bar\n", "G0: -2061346.00 J/mol, S0: -55.00 J/mol K\n", "\n", "Cp coefficients and powers:\n", "+2.6790e+02 +0.0\n", "\n", "Alpha coefficients and powers:\n", "+1.4500e-04 +0.0\n", "-1.4500e-03 -0.5\n" ] } ], "source": [ "foL.info()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In particolare vediamo un valore di entropia *negativo* (cosa assurda dal punto di vista termodinamico) e, anche, il valore di *G0* (l'energia libera alle condizioni standard) è *minore* (in valore relativo: va considerato il segno e non solo il valore assoluto) del *G0* della forsterite. Questo vorrebbe dire che a T=298.15 K sarebbe stabile il liquido e non il solido! \n", "\n", "Questo perchè, come accade in molti casi, i parametri termodinamici della fase *foL* non sono termodinamicamente consistenti, anche se sono *internamente consistenti* (nello specifico database) con quelli della forsterite e descrivono correttamente la relazione tra le due fasi a patto di utilizzarli nell'intervallo di temperatura e pressione per cui sono stati calibrati (e questo intevallo non contiene evidentemente le condizioni standard P/T). Si parla in questi casi di *assessment*: i parametri *termodinamici* vengono ottimizzati per riprodurre gli equilibri di fase osservati sperimentalmente, senza porre attenzione al loro significato termodinamico intrinseco. Questa è una faccenda a cui porre sempre particolare attenzione: è in generale *pericoloso* spingersi col modeling termodinamico al di là dei limiti P/T, e anche X, per i quali i parametri del database sono stati calibrati.\n", "\n", "Diamo un'occhiata al comportamento dell'energia libera delle due fasi al variare della temperatura (tra 300 e 2500 K):" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "t_list=np.linspace(300,2500,20)\n", "g_foL_list=np.array([])\n", "g_fo_list=np.array([])\n", "\n", "for it in t_list:\n", " igL=foL.g_tp(it,0.)\n", " ig=fo.g_tp(it,0.)\n", " g_foL_list=np.append(g_foL_list,igL)\n", " g_fo_list=np.append(g_fo_list,ig)\n", "\n", "plt.figure()\n", "plt.plot(t_list,g_foL_list,label=\"liquido\")\n", "plt.plot(t_list,g_fo_list,label=\"solido\")\n", "plt.legend(frameon=False)\n", "plt.xlabel(\"T (K)\")\n", "plt.ylabel(\"G (J/mole)\")\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In effetti vediamo che l'anomalia per cui $G_{0}^{liq} < G_{0}^{sol}$ si ha solo per temperature vicino all'ambiente. per T più alte, l'energia libera del liquido è maggiore di quella del solido fino a circa 2200 K, dove si ha il *crossover* e il sistema fonde.\n", "\n", "Usiamo la funzione *fusion* per determinare la temperatura di fusione della forsterite. La funzione richiede i nomi delle due fasi solida e liquida e la pressione (in questo caso, P=0 GPa); il parametro opzionale *prt* produce la stampa del risultato." ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Temperatura di fusione: 2161.01 K\n" ] } ], "source": [ "fusion(\"fo\",\"foL\",0,prt=True)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Facciamo lo stesso per la fayalite." ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Temperatura di fusione: 1480.31 K\n" ] } ], "source": [ "fusion(\"fa\",\"faL\",0,prt=True)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "La funzione *fusion* lavora insieme alla funzione *deltaG*:\n", "\n", "```\n", "\n", "def deltaG(phase,phaseL,it,ip):\n", " gs=eval(phase+'.g_tp(it,ip)')\n", " gl=eval(phaseL+'.g_tp(it,ip)')\n", " dg=gl-gs\n", " return dg**2\n", " \n", "def fusion(phase,phaseL,ip,prt=False):\n", " t_ini=1800.\n", " tf=lambda it: deltaG(phase,phaseL,it,ip)\n", " t_fusion=scipy.optimize.minimize(tf,t_ini,tol=0.001)\n", " if prt:\n", " print(\"Temperatura di fusione: %5.2f K\" % t_fusion.x[0])\n", " else:\n", " return t_fusion\n", " \n", "```\n", "\n", "la funzione *deltaG* calcola il quadrato della differenza tra i valori di energia libera del solido e del liquido a una data temperatura (e pressione): restituisce dunque un valore sempre positivo che è pari a zero quando le due energie libere sono uguali (il che si verifica alla temperatura di fusione). La funzione *fusion* cerca la temperatura alla quale *deltaG* è minima (cioè zero) che è appunto la temperatura di fusione. La ricerca del minimo viene fatta usando la funzione *minimize* della libreria *scipy.optimize*, partendo da un guess iniziale di 1800K (*t_ini*).\n", "\n", "La funzione principale del programma del programma *melt.py* si chiama proprio *melt*. Questa determina il diagramma di stato *TX* che descrive l'equilibrio solido/liquido nel sistema dell'olivina. Il risultato di *melt* alla pressione ambiente è mostrato nella cella seguente:" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Temperatura di fusione della forsterite: 2161.01 K\n", "Temperatura di fusione della fayalite: 1480.31 K\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\n", " T (K) X(Mg)sol X(Fe)sol X(Mg)liq X(Fe)liq\n", " 1480.31 0.00 1.00 0.00 1.00 \n", " 1516.14 0.17 0.83 0.02 0.98 \n", " 1551.97 0.32 0.68 0.04 0.96 \n", " 1587.79 0.44 0.56 0.06 0.94 \n", " 1623.62 0.53 0.47 0.09 0.91 \n", " 1659.45 0.61 0.39 0.12 0.88 \n", " 1695.27 0.68 0.32 0.15 0.85 \n", " 1731.10 0.73 0.27 0.18 0.82 \n", " 1766.92 0.78 0.22 0.21 0.79 \n", " 1802.75 0.81 0.19 0.25 0.75 \n", " 1838.58 0.85 0.15 0.30 0.70 \n", " 1874.40 0.87 0.13 0.35 0.65 \n", " 1910.23 0.90 0.10 0.40 0.60 \n", " 1946.05 0.92 0.08 0.46 0.54 \n", " 1981.88 0.94 0.06 0.53 0.47 \n", " 2017.71 0.95 0.05 0.61 0.39 \n", " 2053.53 0.97 0.03 0.69 0.31 \n", " 2089.36 0.98 0.02 0.78 0.22 \n", " 2125.19 0.99 0.01 0.89 0.11 \n", " 2161.01 1.00 0.00 1.00 0.00 \n" ] } ], "source": [ "melt(nt=20)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "La funzione *melt*, chiamando la funzione *composition*) ricerca inizialmente le temperature di fusione dei termini puri *fo* e *fa*. Imposta poi il calcolo tra queste due temperature, tra le quali le due fasi solida e liquida coesistono certamente. Quindi, per ogni valore di temperatura, ricerca preliminarmente il punto di intersezione ($x_{int}$) tra le curve $\\mu$ del solido e del liquido\n", "\n", "$$\\mu_s=x_{fo}\\mu_{fo}^{0}+x_{fa}\\mu_{fa}^{0}+RT\\left[x_{fo}log(x_{fo})+x_{fa}log(x_{fa})\\right]$$\n", "\n", "$$\\mu_L=x_{foL}\\mu_{foL}^{0}+x_{faL}\\mu_{faL}^{0}+RT\\left[x_{foL}log(x_{foL})+x_{faL}log(x_{faL})\\right]$$\n", "\n", "con $x_{fa}=1-x_{fo}$ e $x_{faL}=1-x_{foL}$. A partire dalla composizione trovata, viene minimizzata l'energia libera della miscela eterogenea delle due fasi solida e liquida, ciascuna con la propria composizione ($x_s$ e $x_L$).\n", "\n", "$$G(q_s,q_L,x_s,x_L)=q_s\\mu_s(x_s)+q_L\\mu_L(x_L)$$\n", "\n", "dove $q_s$ e $q_L$ sono le quantità (in moli) delle fasi solida e liquida. In questa ricerca del minimo si impone che\n", "\n", "- il numero di moli totali $q_s+q_L$ sia fisso (e pari ad 1);\n", "- il numero di moli totali del componente *fo* sia fisso al valore $x_{int}$: $\\ \\ q_sx_{fo}+q_Lx_{foL}=x_{int}$\n", "\n", "A una pressione diversa (per esempio 5 GPa), chiamiamo la funzione *melt* passandogli il valore di pressione (il default è 0.):" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Temperatura di fusione della forsterite: 2497.40 K\n", "Temperatura di fusione della fayalite: 1836.95 K\n" ] }, { "data": { "image/png": "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qChee+21TOt8//33VK5cmX//+98AHD58mEaNGjFr1izq1q1Lr169GDduHEOGDEl3/SVLljBp0iSWLVtGYmIiTZs2pVmzZgD06tWLN954g9atW/Pcc88xYsSILOMxxpjcYi2TIGrcuDEzZ87kiSeeYO7cuWzbto2aNWtSt25dAHr37s2cOXMyXH/u3LncdtttlChRgksuuYRbb70VcEnp0KFDtG7dOlvbMcaY3FYgWyah+sVet25dlixZwrRp03jqqaeIjY294G2ISAAiM8YY/1jLJIh2795NiRIluOuuuxg6dCjz5s1j27ZtbNq0CYAPP/wwpXWRnuuvv56vvvqKkydPcvToUb755hsASpcuTdmyZZk7d262tmOMMWkdO5bo1/oFsmUSKqtWrWLYsGEUKlSIwoULM27cOA4fPsztt99OYmIizZs3p3///hmu37RpU7p3705UVBTVq1fnuuuuS1n2/vvv079/f06cOEGtWrWYMGFCMN6SMSYf+v13WL489bF4cQIbNvjX6xGW94CPjo5WuzmWMaagU4Vt21zCWLYsNXns2JFap1y5Uxw5MgdYTkLCE0tUNTon+7KWiTHGhIEzZ2Dt2nMTx4oVcPiwW16oENSvD9ddB1FR0LjxWb7/fiRjxgynUaNGfPbZZzRo8ESO92/JxBhj8plDh1yiSG5pLFvmEklCglteogRcdRX06OESR1QUNGrkygF27tzJnXfeyU8//cT999/PmDFjKJG8MIcsmRhjTB6lCjt3nttFtXw5bN2aWueyy6BJE+jYMTVx1K4NF12U/ja/++477r77bk6dOsVHH31Ez549cyVWSybGGJMHJCTAhg3nJ44DB9xyEahTB5o3hwcecAkkKgouvzx7209MTOTZZ59l5MiRNG7cmM8++4x69erlWvyWTIwxJsiOHoWVK88d31i9GpJnUypWDBo3hq5dXcJo0sS9LlkyZ/vbsWMHd955J//73//o27cvr732GsWLF8+9N4QlE2OMCRhV2LPn3JbGsmXgXVoGQLlyLlk89FBqN1W9ehCRS9/O06ZNo1evXpw+fZpPPvmEO++8M3c2nIYlkyAqWbIkx44dY/fu3QwePJjPP/88R9t56623KFGiBL169TqnfNu2bdx8882sXr06N8I1xlyAs2dh48ZzE8fy5bB3b2qdWrVc4ujdOzVxXHGF68LKbQkJ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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\n", " T (K) X(Mg)sol X(Fe)sol X(Mg)liq X(Fe)liq\n", " 1836.95 0.00 1.00 0.00 1.00 \n", " 1910.33 0.23 0.77 0.05 0.95 \n", " 1983.72 0.41 0.59 0.11 0.89 \n", " 2057.10 0.55 0.45 0.19 0.81 \n", " 2130.48 0.66 0.34 0.27 0.73 \n", " 2203.87 0.75 0.25 0.37 0.63 \n", " 2277.25 0.83 0.17 0.49 0.51 \n", " 2350.64 0.89 0.11 0.63 0.37 \n", " 2424.02 0.95 0.05 0.80 0.20 \n", " 2497.40 1.00 0.00 1.00 0.00 \n" ] } ], "source": [ "melt(5)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "La funzione *composition* può essere utilizzata da sola, per calcolare ad una certa temperatura, pressione e composizione *globale* di un componente (*fo*), le composizioni delle fasi solida e liquida all'equilibrio e la loro abbondanza relativa (in moli). A T=2500 K e P=5 GPa, per una $x_{fo}$=0.50 (*globale*: portiamo in fusione una fase 50\\%*fo* - 50\\%*fa*), abbiamo " ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Pressione 5.0 GPa, Temperatura 2100.0 K\n", "\n", "Per una composizione X(Mg) globale pari a 0.50: \n", "X(Mg) fase solida 0.62, quantità fase solida 0.69\n", "X(Mg) fase liquida 0.23, quantità fase liquida 0.31\n" ] } ], "source": [ "composition(2100,5,xval=0.5)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Vogliamo ora sfruttare la funzione *g_phase* per visualizzare le curve di energia libera delle fasi liquida e solida, data una certa temperatura e pressione. Nel caso la temperatura ricada nell'intervallo di coesistenza del solido e del liquido, viene tracciato anche il segmento che rappresenta l'energia libera della miscela eterogenea solido + liquido.\n", "\n", "Il primo argomento di *g_phase* è la temperatura; il secondo è la pressione:" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXMAAAEGCAYAAACXVXXgAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjMsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+AADFEAAAgAElEQVR4nO3dd1QUZxfA4d8LKIrYItiCXbEgitg7CvYWk9hLjEbFGmsSP02MMSYae++xG42x94KCSrChWCOKioKxK1hApcz3xxJ7QWCZZbnPOZzDMmUv4+z1ZebOfZWmaQghhEjZLPQOQAghROJJMhdCCDMgyVwIIcyAJHMhhDADksyFEMIMWBljp3Z2dlr+/PmNsWshhDBb/v7+tzVNs0/ItkZJ5vnz5+fIkSPG2LUQQpgtpdTlhG4rl1mEEMIMSDIXQggzIMlcCCHMgCRzIYQwA0ZJ5oE3HuD1zw1j7FoIIcQbGCWZW6DosugIQ9ac5NGTaGO8hRBCiBcYJZkXzm5L95oFWXH4Cg2n7MP/8j1jvI0QQog4RknmSsGQBsVZ0bUS0TEaLWb9zfgdgUTFxBrj7YQQItUzzg3QiNsQ/YSKBbOxrV91PnV1YOruIJrP8CXo5gOjvKUQQn+jRo3CycmJUqVK4eLiwsGDB9+6rpub27OHCxs2bEhYWNhr6/z444+MGzfOaPGaE+Mk87AQmOMGV4+SMV0axrUozaz2Zfk37DGNpuxn3r6LxMTKpBhCmBM/Pz82bdrE0aNHOXHiBLt27SJPnjzx2nbLli1kyZLFyBGaN+Mk848KQeQ9mOcBXj9B9BPql8zJtn7VqV7Ejp83/0Or2X5cuv3IKG8vhEh+165dw87ODmtrawDs7OzInTs3Xl5elClTBmdnZzp37syTJ09e2zZ//vzcvn0bMIzuixYtioeHB4GBgc/WCQgIoFKlSpQqVYrmzZtz757ci3uRMsa0ceXKldOO7NsF24dCwFKwLwbNZoBDWTRNY+2xq/y44TRPY2L5pl4xOlXJj4WFSvI4hEitRmw8zZl/7yfpPkvkzsTwJk5vXf7w4UOqVatGREQEHh4etGrViooVK1KkSBG8vLxwdHSkY8eOuLq60q9fP9zc3Bg3bhzlypV71s/p8uXLdOrUiYMHDxIdHY2rqyuenp4MGjSIUqVKMXXqVGrWrMkPP/zA/fv3mTRpUpL+jnpTSvlrmlYuIdsa76Gh9Fngk+nQ7i948gDme8DOH1DRT/jU1YGdA2pSuWA2ftp0htZzD3D5jozShUjJbG1t8ff3Z86cOdjb29OqVStmz55NgQIFcHR0BOCLL75g7969b93Hvn37aN68OTY2NmTKlImmTZsCEB4eTlhYGDVr1ozXflIjo3RNfEmROtDTD3YMA9/JELgVmk4lR95K/N6pPH/5h/LTxjPUn7SP7xoUo0OlfDJKFyKR3jWCNiZLS0vc3Nxwc3PD2dmZRYsWffA+lJLPf0Ikz+P86TJD06nQfg1EPYbf68GmAagn92lRLg87BtSgQoGPGL7hNK3nHiBYrqULkeIEBgZy/vz5Z68DAgLIkSMHwcHBBAUFAbBkyZJno+s3qVGjBmvXriUyMpIHDx6wceNGADJnzkzWrFnZt29fvPaTGhl/ZP6iwu6GUfqeX+DgTAjcAo3Gk6tYIxZ+WZ5VR0IZufkM9SfvZXDctXRLGaULkSI8fPiQPn36EBYWhpWVFYULF2bOnDm0adOGFi1aEB0dTfny5fH09HzrPlxdXWnVqhUuLi7ky5eP6tWrP1u2aNEiPD09iYiIoGDBgixYsCA5fq0Uw3g3QN83OUWoP2zoAzdPQ4lm0OA3yJiT6+GP+d/ak+w+e5Oy+bLy2+elKGRvm+QxCiGEqTHNG6Dv41AWuvtA7e8hcBtMqwD+C8mZMS3zvyjHhJalCbr5kIaT9zFn7wWpSxdCiHfQtwWuZRqoMQh6/A05nWHj17CwEer2OUPFS/8a1HC055ctZ/ls5t+cuyFPjwohxJuYRj9zu8LwxUbDTdKbZ2BmVdg9iuzpYU6Hskxu7cLlO49oPGU/U73OS48XIYR4hWkkcwALC3DtCL2PgNMnsPc3mFUVFbyPZi4fs3NATeo65WD8znM0nebLqavhekcshBAmw3SS+X9s7eGzeYYyxthoWNQE1vXEzuIR09q6MrtDWW4/fEKz6b78tu0sj6Ni9I5YCCF0Z3rJ/D+F3aGHH1TrDydWwrRyELCceiVysKt/TT4t8zEzvC/QaMo+/C/f1TtaIYTQlekmc4C0NuDxI3Tfa2jeta4HLGpC5ohgxrYozeLOFXgcFcvns/z4ccNpmdVICJ3Z2r5eRjxr1iwWL16c4H1Ke9z4Me1k/p8cTtB5OzSeCNdPwMwqsOcXahTIyPb+NehYKR+L/IKpO3Eve8/d0jtaIcQLPD096dixY4K3l/a48ZMykjkYbpCW62y4QVqiGfiMgZlVsL26nxHNSrKqe2Ws01jQ8fdDDFp1nPCIKL0jFkLw8gja39+f0qVLU7lyZQYPHkzJkiUBWLhwIb179362TePGjfH29gakPW58Je/j/EnBNrvhBqlLW9g0ABY3g1KtKFf3Z7b0rc7U3eeZ5XMRn3O3GNnMifolc+kdsRDJb+t3cP1k0u4zpzM0GJ2oXXz55ZfP2tgOHjz4g7b19/dnxYoVHDt27Fl73LJlywLQsWPHl9rjjhgxwuza475PyhmZv6pQbUOflxqD4dQamFaOdMcXMbiOIxt6VyV7Rms8lx7Fc4k/N+8/1jtaIVK9V9vYdujQ4YO2l/a475byRuYvSpMeag8D55aweQBs6g/HluHUeCLre1Vl7r5LTNp1Do8JtxnaqDgty+WR9poidUjkCNoYNE176+fPysqK2NjnDwM+fvzmAZh8ft8u5Y7MX2TvaHiCtPkcuBcMc2pitXMYPSpnZ1u/GhTPlYlvV5+k3byDMgmGEDrJkiULmTNnZv/+/QAsW7bs2bL8+fMTEBBAbGwsISEhHDp06LXtpT3uu6XskfmLlILSrcCxLuwaAQemw+m1FGgwmj++asKKI6H8uuUf6k3ay4A6jnSuWgArS/P4v0wIUxEREYGDg8Oz1wMGDHhp+YIFC+jcuTM2NjbUq1fv2c+rVq1KgQIFcHZ2pmTJkri6ur62b2mP+276tcA1tpBDhssuN05B4TrQcCzXLXMxbN0pdv1zA+ePMzP6M2eccmfWN04hUqng4GAaN27MqVOn9A7FZKTMFrjGlqcCdPOBer/AFT+YUYmcAVOZ27Yk09u6ci08kqbTpCWAEMI8mO/I/EXhV2H7/+DMOshWBBqNJyxnZUZt/odV/qEUsMvAr586U6lgNr0jFUKkYjIyf5/MH0PLRdButaF51+KmZNnak7H1c7K0S0ViYjVazznAkDUnCI+Uh42EEClP6kjm/yniYahNr/kdnFkP08pR7e5qtvetQvcaBVl5OIQ6E3zYduqa3pEKIcQHSV3JHAy16bWGQM8D4FAOtn5D+oUeDCn1iPW9qmFna3jYqPuSI9yQh42EEClE6kvm/8lWyNAzvcVCeHQL5nngfOwH1ncuzncNiuEdeAuP8T4sPXCZWJl/VAhh4lJvMgdDbbpTc+h9GCr3gqNLSDOjPJ4Z/2b719VwdsjMsHWnaDXHj6CbD/WOVgiTN2rUKJycnChVqhQuLi4cPHjwreu6ubnxX6GEMdvcent707hxYwA2bNjA6NEJfzr2q6++4syZM6/9/NVGYXown4eGEsM6I9QbBaXbwOaBsKE3+fMsYVnjcfx19WN+3vwPDSfvo1etwvRwK0Raq9T9f6AQb+Ln58emTZs4evQo1tbW3L59m6dPn8Zr2y1btiRJDPnz5yc4OPity5s2bfqsp0tCzJs3L8HbGptkpRflLAlfboVmM+BOEGpOTVrcmo5XrzLUK5mTibvOycxGQrzFtWvXsLOzw9raGgA7Ozty586Nl5cXZcqUwdnZmc6dO/PkyZPXtk2uNrcvjqAvXbpE5cqVKV++PN9///2ziTVeHMkD9O7dm4ULFwIv/zWxYMECHB0dqVmzJr6+vs/Wv3z5Mu7u7pQqVQp3d3euXLnywXEmhCTzV1lYQJl2hr7pZTvBwVnYLazKVKcgfv+iLBFPY/h8lh/D1p3k/mMpYxSmy83N7bWvGTNmAIbH7t+0/L+kdfv27deWvU/dunUJCQnB0dGRnj174uPjw+PHj+nUqRMrV67k5MmTREdHM3PmzLfu48U2t2vWrOHw4cPPlnXs2JExY8Zw4sQJnJ2dGTFiRKKOz9dff02PHj04fPgwOXPm/KBtr127xvDhw/H19WXnzp0vXXrp3bs3HTt25MSJE7Rr146+ffsmKs74kmT+NjYfGWY26uoFmXLDmq+offArdnbIzpdVCrD84JW4MsbrekcqhEmwtbXF39+fOXPmYG9vT6tWrZg9ezYFChTA0dEReH972oS0uR01ahQuLi64uLjw77//Pvu+V69e74zX19eXNm3aAB/ejvfgwYO4ublhb29P2rRpadWq1bNlfn5+tG3b9tl+/2ssZmxyzfx9Pi4LX3nB0UWwawQ282vyQ+VeNO/ancEbLuC51J96TjkY0bQkOTOn0ztaIZ75b6aeN7GxsXnncjs7u3cufxtLS8tnI3lnZ2cWLVr0wfv40Da3Q4cOZejQocDz7ouJea+kbsebXG17ZWQeHxaWhinr+vhD6dbgOxnntR5scr/Nt/WK4h14izoTfFgiZYwiFQsMDOT8+fPPXgcEBJAjRw6Cg4MJCgoC3t+eNjnb3FatWpUVK1YAL7fjzZcvH2fOnOHJkyeEh4fj5eX12rYVK1bE29ubO3fuEBUVxapVq54tq1Klykv7rVatWqLijC8ZmX+IDHbQbDq4fgGbB2C1+kt6FKxFky9G8K1PJN+vO8W6Y1f59VNnHHNk1DtaIZLVw4cP6dOnD2FhYVhZWVG4cGHmzJlDmzZtaNGiBdHR0ZQvXx5PT8+37iM529xOnjyZtm3bMnnyZD777LNnP8+TJw8tW7akVKlSFClShDJlyry2ba5cufjxxx+pXLkyuXLlwtXVlZgYQ8O+KVOm0LlzZ8aOHYu9vX2yteNNHY22jCE2Bg7Ph90/Q1QEWpU+rM/YhhHbg3n4JBrPmoXoVasw6dJY6h2pECIebG1tefhQ3+dJpNGWHiwsoWI36HMEnFug9k/gE9/m7G38gCbOuZi6O4gGk/fhd+GO3pEKIVIBSeaJZZsdms+EL7dB+ixk3NCZCVEjWdUiOzGxGm3mHmDwquOERcTv4QkhhD70HpUnliTzpJKvsmEyjPpjIPQw5bc0xMtlL32r52bNsau4j/dhfcBVjHFZSwghJJknJUsrqORpeODI6VPS/D2BAec64N3oAQ5Z0/P1igA6/n6IK3ci9I5UCGFmJJkbQ8Yc8OlsQ2sA60zk2dmNdZknMNE9A8euhFF3kg8zvS8QFRP7/n0JIUQ8SDI3pnxVoPteqD8aFXqY5gdacKDCfuoUtmXMtrM0mbqfgJDXO8UJIcSHkmRubJZWUKmH4dJLyc+wPTyFqXc8WVfrNmGPntJ8hi/D15/igfR5EUIkgiTz5JIxBzSfBZ23Q/qsuPj1Zf/HUxlQRrH4wGU84qarkxukQoiEkGSe3PJWgm7e0GAsVteO0edsRw6U20tum1g8lx6l62J//g2L1DtKIUQKI8lcD5ZWcQ8c+UOpVuQ4OYs1MV8zz/Uy+4Nu4jHBh/n7LxEjfV6EEPEkyVxPtvbwyXToshNla4/HmSEczD2ZahZnGLnpDJ9M9+VkaLjeUQohUgBJ5qYgTwXougcaTWDOxkMsGDkQ9+PDuHs9lGbT9/PTxjM8ehKtd5RCCBMmydxEjDswkXFR9/hy5kG+9HBiwbYALk5tT6NbS5m//wJ1Jviw88wNvcMUQpgoSeYmYtO5TWw6twm7fI7M2X6Kg5sWkTdbBqbNX0G9Az0onSaErouP4LnEn+vhb26WL4RIvSSZm6jyjTrid/4O877vQtdSGjMe9WdZjhUcPnESjwk+LPSVG6RCiOckmZswCysruvw0j/K/nUZV6MbiZX8SMrMLFc7PYMSGEzSf4cupq3KDVAghyTxlSJ8FGozB89elFM6ZiQV/bMB+ZXtiT2+i6bT9jNwkN0iFSO0kmZuI9GnSkz5N+neuU6ZOC/YH3mbRz724cjeSLbPG0C54BBt8A/CY4MOO09eTKVohhKmRaeNSqPCbofzUswVf5z3Lx9kyMOlJU2Y89qB2ybyMaOpE7izv/o9BCGF6ZNq4VChzdgfG/+VH3v8dwiJPebYtm0OmPzpw1XsRHhN8mLfvItHSYleIVEOSuYkY6TOSkT4jP3xDuyLQfjWdew7gxv2nbF0wjcJbuzF71WaaTvPluLTYFSJVkGRuIrwueeF1yStB2yoLC9oM/I3AS1cZ3KoGW4+GEDT3a5xOjqfljD38sP4U96XFrhBmTZK5Gcn4UXZ+W+HDib930cA1Hz/Y78Yv4/+4sn8FHuO82XxCWuwKYa4kmZuh4hXdWe57iYxfrcfWJgOHFv6K3eoOjJq7nC8XHibkrsxBKoS5kWRuzgrVIrbrHj5p6MGukzc4NWcQkSt60mzcJmZ4B/E0Wm6QCmEuJJmbiGw22chmky3J95suQ0Z+WbSdU4d8qeqUhz93+BM5vz1H/ppI4yl7ORx8N8nfUwiR/KTOPBXRNI0Nv49n0bQxrGryhFOWxfnuUTtKVXDjuwbFyJohrd4hCpGqSZ25iBelFM26DGKN/w0sP5mGg3aDs3P7cWVmW5qPWcNf/qFyg1SIFEqSuYkYsmsIQ3YNSZ43s7AA14486bAV56KFWLH7NP/O6MDa8X1oO9uXoJsPkicOIUSSkWRuIvxC/fAL9UvW98xdqDgbDpxn09KZxFqmZfkf67g3pRHDJkxn3PZAHkfFJGs8QoiEk2QuaNTOk1PBt/m5bzuyplOsSPcrxfb3pd24v/A5d0vv8IQQ8SDJXACQLn16hk5eynK/q+A2hMIPDnN2YjuW/NCOfkv9uHFfZjcSwpRJMhcvUdYZwO07HjRdREyaDMxfuZMzIz34dtgQFu6/KLMbCWGiJJmbCIdMDjhkctA7jGfK127CiUu3GPNNd/4OfsyKGZP4+3s3+k5ezolQad4lhKmROnPxXqGXgxnctQXZH51lfB0rFkfX5UaZfvRqVI5M6dLoHZ4QZkPqzIVROeTLzx87DjNx20ViXTpQIHQzu7+rxfDverIhIERq04UwAZLMTUS/bf3ot62f3mG8k0VGe9J+MoVr5YdyKDSaGdPmsal3OYZNnMWl24/0Dk+IVE2SuYkIuB5AwPUAvcOIl7a9hhB4MYSWDWow1/cmS0b0Yl6vGszdtE9q04XQiSRzkSA5c+ViyUYf9u3eQRa77NjdP0u7w5+x9Lc+7PsnVO/whEh1JJmLRKlWqw5HA0Pps/g4EXndSOe/gGVdnJkyeQw3wiP1Dk+IVEOSuUg0KysrrOwLY9flTwKyNWO2Xxhjvh/CrM4urNm2QyaWFiIZSDI3EY7ZHHHM5qh3GIk2bu4KDvjuxz6XAz+uOcdkz4bMGtiUk0GX9Q5NCLMmydxEzGkyhzlN5ugdRpKoWKUq/mcuMXPyOE7ctsLhhjcfL6nC+rkjCX8obQGEMAZJ5sIoLC0t8ew7kMv/3qTO6H3cz1iES6tHMauDI9471kptuhBJTJK5iei2sRvdNnbTO4wklylTJjLkK0Pe/l78ebMg360LYdhXLVj0dU0uBf2jd3hCmA1J5ibi3J1znLtzTu8wjMbC0pL9R04xb/ZMzoRZ02XaPsa0LcPWST2JeHRf7/CESPEkmYtkY2FhQZdunly4HEqXTh34/WgUuc8u5sFYF05smw9y6UWIBJNkLpJd1qxZmfP7Yi6HhJKm01/ct8jMxt96sbp3aa6fPaB3eEKkSJLMhW5y5cpFiUr1yey5nYnHrGkx4yTft6uB77iWPA27rnd4QqQoksxNhEtOF1xyuugdhi6yZ8/OxcshdOvend8Domn6w1/MbF+UC2tHQfRTvcMTIkWQfubCpJw+fZqOHTty9vRxLvROj0XWvKRtPJospRqDUnqHJ4RRST9zYTacnJw4cuQIB/xP4ld+Mg+exDBzQAsCfvUg5sZZvcMTwmRJMjcR7de0p/2a9nqHYRKUUjg7Fad5q878U2M23/tE4fbTHqZ0cuXaiq8h8p7eIQphciSZm4jQ+6GE3pfWsa9q7FGTU6dOU6h0JQZsi6Te19PY3rsoEb6zISZa7/CEMBmSzIXJK1asGEcO+LL0j5Vcjc1Gp9XhpNk2mLBJlYi94K13eEKYBEnmIkVQStGudUtCLgcza7U3kz4axq07d5ndtwF357eAu5f0DlEIXUkyFymKjY0NzdwrM/DrwUyz7k3PLY+p8t1advZ34em27+HJA71DFEIXksxNRGWHylR2qKx3GCmGhYVi8vABLP9zNTctslN38X06DBpN0PCSaEeXQKxMiCFSF6kzFyleZGQkA4b9xNwp4ymbJx0HOyoe25ciXePfIJ/8BylSDqPVmSulmimler3w+qBS6mLc1+cJeUMhklr69OmZOf5Xzp49S/OfV/MdfQi6dJntQz2IXtkJwkL0DlEIo7N6z/JvgNYvvLYGygMZgAXAX0aKK9X57M/PAFjdcrXOkaRchQsV5LtCBbn1oAZN2l3m4MalNPX/gwkHN1Ko8QCo1g/SZtA7TCGM4n3XzNNqmvbisGa/pml3NE27giGhiyRyJ+IOdyLu6B2GWbDPaI3Pqnn0GDSMzRcUJaaGMXLkSB6OKwPHV8r1dGGW3pfMs774QtO03i+8tE/6cIRIGtbW1swYO5LAwLM4V6vPD95P6L7+HqztRuw8Dwg5rHeIQiSp9yXzg0qprq/+UCnVHThknJCESDqFCuTnyJ7NrFi3iTTtFjLwqSeHTwVyYWxtWN0Vwq/qHaIQSeJ918z7A+uUUm2Bo3E/K4vh2vknxgxMiKTUqlkjWgH7zlegSTNv7p07wjfHlzHk+AZsa/eHKn0hrY3eYQqRYO8cmWuadlPTtCrASCA47usnTdMqa5p2w/jhpR7uBdxxL+Cudxhmr3oRew5u+wsXt0b8sjeSQlPus3bmT8ROcYUTq2TqOpFiSZ25SLVWbdxO9569uBd6gZ+b5mVomTBwKA/1R4NDgkp9hUiUxNSZSzIXqVpUVBSDf57AYcsSVH6yj5YPllHC9gG25VqD+3DI/LHeIYpURJK5GWiwrAEAW9tt1TmS1OlxVAzTvc4xtJ0HNtFhTK9nSatSNlhU6yfX00WykZmGzEBkVCSRUZF6h5FqpUtjycD6xVm+dDEqSx7arnpA+QXRnFn1M0wrByf+lPp0YdIkmQvxgk8buHPjwil6DxvNiWtPKTkrkvVBwJquML+O1KcLkyXJXIhXWFlZMXXkt1wMOk+9Dn0YnHk0Q7WenDwbhDbPHVZ/BeEyK5QwLZLMhXiLPLlzsHXhJLYPdCcoW21cZtyl+OIMBOxeA1PLwe5R8OSh3mEKAUgyNxmNHRvT2LGx3mGINyhgl4HlvWrT57vhXLgZQZmZ4bTZYUvYjjGG6+kBy+V6utCdVLMI8QFCr9+kZdd++G1eSTqbDPh/U4wSsYGQy8VQny7900UiSDWLEMnEIWd2/t64nPW79lKkdksaRXzPGJuBhIRehQX14c+OcC9Y7zBFKiTJ3ES4LXTDbaGb3mGIeGpauyrH189lRrty/HEtD/l+vUIjr3zcCdgO08rDzuHw+L7eYYpURJK5EAmklKKBcy62DGlClcat2eJ7mlyTIhgVWJDY/RNhqiscWQCxMXqHKlIBSeZCJFLu7HbsX7eYTbt9yZqnCMOWHeLjRdkJS58XNvWDWdXhorfeYQozJ8lciCTSyK0S1/45wuDR00lbrBYuoQNY6DCCsLAwWNwMlreG2+f1DlOYKUnmQiQhCwsLfvu2J/9smElPt8IM3f0Iu5FX+OZSFaIv7oMZlWDrtxBxV+9QhZmRZG4iWjq1pKVTS73DEEnEJq0V39QvxsLe9bHPX5yxi7dhP9OaTTHV4dAcmFIG/GZA9FO9QxVmQurMhTCy2NhYvp84n3Ejh/I0/BZV6zRidxsL0l72gY8KQd2foWgDUErvUIXOpM7cDERERRARFaF3GMIILCwsGDWwK1cvBVG7VTfOWxXCNbgnW50nERWrYEUbWNwUrp3QO1SRgkkyNxENlzWk4bKGeochjMguaya8VszmwOJfKJf/I9rPO8ZHY+6xIl17uH4SZteA9b3gwXW9QxUpkCRzIZJZAbsMLOhUnv5NKxL1OII2Q2ZQYn1hzudvC8dXwhRX8BkLT+UvNRF/ksyF0IFSimE92vFv8HnqtO/F2UN7KdZ9IZ5hXYgtVBv2xE2KcXylNPES8SLJXAgdfZQ5IzuWTGPvwWOk6ZaW361WUufqVxz3WA4Z7GFtN5hXGy7/rXeowsRJMhfCBFQr60Slsi6UyJ+b6FiNZpugp8047tadAg9uwIIGsLID3L2od6jCRFnpHYAw6OTSSe8QhM7+OwdaO9Vg3r6LTNsTRJVz2elXYyVdLDeTxm8KBG6Fit2hxmBIn0XfgIVJkTpzIUzU1bBIft50hq2nrpMvmw2jPLJR7cpsOLYM0mcFtyFQ7kuwTKN3qCKJSJ25GbgdcZvbEbf1DkPo6NVz4OMs6ZnZvixLulTA0kLRfmUIXe514t/W2yGHE2wdDDMqG0brRhiUiZRFRuYm4r9e5t6dvHWNQ+jnXefA0+hYFvheYorXeaJiNbpXL0BvhwtY7x4Od85D/upQbxTkKp28QYskJSNzIcxcWisLutcshNdANxqUzMnUPReovTE922qsQWvwG9w4DbNrwrpecP+a3uEKHUgyFyIFyZk5HZNbl2Flt0pkTGeF5x8n6XDShYtt90GV3nDyT8OkGHt+haeP9A5XJCNJ5kKkQBULZmNTn2r82KQEx0PDqDvzBL9Et+Nh17+hSF3wGW14kvToEpnpKJWQZC5ECmVlaUGnqgXYM8iNz1wdmLP3IrXmX2ZtkVFonbdDljywobfh8suFPXqHK4xM6sxNRI9yPfQOQegsoeeAna01Yz4vRZuKeRm+/v6OETAAABQqSURBVBT9Vx5nef6s/NjkL5zuecGuH2HJJ4YRe52RkL1Y0gYuTIJUswhhRmJjNVb5hzBmWyBhEU9pWzEvg2rnI8vJhbB3HDx9CGW/ALf/ga293uGKVySmmkWSuYkICQ8BIE/mPDpHIvSSlOdAeEQUE3edY7FfMJnSp2FQ3aK0KZkBy72/wZH5YJUeqveHSj0hTfpEv59IGpLMzYDUmQtjnANnr99n+PrTHLx0F6fcmRjR1Ilytndg53AI3AyZHMD9B3BuARZyC01vUmcuhHijYjkzsaJbJaa2KcPdR0/5fJYf/b0ecbPR79BpM2SwM3RmnFsLgvfrHa5IBEnmQpg5pRRNSufGa2BNetUqxOYT16g1zpvZl3PxtLMXfDoXHt2GhY3gjzZw+7zeIYsEkGQuRCphk9aKwfWKsaN/DSoVzMavW89Sf8p+fNLVgj5HwH04XNoH0yvC5kGGBC9SDEnmQqQy+e0yML9TeRZ0Kk9srMYXvx+i6x+nuVLCE/oeg3Kd4cjvMNkF9k2AqEi9QxbxIDdATcTGwI0ANCnaROdIhF70OAeeRMfw+/5gpu4+T3SshmeNgvRwK0z68AuG+vRnN0m/B+eWcpPUyKSaRQiRKNfDH/Pr1n9YH/AvuTOn43+NitPIORfqsi9sHwrXAgwdGeuMhII19Q7XbEk1ixkIvB1I4O1AvcMQOtLzHPivgdcqz8pksUlL7+XHaDP3AGfTlYKueww3SSPuwuKmsKwl3DyrS5zi7WRkbiKkzlyYyjkQE6ux4vAVxm0PJDwyig6V8tG/jiNZ0sTCwVmwb7zhSVLXjoYnSTPm0DVecyIjcyFEkrG0ULSrmI89g9xoXykfSw5cptY4b5YdvUFMla+hbwBU6AbHlsKUMuA9RtrtmgBJ5kKIN8pik5afmpVkc9/qOObIyNC1p2gydT+HbyloMAZ6HYLC7uD9i6Hdrv8iaberI0nmQoh3Kp7L8BTptLZlCIt4SotZfvT94xjXrHJDqyXQeQdkyQsb+8KsanB+p8xJqgNJ5kKI91JK0bhUbrwGutHXvQjbT1+n9jgfpu8J4nGuctBlB7RYZKhJX/Y5LG4G147rHXaqIjdATcSui7sA8CjooXMkQi8p6RwIuRvBL1v+Yeup6+T9yIZhjYpTp0QOVEyU4YEjnzEQeQ9KtYLawwwTZYj3kjpzIYQufINuM2Ljac7deEj1Inb80LgERXJkhMgw2D8RDsw0rFjJE6oNgPRZ9A3YxEkyNwMB1wMAcMnponMkQi8p9RyIjoll6YHLTNh5jkdPY+hYOR/9PBzJnD4NhIXAnlFwfIUhkdf4Bsp3AStrvcM2SZLMzYCp1BgL/aT0c+DOwyeM33mOPw5dIatNWgbVLUqr8nmwtFBw7QTs/AEu7oEs+Qw91J0+lfYAr5A6cyGE7rLZWvNLc2c29q5GIfsM/G/tSZpO28/h4LuQqxR0XAft14B1RljdBebVNnRpFElCkrkQIkmV/Dgzf3avzJS4CTFazPKjzx/H+Dcs0lCX3n0vfDILHt6ERY3j2gP8o3fYKZ4kcyFEklNK0TRuQoy+tQuz4/R1ao/3ZvKu8zyOAVzaQB9/8BgBVw7AzCqwvjfc/1fv0FMsSeZCCKOxSWvFgLpF2TWgJu7FcjBx1zncx/uw5eQ1NKt0UK0ffB0AFXsYbpJOcQWvkfD4vt6hpzhyA9RE/B3yNwBV8lTRORKhl9RwDvhduMOIjac5e/0BlQp+xA+NnSiRO5Nh4d1LsPtnOPUX2GQzVL6U6wxWafUNOhlJNYsQIsWIjollxeEQxu8wdGVsUyEvA+o4ks02rlzx6lFD5UvwPsia31D5UqJ5qqh8kWRuBlLDqEy8W2o7B8IjopjkdY7FfpfJkNaSfh6OdKicjzSWFobeLkG7YOdwuHkacpeBOj9BgRp6h21UkszNQEqvMRaJl1rPgfM3HvDTpjPsO3+bQvYZ+KGJEzUd7Q0LY2PgxErYPQruh0LhOlBnBORw0jdoI5E6cyFEilUkR0YWd67A/C/KERM3wXSXhYe5eOshWFiCS1voc8QwMg89BDOrwtoehqdLxTOSzIUQulNK4V48B9v712BIg2IcvHSXepP28vOmM4RHRkGa9FA1bmKMKn3g1GqYWhZ2DDNMZyckmQshTIe1lSXdaxZizyA3PnN1YL7vJcMsRwcvExOrgc1HUHekoUbd+XP4expMdjE09YqK1Dt8XUkyF0KYHPuM1oz+rBQbe1ejsL0tQ9eeovHU/fhduGNYIUse+GQG9PCFfJVh14+GGvWjiyEmWtfY9SI3QE1ESu2YJ5KOnANvpmkaW05e55ct/3A1LJL6Tjn5X8Pi5M1m83yl4P2GyperR8CuKHgMh6INQSn9Ak8AqWYRQpi9x1ExzN17kRneF4iJ1ehSvQC9ahXG1trKsIKmwT8bwWsE3AmCPBUN7QLyVdY38A8gydwMpKRZZoRxyDkQP9fDH/Pb9rOsOXoVO1trvqlXlM/KOhha7YLhMkvAUtjzKzy8Do4NDA8e5Sihb+DxIMncDKTWGmPxnJwDHyYgJIyfNp7m6JUwnHJnYngTJyoU+Oj5Ck8j4OBM2D8ZntyH0m2g1hDD5NMmSurMhRCpjkueLKzuUYXJrV24++gpLWf70WvZUULuRhhWSGsD1QcaGnlV7vW8nHHb/+DRHX2DNwJJ5kKIFEspRTOXj9k90I1+HkXYffYm7hN8+G3bWR4+iatqsfkI6o0ylDOWamkYrU8uDT6/wZOH+v4CSUiSuRAixUsf19tl96CaNHbOxQzvC7iN9Wbl4SuG+nQwlDM2mw49/KBgTcPcpFPKwKG5EP1U318gCUgyF0KYjVyZ0zOhlQvrelUlXzYbvl19kiYv1qcDZC8GrZdBl11g5whbBsG0cnB8paEXTAolN0BNRODtQACK2hXVORKhFzkHkpamaWw6cY3RW89yNSySuiVy8L+Gxclvl+HFlSDIy1DOeP0EZHcyVL441tOlRl2qWYQQ4i0eR8Uwf/8lZuwJ4mlMLF9Uzk8f9yJkTp/m+UqxsXBmrWFyjLsX42rUf4R8yduOWJK5GdgYuBGAJkWb6ByJ0IucA8Z188Fjxm8/x5/+IWRJn4b+dRxpWyEvVpYvXG2OiYJjS8FnDDy4Zmi56/495CqdLDFKMjcDUmMs5BxIHqf/DefnTf/gd/EOhbPbMrRRcWoVzf7ySk8j4NAcQwOvx2Hg1BxqDQW7IkaNTerMhRAinpxyZ2Z514rM6VCW6JhYvlxwmI6/HyLw+oPnK6W1iZts+jjUGAzndsD0irC+t8n2UZdkLoRIdZRS1HXKyY7+NRnWqDgBV+7RYPJehqw5ya0HT56vmD4L1B5mSOoVuxtmPZrqClu/g4e39PsF3kCSuRAi1UprZcFX1QviM7gWX1TJz6ojIbiN3cP0PUE8jnqhTNHWHur/Cn2OQqlWcGi24cEjr58g8p5+v8ALJJkLIVK9rBnSMryJEzv616BqYTvGbg/EfbwP6wOuEhv7wn3FLHmg2TTodQiK1od942FSafAZC08evP0NkoHcADURIeGG63B5MufRORKhFzkHTIffhTv8vPkMp/+9T2mHzAxtVOLlJl7/uX7K8CRp4BawyQbV+kP5rwzT3CWAVLMIIUQSi43VWHvsKmO3B3L9/mPqOeXg2/rFKGhv+/rKof6w52e4sBtsc0KNQeDaEaysP+g9JZmbgZWnVgLQqmQrnSMRepFzwDRFPo1h/v6LzPS+wJPoWNpXykdf9yJ8lCHt6ysH+8LukXDFDzI5QI2B4NIerN6w7htIMjcDUmMs5BwwbbcePGHirnOsOHSFDNZW9K5VmC+q5CddGsuXV9Q0uLgH9vwCoYchc16oOdjQT90yzZt3HkfqzIUQwsjsM1rzS3NntvWrQdl8Wfl161ncx/uw7tgrN0mVgkK1octOaPcXZMgGG/oYmnkFLDfahNOSzIUQ4gM45sjIwi8rsOyrimSxSUO/lQE0nb6fv4Nuv7yiUlCkDnTdA21WgHUmWNfDkNSPLk7ytruSzIUQIgGqFrZjY+9qTGxVmnuPomg77yBfLjjEuRuvlCgqBUUbQPe90GoZpMtsGKlPKQMH50BUZJLEI8lcCCESyMJC0byMA14DazKkQTGOXL5H/Ul7+favE1wLfyVJKwXFG0M3b2i3GjI7wNbBMKkU+E5J9KxHcgPURNyOMPyJZmdjp3MkQi9yDqR89x49ZeruIJYcCMZCKb6sWoAeboVebrf7H02Dy76wdyxc9Ib0WVHfXZZqFiGEMBUhdyOYsPMc6wKukildGnrXKkyHyvler3x5tsFh2DcO1e5PSeYp3cKAhQB0cumkaxxCP3IOmJ/T/4bz27ZAfM7dInfmdAyoW5TmZT7G0uLNsxhJnbkZkBpjIeeA+fo76Dajt53lRGg4RbLbMqCOI/WccmLxSlKXOnMhhDBhVQrbsb5XVaa3dSVW0+ix7ChNpu1n99kbJNWAWpK5EEIkA6UUjUrlYkf/mkxoWZoHj6PpvPAIn878G99Xa9QTwCoJYhRCCBFPlhaKT10daFI6N3/5hzLF6zzt5h2kcsFsidqvJHMhhNBBGksL2lTIS/MyH7Pi0BWm7bmQqP3JDVATEREVAYBNGhudIxF6kXMgdYt4Gk0G6zQJvgEqI3MTIR9gIedA6maTNnHpWG6AmogZh2cw4/AMvcMQOpJzQCSGJHMT8efpP/nz9J96hyF0JOeASAxJ5kIIYQYkmQshhBmQZC6EEGZAkrkQQpgBo9SZK6UeAIFJvuOUyQ5I/LO65kGOxXNyLJ6TY/FcUU3TMiZkQ2PVmQcmtPDd3CiljsixMJBj8Zwci+fkWDynlErw05ZymUUIIcyAJHMhhDADxkrmc4y035RIjsVzciyek2PxnByL5xJ8LIxyA1QIIUTyksssQghhBiSZCyGEGUhUMldK1VdKBSqlgpRS371hubVSamXc8oNKqfyJeT9TFo9jMUApdUYpdUIp5aWUyqdHnMnhfcfihfU+V0ppSimzLUuLz7FQSrWMOzdOK6WWJ3eMySUen5G8Sqk9SqljcZ+ThnrEaWxKqd+VUjeVUqfeslwppabEHacTSinXeO1Y07QEfQGWwAWgIJAWOA6UeGWdnsCsuO9bAysT+n6m/BXPY1ELsIn7vkdqPhZx62UE9gIHgHJ6x63jeVEEOAZkjXudXe+4dTwWc4Aecd+XAIL1jttIx6IG4AqcesvyhsBWQAGVgIPx2W9iRuYVgCBN0y5qmvYUWAE0e2WdZsCiuO//AtyVUioR72mq3nssNE3bo2laRNzLA4BDMseYXOJzXgCMBH4DHidncMksPseiKzBd07R7AJqm3UzmGJNLfI6FBmSK+z4z8G8yxpdsNE3bC9x9xyrNgMWawQEgi1Iq1/v2m5hk/jEQ8sLr0LifvXEdTdOigXAgcbOWmqb4HIsXdcHwP685eu+xUEqVAfJomrYpOQPTQXzOC0fAUSnlq5Q6oJSqn2zRJa/4HIsfgfZKqVBgC9AneUIzOR+aT4DEPc7/phH2q3WO8VnHHMT791RKtQfKATWNGpF+3nkslFIWwESgU3IFpKP4nBdWGC61uGH4a22fUqqkpmlhRo4tucXnWLQBFmqaNl4pVRlYEncsYo0fnklJUN5MzMg8FMjzwmsHXv+z6Nk6SikrDH86vevPi5QqPscCpZQHMBRoqmnak2SKLbm971hkBEoC3kqpYAzXBDeY6U3Q+H5G1muaFqVp2iUMDeqKJFN8ySk+x6IL8CeApml+QDoMTbhSm3jlk1clJpkfBooopQoopdJiuMG54ZV1NgBfxH3/ObBbi7vCb2beeyziLi3MxpDIzfW6KLznWGiaFq5pmp2mafk1TcuP4f5BU03TEtxgyITF5zOyDsPNcZRSdhguu1xM1iiTR3yOxRXAHUApVRxDMr+VrFGahg1Ax7iqlkpAuKZp1967VSLvyjYEzmG4Sz007mc/YfhwguEfYxUQBBwCCup9J9mId6jfdyx2ATeAgLivDXrHrNexeGVdb8y0miWe54UCJgBngJNAa71j1vFYlAB8MVS6BAB19Y7ZSMfhD+AaEIVhFN4F8AQ8Xzgnpscdp5Px/XzI4/xCCGEG5AlQIYQwA5LMhRDCDEgyF0IIMyDJXAghzIAkcyGEMAOSzEWKopTKo5S6pJT6KO511rjXr3WhVEqlV0r5KKUslVL54zo0jnxhuZ1SKkopNe0972mvlNqW9L+NEElHkrlIUTRNCwFmAqPjfjQamKNp2uU3rN4ZWKNpWkzc64tA4xeWtwBOx+M9bwHXlFJVExy4EEYmyVykRBOBSkqpfkA1YPxb1msHrH/hdSTwzwutA1oR9/g4gFKqUFyzq8NKqZ+UUg9f2HZd3P6EMEmSzEWKo2laFDAYQ1Lvpxlaqr4k7pHxgpqmBb+yaAXQWinlAMTwcs+LycBkTdPK83ovjCNA9aT5DYRIepLMRUrVAMMj0SXfstwOeFPnwW1AHQwd+la+sqwyhvYTAK/O+HMTyJ2gSIVIBpLMRYqjlHLBkJArAf3f0rg/EkNvoJfEjeL9gYHA6g9423Rx+xTCJEkyFylK3ExVMzFcXrkCjAXGvbqeZpi5x1Ip9VpCx3CN/VtN0+688vMDwGdx37d+ZZkj8MY5G4UwBZLMRUrTFbiiadrOuNczgGJKqTdN9rEDww3Sl2iadlrTtEVvWL8fMEApdQjIhWFmrP/UAjYnKnIhjEi6JgqzFddDfoCmaR3iub4NEKlpmqaUag200TStWdyyvUCzuBG/ECYnMdPGCWHSNE07ppTao5SyfKHW/F3KAtPiLuWEYahTRyllD0yQRC5MmYzMhRDCDMg1cyGEMAOSzIUQwgxIMhdCCDMgyVwIIcyAJHMhhDAD/weDSZEgavpA3gAAAABJRU5ErkJggg==\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "Composizione delle fasi: frazione molare X(Mg):\n", "Fase liquida: 0.23\n", "Fase solida: 0.62\n" ] } ], "source": [ "g_phase(2100,5)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "A una temperatura più bassa di quella di fusione del componente *basso-fondente* (fayalite):" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "g_phase(1600,5)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Vediamo che la curva del solido è sempre sotto quella del liquido per qualunque composizione.\n", "\n", "A una temperatura maggiore di quella di fusione del componente *alto-fondente* (forsterite):" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "g_phase(2800,5)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "l'energia libera del liquido è più bassa di quella del solido per ogni composizione." ] } ], "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.7.6" }, "widgets": { "application/vnd.jupyter.widget-state+json": { "state": { "004e03e8f14a4641a835b1613f4286d2": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "ButtonModel", "state": { "description": "Run Interact", "layout": "IPY_MODEL_d6bc55c26d124e52bdfb750732e5e951", "style": "IPY_MODEL_132fdbd19f4f47a99a5b759210b7731b" } }, "0101cb2fe90b46b2ae46fd7d1797a838": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": {} }, "018008b5dfb243a7bbbea6ea34bac9f3": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": {} }, "0214a5ee849f448babb3c6b97e0e1793": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "IntSliderModel", "state": { "description": "nt", "layout": "IPY_MODEL_2dd6495c7800424ba61fbc384a47468b", "max": 30, "min": 10, "step": 5, "style": "IPY_MODEL_d263b049e8ae4d18b576fe8b80d3f22b", "value": 10 } }, "0275ef8061f94f30b24228ba00414af5": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "SliderStyleModel", "state": { "description_width": "" } }, "0430b3d9604c4de2955934d706cb5d36": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": {} }, "04724f1de7344d638d13e351fce42b51": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "SliderStyleModel", "state": { "description_width": "" } }, "0547f924f2e84fd5b41028a368dfeb61": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "FloatSliderModel", "state": { "description": "ip", "layout": "IPY_MODEL_9912d832b84e4392900938170ae83eca", "max": 5, "step": 0.1, "style": "IPY_MODEL_9e7a2113197f4626aae93e785ed3fc8d" } }, "05efcc06727245e1bd1cf6aad27045f2": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "SliderStyleModel", "state": { "description_width": "" } }, "061211fd4a5349aeb245aa8bcf955dd6": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "VBoxModel", "state": { "_dom_classes": [ "widget-interact" ], "children": [ "IPY_MODEL_4ac035d8bfe54f3fa91404a4d44c0efd", "IPY_MODEL_92b2af0bcecf430380e05aab647ef4fa", "IPY_MODEL_004e03e8f14a4641a835b1613f4286d2", "IPY_MODEL_15a178370aba49c680b85b20e8632acc" ], "layout": "IPY_MODEL_28b30ed2b80b4c0e86b6101a4c5918be" } }, "08da9c31cf944f1692c2f8678981709a": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": {} }, "08e1b5b821334c18bf379bbccf701e0d": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "SliderStyleModel", "state": { "description_width": "" } }, "0909ef8237124ebfb96d242b220e3b3e": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "FloatSliderModel", "state": { "description": "ip", "layout": "IPY_MODEL_615db239fcb74cd4989836de73e9af5a", "max": 5, "step": 0.1, "style": "IPY_MODEL_5427a2e88f084a71a10b27e24ae3d265" } }, "09323d73bcfe4b8aa7ee2c858ff18e40": { "model_module": "@jupyter-widgets/output", "model_module_version": "1.0.0", "model_name": "OutputModel", "state": { "layout": "IPY_MODEL_9d2442c60ef240d8a255d5644feeb000" } }, "0bdc6fe830ee4a5189023e3e09cf225d": { "model_module": "@jupyter-widgets/output", "model_module_version": "1.0.0", "model_name": "OutputModel", "state": { "layout": "IPY_MODEL_4c32be338f3949dea041639526cc079f" } }, "0c2160345389473fbad18f19576dea04": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "ButtonModel", "state": { "description": "Run Interact", "layout": "IPY_MODEL_bb9e73ec131d49119b4664405c416411", "style": "IPY_MODEL_a976d3fcf0804cc0b9d55ddfdfb3662c" } }, "0cb065c27e44412c9e8c6251eb4f1034": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "SliderStyleModel", "state": { "description_width": "" } }, "0d4d8e75c2a04a7bbb83089c158932af": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": {} }, "0e35013fb84245a4b857e1e1aee45da7": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "ButtonStyleModel", "state": {} }, "0f2595392064400ea86f05a354c018d8": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "ButtonStyleModel", "state": {} }, "0f6d350295d84af898a6f57006b649da": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "SliderStyleModel", "state": { "description_width": "" } }, "108ccdfaabcc413b9eef90d650b31463": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "ButtonStyleModel", "state": {} }, "11780215d5f94f3cbc22aa84d34e49fa": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": {} }, "11e3715fedb74dc8915900437aea0dd8": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "FloatSliderModel", "state": { "description": "tfmin", "layout": "IPY_MODEL_37ca1394b1ee411e9ed5aca902313112", "max": 2000, "step": 10, "style": "IPY_MODEL_99683d06c89844edb4234de729d9988b", "value": 620 } }, "120701a502ca4fa5928fd52edd4fda81": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": {} }, "129cd8bd5e444723bb0b9370acb6bf99": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "SliderStyleModel", "state": { "description_width": "" } }, "132fdbd19f4f47a99a5b759210b7731b": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "ButtonStyleModel", "state": {} }, "139aef72294646ea851906988c134e7b": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": {} }, "1422171be53e4dd3bd45e7870b414c7c": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": {} }, "149bb7bebf2c48cea414162e25c75368": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "ButtonModel", "state": { "description": "Run Interact", "layout": "IPY_MODEL_bdc82666063d486ca509ebc9e609763b", "style": "IPY_MODEL_422e936455f943b293e021a2f143ce7e" } }, "15a178370aba49c680b85b20e8632acc": { "model_module": "@jupyter-widgets/output", "model_module_version": "1.0.0", "model_name": "OutputModel", "state": { "layout": "IPY_MODEL_c12b5dac8c534a8e88c8844f7e635bae" } }, "15b4d7c0ea7f45dbaacb0f6ca891065c": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": {} }, "16f6ef5a5f514261a9e152f56b1bd606": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": {} }, "17255148043145ce8ee57b35068dbdba": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "VBoxModel", "state": { "_dom_classes": [ "widget-interact" ], "children": [ "IPY_MODEL_bf8590edc8a64335a7a1d863e2bcf1e7", "IPY_MODEL_1a733f76d15242e8bd3791d85da5e1e5", "IPY_MODEL_8229c7ec9a734c158de10d629c829da0", "IPY_MODEL_8b2591b8fa3e4546a192e5b3871f46c7" ], "layout": "IPY_MODEL_08da9c31cf944f1692c2f8678981709a" } }, "17865b5129664c5089528a4c626cef8f": { "model_module": "@jupyter-widgets/output", "model_module_version": "1.0.0", "model_name": "OutputModel", "state": { "layout": "IPY_MODEL_982d9d40c91e4ffa97fe0b396bfd8390" } }, "1871c002aff64cda8b88ff362eaa69ba": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "SliderStyleModel", "state": { "description_width": "" } }, "1a025e02deb6447a8ecc243dc8e8e86c": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "VBoxModel", "state": { "_dom_classes": [ "widget-interact" ], "children": [ "IPY_MODEL_de3b6d41148248ababd9d839b687335c", "IPY_MODEL_5d628907242947e5b7527ce96b8014c7", "IPY_MODEL_32fc501502c048d1bce52879cc54d60e", "IPY_MODEL_4746c2024b7842c78dd11bb47d855fb1" ], "layout": "IPY_MODEL_a7fd0cd56a1341cb8848fd304f9288a5" } }, "1a733f76d15242e8bd3791d85da5e1e5": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "IntSliderModel", "state": { "description": "nt", "layout": "IPY_MODEL_362a63fb41b747cf8451faa4a81fc55f", "max": 30, "min": 10, "step": 5, "style": "IPY_MODEL_2426214a04364760972cf3c1773db6e6", "value": 15 } }, "1a84e44f307d4ed9a9f3223a7c8e4a0e": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": {} }, "1a873a14fd2044209e8a97f9aa2b929e": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "FloatSliderModel", "state": { "description": "ip", "layout": "IPY_MODEL_8019e79a21744741876ef809c3d876dc", "max": 10, "step": 0.2, "style": "IPY_MODEL_687d90a44fca49a9b05206de77748f91" } }, "1c2f5567b130458f9b849560aec425a0": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": {} }, "1cdfbdde84114361ae454925dd0059ba": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": {} }, "1eda3109f52147c8a26e7dbdb464ce75": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "FloatSliderModel", "state": { "description": "ip", "layout": "IPY_MODEL_1a84e44f307d4ed9a9f3223a7c8e4a0e", "max": 10, "step": 0.2, "style": "IPY_MODEL_83e1876f124b4b16acef91d6d193f26a" } }, "1f53f0e6de904f609e118b011832dc26": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "FloatSliderModel", "state": { "description": "ip", "layout": "IPY_MODEL_a17d1d7941c840aeb65cb6548983197a", "max": 5, "step": 0.1, "style": "IPY_MODEL_e0f48a232df7403286a98d681a4a5574" } }, "1f5e50498fcb4417a60e92bf11df1ae8": { "model_module": "@jupyter-widgets/output", "model_module_version": "1.0.0", "model_name": "OutputModel", "state": { "layout": "IPY_MODEL_5b06176872f4410a8e43ab3e28f83ac0", "outputs": [ { "name": "stdout", "output_type": "stream", "text": "Temperatura di fusione della forsterite: 2161.01 K\nTemperatura di fusione della fayalite: 1480.31 K\n" }, { "data": { "application/javascript": "/* Put everything inside the global mpl namespace */\nwindow.mpl = {};\n\n\nmpl.get_websocket_type = function() {\n if (typeof(WebSocket) !== 'undefined') {\n return WebSocket;\n } else if (typeof(MozWebSocket) !== 'undefined') {\n return MozWebSocket;\n } else {\n alert('Your browser does not have WebSocket support. ' +\n 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n 'Firefox 4 and 5 are also supported but you ' +\n 'have to enable WebSockets in about:config.');\n };\n}\n\nmpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n this.id = figure_id;\n\n this.ws = websocket;\n\n this.supports_binary = (this.ws.binaryType != undefined);\n\n if (!this.supports_binary) {\n var warnings = document.getElementById(\"mpl-warnings\");\n if (warnings) {\n warnings.style.display = 'block';\n warnings.textContent = (\n \"This browser does not support binary websocket messages. \" +\n \"Performance may be slow.\");\n }\n }\n\n this.imageObj = new Image();\n\n this.context = undefined;\n this.message = undefined;\n this.canvas = undefined;\n this.rubberband_canvas = undefined;\n this.rubberband_context = undefined;\n this.format_dropdown = undefined;\n\n this.image_mode = 'full';\n\n this.root = $('
');\n this._root_extra_style(this.root)\n this.root.attr('style', 'display: inline-block');\n\n $(parent_element).append(this.root);\n\n this._init_header(this);\n this._init_canvas(this);\n this._init_toolbar(this);\n\n var fig = this;\n\n this.waiting = false;\n\n this.ws.onopen = function () {\n fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n fig.send_message(\"send_image_mode\", {});\n if (mpl.ratio != 1) {\n fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n }\n fig.send_message(\"refresh\", {});\n }\n\n this.imageObj.onload = function() {\n if (fig.image_mode == 'full') {\n // Full images could contain transparency (where diff images\n // almost always do), so we need to clear the canvas so that\n // there is no ghosting.\n fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n }\n fig.context.drawImage(fig.imageObj, 0, 0);\n };\n\n this.imageObj.onunload = function() {\n fig.ws.close();\n }\n\n this.ws.onmessage = this._make_on_message_function(this);\n\n this.ondownload = ondownload;\n}\n\nmpl.figure.prototype._init_header = function() {\n var titlebar = $(\n '
');\n var titletext = $(\n '
');\n titlebar.append(titletext)\n this.root.append(titlebar);\n this.header = titletext[0];\n}\n\n\n\nmpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n\n}\n\n\nmpl.figure.prototype._root_extra_style = function(canvas_div) {\n\n}\n\nmpl.figure.prototype._init_canvas = function() {\n var fig = this;\n\n var canvas_div = $('
');\n\n canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n\n function canvas_keyboard_event(event) {\n return fig.key_event(event, event['data']);\n }\n\n canvas_div.keydown('key_press', canvas_keyboard_event);\n canvas_div.keyup('key_release', canvas_keyboard_event);\n this.canvas_div = canvas_div\n this._canvas_extra_style(canvas_div)\n this.root.append(canvas_div);\n\n var canvas = $('');\n canvas.addClass('mpl-canvas');\n canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n\n this.canvas = canvas[0];\n this.context = canvas[0].getContext(\"2d\");\n\n var backingStore = this.context.backingStorePixelRatio ||\n\tthis.context.webkitBackingStorePixelRatio ||\n\tthis.context.mozBackingStorePixelRatio ||\n\tthis.context.msBackingStorePixelRatio ||\n\tthis.context.oBackingStorePixelRatio ||\n\tthis.context.backingStorePixelRatio || 1;\n\n mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n\n var rubberband = $('');\n rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n\n var pass_mouse_events = true;\n\n canvas_div.resizable({\n start: function(event, ui) {\n pass_mouse_events = false;\n },\n resize: function(event, ui) {\n fig.request_resize(ui.size.width, ui.size.height);\n },\n stop: function(event, ui) {\n pass_mouse_events = true;\n fig.request_resize(ui.size.width, ui.size.height);\n },\n });\n\n function mouse_event_fn(event) {\n if (pass_mouse_events)\n return fig.mouse_event(event, event['data']);\n }\n\n rubberband.mousedown('button_press', mouse_event_fn);\n rubberband.mouseup('button_release', mouse_event_fn);\n // Throttle sequential mouse events to 1 every 20ms.\n rubberband.mousemove('motion_notify', mouse_event_fn);\n\n rubberband.mouseenter('figure_enter', mouse_event_fn);\n rubberband.mouseleave('figure_leave', mouse_event_fn);\n\n canvas_div.on(\"wheel\", function (event) {\n event = event.originalEvent;\n event['data'] = 'scroll'\n if (event.deltaY < 0) {\n event.step = 1;\n } else {\n event.step = -1;\n }\n mouse_event_fn(event);\n });\n\n canvas_div.append(canvas);\n canvas_div.append(rubberband);\n\n this.rubberband = rubberband;\n this.rubberband_canvas = rubberband[0];\n this.rubberband_context = rubberband[0].getContext(\"2d\");\n this.rubberband_context.strokeStyle = \"#000000\";\n\n this._resize_canvas = function(width, height) {\n // Keep the size of the canvas, canvas container, and rubber band\n // canvas in synch.\n canvas_div.css('width', width)\n canvas_div.css('height', height)\n\n canvas.attr('width', width * mpl.ratio);\n canvas.attr('height', height * mpl.ratio);\n canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n\n rubberband.attr('width', width);\n rubberband.attr('height', height);\n }\n\n // Set the figure to an initial 600x600px, this will subsequently be updated\n // upon first draw.\n this._resize_canvas(600, 600);\n\n // Disable right mouse context menu.\n $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n return false;\n });\n\n function set_focus () {\n canvas.focus();\n canvas_div.focus();\n }\n\n window.setTimeout(set_focus, 100);\n}\n\nmpl.figure.prototype._init_toolbar = function() {\n var fig = this;\n\n var nav_element = $('
');\n nav_element.attr('style', 'width: 100%');\n this.root.append(nav_element);\n\n // Define a callback function for later on.\n function toolbar_event(event) {\n return fig.toolbar_button_onclick(event['data']);\n }\n function toolbar_mouse_event(event) {\n return fig.toolbar_button_onmouseover(event['data']);\n }\n\n for(var toolbar_ind in mpl.toolbar_items) {\n var name = mpl.toolbar_items[toolbar_ind][0];\n var tooltip = mpl.toolbar_items[toolbar_ind][1];\n var image = mpl.toolbar_items[toolbar_ind][2];\n var method_name = mpl.toolbar_items[toolbar_ind][3];\n\n if (!name) {\n // put a spacer in here.\n continue;\n }\n var button = $('');\n button.click(method_name, toolbar_event);\n button.mouseover(tooltip, toolbar_mouse_event);\n nav_element.append(button);\n }\n\n // Add the status bar.\n var status_bar = $('');\n nav_element.append(status_bar);\n this.message = status_bar[0];\n\n // Add the close button to the window.\n var buttongrp = $('
');\n var button = $('');\n button.click(function (evt) { fig.handle_close(fig, {}); } );\n button.mouseover('Stop Interaction', toolbar_mouse_event);\n buttongrp.append(button);\n var titlebar = this.root.find($('.ui-dialog-titlebar'));\n titlebar.prepend(buttongrp);\n}\n\nmpl.figure.prototype._root_extra_style = function(el){\n var fig = this\n el.on(\"remove\", function(){\n\tfig.close_ws(fig, {});\n });\n}\n\nmpl.figure.prototype._canvas_extra_style = function(el){\n // this is important to make the div 'focusable\n el.attr('tabindex', 0)\n // reach out to IPython and tell the keyboard manager to turn it's self\n // off when our div gets focus\n\n // location in version 3\n if (IPython.notebook.keyboard_manager) {\n IPython.notebook.keyboard_manager.register_events(el);\n }\n else {\n // location in version 2\n IPython.keyboard_manager.register_events(el);\n }\n\n}\n\nmpl.figure.prototype._key_event_extra = function(event, name) {\n var manager = IPython.notebook.keyboard_manager;\n if (!manager)\n manager = IPython.keyboard_manager;\n\n // Check for shift+enter\n if (event.shiftKey && event.which == 13) {\n this.canvas_div.blur();\n // select the cell after this one\n var index = IPython.notebook.find_cell_index(this.cell_info[0]);\n IPython.notebook.select(index + 1);\n }\n}\n\nmpl.figure.prototype.handle_save = function(fig, msg) {\n fig.ondownload(fig, null);\n}\n\n\nmpl.find_output_cell = function(html_output) {\n // Return the cell and output element which can be found *uniquely* in the notebook.\n // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n // IPython event is triggered only after the cells have been serialised, which for\n // our purposes (turning an active figure into a static one), is too late.\n var cells = IPython.notebook.get_cells();\n var ncells = cells.length;\n for (var i=0; i= 3 moved mimebundle to data attribute of output\n data = data.data;\n }\n if (data['text/html'] == html_output) {\n return [cell, data, j];\n }\n }\n }\n }\n}\n\n// Register the function which deals with the matplotlib target/channel.\n// The kernel may be null if the page has been refreshed.\nif (IPython.notebook.kernel != null) {\n IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n}\n", "text/plain": "" }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": "
", "text/plain": "" }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": "\n T (K) X(Mg)sol X(Fe)sol X(Mg)liq X(Fe)liq\n 1480.31 0.00 1.00 0.00 1.00 \n 1555.95 0.33 0.67 0.04 0.96 \n 1631.58 0.55 0.45 0.09 0.91 \n 1707.21 0.69 0.31 0.16 0.84 \n 1782.85 0.79 0.21 0.23 0.77 \n 1858.48 0.86 0.14 0.33 0.67 \n 1934.11 0.91 0.09 0.44 0.56 \n 2009.75 0.95 0.05 0.59 0.41 \n 2085.38 0.98 0.02 0.77 0.23 \n 2161.01 1.00 0.00 1.00 0.00 \n" } ] } }, "2702f68bea4f4b0c8c07b46ed3d7f4e3": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "SliderStyleModel", "state": { "description_width": "" } }, "27f2f460e50e42ef91407e9955e57e09": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": {} }, "28870191aa974e24b979f232efd9ab54": { "model_module": "@jupyter-widgets/output", "model_module_version": "1.0.0", "model_name": "OutputModel", "state": { "layout": "IPY_MODEL_8508b37191b34adbaa3fbc3025058c31", "outputs": [ { "name": "stdout", "output_type": "stream", "text": "Temperatura di fusione della forsterite: 2202.61 K\nTemperatura di fusione della fayalite: 1530.59 K\n" }, { "data": { "application/javascript": "/* Put everything inside the global mpl namespace */\nwindow.mpl = {};\n\n\nmpl.get_websocket_type = function() {\n if (typeof(WebSocket) !== 'undefined') {\n return WebSocket;\n } else if (typeof(MozWebSocket) !== 'undefined') {\n return MozWebSocket;\n } else {\n alert('Your browser does not have WebSocket support. ' +\n 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n 'Firefox 4 and 5 are also supported but you ' +\n 'have to enable WebSockets in about:config.');\n };\n}\n\nmpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n this.id = figure_id;\n\n this.ws = websocket;\n\n this.supports_binary = (this.ws.binaryType != undefined);\n\n if (!this.supports_binary) {\n var warnings = document.getElementById(\"mpl-warnings\");\n if (warnings) {\n warnings.style.display = 'block';\n warnings.textContent = (\n \"This browser does not support binary websocket messages. \" +\n \"Performance may be slow.\");\n }\n }\n\n this.imageObj = new Image();\n\n this.context = undefined;\n this.message = undefined;\n this.canvas = undefined;\n this.rubberband_canvas = undefined;\n this.rubberband_context = undefined;\n this.format_dropdown = undefined;\n\n this.image_mode = 'full';\n\n this.root = $('
');\n this._root_extra_style(this.root)\n this.root.attr('style', 'display: inline-block');\n\n $(parent_element).append(this.root);\n\n this._init_header(this);\n this._init_canvas(this);\n this._init_toolbar(this);\n\n var fig = this;\n\n this.waiting = false;\n\n this.ws.onopen = function () {\n fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n fig.send_message(\"send_image_mode\", {});\n if (mpl.ratio != 1) {\n fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n }\n fig.send_message(\"refresh\", {});\n }\n\n this.imageObj.onload = function() {\n if (fig.image_mode == 'full') {\n // Full images could contain transparency (where diff images\n // almost always do), so we need to clear the canvas so that\n // there is no ghosting.\n fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n }\n fig.context.drawImage(fig.imageObj, 0, 0);\n };\n\n this.imageObj.onunload = function() {\n fig.ws.close();\n }\n\n this.ws.onmessage = this._make_on_message_function(this);\n\n this.ondownload = ondownload;\n}\n\nmpl.figure.prototype._init_header = function() {\n var titlebar = $(\n '
');\n var titletext = $(\n '
');\n titlebar.append(titletext)\n this.root.append(titlebar);\n this.header = titletext[0];\n}\n\n\n\nmpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n\n}\n\n\nmpl.figure.prototype._root_extra_style = function(canvas_div) {\n\n}\n\nmpl.figure.prototype._init_canvas = function() {\n var fig = this;\n\n var canvas_div = $('
');\n\n canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n\n function canvas_keyboard_event(event) {\n return fig.key_event(event, event['data']);\n }\n\n canvas_div.keydown('key_press', canvas_keyboard_event);\n canvas_div.keyup('key_release', canvas_keyboard_event);\n this.canvas_div = canvas_div\n this._canvas_extra_style(canvas_div)\n this.root.append(canvas_div);\n\n var canvas = $('');\n canvas.addClass('mpl-canvas');\n canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n\n this.canvas = canvas[0];\n this.context = canvas[0].getContext(\"2d\");\n\n var backingStore = this.context.backingStorePixelRatio ||\n\tthis.context.webkitBackingStorePixelRatio ||\n\tthis.context.mozBackingStorePixelRatio ||\n\tthis.context.msBackingStorePixelRatio ||\n\tthis.context.oBackingStorePixelRatio ||\n\tthis.context.backingStorePixelRatio || 1;\n\n mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n\n var rubberband = $('');\n rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n\n var pass_mouse_events = true;\n\n canvas_div.resizable({\n start: function(event, ui) {\n pass_mouse_events = false;\n },\n resize: function(event, ui) {\n fig.request_resize(ui.size.width, ui.size.height);\n },\n stop: function(event, ui) {\n pass_mouse_events = true;\n fig.request_resize(ui.size.width, ui.size.height);\n },\n });\n\n function mouse_event_fn(event) {\n if (pass_mouse_events)\n return fig.mouse_event(event, event['data']);\n }\n\n rubberband.mousedown('button_press', mouse_event_fn);\n rubberband.mouseup('button_release', mouse_event_fn);\n // Throttle sequential mouse events to 1 every 20ms.\n rubberband.mousemove('motion_notify', mouse_event_fn);\n\n rubberband.mouseenter('figure_enter', mouse_event_fn);\n rubberband.mouseleave('figure_leave', mouse_event_fn);\n\n canvas_div.on(\"wheel\", function (event) {\n event = event.originalEvent;\n event['data'] = 'scroll'\n if (event.deltaY < 0) {\n event.step = 1;\n } else {\n event.step = -1;\n }\n mouse_event_fn(event);\n });\n\n canvas_div.append(canvas);\n canvas_div.append(rubberband);\n\n this.rubberband = rubberband;\n this.rubberband_canvas = rubberband[0];\n this.rubberband_context = rubberband[0].getContext(\"2d\");\n this.rubberband_context.strokeStyle = \"#000000\";\n\n this._resize_canvas = function(width, height) {\n // Keep the size of the canvas, canvas container, and rubber band\n // canvas in synch.\n canvas_div.css('width', width)\n canvas_div.css('height', height)\n\n canvas.attr('width', width * mpl.ratio);\n canvas.attr('height', height * mpl.ratio);\n canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n\n rubberband.attr('width', width);\n rubberband.attr('height', height);\n }\n\n // Set the figure to an initial 600x600px, this will subsequently be updated\n // upon first draw.\n this._resize_canvas(600, 600);\n\n // Disable right mouse context menu.\n $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n return false;\n });\n\n function set_focus () {\n canvas.focus();\n canvas_div.focus();\n }\n\n window.setTimeout(set_focus, 100);\n}\n\nmpl.figure.prototype._init_toolbar = function() {\n var fig = this;\n\n var nav_element = $('
');\n nav_element.attr('style', 'width: 100%');\n this.root.append(nav_element);\n\n // Define a callback function for later on.\n function toolbar_event(event) {\n return fig.toolbar_button_onclick(event['data']);\n }\n function toolbar_mouse_event(event) {\n return fig.toolbar_button_onmouseover(event['data']);\n }\n\n for(var toolbar_ind in mpl.toolbar_items) {\n var name = mpl.toolbar_items[toolbar_ind][0];\n var tooltip = mpl.toolbar_items[toolbar_ind][1];\n var image = mpl.toolbar_items[toolbar_ind][2];\n var method_name = mpl.toolbar_items[toolbar_ind][3];\n\n if (!name) {\n // put a spacer in here.\n continue;\n }\n var button = $('');\n button.click(method_name, toolbar_event);\n button.mouseover(tooltip, toolbar_mouse_event);\n nav_element.append(button);\n }\n\n // Add the status bar.\n var status_bar = $('');\n nav_element.append(status_bar);\n this.message = status_bar[0];\n\n // Add the close button to the window.\n var buttongrp = $('
');\n var button = $('');\n button.click(function (evt) { fig.handle_close(fig, {}); } );\n button.mouseover('Stop Interaction', toolbar_mouse_event);\n buttongrp.append(button);\n var titlebar = this.root.find($('.ui-dialog-titlebar'));\n titlebar.prepend(buttongrp);\n}\n\nmpl.figure.prototype._root_extra_style = function(el){\n var fig = this\n el.on(\"remove\", function(){\n\tfig.close_ws(fig, {});\n });\n}\n\nmpl.figure.prototype._canvas_extra_style = function(el){\n // this is important to make the div 'focusable\n el.attr('tabindex', 0)\n // reach out to IPython and tell the keyboard manager to turn it's self\n // off when our div gets focus\n\n // location in version 3\n if (IPython.notebook.keyboard_manager) {\n IPython.notebook.keyboard_manager.register_events(el);\n }\n else {\n // location in version 2\n IPython.keyboard_manager.register_events(el);\n }\n\n}\n\nmpl.figure.prototype._key_event_extra = function(event, name) {\n var manager = IPython.notebook.keyboard_manager;\n if (!manager)\n manager = IPython.keyboard_manager;\n\n // Check for shift+enter\n if (event.shiftKey && event.which == 13) {\n this.canvas_div.blur();\n // select the cell after this one\n var index = IPython.notebook.find_cell_index(this.cell_info[0]);\n IPython.notebook.select(index + 1);\n }\n}\n\nmpl.figure.prototype.handle_save = function(fig, msg) {\n fig.ondownload(fig, null);\n}\n\n\nmpl.find_output_cell = function(html_output) {\n // Return the cell and output element which can be found *uniquely* in the notebook.\n // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n // IPython event is triggered only after the cells have been serialised, which for\n // our purposes (turning an active figure into a static one), is too late.\n var cells = IPython.notebook.get_cells();\n var ncells = cells.length;\n for (var i=0; i= 3 moved mimebundle to data attribute of output\n data = data.data;\n }\n if (data['text/html'] == html_output) {\n return [cell, data, j];\n }\n }\n }\n }\n}\n\n// Register the function which deals with the matplotlib target/channel.\n// The kernel may be null if the page has been refreshed.\nif (IPython.notebook.kernel != null) {\n IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n}\n", "text/plain": "" }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": "
", "text/plain": "" }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": "\n T (K) X(Mg)sol X(Fe)sol X(Mg)liq X(Fe)liq\n 1480.31 0.00 1.00 0.00 1.00 \n 1555.95 0.33 0.67 0.04 0.96 \n 1631.58 0.55 0.45 0.09 0.91 \n 1707.21 0.69 0.31 0.16 0.84 \n 1782.85 0.79 0.21 0.23 0.77 \n 1858.48 0.86 0.14 0.33 0.67 \n 1934.11 0.91 0.09 0.44 0.56 \n 2009.75 0.95 0.05 0.59 0.41 \n 2085.38 0.98 0.02 0.77 0.23 \n 2161.01 1.00 0.00 1.00 0.00 \n" } ] } }, "3a864b29faac4d54ba444c6736a26c40": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "IntSliderModel", "state": { "description": "nt", "layout": "IPY_MODEL_9b9b13f8e1174d09b62e992a61537afb", "max": 30, "min": 10, "step": 5, "style": "IPY_MODEL_4788b454b88741f099219b4c72c46eeb", "value": 10 } }, "3b3ae776fd754a7ca2af527bda994504": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": {} }, "3c89830801aa43998e72f9223b1d3ad1": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": {} }, "3d9eb2761a764ee88e0eb187912f3ed9": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "IntSliderModel", "state": { "description": "nt", "layout": "IPY_MODEL_7260d7fbdb0d41bfbe8ebfff7bf40b34", "max": 30, "min": 10, "step": 5, "style": "IPY_MODEL_b27df5dbec5540bf85660bc4aee7004c", "value": 10 } }, "3e19478904c7418daafed09183c5f189": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "ButtonStyleModel", "state": {} }, "3e6b3c2c50f34604aef679303543a7bd": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "FloatSliderModel", "state": { "description": "ip", "layout": "IPY_MODEL_faaa154f0ba9464fa6942e56d499863d", "max": 5, "step": 0.1, "style": "IPY_MODEL_4e1f11bd326b4e26b868dbc591bf8de4", "value": 0.6 } }, "3e95b37e1507416c8926e2c0109300e3": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "ButtonStyleModel", "state": {} }, "3e96c7c0d24643b4bf44758c9df0c196": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "VBoxModel", "state": { "_dom_classes": [ "widget-interact" ], "children": [ "IPY_MODEL_a3a912073a3f4a94a917404fb754c65b", "IPY_MODEL_989e91faada342fabedba527c1de5a85", "IPY_MODEL_2d8953a342d84ba9afb0bc34f3caa56f", "IPY_MODEL_25b2a48387f842f3b439f53f522a6647" ], "layout": "IPY_MODEL_416d4edc61504c27aab04c64d0bda3f3" } }, "3fbbc9efb13343fe8e569c54d55fc307": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "SliderStyleModel", "state": { "description_width": "" } }, "404ba688b85347ba81a258c419112cbd": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "SliderStyleModel", "state": { "description_width": "" } }, "4060e4b0451943fb94d511433ff21637": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "VBoxModel", "state": { "_dom_classes": [ "widget-interact" ], "children": [ "IPY_MODEL_ac2c8a5a298d4f849db255f8b893c8c5", "IPY_MODEL_0214a5ee849f448babb3c6b97e0e1793", "IPY_MODEL_e057686dc80b4d6484c18383594642c3" ], "layout": "IPY_MODEL_8a82116d7e194223b2b43a663c55664f" } }, "413bdcc48f5e4dc4b2fe6373e4fa3559": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "SliderStyleModel", "state": { "description_width": "" } }, "416d4edc61504c27aab04c64d0bda3f3": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": {} }, "422e936455f943b293e021a2f143ce7e": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "ButtonStyleModel", "state": {} }, "426eae3289e8438a90cd31e572a783a6": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "SliderStyleModel", "state": { "description_width": "" } }, "43bd628c0c2446f88c8d7f8677ee0744": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": {} }, "45dc992d9aba47ca9de8e2bfbbab55c3": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "SliderStyleModel", "state": { "description_width": "" } }, "4649a0308b924fc0a8492891c5004b38": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": {} }, "47348d7e1a7247779caf6ebec5df5430": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "VBoxModel", "state": { "_dom_classes": [ "widget-interact" ], "children": [ "IPY_MODEL_9a2f4aeab8dc402687df5fc51e1237a2", "IPY_MODEL_91de418fb64d4d368f541c5402b829b5", "IPY_MODEL_149bb7bebf2c48cea414162e25c75368", "IPY_MODEL_b589e609001443dfa3118bffcb6cf5cc" ], "layout": "IPY_MODEL_ffc823fdfa9a4d05adf4b45dce9173f5" } }, "4746c2024b7842c78dd11bb47d855fb1": { "model_module": "@jupyter-widgets/output", "model_module_version": "1.0.0", "model_name": "OutputModel", "state": { "layout": "IPY_MODEL_9ee5d987cd054f27b87bf2ccce45361f", "outputs": [ { "name": "stdout", "output_type": "stream", "text": "Temperatura di fusione della forsterite: 2497.40 K\nTemperatura di fusione della fayalite: 1836.95 K\n" }, { "data": { "application/javascript": "/* Put everything inside the global mpl namespace */\nwindow.mpl = {};\n\n\nmpl.get_websocket_type = function() {\n if (typeof(WebSocket) !== 'undefined') {\n return WebSocket;\n } else if (typeof(MozWebSocket) !== 'undefined') {\n return MozWebSocket;\n } else {\n alert('Your browser does not have WebSocket support. ' +\n 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n 'Firefox 4 and 5 are also supported but you ' +\n 'have to enable WebSockets in about:config.');\n };\n}\n\nmpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n this.id = figure_id;\n\n this.ws = websocket;\n\n this.supports_binary = (this.ws.binaryType != undefined);\n\n if (!this.supports_binary) {\n var warnings = document.getElementById(\"mpl-warnings\");\n if (warnings) {\n warnings.style.display = 'block';\n warnings.textContent = (\n \"This browser does not support binary websocket messages. \" +\n \"Performance may be slow.\");\n }\n }\n\n this.imageObj = new Image();\n\n this.context = undefined;\n this.message = undefined;\n this.canvas = undefined;\n this.rubberband_canvas = undefined;\n this.rubberband_context = undefined;\n this.format_dropdown = undefined;\n\n this.image_mode = 'full';\n\n this.root = $('
');\n this._root_extra_style(this.root)\n this.root.attr('style', 'display: inline-block');\n\n $(parent_element).append(this.root);\n\n this._init_header(this);\n this._init_canvas(this);\n this._init_toolbar(this);\n\n var fig = this;\n\n this.waiting = false;\n\n this.ws.onopen = function () {\n fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n fig.send_message(\"send_image_mode\", {});\n if (mpl.ratio != 1) {\n fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n }\n fig.send_message(\"refresh\", {});\n }\n\n this.imageObj.onload = function() {\n if (fig.image_mode == 'full') {\n // Full images could contain transparency (where diff images\n // almost always do), so we need to clear the canvas so that\n // there is no ghosting.\n fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n }\n fig.context.drawImage(fig.imageObj, 0, 0);\n };\n\n this.imageObj.onunload = function() {\n fig.ws.close();\n }\n\n this.ws.onmessage = this._make_on_message_function(this);\n\n this.ondownload = ondownload;\n}\n\nmpl.figure.prototype._init_header = function() {\n var titlebar = $(\n '
');\n var titletext = $(\n '
');\n titlebar.append(titletext)\n this.root.append(titlebar);\n this.header = titletext[0];\n}\n\n\n\nmpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n\n}\n\n\nmpl.figure.prototype._root_extra_style = function(canvas_div) {\n\n}\n\nmpl.figure.prototype._init_canvas = function() {\n var fig = this;\n\n var canvas_div = $('
');\n\n canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n\n function canvas_keyboard_event(event) {\n return fig.key_event(event, event['data']);\n }\n\n canvas_div.keydown('key_press', canvas_keyboard_event);\n canvas_div.keyup('key_release', canvas_keyboard_event);\n this.canvas_div = canvas_div\n this._canvas_extra_style(canvas_div)\n this.root.append(canvas_div);\n\n var canvas = $('');\n canvas.addClass('mpl-canvas');\n canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n\n this.canvas = canvas[0];\n this.context = canvas[0].getContext(\"2d\");\n\n var backingStore = this.context.backingStorePixelRatio ||\n\tthis.context.webkitBackingStorePixelRatio ||\n\tthis.context.mozBackingStorePixelRatio ||\n\tthis.context.msBackingStorePixelRatio ||\n\tthis.context.oBackingStorePixelRatio ||\n\tthis.context.backingStorePixelRatio || 1;\n\n mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n\n var rubberband = $('');\n rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n\n var pass_mouse_events = true;\n\n canvas_div.resizable({\n start: function(event, ui) {\n pass_mouse_events = false;\n },\n resize: function(event, ui) {\n fig.request_resize(ui.size.width, ui.size.height);\n },\n stop: function(event, ui) {\n pass_mouse_events = true;\n fig.request_resize(ui.size.width, ui.size.height);\n },\n });\n\n function mouse_event_fn(event) {\n if (pass_mouse_events)\n return fig.mouse_event(event, event['data']);\n }\n\n rubberband.mousedown('button_press', mouse_event_fn);\n rubberband.mouseup('button_release', mouse_event_fn);\n // Throttle sequential mouse events to 1 every 20ms.\n rubberband.mousemove('motion_notify', mouse_event_fn);\n\n rubberband.mouseenter('figure_enter', mouse_event_fn);\n rubberband.mouseleave('figure_leave', mouse_event_fn);\n\n canvas_div.on(\"wheel\", function (event) {\n event = event.originalEvent;\n event['data'] = 'scroll'\n if (event.deltaY < 0) {\n event.step = 1;\n } else {\n event.step = -1;\n }\n mouse_event_fn(event);\n });\n\n canvas_div.append(canvas);\n canvas_div.append(rubberband);\n\n this.rubberband = rubberband;\n this.rubberband_canvas = rubberband[0];\n this.rubberband_context = rubberband[0].getContext(\"2d\");\n this.rubberband_context.strokeStyle = \"#000000\";\n\n this._resize_canvas = function(width, height) {\n // Keep the size of the canvas, canvas container, and rubber band\n // canvas in synch.\n canvas_div.css('width', width)\n canvas_div.css('height', height)\n\n canvas.attr('width', width * mpl.ratio);\n canvas.attr('height', height * mpl.ratio);\n canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n\n rubberband.attr('width', width);\n rubberband.attr('height', height);\n }\n\n // Set the figure to an initial 600x600px, this will subsequently be updated\n // upon first draw.\n this._resize_canvas(600, 600);\n\n // Disable right mouse context menu.\n $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n return false;\n });\n\n function set_focus () {\n canvas.focus();\n canvas_div.focus();\n }\n\n window.setTimeout(set_focus, 100);\n}\n\nmpl.figure.prototype._init_toolbar = function() {\n var fig = this;\n\n var nav_element = $('
');\n nav_element.attr('style', 'width: 100%');\n this.root.append(nav_element);\n\n // Define a callback function for later on.\n function toolbar_event(event) {\n return fig.toolbar_button_onclick(event['data']);\n }\n function toolbar_mouse_event(event) {\n return fig.toolbar_button_onmouseover(event['data']);\n }\n\n for(var toolbar_ind in mpl.toolbar_items) {\n var name = mpl.toolbar_items[toolbar_ind][0];\n var tooltip = mpl.toolbar_items[toolbar_ind][1];\n var image = mpl.toolbar_items[toolbar_ind][2];\n var method_name = mpl.toolbar_items[toolbar_ind][3];\n\n if (!name) {\n // put a spacer in here.\n continue;\n }\n var button = $('');\n button.click(method_name, toolbar_event);\n button.mouseover(tooltip, toolbar_mouse_event);\n nav_element.append(button);\n }\n\n // Add the status bar.\n var status_bar = $('');\n nav_element.append(status_bar);\n this.message = status_bar[0];\n\n // Add the close button to the window.\n var buttongrp = $('
');\n var button = $('');\n button.click(function (evt) { fig.handle_close(fig, {}); } );\n button.mouseover('Stop Interaction', toolbar_mouse_event);\n buttongrp.append(button);\n var titlebar = this.root.find($('.ui-dialog-titlebar'));\n titlebar.prepend(buttongrp);\n}\n\nmpl.figure.prototype._root_extra_style = function(el){\n var fig = this\n el.on(\"remove\", function(){\n\tfig.close_ws(fig, {});\n });\n}\n\nmpl.figure.prototype._canvas_extra_style = function(el){\n // this is important to make the div 'focusable\n el.attr('tabindex', 0)\n // reach out to IPython and tell the keyboard manager to turn it's self\n // off when our div gets focus\n\n // location in version 3\n if (IPython.notebook.keyboard_manager) {\n IPython.notebook.keyboard_manager.register_events(el);\n }\n else {\n // location in version 2\n IPython.keyboard_manager.register_events(el);\n }\n\n}\n\nmpl.figure.prototype._key_event_extra = function(event, name) {\n var manager = IPython.notebook.keyboard_manager;\n if (!manager)\n manager = IPython.keyboard_manager;\n\n // Check for shift+enter\n if (event.shiftKey && event.which == 13) {\n this.canvas_div.blur();\n // select the cell after this one\n var index = IPython.notebook.find_cell_index(this.cell_info[0]);\n IPython.notebook.select(index + 1);\n }\n}\n\nmpl.figure.prototype.handle_save = function(fig, msg) {\n fig.ondownload(fig, null);\n}\n\n\nmpl.find_output_cell = function(html_output) {\n // Return the cell and output element which can be found *uniquely* in the notebook.\n // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n // IPython event is triggered only after the cells have been serialised, which for\n // our purposes (turning an active figure into a static one), is too late.\n var cells = IPython.notebook.get_cells();\n var ncells = cells.length;\n for (var i=0; i= 3 moved mimebundle to data attribute of output\n data = data.data;\n }\n if (data['text/html'] == html_output) {\n return [cell, data, j];\n }\n }\n }\n }\n}\n\n// Register the function which deals with the matplotlib target/channel.\n// The kernel may be null if the page has been refreshed.\nif (IPython.notebook.kernel != null) {\n IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n}\n", "text/plain": "" }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": "
", "text/plain": "" }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": "\n T (K) X(Mg)sol X(Fe)sol X(Mg)liq X(Fe)liq\n 1480.31 0.00 1.00 0.00 1.00 \n 1555.95 0.33 0.67 0.04 0.96 \n 1631.58 0.55 0.45 0.09 0.91 \n 1707.21 0.69 0.31 0.16 0.84 \n 1782.85 0.79 0.21 0.23 0.77 \n 1858.48 0.86 0.14 0.33 0.67 \n 1934.11 0.91 0.09 0.44 0.56 \n 2009.75 0.95 0.05 0.59 0.41 \n 2085.38 0.98 0.02 0.77 0.23 \n 2161.01 1.00 0.00 1.00 0.00 \n" } ] } }, "57421368e75a4f12a24bb1db73dba404": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": {} }, "57eabbf5f5cd449d81fa3be6c22d8708": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": {} }, "589f56a4afb44ebf961d8e8f95eef805": { "model_module": "@jupyter-widgets/output", "model_module_version": "1.0.0", "model_name": "OutputModel", "state": { "layout": "IPY_MODEL_f0dd75a9479d48fb9e64acac09d02359", "outputs": [ { "name": "stdout", "output_type": "stream", "text": "Temperatura di fusione della forsterite: 2497.40 K\nTemperatura di fusione della fayalite: 1836.95 K\n" }, { "data": { "application/javascript": "/* Put everything inside the global mpl namespace */\nwindow.mpl = {};\n\n\nmpl.get_websocket_type = function() {\n if (typeof(WebSocket) !== 'undefined') {\n return WebSocket;\n } else if (typeof(MozWebSocket) !== 'undefined') {\n return MozWebSocket;\n } else {\n alert('Your browser does not have WebSocket support. ' +\n 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n 'Firefox 4 and 5 are also supported but you ' +\n 'have to enable WebSockets in about:config.');\n };\n}\n\nmpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n this.id = figure_id;\n\n this.ws = websocket;\n\n this.supports_binary = (this.ws.binaryType != undefined);\n\n if (!this.supports_binary) {\n var warnings = document.getElementById(\"mpl-warnings\");\n if (warnings) {\n warnings.style.display = 'block';\n warnings.textContent = (\n \"This browser does not support binary websocket messages. \" +\n \"Performance may be slow.\");\n }\n }\n\n this.imageObj = new Image();\n\n this.context = undefined;\n this.message = undefined;\n this.canvas = undefined;\n this.rubberband_canvas = undefined;\n this.rubberband_context = undefined;\n this.format_dropdown = undefined;\n\n this.image_mode = 'full';\n\n this.root = $('
');\n this._root_extra_style(this.root)\n this.root.attr('style', 'display: inline-block');\n\n $(parent_element).append(this.root);\n\n this._init_header(this);\n this._init_canvas(this);\n this._init_toolbar(this);\n\n var fig = this;\n\n this.waiting = false;\n\n this.ws.onopen = function () {\n fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n fig.send_message(\"send_image_mode\", {});\n if (mpl.ratio != 1) {\n fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n }\n fig.send_message(\"refresh\", {});\n }\n\n this.imageObj.onload = function() {\n if (fig.image_mode == 'full') {\n // Full images could contain transparency (where diff images\n // almost always do), so we need to clear the canvas so that\n // there is no ghosting.\n fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n }\n fig.context.drawImage(fig.imageObj, 0, 0);\n };\n\n this.imageObj.onunload = function() {\n fig.ws.close();\n }\n\n this.ws.onmessage = this._make_on_message_function(this);\n\n this.ondownload = ondownload;\n}\n\nmpl.figure.prototype._init_header = function() {\n var titlebar = $(\n '
');\n var titletext = $(\n '
');\n titlebar.append(titletext)\n this.root.append(titlebar);\n this.header = titletext[0];\n}\n\n\n\nmpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n\n}\n\n\nmpl.figure.prototype._root_extra_style = function(canvas_div) {\n\n}\n\nmpl.figure.prototype._init_canvas = function() {\n var fig = this;\n\n var canvas_div = $('
');\n\n canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n\n function canvas_keyboard_event(event) {\n return fig.key_event(event, event['data']);\n }\n\n canvas_div.keydown('key_press', canvas_keyboard_event);\n canvas_div.keyup('key_release', canvas_keyboard_event);\n this.canvas_div = canvas_div\n this._canvas_extra_style(canvas_div)\n this.root.append(canvas_div);\n\n var canvas = $('');\n canvas.addClass('mpl-canvas');\n canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n\n this.canvas = canvas[0];\n this.context = canvas[0].getContext(\"2d\");\n\n var backingStore = this.context.backingStorePixelRatio ||\n\tthis.context.webkitBackingStorePixelRatio ||\n\tthis.context.mozBackingStorePixelRatio ||\n\tthis.context.msBackingStorePixelRatio ||\n\tthis.context.oBackingStorePixelRatio ||\n\tthis.context.backingStorePixelRatio || 1;\n\n mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n\n var rubberband = $('');\n rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n\n var pass_mouse_events = true;\n\n canvas_div.resizable({\n start: function(event, ui) {\n pass_mouse_events = false;\n },\n resize: function(event, ui) {\n fig.request_resize(ui.size.width, ui.size.height);\n },\n stop: function(event, ui) {\n pass_mouse_events = true;\n fig.request_resize(ui.size.width, ui.size.height);\n },\n });\n\n function mouse_event_fn(event) {\n if (pass_mouse_events)\n return fig.mouse_event(event, event['data']);\n }\n\n rubberband.mousedown('button_press', mouse_event_fn);\n rubberband.mouseup('button_release', mouse_event_fn);\n // Throttle sequential mouse events to 1 every 20ms.\n rubberband.mousemove('motion_notify', mouse_event_fn);\n\n rubberband.mouseenter('figure_enter', mouse_event_fn);\n rubberband.mouseleave('figure_leave', mouse_event_fn);\n\n canvas_div.on(\"wheel\", function (event) {\n event = event.originalEvent;\n event['data'] = 'scroll'\n if (event.deltaY < 0) {\n event.step = 1;\n } else {\n event.step = -1;\n }\n mouse_event_fn(event);\n });\n\n canvas_div.append(canvas);\n canvas_div.append(rubberband);\n\n this.rubberband = rubberband;\n this.rubberband_canvas = rubberband[0];\n this.rubberband_context = rubberband[0].getContext(\"2d\");\n this.rubberband_context.strokeStyle = \"#000000\";\n\n this._resize_canvas = function(width, height) {\n // Keep the size of the canvas, canvas container, and rubber band\n // canvas in synch.\n canvas_div.css('width', width)\n canvas_div.css('height', height)\n\n canvas.attr('width', width * mpl.ratio);\n canvas.attr('height', height * mpl.ratio);\n canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n\n rubberband.attr('width', width);\n rubberband.attr('height', height);\n }\n\n // Set the figure to an initial 600x600px, this will subsequently be updated\n // upon first draw.\n this._resize_canvas(600, 600);\n\n // Disable right mouse context menu.\n $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n return false;\n });\n\n function set_focus () {\n canvas.focus();\n canvas_div.focus();\n }\n\n window.setTimeout(set_focus, 100);\n}\n\nmpl.figure.prototype._init_toolbar = function() {\n var fig = this;\n\n var nav_element = $('
');\n nav_element.attr('style', 'width: 100%');\n this.root.append(nav_element);\n\n // Define a callback function for later on.\n function toolbar_event(event) {\n return fig.toolbar_button_onclick(event['data']);\n }\n function toolbar_mouse_event(event) {\n return fig.toolbar_button_onmouseover(event['data']);\n }\n\n for(var toolbar_ind in mpl.toolbar_items) {\n var name = mpl.toolbar_items[toolbar_ind][0];\n var tooltip = mpl.toolbar_items[toolbar_ind][1];\n var image = mpl.toolbar_items[toolbar_ind][2];\n var method_name = mpl.toolbar_items[toolbar_ind][3];\n\n if (!name) {\n // put a spacer in here.\n continue;\n }\n var button = $('');\n button.click(method_name, toolbar_event);\n button.mouseover(tooltip, toolbar_mouse_event);\n nav_element.append(button);\n }\n\n // Add the status bar.\n var status_bar = $('');\n nav_element.append(status_bar);\n this.message = status_bar[0];\n\n // Add the close button to the window.\n var buttongrp = $('
');\n var button = $('');\n button.click(function (evt) { fig.handle_close(fig, {}); } );\n button.mouseover('Stop Interaction', toolbar_mouse_event);\n buttongrp.append(button);\n var titlebar = this.root.find($('.ui-dialog-titlebar'));\n titlebar.prepend(buttongrp);\n}\n\nmpl.figure.prototype._root_extra_style = function(el){\n var fig = this\n el.on(\"remove\", function(){\n\tfig.close_ws(fig, {});\n });\n}\n\nmpl.figure.prototype._canvas_extra_style = function(el){\n // this is important to make the div 'focusable\n el.attr('tabindex', 0)\n // reach out to IPython and tell the keyboard manager to turn it's self\n // off when our div gets focus\n\n // location in version 3\n if (IPython.notebook.keyboard_manager) {\n IPython.notebook.keyboard_manager.register_events(el);\n }\n else {\n // location in version 2\n IPython.keyboard_manager.register_events(el);\n }\n\n}\n\nmpl.figure.prototype._key_event_extra = function(event, name) {\n var manager = IPython.notebook.keyboard_manager;\n if (!manager)\n manager = IPython.keyboard_manager;\n\n // Check for shift+enter\n if (event.shiftKey && event.which == 13) {\n this.canvas_div.blur();\n // select the cell after this one\n var index = IPython.notebook.find_cell_index(this.cell_info[0]);\n IPython.notebook.select(index + 1);\n }\n}\n\nmpl.figure.prototype.handle_save = function(fig, msg) {\n fig.ondownload(fig, null);\n}\n\n\nmpl.find_output_cell = function(html_output) {\n // Return the cell and output element which can be found *uniquely* in the notebook.\n // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n // IPython event is triggered only after the cells have been serialised, which for\n // our purposes (turning an active figure into a static one), is too late.\n var cells = IPython.notebook.get_cells();\n var ncells = cells.length;\n for (var i=0; i= 3 moved mimebundle to data attribute of output\n data = data.data;\n }\n if (data['text/html'] == html_output) {\n return [cell, data, j];\n }\n }\n }\n }\n}\n\n// Register the function which deals with the matplotlib target/channel.\n// The kernel may be null if the page has been refreshed.\nif (IPython.notebook.kernel != null) {\n IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n}\n", "text/plain": "" }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": "
", "text/plain": "" }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": "\n T (K) X(Mg)sol X(Fe)sol X(Mg)liq X(Fe)liq\n 1480.31 0.00 1.00 0.00 1.00 \n 1555.95 0.33 0.67 0.04 0.96 \n 1631.58 0.55 0.45 0.09 0.91 \n 1707.21 0.69 0.31 0.16 0.84 \n 1782.85 0.79 0.21 0.23 0.77 \n 1858.48 0.86 0.14 0.33 0.67 \n 1934.11 0.91 0.09 0.44 0.56 \n 2009.75 0.95 0.05 0.59 0.41 \n 2085.38 0.98 0.02 0.77 0.23 \n 2161.01 1.00 0.00 1.00 0.00 \n" } ] } }, "78d6d8c403174d3bb97e3873a768fb70": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "VBoxModel", "state": { "_dom_classes": [ "widget-interact" ], "children": [ "IPY_MODEL_9801ec6457f9468d845e047d9f1c5a2d", "IPY_MODEL_c92f054f6a9f4e0e80a62ddbf1ca78b9", "IPY_MODEL_874d675a6e214f8094456bdd0f3b268c", "IPY_MODEL_90bd050454564d95bfc59e33d3ca8400", "IPY_MODEL_da0875f8696f4202b6d7e93c6e597d70" ], "layout": "IPY_MODEL_babb2d854fa44e8c8f9fd849b3ce3bed" } }, "790d2e8550a6406ca0f58e4a438303fc": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "SliderStyleModel", "state": { "description_width": "" } }, "7a4da1ae85554afe9a2c9cf3d3ce66ed": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": {} }, "7d5bb4051fc440bb9b91658b9fa4a6c0": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "VBoxModel", "state": { "_dom_classes": [ "widget-interact" ], "children": [ "IPY_MODEL_1f53f0e6de904f609e118b011832dc26", "IPY_MODEL_65e4958be792451b8906919e5068c459", "IPY_MODEL_782406e125944a8ca3d0bdb58caf6f0d" ], "layout": "IPY_MODEL_6aced1c8ff064c288894bb9360044bf4" } }, "7da313f6d1014c2c867df6fd4c3ef2fb": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": {} }, "7da933454b9d43e88b4e80e57a0aebb1": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "SliderStyleModel", "state": { "description_width": "" } }, "7dbd51e19e4246049f5bf1821c3d51c8": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "SliderStyleModel", "state": { "description_width": "" } }, "7e2ed74f2dd64ac982f32be9af6db3d9": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": {} }, "7eeba7c338594ed8aaf1be71e53979ec": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "FloatSliderModel", "state": { "description": "ip", "layout": "IPY_MODEL_3855fa75770742a1a31f8344e887eb23", "max": 10, "step": 0.2, "style": "IPY_MODEL_426eae3289e8438a90cd31e572a783a6" } }, "8019e79a21744741876ef809c3d876dc": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": {} }, "805d3b68d73246a2994dbf82195d65e6": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": {} }, "80887143925c4f3384e1b6c1c2bf051c": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": {} }, "809eff45a15b4ce690c44ca285c97d16": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": {} }, "81fb1acbd7674e8d902f8667e83b530e": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": {} }, "8229c7ec9a734c158de10d629c829da0": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "ButtonModel", "state": { "description": "Run Interact", "layout": "IPY_MODEL_59c40e65e4134577a2805084464d5431", "style": "IPY_MODEL_3e19478904c7418daafed09183c5f189" } }, "837d6311d6b24c76bd30204b28aafff7": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "SliderStyleModel", "state": { "description_width": "" } }, "83e1876f124b4b16acef91d6d193f26a": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "SliderStyleModel", "state": { "description_width": "" } }, "845a84af8baf49998ed5d9b70833dea7": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": {} }, "8508b37191b34adbaa3fbc3025058c31": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": {} }, "874d675a6e214f8094456bdd0f3b268c": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "FloatSliderModel", "state": { "description": "tfmax", "layout": "IPY_MODEL_25520d696ad94056a570462d99343739", "max": 3000, "step": 10, "style": "IPY_MODEL_837d6311d6b24c76bd30204b28aafff7", "value": 3000 } }, "8799dd57b5b64492b1e101f1f9c214f6": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "VBoxModel", "state": { "_dom_classes": [ "widget-interact" ], "children": [ "IPY_MODEL_5e8617c3ab764dae94c723b4ef0c1b12", "IPY_MODEL_295170905327481aae949868baeaeab4", "IPY_MODEL_11e3715fedb74dc8915900437aea0dd8", "IPY_MODEL_b6fca3f447f849388a7cef2e1a431204", "IPY_MODEL_36f850887ecb43a2bbec7d5fccc29251", "IPY_MODEL_bd0952e952c44b2c902dbb1515df2537" ], "layout": "IPY_MODEL_6bc6169c704c452890148659b4282e14" } }, "8a82116d7e194223b2b43a663c55664f": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": {} }, "8b2591b8fa3e4546a192e5b3871f46c7": { "model_module": "@jupyter-widgets/output", "model_module_version": "1.0.0", "model_name": "OutputModel", "state": { "layout": "IPY_MODEL_b59fc084f149407c96d547e7c871afa8", "outputs": [ { "name": "stdout", "output_type": "stream", "text": "Temperatura di fusione della forsterite: 2230.00 K\nTemperatura di fusione della fayalite: 1562.67 K\n" }, { "data": { "application/javascript": "/* Put everything inside the global mpl namespace */\nwindow.mpl = {};\n\n\nmpl.get_websocket_type = function() {\n if (typeof(WebSocket) !== 'undefined') {\n return WebSocket;\n } else if (typeof(MozWebSocket) !== 'undefined') {\n return MozWebSocket;\n } else {\n alert('Your browser does not have WebSocket support. ' +\n 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n 'Firefox 4 and 5 are also supported but you ' +\n 'have to enable WebSockets in about:config.');\n };\n}\n\nmpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n this.id = figure_id;\n\n this.ws = websocket;\n\n this.supports_binary = (this.ws.binaryType != undefined);\n\n if (!this.supports_binary) {\n var warnings = document.getElementById(\"mpl-warnings\");\n if (warnings) {\n warnings.style.display = 'block';\n warnings.textContent = (\n \"This browser does not support binary websocket messages. \" +\n \"Performance may be slow.\");\n }\n }\n\n this.imageObj = new Image();\n\n this.context = undefined;\n this.message = undefined;\n this.canvas = undefined;\n this.rubberband_canvas = undefined;\n this.rubberband_context = undefined;\n this.format_dropdown = undefined;\n\n this.image_mode = 'full';\n\n this.root = $('
');\n this._root_extra_style(this.root)\n this.root.attr('style', 'display: inline-block');\n\n $(parent_element).append(this.root);\n\n this._init_header(this);\n this._init_canvas(this);\n this._init_toolbar(this);\n\n var fig = this;\n\n this.waiting = false;\n\n this.ws.onopen = function () {\n fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n fig.send_message(\"send_image_mode\", {});\n if (mpl.ratio != 1) {\n fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n }\n fig.send_message(\"refresh\", {});\n }\n\n this.imageObj.onload = function() {\n if (fig.image_mode == 'full') {\n // Full images could contain transparency (where diff images\n // almost always do), so we need to clear the canvas so that\n // there is no ghosting.\n fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n }\n fig.context.drawImage(fig.imageObj, 0, 0);\n };\n\n this.imageObj.onunload = function() {\n fig.ws.close();\n }\n\n this.ws.onmessage = this._make_on_message_function(this);\n\n this.ondownload = ondownload;\n}\n\nmpl.figure.prototype._init_header = function() {\n var titlebar = $(\n '
');\n var titletext = $(\n '
');\n titlebar.append(titletext)\n this.root.append(titlebar);\n this.header = titletext[0];\n}\n\n\n\nmpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n\n}\n\n\nmpl.figure.prototype._root_extra_style = function(canvas_div) {\n\n}\n\nmpl.figure.prototype._init_canvas = function() {\n var fig = this;\n\n var canvas_div = $('
');\n\n canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n\n function canvas_keyboard_event(event) {\n return fig.key_event(event, event['data']);\n }\n\n canvas_div.keydown('key_press', canvas_keyboard_event);\n canvas_div.keyup('key_release', canvas_keyboard_event);\n this.canvas_div = canvas_div\n this._canvas_extra_style(canvas_div)\n this.root.append(canvas_div);\n\n var canvas = $('');\n canvas.addClass('mpl-canvas');\n canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n\n this.canvas = canvas[0];\n this.context = canvas[0].getContext(\"2d\");\n\n var backingStore = this.context.backingStorePixelRatio ||\n\tthis.context.webkitBackingStorePixelRatio ||\n\tthis.context.mozBackingStorePixelRatio ||\n\tthis.context.msBackingStorePixelRatio ||\n\tthis.context.oBackingStorePixelRatio ||\n\tthis.context.backingStorePixelRatio || 1;\n\n mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n\n var rubberband = $('');\n rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n\n var pass_mouse_events = true;\n\n canvas_div.resizable({\n start: function(event, ui) {\n pass_mouse_events = false;\n },\n resize: function(event, ui) {\n fig.request_resize(ui.size.width, ui.size.height);\n },\n stop: function(event, ui) {\n pass_mouse_events = true;\n fig.request_resize(ui.size.width, ui.size.height);\n },\n });\n\n function mouse_event_fn(event) {\n if (pass_mouse_events)\n return fig.mouse_event(event, event['data']);\n }\n\n rubberband.mousedown('button_press', mouse_event_fn);\n rubberband.mouseup('button_release', mouse_event_fn);\n // Throttle sequential mouse events to 1 every 20ms.\n rubberband.mousemove('motion_notify', mouse_event_fn);\n\n rubberband.mouseenter('figure_enter', mouse_event_fn);\n rubberband.mouseleave('figure_leave', mouse_event_fn);\n\n canvas_div.on(\"wheel\", function (event) {\n event = event.originalEvent;\n event['data'] = 'scroll'\n if (event.deltaY < 0) {\n event.step = 1;\n } else {\n event.step = -1;\n }\n mouse_event_fn(event);\n });\n\n canvas_div.append(canvas);\n canvas_div.append(rubberband);\n\n this.rubberband = rubberband;\n this.rubberband_canvas = rubberband[0];\n this.rubberband_context = rubberband[0].getContext(\"2d\");\n this.rubberband_context.strokeStyle = \"#000000\";\n\n this._resize_canvas = function(width, height) {\n // Keep the size of the canvas, canvas container, and rubber band\n // canvas in synch.\n canvas_div.css('width', width)\n canvas_div.css('height', height)\n\n canvas.attr('width', width * mpl.ratio);\n canvas.attr('height', height * mpl.ratio);\n canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n\n rubberband.attr('width', width);\n rubberband.attr('height', height);\n }\n\n // Set the figure to an initial 600x600px, this will subsequently be updated\n // upon first draw.\n this._resize_canvas(600, 600);\n\n // Disable right mouse context menu.\n $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n return false;\n });\n\n function set_focus () {\n canvas.focus();\n canvas_div.focus();\n }\n\n window.setTimeout(set_focus, 100);\n}\n\nmpl.figure.prototype._init_toolbar = function() {\n var fig = this;\n\n var nav_element = $('
');\n nav_element.attr('style', 'width: 100%');\n this.root.append(nav_element);\n\n // Define a callback function for later on.\n function toolbar_event(event) {\n return fig.toolbar_button_onclick(event['data']);\n }\n function toolbar_mouse_event(event) {\n return fig.toolbar_button_onmouseover(event['data']);\n }\n\n for(var toolbar_ind in mpl.toolbar_items) {\n var name = mpl.toolbar_items[toolbar_ind][0];\n var tooltip = mpl.toolbar_items[toolbar_ind][1];\n var image = mpl.toolbar_items[toolbar_ind][2];\n var method_name = mpl.toolbar_items[toolbar_ind][3];\n\n if (!name) {\n // put a spacer in here.\n continue;\n }\n var button = $('');\n button.click(method_name, toolbar_event);\n button.mouseover(tooltip, toolbar_mouse_event);\n nav_element.append(button);\n }\n\n // Add the status bar.\n var status_bar = $('');\n nav_element.append(status_bar);\n this.message = status_bar[0];\n\n // Add the close button to the window.\n var buttongrp = $('
');\n var button = $('');\n button.click(function (evt) { fig.handle_close(fig, {}); } );\n button.mouseover('Stop Interaction', toolbar_mouse_event);\n buttongrp.append(button);\n var titlebar = this.root.find($('.ui-dialog-titlebar'));\n titlebar.prepend(buttongrp);\n}\n\nmpl.figure.prototype._root_extra_style = function(el){\n var fig = this\n el.on(\"remove\", function(){\n\tfig.close_ws(fig, {});\n });\n}\n\nmpl.figure.prototype._canvas_extra_style = function(el){\n // this is important to make the div 'focusable\n el.attr('tabindex', 0)\n // reach out to IPython and tell the keyboard manager to turn it's self\n // off when our div gets focus\n\n // location in version 3\n if (IPython.notebook.keyboard_manager) {\n IPython.notebook.keyboard_manager.register_events(el);\n }\n else {\n // location in version 2\n IPython.keyboard_manager.register_events(el);\n }\n\n}\n\nmpl.figure.prototype._key_event_extra = function(event, name) {\n var manager = IPython.notebook.keyboard_manager;\n if (!manager)\n manager = IPython.keyboard_manager;\n\n // Check for shift+enter\n if (event.shiftKey && event.which == 13) {\n this.canvas_div.blur();\n // select the cell after this one\n var index = IPython.notebook.find_cell_index(this.cell_info[0]);\n IPython.notebook.select(index + 1);\n }\n}\n\nmpl.figure.prototype.handle_save = function(fig, msg) {\n fig.ondownload(fig, null);\n}\n\n\nmpl.find_output_cell = function(html_output) {\n // Return the cell and output element which can be found *uniquely* in the notebook.\n // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n // IPython event is triggered only after the cells have been serialised, which for\n // our purposes (turning an active figure into a static one), is too late.\n var cells = IPython.notebook.get_cells();\n var ncells = cells.length;\n for (var i=0; i= 3 moved mimebundle to data attribute of output\n data = data.data;\n }\n if (data['text/html'] == html_output) {\n return [cell, data, j];\n }\n }\n }\n }\n}\n\n// Register the function which deals with the matplotlib target/channel.\n// The kernel may be null if the page has been refreshed.\nif (IPython.notebook.kernel != null) {\n IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n}\n", "text/plain": "" }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": "
", "text/plain": "" }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": "\n T (K) X(Mg)sol X(Fe)sol X(Mg)liq X(Fe)liq\n 1562.67 0.00 1.00 0.00 1.00 \n 1636.82 0.31 0.69 0.05 0.95 \n 1710.96 0.52 0.48 0.10 0.90 \n 1785.11 0.66 0.34 0.17 0.83 \n 1859.26 0.76 0.24 0.24 0.76 \n 1933.41 0.84 0.16 0.34 0.66 \n 2007.56 0.90 0.10 0.46 0.54 \n 2081.70 0.94 0.06 0.60 0.40 \n 2155.85 0.97 0.03 0.78 0.22 \n 2230.00 1.00 0.00 1.00 0.00 \n" } ] } }, "b97bd8745dcd4451b90b192dc4a8514c": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "SliderStyleModel", "state": { "description_width": "" } }, "ba3a1463fd294147b1051907f9595959": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "VBoxModel", "state": { "_dom_classes": [ "widget-interact" ], "children": [ "IPY_MODEL_6e44c65af63b4803827813af95ecc1cf", "IPY_MODEL_ef48b08d2ee6442f8578c964c951a70c", "IPY_MODEL_70ccccb2e7b04780960587009226c43f", "IPY_MODEL_09323d73bcfe4b8aa7ee2c858ff18e40" ], "layout": "IPY_MODEL_809eff45a15b4ce690c44ca285c97d16" } }, "babb2d854fa44e8c8f9fd849b3ce3bed": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": {} }, "bb9e73ec131d49119b4664405c416411": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": {} }, "bc28a83274e34916a32cfe52d8e34eca": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": {} }, "bd0952e952c44b2c902dbb1515df2537": { "model_module": "@jupyter-widgets/output", "model_module_version": "1.0.0", "model_name": "OutputModel", "state": { "layout": "IPY_MODEL_966eab5d2bc543d8a00c870808f64dde", "outputs": [ { "name": "stdout", "output_type": "stream", "text": "Temperatura di fusione della forsterite: 2855.71 K\nTemperatura di fusione della fayalite: 2124.33 K\n" }, { "data": { "application/javascript": "/* Put everything inside the global mpl namespace */\nwindow.mpl = {};\n\n\nmpl.get_websocket_type = function() {\n if (typeof(WebSocket) !== 'undefined') {\n return WebSocket;\n } else if (typeof(MozWebSocket) !== 'undefined') {\n return MozWebSocket;\n } else {\n alert('Your browser does not have WebSocket support. ' +\n 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n 'Firefox 4 and 5 are also supported but you ' +\n 'have to enable WebSockets in about:config.');\n };\n}\n\nmpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n this.id = figure_id;\n\n this.ws = websocket;\n\n this.supports_binary = (this.ws.binaryType != undefined);\n\n if (!this.supports_binary) {\n var warnings = document.getElementById(\"mpl-warnings\");\n if (warnings) {\n warnings.style.display = 'block';\n warnings.textContent = (\n \"This browser does not support binary websocket messages. \" +\n \"Performance may be slow.\");\n }\n }\n\n this.imageObj = new Image();\n\n this.context = undefined;\n this.message = undefined;\n this.canvas = undefined;\n this.rubberband_canvas = undefined;\n this.rubberband_context = undefined;\n this.format_dropdown = undefined;\n\n this.image_mode = 'full';\n\n this.root = $('
');\n this._root_extra_style(this.root)\n this.root.attr('style', 'display: inline-block');\n\n $(parent_element).append(this.root);\n\n this._init_header(this);\n this._init_canvas(this);\n this._init_toolbar(this);\n\n var fig = this;\n\n this.waiting = false;\n\n this.ws.onopen = function () {\n fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n fig.send_message(\"send_image_mode\", {});\n if (mpl.ratio != 1) {\n fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n }\n fig.send_message(\"refresh\", {});\n }\n\n this.imageObj.onload = function() {\n if (fig.image_mode == 'full') {\n // Full images could contain transparency (where diff images\n // almost always do), so we need to clear the canvas so that\n // there is no ghosting.\n fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n }\n fig.context.drawImage(fig.imageObj, 0, 0);\n };\n\n this.imageObj.onunload = function() {\n fig.ws.close();\n }\n\n this.ws.onmessage = this._make_on_message_function(this);\n\n this.ondownload = ondownload;\n}\n\nmpl.figure.prototype._init_header = function() {\n var titlebar = $(\n '
');\n var titletext = $(\n '
');\n titlebar.append(titletext)\n this.root.append(titlebar);\n this.header = titletext[0];\n}\n\n\n\nmpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n\n}\n\n\nmpl.figure.prototype._root_extra_style = function(canvas_div) {\n\n}\n\nmpl.figure.prototype._init_canvas = function() {\n var fig = this;\n\n var canvas_div = $('
');\n\n canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n\n function canvas_keyboard_event(event) {\n return fig.key_event(event, event['data']);\n }\n\n canvas_div.keydown('key_press', canvas_keyboard_event);\n canvas_div.keyup('key_release', canvas_keyboard_event);\n this.canvas_div = canvas_div\n this._canvas_extra_style(canvas_div)\n this.root.append(canvas_div);\n\n var canvas = $('');\n canvas.addClass('mpl-canvas');\n canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n\n this.canvas = canvas[0];\n this.context = canvas[0].getContext(\"2d\");\n\n var backingStore = this.context.backingStorePixelRatio ||\n\tthis.context.webkitBackingStorePixelRatio ||\n\tthis.context.mozBackingStorePixelRatio ||\n\tthis.context.msBackingStorePixelRatio ||\n\tthis.context.oBackingStorePixelRatio ||\n\tthis.context.backingStorePixelRatio || 1;\n\n mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n\n var rubberband = $('');\n rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n\n var pass_mouse_events = true;\n\n canvas_div.resizable({\n start: function(event, ui) {\n pass_mouse_events = false;\n },\n resize: function(event, ui) {\n fig.request_resize(ui.size.width, ui.size.height);\n },\n stop: function(event, ui) {\n pass_mouse_events = true;\n fig.request_resize(ui.size.width, ui.size.height);\n },\n });\n\n function mouse_event_fn(event) {\n if (pass_mouse_events)\n return fig.mouse_event(event, event['data']);\n }\n\n rubberband.mousedown('button_press', mouse_event_fn);\n rubberband.mouseup('button_release', mouse_event_fn);\n // Throttle sequential mouse events to 1 every 20ms.\n rubberband.mousemove('motion_notify', mouse_event_fn);\n\n rubberband.mouseenter('figure_enter', mouse_event_fn);\n rubberband.mouseleave('figure_leave', mouse_event_fn);\n\n canvas_div.on(\"wheel\", function (event) {\n event = event.originalEvent;\n event['data'] = 'scroll'\n if (event.deltaY < 0) {\n event.step = 1;\n } else {\n event.step = -1;\n }\n mouse_event_fn(event);\n });\n\n canvas_div.append(canvas);\n canvas_div.append(rubberband);\n\n this.rubberband = rubberband;\n this.rubberband_canvas = rubberband[0];\n this.rubberband_context = rubberband[0].getContext(\"2d\");\n this.rubberband_context.strokeStyle = \"#000000\";\n\n this._resize_canvas = function(width, height) {\n // Keep the size of the canvas, canvas container, and rubber band\n // canvas in synch.\n canvas_div.css('width', width)\n canvas_div.css('height', height)\n\n canvas.attr('width', width * mpl.ratio);\n canvas.attr('height', height * mpl.ratio);\n canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n\n rubberband.attr('width', width);\n rubberband.attr('height', height);\n }\n\n // Set the figure to an initial 600x600px, this will subsequently be updated\n // upon first draw.\n this._resize_canvas(600, 600);\n\n // Disable right mouse context menu.\n $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n return false;\n });\n\n function set_focus () {\n canvas.focus();\n canvas_div.focus();\n }\n\n window.setTimeout(set_focus, 100);\n}\n\nmpl.figure.prototype._init_toolbar = function() {\n var fig = this;\n\n var nav_element = $('
');\n nav_element.attr('style', 'width: 100%');\n this.root.append(nav_element);\n\n // Define a callback function for later on.\n function toolbar_event(event) {\n return fig.toolbar_button_onclick(event['data']);\n }\n function toolbar_mouse_event(event) {\n return fig.toolbar_button_onmouseover(event['data']);\n }\n\n for(var toolbar_ind in mpl.toolbar_items) {\n var name = mpl.toolbar_items[toolbar_ind][0];\n var tooltip = mpl.toolbar_items[toolbar_ind][1];\n var image = mpl.toolbar_items[toolbar_ind][2];\n var method_name = mpl.toolbar_items[toolbar_ind][3];\n\n if (!name) {\n // put a spacer in here.\n continue;\n }\n var button = $('');\n button.click(method_name, toolbar_event);\n button.mouseover(tooltip, toolbar_mouse_event);\n nav_element.append(button);\n }\n\n // Add the status bar.\n var status_bar = $('');\n nav_element.append(status_bar);\n this.message = status_bar[0];\n\n // Add the close button to the window.\n var buttongrp = $('
');\n var button = $('');\n button.click(function (evt) { fig.handle_close(fig, {}); } );\n button.mouseover('Stop Interaction', toolbar_mouse_event);\n buttongrp.append(button);\n var titlebar = this.root.find($('.ui-dialog-titlebar'));\n titlebar.prepend(buttongrp);\n}\n\nmpl.figure.prototype._root_extra_style = function(el){\n var fig = this\n el.on(\"remove\", function(){\n\tfig.close_ws(fig, {});\n });\n}\n\nmpl.figure.prototype._canvas_extra_style = function(el){\n // this is important to make the div 'focusable\n el.attr('tabindex', 0)\n // reach out to IPython and tell the keyboard manager to turn it's self\n // off when our div gets focus\n\n // location in version 3\n if (IPython.notebook.keyboard_manager) {\n IPython.notebook.keyboard_manager.register_events(el);\n }\n else {\n // location in version 2\n IPython.keyboard_manager.register_events(el);\n }\n\n}\n\nmpl.figure.prototype._key_event_extra = function(event, name) {\n var manager = IPython.notebook.keyboard_manager;\n if (!manager)\n manager = IPython.keyboard_manager;\n\n // Check for shift+enter\n if (event.shiftKey && event.which == 13) {\n this.canvas_div.blur();\n // select the cell after this one\n var index = IPython.notebook.find_cell_index(this.cell_info[0]);\n IPython.notebook.select(index + 1);\n }\n}\n\nmpl.figure.prototype.handle_save = function(fig, msg) {\n fig.ondownload(fig, null);\n}\n\n\nmpl.find_output_cell = function(html_output) {\n // Return the cell and output element which can be found *uniquely* in the notebook.\n // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n // IPython event is triggered only after the cells have been serialised, which for\n // our purposes (turning an active figure into a static one), is too late.\n var cells = IPython.notebook.get_cells();\n var ncells = cells.length;\n for (var i=0; i= 3 moved mimebundle to data attribute of output\n data = data.data;\n }\n if (data['text/html'] == html_output) {\n return [cell, data, j];\n }\n }\n }\n }\n}\n\n// Register the function which deals with the matplotlib target/channel.\n// The kernel may be null if the page has been refreshed.\nif (IPython.notebook.kernel != null) {\n IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n}\n", "text/plain": "" }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": "
", "text/plain": "" }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": "\n T (K) X(Mg)sol X(Fe)sol X(Mg)liq X(Fe)liq\n 1554.75 0.00 1.00 0.00 1.00 \n 1629.02 0.31 0.69 0.05 0.95 \n 1703.29 0.52 0.48 0.10 0.90 \n 1777.56 0.66 0.34 0.16 0.84 \n 1851.83 0.77 0.23 0.24 0.76 \n 1926.10 0.84 0.16 0.34 0.66 \n 2000.37 0.90 0.10 0.46 0.54 \n 2074.64 0.94 0.06 0.60 0.40 \n 2148.91 0.97 0.03 0.78 0.22 \n 2223.18 1.00 0.00 1.00 0.00 \n" } ] } }, "bee80a321dbc4087ba3a14eecee9ab66": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "VBoxModel", "state": { "_dom_classes": [ "widget-interact" ], "children": [ "IPY_MODEL_aec14d08f4a94e49abbd8c05a831e04f", "IPY_MODEL_6e22ce8ddce5462a90d6321ab8b5f850", "IPY_MODEL_52ed6629fbb646a6841fef85e110310f", "IPY_MODEL_f163511ba43f4420a5110a46af6ef8b9", "IPY_MODEL_60853f8b923d4f7d8287a2eead2c08ad", "IPY_MODEL_564113d0cd47458d8ddbfc0dee499fce" ], "layout": "IPY_MODEL_30aa811c59b64a88a3f889f4d1d359b7" } }, "beea97db0c1b4376b03145f2b5b1b47f": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": {} }, "bf8590edc8a64335a7a1d863e2bcf1e7": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "FloatSliderModel", "state": { "description": "ip", "layout": "IPY_MODEL_df1fa7557d15469d81a5bd84c4d3520f", "max": 5, "step": 0.1, "style": "IPY_MODEL_24bfcdf205dc43589784c82ce143ca0c", "value": 1 } }, "bf9926951af14ec1aadb81b7f88a7a84": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": {} }, "c0c44025954349f993d33cec997726c6": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "VBoxModel", "state": { "_dom_classes": [ "widget-interact" ], "children": [ "IPY_MODEL_1a873a14fd2044209e8a97f9aa2b929e", "IPY_MODEL_3a864b29faac4d54ba444c6736a26c40", "IPY_MODEL_241e36d66abe4f3c98f1549049bd4f47", "IPY_MODEL_e2772ff247bd4023b10f91065b2620d3" ], "layout": "IPY_MODEL_6eab74a735644faab8d5c19a37d4ff8a" } }, "c12b5dac8c534a8e88c8844f7e635bae": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": {} }, "c147ad6c4bfb47378f567239b2a72840": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "ButtonModel", "state": { "description": "Run Interact", "layout": "IPY_MODEL_805d3b68d73246a2994dbf82195d65e6", "style": "IPY_MODEL_3e95b37e1507416c8926e2c0109300e3" } }, "c18ad315157a48c2b6665e97790d41da": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": {} }, "c21634ba76a04d62a808d56d5e10bef9": { "model_module": "@jupyter-widgets/output", "model_module_version": "1.0.0", "model_name": "OutputModel", "state": { "layout": "IPY_MODEL_7e2ed74f2dd64ac982f32be9af6db3d9" } }, "c4e77bbaa5fe479d82e4f779b5cfc101": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": {} }, "c5b1b074eb4f4e39b367278065f6bd8e": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": {} }, "c61777911e054994b01d3d2c566905ad": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": {} }, "c7af4b76e37c4c7c8b68f6e2b0a95ce4": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "SliderStyleModel", "state": { "description_width": "" } }, "c7b438b399754203b5b0787e1e692f0e": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "ButtonStyleModel", "state": {} }, "c8019d02d2c5465ca8764c0fc369dacc": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": {} }, "c81b076569c942c2b744c534c3cc6882": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": {} }, "c92f054f6a9f4e0e80a62ddbf1ca78b9": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "IntSliderModel", "state": { "description": "nt", "layout": "IPY_MODEL_e7827d5bcf854163b73245ba4bd36cf8", "max": 30, "min": 10, "step": 5, "style": "IPY_MODEL_08e1b5b821334c18bf379bbccf701e0d", "value": 10 } }, "cd695e4de7934c30bf248ce6dccebecd": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": {} }, "cd7e0651adda4bb1bea70e4173ef8159": { "model_module": "@jupyter-widgets/output", "model_module_version": "1.0.0", "model_name": "OutputModel", "state": { "layout": "IPY_MODEL_f1cd73d6b4684207b0f12d8f8df1c7cb", "outputs": [ { "name": "stdout", "output_type": "stream", "text": "Temperatura di fusione della forsterite: 2161.01 K\nTemperatura di fusione della fayalite: 1480.31 K\n" }, { "data": { "image/png": "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\n", "text/plain": "
" }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": "\n T (K) X(Mg)sol X(Fe)sol X(Mg)liq X(Fe)liq\n 1480.31 0.00 1.00 0.00 1.00 \n 1555.95 0.33 0.67 0.04 0.96 \n 1631.58 0.55 0.45 0.09 0.91 \n 1707.21 0.69 0.31 0.16 0.84 \n 1782.85 0.79 0.21 0.23 0.77 \n 1858.48 0.86 0.14 0.33 0.67 \n 1934.11 0.91 0.09 0.44 0.56 \n 2009.75 0.95 0.05 0.59 0.41 \n 2085.38 0.98 0.02 0.77 0.23 \n 2161.01 1.00 0.00 1.00 0.00 \n" } ] } }, "cf47fc66fba24d06b5cd4519befb4bab": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "SliderStyleModel", "state": { "description_width": "" } }, "cf60f36a2ee740ce83e4f82a4b6b1b18": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "IntSliderModel", "state": { "description": "nt", "layout": "IPY_MODEL_dc023d5c12b94333bff01ab1c5e75ee2", "max": 30, "min": 10, "step": 5, "style": "IPY_MODEL_8dd4e7d9a43a4bc1b686f95b513ffaf2", "value": 15 } }, "cf970f7baa824a62b3a54cda395a977c": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "VBoxModel", "state": { "_dom_classes": [ "widget-interact" ], "children": [ "IPY_MODEL_7eeba7c338594ed8aaf1be71e53979ec", "IPY_MODEL_ac0794b0001247bfb536f776dad568e6", "IPY_MODEL_cd7e0651adda4bb1bea70e4173ef8159" ], "layout": "IPY_MODEL_eff93d3ffd0449a7a15143e370f8cc57" } }, "d026742a41e941249b0f001ff7720985": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": {} }, "d04ffcba0c8141eaa5688094244987a2": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": {} }, "d0a94550cbc74a668c20bfc3be245829": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": {} }, "d1845f0f4d3e4613b37f3ff40d579bf8": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": {} }, "d263b049e8ae4d18b576fe8b80d3f22b": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "SliderStyleModel", "state": { "description_width": "" } }, "d2e131cb4b594b12b0d2106ee8d68bfc": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "ButtonModel", "state": { "description": "Run Interact", "layout": "IPY_MODEL_c8019d02d2c5465ca8764c0fc369dacc", "style": "IPY_MODEL_7423ec2f8ed5493ead08908348e65049" } }, "d54e867338a548c6b657f1c1860fb277": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "ButtonStyleModel", "state": {} }, "d646b921a1ca43bc94f96bae6ddd7391": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "VBoxModel", "state": { "_dom_classes": [ "widget-interact" ], "children": [ "IPY_MODEL_1eda3109f52147c8a26e7dbdb464ce75", "IPY_MODEL_976ff94dcda44d23804a6c389f5d1e08", "IPY_MODEL_5b0a88cc26134c609c410bd1be10ef4f", "IPY_MODEL_ffe66e19e9584bcda0e0c6e04c4fc983" ], "layout": "IPY_MODEL_f563403e6d17485fa6bad5fcfb9d58bd" } }, "d6bc55c26d124e52bdfb750732e5e951": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": {} }, "d76d0baa268c4798b6e7668c9e9fde0a": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": {} }, "d8a8a8a12eae41128837419083af63d0": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": {} }, "da0875f8696f4202b6d7e93c6e597d70": { "model_module": "@jupyter-widgets/output", "model_module_version": "1.0.0", "model_name": "OutputModel", "state": { "layout": "IPY_MODEL_1cdfbdde84114361ae454925dd0059ba", "outputs": [ { "name": "stdout", "output_type": "stream", "text": "Temperatura di fusione della forsterite: 2855.71 K\nTemperatura di fusione della fayalite: 2124.33 K\n" }, { "data": { "application/javascript": "/* Put everything inside the global mpl namespace */\nwindow.mpl = {};\n\n\nmpl.get_websocket_type = function() {\n if (typeof(WebSocket) !== 'undefined') {\n return WebSocket;\n } else if (typeof(MozWebSocket) !== 'undefined') {\n return MozWebSocket;\n } else {\n alert('Your browser does not have WebSocket support. ' +\n 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n 'Firefox 4 and 5 are also supported but you ' +\n 'have to enable WebSockets in about:config.');\n };\n}\n\nmpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n this.id = figure_id;\n\n this.ws = websocket;\n\n this.supports_binary = (this.ws.binaryType != undefined);\n\n if (!this.supports_binary) {\n var warnings = document.getElementById(\"mpl-warnings\");\n if (warnings) {\n warnings.style.display = 'block';\n warnings.textContent = (\n \"This browser does not support binary websocket messages. \" +\n \"Performance may be slow.\");\n }\n }\n\n this.imageObj = new Image();\n\n this.context = undefined;\n this.message = undefined;\n this.canvas = undefined;\n this.rubberband_canvas = undefined;\n this.rubberband_context = undefined;\n this.format_dropdown = undefined;\n\n this.image_mode = 'full';\n\n this.root = $('
');\n this._root_extra_style(this.root)\n this.root.attr('style', 'display: inline-block');\n\n $(parent_element).append(this.root);\n\n this._init_header(this);\n this._init_canvas(this);\n this._init_toolbar(this);\n\n var fig = this;\n\n this.waiting = false;\n\n this.ws.onopen = function () {\n fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n fig.send_message(\"send_image_mode\", {});\n if (mpl.ratio != 1) {\n fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n }\n fig.send_message(\"refresh\", {});\n }\n\n this.imageObj.onload = function() {\n if (fig.image_mode == 'full') {\n // Full images could contain transparency (where diff images\n // almost always do), so we need to clear the canvas so that\n // there is no ghosting.\n fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n }\n fig.context.drawImage(fig.imageObj, 0, 0);\n };\n\n this.imageObj.onunload = function() {\n fig.ws.close();\n }\n\n this.ws.onmessage = this._make_on_message_function(this);\n\n this.ondownload = ondownload;\n}\n\nmpl.figure.prototype._init_header = function() {\n var titlebar = $(\n '
');\n var titletext = $(\n '
');\n titlebar.append(titletext)\n this.root.append(titlebar);\n this.header = titletext[0];\n}\n\n\n\nmpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n\n}\n\n\nmpl.figure.prototype._root_extra_style = function(canvas_div) {\n\n}\n\nmpl.figure.prototype._init_canvas = function() {\n var fig = this;\n\n var canvas_div = $('
');\n\n canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n\n function canvas_keyboard_event(event) {\n return fig.key_event(event, event['data']);\n }\n\n canvas_div.keydown('key_press', canvas_keyboard_event);\n canvas_div.keyup('key_release', canvas_keyboard_event);\n this.canvas_div = canvas_div\n this._canvas_extra_style(canvas_div)\n this.root.append(canvas_div);\n\n var canvas = $('');\n canvas.addClass('mpl-canvas');\n canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n\n this.canvas = canvas[0];\n this.context = canvas[0].getContext(\"2d\");\n\n var backingStore = this.context.backingStorePixelRatio ||\n\tthis.context.webkitBackingStorePixelRatio ||\n\tthis.context.mozBackingStorePixelRatio ||\n\tthis.context.msBackingStorePixelRatio ||\n\tthis.context.oBackingStorePixelRatio ||\n\tthis.context.backingStorePixelRatio || 1;\n\n mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n\n var rubberband = $('');\n rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n\n var pass_mouse_events = true;\n\n canvas_div.resizable({\n start: function(event, ui) {\n pass_mouse_events = false;\n },\n resize: function(event, ui) {\n fig.request_resize(ui.size.width, ui.size.height);\n },\n stop: function(event, ui) {\n pass_mouse_events = true;\n fig.request_resize(ui.size.width, ui.size.height);\n },\n });\n\n function mouse_event_fn(event) {\n if (pass_mouse_events)\n return fig.mouse_event(event, event['data']);\n }\n\n rubberband.mousedown('button_press', mouse_event_fn);\n rubberband.mouseup('button_release', mouse_event_fn);\n // Throttle sequential mouse events to 1 every 20ms.\n rubberband.mousemove('motion_notify', mouse_event_fn);\n\n rubberband.mouseenter('figure_enter', mouse_event_fn);\n rubberband.mouseleave('figure_leave', mouse_event_fn);\n\n canvas_div.on(\"wheel\", function (event) {\n event = event.originalEvent;\n event['data'] = 'scroll'\n if (event.deltaY < 0) {\n event.step = 1;\n } else {\n event.step = -1;\n }\n mouse_event_fn(event);\n });\n\n canvas_div.append(canvas);\n canvas_div.append(rubberband);\n\n this.rubberband = rubberband;\n this.rubberband_canvas = rubberband[0];\n this.rubberband_context = rubberband[0].getContext(\"2d\");\n this.rubberband_context.strokeStyle = \"#000000\";\n\n this._resize_canvas = function(width, height) {\n // Keep the size of the canvas, canvas container, and rubber band\n // canvas in synch.\n canvas_div.css('width', width)\n canvas_div.css('height', height)\n\n canvas.attr('width', width * mpl.ratio);\n canvas.attr('height', height * mpl.ratio);\n canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n\n rubberband.attr('width', width);\n rubberband.attr('height', height);\n }\n\n // Set the figure to an initial 600x600px, this will subsequently be updated\n // upon first draw.\n this._resize_canvas(600, 600);\n\n // Disable right mouse context menu.\n $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n return false;\n });\n\n function set_focus () {\n canvas.focus();\n canvas_div.focus();\n }\n\n window.setTimeout(set_focus, 100);\n}\n\nmpl.figure.prototype._init_toolbar = function() {\n var fig = this;\n\n var nav_element = $('
');\n nav_element.attr('style', 'width: 100%');\n this.root.append(nav_element);\n\n // Define a callback function for later on.\n function toolbar_event(event) {\n return fig.toolbar_button_onclick(event['data']);\n }\n function toolbar_mouse_event(event) {\n return fig.toolbar_button_onmouseover(event['data']);\n }\n\n for(var toolbar_ind in mpl.toolbar_items) {\n var name = mpl.toolbar_items[toolbar_ind][0];\n var tooltip = mpl.toolbar_items[toolbar_ind][1];\n var image = mpl.toolbar_items[toolbar_ind][2];\n var method_name = mpl.toolbar_items[toolbar_ind][3];\n\n if (!name) {\n // put a spacer in here.\n continue;\n }\n var button = $('');\n button.click(method_name, toolbar_event);\n button.mouseover(tooltip, toolbar_mouse_event);\n nav_element.append(button);\n }\n\n // Add the status bar.\n var status_bar = $('');\n nav_element.append(status_bar);\n this.message = status_bar[0];\n\n // Add the close button to the window.\n var buttongrp = $('
');\n var button = $('');\n button.click(function (evt) { fig.handle_close(fig, {}); } );\n button.mouseover('Stop Interaction', toolbar_mouse_event);\n buttongrp.append(button);\n var titlebar = this.root.find($('.ui-dialog-titlebar'));\n titlebar.prepend(buttongrp);\n}\n\nmpl.figure.prototype._root_extra_style = function(el){\n var fig = this\n el.on(\"remove\", function(){\n\tfig.close_ws(fig, {});\n });\n}\n\nmpl.figure.prototype._canvas_extra_style = function(el){\n // this is important to make the div 'focusable\n el.attr('tabindex', 0)\n // reach out to IPython and tell the keyboard manager to turn it's self\n // off when our div gets focus\n\n // location in version 3\n if (IPython.notebook.keyboard_manager) {\n IPython.notebook.keyboard_manager.register_events(el);\n }\n else {\n // location in version 2\n IPython.keyboard_manager.register_events(el);\n }\n\n}\n\nmpl.figure.prototype._key_event_extra = function(event, name) {\n var manager = IPython.notebook.keyboard_manager;\n if (!manager)\n manager = IPython.keyboard_manager;\n\n // Check for shift+enter\n if (event.shiftKey && event.which == 13) {\n this.canvas_div.blur();\n // select the cell after this one\n var index = IPython.notebook.find_cell_index(this.cell_info[0]);\n IPython.notebook.select(index + 1);\n }\n}\n\nmpl.figure.prototype.handle_save = function(fig, msg) {\n fig.ondownload(fig, null);\n}\n\n\nmpl.find_output_cell = function(html_output) {\n // Return the cell and output element which can be found *uniquely* in the notebook.\n // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n // IPython event is triggered only after the cells have been serialised, which for\n // our purposes (turning an active figure into a static one), is too late.\n var cells = IPython.notebook.get_cells();\n var ncells = cells.length;\n for (var i=0; i= 3 moved mimebundle to data attribute of output\n data = data.data;\n }\n if (data['text/html'] == html_output) {\n return [cell, data, j];\n }\n }\n }\n }\n}\n\n// Register the function which deals with the matplotlib target/channel.\n// The kernel may be null if the page has been refreshed.\nif (IPython.notebook.kernel != null) {\n IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n}\n", "text/plain": "" }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": "
", "text/plain": "" }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": "\n T (K) X(Mg)sol X(Fe)sol X(Mg)liq X(Fe)liq\n 1480.31 0.00 1.00 0.00 1.00 \n 1555.95 0.33 0.67 0.04 0.96 \n 1631.58 0.55 0.45 0.09 0.91 \n 1707.21 0.69 0.31 0.16 0.84 \n 1782.85 0.79 0.21 0.23 0.77 \n 1858.48 0.86 0.14 0.33 0.67 \n 1934.11 0.91 0.09 0.44 0.56 \n 2009.75 0.95 0.05 0.59 0.41 \n 2085.38 0.98 0.02 0.77 0.23 \n 2161.01 1.00 0.00 1.00 0.00 \n" } ] } }, "e2cfcf41bff04bea908f4f84325845a6": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": {} }, "e3579287f1b94c0cba638a9874e229c5": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "IntSliderModel", "state": { "description": "nt", "layout": "IPY_MODEL_94e64bd8540f4754b922b7db18cef5a7", "max": 30, "min": 10, "step": 5, "style": "IPY_MODEL_2ce92d56300941439dd2567515df4788", "value": 15 } }, "e434de82f82247529c1dbb5d92516151": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": {} }, "e4de9860fe6e40d28caabe7c5adefab5": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "VBoxModel", "state": { "_dom_classes": [ "widget-interact" ], "children": [ "IPY_MODEL_f955e265b43641ccbf996b0aeb08d168", "IPY_MODEL_a3a10c4ddbd540498fc3774fb6d48ff6", "IPY_MODEL_4f14d7d1053445218dd0037372eb8066", "IPY_MODEL_65e6477f2c3244609d2a33794ddf3f22" ], "layout": "IPY_MODEL_139aef72294646ea851906988c134e7b" } }, "e62c05316d924f699fa5e106aac4960a": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": {} }, "e73a0ccea2b94c6f9871d26d045d0bb6": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "VBoxModel", "state": { "_dom_classes": [ "widget-interact" ], "children": [ "IPY_MODEL_642a37208a944d6e8f7a55099a2b9002", "IPY_MODEL_6072a8a168ea40879a7cf9b15d670432", "IPY_MODEL_e15fbfb150f448cabff1530bab200928", "IPY_MODEL_b1553d03f5b44782ab69890bf1a76539" ], "layout": "IPY_MODEL_c4e77bbaa5fe479d82e4f779b5cfc101" } }, "e7827d5bcf854163b73245ba4bd36cf8": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": {} }, "e9ca1903359944afb2f10f3b6549dafb": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": {} }, "ea36477e8d1b4b91b3d1caec950ea37d": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "FloatSliderModel", "state": { "description": "ip", "layout": "IPY_MODEL_6cfcd0730bb8402885310fedb0666c08", "max": 5, "step": 0.1, "style": "IPY_MODEL_dc7ffd7f234747999404bcdc2fe6c7ee" } }, "eadd32b98c2e4352b686385e6acb8825": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": {} }, "eb322c063fb34184acb8764ba206aa67": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "FloatSliderModel", "state": { "description": "tfmax", "layout": "IPY_MODEL_b32df6cd0ce645dba6c2385dafb59285", "max": 3000, "step": 10, "style": "IPY_MODEL_68f56e52e22d401ab8dc7d2fc8f9c30e" } }, "eb65820549bf4d98a13bc05e4a4848a1": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "IntSliderModel", "state": { "description": "nt", "layout": "IPY_MODEL_39583a7f0532433eb4076bc63a389c97", "max": 30, "min": 10, "step": 5, "style": "IPY_MODEL_7da933454b9d43e88b4e80e57a0aebb1", "value": 10 } }, "ebef76df71424172900b6aa0c1882272": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": {} }, "ed3d3c9e9c7544bd9602752c3f63776f": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": {} }, "ee4f26e6bed8402cace277eea362147f": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "ButtonStyleModel", "state": {} }, "ef48b08d2ee6442f8578c964c951a70c": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "IntSliderModel", "state": { "description": "nt", "layout": "IPY_MODEL_a1faefb7a5c340adb19aa605584c532b", "max": 30, "min": 10, "step": 5, "style": "IPY_MODEL_5f41e23927f9476e901d6625ee91f64a", "value": 10 } }, "efe730029cef456da7de0f8a5cce7a3e": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": {} }, "eff93d3ffd0449a7a15143e370f8cc57": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": {} }, "f01e135a7d5d4079a6abc18bb0f4c263": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": {} }, "f0b0bdd8dfea494fb3967724ab77a03e": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "SliderStyleModel", "state": { "description_width": "" } }, "f0dd75a9479d48fb9e64acac09d02359": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": {} }, "f163511ba43f4420a5110a46af6ef8b9": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "FloatSliderModel", "state": { "description": "tfmax", "layout": "IPY_MODEL_0d4d8e75c2a04a7bbb83089c158932af", "max": 1, "step": 0.1, "style": "IPY_MODEL_f7b72d5fdb9f41fea0eafab3f31bbec2" } }, "f1cd73d6b4684207b0f12d8f8df1c7cb": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": {} }, "f1eb5931cdf8477f9d6092ddc93dc8d1": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "VBoxModel", "state": { "_dom_classes": [ "widget-interact" ], "children": [ "IPY_MODEL_0547f924f2e84fd5b41028a368dfeb61", "IPY_MODEL_7541fa3c04e34c85b24f72bd31a44314", "IPY_MODEL_c147ad6c4bfb47378f567239b2a72840", "IPY_MODEL_0bdc6fe830ee4a5189023e3e09cf225d" ], "layout": "IPY_MODEL_eadd32b98c2e4352b686385e6acb8825" } }, "f26de6fa206d47e7a9d2f1486db5f2c9": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": {} }, "f47a9c41d12c4171a0f7117896355926": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": {} }, "f5320fd7605c4a24802cceea792820ac": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": {} }, "f563403e6d17485fa6bad5fcfb9d58bd": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": {} }, "f5b2b3e101c14c10975e3e9244942c95": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": {} }, "f5bce312c8fa41ba92a9ec886763cb1e": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": {} }, "f67bf14df5b44f249acc38bf996e9ae9": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": {} }, "f735dad63a68474f8f41cb68b72d615c": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "VBoxModel", "state": { "_dom_classes": [ "widget-interact" ], "children": [ "IPY_MODEL_a729922a97d446d48ac46a26e314f623", "IPY_MODEL_e3579287f1b94c0cba638a9874e229c5", "IPY_MODEL_71ad91a1cea54e1198f17a2a49069ab2", "IPY_MODEL_d2e131cb4b594b12b0d2106ee8d68bfc", "IPY_MODEL_589f56a4afb44ebf961d8e8f95eef805" ], "layout": "IPY_MODEL_d1845f0f4d3e4613b37f3ff40d579bf8" } }, "f7b72d5fdb9f41fea0eafab3f31bbec2": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "SliderStyleModel", "state": { "description_width": "" } }, "f857002df0d949db8832f8c02c18e62a": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "IntSliderModel", "state": { "description": "nt", "layout": "IPY_MODEL_d76d0baa268c4798b6e7668c9e9fde0a", "max": 30, "min": 10, "step": 5, "style": "IPY_MODEL_5d160ce6b69a4dc0917774d5e512d84c", "value": 10 } }, "f86d1c126a1b47b18cfcd14fade66338": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": {} }, "f955e265b43641ccbf996b0aeb08d168": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "FloatSliderModel", "state": { "description": "ip", "layout": "IPY_MODEL_23c7bbd77a1b423fa74e3a0b1b17df75", "max": 5, "step": 0.1, "style": "IPY_MODEL_3fbbc9efb13343fe8e569c54d55fc307" } }, "fa51c89284b6470bafcf1719883880ea": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": {} }, "faa24ebad27c445bbd37167dbe5c5984": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "SliderStyleModel", "state": { "description_width": "" } }, "faaa154f0ba9464fa6942e56d499863d": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": {} }, "fba5d43c4e8048fa9c9fdcb89cc42d8a": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": {} }, "fe1d625355b1400dbf40d2d397e374eb": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "SliderStyleModel", "state": { "description_width": "" } }, "ffc244a5f24d450db34304a2456a07f7": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": {} }, "ffc823fdfa9a4d05adf4b45dce9173f5": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": {} }, "ffe66e19e9584bcda0e0c6e04c4fc983": { "model_module": "@jupyter-widgets/output", "model_module_version": "1.0.0", "model_name": "OutputModel", "state": { "layout": "IPY_MODEL_f26de6fa206d47e7a9d2f1486db5f2c9", "outputs": [ { "name": "stdout", "output_type": "stream", "text": "Temperatura di fusione della forsterite: 2161.01 K\nTemperatura di fusione della fayalite: 1480.31 K\n" }, { "data": { "application/javascript": "/* Put everything inside the global mpl namespace */\nwindow.mpl = {};\n\n\nmpl.get_websocket_type = function() {\n if (typeof(WebSocket) !== 'undefined') {\n return WebSocket;\n } else if (typeof(MozWebSocket) !== 'undefined') {\n return MozWebSocket;\n } else {\n alert('Your browser does not have WebSocket support. ' +\n 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n 'Firefox 4 and 5 are also supported but you ' +\n 'have to enable WebSockets in about:config.');\n };\n}\n\nmpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n this.id = figure_id;\n\n this.ws = websocket;\n\n this.supports_binary = (this.ws.binaryType != undefined);\n\n if (!this.supports_binary) {\n var warnings = document.getElementById(\"mpl-warnings\");\n if (warnings) {\n warnings.style.display = 'block';\n warnings.textContent = (\n \"This browser does not support binary websocket messages. \" +\n \"Performance may be slow.\");\n }\n }\n\n this.imageObj = new Image();\n\n this.context = undefined;\n this.message = undefined;\n this.canvas = undefined;\n this.rubberband_canvas = undefined;\n this.rubberband_context = undefined;\n this.format_dropdown = undefined;\n\n this.image_mode = 'full';\n\n this.root = $('
');\n this._root_extra_style(this.root)\n this.root.attr('style', 'display: inline-block');\n\n $(parent_element).append(this.root);\n\n this._init_header(this);\n this._init_canvas(this);\n this._init_toolbar(this);\n\n var fig = this;\n\n this.waiting = false;\n\n this.ws.onopen = function () {\n fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n fig.send_message(\"send_image_mode\", {});\n if (mpl.ratio != 1) {\n fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n }\n fig.send_message(\"refresh\", {});\n }\n\n this.imageObj.onload = function() {\n if (fig.image_mode == 'full') {\n // Full images could contain transparency (where diff images\n // almost always do), so we need to clear the canvas so that\n // there is no ghosting.\n fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n }\n fig.context.drawImage(fig.imageObj, 0, 0);\n };\n\n this.imageObj.onunload = function() {\n fig.ws.close();\n }\n\n this.ws.onmessage = this._make_on_message_function(this);\n\n this.ondownload = ondownload;\n}\n\nmpl.figure.prototype._init_header = function() {\n var titlebar = $(\n '
');\n var titletext = $(\n '
');\n titlebar.append(titletext)\n this.root.append(titlebar);\n this.header = titletext[0];\n}\n\n\n\nmpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n\n}\n\n\nmpl.figure.prototype._root_extra_style = function(canvas_div) {\n\n}\n\nmpl.figure.prototype._init_canvas = function() {\n var fig = this;\n\n var canvas_div = $('
');\n\n canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n\n function canvas_keyboard_event(event) {\n return fig.key_event(event, event['data']);\n }\n\n canvas_div.keydown('key_press', canvas_keyboard_event);\n canvas_div.keyup('key_release', canvas_keyboard_event);\n this.canvas_div = canvas_div\n this._canvas_extra_style(canvas_div)\n this.root.append(canvas_div);\n\n var canvas = $('');\n canvas.addClass('mpl-canvas');\n canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n\n this.canvas = canvas[0];\n this.context = canvas[0].getContext(\"2d\");\n\n var backingStore = this.context.backingStorePixelRatio ||\n\tthis.context.webkitBackingStorePixelRatio ||\n\tthis.context.mozBackingStorePixelRatio ||\n\tthis.context.msBackingStorePixelRatio ||\n\tthis.context.oBackingStorePixelRatio ||\n\tthis.context.backingStorePixelRatio || 1;\n\n mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n\n var rubberband = $('');\n rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n\n var pass_mouse_events = true;\n\n canvas_div.resizable({\n start: function(event, ui) {\n pass_mouse_events = false;\n },\n resize: function(event, ui) {\n fig.request_resize(ui.size.width, ui.size.height);\n },\n stop: function(event, ui) {\n pass_mouse_events = true;\n fig.request_resize(ui.size.width, ui.size.height);\n },\n });\n\n function mouse_event_fn(event) {\n if (pass_mouse_events)\n return fig.mouse_event(event, event['data']);\n }\n\n rubberband.mousedown('button_press', mouse_event_fn);\n rubberband.mouseup('button_release', mouse_event_fn);\n // Throttle sequential mouse events to 1 every 20ms.\n rubberband.mousemove('motion_notify', mouse_event_fn);\n\n rubberband.mouseenter('figure_enter', mouse_event_fn);\n rubberband.mouseleave('figure_leave', mouse_event_fn);\n\n canvas_div.on(\"wheel\", function (event) {\n event = event.originalEvent;\n event['data'] = 'scroll'\n if (event.deltaY < 0) {\n event.step = 1;\n } else {\n event.step = -1;\n }\n mouse_event_fn(event);\n });\n\n canvas_div.append(canvas);\n canvas_div.append(rubberband);\n\n this.rubberband = rubberband;\n this.rubberband_canvas = rubberband[0];\n this.rubberband_context = rubberband[0].getContext(\"2d\");\n this.rubberband_context.strokeStyle = \"#000000\";\n\n this._resize_canvas = function(width, height) {\n // Keep the size of the canvas, canvas container, and rubber band\n // canvas in synch.\n canvas_div.css('width', width)\n canvas_div.css('height', height)\n\n canvas.attr('width', width * mpl.ratio);\n canvas.attr('height', height * mpl.ratio);\n canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n\n rubberband.attr('width', width);\n rubberband.attr('height', height);\n }\n\n // Set the figure to an initial 600x600px, this will subsequently be updated\n // upon first draw.\n this._resize_canvas(600, 600);\n\n // Disable right mouse context menu.\n $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n return false;\n });\n\n function set_focus () {\n canvas.focus();\n canvas_div.focus();\n }\n\n window.setTimeout(set_focus, 100);\n}\n\nmpl.figure.prototype._init_toolbar = function() {\n var fig = this;\n\n var nav_element = $('
');\n nav_element.attr('style', 'width: 100%');\n this.root.append(nav_element);\n\n // Define a callback function for later on.\n function toolbar_event(event) {\n return fig.toolbar_button_onclick(event['data']);\n }\n function toolbar_mouse_event(event) {\n return fig.toolbar_button_onmouseover(event['data']);\n }\n\n for(var toolbar_ind in mpl.toolbar_items) {\n var name = mpl.toolbar_items[toolbar_ind][0];\n var tooltip = mpl.toolbar_items[toolbar_ind][1];\n var image = mpl.toolbar_items[toolbar_ind][2];\n var method_name = mpl.toolbar_items[toolbar_ind][3];\n\n if (!name) {\n // put a spacer in here.\n continue;\n }\n var button = $('