public MainModel() { //Console.Write("New Surrogate model"); Compartment.resetNumberOfCompartments(); FlowDivider.resetNumberOfFlowDividers(); raindata = new RainfallData(); this.output = new SmOutputCollection(); this.bIncludeWQ = false; }
private List <Connection> getConnections(string[,] paramTable) { { var connections = new List <Connection>(); bool bInHydraulicSection = false; for (int i = 0; i < paramTable.GetLength(0); i++) { if (paramTable[i, 0] == "[HydraulicModel]") { bInHydraulicSection = true; } if (bInHydraulicSection) { if (paramTable[i, 0] == "[EndSect]") { bInHydraulicSection = false; } else { //instantiate all connections if (paramTable[i, 0] == "<name>") { if (paramTable[i + 1, 1] == "drainage") { { Node fromComp = getNode(paramTable[i, 1]); i = i + 2; while (paramTable[i, 0] == "<connection>") { Node toComp = getNodeOrDivider(paramTable[i, 1]); Connection conx; switch (paramTable[i, 2]) { case "LinRes": conx = new LinRes(fromComp.index, toComp.index, paramTable[i, 3]); break; case "LinResWithMax": conx = new LinResWithMax(fromComp.index, toComp.index, paramTable[i, 3]); break; case "PieceWiseLinRes": conx = (new PieceWiseLinRes(fromComp.index, toComp.index, paramTable[i, 3])); break; case "LinResWithMaxAndBackWater": conx = (new LinResWithMaxAndBackWater(fromComp.index, toComp.index, paramTable[i, 3])); break; case "SpillingVolume": conx = (new SpillingVolume(fromComp.index, toComp.index, paramTable[i, 3])); break; case "UnitHydro": conx = (new UnitHydrograph(fromComp.index, toComp.index, paramTable[i, 3], this)); break; case "TriggeredPWLinRes": conx = (new TriggeredPWLinRes(fromComp.index, toComp.index, paramTable[i, 3])); break; case "PwlGradientBasedFlow": conx = (new PwlGradientBasedFlow(fromComp.index, toComp.index, paramTable[i, 3])); break; default: throw new NotImplementedException("Unknown connection type: " + paramTable[i, 2]); } if (toComp is FlowDivider) { conx.bToFlowDivider = true; } connections.Add(conx); i++; } } } else if (paramTable[i + 1, 1] == "splitter") { FlowDivider div = getFlowDivider(paramTable[i, 1]); i = i + 2; while (paramTable[i, 0] == "<connection>") { Node toComp = getNode(paramTable[i, 1]); FlowDividerConnection divCon = new FlowDividerConnection(div.index, toComp.index, paramTable[i, 3]); divCon.flowDiv = div; div.connections.Add(divCon); connections.Add(divCon); i++; } } } } } } return(connections); } }