示例#1
0
        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);
        }
示例#2
0
        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);
        }
示例#3
0
        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);
        }