public BedResistanceFormulaBase(EngineNet engineNet) : base(engineNet) { CoefficientA = 0.0; CoefficientB = 1.0; MinimumResistance = 0.0; MaximumResistance = Double.MaxValue; }
public void UpdatePostHDValues() { { double sum = 0; EngineNet engineNet = _engineNet; for (int i = 0; i < engineNet.Nodes.Count; i++) { //if (NodesData[i] == null) continue; var engineNodeSewer = engineNet.Nodes[i] as EngineNodeVolume; if (engineNodeSewer == null) { continue; } IHDNode hdNode = _hdModule.GetNode(engineNodeSewer); if (hdNode == null) { continue; } double volume = engineNodeSewer.GetVolume(hdNode.WaterLevelNp1); _volPostHd.NodesData[i].Value = volume; sum += volume; } for (int i = 0; i < engineNet.Reaches.Count; i++) { IEngineDataReach <double> reachData = _volPostHd.ReachesData[i]; if (reachData == null) { continue; } IHDReach hdReach = _hdModule.GetReach(engineNet.Reaches[i]); if (hdReach == null) { continue; } for (int j = 0; j < reachData.IndexList.Length; j++) { int jgp = reachData.IndexList[j]; IHDHGridPoint hgp = hdReach.GridPoints[jgp] as IHDHGridPoint; if (hgp == null) { reachData[j] = 0; } else { reachData[j] = hgp.WaterVolumeNp1; sum += hgp.WaterLevelNp1; } } } // Store total GenericData[0] = sum; } }
///<summary> /// Create helper class for calculating total inflow to a reach ///</summary> ///<param name="engineNet"></param> public static DAWaterVolumeChangeCalculator Create(EngineNet engineNet) { DAWaterVolumeChangeCalculator res = new DAWaterVolumeChangeCalculator(engineNet, QuantVolChangeDa); res.SetupDataForNodes(engineNet); res.SetupDataForReaches(engineNet, (gp) => (gp is HGridPoint)); res.GenericData = new EngineDataGeneric <double>() { Values = new double[1] }; return(res); }
private void ControllerOnControllerEvent(object sender, ControllerEventArgs e) { if (e.State != ControllerState.Prepared) { return; } var controller = (IMike1DController)sender; _engineNet = controller.EngineNet; CreateBedResistanceCalculators(); InitializeBedResistanceCalculators(); _engineNet.PostTimeStepEvent += ChangeBedResistance; }
internal DAWaterVolumeChangeCalculator(EngineNet engineNet, IQuantity quantity) : base(engineNet, quantity) { _hdModule = engineNet.HDModule; _volPostHd = new EngineDataItemAll <double>(engineNet, new Quantity()); _volPostHd.SetupDataForNodes(engineNet); _volPostHd.SetupDataForReaches(engineNet, (gp) => (gp is HGridPoint)); _volPostHd.GenericData = new EngineDataGeneric <double>() { Values = new double[1] }; _volAccumulated = new EngineDataItemAll <double>(engineNet, QuantAccVolChangeDA); _volAccumulated.SetupDataForNodes(engineNet); _volAccumulated.SetupDataForReaches(engineNet, (gp) => (gp is HGridPoint)); _volAccumulated.GenericData = new EngineDataGeneric <double>() { Values = new double[1] }; engineNet.DataModule.AddDataItem(_volAccumulated); }
private void ControllerOnControllerEvent(object sender, ControllerEventArgs e) { if (e.State == ControllerState.Initialized) { _mike1dController = (Mike1DController)sender; _mike1dController.Mike1DData.ResultSpecifications[0].WhatAddUnique(DAWaterVolumeChangeCalculator.QuantVolChangeDa); _mike1dController.Mike1DData.ResultSpecifications[0].WhatAddUnique(DAWaterVolumeChangeCalculator.QuantAccVolChangeDA); } if (e.State == ControllerState.Preparing) { _engineNet = _mike1dController.EngineNet; CreateVolCalculator(_engineNet); _engineNet.EvaluateHDImplicitSourcesEvent += PostHDTimeStepEvent; } if (e.State == ControllerState.Finalizing) { string totalAddedWater = _daWaterVolumeChangeCalculator.GetAccumulatedAddedVolume().ToString(); _mike1dController.DiagnosticsHandler.NewMessage(DiagnosticsHandler.MessageType.Info, "DA - Total added water volume: " + totalAddedWater + " m3"); } }
public TableBedResistance(EngineNet engineNet) : base(engineNet) { }
public FormulaVelocity(EngineNet engineNet) : base(engineNet) { }
public FormulaHydraulicDepth(EngineNet engineNet) : base(engineNet) { }
public FormulaVelocityHydraulicRadius(EngineNet engineNet) : base(engineNet) { }
public BedResistanceCalculatorBase(EngineNet engineNet) { _engineNet = engineNet; }
public void CreateVolCalculator(EngineNet engineNet) { _daWaterVolumeChangeCalculator = DAWaterVolumeChangeCalculator.Create(engineNet); engineNet.DataModule.AddDataItem(_daWaterVolumeChangeCalculator); }
/// <inheritdoc /> public override void UpdateValues() { // if pull version, values are extracted when requested, and no action is required here. // If not pull, this needs to update the data and store it. { double sum = 0; EngineNet engineNet = _engineNet; for (int i = 0; i < engineNet.Nodes.Count; i++) { //if (NodesData[i] == null) continue; var engineNodeSewer = engineNet.Nodes[i] as EngineNodeVolume; if (engineNodeSewer == null) { continue; } IHDNode hdNode = _hdModule.GetNode(engineNodeSewer); if (hdNode == null) { continue; } double volumeN = _volPostHd.NodesData[i].Value; double volumeNp1 = engineNodeSewer.GetVolume(hdNode.WaterLevelNp1); double volumechange = volumeNp1 - volumeN; sum += volumechange; NodesData[i] = volumechange; _volAccumulated.NodesData[i].Value += volumechange; } for (int i = 0; i < engineNet.Reaches.Count; i++) { IEngineDataReach <double> reachDataPostHD = _volPostHd.ReachesData[i]; IEngineDataReach <double> reachDataAcc = _volAccumulated.ReachesData[i]; IEngineDataReach <double> reachData = ReachesData[i]; if (reachData == null) { continue; } IHDReach hdReach = _hdModule.GetReach(engineNet.Reaches[i]); if (hdReach == null) { continue; } for (int j = 0; j < reachData.IndexList.Length; j++) { int jgp = reachData.IndexList[j]; IHDHGridPoint hgp = hdReach.GridPoints[jgp] as IHDHGridPoint; if (hgp == null) { reachData[j] = 0; } else { double volumeN = reachDataPostHD[j]; double volumeNp1 = hgp.WaterVolumeNp1; double volumeChange = volumeNp1 - volumeN; sum += volumeChange; reachData[j] = volumeChange; reachDataAcc[j] += volumeChange; } } } // Store total GenericData[0] = sum; _volAccumulated.GenericData[0] += sum; } }