{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Obliczanie parametrów pracy sprężarki chłodniczej dla dowolnego czynnika chłodniczego\n",
"Opracowanie: Bartosz Zajaczkowski ([bartosz.zajaczkowski@pwr.edu.pl](mailto:bartosz.zajaczkowski@pwr.edu.pl) )\n",
"\n",
"Politechnika Wrocławska, Wydział Mechaniczno-Energetyczny\n",
"Katedra Termodynamiki, Teorii Maszyn i Urządzeń Cieplnych \n",
"\n",
"Wyb. Wyspiańskiego 27, 50-370 Wrocław, T: +48 71 320 3505, W: http://fluid.itcmp.pwr.edu.pl/~zajaczkowski\n",
"\n",
"**Uaktualnione: 1.03.2018**\n",
"\n",
"Przedstawiony poniżej algorytm umożliwia dobór sprężarki dla dowolnego czynnika chłodniczego przez przeliczenie parametrów pracy czynnika chłodniczego wskazanego przez producenta, na parametry pracy dla dowolnego innego czynnika. \n",
"\n",
"### Nomenklatura\n",
"* **referencyjny czynnik chłodniczy** - czynnik, dla którego producent opisał szczegółowe parametry pracy sprężarki (np. R22 lub R134a)\n",
"* **docelowy czynnik chłodniczy** - czynnik, który docelowo zostanie wykorzystany w instalacji chłodniczej - najczęściej będzie to jeden z nowych czynników, które mają zastąpić wycofane CFC, HCFC oraz wycofywane HFC.\n",
"\n",
"### Procedura doboru sprężarki chłodniczej \n",
"\n",
"* [Obliczenia obiegów i dobór sprężarki](#Obliczenia-obiegów-i-dobór-sprężarki)\n",
"\n",
" * [Wstępne założenie parametrów pracy obiegu chłodniczego/pompy ciepła](#Wstępne-założenie-parametrów-pracy-obiegu-chłodniczego/pompy-ciepła)\n",
" * [Identyfikacja referencyjnego obiegu chłodniczego (dla referencyjnego czynnika chłodniczego)](#Identyfikacja-referencyjnego-obiegu-chłodniczego-(dla-referencyjnego-czynnika-chłodniczego))\n",
" * [Dobór sprężarki dla wskazanego referencyjnego czynnika chłodniczego (z katalogu producenta)](#Dobór-sprężarki-dla-wskazanego-referencyjnego-czynnika-chłodniczego-(z-katalogu-producenta))\n",
" - [Identyfikacja obiegu chłodniczego dla docelowego czynnika chłodniczego](#Identyfikacja-obiegu-chłodniczego-dla-docelowego-czynnika-chłodniczego)\n",
" \n",
"\n",
"* [Weryfikacja dobranej sprężarki dla czynnika docelowego](#Weryfikacja-dobranej-sprężarki-dla-czynnika-docelowego)\n",
"\n",
" * [Sprawdzenie warunku sprężu](#Sprawdzenie-warunku-sprężu)\n",
" * [Obliczenie stopnia dostarczania λ](#Obliczenie-stopnia-dostarczania-$\\lambda$)\n",
" * [Sprawdzenie warunku wydajności chłodniczej $Q_0$ sprężarki dla czynnika docelowego](#Sprawdzenie-warunku-wydajności-chłodniczej-$Q_0$-sprężarki-dla-czynnika-docelowego)\n",
" * [Obliczenie sprawności izentropowej $n$ i mocy sprężarki](#Obliczenie-sprawności-izentropowej-$n$-i-mocy-sprężarki)\n",
" \n",
" \n",
"* [Wizualizacja obiegów na wykresie $\\mathrm{log}\\,p-h$](#Wizualizacja-obiegów-na-wykresie-$\\mathrm{log}\\,p-h$)\n"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Populating the interactive namespace from numpy and matplotlib\n"
]
}
],
"source": [
"%pylab inline\n",
"import CoolProp.CoolProp as CP"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Obliczenia obiegów i dobór sprężarki"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Wstępne założenie parametrów pracy obiegu chłodniczego/pompy ciepła\n",
"Sprężarkę zawsze dobiera się dla wstępnie znanych/zakładanych parametrów obiegu chłodniczego/pompy ciepła. \n",
"\n",
"Odpowiednio:\n",
"* wydajność chłodnicza $Q_0$\n",
"* temperatura parowania $T_0$\n",
"* temperatura skraplania $T_k$\n",
"* temperatura przegrzania $\\Delta T_{sup}$\n",
"\n",
"Wg EN-12900, w obliczeniu obiegu nie bierze się pod uwagę dochłodzenia."
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"# wydajność systemu chłodniczego\n",
"Q_0 = 10000 # [kW]\n",
"\n",
"# temperatura wrzenia czynnika chłodniczego\n",
"T_0 = 0 + 273.15 # [K]\n",
"\n",
"# założone przegrzanie par czynnika (efekt działania termostatycznego zaworu dławiącego, itp.)\n",
"dT_sup = 20 # [°C] - wg. EN 12900\n",
"\n",
"#temperatura skraplania czynnika chłodniczego\n",
"T_k = 40 + 273.15 # [K]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Identyfikacja referencyjnego obiegu chłodniczego (dla referencyjnego czynnika chłodniczego)\n",
"W pierwszej kolejności należy przeprowadzić identyfikację obiegu chłodniczego dla czynnika referencyjnego, w taki sam sposób jak czynnika docelowego. Celem jest ustalenie strumienia przepływu masy referencyjnego czynnika chłodniczego oraz wyznaczenie objętości właściwej par czynnika na wlocie do sprężarki.\n",
"\n",
"Dla rozróżnienia, wszystkie parametry refencyjnego czynnika chłodniczego oznaczone są indeksem *ref*.\n",
"\n",
"Katalogi udostępniane przez producentów sprężarek zwykle podają charakterystyki pracy urządzeń dla czynnika referencyjnego, np. **R22** lub **R134a**. Aby wykorzystać dane urządzenie z naszym docelowym czynnikiem chłodniczym, z katalogu należy dobrać sprężarkę dla założonych parametrów pracy, ale dla referencyjnego czynnika chłodniczego, a następnie dokonać przeliczenia parametrów pracy dla czynnika docelowego."
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"# czynnik referencyjny do doboru sprężarki\n",
"refrigerant_ref = \"R134a\""
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Następnie wyznacza się ciśnienia pracy dla założonych temperatur parowania i skraplania, po czym oblicza się wartości entalpii w punktach charakterystycznych obiegu. Znajomość entalpii pozwala obliczyć właściwe ciepło parowania, skraplania oraz właściwą pracę sprężania. \n",
"\n",
"Ciepło właściwe parowania:\n",
"$$q_0 = h_1 - h_4$$\n",
"Ciepło właściwe skraplania:\n",
"$$q_k = h_2 - h_3$$\n",
"Właściwa praca obiegu:\n",
"$$l_{ob} = h_2 - h_1$$\n",
"\n",
"W następnej kolejności można obliczyć strumień masy czynnika chłodniczego, teoretyczną wydajność cieplną skraplacza oraz teoretyczną moc sprężarki.\n",
"\n",
"Strumień masy czynnika chłodniczego:\n",
"$$m_0 = \\frac{Q_0}{q_0}$$\n",
"\n",
"Teoretyczna wydajność cieplna skraplacza:\n",
"$$Q_k = m_0 \\cdot q_k$$\n",
"\n",
"Teoretyczna moc sprężarki:\n",
"$$L = m_0 \\cdot l_{ob}$$"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"* Strumień masy czynnika chłodniczego: 0.063 [kg/s]\n",
"* Objętość właściwa par czynnika referencyjnego na wlocie do sprężarki: 0.076 [m3/kg]\n"
]
}
],
"source": [
"# ciśnienia pracy w obiegu referencyjnym\n",
"p_0_ref = CP.PropsSI('P','Q',1,'T',T_0,refrigerant_ref)\n",
"p_k_ref = CP.PropsSI('P','Q',1,'T',T_k,refrigerant_ref)\n",
"\n",
"# wartości entalpii oraz entropii w punktach składających się na obieg referencyjny\n",
"if dT_sup > 0: h1_ref = CP.PropsSI('H','P',p_0_ref,'T',T_0+dT_sup,refrigerant_ref)\n",
"else: h1_ref = CP.PropsSI('H','Q',1,'T',T_0,refrigerant_ref)\n",
"s1_ref = CP.PropsSI('S','H',h1_ref,'P',p_0_ref,refrigerant_ref)\n",
"h2_ref = CP.PropsSI('H','S',s1_ref,'P',p_k_ref,refrigerant_ref)\n",
"h3_ref = CP.PropsSI('H','Q',0,'T',T_k,refrigerant_ref)\n",
"h4_ref = h3_ref\n",
"\n",
"# właściwa wydajność chłodnicza parownika oraz praca sprężarki\n",
"q_0_ref = h1_ref - h4_ref\n",
"q_k_ref = h2_ref - h3_ref\n",
"l_ob_ref = h2_ref - h1_ref\n",
"\n",
"# strumień masy czynnika referencyjnego dla znanej wydajności chłodniczej\n",
"m_0_ref = Q_0 / q_0_ref\n",
"print (\"* Strumień masy czynnika chłodniczego: %.3f [kg/s]\" % m_0_ref)\n",
"\n",
"# objętość właściwa par czynnika referencyjnego na wlocie do sprężarki\n",
"v1_ref = 1 / CP.PropsSI('D','H',h1_ref,'P',p_0_ref,refrigerant_ref)\n",
"print (\"* Objętość właściwa par czynnika referencyjnego na wlocie do sprężarki: %.3f [m3/kg]\" % v1_ref)"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"* Strumień objętości pary przetłaczany przez sprężarkę: 17.151 [m3/h]\n",
"* Właściwa objętościowa wydajność chłodnicza: 2098949 [J/m3]\n"
]
}
],
"source": [
"# strumień objętości pary czynnika referencyjnego przetłaczanej przez sprężarkę\n",
"V_sk_ref = (m_0_ref * v1_ref) * 3600\n",
"print (\"* Strumień objętości pary przetłaczany przez sprężarkę: %.3f [m3/h]\" % (V_sk_ref))\n",
"\n",
"# właściwa objętościowa wydajność chłodnicza obliczona dla czynnika referencyjnego\n",
"q_v_ref = q_0_ref / v1_ref\n",
"print (\"* Właściwa objętościowa wydajność chłodnicza: %.0f [J/m3]\" % (q_v_ref))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Teoretyczna wydajność ziębienia oraz moc sprężarki obliczone dla czynnika referencyjnego."
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"scrolled": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"* Teoretyczna wydajność chłodnicza sprężarki: 10000 [W]\n",
"* Teoretyczna moc sprężarki: 1791 [W]\n"
]
}
],
"source": [
"Q0_t_ref = V_sk_ref * q_v_ref / (3600)\n",
"print (\"* Teoretyczna wydajność chłodnicza sprężarki: %.0f [W]\" % (Q0_t_ref))\n",
"\n",
"L_t_ref = m_0_ref * l_ob_ref\n",
"print (\"* Teoretyczna moc sprężarki: %.0f [W]\" % (L_t_ref))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Dobór sprężarki dla wskazanego referencyjnego czynnika chłodniczego (z katalogu producenta)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Posługując się kartą katalogową lub programem komputerowym, należy ustalić wartości trzech parametrów pracy urządzenia. Parametrów które zostaną następnie wykorzystane do przeliczenia wydajności ziębniczej i mocy sprężarki na wartości osiągane przy zastosowaniu czynnika docelowego . Są to odpowiednio:\n",
"* **Pojemność skokowa** [m3/h] (teoretyczny strumień objętości pary przetłaczany przez sprężarkę.)\n",
"* **Wydajność ziębnicza** w założonym punkcie pracy [W]\n",
"* **Moc sprężarki** w założonym punkcie pracy [W]\n",
"\n",
"Jeżeli w katalogu producenta nie ma podanej pojemności skokowej m3/h to trzeba ją wyliczyć. Należy odczytać w tym celu **pojemność cylindra** wyrażoną zwykle w cm3 i przeliczyć ją na m3 mnożąc razy 10-6. Następnie uzyskaną wartość **pomnożyć przez** podane przez producenta **obroty silnika** (pamiętając o przeliczeniu ich z min-1 na h-1)."
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"* Pojemność skokowa: 24.900 [m3/h]\n",
"* Wydajność ziębnicza: 13110.000 [W]\n",
"* Moc sprężarki: 3880.000 [W]\n"
]
}
],
"source": [
"# odczytana z katalogu pojemność skokowa\n",
"V_th = 24.9\n",
"print (\"* Pojemność skokowa: %.3f [m3/h]\" % (V_th))\n",
"\n",
"# odczytana z katalogu rzeczywista wydajność sprężarki\n",
"Q0_rz_ref = 13110 # [W] - przykładowa wartość wprowadzona na podstawie katalogu\n",
"print (\"* Wydajność ziębnicza: %.3f [W]\" % (Q0_rz_ref)) \n",
"\n",
"# odczytana z katalogu rzeczywista moc sprężarki\n",
"L_rz_ref = 3880 # [W] - przykładowa wartość wprowadzona na podstawie katalogu\n",
"print (\"* Moc sprężarki: %.3f [W]\" % (L_rz_ref)) "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Identyfikacja obiegu chłodniczego dla docelowego czynnika chłodniczego\n",
"\n",
"Przystępując do identyfikacji w pierwszej kolejności należy wskazać czynnik chłodniczy, który docelowo ma funkcjonować w projektowanym obiegu."
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"refrigerant = \"R1234yf\""
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"A następnie przeprowadzić obliczenia obiegu w sposób analogiczny jak dla czynnika referencyjnego."
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"* Strumień masy czynnika chłodniczego: 0.079 [kg/s]\n",
"* Objętość właściwa par czynnika docelowego na wlocie do sprężarki: 0.062 [m3/kg]\n"
]
}
],
"source": [
"# ciśnienia pracy w obiegu docelowym\n",
"p_0 = CP.PropsSI('P','Q',1,'T',T_0,refrigerant)\n",
"p_k = CP.PropsSI('P','Q',1,'T',T_k,refrigerant)\n",
"\n",
"# wartości entalpii oraz entropii w punktach składających się na obieg docelowy\n",
"if dT_sup > 0: h1 = CP.PropsSI('H','P',p_0,'T',T_0+dT_sup,refrigerant)\n",
"else: h1 = CP.PropsSI('H','Q',1,'T',T_0,refrigerant)\n",
"s1 = CP.PropsSI('S','H',h1,'P',p_0,refrigerant)\n",
"h2 = CP.PropsSI('H','S',s1,'P',p_k,refrigerant)\n",
"h3 = CP.PropsSI('H','Q',0,'T',T_k,refrigerant)\n",
"h4 = h3\n",
"\n",
"# właściwa wydajność chłodnicza parownika oraz praca sprężarki\n",
"q_0 = h1 - h4\n",
"q_k = h2 - h3\n",
"l_ob = h2 - h1\n",
"\n",
"# strumień masy czynnika docelowego dla znanej wydajności chłodniczej (projektowanej)\n",
"m_0 = Q_0 / q_0\n",
"print (\"* Strumień masy czynnika chłodniczego: %.3f [kg/s]\" % m_0)\n",
"\n",
"# objętość właściwa par czynnika docelowego na wlocie do sprężarki\n",
"v1 = 1 / CP.PropsSI('D','H',h1,'P',p_0,refrigerant)\n",
"v2 = 1 / CP.PropsSI('D','H',h2,'P',p_0,refrigerant)\n",
"print (\"* Objętość właściwa par czynnika docelowego na wlocie do sprężarki: %.3f [m3/kg]\" % v1)"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"* Strumień objętości pary przetłaczany przez sprężarkę: 17.706 [m3/h]\n",
"* Właściwa objętościowa wydajność chłodnicza: 2098949 [J/m3]\n"
]
}
],
"source": [
"# strumień objętości pary czynnika docelowego przetłaczanej przez sprężarkę\n",
"V_sk = (m_0 * v1) * 3600\n",
"print (\"* Strumień objętości pary przetłaczany przez sprężarkę: %.3f [m3/h]\" % (V_sk))\n",
"\n",
"# właściwa objętościowa wydajność chłodnicza obliczona dla czynnika docelowego\n",
"q_v = q_0_ref / v1_ref\n",
"print (\"* Właściwa objętościowa wydajność chłodnicza: %.0f [J/m3]\" % (q_v))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Teoretyczna wydajność ziębienia oraz moc sprężarki obliczone dla docelowego czynnika chłodniczego."
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"* Teoretyczna wydajność chłodnicza sprężarki: 14518 [W]\n",
"* Teoretyczna moc sprężarki: 1831 [W]\n"
]
}
],
"source": [
"Q0_t = V_th * q_v / (3600)\n",
"print (\"* Teoretyczna wydajność chłodnicza sprężarki: %.0f [W]\" % (Q0_t))\n",
"\n",
"L_t = m_0 * l_ob\n",
"print (\"* Teoretyczna moc sprężarki: %.0f [W]\" % (L_t))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Weryfikacja dobranej sprężarki dla czynnika docelowego"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Sprawdzenie warunku sprężu\n",
"Przed przystąpieniem do dalszych obliczeń należy przyjrzeć się jaki spręż jest niezbędny do realizacji sprężania obu analizowanych czynników. Generalnie stopień dostarczania sprężarki jest zależny (przede wszystkim) od wartości sprężu, dlatego należy sprawdzić czy dla analizowanych czynników wartości sprężu nie będą się znacząco od siebie nie różnić.\n",
"$$\\Pi = \\frac{p_0}{p_k}$$\n",
"\n",
"Na potrzeby obliczeń projektowych powinno się przyjąć, że różnica nie powinna przekraczać kilku procent (nie jest to sztywna reguła). Jeśli różnica jest zbyt duża należy założyć, że konkretny rozpatrywany model sprężarki nie będzie sie nadawać do zastosowania z docelowym, planowanym w projekcie czynnikiem roboczym. Trzeba wtedy wybrać inny model sprężarki lub rozważyć zmianę czynnika.\n",
"\n"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Stopień sprężania R134a: 3.472\n",
"Stopień sprężania R1234yf: 3.225\n",
"Różnica: -7.7%\n"
]
}
],
"source": [
"print (\"Stopień sprężania %s: %.3f\" % (refrigerant_ref,p_k_ref/p_0_ref))\n",
"print (\"Stopień sprężania %s: %.3f\" % (refrigerant,p_k/p_0))\n",
"\n",
"print (\"Różnica: %.1f%%\" % ((1-(p_k_ref/p_0_ref)/(p_k/p_0))*100))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Obliczenie stopnia dostarczania $\\lambda$\n",
"\n",
"**Stopień dostarczania** (nazywany również współczynnikiem przetłaczania lub sprawnością objętościową sprężarki) jest to stosunek ilościowy pary przetłaczanej przez sprężarkę $\\dot{V_{sk}}$ do jej teoretycznej wydajności skokowej $\\dot{V_{th}}$.\n",
"\n",
"$$\\lambda_{sp} = \\frac{\\dot{V_{sk}}}{\\dot{V_{th}}}$$\n",
"\n",
"Współczynnik ten odzwierciedla wszystkie straty występujące w sprężarce rzeczywistej.\n",
"\n",
"$$\\lambda_{sp} = \\lambda_V \\lambda_T \\lambda_D \\lambda_N$$\n",
"\n",
"gdzie poszczególne składowe iloczynu to odpowiednio:\n",
"\n",
"* $\\lambda_V$ - **wskaźnik przestrzeni szkodliwej** (biorący pod uwagę wpływ wartości względnej przestrzeni szkodliwej, zastępczego wykładnika politropy rozprężania oraz wartości sprężu)\n",
"* $\\lambda_T$ - **wskaźnik oddziaływania termicznego ścian cylindrów**\n",
"* $\\lambda_D$ - **wskaźnik strat dławienia** w zaworach roboczych sprężarki\n",
"* $\\lambda_N$ - **wskaźnik strat nieszczelności**\n",
"\n",
"Dla sprężarek napełnianych czynnikami syntetycznymi wartości stopnia dostarczania wahają sie w granicach od 0.6 do 0.9.\n",
"\n",
"\n",
"#### Obliczanie wskaźnika przestrzeni szkodliwej\n",
"Wskaźnik przestrzeni szkodliwej $\\lambda_V$ oblicza się z zależności:\n",
"\n",
"$$\\lambda_V = 1 + C - C \\cdot \\left( \\frac{p_k}{p_0} \\right)^\\frac{1}{\\gamma}$$\n",
"\n",
"Współczynnik przestrzeni szkodliwej $C$ jest to stosunek pojemności skokowej do objętości przestrzeni szkodliwej.\n",
"\n",
"$$C = \\frac{\\dot{V_{sp}}}{\\dot{V_{szk}}}$$\n",
"\n",
"Jego wartość zwykle nie przekracza 0.05 i tyle należy przyjąć na potrzeby niniejszych obliczeń.\n",
"\n",
"Wykładnik politropy dla sprężania izentropowego $\\gamma$:\n",
"\n",
"$$\\gamma = \\frac{c_p}{c_v}$$"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"* Wskaźnik przestrzeni szkodliwej λ_V: 0.909 [-]\n"
]
}
],
"source": [
"# współczynnik przestrzeni szkodliwej\n",
"C = 0.05\n",
"\n",
"# wykładnik politropy\n",
"γ = CP.PropsSI('C','H',h1,'P',p_0,refrigerant) / CP.PropsSI('O','H',h1,'P',p_0,refrigerant)\n",
"\n",
"# wskaźnik przestrzeni szkodliwej\n",
"λ_V = 1 + C - C * pow(p_k/p_0,1/γ)\n",
"print (\"* Wskaźnik przestrzeni szkodliwej λ_V: %.3f [-]\" % (λ_V))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Obliczanie wskaźnika oddziaływania termicznego\n",
"Przybliżoną wartość współczynnika oddziaływania termicznego można obliczyć na podstawie stosunku temperatur.\n",
"$$\\lambda_T = \\frac{T_0}{T_k}$$"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"* Wskaźnik oddziaływania termicznego λ_T: 0.872 [-]\n"
]
}
],
"source": [
"# wskaźnik oddziaływania termicznego\n",
"λ_T = T_0/T_k\n",
"print (\"* Wskaźnik oddziaływania termicznego λ_T: %.3f [-]\" % (λ_T))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Założenie pozostałych wskaźników\n",
"\n",
"Można założyć wskaźnik strat nieszczelności $\\lambda_N = 0.98$. Wartość typowa dla nowych sprężarek to ponad 0.99, natomiast dla sprężarek częściowo wyeksplowatowanych 0.95-0.98."
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"* Wskaźnik strat dławienia λ_D: 0.950 [-]\n",
"* Wskaźnik strat nieszczelności λ_N: 0.980 [-]\n"
]
}
],
"source": [
"# wskaźnik strat dławienia\n",
"λ_D = 0.95\n",
"print (\"* Wskaźnik strat dławienia λ_D: %.3f [-]\" % (λ_D))\n",
"\n",
"# wskaźnik strat nieszczelności\n",
"λ_N = 0.98\n",
"print (\"* Wskaźnik strat nieszczelności λ_N: %.3f [-]\" % (λ_N))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Obliczenie wartości stopnia dostarczania"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"* Stopień dostarczania λ: 0.738 [-]\n"
]
}
],
"source": [
"λ_sp = λ_V * λ_D * λ_T * λ_N\n",
"print (\"* Stopień dostarczania λ: %.3f [-]\" % (λ_sp))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Sprawdzenie warunku wydajności chłodniczej $Q_0$ sprężarki dla czynnika docelowego\n",
"\n",
"Przyjmując założenie, że stopień dostarczania pozostaje taki sam bez względu na zastosowany czynnik (przy założeniu, że spręże dla obu czynników nie odbiegają od siebie zbytnio), można teraz obliczyć:\n",
"* strumień masy czynnika docelowego \n",
"* wydajność ziębienia tej sprężarki przy zastosowaniu czynnika docelowego.\n",
"\n",
"Jeżeli obliczona wydajność ziębienia **jest większa lub równa projektowanej**, oznacza to że sprężarka została dobrana prawidłowo. Jeśli nie, to należy dobrać większą sprężarkę. Najlepiej zrobić to wybierając kolejny model z tego samego typoszeregu sprężarek."
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"* Strumień masy czynnika docelowego przetłaczany przez sprężarkę: 0.082 [kg/s]\n",
"* Wydajność ziębienia przy docelowym czynniku: 10.381 [kW]\n",
"DOBRZE! Sprężarka wygląda na dobraną prawidłowo!\n",
"* Moc sprężarki (teoretyczna): 1.900 [kW]\n",
"* Moc sprężarki podana przez producenta dla czynnika referencyjnego: 3880.000 [W]\n"
]
}
],
"source": [
"# strumień masy czynnika docelowego przy założeniu, że stopień dostarczania pozostaje taki sam\n",
"# jak dla czynnika referencyjnego\n",
"m_0 = λ_sp * V_th / (3600 * v1)\n",
"print (\"* Strumień masy czynnika docelowego przetłaczany przez sprężarkę: %.3f [kg/s]\" % (m_0))\n",
"\n",
"Q_0_sp = m_0 * q_0\n",
"print (\"* Wydajność ziębienia przy docelowym czynniku: %.3f [kW]\" % (Q_0_sp/1000))\n",
"\n",
"if Q_0_sp > Q_0: print (\"DOBRZE! Sprężarka wygląda na dobraną prawidłowo!\")\n",
"else: print (\"ŻLE! Sprężarka dobrana nieprawidłowo!\")\n",
"\n",
"L_sp = m_0 * l_ob\n",
"print (\"* Moc sprężarki (teoretyczna): %.3f [kW]\" % (L_sp/1000))\n",
"print (\"* Moc sprężarki podana przez producenta dla czynnika referencyjnego: %.3f [W]\" % (L_rz_ref))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Obliczenie sprawności izentropowej $n$ i mocy sprężarki\n",
"Sprawność izentropową urządzenia oblicza się porównując teoretyczną moc sprężarki dla czynnika referencyjnego $L_{t,ref}$ do mocy podanej przez producenta dla zadanych warunków pracy dla czynnika referencyjnego $L_{rz,ref}$. Tak obliczona sprawność izentropowa zostanie potem wykorzystana do obliczenia parametrów pracy sprężarki po zastosowaniu czynnika docelowego. **Przyjmujemy założenie, że wartość sprawności izentropowej dla czynnika docelowego będzie taka sama jak dla referencyjnego.**"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"* Współczynnik sprawności izentropowej n: 0.461 [-]\n",
"* Moc sprężarki (przy założeniu stałej wartości sprawności izentropowej): 4118.106 [W]\n"
]
}
],
"source": [
"n_sp_ref = L_t_ref / L_rz_ref\n",
"print (\"* Współczynnik sprawności izentropowej n: %.3f [-]\" % (n_sp_ref)) \n",
"print (\"* Moc sprężarki (przy założeniu stałej wartości sprawności izentropowej): %.3f [W]\" % (L_sp/n_sp_ref))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Wizualizacja obiegów na wykresie $\\mathrm{log}\\,p-h$\n",
"\n",
"W pierwszej kolejności należy obliczyć wartość entalpii na końcu procesu sprężania z uwzględnieniem sprawności izentropowej $n$, proporcjonalnie za pomocą wrozu:\n",
"\n",
"$$h_{2^\\prime} = h_1 + \\frac{h_2 - h_1}{n}$$\n",
"\n",
"Obliczenie korekcyjne wykonuje się dla położenia punktu 2 na wykresie dla czynnika docelowego oraz referencyjnego użytego do doboru sprężakrki."
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"# czynnik referencyjny\n",
"h2b_ref = h1_ref + (h2_ref - h1_ref) / n_sp_ref\n",
"\n",
"# czynnik docelowy\n",
"h2b = h1 + (h2 - h1) / n_sp_ref"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Wyznaczenie linii nasycenia cieczy i pary obu czynników."
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"* Ciśnienie krytyczne R1234yf: 3382200 [Pa]\n",
"* Ciśnienie krytyczne R134a: 4059280 [Pa]\n"
]
}
],
"source": [
"steps = 60\n",
"pres = ones(steps)\n",
"satl = zeros(steps)\n",
"satv = zeros(steps)\n",
"pres_ref = ones(steps)\n",
"satl_ref = zeros(steps)\n",
"satv_ref = zeros(steps)\n",
"\n",
"p_min = p_0 - 50000\n",
"p_crit = CP.PropsSI(refrigerant,'pcrit')\n",
"p_step = (p_crit - p_min)/(steps-1)\n",
"\n",
"for i in range(0,steps):\n",
" pres[i] = p_min + i * p_step\n",
" satl[i] = CP.PropsSI('H','Q',0,'P',pres[i],refrigerant)\n",
" satv[i] = CP.PropsSI('H','Q',1,'P',pres[i],refrigerant)\n",
"\n",
"print (\"* Ciśnienie krytyczne %s: %.0f [Pa]\" % (refrigerant, p_crit))\n",
"\n",
"p_min_ref = p_0 - 50000\n",
"p_crit_ref = CP.PropsSI(refrigerant_ref,'pcrit')\n",
"p_step_ref = (p_crit_ref - p_min_ref)/(steps-1)\n",
"\n",
"for i in range(0,steps):\n",
" pres_ref[i] = p_min_ref + i * p_step_ref\n",
" satl_ref[i] = CP.PropsSI('H','Q',0,'P',pres_ref[i],refrigerant_ref)\n",
" satv_ref[i] = CP.PropsSI('H','Q',1,'P',pres_ref[i],refrigerant_ref)\n",
"\n",
"print (\"* Ciśnienie krytyczne %s: %.0f [Pa]\" % (refrigerant_ref, p_crit_ref))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Wygenerowanie wykresu"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Text(0,0.5,'Cisnienie [Pa]')"
]
},
"execution_count": 21,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAdMAAAFBCAYAAAAsUEXlAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4wLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvpW3flQAAIABJREFUeJzs3XmczdX/wPHXmTHDWLIVERHKEmWZ\nyt6iRUXSon1PKq2KKLKUJKQkiSK0IEuIhNKiyBdh7EuIJMsYzGZm7j2/P841vxlmuTNz7z2fe+/7\n+XjMw8xn7r2f9xyfe9+fz/mc8z5Ka40QQgghCi/CdgBCCCFEsJNkKoQQQhSRJFMhhBCiiCSZCiGE\nEEUkyVQIIYQoIkmmQgghRBFJMhVCCCGKSJKpEEIIUUSSTIUQQogiKmY7gMI6++yzdc2aNf2+H7fb\nDUBERHifd0g7SBucIu0gbQDh0QarV68+rLU+x5vHBm0yrVmzJqtWrfL7fhITEwEoXbq03/flZNIO\n0ganSDtIG0B4tIFSao+3jw3dUwohhBAiQCSZCiGEEEUkyVQIIYQoIkmmQgghRBFJMhVCCCGKSJKp\nEEIIUUSSTIUQQogikmQqhBBCFJEkUyGEEKKIJJkKIYQQRRS05QSFECJfx4/DoUNw5Ahcdhl8+y3s\n2AEJCTBwILzwAqSmmt/37QuHD8OqVVChAnToYH6XkGB+rloVoqJs/0XCoYI2mbrd7szakP6UnJzs\n930EA2kHaYNTrLfD4cNE/vknrlatiFyyhMg1a1Dx8Zx8802i33mHSE/N7pSZM4kePhx14AC6YkXS\n6tYlMjUVzj0X3aAB7hMn4OWXoXhxVGIiunRpVGQkEXXqoI4exZWYSERcHJFLlqASEkh7+WWKLV5M\nsXnziNaaEyNGEPXrr0SsXo0uV470V14hIi4uc3+utm0hJsZuW/mR9ePAYZTW2nYMBaKU6gh0rFWr\nVtd169b5fX+nDpiSJUv6fV9OJu0gbXBKoNtB/fcfkcuW4WrRgmLTpxP522+4LruM9G7diPjrL0hN\nRVeogK5dGyIjQSm/x5TZBoCKj0cdPYr7wguJWLeOiC1bUIcOkd6tG9GDB0N6Oq62bXF17AghtMJK\nOLwfypQps1prHevNY4MumZ4SGxurZdWYwJF2kDY4xe/t4HbDypVQtiysXQtffw1t28K990KlSv7Z\nZwF53QYul/kbVqyAp5+Ge+6BK66A+++Hc7xa2cuxwuH9oJTyOpmGzmmSECJ4aQ0HD8L69dCyJXz5\npdl+zz0wa5a5t+mQRFogkZHQrBl0726umCdMgLPPhtGj4dgxWLTI/O0i6EkyFVbVrFkTpZTjvgKx\n8LwA0tPhzTehRQuYPh0uvhh+/x1GjYL69W1H53slS8IDD5jBTy4XfPcdtGsHAbhlJfwraAcgidCw\nZ88enHirQQXgvlvYcrlgwQKYMQM++wxiY6FXL4iOth1ZYFWoACNHwv795ur0s8+geXOoV892ZKIQ\nJJkKIQLj6FGTMAcPNgNxBg82XZ/t29uOzK6qVc2/zZvDM8/AtddC7952YxIFJslUCOFf//4L77wD\nq1fDuHHw1lu2I3KmevXMPdQ1a2DvXnPCcd55tqMSXpJ7psJRIiMjady4MQ0bNqRjx44kJCRk/q59\n+/aUK1eODh06ZHvOY489xqWXXsoll1zCHXfcccb84xkzZqCUIhCjv0UWmzebkbhJSXDzzfDzz9KF\nmZ+ICNPtnZAAt98Oy5fbjkh4SZKpcJSYmBjWrl3Lhg0bqFChAh9++GHm73r27MmUKVPOeM7IkSNZ\nt24d69ev5/zzz2f06NGZvztx4gSjRo3iiiuuCEj8AnP/76GHTEWh2rWhTh3TdSn3ob3XqJGp1vTJ\nJ2aqkHA8SabCsVq0aME///yT+XO7du0oU6bMGY8766yzANBak5KSkm3wUL9+/ejVqxclSpTI3LZ7\n927atGlD06ZNadq0Kb///rsf/4owsmWLmT959Ci8/TbMnAlNm9qOKnidfTZ8+qnp+p0/33Y0Ih+S\nTIUjuVwufvjhB2655RavHv/II49w7rnnsmXLFp599lkA/vzzT/bu3XtGt3ClSpVYvHgxa9asYdq0\naTz33HM+jz+saG1G5vbuDS+9ZEapVqliO6rQ0bo1jBgBv/xiOxKRB0mmwlFSUlJo3LgxFStWJD4+\nnuuuu86r502cOJH9+/dTv359pk2bhtvt5sUXX2TEiBFnPDY9PZ2uXbvSqFEj7rzzTjZt2uTrPyM8\nxMeb5PnOO9C5M3zzDTRpYjuq0FO6tDlZiYuzHYnIgyRT4Sin7pnu2bOHtLS0bPdM8xMZGcldd93F\nzJkzOXHiBBs2bOCqq66iZs2arFixgltuuYVVq1YxcuRIKleuzLp161i1ahVpaWl+/ItCkMtl7uM9\n8ogp89erl6n0I/ynQgVTRal/f7OSjXAcSabCkcqWLcuoUaMYPnw46enpuT5Oa82OHTsyv583bx71\n6tWjbNmyHD58mN27d7N7926aN2/O3LlziY2N5dixY1SpUoWIiAimTJmCy+UK1J8V3LSG2bOJuf56\nM9p0zhzo1EkGFgVS7drw2mu2oxA5kGQqHKtJkyZceumlTJ06FYA2bdpw55138sMPP1CtWjW+//57\ntNY89NBDNGrUiEaNGvHvv//y+uuv5/m6Tz/9NJMmTaJ58+Zs27aNUqVKBeLPCW4ZGTBvHixbRsrM\nmeZKyY/cbjh5UsrWnuGBB0zDZJkyJpxBVo3JRzisjOANf7WDUsqx5QRPjyssj4WEBNO1WKpUZrGF\nwrSD1pCWBtu2mXr2FSqYuvVjxpifW7eGSy6B5583j3/4YThxAmbPNs+dNAmmTjX1DM4+G954w9SA\niI83P7dpA8nJpvRt8eK+boQzWT8Wfv/dLHZucbFy620QAAVZNUYqIAkhznTqRKJHD9OV6+Wo6r17\n4fvvTeLs3Nks+gJw3XUmQX78sUmirVqZHssbbzQ/V6kCZcqcOWD1VHIFs473kSNw+LB5bEyMmYWz\nfbupk//RR/DTT2bfCxaYwcU7dkDdujBsWMCWOg2M3383A5K6dbMdifCQK9N8hMPZlzfkyjSMjoXN\nm82SZ8OGmcvF02Rth/R0U9ho40Z46ilTq6FdO1Nut1q1QAeendam+NK2bWa6a6dOUK4c3HUX3HRT\n0V7b+rGQmgpXXglLl5rLcQust0EAyJWpEKJwduwwifT993Mt/ac1rF0bQatW0LWrqdPeoYOpYf/V\nVwGONw9KmVklp+pGzJlj6kps3mzKBU+dCk88YXqwg06JEqaxA9GnLbwiyVRYVaNGDUcud1ajRg3b\nIQTWzz/D2LFmUe6FC3PtD501C4YOjeHii91ceqlZNSyY1Ktnvk6eNIn22mvNreCrr7YdWSHUqmXO\nBj76SKYmOYCVbt6YmJgDqamplQO+Yx+pUaMGu3fvth1GQIVDl84///zDI488Qt++fWnbtu0Zvw/Z\nNhg92tyDe+89cwPzNGvXmod06gSNG0NMTCIlSoRGO6Snm8T6ySema9rbOvyOORb69jVLt51W5SsQ\nHNMGflSQbl4rU2NSU1Mra60J1q89e/bYaDbhZ1WrVuXhhx/mgQceoHPnzmzbts12SP41fz5MnAiP\nPWauSLMkUq3NYKJt20wlu27doGNHqF7d9DCGiqgoc4Xavr3psp4zx3ZEBdS1qxl1JayTeaZCeCil\nuPfee9m6dSvNmzenZcuWPPfccxw+fNh2aL6ltUmg33wDt91mhsVmMW+e6facMAEuugimTDGzMEJZ\nvXqmd7tCBTh2zHY0BVCjBgwZIlWRHMARybQwa1jed9991K1bl4YNG/Loo49mVsmZM2cOl1xyCY0b\nNyY2NpZly5Zle97x48c577zzeOaZZ/KNa9SoUdSvX5/77rvPB3+lCBYlSpTglVdeYfPmzWitqV+/\nPsOGDSM1FD6w5s+H/fvh1Vdh/HgoWxYw+XXuXDP1JCnJLEPav7/lWAOsVCkzX/Xtt+Hdd21HUwCT\nJ5svYZUjkmlh1rC877772LJlC3FxcaSkpPDJJ58AZpmudevWsXbtWiZMmMDjjz+e7Xn9+vXjyiuv\n9CquMWPGsGDBAr744osi/HUiWJ1zzjl88MEHLFu2jN9++43Y2FhmzJjhyKk8+Tp+3FyNzpxp+jVr\n18781YYN5kp02TKzNvXdd8M551iM1bLBg01xiFmzbEfipZtvNmufCqscN5q3RYsWrF+/PvPndu3a\n8VMO9wRuyjJR7PLLL2ffvn1A9pvhSUlJ2UaKrl69mv/++4/27dtzao7qp59+yoYNGxg5ciQA48eP\nZ/PmzSQnJ/PXX39xyy238Oijj/Liiy9m2/+pm+/hIjk52XYI1px33nl8/vnnLF68mIEDB/Lhhx8y\nePBgWrZsaTs0r6idO9EVKhB50024brjBbExMZP36CFatiqBDBxfjx0OVKvrUr/IUDsfCe++Zikr/\n/Zfz1BlHtUHp0kQ1bUp6gD+THNUGDuCIK9NTCrqGJZjltKZMmUL79u0zt82ePZt69epx8803M2HC\nBADcbjcvvfQSw4YNy/b8u+++m7lz52Z2E0+cOJFHHnmEsWPHUrVqVZYuXXpGIhXhqVWrVixcuJAn\nn3ySxx9/nPvuu4+dO3faDit3J08S/dprRA8cCGXK/H8iBXr2jObtt6Np3dpFpUo6M5EKo0QJMzvo\n1ltjOHnSdjT5S3/oIdT+/bbDCGuOuDI9tYbl7t27adasmddrWIIpWt62bVvatGmTua1z58507tyZ\nX375hX79+rFkyRLGjBnDTTfdRPXq1bM9v1SpUlxzzTV8++231K9fn/T0dBo1apTvfkN5OHhewvXv\nzuqxxx7j3nvv5f3336ddu3bcf//99OvXj4oVK9oO7f+53WZETdOm8N57RClFaqoZmXvXXWbhEVOh\nqPAfAaF+LJQubXrGR48unev9Y8e0wR9/mFG9b7wR8F07pg0sc8SVaWHXsBw4cCCHDh3i3VxGC7Rt\n25adO3dy+PBhli9fzujRo6lZsyYvv/wykydPpnfv3gA8/vjjfPbZZ5lXpULkJyYmht69e7Np0ybS\n09OpV68eI0aM4KTtyxitzaTQF1+EO+4w9f2UYtMmc1+0cmW44AL7pf6CxaOPBsl651dcAStX2o4i\nvNmYp2l2+/9KlSqV+f2aNWt09erVdVpaWua2pUuX6ptvvjnbc8aPH69btGihk5OTs23fvn27drvd\nWmutV69eratWrZr58ykTJ07U3bt3z7atSZMmulq1ajo+Pj5zW40aNfShQ4f06U6PPxycOHFCnzhx\nwnYYVuXVBps3b9a33HKLvuCCC/S0adPOOOYCpkcPrfv31zo9XWut9c6dWg8ZonVSktZHj/pmF+F2\nLBw9qvX772ff5sg2mDIloLtzZBv4GLBKe5nXHHFlmpU3a1gCPPnkk/z333+0aNGCxo0bM2jQIABm\nzpxJw4YNady4Md27d2fatGlelavr0qULrVq1onz58v7740TIqlevHnPmzOHTTz9l6NChtGzZkt9/\n/z1wASxZYtYrGzIEBgyAYsUYPdrM6W/f3tRCL1cucOGEkrJlzZTcgwdtR5KPiy+GQ4dsRxG2rJQT\nVEppG/vNS4cOHXjxxRdp165dvo9VSpGamsrhw4epWrWqI2vL+lo4lA7Lj7dt4Ha7+eKLL3jttde4\n4oorePvtt6mdZSqKT2ltSspt2wbjxkH58vzyiynVWqUK1Kxpprv4UjgeC199ZZZ2feop87Mj2+Dd\nd00ffufOAdmdI9vAxxxfTtBJEhISuOiii4iJifEqkZ7y008/0bRpUypWrEjbtm3p3r07Y8eO5bff\nfuNYUJVQEb4WERHBAw88wNatW2nSpAlXXHEFPXr0ID4+3rc72rvXrKB97bUwfTopJcrTrZupV1+7\ntqmD7utEGq66dDElFR12DZBdvXpmWRxhhVyZFkLWtS4PHjxIXFxctq9NmzZRsWJFGjVqlO2rbt26\nREdHW46+cMLhLDQ/hW2D//77jwEDBjBz5kz69OnD008/TfGiLp317bemusDkyXDhhfzwA7Rta+rV\n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\n",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# plot results\n",
"plt.figure()\n",
"\n",
"# grid and axes\n",
"plt.axes([0.025, 0.025, 0.95, 0.95])\n",
"plt.grid(which='major', axis='x', linewidth=0.25, linestyle='-', color='0.65')\n",
"plt.grid(which='minor', axis='x', linewidth=0.25, linestyle='-', color='0.65')\n",
"plt.grid(which='major', axis='y', linewidth=0.25, linestyle='-', color='0.65')\n",
"plt.grid(which='minor', axis='y', linewidth=0.25, linestyle='-', color='0.65')\n",
"\n",
"# data\n",
"plt.plot([h4,h1], [p_0,p_0], 'b-', linewidth=0.75)\n",
"plt.plot([h1,h2b], [p_0,p_k], 'b-', linewidth=0.75)\n",
"plt.plot([h2b,h3], [p_k,p_k], 'b-', linewidth=0.75)\n",
"plt.plot([h3,h4], [p_k,p_0], 'b-', linewidth=0.75)\n",
"\n",
"plt.semilogy(satl, pres, 'b--', linewidth=0.75)\n",
"plt.semilogy(satv, pres, 'b--', linewidth=0.75)\n",
"\n",
"# data (ref)\n",
"plt.plot([h4_ref,h1_ref], [p_0_ref,p_0_ref], 'r-', linewidth=0.75)\n",
"plt.plot([h1_ref,h2b_ref], [p_0_ref,p_k_ref], 'r-', linewidth=0.75)\n",
"plt.plot([h2b_ref,h3_ref], [p_k_ref,p_k_ref], 'r-', linewidth=0.75)\n",
"plt.plot([h3_ref,h4_ref], [p_k_ref,p_0_ref], 'r-', linewidth=0.75)\n",
"\n",
"plt.semilogy(satl_ref, pres_ref, 'r--', linewidth=0.75)\n",
"plt.semilogy(satv_ref, pres_ref, 'r--', linewidth=0.75)\n",
"\n",
"\n",
"# opis punktów\n",
"\n",
"plt.annotate(refrigerant, \n",
" xy=(satl[round(0.6 * steps)],pres[round(0.6 * steps)]), xytext=(satl[round(0.9 * steps)]-160000,pres[round(0.9 * steps)]), bbox=dict(boxstyle=\"square\", fc=\"w\"),\n",
" arrowprops=dict(facecolor='red', arrowstyle=\"->\"), horizontalalignment='center', \n",
" verticalalignment='top', fontsize=10)\n",
"plt.annotate(refrigerant_ref, \n",
" xy=(satl_ref[round(0.6 * steps)],pres_ref[round(0.6 * steps)]), xytext=(satl_ref[round(0.9 * steps)]-80000,pres_ref[round(0.9 * steps)]), bbox=dict(boxstyle=\"square\", fc=\"w\"),\n",
" arrowprops=dict(facecolor='red', arrowstyle=\"->\"), horizontalalignment='center', \n",
" verticalalignment='top', fontsize=10)\n",
"\n",
"plt.xlabel('Entalpia [J/kg]',fontsize=9)\n",
"plt.ylabel('Cisnienie [Pa]',fontsize=9)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": []
}
],
"metadata": {
"anaconda-cloud": {},
"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.0"
}
},
"nbformat": 4,
"nbformat_minor": 1
}