{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Noteboook per il calcolo dell'entropia usando il programma python entropy\n",
"\n",
"Calcoliamo l'entropia di stato standard (P=1 atm, T=298.15 K) e l'entropia a una data temperatura *T* (a pressione ambiente) a partire dai dati di calore specifico a pressione costante (misurati a partire da 20 fino a 500K). \n",
"\n",
"Importiamo nel notebook anche la libreria *inspect* che consente di visualizzare il codice python delle funzioni contenute in *entropy.py*."
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [],
"source": [
"import inspect as ins\n",
"%matplotlib inline\n",
"%run entropy.py"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"I valori sperimentali del calore specifico sono salvati nella lista Cp_list: uno per ogni valore di temperatura della lista T_list"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Temperature (K):\n",
" [ 20. 40. 60. 80. 100. 150. 200. 250. 298.15 350.\n",
" 400. 500. ]\n",
"\n",
"Calore specifico (J/K mole):\n",
" [ 0.862 11.054 33.631 62.668 94.27 171.54 235.85 286.48 325.31\n",
" 359.03 385.8 422.8 ]\n"
]
}
],
"source": [
"print(\"Temperature (K):\\n\", T_list)\n",
"print(\"\\nCalore specifico (J/K mole):\\n\", Cp_list)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Volendo visualizzare meglio la lista dei valori T/Cp si può ricorrere alla libreria *pandas* (che è già importata all'interno di *entropy.py* con l'alias *pd*) si procede nel seguente modo:\n",
"\n",
"- si costruisce una lista delle due liste, a cui diamo il nome di *serie*\n",
"- riconfezioniamo *serie* nella forma di un *dataframe* Pandas, specificando i nomi da attribuire alle righe"
]
},
{
"cell_type": "code",
"execution_count": 38,
"metadata": {},
"outputs": [],
"source": [
"serie=(T_list,Cp_list)\n",
"df=pd.DataFrame(serie, index=['Temp','Cp_exp'])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Si stampa il dataframe eliminando (opzionalmente) la numerazione delle colonne con *header=False*)"
]
},
{
"cell_type": "code",
"execution_count": 39,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Temp 20.000 40.000 60.000 80.000 100.00 150.00 200.00 250.00 298.15 350.00 400.0 500.0\n",
"Cp_exp 0.862 11.054 33.631 62.668 94.27 171.54 235.85 286.48 325.31 359.03 385.8 422.8\n"
]
}
],
"source": [
"print(df.to_string(header=False))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Facciamo un fit del calore specifico in funzione della temperatura, usando la funzione *fit*; il fit è fatto sulla base di una polinomiale del tipo:\n",
"\n",
"$$C_P(T)=aT+bT^{-1}+cT^2+dT^{-2}+eT^{0.5}+fT^{-0.5}$$\n",
"\n",
"I valori delle potenze sono già contenuti nella funzione *Cp* che calcola il calore specifico a una data *T*:"
]
},
{
"cell_type": "code",
"execution_count": 46,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"def Cp(T,*par):\n",
" cp=par[0]+par[1]*T + par[2]*T**(-1) + par[3]*T**2 + \\\n",
" par[4]*T**(-2) + par[5]*T**0.5 + par[6]*T**(-0.5)\n",
" return cp\n",
"\n"
]
}
],
"source": [
"print(ins.getsource(Cp))"
]
},
{
"cell_type": "code",
"execution_count": 47,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"def fit(prt=True):\n",
" par=reg.par\n",
" opt,err=curve_fit(Cp, T_list, Cp_list, p0=par)\n",
" reg.set(opt)\n",
" if prt:\n",
" reg.out()\n",
"\n"
]
}
],
"source": [
"print(ins.getsource(fit))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"il fit è fatto usando la funzione *curve_fit* della libreria *scipy.optimize* [qui](https://docs.scipy.org/doc/scipy/reference/generated/scipy.optimize.curve_fit.html) la documentazione generale. *curve_fit* vuole come argomenti \n",
"\n",
"- il nome della funzione da usarsi per il fit (*Cp*)\n",
"- la lista dei valori della variabile indipendente (*T_list*)\n",
"- la lista dei valori della variabile dipendente (*Cp_list*)\n",
"- un *guess* iniziale per i parametri da ottimizzare (*p0=par* : parametri iniziali che sono stati tutti posti al valore di 1). "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"I valori ottimizzati dei coefficienti della polinomiale sono restituiti da *curve_fit* nella lista *opt* (la lista *err* contiene le corrispondenti deviazioni standard) e sono salvati nella variabile *reg.par* (istanza della classe fpar) usando il metodo *.set* "
]
},
{
"cell_type": "code",
"execution_count": 48,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Stored parameters of the Cp function\n",
"parameter 0, value: -2.8925e+03\n",
"parameter 1, value: -5.5659e+00\n",
"parameter 2, value: -3.3466e+04\n",
"parameter 3, value: 1.3063e-03\n",
"parameter 4, value: 6.4400e+04\n",
"parameter 5, value: 2.2991e+02\n",
"parameter 6, value: 1.5600e+04\n"
]
}
],
"source": [
"fit()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Usando il polinomio ottimizzato, ci si può calcolare il calore specifico a qualsiasi temperatura con la funzione *Cp* passandogli oltre al valore di temperatura, anche la lista dei coefficienti conservata in *reg.par*:"
]
},
{
"cell_type": "code",
"execution_count": 51,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"327.2260236965142"
]
},
"execution_count": 51,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"Cp(300,*reg.par)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Si noti l'uso dell'asterisco che precede il nome *reg.par*: specifica il passaggio alla funzione *Cp* di una lista di valori di lunghezza arbitraria.\n",
"\n",
"Usiamo la funzione *check_cp* per visualizzare i risultati del fit. Il codice della funzione è:"
]
},
{
"cell_type": "code",
"execution_count": 50,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"def check_cp():\n",
" delta=1.\n",
" Tmin=min(T_list)-delta\n",
" Tmax=max(T_list)+delta\n",
" npoint=100\n",
" if Tmin < 0.5:\n",
" Tmin=0.5\n",
" \n",
" T_plot=np.linspace(Tmin,Tmax,npoint)\n",
" Cp_plot=Cp(T_plot,*reg.par)\n",
" \n",
" plt.figure()\n",
" plt.plot(T_plot,Cp_plot,\"k-\",label=\"Cp fit\")\n",
" plt.plot(T_list, Cp_list,\"k*\",label=\"Cp exp\")\n",
" plt.xlabel(\"T (K)\")\n",
" plt.ylabel(\"Cp (J/mol K)\")\n",
" plt.legend(frameon=False)\n",
" plt.title(\"Calore specifico a pressione costante\")\n",
" plt.show()\n",
" \n",
" Cp_fit=np.array([])\n",
" for it in T_list:\n",
" icp=Cp(it,*reg.par)\n",
" Cp_fit=np.append(Cp_fit,icp)\n",
" \n",
" delta=Cp_list-Cp_fit\n",
"# Stampa di una tabella di valori T, Cp_exp, Cpfit e delta,\n",
"# usando le funzioni della libreria Pandas\n",
" serie=(T_list,Cp_list,Cp_fit,delta)\n",
" df=pd.DataFrame(serie, index=['T','Cp_exp','Cp_fit','delta'])\n",
" df=df.T\n",
" df2=df.round(3)\n",
" print(\"\")\n",
" print(df2.to_string(index=False)) \n",
"\n"
]
}
],
"source": [
"print(ins.getsource(check_cp))"
]
},
{
"cell_type": "code",
"execution_count": 52,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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v6djx44AbN68mcWLF/srbGNMgPnhhx+YN28eTzzxBDfffDPOfYgcRYsWJTY2lr179+bpewb1Fc2BSFW57777eOCBB5g+fTrg7MwPHTrETTfdlKt1vPvuuzzxxBP06tULgJkzZ2asJzExkVatWvkneGOMpw4ePMjatWszHtu2bQMgLCyMmJgYoqKi2Lx5M8WKFSM1NZWSJUtSoUKFvA1CVYP28ac//UkDzYoVK7R+/fpZzlu1apXWr19f27dvr7fccov26dNHz549e94yEydO1DJlymjVqlW1e/fuunfvXq1Vq5aePn1aK1eurGXLltU//vGPOn369PyojjHGjw4cOKDTpk3T3r17a40aNRTnntR61VVXacuWLfW5557Tjz/+WFNSUlRV9b777tOHH35YN2/erA8//LDed999l/W+QKJms18t0C2FAQMGsHnz5jxdZ1RUFGPHjs12/tatW/nTn/6U7fzPP/+c7du3U6VKFVq2bMns2bMzuocAevfuTUJCAm3atKFjx47s27cPgGLFijFy5EgSExMZN25cntXHGJN/kpOTWbVqFStXrmT16tXs2rULgNKlS1O/fn369OlDw4YNiYqKokiRC3fPs2fPzng+fvx4v8RYoJNCIIqJiaFaNee+4d26dSMhIeG8pGCMKTiOHTvG6tWrWbFiBStXrmTHjh0AlCpVigYNGvDwww/TqFEj6tSpQ+HChT2O1lGgk0JOv+j9pVatWhnHALLie6Aoq2ljTPBKSUkhISGBFStWsHz5cjZu3IiqEhkZSYMGDejZsyeNGzembt26AZMEMivQScELjRs3Zvjw4UycOJG//e1vAGzYsIGTJ08CTvfR3r17qVKlCjNmzCAuLi7X6y5RogQnTpzwS9zGmEt37tw5vvzyS5YuXcrSpUtJSEggJSWFIkWKcPvtt/PMM8/QuHFjbrvtNooVK+Z1uLlip6TmMRFhzpw5LFu2jOrVq1OrVi1GjBjBtddeC8Add9zB0KFD+cMf/sANN9zAfffdl+t133333Wzfvp2oqChmzJjhryoYY3Jw6NAhpk6dSo8ePbj22muJiopi8ODBJCUlER8fz8KFCzl27Bgff/wxzzzzDPXr1w+ahAD5cPGaiBQGEoHvVbWNiNwATAeuBr4AeqjqGREJA94B/gT8AHRR1X05rTvYLl5bvXo1//znP1m4cKHXoRhj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\n",
"text/plain": [
"