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
wasteWater.h
1 #ifndef AMO_TOOLS_SUITE_WASTEWATER_H
2 #define AMO_TOOLS_SUITE_WASTEWATER_H
3 
4 #include <nan.h>
5 #include <node.h>
6 #include "wasteWater/WasteWater_Treatment.h"
7 #include <string>
8 #include <array>
9 #include <vector>
10 #include <exception>
11 #include <iostream>
12 #include "./NanDataConverters.h"
13 
14 using namespace Nan;
15 using namespace v8;
16 
17 // Local<Object> inp;
18 // Local<Object> r;
19 
20 NAN_METHOD(WasteWaterTreatment)
21 {
22  inp = Nan::To<Object>(info[0]).ToLocalChecked();
23  r = Nan::New<Object>();
24 
25  const double Temperature = getDouble("Temperature", inp);
26  const double So = getDouble("So", inp);
27  const double Volume = getDouble("Volume", inp);
28  const double FlowRate = getDouble("FlowRate", inp);
29  const double InertVSS = getDouble("InertVSS", inp);
30  const double OxidizableN = getDouble("OxidizableN", inp);
31  const double Biomass = getDouble("Biomass", inp);
32  const double InfluentTSS = getDouble("InfluentTSS", inp);
33  const double InertInOrgTSS = getDouble("InertInOrgTSS", inp);
34  const double EffluentTSS = getDouble("EffluentTSS", inp);
35  const double RASTSS = getDouble("RASTSS", inp);
36  const double MLSSpar = getDouble("MLSSpar", inp);
37  const double FractionBiomass = getDouble("FractionBiomass", inp);
38  const double BiomassYeild = getDouble("BiomassYeild", inp);
39  const double HalfSaturation = getDouble("HalfSaturation", inp);
40  const double MicrobialDecay = getDouble("MicrobialDecay", inp);
41  const double MaxUtilizationRate = getDouble("MaxUtilizationRate", inp);
42  const double MaxDays = getDouble("MaxDays", inp);
43  const double TimeIncrement = getDouble("TimeIncrement", inp);
44  const double OperatingDO = getDouble("OperatingDO", inp);
45  const double Alpha = getDouble("Alpha", inp);
46  const double Beta = getDouble("Beta", inp);
47  const double SOTR = getDouble("SOTR", inp);
48  const double Aeration = getDouble("Aeration", inp);
49  const double Elevation = getDouble("Elevation", inp);
50  const double OperatingTime = getDouble("OperatingTime", inp);
51  const int TypeAerators = getInteger("TypeAerators", inp);
52  const double Speed = getDouble("Speed", inp);
53  const double EnergyCostUnit = getDouble("EnergyCostUnit", inp);
54  try
55  {
56  auto wwTreatment = WasteWater_Treatment(Temperature,
57  So,
58  Volume,
59  FlowRate,
60  InertVSS,
61  OxidizableN,
62  Biomass,
63  InfluentTSS,
64  InertInOrgTSS,
65  EffluentTSS,
66  RASTSS,
67  MLSSpar,
68  FractionBiomass,
69  BiomassYeild,
70  HalfSaturation,
71  MicrobialDecay,
72  MaxUtilizationRate,
73  MaxDays,
74  TimeIncrement,
75  OperatingDO,
76  Alpha,
77  Beta,
78  SOTR,
79  Aeration,
80  Elevation,
81  OperatingTime,
82  TypeAerators,
83  Speed,
84  EnergyCostUnit);
85  WasteWater_Treatment::Output output = wwTreatment.calculate();
86 
87  setR("TotalAverageDailyFlowRate", output.TotalAverageDailyFlowRate);
88  setR("VolumeInService", output.VolumeInService);
89  setR("InfluentBOD5Concentration", output.InfluentBOD5Concentration);
90  setR("InfluentBOD5MassLoading", output.InfluentBOD5MassLoading);
91  setR("SecWWOxidNLoad", output.SecWWOxidNLoad);
92  setR("SecWWTSSLoad", output.SecWWTSSLoad);
93  setR("FM_ratio", output.FM_ratio);
94  setR("SolidsRetentionTime", output.SolidsRetentionTime);
95  setR("MLSS", output.MLSS);
96  setR("MLVSS", output.MLVSS);
97  setR("TSSSludgeProduction", output.TSSSludgeProduction);
98  setR("TSSInActivatedSludgeEffluent", output.TSSInActivatedSludgeEffluent);
99  setR("TotalOxygenRequirements", output.TotalOxygenRequirements);
100  setR("TotalOxygenReqWDenit", output.TotalOxygenReqWDenit);
101  setR("TotalOxygenSupplied", output.TotalOxygenSupplied);
102  setR("MixingIntensityInReactor", output.MixingIntensityInReactor);
103  setR("RASFlowRate", output.RASFlowRate);
104  setR("RASRecyclePercentage", output.RASRecyclePercentage);
105  setR("WASFlowRate", output.WASFlowRate);
106  setR("RASTSSConcentration", output.RASTSSConcentration);
107  setR("TotalSludgeProduction", output.TotalSludgeProduction);
108  setR("ReactorDetentionTime", output.ReactorDetentionTime);
109  setR("VOLR", output.VOLR);
110  setR("EffluentCBOD5", output.EffluentCBOD5);
111  setR("EffluentTSS", output.EffluentTSS);
112  setR("EffluentAmmonia_N", output.EffluentAmmonia_N);
113  setR("EffluentNO3_N", output.EffluentNO3_N);
114  setR("EffluentNO3_N_W_Denit", output.EffluentNO3_N_W_Denit);
115  setR("AeEnergy", output.AeEnergy);
116  setR("AeCost", output.AeCost);
117  setR("FieldOTR", output.FieldOTR);
118 
119  auto calculationsTable = output.calculationsTable;
120  auto ctArrayTable = New<Array>(calculationsTable.size());
121  for (unsigned i = 0; i < ctArrayTable->Length(); i++)
122  {
123  auto calculationsTableArray = calculationsTable.at(i).getArray();
124  auto ctArray = New<Array>(calculationsTableArray.size());
125  for (unsigned j = 0; j < ctArray->Length(); j++)
126  ctArray->Set(Nan::GetCurrentContext(), j, New(calculationsTableArray[j]));
127 
128  ctArrayTable->Set(Nan::GetCurrentContext(), i, ctArray);
129  }
130  Nan::Set(r, New("calculationsTable").ToLocalChecked(), ctArrayTable);
131  }
132  catch (std::runtime_error const &e)
133  {
134  std::string const what = e.what();
135  ThrowError(std::string("std::runtime_error thrown in WasteWaterTreatment - wasteWater.h: " + what).c_str());
136  }
137  info.GetReturnValue().Set(r);
138 }
139 #endif //AMO_TOOLS_SUITE_WASTEWATER_H