Example #1
0
        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];
        }
Example #2
0
 public void ParseRandbedingungen(string[] lines, FEModell feModell)
 {
     modell = feModell;
     ParseRandbedingungenKnoten(lines);
     ParseRandbedingungenFlaeche(lines);
     ParseRandbedingungBoussinesq(lines);
 }
Example #3
0
        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;
            }
        }
Example #4
0
        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;
        }
Example #6
0
        // 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;
 }
Example #8
0
        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);
        }
Example #9
0
 public WärmedatenAnzeigen(FEModell modell)
 {
     Language    = XmlLanguage.GetLanguage("de-DE");
     this.modell = modell;
     InitializeComponent();
     DataContext = this.modell;
 }
Example #10
0
        public void ParseLasten(string[] lines, FEModell feModel)
        {
            modell = feModel;

            ParseKnotenLast(lines);
            ParsePunktLast(lines);
            ParseLinienLast(lines);
        }
Example #11
0
 // 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;
 }
Example #13
0
 public EigenlösungVisualisieren(FEModell modell)
 {
     this.Language = XmlLanguage.GetLanguage("de-DE");
     this.modell   = modell;
     InitializeComponent();
     Knotentemperaturen = new List <object>();
     Eigenwerte         = new List <object>();
 }
Example #14
0
 public void ParseLasten(string[] lines, FEModell feModel)
 {
     modell = feModel;
     ParseKnotenLast(lines);
     ParseLinienLast(lines);
     ParseElementLast3(lines);
     ParseElementLast4(lines);
 }
Example #15
0
 // 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);
 }
Example #16
0
        //********************************************************************
        // 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();
        }
Example #17
0
 // ... Constructor ........................................................
 public FederElement(string[] springNode, string eMaterialId, FEModell feModel)
 {
     modell            = feModel;
     NodeIds           = springNode;
     ElementMaterialId = eMaterialId;
     ElementDof        = 3;
     NodesPerElement   = 1;
     Nodes             = new Knoten[1];
 }
Example #18
0
        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;
        }
Example #19
0
 // 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);
 }
Example #20
0
 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];
 }
Example #21
0
        private void TragwerksdatenAnzeigen(object sender, EventArgs e)
        {
            if (modell == null)
            {
                modell = new FEModell(2);
            }
            var tragwerk = new Tragwerksberechnung.ModelldatenAnzeigen.TragwerkdatenAnzeigen(modell);

            tragwerk.Show();
        }
Example #22
0
        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;
        }
Example #23
0
        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();
        }
Example #24
0
        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;
            }
        }
Example #25
0
        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;
            }
        }
Example #26
0
 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];
 }
Example #27
0
 // ... 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];
 }
Example #28
0
 // ... 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];
 }
Example #29
0
 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();
        }