コード例 #1
0
        // ....Compute element Matrix.....................................
        public override double[,] ComputeMatrix()
        {
            double[] gaussCoord = { -1 / Math.Sqrt(3), 1 / Math.Sqrt(3) };
            if (Modell.Material.TryGetValue(ElementMaterialId, out var abstractMaterial))
            {
            }
            material        = (Material)abstractMaterial;
            ElementMaterial = material ?? throw new ArgumentNullException(nameof(material));
            var conductivity = material.Leitfähigkeit[0];

            MatrizenAlgebra.Clear(elementMatrix);
            foreach (var coor1 in gaussCoord)
            {
                foreach (var coor2 in gaussCoord)
                {
                    var z0 = coor1;
                    var z1 = coor2;
                    ComputeGeometry(z0, z1);
                    Sx = ComputeSx(z0, z1);
                    // Ke = C*Sx*SxT*determinant
                    MatrizenAlgebra.MultAddMatrixTransposed(elementMatrix, Determinant * conductivity, Sx, Sx);
                }
            }
            return(elementMatrix);
        }
コード例 #2
0
        // ....Compute element matrix.....................................
        public override double[,] ComputeMatrix()
        {
            if (Modell.Material.TryGetValue(ElementMaterialId, out var abstractMaterial))
            {
            }
            Material = (Material)abstractMaterial;
            double[] gCoord  = { -1 / Math.Sqrt(5.0 / 3), 0, 1 / (Math.Sqrt(5.0 / 3)) };
            double[] gWeight = { (5.0 / 9), (8.0 / 9), (5.0 / 9) };                               // gaussian coordinates, weights
            _ = new double[8, 3];
            MatrizenAlgebra.Clear(elementMatrix);

            // material matrix für ebene Verzerrung (plane strain)
            var conduct = ((Material)Material)?.Leitfähigkeit;

            if (conduct != null)
            {
                e[0, 0] = conduct[0];
                e[1, 1] = conduct[1];
                e[2, 2] = conduct[2];
            }

            for (var i = 0; i < gCoord.Length; i++)
            {
                var z0 = gCoord[i]; var g0 = gWeight[i];
                for (var j = 0; j < gCoord.Length; j++)
                {
                    var z1 = gCoord[j]; var g1 = gWeight[j];
                    for (var k = 0; k < gCoord.Length; k++)
                    {
                        var z2 = gCoord[k]; var g2 = gWeight[k];
                        ComputeGeometry(z0, z1, z2);
                        Sx = ComputeSx(z0, z1, z2);
                        // Ke = determinant*g0*g1*g2*Sx*E*SxT
                        var temp = MatrizenAlgebra.Mult(Sx, e);
                        MatrizenAlgebra.MultAddMatrixTransposed(elementMatrix, Determinant * g0 * g1 * g2, temp, Sx);
                    }
                }
            }
            return(elementMatrix);
        }
コード例 #3
0
ファイル: Element3D8.cs プロジェクト: KarlBeucke/FE
 // ....Compute element matrix.....................................
 public override double[,] ComputeMatrix()
 {
     MatrizenAlgebra.Clear(elementMatrix);
     ComputeMaterial();
     for (var i = 0; i < GCoord.Length; i++)
     {
         z0 = GCoord[i]; g0 = GWeight[i];
         for (var j = 0; j < GCoord.Length; j++)
         {
             z1 = GCoord[j]; g1 = GWeight[j];
             for (var k = 0; k < GCoord.Length; k++)
             {
                 z2 = GCoord[k]; g2 = GWeight[k];
                 ComputeGeometry(z0, z1, z2);
                 Sx = ComputeSx(z0, z1, z2);
                 ComputeStrainDisplacementTransformation();
                 // Ke = determinant*g0*g1*g2*BT*E*B
                 var temp = MatrizenAlgebra.MultTransposedMatrix(Determinant * g0 * g1 * g2, b, e);
                 MatrizenAlgebra.MultAddMatrix(elementMatrix, temp, b);
             }
         }
     }
     return(elementMatrix);
 }