ISAAR.MSolve.IGA/SupportiveClasses/GaussQuadrature.cs
/// <summary>
/// Create full gauss quadrature rule for a three-dimensional isogeometric element.
/// </summary>
/// <param name="degreeKsi">Parametric degree Ksi.</param>
/// <param name="degreeHeta">Parametric degree Heta.</param>
/// /// <param name="degreeZeta">Parametric degree Zeta.</param>
/// <param name="knotsOfElement">An <see cref="IList{T}"/> with the genertaed <see cref="GaussLegendrePoint3D"/>.</param>
/// <returns>An <see cref="IList{T}"/> with the genertaed <see cref="GaussLegendrePoint3D"/>.</returns>
Create full gauss quadrature rule for a three-dimensional isogeometric element.
Create full gauss quadrature rule for a three - dimensional isogeometric element .
public GaussLegendrePoint3D[] CalculateElementGaussPoints(int degreeKsi, int degreeHeta, int degreeZeta, IList<Knot> knotsOfElement)
		{
			int numberOfGPKsi = degreeKsi + 1;
			int numberOfGPHeta = degreeHeta + 1;
			int numberOfGPZeta = degreeZeta + 1;
			var gaussPointsofElement = new GaussLegendrePoint3D[numberOfGPKsi * numberOfGPHeta * numberOfGPZeta];
			double[] coordinatesKsi = new double[numberOfGPKsi];
			double[] weightKsi = new double[numberOfGPKsi];
			double[] coordinatesHeta = new double[numberOfGPHeta];
			double[] weightHeta = new double[numberOfGPHeta];
			double[] coordinatesZeta = new double[numberOfGPZeta];
			double[] weightZeta = new double[numberOfGPZeta];
			for (int i = 0; i < numberOfGPKsi; i++)
			{
				coordinatesKsi[i] = 0.5 * (knotsOfElement[0].Ksi + knotsOfElement[4].Ksi
					+ (knotsOfElement[4].Ksi - knotsOfElement[0].Ksi) * coordinate[degreeKsi][i]);
				weightKsi[i] = 0.5 * ((knotsOfElement[4].Ksi - knotsOfElement[0].Ksi) * weight[degreeKsi][i]);
			}
			for (int i = 0; i < numberOfGPHeta; i++)
			{
				coordinatesHeta[i] = 0.5 * (knotsOfElement[0].Heta + knotsOfElement[2].Heta
					+ (knotsOfElement[2].Heta - knotsOfElement[0].Heta) * coordinate[degreeHeta][i]);
				weightHeta[i] = 0.5 * ((knotsOfElement[2].Heta - knotsOfElement[0].Heta) * weight[degreeHeta][i]);
			}
			for (int i = 0; i < numberOfGPZeta; i++)
			{
				coordinatesZeta[i] = 0.5 * (knotsOfElement[0].Zeta + knotsOfElement[1].Zeta
					+ (knotsOfElement[1].Zeta - knotsOfElement[0].Zeta) * coordinate[degreeZeta][i]);
				weightZeta[i] = 0.5 * ((knotsOfElement[1].Zeta - knotsOfElement[0].Zeta) * weight[degreeZeta][i]);
			}
			var index = 0;
			for (int i = 0; i < numberOfGPKsi; i++)
			{
				for (int j = 0; j < numberOfGPHeta; j++)
				{
					for (int k = 0; k < numberOfGPZeta; k++)
					{
						gaussPointsofElement[index++] = new GaussLegendrePoint3D(coordinatesKsi[i], coordinatesHeta[j], coordinatesZeta[k], weightKsi[i] * weightHeta[j] * weightZeta[k]);
					}
				}
			}
			return gaussPointsofElement;
		}
public GaussLegendrePoint3D [ ] CalculateElementGaussPoints ( int degreeKsi , int degreeHeta , int degreeZeta , IList < Knot > knotsOfElement ) { int numberOfGPKsi = degreeKsi + 1 ; int numberOfGPHeta = degreeHeta + 1 ; int numberOfGPZeta = degreeZeta + 1 ; var gaussPointsofElement = new GaussLegendrePoint3D [ numberOfGPKsi * numberOfGPHeta * numberOfGPZeta ] ; double [ ] coordinatesKsi = new double [ numberOfGPKsi ] ; double [ ] weightKsi = new double [ numberOfGPKsi ] ; double [ ] coordinatesHeta = new double [ numberOfGPHeta ] ; double [ ] weightHeta = new double [ numberOfGPHeta ] ; double [ ] coordinatesZeta = new double [ numberOfGPZeta ] ; double [ ] weightZeta = new double [ numberOfGPZeta ] ; for ( int i = 0 ; i < numberOfGPKsi ; i ++ ) { coordinatesKsi [ i ] = 0.5 * ( knotsOfElement [ 0 ] . Ksi + knotsOfElement [ 4 ] . Ksi + ( knotsOfElement [ 4 ] . Ksi - knotsOfElement [ 0 ] . Ksi ) * coordinate [ degreeKsi ] [ i ] ) ; weightKsi [ i ] = 0.5 * ( ( knotsOfElement [ 4 ] . Ksi - knotsOfElement [ 0 ] . Ksi ) * weight [ degreeKsi ] [ i ] ) ; } for ( int i = 0 ; i < numberOfGPHeta ; i ++ ) { coordinatesHeta [ i ] = 0.5 * ( knotsOfElement [ 0 ] . Heta + knotsOfElement [ 2 ] . Heta + ( knotsOfElement [ 2 ] . Heta - knotsOfElement [ 0 ] . Heta ) * coordinate [ degreeHeta ] [ i ] ) ; weightHeta [ i ] = 0.5 * ( ( knotsOfElement [ 2 ] . Heta - knotsOfElement [ 0 ] . Heta ) * weight [ degreeHeta ] [ i ] ) ; } for ( int i = 0 ; i < numberOfGPZeta ; i ++ ) { coordinatesZeta [ i ] = 0.5 * ( knotsOfElement [ 0 ] . Zeta + knotsOfElement [ 1 ] . Zeta + ( knotsOfElement [ 1 ] . Zeta - knotsOfElement [ 0 ] . Zeta ) * coordinate [ degreeZeta ] [ i ] ) ; weightZeta [ i ] = 0.5 * ( ( knotsOfElement [ 1 ] . Zeta - knotsOfElement [ 0 ] . Zeta ) * weight [ degreeZeta ] [ i ] ) ; } var index = 0 ; for ( int i = 0 ; i < numberOfGPKsi ; i ++ ) { for ( int j = 0 ; j < numberOfGPHeta ; j ++ ) { for ( int k = 0 ; k < numberOfGPZeta ; k ++ ) { gaussPointsofElement [ index ++ ] = new GaussLegendrePoint3D ( coordinatesKsi [ i ] , coordinatesHeta [ j ] , coordinatesZeta [ k ] , weightKsi [ i ] * weightHeta [ j ] * weightZeta [ k ] ) ; } } } return gaussPointsofElement ; }
Create full gauss quadrature rule for a three-dimensional isogeometric element.
Create full gauss quadrature rule for a three - dimensional isogeometric element .
An  with the genertaed .
An with the genertaed .
degreeKsi
int
Parametric degree Ksi.
Parametric degree Ksi .
degreeHeta
int
Parametric degree Heta.
Parametric degree Heta .
degreeZeta
int
Parametric degree Zeta.
Parametric degree Zeta .
knotsOfElement
IList<Knot>
An  with the genertaed .
An with the genertaed .