// ....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); }
// ....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); }
// ....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); }