Esempio n. 1
0
  /**
   * 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;
  }