Ejemplo n.º 1
0
        /// <summary>
        /// Checks for mappings for the in or output port and returns true in case there is a mapping.
        /// </summary>
        /// <param name="input"></param>
        /// <param name="output"></param>
        /// <param name="eClass"></param>
        /// <returns></returns>
        private bool checkForMapping(IOput input, IOput output, EClass eClass)
        {
            SimulationModel simulationModel = SimulationsModels[input.Owner];
            bool            result          = simulationModel.Mappings.ContainsKey(input.EclassID) &&
                                              EClass.CheckEClassConnection(simulationModel.Mappings[input.EclassID].BasicId, output.EclassID);

            // Check output ports only if mapping was not already found in input ports
            if (result == false)
            {
                simulationModel = SimulationsModels[output.Owner];
                result          = simulationModel.Mappings.ContainsKey(output.EclassID) &&
                                  EClass.CheckEClassConnection(input.EclassID, simulationModel.Mappings[output.EclassID].BasicId);
            }
            return(result);
        }
        /// <summary>
        /// Parses the JObject into an SimulationModel and returns the new created SimulationModel
        /// </summary>
        /// <param name="json"></param>
        /// <param name="name"></param>
        /// <returns></returns>
        public static SimulationModel Parse(JObject json, String name)
        {
            if (json == null)
            {
                return(new SimulationModel());
            }

            SimulationModel simulation = new SimulationModel();

            simulation.Name   = name;
            simulation.AsJson = json;
            simulation.setFmu(json);
            simulation.setSemanticId();

            return(simulation);
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Returns the SimulationModel as Entity
        /// </summary>
        /// <param name="simulationModel"></param>
        /// <param name="nameSubmodel"></param>
        /// <returns></returns>
        public AdminShellNS.AdminShell.Entity GetSimModelAsEntity(SimulationModel simulationModel, string nameSubmodel)
        {
            AdminShellNS.AdminShell.Entity entity = new AdminShellNS.AdminShell.Entity();
            entity.idShort    = simulationModel.Name;
            entity.entityType = "CoManagedEntity";
            entity.semanticId = simulationModel.SemanticId;

            // make new parent
            var newpar = new AdminShellNS.AdminShell.Referable();

            newpar.idShort = nameSubmodel;
            entity.parent  = newpar;

            // to be processed further
            return(entity);
        }
Ejemplo n.º 4
0
        /// <summary>
        /// Creates a node, represented as a Simulationmodel, for all physical ports which are connected.
        /// </summary>
        public void CreateNodesForPhysicalPorts()
        {
            int nodeCount = 0;
            List <SimulationModel> newSimMod = new List <SimulationModel>();


            AdminShellNS.AdminShell.SemanticId semanticId = new AdminShellNS.AdminShell.SemanticId();
            AdminShellNS.AdminShell.Key        key        = new AdminShellNS.AdminShell.Key();
            key.value  = "www.tedz.itsowl.com/ids/cd/1132_9030_2102_4033";
            key.type   = "ConceptDescription";
            key.local  = true;
            key.index  = 0;
            key.idType = "IRI";
            semanticId.Keys.Add(key);

            List <List <IOput> > nodeLists = new List <List <IOput> >();

            foreach (var simmod in SimulationsModels.Values)
            {
                foreach (var port in simmod.PhysicalPorts)
                {
                    if (!nodeLists.Contains(port.ConnectedTo) && port.ConnectedTo.Count > 1)
                    {
                        nodeLists.Add(port.ConnectedTo);
                    }
                }
            }

            foreach (var list in nodeLists)
            {
                SimulationModel nodeModel = createNode(nodeCount, semanticId, list);

                if (nodeModel.PhysicalPorts.Count > 0)
                {
                    newSimMod.Add(nodeModel);
                    nodeCount++;
                }
            }

            foreach (var simmod in newSimMod)
            {
                SimulationsModels.Add(simmod.Name, simmod);
            }
        }
Ejemplo n.º 5
0
        /// <summary>
        /// Returns the SimulationModel port Information as a Property
        /// </summary>
        /// <param name="simulationModel"></param>
        /// <returns></returns>
        private List <AdminShellNS.AdminShell.Property> GetPortsAsProp(SimulationModel simulationModel)
        {
            List <AdminShellNS.AdminShell.Property> ioputs = new List <AdminShellNS.AdminShell.Property>();

            foreach (var input in simulationModel.Inputs)
            {
                ioputs.Add(GetPortAsProperty(input, "in"));
            }

            foreach (var output in simulationModel.Outputs)
            {
                ioputs.Add(GetPortAsProperty(output, "out"));
            }

            foreach (var output in simulationModel.PhysicalPorts)
            {
                ioputs.Add(GetPortAsProperty(output, "physical"));
            }


            return(ioputs);
        }
Ejemplo n.º 6
0
        /// <summary>
        /// Creates a node between the given ports
        /// </summary>
        /// <param name="nodeCount"></param>
        /// <param name="semanticId"></param>
        /// <param name="list"></param>
        /// <returns></returns>
        private static SimulationModel createNode(int nodeCount,
                                                  AdminShellNS.AdminShell.SemanticId semanticId,
                                                  List <IOput> list)
        {
            SimulationModel nodeModel = new SimulationModel();

            nodeModel.IsNode = true;
            string name = "node_" + nodeCount;

            nodeModel.Name       = name;
            nodeModel.SemanticId = semanticId;
            int portnumber = 0;

            foreach (var port in list)
            {
                IOput newport = new IOput(port.IdShort + "_" + portnumber++, name);
                newport.IsPhysical = true;
                newport.ConnectedTo.Add(port);
                nodeModel.PhysicalPorts.Add(newport);
            }

            return(nodeModel);
        }
Ejemplo n.º 7
0
        /// <summary>
        /// Creates multiplication points in case there is a connection where the ports to not share the same unit
        /// but were connected because of a mapping. The mapping conatains a value which is used here as the factor
        /// for the multiplication. The existing output port of the existing connection gets connected to the multports
        /// input port and the input port of the connection gets connected to the multports output port.
        /// The old connection is removed.
        /// </summary>
        /// <returns></returns>
        public bool CreateMultPoints()
        {
            int multCount = 0;
            List <SimulationModel> newSimMod = new List <SimulationModel>();


            AdminShellNS.AdminShell.SemanticId semanticId = new AdminShellNS.AdminShell.SemanticId();
            AdminShellNS.AdminShell.Key        key        = new AdminShellNS.AdminShell.Key();
            key.value  = SemanticPort.GetInstance().GetSemanticForPort("BoM_SmdComp_Mult");
            key.type   = "ConceptDescription";
            key.local  = true;
            key.index  = 0;
            key.idType = "IRI";
            semanticId.Keys.Add(key);

            foreach (var simmod in SimulationsModels.Values)
            {
                foreach (var input in simmod.Inputs)
                {
                    if (input.EclassID != null && simmod.Mappings.ContainsKey(input.EclassID))
                    {
                        foreach (var connected in input.ConnectedTo.ToList())
                        {
                            string          name     = "mult_" + multCount++;
                            SimulationModel multPort = new SimulationModel();
                            multPort.SemanticId = semanticId;
                            multPort.Multfactor = simmod.Mappings[input.EclassID].Value;

                            IOput iput = new IOput("in", name);
                            iput.SemanticId = input.SemanticId;

                            IOput oput = new IOput("out", name);
                            oput.SemanticId = input.SemanticId;

                            input.RemoveConnection(connected);

                            oput.AddConnection(input);
                            iput.AddConnection(connected);

                            multPort.Outputs.Add(oput);
                            multPort.Inputs.Add(iput);
                            multPort.Name = name;
                            newSimMod.Add(multPort);
                        }
                    }
                }


                foreach (var output in simmod.Outputs)
                {
                    if (output.EclassID != null && simmod.Mappings.ContainsKey(output.EclassID))
                    {
                        foreach (var connected in output.ConnectedTo.ToList())
                        {
                            string          name     = "mult_" + multCount++;
                            SimulationModel multPort = new SimulationModel();
                            multPort.SemanticId = semanticId;
                            multPort.Multfactor = simmod.Mappings[output.EclassID].Value;

                            IOput iput = new IOput("in", name);
                            iput.SemanticId = output.SemanticId;

                            IOput oput = new IOput("out", name);
                            oput.SemanticId = output.SemanticId;

                            output.RemoveConnection(connected);

                            iput.AddConnection(output);
                            oput.AddConnection(connected);

                            multPort.Outputs.Add(oput);
                            multPort.Inputs.Add(iput);
                            multPort.Name = name;
                            newSimMod.Add(multPort);
                        }
                    }
                }
            }
            foreach (var simMod in newSimMod)
            {
                SimulationsModels.Add(simMod.Name, simMod);
            }

            return(true);
        }