コード例 #1
0
        //[/commonTester]

        //[commonPerfTester]
        public static void Performance(ISimulatorTester simulator, int numBodies)
        {
            const float clusterScale     = 1.0f;
            const float velocityScale    = 1.0f;
            const float deltaTime        = 0.001f;
            const float softeningSquared = 0.00125f;
            const float damping          = 0.9995f;
            const int   steps            = 10;

            Console.WriteLine("Perfomancing {0} with {1} bodies...", simulator.Description, numBodies);

            float4[] pos, vel;
            BodyInitializer.Initialize(new BodyInitializer1(), clusterScale, velocityScale, numBodies,
                                       out pos, out vel);
            simulator.Integrate(pos, vel, numBodies, deltaTime, softeningSquared, damping, steps);
        }
コード例 #2
0
        //[commonTester]
        public static void Test(
            BodyInitializer initializer,
            ISimulatorTester expectedSimulator,
            ISimulatorTester actualSimulator,
            int numBodies)
        {
            const float clusterScale     = 1.0f;
            const float velocityScale    = 1.0f;
            const float deltaTime        = 0.001f;
            const float softeningSquared = 0.00125f;
            const float damping          = 0.9995f;
            const int   steps            = 5;

            Console.WriteLine("Testing {0} against {1} with {2} bodies...",
                              actualSimulator.Description,
                              expectedSimulator.Description,
                              numBodies);
            Console.WriteLine("Using body initializer {0}...", initializer);

            float4[] expectedPos, expectedVel;
            BodyInitializer.Initialize(initializer, clusterScale, velocityScale, numBodies,
                                       out expectedPos, out expectedVel);

            for (var i = 0; i < steps; i++)
            {
                const double tol       = 1e-5;
                var          actualPos = new float4[numBodies];
                var          actualVel = new float4[numBodies];
                Array.Copy(expectedPos, actualPos, numBodies);
                Array.Copy(expectedVel, actualVel, numBodies);
                expectedSimulator.Integrate(expectedPos, expectedVel, numBodies, deltaTime,
                                            softeningSquared, damping, 1);
                actualSimulator.Integrate(actualPos, actualVel, numBodies, deltaTime,
                                          softeningSquared, damping, 1);
                for (var j = 0; j < expectedPos.Length; j++)
                {
                    Assert.AreEqual(actualPos[j].x, expectedPos[j].x, tol);
                    Assert.AreEqual(actualPos[j].y, expectedPos[j].y, tol);
                    Assert.AreEqual(actualPos[j].z, expectedPos[j].z, tol);
                    Assert.AreEqual(actualPos[j].w, expectedPos[j].w, tol);
                }
            }
        }
コード例 #3
0
        //[/commonTester]

        //[commonPerfTester]
        public static void Performance(ISimulatorTester simulator, int numBodies)
        {
            const float clusterScale = 1.0f;
            const float velocityScale = 1.0f;
            const float deltaTime = 0.001f;
            const float softeningSquared = 0.00125f;
            const float damping = 0.9995f;
            const int steps = 10;

            Console.WriteLine("Perfomancing {0} with {1} bodies...", simulator.Description, numBodies);

            float4[] pos, vel;
            BodyInitializer.Initialize(new BodyInitializer1(), clusterScale, velocityScale, numBodies, 
                                       out pos, out vel);
            simulator.Integrate(pos, vel, numBodies, deltaTime, softeningSquared, damping, steps);
        }
コード例 #4
0
 public static void Test(ISimulatorTester expectedSimulator, ISimulatorTester actualSimulator,
                         int numBodies)
 {
     Test(new BodyInitializer1(), expectedSimulator, actualSimulator, numBodies);
     Test(new BodyInitializer3(), expectedSimulator, actualSimulator, numBodies);
 }
コード例 #5
0
        //[commonTester]
        public static void Test(
            BodyInitializer initializer,
            ISimulatorTester expectedSimulator,
            ISimulatorTester actualSimulator,
            int numBodies)
        {
            const float clusterScale = 1.0f;
            const float velocityScale = 1.0f;
            const float deltaTime = 0.001f;
            const float softeningSquared = 0.00125f;
            const float damping = 0.9995f;
            const int steps = 5;

            Console.WriteLine("Testing {0} against {1} with {2} bodies...",
                actualSimulator.Description,
                expectedSimulator.Description,
                numBodies);
            Console.WriteLine("Using body initializer {0}...", initializer);

            float4[] expectedPos, expectedVel;
            BodyInitializer.Initialize(initializer, clusterScale, velocityScale, numBodies, 
                                       out expectedPos, out expectedVel);

            for (var i = 0; i < steps; i++)
            {
                const double tol = 1e-5;
                var actualPos = new float4[numBodies];
                var actualVel = new float4[numBodies];
                Array.Copy(expectedPos, actualPos, numBodies);
                Array.Copy(expectedVel, actualVel, numBodies);
                expectedSimulator.Integrate(expectedPos, expectedVel, numBodies, deltaTime, 
                                            softeningSquared, damping, 1);
                actualSimulator.Integrate(actualPos, actualVel, numBodies, deltaTime, 
                                          softeningSquared, damping, 1);
                for (var j = 0; j < expectedPos.Length; j++)
                {
                    Assert.AreEqual(actualPos[j].x, expectedPos[j].x, tol);
                    Assert.AreEqual(actualPos[j].y, expectedPos[j].y, tol);
                    Assert.AreEqual(actualPos[j].z, expectedPos[j].z, tol);
                    Assert.AreEqual(actualPos[j].w, expectedPos[j].w, tol);
                }
            }
        }
コード例 #6
0
 public static void Test(ISimulatorTester expectedSimulator, ISimulatorTester actualSimulator,
                         int numBodies)
 {
     Test(new BodyInitializer1(), expectedSimulator, actualSimulator, numBodies);
     Test(new BodyInitializer3(), expectedSimulator, actualSimulator, numBodies);
 }