AMO-Tools-Suite  v.0.9.0
Set of tools for calculating energy efficiency in industrial equipment
All Classes Namespaces Files Functions Variables Enumerations Friends Macros Pages
processHeat.h
1 #include <nan.h>
2 #include <node.h>
3 #include <string>
4 #include <array>
5 #include <vector>
6 #include <exception>
7 #include <iostream>
8 #include "./NanDataConverters.h"
9 #include "calculator/processHeat/AirHeatingUsingExhaust.h"
10 
11 using namespace Nan;
12 using namespace v8;
13 
14 NAN_METHOD(airHeatingUsingExhaust)
15 {
16  inp = Nan::To<Object>(info[0]).ToLocalChecked();
17  r = Nan::New<Object>();
18 
19  try
20  {
21  const double flueTemperature = getDouble("flueTemperature", inp);
22  const double excessAir = getDouble("excessAir", inp);
23  const double fireRate = getDouble("fireRate", inp);
24  const double airflow = getDouble("airflow", inp);
25  const double inletTemperature = getDouble("inletTemperature", inp);
26  const double heaterEfficiency = getDouble("heaterEfficiency", inp);
27  const double hxEfficiency = getDouble("hxEfficiency", inp);
28  const double operatingHours = getDouble("operatingHours", inp);
29  const std::string substance = getString("substance", inp);
30 
32  if(getBool("gasFuelType")) {
33  const double CH4 = getDouble("CH4", inp);
34  const double C2H6 = getDouble("C2H6", inp);
35  const double N2 = getDouble("N2", inp);
36  const double H2 = getDouble("H2", inp);
37  const double C3H8 = getDouble("C3H8", inp);
38  const double C4H10_CnH2n = getDouble("C4H10_CnH2n", inp);
39  const double H2O = getDouble("H2O", inp);
40  const double CO = getDouble("CO", inp);
41  const double CO2 = getDouble("CO2", inp);
42  const double SO2 = getDouble("SO2", inp);
43  const double O2 = getDouble("O2", inp);
44 
45  auto airHeat = AirHeatingUsingExhaust(GasCompositions(substance, CH4, C2H6, N2, H2, C3H8, C4H10_CnH2n, H2O, CO, CO2, SO2, O2));
46  output = AirHeatingUsingExhaust(airHeat).calculate(flueTemperature,excessAir,fireRate,airflow,inletTemperature,heaterEfficiency,hxEfficiency,operatingHours);
47  } else {
48  const double carbon = getDouble("carbon", inp);
49  const double hydrogen = getDouble("hydrogen", inp);
50  const double sulphur = getDouble("sulphur", inp);
51  const double inertAsh = getDouble("inertAsh", inp);
52  const double o2 = getDouble("o2", inp);
53  const double moisture = getDouble("moisture", inp);
54  const double nitrogen = getDouble("nitrogen", inp);
55 
56  auto airHeat = AirHeatingUsingExhaust(SolidLiquidFlueGasMaterial(substance, carbon, hydrogen, sulphur, inertAsh, o2, moisture, nitrogen));
57  output = AirHeatingUsingExhaust(airHeat).calculate(flueTemperature,excessAir,fireRate,airflow,inletTemperature,heaterEfficiency,hxEfficiency,operatingHours);
58  }
59 
60  setR("hxColdAir", output.hxColdAir);
61  setR("hxOutletExhaust", output.hxOutletExhaust);
62  setR("energySavings", output.energySavings);
63  setR("heatCapacityFlue", output.heatCapacityFlue);
64  setR("heatCapacityAir", output.heatCapacityAir);
65 
66  info.GetReturnValue().Set(r);
67  }
68  catch (std::runtime_error const &e)
69  {
70  std::string const what = e.what();
71  ThrowError(std::string("std::runtime_error thrown in ProcessHeat - calculator: " + what).c_str());
72  }
73 }