using System; using System.Collections.Generic; using System.Linq; using System.Text; using Slipstream; using Azimuth; using Azimuth.DenseLinearAlgebra; using Slipstream.IdealFluid; namespace Slipstream.UnitTests { public class PanelTests : UnitTestSharp.TestFixture { public void MiddleOfPanel() { var result = Panel.InducedVelocityFromSource(Vector.Zero, 2); CheckEqual(new Vector(0, Math.PI), result); } public void RightEdgeOfPanel() { var result = Panel.InducedVelocityFromSource(new Vector(1, 0), 2); CheckEqual(new Vector(5, 0), result); } public void NearRightEdgeOfPanel_Inside() { var result = Panel.InducedVelocityFromSource(new Vector(0.999999, 0), 2); CheckEqual(new Vector(5, Math.PI), result); } public void NearRightEdgeOfPanel_Outside() { var result = Panel.InducedVelocityFromSource(new Vector(1.01, 0), 2); CheckEqual(new Vector(5, 0), result); } public void LeftEdgeOfPanel() { var result = Panel.InducedVelocityFromSource(new Vector(-1, 0), 2); CheckEqual(new Vector(-5, 0), result); } public void NearLeftEdgeOfPanel_Inside() { var result = Panel.InducedVelocityFromSource(new Vector(-0.999999, 0), 2); CheckEqual(new Vector(-5, Math.PI), result); } public void NearLeftEdgeOfPanel_Outside() { var result = Panel.InducedVelocityFromSource(new Vector(-1.00001, 0), 2); CheckEqual(new Vector(-5, 0), result); } public void FarFarRightEdgeOfPanel() { var result = Panel.InducedVelocityFromSource(new Vector(100, 0), 2); CheckEqual(new Vector(Math.Log(101.0 * 101.0 / 99.0 / 99.0) / 2, 0), result); } public class PotentialFromSources : UnitTestSharp.TestFixture { public void Basic() { DenseVector x = new DenseVector(new Scalar[] { 0, 1, 2, 3, }); DenseVector y = new DenseVector(new Scalar[] { 3, 2, 1, 0, }); DenseVector potentials = new DenseVector(x.Length); Panel.InducedPotentialsFromSource(x, y, 1, ref potentials); var expected = new DenseVector(new Scalar[] { Panel.InducedPotentialFromSource(new Vector(x[0], y[0]), 1), Panel.InducedPotentialFromSource(new Vector(x[1], y[1]), 1), Panel.InducedPotentialFromSource(new Vector(x[2], y[2]), 1), Panel.InducedPotentialFromSource(new Vector(x[3], y[3]), 1), }); CheckEqual(expected, potentials); } } } }