public Analysis(FeModel m) { modell = m; if (modell == null) { throw new AnalysisException("Modelleingabedaten noch nicht eingelesen"); } // set System Indices var k = 0; foreach (var item in modell.Knoten) { node = item.Value; k = node.SetSystemIndices(k); } SetReferences(m); }
// object references are initially established only on the basis of unique identifiers, i.e. before object instantiation **** // when analyis is started, object references must be established using the unique identifiers ****************************** private void SetReferences(FeModel m) { modell = m; // Referenzen für Querschnittsverweise von 2D Elementen setzen foreach (var abstractElement in from KeyValuePair <string, AbstractElement> item in modell.Elemente where item.Value != null where item.Value is Abstract2D let element = item.Value select element) { var element2D = (Abstract2D)abstractElement; element2D.SetCrossSectionReferences(modell); } // setzen aller notwendigen Elementreferenzen und der Systemindizes aller Elemente foreach (var abstractElement in modell.Elemente.Select(item => item.Value)) { abstractElement.SetReferences(modell); abstractElement.SetSystemIndicesOfElement(); } foreach (var support in modell.Randbedingungen.Select(item => item.Value)) { support.SetReferences(modell); } foreach (var load in modell.ElementLasten.Select(item => item.Value)) { load.SetReferences(modell); } foreach (var timeDepLoad in modell.ZeitabhängigeKnotenLasten.Select(item => item.Value)) { timeDepLoad.SetReferences(modell); } foreach (var timeDepLoad in modell.ZeitabhängigeElementLasten.Select(item => item.Value)) { timeDepLoad.SetReferences(modell); } foreach (var timeDepBc in modell.ZeitabhängigeRandbedingung.Select(item => item.Value)) { timeDepBc.SetReferences(modell); } }