public Vector GetResultAtPoint(Point point, double t) { IFiniteElement element = getElementForPoint(point); Vector result = null; if (element != null) { FiniteElementRectangle elementKsiTeta = new FiniteElementRectangle() { Node1 = new FiniteElementNode(-1, -1), Node3 = new FiniteElementNode(1, 1) }; Point pointKsiTeta = ResultHelper.TransformCoordinates(point, element, elementKsiTeta); Matrix finiteElementApproximationMatrix = getFiniteElementApproximationMatrix(pointKsiTeta); result = GetUByElement(element) * (finiteElementApproximationMatrix * Math.Cos(_frequency * t)); } return(result); }
public void TransformCoordinatesTest() { Point pointForm = new Point(1,1); // TODO: Initialize to an appropriate value FiniteElementRectangle elementFrom = new FiniteElementRectangle() { Node1 = new FiniteElementNode(1,1), Node3 = new FiniteElementNode(1.5,1.5) }; FiniteElementRectangle elementTo = new FiniteElementRectangle() { Node1 = new FiniteElementNode(-1, -1), Node3 = new FiniteElementNode(1, 1) }; // TODO: Initialize to an appropriate value Point expected = new Point(-1,-1); // TODO: Initialize to an appropriate value Point actual; actual = ResultHelper.TransformCoordinates(pointForm, elementFrom, elementTo); Assert.AreEqual(expected, actual); }
public void TransformCoordinatesTest() { Point pointForm = new Point(1, 1); // TODO: Initialize to an appropriate value FiniteElementRectangle elementFrom = new FiniteElementRectangle() { Node1 = new FiniteElementNode(1, 1), Node3 = new FiniteElementNode(1.5, 1.5) }; FiniteElementRectangle elementTo = new FiniteElementRectangle() { Node1 = new FiniteElementNode(-1, -1), Node3 = new FiniteElementNode(1, 1) }; // TODO: Initialize to an appropriate value Point expected = new Point(-1, -1); // TODO: Initialize to an appropriate value Point actual; actual = ResultHelper.TransformCoordinates(pointForm, elementFrom, elementTo); Assert.AreEqual(expected, actual); }
public Vector GetResultAtPoint(Point point, double t) { IFiniteElement element = getElementForPoint(point); Vector result = null; if (element != null) { int time = (int)(cutTime(t) / _deltaTime); FiniteElementRectangle elementKsiTeta = new FiniteElementRectangle() { Node1 = new FiniteElementNode(-1, -1), Node3 = new FiniteElementNode(1, 1) }; Point pointKsiTeta = ResultHelper.TransformCoordinates(point, element, elementKsiTeta); Matrix finiteElementApproximationMatrix = getFiniteElementApproximationMatrix(pointKsiTeta); result = GetUByElement(element, U[time]) * finiteElementApproximationMatrix; } return(result); }
private void GenerateFiniteElements(int LElements, int HElements) { Elements.Clear(); int LNodes = LElements + 1; int finiteElementsCount = Nodes.Count - LNodes; for (int i = 0; i < finiteElementsCount; i++) { if ((i + 1) % LNodes != 0) { FiniteElementRectangle element = new FiniteElementRectangle(); element.Node4 = Nodes[i]; element.Node3 = Nodes[i + 1]; element.Node1 = Nodes[i + LNodes]; element.Node2 = Nodes[i + LNodes + 1]; Elements.Add(element); } } }
private Shape ConvertFiniteElementToShape(FiniteElementRectangle fe) { Rectangle rectangle = new Rectangle(fe.Node1.Point.X, fe.Node1.Point.Y, fe.Node3.Point.Y - fe.Node1.Point.Y, fe.Node3.Point.X - fe.Node1.Point.X); return(rectangle); }