1509 lines
101 KiB
Text
1509 lines
101 KiB
Text
{
|
|
"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",
|
|
"import ipywidgets as widgets\n",
|
|
"\n",
|
|
"from matplotlib import pyplot as plt\n",
|
|
"%matplotlib widget"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "3164bd16",
|
|
"metadata": {},
|
|
"source": [
|
|
"# 연료 조성 반영 입구 조건 계산"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 2,
|
|
"id": "1ebaaaef",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"gas = ct.Solution('gri30.xml')"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 3,
|
|
"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": 4,
|
|
"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": 5,
|
|
"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": 6,
|
|
"id": "bf4af7ee",
|
|
"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",
|
|
"\n",
|
|
" gri30:\n",
|
|
"\n",
|
|
" temperature 300 K\n",
|
|
" pressure 6971.7 Pa\n",
|
|
" density 0.081894 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.6049e+06 -1.0562e+08 J\n",
|
|
" internal energy -3.6901e+06 -1.0812e+08 J\n",
|
|
" entropy 7738.9 2.2675e+05 J/K\n",
|
|
" Gibbs function -5.9266e+06 -1.7365e+08 J\n",
|
|
" heat capacity c_p 1052.3 30831 J/K\n",
|
|
" heat capacity c_v 768.49 22517 J/K\n",
|
|
"\n",
|
|
" mass frac. Y mole frac. X chem. pot. / RT\n",
|
|
" --------------- --------------- ---------------\n",
|
|
" H2 0.0044164 0.064187 -21.14\n",
|
|
" O2 0.0042583 0.0038992 -32.897\n",
|
|
" CH4 0.009799 0.017896 -59.022\n",
|
|
" CO 0.23178 0.24245 -72.178\n",
|
|
" CO2 0.29614 0.19716 -187.77\n",
|
|
" C2H4 0.0012445 0.0012997 -14.653\n",
|
|
" C2H6 0.00041043 0.00039992 -71.686\n",
|
|
" N2 0.45196 0.47271 -26.459\n",
|
|
" [ +45 minor] 0 0 \n",
|
|
"\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"air = ct.Solution('gri30.xml')\n",
|
|
"air.X = \"O2:1, N2:3.762\"\n",
|
|
"air_comp = air.X\n",
|
|
"air()\n",
|
|
"\n",
|
|
"fuel = ct.Solution('gri30.xml')\n",
|
|
"fuel.X = \"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 = fuel.X\n",
|
|
"fuel()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "4b1f191f",
|
|
"metadata": {},
|
|
"source": [
|
|
"# 이론공연비 계산"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 7,
|
|
"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": 8,
|
|
"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": 9,
|
|
"id": "d489bdf1",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"st_AF = stoich_AF(coke_oven_fuel)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 10,
|
|
"id": "825758e1",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"air = ct.Solution('gri30.xml')"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 11,
|
|
"id": "99dbfd30",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"air.X = \"O2:1, N2:3.762\"\n",
|
|
"air_comp = air.X"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 12,
|
|
"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": 13,
|
|
"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": 14,
|
|
"id": "c49236bf",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"from scipy import optimize as opt"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 15,
|
|
"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": 16,
|
|
"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": 17,
|
|
"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": 17,
|
|
"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": "markdown",
|
|
"id": "4c6c962f",
|
|
"metadata": {},
|
|
"source": [
|
|
"# 발열량 계산"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 18,
|
|
"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": 19,
|
|
"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": 20,
|
|
"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": 21,
|
|
"id": "067ae187",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"'1.454825772118082 MJ/kg'"
|
|
]
|
|
},
|
|
"execution_count": 21,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"heating_value_J_kg = gas_u.enthalpy_mass - gas_b.enthalpy_mass\n",
|
|
"f'{heating_value_J_kg*1e-6} MJ/kg'"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 22,
|
|
"id": "f8713062",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"heat_to_battery = 80 # GJ / Rev"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 23,
|
|
"id": "42f68b81",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"'3636.3636363636365 MJ / hr to a combustion chamber'"
|
|
]
|
|
},
|
|
"execution_count": 23,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"heat_to_chamber = heat_to_battery * 1000 * 3 / 66 # MJ / hr\n",
|
|
"f'{heat_to_chamber} MJ / hr to a combustion chamber'"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "30be4bfc",
|
|
"metadata": {},
|
|
"source": [
|
|
"## 연소실당 질량 유량 kg/hr"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 24,
|
|
"id": "fd85f6dc",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"'2499.5182970050437 (kg/hr) = 3636.3636363636365 (MJ/hr) / 1.454825772118082 (MJ/kg)'"
|
|
]
|
|
},
|
|
"execution_count": 24,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"mfr_to_chamber = heat_to_chamber * 1e6 / heating_value_J_kg # kg / hr\n",
|
|
"f'{mfr_to_chamber} (kg/hr) = {heat_to_chamber} (MJ/hr) / {heating_value_J_kg * 1e-6} (MJ/kg)'"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "ed0ec84b",
|
|
"metadata": {},
|
|
"source": [
|
|
"# 단열 화염 온도 (평형 계산)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 25,
|
|
"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",
|
|
" 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",
|
|
" CO 0.001079 0.0011942 -41.097\n",
|
|
" CO2 0.29111 0.20507 -57.036\n",
|
|
" NO 0.003114 0.0032174 -29.575\n",
|
|
" N2 0.63235 0.6998 -27.272\n",
|
|
" [ +45 minor] 8.9232e-06 7.3917e-05 \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(threshold=1e-4)\n",
|
|
"\n",
|
|
"eq_state = gas_chamber.TPX\n",
|
|
"\n",
|
|
"Tad, P0, X0 = eq_state"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 26,
|
|
"id": "1d6c95a7",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"Tad = 1717.1055126606984 `C\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"print(f'Tad = {eq_state[0] - 273.15} `C')"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 27,
|
|
"id": "e437f3b4",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"NO: 3217.3809731942233 ppm\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"print(f'NO: {gas_chamber.mole_fraction_dict()[\"NO\"] * 1e6} ppm')"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "a52e7ccf",
|
|
"metadata": {},
|
|
"source": [
|
|
"# 연소실 평형 온도"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 28,
|
|
"id": "683e1479",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"564968.6851296029 1057170.3471485006\n",
|
|
"258568.46996560355\n",
|
|
"239.0022179980857 1363443.6972422504\n",
|
|
"-612434.5630397515\n",
|
|
"400326.765370211 1148091.5363109885\n",
|
|
"3005.361043723591\n",
|
|
"398382.53608438675 1149155.5265008416\n",
|
|
"-2.858431953645777\n",
|
|
"398384.3836843984 1149154.51548965\n",
|
|
"0.000179249735083431\n",
|
|
"398384.3835685452 1149154.5155530453\n",
|
|
"8.731149137020111e-10\n",
|
|
"398384.38356854365 1149154.515553046\n",
|
|
"-1.6298145055770874e-09\n",
|
|
"496.511875 converged: True\n",
|
|
" flag: 'converged'\n",
|
|
" function_calls: 7\n",
|
|
" iterations: 6\n",
|
|
" root: 1558.4107622013973\n",
|
|
"Outlet Gas Temperature: 1285.2607622013975 `C\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"htc = 568 # W / m2 / K\n",
|
|
"\n",
|
|
"Twall0 = 1100 + 273.15\n",
|
|
"Twall1 = 1100 + 273.15\n",
|
|
"\n",
|
|
"area_chamber_wall = 6.7 * 16.7\n",
|
|
"\n",
|
|
"htcA = htc * area_chamber_wall / 2 / 2 / 2 / 2 / 2 / 2 / 2# W / K\n",
|
|
"\n",
|
|
"def chamber_energy_balance (Tout, hA, Twall0, Twall1):\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, \n",
|
|
" 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",
|
|
" print (mfr_to_chamber/3600 * (h0 - h1), \n",
|
|
" - hA * (((eq_state[0] - Tout)/2 - Twall0) + ((eq_state[0] - Tout)/2 - Twall1)))\n",
|
|
" \n",
|
|
" print (mfr_to_chamber/3600 * (h0 - h1) \n",
|
|
" - hA * (((eq_state[0] + Tout)/2 - Twall0) + ((eq_state[0] + Tout)/2 - Twall1)))\n",
|
|
"\n",
|
|
" return (mfr_to_chamber/3600 * (h0 - h1) \n",
|
|
" - hA * (((eq_state[0] + Tout)/2 - Twall0) + ((eq_state[0] + Tout)/2 - Twall1)))\n",
|
|
"\n",
|
|
"f_found = opt.root_scalar(lambda x: chamber_energy_balance(x, htcA, Twall0, Twall1),\n",
|
|
" bracket=[min(Twall0, Twall1), 1990])\n",
|
|
"\n",
|
|
"print(htcA, f_found)\n",
|
|
"\n",
|
|
"\n",
|
|
"print(f'Outlet Gas Temperature: {f_found.root - 273.15} `C')"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 29,
|
|
"id": "badfe727",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"class CombustionChamber:\n",
|
|
" def __init__ (self, mdot, T0, P0, X0, hA=600):\n",
|
|
" self.mdot = mdot # kg/s\n",
|
|
" self.T_preheat = T0 # K, preheat temperature\n",
|
|
" self.P0 = P0 # Pa, pressure\n",
|
|
" self.X0 = X0 # Composition in mole fractions, Fuel + Air\n",
|
|
" self.gas = ct.Solution(\"gri30.xml\") # gas object\n",
|
|
" self.gas.TPX = T0, P0, X0\n",
|
|
" self.gas.equilibrate('HP')\n",
|
|
" self.eq_state = self.gas.TPX\n",
|
|
" self.h0 = self.gas.enthalpy_mass # inlet enthalpy\n",
|
|
" self.T0 = self.gas.T # K, adiabatic flame temperature\n",
|
|
" self.hA = hA # HTC x Area\n",
|
|
" self.Twall0 = 1100 + 273.15 \n",
|
|
" self.Twall1 = 1100 + 273.15\n",
|
|
" \n",
|
|
" def update_mdot (self, mdot_new):\n",
|
|
" self.mdot = mdot_new\n",
|
|
"\n",
|
|
" def update_Twall (self, Twall0=None, Twall1=None):\n",
|
|
" if Twall0: self.Twall0 = Twall0\n",
|
|
" if Twall1: self.Twall1 = Twall1\n",
|
|
"\n",
|
|
" def energy_balance_equation (Tout, Twall0, Twall1):\n",
|
|
" # mdot * (dh) - self.heat()\n",
|
|
"\n",
|
|
" self.gas.TP = Tout, gas_chamber.P\n",
|
|
" h1 = self.gas.enthalpy_mass\n",
|
|
" Tgas = (self.T0 + Tout)/2\n",
|
|
"\n",
|
|
" print (self.mdot * (h0 - h1) - self.hA * ((Tgas - Twall0) + (Tgas - Twall1)))\n",
|
|
"\n",
|
|
" return (self.mdot * (h0 - h1) - self.hA * ((Tgas - Twall0) + (Tgas - Twall1)))\n",
|
|
"\n",
|
|
" def solve (self, ):\n",
|
|
" f_found = opt.root_scalar(lambda x: chamber_energy_balance(x, htcA, Twall0, Twall1),\n",
|
|
" bracket=[max(Twall0, Twall1), 1990])\n",
|
|
"\n",
|
|
" def heat (self, Tgas, Twall0, Twall1):\n",
|
|
" # Tgas = (T0 + T1) / 2\n",
|
|
" # heat_to_Twall0 + heat_to_Twall1\n",
|
|
" pass"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "60c37bac",
|
|
"metadata": {},
|
|
"source": [
|
|
"chamber = CombustionChamber()\n",
|
|
"wall0 = Brick()\n",
|
|
"wall1 = Brick()\n",
|
|
"\"# Iterate\"\n",
|
|
"\"# Integrate for 1 timestep\"\n",
|
|
"chamber.solve()\n",
|
|
"\n",
|
|
"wall0.heat_to_coke()\n",
|
|
"wall1.heat_to_coke()\n",
|
|
"\n",
|
|
"wall0.update_coke_side() coke_model.brick_temperature(cum_heat)\n",
|
|
"wall1.update_coke_side() coke_model.brick_temperature(cum_heat)\n",
|
|
" \n",
|
|
"wall0.solve() # advance 1 timestep\n",
|
|
"wall1.solve() # advance 1 timestep\n",
|
|
"\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "1470c1e2",
|
|
"metadata": {},
|
|
"source": [
|
|
"# 공급 열량 오더 추정"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 31,
|
|
"id": "858a862e",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"346.5 Mcal / ton\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"# 50'C 장입탄 1 톤을 1100'C 코크스로 건류시키기 위해 필요한 열량\n",
|
|
"heat_coking_mcal_per_ton = (1100 - 50) * 0.33 # Mcal / t-c\n",
|
|
"print(f'{heat_coking_mcal_per_ton} Mcal / ton')"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 32,
|
|
"id": "d9a3443d",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"925.2 Mcal / ton\n"
|
|
]
|
|
}
|
|
],
|
|
"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\n",
|
|
"print(f'{heat_evap_mcal_per_ton} Mcal / ton')"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 33,
|
|
"id": "bc35e30a",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"90.223776 GJ / charge\n"
|
|
]
|
|
}
|
|
],
|
|
"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\n",
|
|
"print(f'{heat_total_gj} GJ / charge')"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 34,
|
|
"id": "c5a556cd",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"# 1 문에 시간당 공급되는 "
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 35,
|
|
"id": "2b8e5d35",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"59.4 rev / charge\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"# 건류 시간 동안 rev 횟수\n",
|
|
"n_rev_total = 3 * 24 * 66 / 80\n",
|
|
"\n",
|
|
"n_rev_total\n",
|
|
"print(f'{n_rev_total} rev / charge')"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 36,
|
|
"id": "9e3eee55",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"'100.24864 GJ / rev'"
|
|
]
|
|
},
|
|
"execution_count": 36,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"# 66 문에 rev 당 공급되는 열량\n",
|
|
"f'{66 * heat_total_gj / n_rev_total} GJ / rev'"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 37,
|
|
"id": "4ae27703",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"# 80 GJ/rev 는 모든 문에 공급되는 열량이 맞다"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 38,
|
|
"id": "d552c14d",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"water = ct.Water()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 39,
|
|
"id": "c4d73576",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"<cantera.liquidvapor.Water.<locals>.WaterWithTransport at 0x1d30a92ef60>"
|
|
]
|
|
},
|
|
"execution_count": 39,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"water"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 40,
|
|
"id": "4c82456a",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"\n",
|
|
" water:\n",
|
|
"\n",
|
|
" temperature 313.15 K\n",
|
|
" pressure 1.0132e+05 Pa\n",
|
|
" density 992.27 kg/m^3\n",
|
|
" mean mol. weight 18.016 kg/kmol\n",
|
|
" vapor fraction 0\n",
|
|
" phase of matter liquid\n",
|
|
"\n",
|
|
" 1 kg 1 kmol \n",
|
|
" --------------- ---------------\n",
|
|
" enthalpy -1.5803e+07 -2.8471e+08 J\n",
|
|
" internal energy -1.5803e+07 -2.8471e+08 J\n",
|
|
" entropy 4092.4 73728 J/K\n",
|
|
" Gibbs function -1.7085e+07 -3.078e+08 J\n",
|
|
" heat capacity c_p 4175.6 75228 J/K\n",
|
|
" heat capacity c_v 4067.9 73288 J/K\n",
|
|
"\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"water.TP = 40 + 273.15, ct.one_atm\n",
|
|
"\n",
|
|
"water()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 41,
|
|
"id": "9dd982a4",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"\n",
|
|
" water:\n",
|
|
"\n",
|
|
" temperature 313.15 K\n",
|
|
" pressure 7367.2 Pa\n",
|
|
" density 0.051107 kg/m^3\n",
|
|
" mean mol. weight 18.016 kg/kmol\n",
|
|
" vapor fraction 1\n",
|
|
" phase of matter liquid-gas-mix\n",
|
|
"\n",
|
|
" 1 kg 1 kmol \n",
|
|
" --------------- ---------------\n",
|
|
" enthalpy -1.3397e+07 -2.4135e+08 J\n",
|
|
" internal energy -1.3541e+07 -2.4395e+08 J\n",
|
|
" entropy 11778 2.1219e+05 J/K\n",
|
|
" Gibbs function -1.7085e+07 -3.078e+08 J\n",
|
|
" heat capacity c_p 1884.7 33955 J/K\n",
|
|
" heat capacity c_v 1414.4 25481 J/K\n",
|
|
"\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"water.TQ = 40 + 273.15, 1\n",
|
|
"h_vapor = water.enthalpy_mass\n",
|
|
"water()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 42,
|
|
"id": "70b5436f",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"\n",
|
|
" water:\n",
|
|
"\n",
|
|
" temperature 313.15 K\n",
|
|
" pressure 7367.2 Pa\n",
|
|
" density 992.23 kg/m^3\n",
|
|
" mean mol. weight 18.016 kg/kmol\n",
|
|
" vapor fraction 0\n",
|
|
" phase of matter liquid-gas-mix\n",
|
|
"\n",
|
|
" 1 kg 1 kmol \n",
|
|
" --------------- ---------------\n",
|
|
" enthalpy -1.5803e+07 -2.8471e+08 J\n",
|
|
" internal energy -1.5803e+07 -2.8471e+08 J\n",
|
|
" entropy 4092.4 73729 J/K\n",
|
|
" Gibbs function -1.7085e+07 -3.078e+08 J\n",
|
|
" heat capacity c_p 4176.1 75236 J/K\n",
|
|
" heat capacity c_v 4067.9 73287 J/K\n",
|
|
"\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"water.TQ = 40 + 273.15, 0\n",
|
|
"h_water = water.enthalpy_mass\n",
|
|
"water()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 43,
|
|
"id": "1c18625b",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"2406727.679574404"
|
|
]
|
|
},
|
|
"execution_count": 43,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"h_vapor - h_water"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 44,
|
|
"id": "17f8781a",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"\n",
|
|
" water:\n",
|
|
"\n",
|
|
" temperature 282.88 K\n",
|
|
" pressure 1.0133e+05 Pa\n",
|
|
" density 999.71 kg/m^3\n",
|
|
" mean mol. weight 18.016 kg/kmol\n",
|
|
" vapor fraction 0\n",
|
|
" phase of matter liquid\n",
|
|
"\n",
|
|
" 1 kg 1 kmol \n",
|
|
" --------------- ---------------\n",
|
|
" enthalpy -1.593e+07 -2.8699e+08 J\n",
|
|
" internal energy -1.593e+07 -2.8699e+08 J\n",
|
|
" entropy 3667 66064 J/K\n",
|
|
" Gibbs function -1.6967e+07 -3.0568e+08 J\n",
|
|
" heat capacity c_p 4201.1 75688 J/K\n",
|
|
" heat capacity c_v 4197.7 75626 J/K\n",
|
|
"\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"water.TP = 40+273.15, ct.one_atm\n",
|
|
"h0 = water.enthalpy_mass\n",
|
|
"water.HP = h0 - (h_vapor - h_water) * 5 / 95, ct.one_atm\n",
|
|
"water()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 45,
|
|
"id": "f4e62efb",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"\n",
|
|
" water:\n",
|
|
"\n",
|
|
" temperature 338.15 K\n",
|
|
" pressure 24986 Pa\n",
|
|
" density 0.16107 kg/m^3\n",
|
|
" mean mol. weight 18.016 kg/kmol\n",
|
|
" vapor fraction 1\n",
|
|
" phase of matter liquid-gas-mix\n",
|
|
"\n",
|
|
" 1 kg 1 kmol \n",
|
|
" --------------- ---------------\n",
|
|
" enthalpy -1.3353e+07 -2.4056e+08 J\n",
|
|
" internal energy -1.3508e+07 -2.4335e+08 J\n",
|
|
" entropy 11352 2.0451e+05 J/K\n",
|
|
" Gibbs function -1.7191e+07 -3.0972e+08 J\n",
|
|
" heat capacity c_p 1926.9 34715 J/K\n",
|
|
" heat capacity c_v 1443.6 26008 J/K\n",
|
|
"\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"water.TQ = 65 + 273.15, 1\n",
|
|
"water()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 46,
|
|
"id": "54881653",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"0.8110541903465941"
|
|
]
|
|
},
|
|
"execution_count": 46,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"20 / (24986 / ct.one_atm * 100)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "20389a41",
|
|
"metadata": {},
|
|
"source": [
|
|
"# Oven Dimension"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "31ce464b",
|
|
"metadata": {},
|
|
"source": [
|
|
"## 1~4 Coke Ovens"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 47,
|
|
"id": "94eac653",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"oven_height = 6.7 # m\n",
|
|
"oven_width_mid = 0.450 # m\n",
|
|
"oven_width_pusher = 0.412 # m\n",
|
|
"oven_width_coke = 0.488 # m"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "b072182b",
|
|
"metadata": {},
|
|
"source": [
|
|
"# Oven Wall Temperature"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 51,
|
|
"id": "87510579",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"Twall_model = np.loadtxt(\"./CokeOvenWallTemperature.csv\", delimiter=',')"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 55,
|
|
"id": "b0f627f1",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"[<matplotlib.lines.Line2D at 0x1d30fb59a00>]"
|
|
]
|
|
},
|
|
"execution_count": 55,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
},
|
|
{
|
|
"data": {
|
|
"application/vnd.jupyter.widget-view+json": {
|
|
"model_id": "27adc246a2cb4614a3ad533207b71595",
|
|
"version_major": 2,
|
|
"version_minor": 0
|
|
},
|
|
"image/png": "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",
|
|
"text/html": [
|
|
"\n",
|
|
" <div style=\"display: inline-block;\">\n",
|
|
" <div class=\"jupyter-widgets widget-label\" style=\"text-align: center;\">\n",
|
|
" Figure\n",
|
|
" </div>\n",
|
|
" <img src='data:image/png;base64,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' width=640.0/>\n",
|
|
" </div>\n",
|
|
" "
|
|
],
|
|
"text/plain": [
|
|
"Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"plt.figure()\n",
|
|
"plt.plot(Twall_model.T[0], Twall_model.T[-1], '-o')"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 56,
|
|
"id": "b90af431",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"np.interp?"
|
|
]
|
|
}
|
|
],
|
|
"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
|
|
}
|