private void DarstellungNormalkräfte(int zeitIndex) { // Bestimmung der maximalen Normalkraft IEnumerable <AbstraktBalken> Beams() { foreach (var item in modell.Elemente) { if (!(item.Value is AbstraktBalken element)) { continue; } yield return(element); } } maxNormalkraftZeit = 0; // Maximalwert der Normalkraft ermitteln foreach (var element in Beams()) { element.ElementState = element.ComputeElementState(); if (Math.Abs(element.ElementState[0]) > maxNormalkraftZeit) { maxNormalkraftZeit = Math.Abs(element.ElementState[0]); } if (element.ElementState.Length == 2) { if (Math.Abs(element.ElementState[1]) > maxNormalkraftZeit) { maxNormalkraftZeit = Math.Abs(element.ElementState[1]); } } else { if (Math.Abs(element.ElementState[3]) > maxNormalkraftZeit) { maxNormalkraftZeit = Math.Abs(element.ElementState[3]); } } } // Normalkraftdarstellung für alle Biegebalken zeichnen foreach (var element in Beams()) { if (maxNormalkraft == 0) { continue; } darstellung.Normalkraft_Zeichnen(element, maxNormalkraft, false); } var zeit = zeitIndex * dt; var maxText = "maximale absolute Normalkraft = " + maxNormalkraftZeit.ToString("N0") + " nach Zeit = " + zeit.ToString("N2"); MaximalwertAnZeitschritt(maxText); }
private void BtnNormalkraft_Click(object sender, RoutedEventArgs e) { double maxNormalkraft = 0; if (querkräfteAn) { foreach (Shape path in darstellung.QuerkraftListe) { VisualErgebnisse.Children.Remove(path); } querkräfteAn = false; } if (momenteAn) { foreach (Shape path in darstellung.MomenteListe) { VisualErgebnisse.Children.Remove(path); } VisualErgebnisse.Children.Remove(darstellung.maxMomentText); momenteAn = false; } if (!normalkräfteAn) { // Bestimmung der maximalen Normalkraft IEnumerable <AbstraktBalken> Beams() { foreach (var item in modell.Elemente) { if (item.Value is AbstraktBalken beam) { yield return(beam); } } } foreach (var beam in Beams()) { var barEndForces = beam.ComputeElementState(); if (Math.Abs(barEndForces[0]) > maxNormalkraft) { maxNormalkraft = Math.Abs(barEndForces[0]); } if (barEndForces.Length > 2) { if (Math.Abs(barEndForces[3]) > maxNormalkraft) { maxNormalkraft = Math.Abs(barEndForces[3]); } } else { if (Math.Abs(barEndForces[1]) > maxNormalkraft) { maxNormalkraft = Math.Abs(barEndForces[1]); } } } // Skalierung der Normalkraftdarstellung und Darstellung aller Normalkraftverteilungen foreach (var beam in Beams()) { beam.ComputeElementState(); darstellung.Normalkraft_Zeichnen(beam, maxNormalkraft, false); } normalkräfteAn = true; } else { foreach (Shape path in darstellung.NormalkraftListe) { VisualErgebnisse.Children.Remove(path); } normalkräfteAn = false; } }