From 5204b8c4bc3bbc9322e3e1b6cf43b1eff2c1c0c9 Mon Sep 17 00:00:00 2001 From: Yeongdo Park Date: Fri, 25 Nov 2022 17:20:42 +0900 Subject: [PATCH] 221125-1720 --- Oven Brick Model.ipynb | 1458 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 1458 insertions(+) create mode 100644 Oven Brick Model.ipynb diff --git a/Oven Brick Model.ipynb b/Oven Brick Model.ipynb new file mode 100644 index 0000000..9da05f5 --- /dev/null +++ b/Oven Brick Model.ipynb @@ -0,0 +1,1458 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "id": "9e47daa3", + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "import cantera as ct\n", + "import pde\n", + "\n", + "from matplotlib import pyplot as plt\n", + "%matplotlib widget" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "74655ac0", + "metadata": {}, + "outputs": [], + "source": [ + "grid = pde.CartesianGrid([[0, 0.14]], 32, periodic=False)\n", + "field = pde.ScalarField(grid, 0)" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "d447beea", + "metadata": {}, + "outputs": [], + "source": [ + "eq = pde.PDE({\"c\": \"0.0001 * laplace(c)\"}, bc=[{\"derivative\": 1}, {\"value\": 0}])" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "9d3fc1f0", + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "7ebf14f5ef9c4496aa8cf0ad6cbcdb7c", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/1.0 [00:00\n", + "
\n", + " Figure\n", + "
\n", + " \n", + " \n", + " " + ], + "text/plain": [ + "Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[[-9.13274059e-01 -7.43918268e-01 -5.86270837e-01 -4.46341021e-01\n", + " -3.27877044e-01 -2.32185354e-01 -1.58399513e-01 -1.04059738e-01\n", + " -6.58146580e-02 -4.00727502e-02 -2.34909844e-02 -1.32608365e-02\n", + " -7.21098208e-03 -3.77871294e-03 -1.90906437e-03 -9.30354685e-04\n", + " -4.37592261e-04 -1.98764517e-04 -8.72410176e-05 -3.70242282e-05\n", + " -1.52022957e-05 -6.04318828e-06 -2.32719325e-06 -8.68724285e-07\n", + " -3.14546983e-07 -1.10537627e-07 -3.77240727e-08 -1.25104480e-08\n", + " -4.03442906e-09 -1.26786676e-09 -3.95715740e-10 -1.48152483e-10]]\n" + ] + } + ], + "source": [ + "solution = eq.solve(solution, t_range=1, dt=0.001)\n", + "solution.plot()\n", + "print(solution.gradient(bc=[{\"derivative\": 1}, {\"value\": 0}]).data)" + ] + }, + { + "cell_type": "markdown", + "id": "3164bd16", + "metadata": {}, + "source": [ + "# 연료 조성 반영 입구 조건 계산" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "1ebaaaef", + "metadata": {}, + "outputs": [], + "source": [ + "gas = ct.Solution('gri30.xml')" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "d03cafb5", + "metadata": {}, + "outputs": [], + "source": [ + "gas.TPX = 600 + 273.15, ct.one_atm, \"H2:6.42, O2:0.39, N2:47.28, CH4:1.79, CO:24.25, CO2:19.72, C2H4:0.13, C2H6:0.04\"\n", + "fuel_comp = gas.X" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "5bddc916", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " gri30:\n", + "\n", + " temperature 873.15 K\n", + " pressure 1.0133e+05 Pa\n", + " density 0.40894 kg/m^3\n", + " mean mol. weight 29.3 kg/kmol\n", + " phase of matter gas\n", + "\n", + " 1 kg 1 kmol \n", + " --------------- ---------------\n", + " enthalpy -2.9427e+06 -8.6222e+07 J\n", + " internal energy -3.1905e+06 -9.3481e+07 J\n", + " entropy 8194.9 2.4011e+05 J/K\n", + " Gibbs function -1.0098e+07 -2.9587e+08 J\n", + " heat capacity c_p 1254.1 36746 J/K\n", + " heat capacity c_v 970.34 28431 J/K\n", + "\n", + " mass frac. Y mole frac. X chem. pot. / RT\n", + " --------------- --------------- ---------------\n", + " H2 0.0044164 0.064187 -19.925\n", + " O2 0.0042583 0.0038992 -31.756\n", + " CH4 0.009799 0.017896 -38.919\n", + " CO 0.23178 0.24245 -41.902\n", + " CO2 0.29614 0.19716 -83.677\n", + " C2H4 0.0012445 0.0012997 -28.665\n", + " C2H6 0.00041043 0.00039992 -50.523\n", + " N2 0.45196 0.47271 -25.262\n", + " [ +45 minor] 0 0 \n", + "\n" + ] + } + ], + "source": [ + "gas()" + ] + }, + { + "cell_type": "markdown", + "id": "40d9a0f9", + "metadata": {}, + "source": [ + "연료 기체 구성비와 같은 원소 1몰의 완전 연소 산소 요구량" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "5cb2f86f", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2.2584483103379323\n", + "0.9072176564687062\n" + ] + } + ], + "source": [ + "consider_o_in_fuel = True\n", + "\n", + "coef_O = gas.elemental_mole_fraction('C') * 2 + gas.elemental_mole_fraction('H') / 2 - (gas.elemental_mole_fraction('O') if consider_o_in_fuel else 0)\n", + "\n", + "coef_N = coef_O * 3.762\n", + "\n", + "coef_O + coef_N\n", + "\n", + "# 공기 1몰의 원자 몰수 = 2 ; O2 + N2 만으로 구성되었으면\n", + "\n", + "# 연료 기체 1몰의 원자 몰수\n", + "\n", + "mean_natoms = sum([(gas.X[i] * sum([v for v in gas.species(i).composition.values()])) for i in range(gas.n_species)])\n", + "print(mean_natoms)\n", + "\n", + "# 연료 기체 1몰에 필요한 공기 몰수\n", + "air_fuel_ratio_st = mean_natoms * (coef_N + coef_O) / 2\n", + "print (air_fuel_ratio_st)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "bf4af7ee", + "metadata": {}, + "outputs": [], + "source": [ + "air = ct.Solution('gri30.xml')" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "a5470a8e", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " gri30:\n", + "\n", + " temperature 300 K\n", + " pressure 7080.3 Pa\n", + " density 0.081894 kg/m^3\n", + " mean mol. weight 28.851 kg/kmol\n", + " phase of matter gas\n", + "\n", + " 1 kg 1 kmol \n", + " --------------- ---------------\n", + " enthalpy 1907.6 55036 J\n", + " internal energy -84549 -2.4393e+06 J\n", + " entropy 7658.6 2.2095e+05 J/K\n", + " Gibbs function -2.2957e+06 -6.6231e+07 J\n", + " heat capacity c_p 1010.1 29141 J/K\n", + " heat capacity c_v 721.88 20827 J/K\n", + "\n", + " mass frac. Y mole frac. X chem. pot. / RT\n", + " --------------- --------------- ---------------\n", + " O2 0.2329 0.21 -28.895\n", + " N2 0.7671 0.79 -25.93\n", + " [ +51 minor] 0 0 \n", + "\n" + ] + } + ], + "source": [ + "air.X = \"O2:1, N2:3.762\"\n", + "air_comp = air.X\n", + "air()" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "424bc158", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1240.6028257966418\n", + "\n", + " gri30:\n", + "\n", + " temperature 1513.8 K\n", + " pressure 1.0133e+05 Pa\n", + " density 0.24948 kg/m^3\n", + " mean mol. weight 30.989 kg/kmol\n", + " phase of matter gas\n", + "\n", + " 1 kg 1 kmol \n", + " --------------- ---------------\n", + " enthalpy -1.4987e+06 -4.6443e+07 J\n", + " internal energy -1.9048e+06 -5.9029e+07 J\n", + " entropy 8413.6 2.6073e+05 J/K\n", + " Gibbs function -1.4235e+07 -4.4112e+08 J\n", + " heat capacity c_p 1300.2 40291 J/K\n", + " heat capacity c_v 1031.9 31977 J/K\n", + "\n", + " mass frac. Y mole frac. X chem. pot. / RT\n", + " --------------- --------------- ---------------\n", + " H2 3.0791e-08 4.7331e-07 -33.192\n", + " H 4.6416e-10 1.427e-08 -16.596\n", + " O 5.5069e-07 1.0667e-06 -15.427\n", + " O2 0.049365 0.047808 -30.854\n", + " OH 2.254e-05 4.1072e-05 -32.023\n", + " H2O 0.026501 0.045587 -48.619\n", + " HO2 5.0853e-08 4.7746e-08 -47.45\n", + " H2O2 2.4769e-09 2.2566e-09 -64.046\n", + " CO 5.0256e-06 5.5601e-06 -47.675\n", + " CO2 0.28765 0.20255 -63.102\n", + " N 3.2802e-14 7.2571e-14 -13.191\n", + " NH3 9.034e-15 1.6438e-14 -62.979\n", + " NNH 1.4737e-14 1.5736e-14 -42.978\n", + " NO 0.0005737 0.0005925 -28.618\n", + " NO2 2.1637e-06 1.4575e-06 -44.045\n", + " N2O 4.8881e-08 3.4416e-08 -41.809\n", + " HNO 8.6389e-11 8.632e-11 -45.214\n", + " N2 0.63588 0.70341 -26.382\n", + " [ +35 minor] 6.3022e-15 7.2656e-15 \n", + "\n" + ] + } + ], + "source": [ + "phi = 0.70\n", + "\n", + "gas.TPX = 25+273.15, ct.one_atm, phi * fuel_comp + air_comp\n", + "\n", + "gas.equilibrate('HP')\n", + "\n", + "print(gas.T - 273.15)\n", + "gas()" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "4c9a7916", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "1.4285714285714286" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "1/0.7" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "e2c9d846", + "metadata": {}, + "outputs": [], + "source": [ + "fuel = ct.Solution('gri30.xml')" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "2619aaed", + "metadata": {}, + "outputs": [], + "source": [ + "fuel.TPX = 25+273.15, 1e5, fuel_comp" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "5fa14d40", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " gri30:\n", + "\n", + " temperature 298.15 K\n", + " pressure 1e+05 Pa\n", + " density 1.182 kg/m^3\n", + " mean mol. weight 29.3 kg/kmol\n", + " phase of matter gas\n", + "\n", + " 1 kg 1 kmol \n", + " --------------- ---------------\n", + " enthalpy -3.6069e+06 -1.0568e+08 J\n", + " internal energy -3.6915e+06 -1.0816e+08 J\n", + " entropy 6976.6 2.0442e+05 J/K\n", + " Gibbs function -5.687e+06 -1.6663e+08 J\n", + " heat capacity c_p 1051.5 30810 J/K\n", + " heat capacity c_v 767.76 22495 J/K\n", + "\n", + " mass frac. Y mole frac. X chem. pot. / RT\n", + " --------------- --------------- ---------------\n", + " H2 0.0044164 0.064187 -18.476\n", + " O2 0.0042583 0.0038992 -30.234\n", + " CH4 0.009799 0.017896 -56.545\n", + " CO 0.23178 0.24245 -69.79\n", + " CO2 0.29614 0.19716 -186.09\n", + " C2H4 0.0012445 0.0012997 -11.859\n", + " C2H6 0.00041043 0.00039992 -69.231\n", + " N2 0.45196 0.47271 -23.795\n", + " [ +45 minor] 0 0 \n", + "\n" + ] + } + ], + "source": [ + "fuel()" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "e2d4686c", + "metadata": {}, + "outputs": [], + "source": [ + "h2 = fuel.species('H2')" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "ce558f2c", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0.013281769137764726" + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "h2.thermo.h(25+273.15)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "fe14a891", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "id": "4b1f191f", + "metadata": {}, + "source": [ + "# 이론공연비 계산" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "id": "60f9c29b", + "metadata": {}, + "outputs": [], + "source": [ + "def stoich_AF (fuel_compostion, mole_fraction=True):\n", + " \"Stoichiometric Air/Fuel ratio (volume)\"\n", + " \n", + " gas = ct.Solution('gri30.xml')\n", + "\n", + " if mole_fraction:\n", + " gas.TPX = 600 + 273.15, ct.one_atm, fuel_compostion\n", + " else:\n", + " gas.TPY = 600 + 273.15, ct.one_atm, fuel_compostion\n", + " \n", + " fuel_comp = gas.X\n", + "\n", + " # 연료의 원자 1 몰 완전 연소에 필요한 산소 원자 몰 수\n", + " coef_O = gas.elemental_mole_fraction('C') * 2 + gas.elemental_mole_fraction('H') / 2 - (gas.elemental_mole_fraction('O'))\n", + "\n", + " # 연료의 원자 1 몰 완전 연소에 필요한 공기 원자 몰 수 = 산소 원자 몰 수 X (1 + 3.762)\n", + " coef_N = coef_O * 3.762\n", + "\n", + " # 공기 1몰의 원자 몰수 = 2 ; O2 + N2 만으로 구성되었으면\n", + " mean_natoms_air = 2\n", + "\n", + " # 연료 기체 1몰의 원자 몰수 (평균 분자당 원자 수)\n", + " mean_natoms_fuel = sum([(gas.X[i] * sum([v for v in gas.species(i).composition.values()])) for i in range(gas.n_species)])\n", + "\n", + " # 연료 기체 1몰에 필요한 공기 몰수 ()\n", + " air_fuel_ratio_st = mean_natoms_fuel * (coef_N + coef_O) / mean_natoms_air\n", + "\n", + " return (air_fuel_ratio_st)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "id": "c633e758", + "metadata": {}, + "outputs": [], + "source": [ + "coke_oven_fuel = \"H2:6.42, O2:0.39, N2:47.28, CH4:1.79, CO:24.25, CO2:19.72, C2H4:0.13, C2H6:0.04\"" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "id": "d489bdf1", + "metadata": {}, + "outputs": [], + "source": [ + "st_AF = stoich_AF(coke_oven_fuel)" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "id": "825758e1", + "metadata": {}, + "outputs": [], + "source": [ + "air = ct.Solution('gri30.xml')" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "id": "99dbfd30", + "metadata": {}, + "outputs": [], + "source": [ + "air.X = \"O2:1, N2:3.762\"\n", + "air_comp = air.X" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "id": "7e1a5975", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1506.856765604754\n", + "\n", + " gri30:\n", + "\n", + " temperature 1780 K\n", + " pressure 1.0133e+05 Pa\n", + " density 0.21633 kg/m^3\n", + " mean mol. weight 31.597 kg/kmol\n", + " phase of matter gas\n", + "\n", + " 1 kg 1 kmol \n", + " --------------- ---------------\n", + " enthalpy -1.9051e+06 -6.0194e+07 J\n", + " internal energy -2.3734e+06 -7.4994e+07 J\n", + " entropy 8525 2.6936e+05 J/K\n", + " Gibbs function -1.708e+07 -5.3966e+08 J\n", + " heat capacity c_p 1351.2 42694 J/K\n", + " heat capacity c_v 1088.1 34380 J/K\n", + "\n", + " mass frac. Y mole frac. X chem. pot. / RT\n", + " --------------- --------------- ---------------\n", + " H2 6.2424e-06 9.7839e-05 -28.347\n", + " H 9.5406e-08 2.9906e-06 -14.173\n", + " O 1.3675e-06 2.7007e-06 -17.795\n", + " O2 0.00073214 0.00072297 -35.589\n", + " OH 6.1066e-05 0.00011345 -31.968\n", + " H2O 0.033613 0.058955 -46.141\n", + " HO2 1.1974e-08 1.1463e-08 -49.763\n", + " H2O2 1.4101e-09 1.3099e-09 -63.936\n", + " CO 0.0014344 0.0016181 -41.208\n", + " CO2 0.3634 0.26091 -59.003\n", + " HCO 2.8143e-12 3.0644e-12 -55.381\n", + " CH2O 6.3467e-14 6.6788e-14 -69.555\n", + " N 9.3579e-12 2.111e-11 -13.467\n", + " NH 1.4448e-12 3.0404e-12 -27.64\n", + " NH2 1.006e-12 1.9838e-12 -41.814\n", + " NH3 1.3308e-11 2.469e-11 -55.987\n", + " NNH 3.8031e-12 4.1406e-12 -41.107\n", + " NO 0.00020133 0.000212 -31.262\n", + " NO2 4.7618e-08 3.2705e-08 -49.056\n", + " N2O 1.5885e-08 1.1404e-08 -44.729\n", + " HNO 5.0425e-10 5.1373e-10 -45.435\n", + " HCN 4.3708e-14 5.1101e-14 -51.054\n", + " HNCO 1.5701e-11 1.153e-11 -68.848\n", + " NCO 1.2119e-13 9.1136e-14 -54.675\n", + " N2 0.60055 0.67737 -26.934\n", + " [ +28 minor] 1.1611e-14 8.5342e-15 \n", + "\n" + ] + } + ], + "source": [ + "phi = 1\n", + "\n", + "mix = ct.Solution('gri30.xml')\n", + "\n", + "mix.TPX = 25+273.15, ct.one_atm, phi * fuel_comp + st_AF * air_comp\n", + "\n", + "mix.equilibrate('HP')\n", + "\n", + "print(mix.T - 273.15)\n", + "mix()" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "id": "a20ce147", + "metadata": {}, + "outputs": [], + "source": [ + "def exhaust_stoichiometry (phi = 1, return_unburned=False):\n", + "\n", + " mix = ct.Solution('gri30.xml')\n", + "\n", + " mix.TPX = 25+273.15, ct.one_atm, phi * fuel_comp + st_AF * air_comp\n", + " \n", + " element_X = {ename: mix.elemental_mole_fraction(ename) for ename in mix.element_names}\n", + " \n", + " exhaust = ct.Solution('gri30.xml')\n", + " exhaust.X = {\n", + " \"CO2\" : element_X['C'],\n", + " \"H2O\" : element_X['H']/2,\n", + " \"O2\" : (element_X['O'] - 2*element_X['C'] - element_X['H']/2)/2,\n", + " \"N2\" : element_X['N']/2,\n", + " }\n", + " \n", + " if return_unburned:\n", + " return mix.mole_fraction_dict(threshold=-1), exhaust.mole_fraction_dict(threshold=-1)\n", + " else:\n", + " return exhaust.mole_fraction_dict(threshold=-1)" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "id": "c49236bf", + "metadata": {}, + "outputs": [], + "source": [ + "from scipy import optimize as opt" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "id": "4e5bd0e1", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " converged: True\n", + " flag: 'converged'\n", + " function_calls: 8\n", + " iterations: 7\n", + " root: 0.6547375739201831\n" + ] + } + ], + "source": [ + "f_found = opt.root_scalar(lambda x: exhaust_stoichiometry(x)[\"O2\"] - 0.045, \n", + " bracket=[1e-300, 1])\n", + "\n", + "print(f_found)\n", + "\n", + "phi_O2_045 = f_found.root" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "id": "c3d58dd5", + "metadata": {}, + "outputs": [], + "source": [ + "def exhaust_equilibrium (phi = 1):\n", + "\n", + " mix = ct.Solution('gri30.xml')\n", + "\n", + " mix.TPX = 25+273.15, ct.one_atm, phi * fuel_comp + st_AF * air_comp\n", + " \n", + " mix.equilibrate(\"HP\")\n", + " \n", + " return mix.mole_fraction_dict(threshold=-1)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "id": "dc4ca92f", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + " converged: True\n", + " flag: 'converged'\n", + " function_calls: 8\n", + " iterations: 7\n", + " root: 0.6526852820518209" + ] + }, + "execution_count": 29, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "f_found = opt.root_scalar(lambda x: exhaust_equilibrium(x)[\"O2\"] - 0.045, \n", + " bracket=[0.5, 1])\n", + "\n", + "f_found" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "id": "f9c07f28", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "1.3856202738392207" + ] + }, + "execution_count": 30, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "1 / 0.7216984471721393" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "id": "447502a7", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "1.4285714285714286" + ] + }, + "execution_count": 31, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "1/0.7" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "id": "87a2118d", + "metadata": {}, + "outputs": [], + "source": [ + "fuel = ct.Solution('gri30.xml')" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "id": "9a5b2b68", + "metadata": {}, + "outputs": [], + "source": [ + "fuel.TPX = 25+273.15, 1e5, fuel_comp" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "id": "14224e71", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " gri30:\n", + "\n", + " temperature 298.15 K\n", + " pressure 1e+05 Pa\n", + " density 1.182 kg/m^3\n", + " mean mol. weight 29.3 kg/kmol\n", + " phase of matter gas\n", + "\n", + " 1 kg 1 kmol \n", + " --------------- ---------------\n", + " enthalpy -3.6069e+06 -1.0568e+08 J\n", + " internal energy -3.6915e+06 -1.0816e+08 J\n", + " entropy 6976.6 2.0442e+05 J/K\n", + " Gibbs function -5.687e+06 -1.6663e+08 J\n", + " heat capacity c_p 1051.5 30810 J/K\n", + " heat capacity c_v 767.76 22495 J/K\n", + "\n", + " mass frac. Y mole frac. X chem. pot. / RT\n", + " --------------- --------------- ---------------\n", + " H2 0.0044164 0.064187 -18.476\n", + " O2 0.0042583 0.0038992 -30.234\n", + " CH4 0.009799 0.017896 -56.545\n", + " CO 0.23178 0.24245 -69.79\n", + " CO2 0.29614 0.19716 -186.09\n", + " C2H4 0.0012445 0.0012997 -11.859\n", + " C2H6 0.00041043 0.00039992 -69.231\n", + " N2 0.45196 0.47271 -23.795\n", + " [ +45 minor] 0 0 \n", + "\n" + ] + } + ], + "source": [ + "fuel()" + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "id": "3e637e4c", + "metadata": {}, + "outputs": [], + "source": [ + "h2 = fuel.species('H2')" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "id": "49a5dca8", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0.013281769137764726" + ] + }, + "execution_count": 36, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "h2.thermo.h(25+273.15)" + ] + }, + { + "cell_type": "markdown", + "id": "4c6c962f", + "metadata": {}, + "source": [ + "# 발열량 계산" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "id": "2f732468", + "metadata": { + "scrolled": false + }, + "outputs": [], + "source": [ + "Xu, Xb = exhaust_stoichiometry(phi=phi_O2_045, return_unburned=True)" + ] + }, + { + "cell_type": "markdown", + "id": "f7c5063d", + "metadata": {}, + "source": [ + "## 배가스 산소 농도 4.5% 연료+공기 혼합 기체 " + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "id": "53b2c1b9", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " gri30:\n", + "\n", + " temperature 298.15 K\n", + " pressure 1.0133e+05 Pa\n", + " density 1.1869 kg/m^3\n", + " mean mol. weight 29.039 kg/kmol\n", + " phase of matter gas\n", + "\n", + " 1 kg 1 kmol \n", + " --------------- ---------------\n", + " enthalpy -1.5255e+06 -4.4299e+07 J\n", + " internal energy -1.6109e+06 -4.6778e+07 J\n", + " entropy 6999.5 2.0326e+05 J/K\n", + " Gibbs function -3.6124e+06 -1.049e+08 J\n", + " heat capacity c_p 1027.5 29837 J/K\n", + " heat capacity c_v 741.17 21523 J/K\n", + "\n", + " mass frac. Y mole frac. X chem. pot. / RT\n", + " --------------- --------------- ---------------\n", + " H2 0.0018679 0.026906 -19.333\n", + " O2 0.1362 0.1236 -26.764\n", + " CH4 0.0041445 0.0075018 -57.401\n", + " CO 0.098029 0.10163 -70.646\n", + " CO2 0.12525 0.082645 -186.95\n", + " C2H4 0.00052634 0.00054482 -12.715\n", + " C2H6 0.00017359 0.00016764 -70.088\n", + " N2 0.63381 0.657 -23.453\n", + " [ +45 minor] 0 0 \n", + "\n" + ] + } + ], + "source": [ + "gas_u = ct.Solution('gri30.xml')\n", + "gas_u.TPX = 25 + 273.15, ct.one_atm, Xu\n", + "gas_u()" + ] + }, + { + "cell_type": "markdown", + "id": "1d54eebc", + "metadata": {}, + "source": [ + "## 배가스 산소 농도 4.5% 완전 연소 배가스" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "id": "a1bc3d15", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " gri30:\n", + "\n", + " temperature 298.15 K\n", + " pressure 1.0133e+05 Pa\n", + " density 1.2684 kg/m^3\n", + " mean mol. weight 31.031 kg/kmol\n", + " phase of matter gas\n", + "\n", + " 1 kg 1 kmol \n", + " --------------- ---------------\n", + " enthalpy -2.9803e+06 -9.2481e+07 J\n", + " internal energy -3.0602e+06 -9.496e+07 J\n", + " entropy 6565.1 2.0372e+05 J/K\n", + " Gibbs function -4.9377e+06 -1.5322e+08 J\n", + " heat capacity c_p 997.71 30960 J/K\n", + " heat capacity c_v 729.77 22645 J/K\n", + "\n", + " mass frac. Y mole frac. X chem. pot. / RT\n", + " --------------- --------------- ---------------\n", + " O2 0.046403 0.045 -27.775\n", + " H2O 0.026987 0.046486 -123.33\n", + " CO2 0.2928 0.20645 -186.03\n", + " N2 0.63381 0.70206 -23.387\n", + " [ +49 minor] 0 0 \n", + "\n" + ] + } + ], + "source": [ + "gas_b = ct.Solution('gri30.xml')\n", + "gas_b.TPX = 25 + 273.15, ct.one_atm, Xb\n", + "gas_b()" + ] + }, + { + "cell_type": "markdown", + "id": "3e537f99", + "metadata": {}, + "source": [ + "## 배가스 산소 농도 4.5% 혼합 기체 kg 당 저위발열량 (J/kg)" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "id": "067ae187", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "1454825.772118082" + ] + }, + "execution_count": 40, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "heating_value_J_kg = gas_u.enthalpy_mass - gas_b.enthalpy_mass\n", + "heating_value_J_kg" + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "id": "f8713062", + "metadata": {}, + "outputs": [], + "source": [ + "heat_to_battery = 80 # GJ / Rev" + ] + }, + { + "cell_type": "code", + "execution_count": 42, + "id": "42f68b81", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "3636.3636363636365" + ] + }, + "execution_count": 42, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "heat_to_chamber = heat_to_battery * 1000 * 3 / 66 # MJ / hr\n", + "heat_to_chamber" + ] + }, + { + "cell_type": "markdown", + "id": "30be4bfc", + "metadata": {}, + "source": [ + "## 연소실당 질량 유량 kg/hr" + ] + }, + { + "cell_type": "code", + "execution_count": 43, + "id": "fd85f6dc", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "2499.5182970050437" + ] + }, + "execution_count": 43, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "mfr_to_chamber = heat_to_chamber * 1e6 / heating_value_J_kg # kg / hr\n", + "mfr_to_chamber" + ] + }, + { + "cell_type": "code", + "execution_count": 46, + "id": "fa7ef7a2", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " gri30:\n", + "\n", + " temperature 1990.3 K\n", + " pressure 1.0133e+05 Pa\n", + " density 0.18983 kg/m^3\n", + " mean mol. weight 31.002 kg/kmol\n", + " phase of matter gas\n", + "\n", + " 1 kg 1 kmol \n", + " --------------- ---------------\n", + " enthalpy -8.9328e+05 -2.7694e+07 J\n", + " internal energy -1.427e+06 -4.4241e+07 J\n", + " entropy 8783.1 2.7229e+05 J/K\n", + " Gibbs function -1.8374e+07 -5.6963e+08 J\n", + " heat capacity c_p 1347.2 41767 J/K\n", + " heat capacity c_v 1079 33452 J/K\n", + "\n", + " mass frac. Y mole frac. X chem. pot. / RT\n", + " --------------- --------------- ---------------\n", + " H2 3.8291e-06 5.8883e-05 -29.203\n", + " H 3.798e-07 1.1681e-05 -14.602\n", + " O 6.69e-05 0.00012964 -15.939\n", + " O2 0.045092 0.043688 -31.879\n", + " OH 0.00048954 0.00089239 -30.541\n", + " H2O 0.02669 0.045932 -45.143\n", + " HO2 6.0747e-07 5.7059e-07 -46.48\n", + " H2O2 1.9061e-08 1.7373e-08 -61.082\n", + " CO 0.001079 0.0011942 -41.097\n", + " CO2 0.29111 0.20507 -57.036\n", + " HCO 4.8149e-12 5.1441e-12 -55.699\n", + " CH2O 2.8094e-14 2.9008e-14 -70.301\n", + " N 2.9746e-10 6.5837e-10 -13.636\n", + " NH 1.4836e-11 3.0632e-11 -28.238\n", + " NH2 2.3841e-12 4.6128e-12 -42.839\n", + " NH3 4.3381e-12 7.8968e-12 -57.441\n", + " NNH 1.8258e-11 1.9504e-11 -41.873\n", + " NO 0.003114 0.0032174 -29.575\n", + " NO2 3.837e-06 2.5857e-06 -45.514\n", + " N2O 2.4382e-07 1.7174e-07 -43.211\n", + " HNO 6.6639e-09 6.6614e-09 -44.177\n", + " HCN 1.9162e-14 2.1981e-14 -53.395\n", + " HOCN 1.3976e-14 1.0071e-14 -69.335\n", + " HNCO 9.1269e-12 6.5765e-12 -69.335\n", + " NCO 5.5326e-13 4.0822e-13 -54.733\n", + " N2 0.63235 0.6998 -27.272\n", + " [ +27 minor] 7.2355e-17 8.6041e-17 \n", + "\n" + ] + } + ], + "source": [ + "gas_chamber = ct.Solution('gri30.xml')\n", + "gas_chamber.TPX = 600 + 273.15, ct.one_atm, Xu\n", + "gas_chamber.equilibrate(\"HP\")\n", + "gas_chamber()" + ] + }, + { + "cell_type": "code", + "execution_count": 47, + "id": "22b66a96", + "metadata": {}, + "outputs": [], + "source": [ + "eq_state = gas_chamber.TPX" + ] + }, + { + "cell_type": "code", + "execution_count": 77, + "id": "683e1479", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "684763.1753790071 154859298.7922234\n", + "0.0 187247735.976\n" + ] + }, + { + "ename": "ValueError", + "evalue": "f(a) and f(b) must have different signs", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mValueError\u001b[0m Traceback (most recent call last)", + "Input \u001b[1;32mIn [77]\u001b[0m, in \u001b[0;36m\u001b[1;34m()\u001b[0m\n\u001b[0;32m 15\u001b[0m \u001b[38;5;28mprint\u001b[39m(h0 \u001b[38;5;241m-\u001b[39m h1, mfr_to_chamber\u001b[38;5;241m/\u001b[39m\u001b[38;5;241m3600\u001b[39m \u001b[38;5;241m*\u001b[39m (h0 \u001b[38;5;241m-\u001b[39m h1) \u001b[38;5;241m-\u001b[39m htc \u001b[38;5;241m*\u001b[39m area_chamber_wall \u001b[38;5;241m*\u001b[39m (((eq_state[\u001b[38;5;241m0\u001b[39m] \u001b[38;5;241m-\u001b[39m Tout)\u001b[38;5;241m/\u001b[39m\u001b[38;5;241m2\u001b[39m \u001b[38;5;241m-\u001b[39m Twall0) \u001b[38;5;241m+\u001b[39m ((eq_state[\u001b[38;5;241m0\u001b[39m] \u001b[38;5;241m-\u001b[39m Tout)\u001b[38;5;241m/\u001b[39m\u001b[38;5;241m2\u001b[39m \u001b[38;5;241m-\u001b[39m Twall1))\n\u001b[0;32m 16\u001b[0m )\n\u001b[0;32m 18\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m mfr_to_chamber\u001b[38;5;241m/\u001b[39m\u001b[38;5;241m3600\u001b[39m \u001b[38;5;241m*\u001b[39m (h0 \u001b[38;5;241m-\u001b[39m h1) \u001b[38;5;241m-\u001b[39m htc \u001b[38;5;241m*\u001b[39m area_chamber_wall \u001b[38;5;241m*\u001b[39m (((eq_state[\u001b[38;5;241m0\u001b[39m] \u001b[38;5;241m-\u001b[39m Tout)\u001b[38;5;241m/\u001b[39m\u001b[38;5;241m2\u001b[39m \u001b[38;5;241m-\u001b[39m Twall0) \u001b[38;5;241m+\u001b[39m ((eq_state[\u001b[38;5;241m0\u001b[39m] \u001b[38;5;241m-\u001b[39m Tout)\u001b[38;5;241m/\u001b[39m\u001b[38;5;241m2\u001b[39m \u001b[38;5;241m-\u001b[39m Twall1))\n\u001b[1;32m---> 20\u001b[0m f_found \u001b[38;5;241m=\u001b[39m \u001b[43mopt\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mroot_scalar\u001b[49m\u001b[43m(\u001b[49m\u001b[43mchamber_energy_balance\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 21\u001b[0m \u001b[43m \u001b[49m\u001b[43mbracket\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43m[\u001b[49m\u001b[38;5;28;43mmin\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43mTwall0\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mTwall1\u001b[49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43meq_state\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;241;43m0\u001b[39;49m\u001b[43m]\u001b[49m\u001b[43m]\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 23\u001b[0m \u001b[38;5;28mprint\u001b[39m(f_found)\n\u001b[0;32m 26\u001b[0m f_found\u001b[38;5;241m.\u001b[39mroot \u001b[38;5;241m-\u001b[39m \u001b[38;5;241m273.15\u001b[39m\n", + "File \u001b[1;32m~\\miniconda3\\lib\\site-packages\\scipy\\optimize\\_root_scalar.py:249\u001b[0m, in \u001b[0;36mroot_scalar\u001b[1;34m(f, args, method, bracket, fprime, fprime2, x0, x1, xtol, rtol, maxiter, options)\u001b[0m\n\u001b[0;32m 246\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mValueError\u001b[39;00m(\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mBracket needed for \u001b[39m\u001b[38;5;132;01m%s\u001b[39;00m\u001b[38;5;124m'\u001b[39m \u001b[38;5;241m%\u001b[39m method)\n\u001b[0;32m 248\u001b[0m a, b \u001b[38;5;241m=\u001b[39m bracket[:\u001b[38;5;241m2\u001b[39m]\n\u001b[1;32m--> 249\u001b[0m r, sol \u001b[38;5;241m=\u001b[39m methodc(f, a, b, args\u001b[38;5;241m=\u001b[39margs, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs)\n\u001b[0;32m 250\u001b[0m \u001b[38;5;28;01melif\u001b[39;00m meth \u001b[38;5;129;01min\u001b[39;00m [\u001b[38;5;124m'\u001b[39m\u001b[38;5;124msecant\u001b[39m\u001b[38;5;124m'\u001b[39m]:\n\u001b[0;32m 251\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m x0 \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n", + "File \u001b[1;32m~\\miniconda3\\lib\\site-packages\\scipy\\optimize\\zeros.py:776\u001b[0m, in \u001b[0;36mbrentq\u001b[1;34m(f, a, b, args, xtol, rtol, maxiter, full_output, disp)\u001b[0m\n\u001b[0;32m 774\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m rtol \u001b[38;5;241m<\u001b[39m _rtol:\n\u001b[0;32m 775\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mValueError\u001b[39;00m(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mrtol too small (\u001b[39m\u001b[38;5;132;01m%g\u001b[39;00m\u001b[38;5;124m < \u001b[39m\u001b[38;5;132;01m%g\u001b[39;00m\u001b[38;5;124m)\u001b[39m\u001b[38;5;124m\"\u001b[39m \u001b[38;5;241m%\u001b[39m (rtol, _rtol))\n\u001b[1;32m--> 776\u001b[0m r \u001b[38;5;241m=\u001b[39m \u001b[43m_zeros\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_brentq\u001b[49m\u001b[43m(\u001b[49m\u001b[43mf\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43ma\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mb\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mxtol\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mrtol\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mmaxiter\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mfull_output\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mdisp\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 777\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m results_c(full_output, r)\n", + "\u001b[1;31mValueError\u001b[0m: f(a) and f(b) must have different signs" + ] + } + ], + "source": [ + "htc = 568 # W / m2 / K\n", + "\n", + "Twall0 = 1200 + 273.15\n", + "Twall1 = 1200 + 273.15\n", + "\n", + "area_chamber_wall = 6.7 * 16.7 \n", + "def chamber_energy_balance (Tout):\n", + " \n", + " gas_chamber.TPX = eq_state\n", + " h0 = gas_chamber.enthalpy_mass\n", + " \n", + " gas_chamber.TP = Tout, gas_chamber.P\n", + " h1 = gas_chamber.enthalpy_mass\n", + " \n", + " print(h0 - h1, mfr_to_chamber/3600 * (h0 - h1) - htc * area_chamber_wall * (((eq_state[0] - Tout)/2 - Twall0) + ((eq_state[0] - Tout)/2 - Twall1))\n", + ")\n", + " \n", + " return mfr_to_chamber/3600 * (h0 - h1) - htc * area_chamber_wall * (((eq_state[0] - Tout)/2 - Twall0) + ((eq_state[0] - Tout)/2 - Twall1))\n", + "\n", + "f_found = opt.root_scalar(chamber_energy_balance,\n", + " bracket=[min(Twall0, Twall1), eq_state[0]])\n", + "\n", + "print(f_found)\n", + "\n", + "\n", + "f_found.root - 273.15" + ] + }, + { + "cell_type": "code", + "execution_count": 78, + "id": "d5e7dad6", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "1473.15" + ] + }, + "execution_count": 78, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "min(Twall0, Twall1)" + ] + }, + { + "cell_type": "markdown", + "id": "1470c1e2", + "metadata": {}, + "source": [ + "# 공급 열량 오더 추정" + ] + }, + { + "cell_type": "code", + "execution_count": 49, + "id": "858a862e", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "346.5" + ] + }, + "execution_count": 49, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# 50'C 장입탄 1 톤을 1100'C 코크스로 건류시키기 위해 필요한 열량\n", + "heat_coking_mcal_per_ton = (1100 - 50) * 0.33 # Mcal / t-c\n", + "heat_coking_mcal_per_ton" + ] + }, + { + "cell_type": "code", + "execution_count": 50, + "id": "d9a3443d", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "925.2" + ] + }, + "execution_count": 50, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# 50`C 물 1톤을 800`C 수증기로 증발하는데 필요한 열량\n", + "# 액체 가열 + 증발 + 증기 가열\n", + "heat_evap_mcal_per_ton = 1 * (100 - 50) + 539.2 + 0.48*(800-100)\n", + "heat_evap_mcal_per_ton" + ] + }, + { + "cell_type": "code", + "execution_count": 51, + "id": "bc35e30a", + "metadata": {}, + "outputs": [], + "source": [ + "# 1~4 기 장입 습탄 34 톤 중 수분 5.9% (2 톤) 제외 건탄 32 톤\n", + "# 1 문당 장입에서 추출까지 필요한 열량\n", + "heat_total_mcal = 32 * heat_coking_mcal_per_ton + 2 * heat_evap_mcal_per_ton # Mcal\n", + "heat_total_gj = heat_total_mcal / 1000 * 4.184 / 0.6 # GJ" + ] + }, + { + "cell_type": "code", + "execution_count": 52, + "id": "c5a556cd", + "metadata": {}, + "outputs": [], + "source": [ + "# 1 문에 시간당 공급되는 " + ] + }, + { + "cell_type": "code", + "execution_count": 53, + "id": "2b8e5d35", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "59.4" + ] + }, + "execution_count": 53, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# 건류 시간 동안 rev 횟수\n", + "n_rev_total = 3 * 24 * 66 / 80\n", + "\n", + "n_rev_total" + ] + }, + { + "cell_type": "code", + "execution_count": 54, + "id": "9e3eee55", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "100.24864" + ] + }, + "execution_count": 54, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "66 * heat_total_gj / n_rev_total" + ] + }, + { + "cell_type": "code", + "execution_count": 55, + "id": "4ae27703", + "metadata": {}, + "outputs": [], + "source": [ + "# 80 GJ/rev 는 모든 문에 공급되는 열량이 맞다" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.12" + }, + "toc": { + "base_numbering": 1, + "nav_menu": {}, + "number_sections": true, + "sideBar": true, + "skip_h1_title": false, + "title_cell": "Table of Contents", + "title_sidebar": "Contents", + "toc_cell": false, + "toc_position": { + "height": "calc(100% - 180px)", + "left": "10px", + "top": "150px", + "width": "384px" + }, + "toc_section_display": true, + "toc_window_display": true + } + }, + "nbformat": 4, + "nbformat_minor": 5 +}