private GaussLegendrePoint3D[] CalculateGaussMatrices(double[,] nodeCoordinates) { GaussLegendrePoint1D[] integrationPointsPerAxis = GaussQuadrature.GetGaussLegendrePoints(iInt); int totalSamplingPoints = (int)Math.Pow(integrationPointsPerAxis.Length, 2); GaussLegendrePoint3D[] integrationPoints = new GaussLegendrePoint3D[totalSamplingPoints]; int counter = -1; foreach (GaussLegendrePoint1D pointXi in integrationPointsPerAxis) { foreach (GaussLegendrePoint1D pointEta in integrationPointsPerAxis) { counter += 1; double xi = pointXi.Coordinate; double eta = pointEta.Coordinate; //double[] ShapeFunctions = this.CalcQ4Shape(xi,eta); //Panos - Uncommnent to check Shapefunctions double[] faDS = this.CalcQ4ShapeFunctionDerivatives(xi, eta); double[,] faJ = this.CalcQ4J(nodeCoordinates, faDS, xi, eta); double fDetJ = this.CalcQ4JDetJ(nodeCoordinates, xi, eta); //double[,] faJInv = this.CalcQ4JInv(fDetJ, faJ); //Panos - Uncommnent to check JInv double[,] deformationMatrix = this.CalculateDeformationMatrix(nodeCoordinates, faDS, xi, eta, fDetJ); double weightFactor = pointXi.WeightFactor * pointEta.WeightFactor * fDetJ; //Panos - we should also insert the thickness of the element t. Now it is assumed t=1; integrationPoints[counter] = new GaussLegendrePoint3D(xi, eta, 0, deformationMatrix, weightFactor); } } return(integrationPoints); }
private GaussLegendrePoint3D[] CalculateGaussMatrices(double[,] nodeCoordinates) { GaussLegendrePoint1D[] integrationPointsPerAxis = GaussQuadrature.GetGaussLegendrePoints(iInt); int totalSamplingPoints = (int)Math.Pow(integrationPointsPerAxis.Length, 2); GaussLegendrePoint3D[] integrationPoints = new GaussLegendrePoint3D[totalSamplingPoints]; int counter = -1; foreach (GaussLegendrePoint1D pointXi in integrationPointsPerAxis) { foreach (GaussLegendrePoint1D pointEta in integrationPointsPerAxis) { counter += 1; double ksi = pointXi.Coordinate; double heta = pointEta.Coordinate; double[] shapeFunctionDerivatives = this.CalculateShapeFunctionDerivatives(ksi, heta); double fDetJ = this.CalculateJacobianDeterminant(nodeCoordinates, ksi, heta); double[,] deformationMatrix = this.CalculateDeformationMatrix(nodeCoordinates, shapeFunctionDerivatives, ksi, heta, fDetJ); double weightFactor = pointXi.WeightFactor * pointEta.WeightFactor * fDetJ; integrationPoints[counter] = new GaussLegendrePoint3D(ksi, heta, 0, deformationMatrix, weightFactor); } } return(integrationPoints); }
private GaussLegendrePoint3D[] CalculateGaussMatrices(double[,] nodeCoordinates) { GaussLegendrePoint1D[] integrationPointsPerAxis = GaussQuadrature.GetGaussLegendrePoints(iInt); int totalSamplingPoints = (int)Math.Pow(integrationPointsPerAxis.Length, 3); GaussLegendrePoint3D[] integrationPoints = new GaussLegendrePoint3D[totalSamplingPoints]; int counter = -1; foreach (GaussLegendrePoint1D pointXi in integrationPointsPerAxis) { foreach (GaussLegendrePoint1D pointEta in integrationPointsPerAxis) { foreach (GaussLegendrePoint1D pointZeta in integrationPointsPerAxis) { counter += 1; double xi = pointXi.Coordinate; double eta = pointEta.Coordinate; double zeta = pointZeta.Coordinate; ShapeFunctionNaturalDerivatives3D[] shapeDerivativeValues = this.CalculateShapeDerivativeValues(xi, eta, zeta); Jacobian3D jacobian = new Jacobian3D(nodeCoordinates, shapeDerivativeValues); double[,] deformationMatrix = this.CalculateDeformationMatrix(jacobian, shapeDerivativeValues); double weightFactor = pointXi.WeightFactor * pointEta.WeightFactor * pointZeta.WeightFactor * jacobian.Determinant; integrationPoints[counter] = new GaussLegendrePoint3D( xi, eta, zeta, deformationMatrix, weightFactor); } } } return(integrationPoints); }