Example #1
0
        public SimulationGraph(StorageLocation location, DateTime closeOfBusinessDate)
        {
            Context = new Context(location, closeOfBusinessDate);
            var rootNodeKey = new ModelKey("Root", typeof(DummyModel));
            var rootNode    = new SimulationNode(rootNodeKey);

            rootNode.Model      = Model.Create <DummyModel>("Root", null);
            _nodes[rootNodeKey] = rootNode;
            _nodeStack.Push(rootNode);
        }
 public bool Requires(SimulationNode node)
 {
     foreach (var requisite in Requisites)
     {
         if ((requisite == node) || requisite.Requires(node))
         {
             return(true);
         }
     }
     return(false);
 }
        /// <summary>
        /// State that this node requires the specified node to be simulated before it itself can be
        /// simulated.
        /// </summary>
        /// <param name="node"></param>
        public void AddRequisite(SimulationNode node)
        {
            // if node requires this node, then there is a circular dependence
            if (node.Requires(this))
                throw new ArgumentException("leads to circular reference");

            foreach (var existingRequisite in Requisites)
            {
                if (node.Key == existingRequisite.Key)
                    return;
            }
            Requisites.Add(node);
        }
Example #4
0
        private SimulationNode AddModelToGraph(ModelKey key, Model model)
        {
            var node = new SimulationNode(key)
            {
                Model = model
            };

            _nodes[key] = node;
            _nodeStack.Push(node);
            // add children here
            model.Initialise(this);
            _nodeStack.Pop();
            return(node);
        }
        /// <summary>
        /// State that this node requires the specified node to be simulated before it itself can be
        /// simulated.
        /// </summary>
        /// <param name="node"></param>
        public void AddRequisite(SimulationNode node)
        {
            // if node requires this node, then there is a circular dependence
            if (node.Requires(this))
            {
                throw new ArgumentException("leads to circular reference");
            }

            foreach (var existingRequisite in Requisites)
            {
                if (node.Key == existingRequisite.Key)
                {
                    return;
                }
            }
            Requisites.Add(node);
        }
 public bool Requires(SimulationNode node)
 {
     foreach (var requisite in Requisites)
         if ((requisite == node) || requisite.Requires(node)) return true;
     return false;
 }