ISAAR.MSolve.IGA/Elements/Continuum/ContinuumElement3D.cs
/// <summary>
/// Calculates the stiffness matrix of the element.
/// </summary>
/// <param name="element">An element of type <see cref="NurbsElement3D"/>.</param>
/// <returns>An <see cref="IMatrix"/> containing the stiffness matrix of an <see cref="NurbsElement3D"/>.</returns>
Calculates the stiffness matrix of the element.
Calculates the stiffness matrix of the element .
public IMatrix StiffnessMatrix(IElement element)
		{
			var elementControlPoints = element.Nodes.ToArray();
            var numberOfCP = elementControlPoints.Length;
			Matrix stiffnessMatrixElement = Matrix.CreateZero(numberOfCP * 3, numberOfCP * 3);
			for (int j = 0; j < _gaussPoints.Length; j++)
			{
				Matrix jacobianMatrix = CalculateJacobian(elementControlPoints, _shapeFunctions, j);
				double jacdet = CalculateJacobianDeterminant(jacobianMatrix);
				Matrix inverseJacobian = CalculateInverseJacobian(jacobianMatrix, jacdet);
				Matrix B1 = CalculateDeformationMatrix1(inverseJacobian);
				Matrix B2 = CalculateDeformationMatrix2(elementControlPoints, _shapeFunctions, j);
				Matrix B = B1 * B2;
				IMatrixView E = _material.ConstitutiveMatrix;
				Matrix stiffnessMatrixGaussPoint = B.ThisTransposeTimesOtherTimesThis(E) * jacdet * _gaussPoints[j].WeightFactor;
				for (int m = 0; m < numberOfCP * 3; m++)
				{
					for (int n = 0; n < numberOfCP * 3; n++)
					{
						stiffnessMatrixElement[m, n] += stiffnessMatrixGaussPoint[m, n];
					}
				}
			}
			return stiffnessMatrixElement;
		}
public IMatrix StiffnessMatrix ( IElement element ) { var elementControlPoints = element . Nodes . ToArray ( ) ; var numberOfCP = elementControlPoints . Length ; Matrix stiffnessMatrixElement = Matrix . CreateZero ( numberOfCP * 3 , numberOfCP * 3 ) ; for ( int j = 0 ; j < _gaussPoints . Length ; j ++ ) { Matrix jacobianMatrix = CalculateJacobian ( elementControlPoints , _shapeFunctions , j ) ; double jacdet = CalculateJacobianDeterminant ( jacobianMatrix ) ; Matrix inverseJacobian = CalculateInverseJacobian ( jacobianMatrix , jacdet ) ; Matrix B1 = CalculateDeformationMatrix1 ( inverseJacobian ) ; Matrix B2 = CalculateDeformationMatrix2 ( elementControlPoints , _shapeFunctions , j ) ; Matrix B = B1 * B2 ; IMatrixView E = _material . ConstitutiveMatrix ; Matrix stiffnessMatrixGaussPoint = B . ThisTransposeTimesOtherTimesThis ( E ) * jacdet * _gaussPoints [ j ] . WeightFactor ; for ( int m = 0 ; m < numberOfCP * 3 ; m ++ ) { for ( int n = 0 ; n < numberOfCP * 3 ; n ++ ) { stiffnessMatrixElement [ m , n ] += stiffnessMatrixGaussPoint [ m , n ] ; } } } return stiffnessMatrixElement ; }
Calculates the stiffness matrix of the element.
Calculates the stiffness matrix of the element .
An  containing the stiffness matrix of an .
An containing the stiffness matrix of an .
element
IElement
An element of type .
An element of type .