protected override KeyedVector <NodalDegreeOfFreedom> Solve(StiffnessMatrix stiffnessMatrix, KeyedVector <NodalDegreeOfFreedom> forceVector)
        {
            KeyedSquareMatrix <NodalDegreeOfFreedom> inverse  = stiffnessMatrix.Inverse();
            KeyedVector <NodalDegreeOfFreedom>       solution = inverse.Multiply(forceVector);

            return(solution);
        }
        public CartesianPoint ConvertLocalCoordinatesToGlobalCoordinates(CartesianPoint localPoint)
        {
            KeyedSquareMatrix <DegreeOfFreedom> rotationMatrix = CalculateElementRotationMatrix().Transpose();
            CartesianPoint globalCoordRelativeToLocalOrigin    = new CartesianPoint(rotationMatrix.Multiply(localPoint));

            GeometricVector globalCoord = globalCoordRelativeToLocalOrigin.Add(this.LocalOrigin);

            return(new CartesianPoint(globalCoord));
        }
        public CartesianPoint ConvertGlobalCoordinatesToLocalCoordinates(CartesianPoint globalPoint)
        {
            GeometricVector localCoordRelativeToLocalOrigin = globalPoint.Subtract(this.LocalOrigin);

            KeyedSquareMatrix <DegreeOfFreedom> rotationMatrix = CalculateElementRotationMatrix();
            CartesianPoint localCoord = new CartesianPoint(rotationMatrix.Multiply(localCoordRelativeToLocalOrigin));

            return(new CartesianPoint(localCoord));
        }