Ejemplo n.º 1
0
        public void OscillatorModelTest()
        {
            IModelFactory oscillatorModelFactory = new SimpleOscillatorModelFactory();

            oscillatorModelFactory.Initialize(".", new[] { "../../testData/OpenDaOscillBB/OscillatorModel.xml" });

            string[]       modelInstanceArguments = new[] { "this argument is not used" };
            IModelInstance modelInstance          = oscillatorModelFactory.GetInstance(modelInstanceArguments,
                                                                                       (int)OutputLevel.ModelDefault);

            IList <string> exchangeItemIDs = modelInstance.ExchangeItemIDs;

            Assert.IsTrue(exchangeItemIDs.Count > 0, "At least one EI");
            IExchangeItem thirdExchangeItem = modelInstance.GetExchangeItem(exchangeItemIDs[2]);

            Assert.AreEqual(AbstractModelInstance.StartTimeId, thirdExchangeItem.Id, "3th exchange item is t_start");

            double startTime = modelInstance.TimeHorizon.BeginTime.MJD;
            double endTime   = modelInstance.TimeHorizon.EndTime.MJD;
            double inBetween = startTime + (startTime + endTime) * 3 / 8;

            modelInstance.Compute(new Time(inBetween));

            IExchangeItem stateExchangeItem0 = modelInstance.GetExchangeItem(SimpleOscillatorModelInstance.State0Id);
            IExchangeItem stateExchangeItem1 = modelInstance.GetExchangeItem(SimpleOscillatorModelInstance.State1Id);

            // check state values
            double[] stateInBetween0 = stateExchangeItem0.ValuesAsDoubles;
            double[] stateInBetween1 = stateExchangeItem1.ValuesAsDoubles;

            Assert.AreEqual(1, stateInBetween0.Length, "#values in state");
            Assert.AreEqual(1, stateInBetween1.Length, "#values in state");
            Assert.AreEqual(-0.0189262285d, stateInBetween0[0], 1e-10, "stateInBetween[0]");
            Assert.AreEqual(0.19278554285d, stateInBetween1[0], 1e-10, "stateInBetween[1]");

            modelInstance.Compute(new Time(endTime));

            // check state values
            double[] stateValuesAtEnd0 = stateExchangeItem0.ValuesAsDoubles;
            double[] stateValuesAtEnd1 = stateExchangeItem1.ValuesAsDoubles;
            Assert.AreEqual(0.00509791929d, stateValuesAtEnd0[0], 1e-10, "stateValuesAtEnd[0]");
            Assert.AreEqual(0.00234214853d, stateValuesAtEnd1[0], 1e-10, "stateValuesAtEnd[1]");

            // assert that previous state values were a copy and are therefore unchanged
            Assert.AreEqual(-0.0189262285d, stateInBetween0[0], 1e-10, "stateValues[0]");
            Assert.AreEqual(0.19278554285d, stateInBetween1[0], 1e-10, "stateValues[1]");

            modelInstance.Finish();
        }
Ejemplo n.º 2
0
        public void RunMikeSheSimulation()
        {
            string modelConfigDir = @"c:\devel_nils\Test_5x5\Distributed\base\";
            string modelconfigOmi = "MIKESHE_WM_Test_5x5.omi";
            MikeSheOpenMIModelFactory mikeSheOpenMIModelFactory = new MikeSheOpenMIModelFactory();

            mikeSheOpenMIModelFactory.Initialize(modelConfigDir, new[] { modelconfigOmi });

            OpenDA.DotNet.OpenMI.Bridge.ModelFactory.InsertModelFactory(mikeSheOpenMIModelFactory);

            ModelFactory openDaModelFactory = new ModelFactory();

            openDaModelFactory.Initialize(null, null);

            IModelInstance modelInstance = openDaModelFactory.GetInstance(new string[] {}, outputLevel: 0);

            modelInstance.Compute(modelInstance.TimeHorizon.EndTime);
        }