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); }
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; }