/// <inheritdoc/> public Matrix CalcLocalStiffnessMatrix(Element targetElement) { var intg = new BriefFiniteElementNet.Integration.GaussianIntegrator(); var tri = targetElement as TriangleElement; intg.A2 = 1; intg.A1 = 0; intg.F2 = (gama => 1); intg.F1 = (gama => 0); intg.G2 = ((eta, gama) => 1 - eta); intg.G1 = ((eta, gama) => 0); intg.XiPointCount = intg.EtaPointCount = 3; intg.GammaPointCount = 1; intg.H = new FunctionMatrixFunction((xi, eta, gamma) => { var b = GetBMatrixAt(targetElement, xi, eta); var d = this.GetDMatrixAt(targetElement, xi, eta); var j = GetJMatrixAt(targetElement, xi, eta); var detJ = j.Determinant(); var ki = b.Transpose() * d * b; ki.Scale(Math.Abs(j.Determinant())); //eq 3.27: thickness* bT * d * b; ki.Scale(tri.Section.GetThicknessAt(new double[] { xi, eta })); return(ki); }); var res = intg.Integrate(); return(res); }
public Matrix CalcLocalStiffnessMatrix(Element targetElement) { var intg = new BriefFiniteElementNet.Integration.GaussianIntegrator(); // using eq. 3.50 [1] / eq 8 [3] var quad = targetElement as QuadrilaturalElement; intg.A2 = 1.0; intg.A1 = 0.0; intg.F2 = (gama => + 1.0); intg.F1 = (gama => - 1.0); intg.G2 = (eta, gama) => + 1.0; intg.G1 = (eta, gama) => - 1.0; intg.XiPointCount = intg.EtaPointCount = 3; // ref [2] intg.GammaPointCount = 1; intg.H = new FunctionMatrixFunction((xi, eta, gamma) => { var b = GetBMatrixAt(targetElement, xi, eta); var d = this.GetDMatrixAt(targetElement, xi, eta); var j = GetJMatrixAt(targetElement, xi, eta); var detJ = j.Determinant(); var ki = b.Transpose() * d * b; ki.Scale(Math.Abs(j.Determinant())); ki.Scale(quad.Section.GetThicknessAt(new double[] { xi, eta })); return(ki); }); var res = intg.Integrate(); return(res); }
/// <inheritdoc/> public Matrix CalcLocalStiffnessMatrix(Element targetElement) { var intg = new BriefFiniteElementNet.Integration.GaussianIntegrator(); intg.A2 = 1; intg.A1 = 0; intg.F2 = (gama => 1); intg.F1 = (gama => 0); intg.G2 = ((eta, gama) => 1 - eta); intg.G1 = ((eta, gama) => 0); intg.XiPointCount = intg.EtaPointCount = 3; intg.GammaPointCount = 1; intg.H = new FunctionMatrixFunction((xi, eta, gamma) => { var b = GetBMatrixAt(targetElement, xi, eta); var d = this.GetDMatrixAt(targetElement, xi, eta); var j = GetJMatrixAt(targetElement, xi, eta); var detJ = j.Determinant(); var ki = b.Transpose() * d * b; ki.MultiplyByConstant(Math.Abs(j.Determinant())); return(ki); }); var res = intg.Integrate(); return(res); }