/// <summary> /// aktuell type 4 /// </summary> /// <param name="myPlant"></param> /// <param name="u">Qin in m³/d</param> /// <param name="par"> /// par[0] is the density of the substrate in kg/m^3 /// </param> /// <returns></returns> override protected physValue[] doMeasurement(biogas.plant myPlant, double u, params double[] par) { // physValue[] values = new physValue[1]; // 1. komponente ist rho als double, unten in density def. dann anstatt // 1000 einsetzen if (par.Length != 1) // 2, da rho auch übergeben werden muss { throw new exception(String.Format( "Length of par is != 1: {0}!", par.Length)); } transportation myTransportations = myPlant.myTransportation; // get pump from transportation class using id biogas.substrate_transport mySubsTransport = myTransportations.getSubstrateTransportByID(id_suffix); // is the energy_per_ton [kWh/t] double energy_per_ton = mySubsTransport.energy_per_ton; // calc energy consumption in kWh/d // hier muss man schon rho der zu fördernden menge kennen values[0] = new physValue("Pel_trans", u * par[0] / 1000 * energy_per_ton, "kWh/d", "transport energy"); return(values); }
/// <summary> /// aktuell type 4 /// </summary> /// <param name="myPlant"></param> /// <param name="u">Qin in m³/d</param> /// <param name="par"> /// par[0] is the to be pumped amount in m³/d /// par[1] is the density of the sludge in kg/m^3 (gilt nur für substrate_transport) /// für pump Aufruf, par ist nur 1dim. /// </param> /// <returns></returns> override protected physValue[] doMeasurement(biogas.plant myPlant, double u, params double[] par) { // physValue[] values = new physValue[1]; // sobald in MATLAB die neuen pumps genutzt werden, ist par 2dim // 2. komponente ist rho als double, unten in density def. dann anstatt // 1000 einsetzen if ((par.Length <= 0) || (par.Length > 2)) // 2, da rho auch übergeben werden muss { throw new exception(String.Format( "Length of par must be 1 or 2: {0}!", par.Length)); } transportation myTransportations = myPlant.myTransportation; // get gravitational constant physValue g = myPlant.g; if (par.Length == 2) { // get pump from transportation class using id biogas.substrate_transport mySubstrateTransport = myTransportations.getSubstrateTransportByID(id_suffix); // muss hier nicht gemacht werden, wird schon in pump gemacht // basierend auf id_suffix, bzw. dem Startort entscheidet man // wie groß die Dichte ist // wenn Start: substratemix ist, dann Dichte über Mittelwerte der zu pumpenden // Substrate wählen, dazu getSubstrateMixFlowForFermenter nutzen // wenn Start ein Digester oder storagetank ist, dann ist Dichte immer 1000 kg/m^3 // gemessene Dichte des density_sensors interessiert nicht, weil das die Dichte des // Inputs von einem digester ist. physValue density = new physValue("rho", par[1], "kg/m^3", "density"); // calc energy consumption in kWh/d // hier muss man schon rho der zu fördernden menge kennen values[0] = mySubstrateTransport.calcEnergyConsumption(u, par[0], g, density); } else if (par.Length == 1) // called from pump, we pump sludge { // get pump from transportation class using id biogas.pump myPump = myTransportations.getPumpByID(id_suffix); physValue density = new physValue("rho", 1000, "kg/m^3", "density"); // calc energy consumption in kWh/d // hier muss man schon rho der zu fördernden menge kennen values[0] = myPump.calcEnergyConsumption(u, par[0], g, density); } else { throw new exception("par must be one- or two-dimensional!"); } return(values); }