221130-1940: tune gas to wall heat transfer
This commit is contained in:
parent
5204b8c4bc
commit
65bb12b4f5
1 changed files with 439 additions and 117 deletions
|
|
@ -45,7 +45,7 @@
|
||||||
{
|
{
|
||||||
"data": {
|
"data": {
|
||||||
"application/vnd.jupyter.widget-view+json": {
|
"application/vnd.jupyter.widget-view+json": {
|
||||||
"model_id": "7ebf14f5ef9c4496aa8cf0ad6cbcdb7c",
|
"model_id": "ed6ee54043434154a827020efbee7467",
|
||||||
"version_major": 2,
|
"version_major": 2,
|
||||||
"version_minor": 0
|
"version_minor": 0
|
||||||
},
|
},
|
||||||
|
|
@ -70,7 +70,7 @@
|
||||||
{
|
{
|
||||||
"data": {
|
"data": {
|
||||||
"application/vnd.jupyter.widget-view+json": {
|
"application/vnd.jupyter.widget-view+json": {
|
||||||
"model_id": "a0ec1569fa484e108a0f79e7d71cc576",
|
"model_id": "8e7a0d0a9f784ebdaf657d3722690175",
|
||||||
"version_major": 2,
|
"version_major": 2,
|
||||||
"version_minor": 0
|
"version_minor": 0
|
||||||
},
|
},
|
||||||
|
|
@ -84,7 +84,7 @@
|
||||||
{
|
{
|
||||||
"data": {
|
"data": {
|
||||||
"application/vnd.jupyter.widget-view+json": {
|
"application/vnd.jupyter.widget-view+json": {
|
||||||
"model_id": "9a81c2f246bb4774ab9157f4eef297c1",
|
"model_id": "21a25e45f3a846e5bd8e8097e7a36359",
|
||||||
"version_major": 2,
|
"version_major": 2,
|
||||||
"version_minor": 0
|
"version_minor": 0
|
||||||
},
|
},
|
||||||
|
|
@ -1044,24 +1044,24 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"execution_count": 40,
|
"execution_count": 46,
|
||||||
"id": "067ae187",
|
"id": "067ae187",
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
"outputs": [
|
"outputs": [
|
||||||
{
|
{
|
||||||
"data": {
|
"data": {
|
||||||
"text/plain": [
|
"text/plain": [
|
||||||
"1454825.772118082"
|
"'1.454825772118082 MJ/kg'"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"execution_count": 40,
|
"execution_count": 46,
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
"output_type": "execute_result"
|
"output_type": "execute_result"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"source": [
|
"source": [
|
||||||
"heating_value_J_kg = gas_u.enthalpy_mass - gas_b.enthalpy_mass\n",
|
"heating_value_J_kg = gas_u.enthalpy_mass - gas_b.enthalpy_mass\n",
|
||||||
"heating_value_J_kg"
|
"f'{heating_value_J_kg*1e-6} MJ/kg'"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
@ -1083,7 +1083,7 @@
|
||||||
{
|
{
|
||||||
"data": {
|
"data": {
|
||||||
"text/plain": [
|
"text/plain": [
|
||||||
"3636.3636363636365"
|
"'3636.3636363636365 MJ / hr to a combustion chamber'"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"execution_count": 42,
|
"execution_count": 42,
|
||||||
|
|
@ -1093,7 +1093,7 @@
|
||||||
],
|
],
|
||||||
"source": [
|
"source": [
|
||||||
"heat_to_chamber = heat_to_battery * 1000 * 3 / 66 # MJ / hr\n",
|
"heat_to_chamber = heat_to_battery * 1000 * 3 / 66 # MJ / hr\n",
|
||||||
"heat_to_chamber"
|
"f'{heat_to_chamber} MJ / hr to a combustion chamber'"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
@ -1113,7 +1113,7 @@
|
||||||
{
|
{
|
||||||
"data": {
|
"data": {
|
||||||
"text/plain": [
|
"text/plain": [
|
||||||
"2499.5182970050437"
|
"'2499.5182970050437 (kg/hr) = 3636.3636363636365 (MJ/hr) / 1.454825772118082 (MJ/kg)'"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"execution_count": 43,
|
"execution_count": 43,
|
||||||
|
|
@ -1123,12 +1123,20 @@
|
||||||
],
|
],
|
||||||
"source": [
|
"source": [
|
||||||
"mfr_to_chamber = heat_to_chamber * 1e6 / heating_value_J_kg # kg / hr\n",
|
"mfr_to_chamber = heat_to_chamber * 1e6 / heating_value_J_kg # kg / hr\n",
|
||||||
"mfr_to_chamber"
|
"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",
|
"cell_type": "code",
|
||||||
"execution_count": 46,
|
"execution_count": 49,
|
||||||
"id": "fa7ef7a2",
|
"id": "fa7ef7a2",
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
"outputs": [
|
"outputs": [
|
||||||
|
|
@ -1156,33 +1164,15 @@
|
||||||
"\n",
|
"\n",
|
||||||
" mass frac. Y mole frac. X chem. pot. / RT\n",
|
" mass frac. Y mole frac. X chem. pot. / RT\n",
|
||||||
" --------------- --------------- ---------------\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",
|
" O 6.69e-05 0.00012964 -15.939\n",
|
||||||
" O2 0.045092 0.043688 -31.879\n",
|
" O2 0.045092 0.043688 -31.879\n",
|
||||||
" OH 0.00048954 0.00089239 -30.541\n",
|
" OH 0.00048954 0.00089239 -30.541\n",
|
||||||
" H2O 0.02669 0.045932 -45.143\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",
|
" CO 0.001079 0.0011942 -41.097\n",
|
||||||
" CO2 0.29111 0.20507 -57.036\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",
|
" 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",
|
" N2 0.63235 0.6998 -27.272\n",
|
||||||
" [ +27 minor] 7.2355e-17 8.6041e-17 \n",
|
" [ +45 minor] 8.9232e-06 7.3917e-05 \n",
|
||||||
"\n"
|
"\n"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
@ -1191,22 +1181,52 @@
|
||||||
"gas_chamber = ct.Solution('gri30.xml')\n",
|
"gas_chamber = ct.Solution('gri30.xml')\n",
|
||||||
"gas_chamber.TPX = 600 + 273.15, ct.one_atm, Xu\n",
|
"gas_chamber.TPX = 600 + 273.15, ct.one_atm, Xu\n",
|
||||||
"gas_chamber.equilibrate(\"HP\")\n",
|
"gas_chamber.equilibrate(\"HP\")\n",
|
||||||
"gas_chamber()"
|
"gas_chamber(threshold=1e-4)\n",
|
||||||
|
"\n",
|
||||||
|
"eq_state = gas_chamber.TPX\n",
|
||||||
|
"\n",
|
||||||
|
"Tad, P0, X0 = eq_state"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"execution_count": 47,
|
"execution_count": 87,
|
||||||
"id": "22b66a96",
|
"id": "1d6c95a7",
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
"outputs": [],
|
"outputs": [
|
||||||
|
{
|
||||||
|
"name": "stdout",
|
||||||
|
"output_type": "stream",
|
||||||
|
"text": [
|
||||||
|
"Tad = 1717.1055126606984 `C\n"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
"source": [
|
"source": [
|
||||||
"eq_state = gas_chamber.TPX"
|
"print(f'Tad = {eq_state[0] - 273.15} `C')"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"execution_count": 77,
|
"execution_count": 89,
|
||||||
|
"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": "code",
|
||||||
|
"execution_count": 103,
|
||||||
"id": "683e1479",
|
"id": "683e1479",
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
"outputs": [
|
"outputs": [
|
||||||
|
|
@ -1214,32 +1234,40 @@
|
||||||
"name": "stdout",
|
"name": "stdout",
|
||||||
"output_type": "stream",
|
"output_type": "stream",
|
||||||
"text": [
|
"text": [
|
||||||
"684763.1753790071 154859298.7922234\n",
|
"564968.6851296029 1057170.3471485006\n",
|
||||||
"0.0 187247735.976\n"
|
"258568.46996560355\n",
|
||||||
]
|
"239.0022179980857 1363443.6972422504\n",
|
||||||
},
|
"-612434.5630397515\n",
|
||||||
{
|
"400326.765370211 1148091.5363109885\n",
|
||||||
"ename": "ValueError",
|
"3005.361043723591\n",
|
||||||
"evalue": "f(a) and f(b) must have different signs",
|
"398382.53608438675 1149155.5265008416\n",
|
||||||
"output_type": "error",
|
"-2.858431953645777\n",
|
||||||
"traceback": [
|
"398384.3836843984 1149154.51548965\n",
|
||||||
"\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
|
"0.000179249735083431\n",
|
||||||
"\u001b[1;31mValueError\u001b[0m Traceback (most recent call last)",
|
"398384.3835685452 1149154.5155530453\n",
|
||||||
"Input \u001b[1;32mIn [77]\u001b[0m, in \u001b[0;36m<cell line: 20>\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",
|
"8.731149137020111e-10\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",
|
"398384.38356854365 1149154.515553046\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",
|
"-1.6298145055770874e-09\n",
|
||||||
"\u001b[1;31mValueError\u001b[0m: f(a) and f(b) must have different signs"
|
"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": [
|
"source": [
|
||||||
"htc = 568 # W / m2 / K\n",
|
"htc = 568 # W / m2 / K\n",
|
||||||
"\n",
|
"\n",
|
||||||
"Twall0 = 1200 + 273.15\n",
|
"Twall0 = 1100 + 273.15\n",
|
||||||
"Twall1 = 1200 + 273.15\n",
|
"Twall1 = 1100 + 273.15\n",
|
||||||
"\n",
|
"\n",
|
||||||
"area_chamber_wall = 6.7 * 16.7 \n",
|
"area_chamber_wall = 6.7 * 16.7\n",
|
||||||
"def chamber_energy_balance (Tout):\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",
|
" \n",
|
||||||
" gas_chamber.TPX = eq_state\n",
|
" gas_chamber.TPX = eq_state\n",
|
||||||
" h0 = gas_chamber.enthalpy_mass\n",
|
" h0 = gas_chamber.enthalpy_mass\n",
|
||||||
|
|
@ -1247,39 +1275,44 @@
|
||||||
" gas_chamber.TP = Tout, gas_chamber.P\n",
|
" gas_chamber.TP = Tout, gas_chamber.P\n",
|
||||||
" h1 = gas_chamber.enthalpy_mass\n",
|
" h1 = gas_chamber.enthalpy_mass\n",
|
||||||
" \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",
|
" '''print(h0 - h1, \n",
|
||||||
")\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",
|
" \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",
|
" 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",
|
"\n",
|
||||||
"f_found = opt.root_scalar(chamber_energy_balance,\n",
|
" return (mfr_to_chamber/3600 * (h0 - h1) \n",
|
||||||
" bracket=[min(Twall0, Twall1), eq_state[0]])\n",
|
" - hA * (((eq_state[0] + Tout)/2 - Twall0) + ((eq_state[0] + Tout)/2 - Twall1)))\n",
|
||||||
"\n",
|
"\n",
|
||||||
"print(f_found)\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",
|
||||||
"\n",
|
"\n",
|
||||||
"f_found.root - 273.15"
|
"print(f'Outlet Gas Temperature: {f_found.root - 273.15} `C')"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"execution_count": 78,
|
"execution_count": null,
|
||||||
"id": "d5e7dad6",
|
"id": "badfe727",
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
"outputs": [
|
"outputs": [],
|
||||||
{
|
|
||||||
"data": {
|
|
||||||
"text/plain": [
|
|
||||||
"1473.15"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"execution_count": 78,
|
|
||||||
"metadata": {},
|
|
||||||
"output_type": "execute_result"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"source": [
|
"source": [
|
||||||
"min(Twall0, Twall1)"
|
"class CombustionChamber:\n",
|
||||||
|
" def __init__ (self, mdot, T0, P0, X0):\n",
|
||||||
|
" self.mdot = mdot\n",
|
||||||
|
" self.T0 = T0\n",
|
||||||
|
" self.P0 = P0\n",
|
||||||
|
" self.X0 = X0\n",
|
||||||
|
" \n",
|
||||||
|
" def balance_energy_equation (Tout, Twall0, Twall1):\n",
|
||||||
|
" "
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
@ -1292,67 +1325,71 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"execution_count": 49,
|
"execution_count": 77,
|
||||||
"id": "858a862e",
|
"id": "858a862e",
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
"outputs": [
|
"outputs": [
|
||||||
{
|
{
|
||||||
"data": {
|
"name": "stdout",
|
||||||
"text/plain": [
|
"output_type": "stream",
|
||||||
"346.5"
|
"text": [
|
||||||
]
|
"346.5 Mcal / ton\n"
|
||||||
},
|
]
|
||||||
"execution_count": 49,
|
|
||||||
"metadata": {},
|
|
||||||
"output_type": "execute_result"
|
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"source": [
|
"source": [
|
||||||
"# 50'C 장입탄 1 톤을 1100'C 코크스로 건류시키기 위해 필요한 열량\n",
|
"# 50'C 장입탄 1 톤을 1100'C 코크스로 건류시키기 위해 필요한 열량\n",
|
||||||
"heat_coking_mcal_per_ton = (1100 - 50) * 0.33 # Mcal / t-c\n",
|
"heat_coking_mcal_per_ton = (1100 - 50) * 0.33 # Mcal / t-c\n",
|
||||||
"heat_coking_mcal_per_ton"
|
"print(f'{heat_coking_mcal_per_ton} Mcal / ton')"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"execution_count": 50,
|
"execution_count": 78,
|
||||||
"id": "d9a3443d",
|
"id": "d9a3443d",
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
"outputs": [
|
"outputs": [
|
||||||
{
|
{
|
||||||
"data": {
|
"name": "stdout",
|
||||||
"text/plain": [
|
"output_type": "stream",
|
||||||
"925.2"
|
"text": [
|
||||||
]
|
"925.2 Mcal / ton\n"
|
||||||
},
|
]
|
||||||
"execution_count": 50,
|
|
||||||
"metadata": {},
|
|
||||||
"output_type": "execute_result"
|
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"source": [
|
"source": [
|
||||||
"# 50`C 물 1톤을 800`C 수증기로 증발하는데 필요한 열량\n",
|
"# 50`C 물 1톤을 800`C 수증기로 증발하는데 필요한 열량\n",
|
||||||
"# 액체 가열 + 증발 + 증기 가열\n",
|
"# 액체 가열 + 증발 + 증기 가열\n",
|
||||||
"heat_evap_mcal_per_ton = 1 * (100 - 50) + 539.2 + 0.48*(800-100)\n",
|
"heat_evap_mcal_per_ton = 1 * (100 - 50) + 539.2 + 0.48*(800-100)\n",
|
||||||
"heat_evap_mcal_per_ton"
|
"heat_evap_mcal_per_ton\n",
|
||||||
|
"print(f'{heat_evap_mcal_per_ton} Mcal / ton')"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"execution_count": 51,
|
"execution_count": 79,
|
||||||
"id": "bc35e30a",
|
"id": "bc35e30a",
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
"outputs": [],
|
"outputs": [
|
||||||
|
{
|
||||||
|
"name": "stdout",
|
||||||
|
"output_type": "stream",
|
||||||
|
"text": [
|
||||||
|
"90.223776 GJ / charge\n"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
"source": [
|
"source": [
|
||||||
"# 1~4 기 장입 습탄 34 톤 중 수분 5.9% (2 톤) 제외 건탄 32 톤\n",
|
"# 1~4 기 장입 습탄 34 톤 중 수분 5.9% (2 톤) 제외 건탄 32 톤\n",
|
||||||
"# 1 문당 장입에서 추출까지 필요한 열량\n",
|
"# 1 문당 장입에서 추출까지 필요한 열량\n",
|
||||||
"heat_total_mcal = 32 * heat_coking_mcal_per_ton + 2 * heat_evap_mcal_per_ton # Mcal\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"
|
"heat_total_gj = heat_total_mcal / 1000 * 4.184 / 0.6 # GJ\n",
|
||||||
|
"print(f'{heat_total_gj} GJ / charge')"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"execution_count": 52,
|
"execution_count": 80,
|
||||||
"id": "c5a556cd",
|
"id": "c5a556cd",
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
"outputs": [],
|
"outputs": [],
|
||||||
|
|
@ -1362,58 +1399,343 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"execution_count": 53,
|
"execution_count": 81,
|
||||||
"id": "2b8e5d35",
|
"id": "2b8e5d35",
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
"outputs": [
|
"outputs": [
|
||||||
{
|
{
|
||||||
"data": {
|
"name": "stdout",
|
||||||
"text/plain": [
|
"output_type": "stream",
|
||||||
"59.4"
|
"text": [
|
||||||
]
|
"59.4 rev / charge\n"
|
||||||
},
|
]
|
||||||
"execution_count": 53,
|
|
||||||
"metadata": {},
|
|
||||||
"output_type": "execute_result"
|
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"source": [
|
"source": [
|
||||||
"# 건류 시간 동안 rev 횟수\n",
|
"# 건류 시간 동안 rev 횟수\n",
|
||||||
"n_rev_total = 3 * 24 * 66 / 80\n",
|
"n_rev_total = 3 * 24 * 66 / 80\n",
|
||||||
"\n",
|
"\n",
|
||||||
"n_rev_total"
|
"n_rev_total\n",
|
||||||
|
"print(f'{n_rev_total} rev / charge')"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"execution_count": 54,
|
"execution_count": 82,
|
||||||
"id": "9e3eee55",
|
"id": "9e3eee55",
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
"outputs": [
|
"outputs": [
|
||||||
{
|
{
|
||||||
"data": {
|
"data": {
|
||||||
"text/plain": [
|
"text/plain": [
|
||||||
"100.24864"
|
"'100.24864 GJ / rev'"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"execution_count": 54,
|
"execution_count": 82,
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
"output_type": "execute_result"
|
"output_type": "execute_result"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"source": [
|
"source": [
|
||||||
"66 * heat_total_gj / n_rev_total"
|
"# 66 문에 rev 당 공급되는 열량\n",
|
||||||
|
"f'{66 * heat_total_gj / n_rev_total} GJ / rev'"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"execution_count": 55,
|
"execution_count": 83,
|
||||||
"id": "4ae27703",
|
"id": "4ae27703",
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
"outputs": [],
|
"outputs": [],
|
||||||
"source": [
|
"source": [
|
||||||
"# 80 GJ/rev 는 모든 문에 공급되는 열량이 맞다"
|
"# 80 GJ/rev 는 모든 문에 공급되는 열량이 맞다"
|
||||||
]
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 90,
|
||||||
|
"id": "d552c14d",
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [],
|
||||||
|
"source": [
|
||||||
|
"water = ct.Water()"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 91,
|
||||||
|
"id": "c4d73576",
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [
|
||||||
|
{
|
||||||
|
"name": "stdout",
|
||||||
|
"output_type": "stream",
|
||||||
|
"text": [
|
||||||
|
"\n",
|
||||||
|
" water:\n",
|
||||||
|
"\n",
|
||||||
|
" temperature 300 K\n",
|
||||||
|
" pressure 1.0132e+05 Pa\n",
|
||||||
|
" density 996.63 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.5858e+07 -2.857e+08 J\n",
|
||||||
|
" internal energy -1.5858e+07 -2.857e+08 J\n",
|
||||||
|
" entropy 3913.2 70500 J/K\n",
|
||||||
|
" Gibbs function -1.7032e+07 -3.0685e+08 J\n",
|
||||||
|
" heat capacity c_p 4180.8 75321 J/K\n",
|
||||||
|
" heat capacity c_v 4131 74424 J/K\n",
|
||||||
|
"\n"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"source": [
|
||||||
|
"water"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 93,
|
||||||
|
"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": 97,
|
||||||
|
"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": 98,
|
||||||
|
"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": 99,
|
||||||
|
"id": "1c18625b",
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [
|
||||||
|
{
|
||||||
|
"data": {
|
||||||
|
"text/plain": [
|
||||||
|
"2406727.679574404"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"execution_count": 99,
|
||||||
|
"metadata": {},
|
||||||
|
"output_type": "execute_result"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"source": [
|
||||||
|
"h_vapor - h_water"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 100,
|
||||||
|
"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": 104,
|
||||||
|
"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": 106,
|
||||||
|
"id": "54881653",
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [
|
||||||
|
{
|
||||||
|
"data": {
|
||||||
|
"text/plain": [
|
||||||
|
"0.8110541903465941"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"execution_count": 106,
|
||||||
|
"metadata": {},
|
||||||
|
"output_type": "execute_result"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"source": [
|
||||||
|
"20 / (24986 / ct.one_atm * 100)"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": null,
|
||||||
|
"id": "38f04ea4",
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [],
|
||||||
|
"source": []
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"metadata": {
|
"metadata": {
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue