ISAAR.MSolve.IGA/Elements/Continuum/ContinuumElement2D.cs
/// <summary>
/// This method calculates the Neumann boundary condition when applied to a two-dimensional NURBS element.
/// </summary>
/// <param name="element">An element of type <see cref="NURBSElement2D"/></param>
/// <param name="face">An two dimensional boundary entity. For more info see <see cref="Face"/>.</param>
/// <param name="neumann"><inheritdoc cref="NeumannBoundaryCondition"/>.</param>
/// <returns>A <see cref="Dictionary{TKey,TValue}"/> where integer values denote the degree of freedom that has a value double load value due to the enforcement of the <see cref="NeumannBoundaryCondition"/>.</returns>
This method calculates the Neumann boundary condition when applied to a two-dimensional NURBS element.
This method calculates the Neumann boundary condition when applied to a two - dimensional NURBS element .
public Dictionary<int, double> CalculateLoadingCondition(Element element, Face face, NeumannBoundaryCondition neumann)
		{
			Contract.Requires(element != null, "The element cannot be null");
			Contract.Requires(face != null, "The face cannot be null");
			Contract.Requires(neumann != null, "The Neumann Boundary condition cannot be null");
			IList<GaussLegendrePoint3D> gaussPoints =
				CreateElementGaussPoints(element, face.Degrees[0], face.Degrees[1]);
			Dictionary<int, double> neumannLoad = new Dictionary<int, double>();
			var elementControlPoints = element.ControlPoints.ToArray();
			for (int j = 0; j < gaussPoints.Count; j++)
			{
				var jacobianMatrix = JacobianMatrixForLoadCalculation(element, _shapeFunctions, j, out var xGaussPoint, out var yGaussPoint, out var zGaussPoint);
				Vector surfaceBasisVector1 = Vector.CreateZero(3);
				surfaceBasisVector1[0] = jacobianMatrix[0, 0];
				surfaceBasisVector1[1] = jacobianMatrix[0, 1];
				surfaceBasisVector1[2] = jacobianMatrix[0, 2];
				Vector surfaceBasisVector2 = Vector.CreateZero(3);
				surfaceBasisVector2[0] = jacobianMatrix[1, 0];
				surfaceBasisVector2[1] = jacobianMatrix[1, 1];
				surfaceBasisVector2[2] = jacobianMatrix[1, 2];
				Vector surfaceBasisVector3 = surfaceBasisVector1.CrossProduct(surfaceBasisVector2);
				double jacdet = jacobianMatrix[0, 0] * jacobianMatrix[1, 1]
								- jacobianMatrix[1, 0] * jacobianMatrix[0, 1];
				CalculateNeumannLoad2D(element, neumann, neumannLoad, _shapeFunctions, j, jacdet, gaussPoints, xGaussPoint, yGaussPoint, zGaussPoint, surfaceBasisVector3);
			}
			return neumannLoad;
		}
public Dictionary < int , double > CalculateLoadingCondition ( Element element , Face face , NeumannBoundaryCondition neumann ) { Contract . Requires ( element != null , " " ) ; Contract . Requires ( face != null , " " ) ; Contract . Requires ( neumann != null , " " ) ; IList < GaussLegendrePoint3D > gaussPoints = CreateElementGaussPoints ( element , face . Degrees [ 0 ] , face . Degrees [ 1 ] ) ; Dictionary < int , double > neumannLoad = new Dictionary < int , double > ( ) ; var elementControlPoints = element . ControlPoints . ToArray ( ) ; for ( int j = 0 ; j < gaussPoints . Count ; j ++ ) { var jacobianMatrix = JacobianMatrixForLoadCalculation ( element , _shapeFunctions , j , out var xGaussPoint , out var yGaussPoint , out var zGaussPoint ) ; Vector surfaceBasisVector1 = Vector . CreateZero ( 3 ) ; surfaceBasisVector1 [ 0 ] = jacobianMatrix [ 0 , 0 ] ; surfaceBasisVector1 [ 1 ] = jacobianMatrix [ 0 , 1 ] ; surfaceBasisVector1 [ 2 ] = jacobianMatrix [ 0 , 2 ] ; Vector surfaceBasisVector2 = Vector . CreateZero ( 3 ) ; surfaceBasisVector2 [ 0 ] = jacobianMatrix [ 1 , 0 ] ; surfaceBasisVector2 [ 1 ] = jacobianMatrix [ 1 , 1 ] ; surfaceBasisVector2 [ 2 ] = jacobianMatrix [ 1 , 2 ] ; Vector surfaceBasisVector3 = surfaceBasisVector1 . CrossProduct ( surfaceBasisVector2 ) ; double jacdet = jacobianMatrix [ 0 , 0 ] * jacobianMatrix [ 1 , 1 ] - jacobianMatrix [ 1 , 0 ] * jacobianMatrix [ 0 , 1 ] ; CalculateNeumannLoad2D ( element , neumann , neumannLoad , _shapeFunctions , j , jacdet , gaussPoints , xGaussPoint , yGaussPoint , zGaussPoint , surfaceBasisVector3 ) ; } return neumannLoad ; }
This method calculates the Neumann boundary condition when applied to a two-dimensional NURBS element.
This method calculates the Neumann boundary condition when applied to a two - dimensional NURBS element .
A  where integer values denote the degree of freedom that has a value double load value due to the enforcement of the .
A where integer values denote the degree of freedom that has a value double load value due to the enforcement of the .
element
Element
An element of type
An element of type
face
Face
An two dimensional boundary entity. For more info see .
An two dimensional boundary entity . For more info see .
neumann
NeumannBoundaryCondition
None