public Element2D4(string id, string[] eNodes, string materialId, FEModell feModell) { if (eNodes == null) { throw new ArgumentNullException(nameof(eNodes)); } Modell = feModell ?? throw new ArgumentNullException(nameof(feModell)); ElementId = id ?? throw new ArgumentNullException(nameof(id)); ElementDof = 1; NodesPerElement = 4; NodeIds = eNodes ?? throw new ArgumentNullException(nameof(eNodes)); Nodes = new Knoten[NodesPerElement]; for (var i = 0; i < NodesPerElement; i++) { if (Modell.Knoten.TryGetValue(NodeIds[i], out var node)) { } if (node != null) { Nodes[i] = node ?? throw new ArgumentNullException(nameof(node)); } } ElementMaterialId = materialId ?? throw new ArgumentNullException(nameof(materialId)); SpecificHeatMatrix = new double[4]; }
public void ParseRandbedingungen(string[] lines, FEModell feModell) { modell = feModell; ParseRandbedingungenKnoten(lines); ParseRandbedingungenFlaeche(lines); ParseRandbedingungBoussinesq(lines); }
public void ParseRandbedingungen(string[] lines, FEModell feModell) { modell = feModell; var delimiters = new[] { '\t' }; for (var i = 0; i < lines.Length; i++) { if (lines[i] != "Randbedingungen") { continue; } FeParser.InputFound += "\nRandbedingungen"; do { substrings = lines[i + 1].Split(delimiters); switch (substrings.Length) { case 3: { supportId = substrings[0]; nodeId = substrings[1]; var pre = double.Parse(substrings[2]); randbedingung = new Randbedingung(nodeId, pre); modell.Randbedingungen.Add(supportId, randbedingung); i++; break; } default: throw new ParseAusnahme((i + 2) + ": Randbedingungen, falsche Anzahl Parameter"); } } while (lines[i + 1].Length != 0); break; } }
public void SetReferences(FEModell modell) { for (int i = 0; i < NodesPerElement; i++) { if (modell.Knoten.TryGetValue(NodeIds[i], out Knoten node)) { Nodes[i] = node; } if (node != null) { continue; } var message = "Element mit ID = " + NodeIds[i] + " ist nicht im Modell enthalten"; _ = MessageBox.Show(message, "AbstraktElement"); } if (modell.Material.TryGetValue(ElementMaterialId, out AbstraktMaterial material)) { ElementMaterial = material; } if (material == null) { var message = "Material mit ID=" + ElementMaterialId + " ist nicht im Modell enthalten"; _ = MessageBox.Show(message, "AbstraktElement"); } }
public DynamischeErgebnisseAnzeigen(FEModell feModell) { this.Language = XmlLanguage.GetLanguage("de-DE"); modell = feModell; InitializeComponent(); Show(); Knotenauswahl.ItemsSource = modell.Knoten.Keys; // Auswahl des Zeitschritts aus Zeitraster, z.B. jeder 10. Dt = modell.Zeitintegration.Dt; var tmax = modell.Zeitintegration.Tmax; NSteps = (int)(tmax / Dt); const int zeitraster = 1; //if (NSteps > 1000) zeitraster = 10; NSteps = (NSteps / zeitraster) + 1; var zeit = new double[NSteps]; for (var i = 0; i < NSteps; i++) { zeit[i] = (i * Dt * zeitraster); } Zeitschrittauswahl.ItemsSource = zeit; }
// parsing a new model to be read from file public void ParseModel(string[] lines) { for (var i = 0; i < lines.Length; i++) { InputFound = ""; if (lines[i] != "ModellName") { continue; } ModelId = lines[i + 1]; InputFound = "ModellName = " + ModelId; break; } for (var i = 0; i < lines.Length; i++) { if (lines[i] != "Raumdimension") { continue; } InputFound += "\nRaumdimension"; substrings = lines[i + 1].Split(delimiters); SpatialDimension = int.Parse(substrings[0]); numberNodalDof = int.Parse(substrings[1]); break; } FeModell = new FEModell(SpatialDimension); }
public StatikErgebnisseAnzeigen(FEModell feModell) { Language = XmlLanguage.GetLanguage("de-DE"); modell = feModell; InitializeComponent(); DataContext = this; }
public EigenlösungVisualisieren(FEModell feModel) { Language = XmlLanguage.GetLanguage("de-DE"); modell = feModel; InitializeComponent(); Verformungen = new List <object>(); Eigenfrequenzen = new List <object>(); Show(); // Auswahl der Eigenlösung var anzahlEigenformen = modell.Eigenstate.NumberOfStates; var eigenformNr = new int[anzahlEigenformen]; for (var i = 0; i < anzahlEigenformen; i++) { eigenformNr[i] = i + 1; } darstellung = new Darstellung(modell, VisualErgebnisse); darstellung.FestlegungAuflösung(); maxY = darstellung.maxY; auflösung = darstellung.auflösung; darstellung.UnverformteGeometrie(); Eigenlösungauswahl.ItemsSource = eigenformNr; eigenformSkalierung = double.Parse("10"); TxtSkalierung.Text = eigenformSkalierung.ToString(CultureInfo.CurrentCulture); }
public WärmedatenAnzeigen(FEModell modell) { Language = XmlLanguage.GetLanguage("de-DE"); this.modell = modell; InitializeComponent(); DataContext = this.modell; }
public void ParseLasten(string[] lines, FEModell feModel) { modell = feModel; ParseKnotenLast(lines); ParsePunktLast(lines); ParseLinienLast(lines); }
// parsing a new model to be read from file public void ParseWärmeElements(string[] lines, FEModell feModell) { modell = feModell; ParseElement2D2(lines); ParseElement2D3(lines); ParseElement2D4(lines); ParseElement3D8(lines); }
public DynamikDatenAnzeigen(FEModell feModell) { this.Language = XmlLanguage.GetLanguage("de-DE"); modell = feModell; InitializeComponent(); //DataContext für Integrationsparameter DataContext = modell; }
public EigenlösungVisualisieren(FEModell modell) { this.Language = XmlLanguage.GetLanguage("de-DE"); this.modell = modell; InitializeComponent(); Knotentemperaturen = new List <object>(); Eigenwerte = new List <object>(); }
public void ParseLasten(string[] lines, FEModell feModel) { modell = feModel; ParseKnotenLast(lines); ParseLinienLast(lines); ParseElementLast3(lines); ParseElementLast4(lines); }
// parsing a new model to be read from file public void ParseElements(string[] lines, FEModell feModell) { modell = feModell; ParseElement2D3(lines); ParseElement3D8(lines); ParseElement3D8Netz(lines); ParseQuerschnitte(lines); }
//******************************************************************** // Tragwerksberechnung private void TragwerksdatenEinlesen(object sender, EventArgs e) { var fileDialog = new OpenFileDialog { Filter = "inp files (*.inp)|*.inp|All files (*.*)|*.*", InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.Personal) }; fileDialog.InitialDirectory += "\\FE Programm\\input\\Tragwerksberechnung"; if (fileDialog.ShowDialog() != true) { return; } path = fileDialog.FileName; try { lines = File.ReadAllLines(path); } catch (ParseAusnahme) { throw new ParseAusnahme("Abbruch: Fehler bei Lesen aus Eingabedatei"); } parse = new FeParser(); parse.ParseModel(lines); modell = parse.FeModell; parse.ParseNodes(lines); var tragwerksElemente = new Tragwerksberechnung.ModelldatenLesen.ElementParser(); tragwerksElemente.ParseElements(lines, modell); var tragwerksMaterial = new Tragwerksberechnung.ModelldatenLesen.MaterialParser(); tragwerksMaterial.ParseMaterials(lines, modell); var tragwerksLasten = new Tragwerksberechnung.ModelldatenLesen.LastParser(); tragwerksLasten.ParseLasten(lines, modell); var tragwerksRandbedingungen = new Tragwerksberechnung.ModelldatenLesen.RandbedingungParser(); tragwerksRandbedingungen.ParseRandbedingungen(lines, modell); var tragwerksTransient = new Tragwerksberechnung.ModelldatenLesen.TransientParser(); tragwerksTransient.ParseZeitintegration(lines, modell); zeitintegrationDaten = tragwerksTransient.zeitintegrationDaten; tragwerksDaten = true; berechnet = false; zeitintegrationBerechnet = false; sb.Append(FeParser.InputFound + "\n\nTragwerksdaten erfolgreich eingelesen"); _ = MessageBox.Show(sb.ToString(), "Tragwerksberechnung"); sb.Clear(); }
// ... Constructor ........................................................ public FederElement(string[] springNode, string eMaterialId, FEModell feModel) { modell = feModel; NodeIds = springNode; ElementMaterialId = eMaterialId; ElementDof = 3; NodesPerElement = 1; Nodes = new Knoten[1]; }
private static readonly double[] GWeight = { 5.0 / 9.0, 8.0 / 9.0, 5.0 / 9.0 }; // gaussian coordinates, weights public Element3D8(string[] eNodes, string eMaterialId, FEModell feModell) { this.Modell = feModell; ElementDof = 3; NodesPerElement = 8; NodeIds = eNodes; Nodes = new Knoten[NodesPerElement]; ElementMaterialId = eMaterialId; }
// parsing a new model to be read from file public void ParseElements(string[] lines, FEModell feModell) { modell = feModell; ParseFachwerk(lines); ParseBiegebalken(lines); ParseFederelement(lines); ParseBiegebalkenGelenk(lines); ParseQuerschnitte(lines); }
public Element2D3(string[] eNodes, string eMaterialId, FEModell feModell) { Modell = feModell; ElementDof = 1; NodesPerElement = 3; NodeIds = eNodes; Nodes = new Knoten[NodesPerElement]; ElementMaterialId = eMaterialId; SpecificHeatMatrix = new double[3]; }
private void TragwerksdatenAnzeigen(object sender, EventArgs e) { if (modell == null) { modell = new FEModell(2); } var tragwerk = new Tragwerksberechnung.ModelldatenAnzeigen.TragwerkdatenAnzeigen(modell); tragwerk.Show(); }
private readonly double[,] e = new double[3, 3]; // Materialmatrix // ....Constructor................................................ public Element2D3(string[] eNodes, string crossSectionId, string eMaterialId, FEModell feModell) { Modell = feModell; ElementDof = 2; NodesPerElement = 3; NodeIds = eNodes; Nodes = new Knoten[NodesPerElement]; ElementCrossSectionId = crossSectionId; ElementMaterialId = eMaterialId; }
private void WärmedatenAnzeigen(object sender, RoutedEventArgs e) { if (modell == null) { modell = new FEModell(2); } var wärme = new Wärmeberechnung.ModelldatenAnzeigen.WärmedatenAnzeigen(modell); wärme.Show(); }
public void ParseMaterials(string[] lines, FEModell feModell) { modell = feModell; var delimiters = new[] { '\t' }; for (var i = 0; i < lines.Length; i++) { if (lines[i] != "Material") { continue; } FeParser.InputFound += "\nMaterial"; do { substrings = lines[i + 1].Split(delimiters); materialId = substrings[0]; switch (substrings.Length) { case 2: leitfähigkeit = new double[1]; leitfähigkeit[0] = double.Parse(substrings[1]); material = new Material(materialId, leitfähigkeit); break; case 3: leitfähigkeit = new double[1]; leitfähigkeit[0] = double.Parse(substrings[1]); dichteLeitfähigkeit = double.Parse(substrings[2]); material = new Material(materialId, leitfähigkeit, dichteLeitfähigkeit); break; case 4: leitfähigkeit = new double[3]; leitfähigkeit[0] = double.Parse(substrings[1]); leitfähigkeit[1] = double.Parse(substrings[2]); leitfähigkeit[2] = double.Parse(substrings[3]); material = new Material(materialId, leitfähigkeit); break; case 5: leitfähigkeit = new double[3]; leitfähigkeit[0] = double.Parse(substrings[1]); leitfähigkeit[1] = double.Parse(substrings[2]); leitfähigkeit[2] = double.Parse(substrings[3]); dichteLeitfähigkeit = double.Parse(substrings[4]); material = new Material(materialId, leitfähigkeit, dichteLeitfähigkeit); break; } modell.Material.Add(materialId, material); i++; } while (lines[i + 1].Length != 0); break; } }
public Lager(string nodeId, int conditions, IReadOnlyList <double> pre, FEModell modell) { if (modell.Knoten.TryGetValue(nodeId, out _)) { } else { Console.WriteLine(@"Lagerknoten nicht definiert"); return; } //Reactions = new double[pre.Count]; Prescribed = new double[pre.Count]; Restrained = new bool[pre.Count]; for (var i = 0; i < pre.Count; i++) { Restrained[i] = false; } NodeId = nodeId; Type = conditions; if (conditions == X_FIXED) { Prescribed[0] = pre[0]; Restrained[0] = true; } if (conditions == Y_FIXED) { Prescribed[1] = pre[1]; Restrained[1] = true; } if (conditions == R_FIXED) { Prescribed[2] = pre[2]; Restrained[2] = true; } if (conditions == XY_FIXED) { Prescribed[0] = pre[0]; Restrained[0] = true; Prescribed[1] = pre[1]; Restrained[1] = true; } if ((conditions) == XR_FIXED) { Prescribed[0] = pre[0]; Restrained[0] = true; Prescribed[2] = pre[2]; Restrained[2] = true; } if ((conditions) == YR_FIXED) { Prescribed[1] = pre[1]; Restrained[1] = true; Prescribed[2] = pre[2]; Restrained[2] = true; } if ((conditions) == XYR_FIXED) { Prescribed[0] = pre[0]; Restrained[0] = true; Prescribed[1] = pre[1]; Restrained[1] = true; Prescribed[2] = pre[2]; Restrained[2] = true; } }
public Element2D2(string id, string[] eNodes, string eMaterialId, FEModell feModell) { modell = feModell ?? throw new ArgumentNullException(nameof(feModell)); ElementId = id ?? throw new ArgumentNullException(nameof(id)); NodeIds = eNodes ?? throw new ArgumentNullException(nameof(eNodes)); ElementMaterialId = eMaterialId ?? throw new ArgumentNullException(nameof(eMaterialId)); ElementDof = 1; NodesPerElement = 2; elementMatrix = new double[NodesPerElement, NodesPerElement]; specificHeatMatrix = new double[NodesPerElement]; Nodes = new Knoten[NodesPerElement]; }
// ... Constructor ........................................................ public Fachwerk(string[] eNodes, string crossSectionId, string materialId, FEModell feModel) { modell = feModel; NodeIds = eNodes; ElementMaterialId = materialId; ElementCrossSectionId = crossSectionId; ElementDof = 2; NodesPerElement = 2; Nodes = new Knoten[2]; ElementState = new double[2]; ElementDeformations = new double[2]; }
// ... Constructor ........................................................ public Biegebalken(string[] eNodeIds, string eCrossSectionId, string eMaterialId, FEModell feModel) { modell = feModel; NodeIds = eNodeIds; ElementCrossSectionId = eCrossSectionId; ElementMaterialId = eMaterialId; ElementDof = 3; NodesPerElement = 2; Nodes = new Knoten[2]; ElementState = new double[6]; ElementDeformations = new double[6]; }
public Darstellung(FEModell feModell, Canvas visual) { modell = feModell; visualErgebnisse = visual; ElementIDs = new List <object>(); KnotenIDs = new List <object>(); Verformungen = new List <object>(); LastVektoren = new List <object>(); LagerDarstellung = new List <object>(); Spannungen = new List <object>(); Reaktionen = new List <object>(); FestlegungAuflösung(); }
public ElastizitätsmodellVisualisieren(FEModell feModel) { InitializeComponent(); Show(); darstellung = new Elastizitätsberechnung.Darstellung(feModel, VisualErgebnisse); darstellung.UnverformteGeometrie(); // mit Element und Knoten Ids darstellung.KnotenTexte(); darstellung.ElementTexte(); darstellung.LastenZeichnen(); darstellung.FesthaltungenZeichnen(); }