public void TestOpenMIModelFactoryGetInstances() { IOpenDaModelProvider simpleStochModelFactory = new Models.SimpleOscillatorModelFactory(); simpleStochModelFactory.Initialize(@"..\..\testData\dummyModel\Model", "dummy-omifile.omi"); ModelFactory.InsertModelFactory(simpleStochModelFactory); ModelFactory modelFactoryOpenMI = new ModelFactory(); modelFactoryOpenMI.Initialize(null, new[] { "OpenDA.DotNet.OpenMI.Models.SimpleOscillatorModelFactory" }); IModelInstance modelInstance = modelFactoryOpenMI.GetInstance(null, (int)OutputLevel.ModelDefault); modelInstance.Finish(); }
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(); }