Пример #1
0
        /// <summary>
        /// Developed by: Mehrdad Negahban
        /// Date: 11/12/2012
        ///
        /// Purpose: Construct Quadrature points and weights for different number of integration points
        /// Comments: Gaussian
        ///
        /// Date modified:
        /// Modified by:
        /// Comments:
        /// </summary>
        public static QuadratureRule_ND Make_QuadratureRule_Rectangular_Gaussian_LxMxNPoints(int L_NIP, int M_NIP, int N_NIP)
        {
            QuadratureRule    QR_L  = GaussianQuadratureRule.MakeGaussianQuadrature(L_NIP);
            QuadratureRule    QR_M  = GaussianQuadratureRule.MakeGaussianQuadrature(M_NIP);
            QuadratureRule    QR_N  = GaussianQuadratureRule.MakeGaussianQuadrature(N_NIP);
            QuadratureRule_ND QR_ND = new QuadratureRule_ND();

            QR_ND.NIP = L_NIP * M_NIP * N_NIP;
            QR_ND.wi  = new double[QR_ND.NIP];
            QR_ND.Xi  = new Vector[QR_ND.NIP];
            int Index = 0;

            for (int i = 0; i < L_NIP; i++)
            {
                for (int j = 0; j < M_NIP; j++)
                {
                    for (int k = 0; k < N_NIP; k++)
                    {
                        QR_ND.wi[Index]       = QR_L.wi[i] * QR_M.wi[j] * QR_N.wi[k];
                        QR_ND.Xi[i]           = new Vector(3);
                        QR_ND.Xi[i].Values[0] = QR_L.Xi[i];
                        QR_ND.Xi[i].Values[1] = QR_M.Xi[j];
                        QR_ND.Xi[i].Values[2] = QR_N.Xi[k];
                    }
                }
            }
            return(QR_ND);
        }
Пример #2
0
        /// <summary>
        /// Developed by: Mehrdad Negahban
        /// Date: 11/12/2012
        ///
        /// Purpose: Construct Quadrature points and weights for different number of integration points
        /// Comments: Gaussian
        ///
        /// Date modified:
        /// Modified by:
        /// Comments:
        /// </summary>
        public static QuadratureRule_ND Make_QuadratureRule_Gaussian_NPoint(int NIP)
        {
            QuadratureRule    QR    = GaussianQuadratureRule.MakeGaussianQuadrature(NIP);
            QuadratureRule_ND QR_ND = new QuadratureRule_ND();

            QR_ND.NIP = NIP;
            QR_ND.wi  = QR.wi;
            QR_ND.Xi  = new Vector[NIP];
            for (int i = 0; i < NIP; i++)
            {
                QR_ND.Xi[i]           = new Vector(1);
                QR_ND.Xi[i].Values[0] = QR.Xi[i];
            }
            return(QR_ND);
        }
        /// <summary>
        /// Developed by: Mehrdad Negahban
        /// Date: 11/12/2012
        ///
        /// Purpose: Construct Quadrature points and weights for different number of integration points
        /// Comments: Gaussian
        ///
        /// Date modified:
        /// Modified by:
        /// Comments:
        /// </summary>
        public static QuadratureRule_ND Make_QuadratureRule_Rectangular_Gaussian_MxNPoints(int M_NIP, int N_NIP)
        {
            QuadratureRule    QR_M  = GaussianQuadratureRule.MakeGaussianQuadrature(M_NIP);
            QuadratureRule    QR_N  = GaussianQuadratureRule.MakeGaussianQuadrature(N_NIP);
            QuadratureRule_ND QR_ND = new QuadratureRule_ND();

            QR_ND.NIP = M_NIP * N_NIP;
            QR_ND.wi  = new double[QR_ND.NIP];
            QR_ND.Xi  = new Vector[QR_ND.NIP];
            int Index = 0;

            for (int i = 0; i < M_NIP; i++)
            {
                for (int j = 0; j < N_NIP; j++)
                {
                    QR_ND.wi[Index]           = QR_M.wi[i] * QR_N.wi[j];
                    QR_ND.Xi[Index]           = new Vector(2);
                    QR_ND.Xi[Index].Values[0] = QR_M.Xi[i];
                    QR_ND.Xi[Index].Values[1] = QR_N.Xi[j];
                    Index++;
                }
            }
            return(QR_ND);
        }