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