Esempio n. 1
0
        public override void UpdateInternalDropletConcentrations()
        {
            List <Route> allRoutes = new List <Route>();

            InputRoutes.Select(pair => pair.Value).ForEach(listOfRoutes => allRoutes.AddRange(listOfRoutes));
            if (allRoutes.Count != 2)
            {
                throw new NotImplementedException("Currently only mixing two droplets is supported.");
            }
            Dictionary <string, float> dropletConcentrations1 = allRoutes[0].routedDroplet.GetFluidConcentrations();
            Dictionary <string, float> dropletConcentrations2 = allRoutes[1].routedDroplet.GetFluidConcentrations();

            HashSet <string> allFluidParts = dropletConcentrations1.Keys.Union(dropletConcentrations2.Keys).ToHashSet();

            foreach (var fluidName in allFluidParts)
            {
                dropletConcentrations1.TryGetValue(fluidName, out float concentration1);
                dropletConcentrations2.TryGetValue(fluidName, out float concentration2);

                float sumOfConcetrations = concentration1 + concentration2;

                BoundModule.GetOutputLayout().Droplets[0].FluidConcentrations[fluidName] = sumOfConcetrations / 2;
                BoundModule.GetOutputLayout().Droplets[1].FluidConcentrations[fluidName] = sumOfConcetrations / 2;
            }
        }
Esempio n. 2
0
        public BoundModule Create(RuntimicSystemModel runtimicSystem, BoundModuleNode moduleNode)
        {
            var module = new BoundModule()
            {
                Assembly   = moduleNode.AssemblyNode.BoundAssembly,
                ModuleNode = moduleNode
            };

            return(module);
        }