public void WriteOmiFile()
 {
     OmiFileParser omiFileParser = new OmiFileParser();
     omiFileParser.AssemblyName = System.Reflection.Assembly.GetExecutingAssembly().Location;
     omiFileParser.LinkableComponentClassName = "HydroNumerics.HydroNet.OpenMI.UnitTest.TestLinkableComponent";
     //omiFileParser.Arguments.Add("InputFilename", hydroNetInputFilename);
     //omiFileParser.Arguments.Add("TimestepLength", timestepLength.ToString());
     omiFileParser.WriteOmiFile("TestLinkableComponent.omi");
 }
 public void ReadOmiFile()
 {
     WriteOmiFile();
     OmiFileParser omiFileParserReader = new OmiFileParser();
     omiFileParserReader.ReadOmiFile("test.omi");
     Assert.AreEqual("MyNamespace.MyModel.LinkableComponent", omiFileParserReader.LinkableComponentClassName);
     Assert.AreEqual(@"..\..\bin\debug\MyAssemble.dll", omiFileParserReader.AssemblyName);
     Assert.AreEqual("MyOmiFile.omi", omiFileParserReader.Arguments["Filename"]);
     Assert.AreEqual("3600", omiFileParserReader.Arguments["TimestepLength"]);
 }
 public void WriteOmiFile(string omiFilename, string hydroNetInputFilename, double timestepLength)
 {
     OmiFileParser omiFileParser = new OmiFileParser();
     omiFileParser.AssemblyName = System.Reflection.Assembly.GetExecutingAssembly().Location;
     omiFileParser.LinkableComponentClassName = "HydroNumerics.HydroNet.OpenMI.LinkableComponent";
     omiFileParser.Arguments.Add("InputFilename", hydroNetInputFilename);
     omiFileParser.Arguments.Add("TimestepLength", timestepLength.ToString());
     omiFileParser.Arguments.Add("SendExtendedEventInfo", "false");
     omiFileParser.WriteOmiFile(omiFilename);
 }
 public void WriteOmiFile(string omiFilename, string timeSeriesGroupInputFilename, string timeSeriesGroupOutputFilename)
 {
     OmiFileParser omiFileParser = new OmiFileParser();
     omiFileParser.AssemblyName = System.Reflection.Assembly.GetExecutingAssembly().Location;
     omiFileParser.LinkableComponentClassName = "HydroNumerics.Time.OpenMI.LinkableTimeSeriesGroup";
     omiFileParser.Arguments.Add("Filename", timeSeriesGroupInputFilename);
     omiFileParser.Arguments.Add("OutputFilename", timeSeriesGroupOutputFilename);
     omiFileParser.WriteOmiFile(omiFilename);
 }
        public void LinkedToTestComponent()
        {
            CreateHydroNetInputfile();

            HydroNumerics.OpenMI.Sdk.Backbone.OmiFileParser omiFileParser = new HydroNumerics.OpenMI.Sdk.Backbone.OmiFileParser();
            omiFileParser.ReadOmiFile(filename + ".omi");

            IArgument[] arguments = omiFileParser.GetArgumentsAsIArgumentArray();

            // Create the HydroNet linkableComponent
            LinkableComponent hydroNetLC = new LinkableComponent();

            hydroNetLC.Initialize(arguments);
            Assert.AreEqual("Lake model", hydroNetLC.ModelID);

            // Create the TestLinkableComponent
            TestLinkableComponent testLC = new TestLinkableComponent();

            testLC.Initialize(new HydroNumerics.OpenMI.Sdk.Backbone.Argument[0] {
            });

            // Link (hydroNet to TestLC) (leakage --> infiltration)
            IOutputExchangeItem leakageOutputExchangeItem = hydroNetLC.GetOutputExchangeItem(0);

            HydroNumerics.OpenMI.Sdk.Backbone.Link hydroNetLC2testLC = new HydroNumerics.OpenMI.Sdk.Backbone.Link();
            hydroNetLC2testLC.ID = "HydroNet2TestLC";
            hydroNetLC2testLC.SourceComponent  = hydroNetLC;
            hydroNetLC2testLC.TargetComponent  = testLC;
            hydroNetLC2testLC.SourceElementSet = hydroNetLC.GetOutputExchangeItem(0).ElementSet;
            hydroNetLC2testLC.SourceQuantity   = hydroNetLC.GetOutputExchangeItem(0).Quantity;
            Assert.AreEqual("Leakage", hydroNetLC2testLC.SourceQuantity.ID);
            hydroNetLC2testLC.TargetElementSet = testLC.GetOutputExchangeItem(0).ElementSet;
            hydroNetLC2testLC.TargetQuantity   = testLC.GetInputExchangeItem(0).Quantity;
            hydroNetLC2testLC.AddDataOperation(hydroNetLC.GetOutputExchangeItem(0).GetDataOperation(3));

            // Link (TestLC to hydroNet) (groundwaterhead --> groundwaterhead)
            HydroNumerics.OpenMI.Sdk.Backbone.Link testLC2HydroNetLC = new HydroNumerics.OpenMI.Sdk.Backbone.Link();
            testLC2HydroNetLC.ID = "testLC2HydroNetLc";
            testLC2HydroNetLC.SourceComponent  = testLC;
            testLC2HydroNetLC.TargetComponent  = hydroNetLC;
            testLC2HydroNetLC.SourceQuantity   = testLC.GetOutputExchangeItem(0).Quantity;
            testLC2HydroNetLC.SourceElementSet = testLC.GetOutputExchangeItem(0).ElementSet;
            testLC2HydroNetLC.TargetQuantity   = hydroNetLC.GetInputExchangeItem(0).Quantity;
            Assert.AreEqual("Head", testLC2HydroNetLC.TargetQuantity.ID); //check to see if this is the right quantity
            testLC2HydroNetLC.TargetElementSet = hydroNetLC.GetInputExchangeItem(0).ElementSet;
            testLC2HydroNetLC.AddDataOperation(testLC.GetOutputExchangeItem(0).GetDataOperation(3));
            testLC.AddLink(testLC2HydroNetLC);
            hydroNetLC.AddLink(testLC2HydroNetLC);

            hydroNetLC.AddLink(hydroNetLC2testLC);
            testLC.AddLink(hydroNetLC2testLC);

            // triggerlink
            HydroNumerics.OpenMI.Sdk.DevelopmentSupport.Trigger trigger = new HydroNumerics.OpenMI.Sdk.DevelopmentSupport.Trigger();
            trigger.Initialize(new HydroNumerics.OpenMI.Sdk.Backbone.Argument[0] {
            });
            HydroNumerics.OpenMI.Sdk.Backbone.Link triggerLink = new HydroNumerics.OpenMI.Sdk.Backbone.Link();
            triggerLink.ID = "TriggerLink";
            triggerLink.SourceComponent  = testLC;
            triggerLink.TargetComponent  = trigger;
            triggerLink.SourceQuantity   = testLC.GetOutputExchangeItem(0).Quantity;
            triggerLink.SourceElementSet = testLC.GetOutputExchangeItem(0).ElementSet;
            triggerLink.TargetQuantity   = trigger.GetInputExchangeItem(0).Quantity;
            triggerLink.TargetElementSet = trigger.GetInputExchangeItem(0).ElementSet;

            testLC.AddLink(triggerLink);
            trigger.AddLink(triggerLink);

            // prepare
            trigger.Prepare();
            hydroNetLC.Prepare();
            testLC.Prepare();

            ScalarSet scalarSet = (ScalarSet)hydroNetLC.GetValues(new TimeStamp(new DateTime(2001, 6, 1)), hydroNetLC2testLC.ID);
            double    expected  = -0.0000065836086956521805 * 2.0;

            Assert.AreEqual(0, scalarSet.data[0], 0.000000000001);
            Assert.AreEqual(0, scalarSet.data[1], 0.000000000001);
            Assert.AreEqual(expected, scalarSet.data[2], 0.000000000001);
            Assert.AreEqual(0, scalarSet.data[3], 0.000000000001);

            // Run
            //trigger.Run(testLC.TimeHorizon.End);

            //TimestampSeries infiltTSS = ((TimestampSeries) testLC.TestEngine.Infiltrations.Items[0]);


            trigger.Finish();
            hydroNetLC.Finish();
            testLC.Finish();

            trigger.Dispose();
            hydroNetLC.Dispose();
            testLC.Dispose();
        }
 public void AssemblyName()
 {
     OmiFileParser omiFileParser = new OmiFileParser();
     omiFileParser.AssemblyName = "something";
     Assert.AreEqual("something", omiFileParser.AssemblyName);
 }
 public void WriteOmiFile()
 {
     OmiFileParser omiFileParserWriter = new OmiFileParser();
     omiFileParserWriter.LinkableComponentClassName = "MyNamespace.MyModel.LinkableComponent";
     omiFileParserWriter.AssemblyName = @"..\..\bin\debug\MyAssemble.dll";
     omiFileParserWriter.Arguments.Add("Filename", "MyOmiFile.omi");
     omiFileParserWriter.Arguments.Add("TimestepLength", "3600");
     omiFileParserWriter.WriteOmiFile("test.omi");
 }
        public void GetArgumentsAsIArgumentsArray()
        {
            OmiFileParser omiFileParser = new OmiFileParser();
            omiFileParser.Arguments.Add("key1", "value1");
            omiFileParser.Arguments.Add("key2", "value2");

            IArgument[] arguments = omiFileParser.GetArgumentsAsIArgumentArray();
            Assert.AreEqual("key1", arguments[0].Key);
            Assert.AreEqual("key2", arguments[1].Key);
            Assert.AreEqual("value1", arguments[0].Value);
            Assert.AreEqual("value2", arguments[1].Value);
        }
 public void Arguments()
 {
     OmiFileParser omiFileParser = new OmiFileParser();
     omiFileParser.Arguments.Add("MyKey", "MyValue");
     Assert.AreEqual("MyValue", omiFileParser.Arguments["MyKey"]);
 }
 public void LinkableComponentClassName()
 {
     OmiFileParser omiFileParser = new OmiFileParser();
     omiFileParser.LinkableComponentClassName = "something";
     Assert.AreEqual("something", omiFileParser.LinkableComponentClassName);
 }
        public void LinkedToTestComponent()
        {

            CreateHydroNetInputfile();

            HydroNumerics.OpenMI.Sdk.Backbone.OmiFileParser omiFileParser = new HydroNumerics.OpenMI.Sdk.Backbone.OmiFileParser();
            omiFileParser.ReadOmiFile(filename + ".omi");

            IArgument[] arguments = omiFileParser.GetArgumentsAsIArgumentArray();

            // Create the HydroNet linkableComponent
            LinkableComponent hydroNetLC = new LinkableComponent();
            hydroNetLC.Initialize(arguments);
            Assert.AreEqual("Lake model", hydroNetLC.ModelID);

            // Create the TestLinkableComponent
            TestLinkableComponent testLC = new TestLinkableComponent();
            testLC.Initialize(new HydroNumerics.OpenMI.Sdk.Backbone.Argument[0] { });

            // Link (hydroNet to TestLC) (leakage --> infiltration)
            IOutputExchangeItem leakageOutputExchangeItem = hydroNetLC.GetOutputExchangeItem(0);
            HydroNumerics.OpenMI.Sdk.Backbone.Link hydroNetLC2testLC = new HydroNumerics.OpenMI.Sdk.Backbone.Link();
            hydroNetLC2testLC.ID = "HydroNet2TestLC";
            hydroNetLC2testLC.SourceComponent = hydroNetLC;
            hydroNetLC2testLC.TargetComponent = testLC;
            hydroNetLC2testLC.SourceElementSet = hydroNetLC.GetOutputExchangeItem(0).ElementSet;
            hydroNetLC2testLC.SourceQuantity = hydroNetLC.GetOutputExchangeItem(0).Quantity;
            Assert.AreEqual("Leakage", hydroNetLC2testLC.SourceQuantity.ID);
            hydroNetLC2testLC.TargetElementSet = testLC.GetOutputExchangeItem(0).ElementSet;
            hydroNetLC2testLC.TargetQuantity = testLC.GetInputExchangeItem(0).Quantity;
            hydroNetLC2testLC.AddDataOperation(hydroNetLC.GetOutputExchangeItem(0).GetDataOperation(3));

            // Link (TestLC to hydroNet) (groundwaterhead --> groundwaterhead)
            HydroNumerics.OpenMI.Sdk.Backbone.Link testLC2HydroNetLC = new HydroNumerics.OpenMI.Sdk.Backbone.Link();
            testLC2HydroNetLC.ID = "testLC2HydroNetLc";
            testLC2HydroNetLC.SourceComponent = testLC;
            testLC2HydroNetLC.TargetComponent = hydroNetLC;
            testLC2HydroNetLC.SourceQuantity = testLC.GetOutputExchangeItem(0).Quantity;
            testLC2HydroNetLC.SourceElementSet = testLC.GetOutputExchangeItem(0).ElementSet;
            testLC2HydroNetLC.TargetQuantity = hydroNetLC.GetInputExchangeItem(0).Quantity;
            Assert.AreEqual("Head", testLC2HydroNetLC.TargetQuantity.ID); //check to see if this is the right quantity
            testLC2HydroNetLC.TargetElementSet = hydroNetLC.GetInputExchangeItem(0).ElementSet;
            testLC2HydroNetLC.AddDataOperation(testLC.GetOutputExchangeItem(0).GetDataOperation(3));
            testLC.AddLink(testLC2HydroNetLC);
            hydroNetLC.AddLink(testLC2HydroNetLC);

            hydroNetLC.AddLink(hydroNetLC2testLC);
            testLC.AddLink(hydroNetLC2testLC);

            // triggerlink
            HydroNumerics.OpenMI.Sdk.DevelopmentSupport.Trigger trigger = new HydroNumerics.OpenMI.Sdk.DevelopmentSupport.Trigger();
            trigger.Initialize(new HydroNumerics.OpenMI.Sdk.Backbone.Argument[0] { });
            HydroNumerics.OpenMI.Sdk.Backbone.Link triggerLink = new HydroNumerics.OpenMI.Sdk.Backbone.Link();
            triggerLink.ID = "TriggerLink";
            triggerLink.SourceComponent = testLC;
            triggerLink.TargetComponent = trigger;
            triggerLink.SourceQuantity = testLC.GetOutputExchangeItem(0).Quantity;
            triggerLink.SourceElementSet = testLC.GetOutputExchangeItem(0).ElementSet;
            triggerLink.TargetQuantity = trigger.GetInputExchangeItem(0).Quantity;
            triggerLink.TargetElementSet = trigger.GetInputExchangeItem(0).ElementSet;

            testLC.AddLink(triggerLink);
            trigger.AddLink(triggerLink);

            // prepare
            trigger.Prepare();
            hydroNetLC.Prepare();
            testLC.Prepare();

            ScalarSet scalarSet =  (ScalarSet) hydroNetLC.GetValues(new TimeStamp(new DateTime(2001, 6, 1)), hydroNetLC2testLC.ID);
            double expected = -0.0000065836086956521805 * 2.0;
            Assert.AreEqual(0, scalarSet.data[0], 0.000000000001);
            Assert.AreEqual(0, scalarSet.data[1], 0.000000000001);
            Assert.AreEqual(expected, scalarSet.data[2], 0.000000000001);
            Assert.AreEqual(0, scalarSet.data[3], 0.000000000001);

            // Run
            //trigger.Run(testLC.TimeHorizon.End);

            //TimestampSeries infiltTSS = ((TimestampSeries) testLC.TestEngine.Infiltrations.Items[0]);

           
            trigger.Finish();
            hydroNetLC.Finish();
            testLC.Finish();

            trigger.Dispose();
            hydroNetLC.Dispose();
            testLC.Dispose();
        }