/** * Mit dieser Methode kann eine Zone mit einer anderen gemischt werden. Das Volumen der beiden * Zonen wird addiert entsprechent wird keine Verschiebearbeit geleistet. Temperaur, Masse und * Zusammensetzung werden entsprechend {@link massenElementZumischen} berechnet * * @param Zone zone2 --> die Zone die zugemischt werden soll */ public void zoneZumischen(Zone zone2) { double m_Zu = zone2.get_m(); double T_Zu = zone2.get_T(); double V_Zu = zone2.get_V(); Spezies s_Zu = zone2.get_ggZone(); // Nach dem 1HS gilt: -pdV+dm*h=dU --> -p*deltaV+deltaH=deltaU=U2-U1 --> U2=U1+deltaH-p*deltaV double H_zu = m_Zu * s_Zu.get_h_mass(T_Zu); // deltaV=V_zu außerdem ist der Druck in beiden Zonen identisch double U2_Zone_mass = m_Zone * gg_Zone.get_u_mass(T_Zone) + H_zu - p_Zone * V_Zu; // dieser Aufruf muss vor der Temperaturberechnung erfolgen da sich hier die Masse und die // Zusammensetzung // der Zone ändert massenElementZumischen(m_Zu, s_Zu); // Berechnen der Mischungstemperatur T_Zone = gg_Zone.get_T4u_mass(U2_Zone_mass / m_Zone); }
public static Zone zonenMischen(CasePara cp, Zone z1, Zone z2, boolean burns, int ID) { double p = z1.get_p(); // fuer beide Zonen gleich double m1 = z1.get_m(); double T1 = z1.get_T(); double V1 = z1.get_V(); Spezies s1 = z1.get_ggZone(); double m2 = z2.get_m(); double T2 = z2.get_T(); double V2 = z2.get_V(); Spezies s2 = z2.get_ggZone(); // Erzeugen einer Spezies die durch die Mischung der beiden ZonenSpezies entsteht GasGemisch s0 = new GasGemisch("zonenGemisch"); Hashtable<Spezies, Double> ht0 = new Hashtable<Spezies, Double>(3); double mGes = m1 + m2; ht0.put(s1, m1 / mGes); ht0.put(s2, m2 / mGes); s0.set_Gasmischung_massenBruch(ht0); // Berechnung der Mischungstemperatur // 1.HS --> Kontrollraumgrenze wird um beide Zonen gelegt // Dann gilt: Umisch=U1+U2; double Umisch = m1 * s1.get_u_mass(T1) + m2 * s2.get_u_mass(T2); // Berechnung der Temperatur bei der die innere Energie von Spezies s0=Umisch ist. // Dies entspricht der Mischungstemperatur double T0 = s0.get_T4u_mass(Umisch / mGes); // Das Volumen beider Zonen wird addiert double V0 = V1 + V2; // Test ob alles stimmt double pV = z1.get_p() * V0; double mRT = mGes * T0 * s0.get_R(); double T = (m1 * s1.get_cv_mass(T1) * T1 + m2 * s2.get_cv_mass(T2) * T2) / (m1 * s1.get_cv_mass(T1) + m2 * s2.get_cv_mass(T2)); double deltaT = (T - T0) / T0 * 100; double T3 = pV / mGes / s0.get_R(); double mRT2 = mGes * T * s0.get_R(); double mRT3 = mGes * T3 * s0.get_R(); // Fazit ueber die Gasgleichung geht es auch und zwar viel einfacher und genauer! Zone z0 = new Zone(cp, p, V0, T0, mGes, s0, burns, ID); return z0; }