ISAAR.MSolve.IGA/SupportiveClasses/GaussQuadrature.cs
/// <summary>
/// Create full gauss quadrature rule for a two-dimensional isogeometric element.
/// </summary>
/// <param name="degreeKsi">Parametric degree Ksi.</param>
/// <param name="degreeHeta">Parametric degree Heta.</param>
/// <param name="knotsOfElement">Knots of that will define the integration boundaries.</param>
/// <returns>An <see cref="IList{T}"/> with the genertaed <see cref="GaussLegendrePoint3D"/>.</returns>
Create full gauss quadrature rule for a two-dimensional isogeometric element.
Create full gauss quadrature rule for a two - dimensional isogeometric element .
public IList<GaussLegendrePoint3D> CalculateElementGaussPoints(int degreeKsi, int degreeHeta, IList<Knot> knotsOfElement)
		{
			IList<GaussLegendrePoint3D> gaussPointsofElement = new List<GaussLegendrePoint3D>();
			int numberOfGPKsi = degreeKsi + 1;
			int numberOfGPHeta = degreeHeta + 1;
			double[] coordinatesKsi = new double[numberOfGPKsi];
			double[] weightKsi = new double[numberOfGPKsi];
			double[] coordinatesHeta = new double[numberOfGPHeta];
			double[] weightHeta = new double[numberOfGPHeta];
			for (int i = 0; i < numberOfGPKsi; i++)
			{
				coordinatesKsi[i] = 0.5 * (knotsOfElement[0].Ksi + knotsOfElement[2].Ksi
					+ (knotsOfElement[2].Ksi - knotsOfElement[0].Ksi) * coordinate[degreeKsi][i]);
				weightKsi[i] = 0.5 * ((knotsOfElement[2].Ksi - knotsOfElement[0].Ksi) * weight[degreeKsi][i]);
			}
			for (int i = 0; i < numberOfGPHeta; i++)
			{
				coordinatesHeta[i] = 0.5 * (knotsOfElement[0].Heta + knotsOfElement[1].Heta
					+ (knotsOfElement[1].Heta - knotsOfElement[0].Heta) * coordinate[degreeHeta][i]);
				weightHeta[i] = 0.5 * ((knotsOfElement[1].Heta - knotsOfElement[0].Heta) * weight[degreeHeta][i]);
			}
			for (int i = 0; i < numberOfGPKsi; i++)
			{
				for (int j = 0; j < numberOfGPHeta; j++)
				{
					gaussPointsofElement.Add(new GaussLegendrePoint3D(coordinatesKsi[i], coordinatesHeta[j], 0, weightKsi[i] * weightHeta[j]));
				}
			}
			return gaussPointsofElement;
		}
public IList < GaussLegendrePoint3D > CalculateElementGaussPoints ( int degreeKsi , int degreeHeta , IList < Knot > knotsOfElement ) { IList < GaussLegendrePoint3D > gaussPointsofElement = new List < GaussLegendrePoint3D > ( ) ; int numberOfGPKsi = degreeKsi + 1 ; int numberOfGPHeta = degreeHeta + 1 ; double [ ] coordinatesKsi = new double [ numberOfGPKsi ] ; double [ ] weightKsi = new double [ numberOfGPKsi ] ; double [ ] coordinatesHeta = new double [ numberOfGPHeta ] ; double [ ] weightHeta = new double [ numberOfGPHeta ] ; for ( int i = 0 ; i < numberOfGPKsi ; i ++ ) { coordinatesKsi [ i ] = 0.5 * ( knotsOfElement [ 0 ] . Ksi + knotsOfElement [ 2 ] . Ksi + ( knotsOfElement [ 2 ] . Ksi - knotsOfElement [ 0 ] . Ksi ) * coordinate [ degreeKsi ] [ i ] ) ; weightKsi [ i ] = 0.5 * ( ( knotsOfElement [ 2 ] . Ksi - knotsOfElement [ 0 ] . Ksi ) * weight [ degreeKsi ] [ i ] ) ; } for ( int i = 0 ; i < numberOfGPHeta ; i ++ ) { coordinatesHeta [ i ] = 0.5 * ( knotsOfElement [ 0 ] . Heta + knotsOfElement [ 1 ] . Heta + ( knotsOfElement [ 1 ] . Heta - knotsOfElement [ 0 ] . Heta ) * coordinate [ degreeHeta ] [ i ] ) ; weightHeta [ i ] = 0.5 * ( ( knotsOfElement [ 1 ] . Heta - knotsOfElement [ 0 ] . Heta ) * weight [ degreeHeta ] [ i ] ) ; } for ( int i = 0 ; i < numberOfGPKsi ; i ++ ) { for ( int j = 0 ; j < numberOfGPHeta ; j ++ ) { gaussPointsofElement . Add ( new GaussLegendrePoint3D ( coordinatesKsi [ i ] , coordinatesHeta [ j ] , 0 , weightKsi [ i ] * weightHeta [ j ] ) ) ; } } return gaussPointsofElement ; }
Create full gauss quadrature rule for a two-dimensional isogeometric element.
Create full gauss quadrature rule for a two - 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 .
knotsOfElement
IList<Knot>
Knots of that will define the integration boundaries.
Knots of that will define the integration boundaries .