/** * Mit dieser Methode kann ein Massenelement eines Gases der Zone zugemischt werden. --> es wird * nur die Zusammensetzung und die Gesamtmasse der Zone geändert nicht aber die Temperatur * * @param idx --> Rechenindex * @param mZu --> zugemischtes Massenelement [kg] * @param sZu --> SpeziesObjekt des Massenelements */ public void massenElementZumischen(double mZu, Spezies sZu) { Hashtable<Spezies, Double> massenBruchHash_Zone = gg_Zone.get_speziesMassenBruecheDetail(); Hashtable<Spezies, Double> massenBruchHashNeu = new Hashtable<Spezies, Double>(4); double m_Zone_neu = mZu + m_Zone; if (m_Zone_neu < 0) { try { throw new MiscException( "ERROR: Aus Zone " + ID + " wird mehr Masse entnommen als vorhanden ist"); } catch (MiscException miscE) { miscE.stopBremo(); } } Hashtable<Spezies, Double> einzelMassenHashIn = new Hashtable<Spezies, Double>(); // einzelmassen der zugefuehrten Spezies bestimmen if (mZu < 0) { if (sZu.isGasGemisch()) { einzelMassenHashIn = // enthaelt negative Werte!! this.get_einzelMassenHash(((GasGemisch) sZu).get_speziesMassenBruecheDetail(), mZu); } else { einzelMassenHashIn.put(sZu, mZu); } // einzelmassen der Zone bestimmen Hashtable<Spezies, Double> einzelMassenHashZone = this.get_einzelMassenHash(massenBruchHash_Zone, m_Zone); // Addieren der einzelnen Massen von Zone und sZu Enumeration<Spezies> e = einzelMassenHashZone.keys(); Spezies spez; double mTemp; while (e.hasMoreElements()) { spez = e.nextElement(); mTemp = einzelMassenHashZone.get(spez); if (einzelMassenHashIn.containsKey(spez)) mTemp = mTemp + einzelMassenHashIn.get(spez); // Wert in Hashtable ist negativ double massenBruch = mTemp / m_Zone_neu; massenBruchHashNeu.put(spez, massenBruch); if (massenBruch < 0) { // kommt vor wenn eine Masse entnommen werden soll die gar nicht in der Zone ist! try { throw new MiscException( "ERROR: In einer Zone tritt ein negativer Massenbruch auf \n" + spez.get_name() + ": " + massenBruch); } catch (MiscException miscE) { massenBruchHashNeu.put(spez, 0d); // miscE.stopBremo(); //TODO check mich } } } } else { massenBruchHashNeu.put(gg_Zone, m_Zone / m_Zone_neu); if (massenBruchHashNeu.containsKey( sZu)) { // ==True wenn der Zone eine Masse von sich selbst zugefuehrt wird massenBruchHashNeu.put(gg_Zone, 1D); } else massenBruchHashNeu.put(sZu, mZu / m_Zone_neu); } Hashtable<Spezies, Double> molenBruchHash = new Hashtable<Spezies, Double>(4); molenBruchHash = GasGemisch.Gasmischer.massenBruch2molenBruch(massenBruchHashNeu); GasGemisch gasGemisch = new GasGemisch(molenBruchHash, ""); // würde man hier die gg_Zone.set_Gasmischung_molenBruch(gasGemisch.get_speziesMolenBruecheDetail()); m_Zone = m_Zone_neu; }