Exemplo n.º 1
0
        /// <summary>
        /// Measure NH4 content inside a digester
        /// 1st measurement is Snh4 in g/l
        /// 2nd : Snh4 + NH4 in Xc in g/l
        ///
        /// type 5
        /// </summary>
        /// <param name="myPlant"></param>
        /// <param name="x">ADM state vector</param>
        /// <param name="param">not used - but OK</param>
        /// <param name="par">not used</param>
        /// <returns></returns>
        override protected physValue[] doMeasurement(biogas.plant myPlant, double[] x,
                                                     string param, params double[] par)
        {
            physValue[] values = new physValue[dimension];

            // hier wird umrechnungsfaktor 18 genutzt, deshalb nur ammonium und nicht
            // ammonium nitrogen
            values[0] = ADMstate.calcFromADMstate(x, "Snh4", "g/l");

            //
            // -2 wegen _2 bzw. _3
            string digester_id = id.Substring(("Snh4_").Length, id.Length - 2 - ("Snh4_").Length);

            // kmol N/m^3
            double NH4 = ADMstate.calcNH4(x, digester_id, myPlant);

            //
            // erstmal Snh4 nennen, damit convertUnit funktioniert
            // TODO - könnte es auch N nennen, dann wird allerdings nur mit 14 als
            // umrechnungsfaktor gerechnet und nicht wie jetzt mit 18. Vorsicht
            // bei vergleich mit Ntot, TKN und Norg, dort wird nur mit 14 gerechnet.
            // da ich die Größe ammonium nitrogen nenne, wird umrechnungsfaktor 14 genutzt
            values[1]        = new physValue("N", NH4, "mol/l", "total ammonium nitrogen");
            values[1]        = values[1].convertUnit("g/l");
            values[1].Symbol = "NH4";

            return(values);
        }
Exemplo n.º 2
0
        /// <summary>
        /// Measure NH3 content inside a digester
        /// 1st measurement is Snh3 in g/l
        /// 2nd : Snh3 + NH3 in Xc in g/l
        ///
        /// type 5
        /// </summary>
        /// <param name="myPlant"></param>
        /// <param name="x">ADM state vector</param>
        /// <param name="param">not used - but OK</param>
        /// <param name="par">not used</param>
        /// <returns></returns>
        override protected physValue[] doMeasurement(biogas.plant myPlant, double[] x,
                                                     string param, params double[] par)
        {
            physValue[] values = new physValue[dimension];

            // ammonia
            values[0] = ADMstate.calcFromADMstate(x, "Snh3", "g/l");

            //
            // -2 wegen _2 bzw. _3
            string digester_id = id.Substring(("Snh3_").Length, id.Length - 2 - ("Snh3_").Length);

            // kmol N/m^3
            double NH3 = ADMstate.calcNH3(x, digester_id, myPlant);

            //
            // erstmal Snh3 nennen, damit convertUnit funktioniert
            // ammonia nitrogen, umrechnungsfaktor 14
            values[1]        = new physValue("N", NH3, "mol/l", "total ammonia nitrogen");
            values[1]        = values[1].convertUnit("g/l");
            values[1].Symbol = "NH3";

            return(values);
        }