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;
            }
        }