public IWaterPacket GetSourceWater(DateTime Start, TimeSpan TimeStep) { foreach (var kvp in _concentrations) { ((WaterPacket)WaterSample).SetConcentration(kvp.Key, kvp.Value.GetSiValue(Start, Start.Add(TimeStep))); } if (OverrideFlowRate.HasValue) { _currentFlowRate = OverrideFlowRate.Value; } else if (TS != null) { _currentFlowRate = TS.GetSiValue(Start, Start.Add(TimeStep)); } double _routedFlow = _currentFlowRate * TimeStep.TotalSeconds; //Could be a point XYPolygon geom = ContactGeometry as XYPolygon; if (geom != null) { _routedFlow *= geom.GetArea(); } return(WaterSample.DeepClone(_routedFlow)); }
public void AddWaterSampleComputations(WaterSample computation) { object computations = this._Computations; lock (computations) { this._Computations.Add(computation); } }
public void RemoveWaterSampleComputations(WaterSample computation) { object computations = this._Computations; lock (computations) { int num = this._Computations.IndexOf(computation); if (num != -1) { if (num < this._ComputationIndex) { this._ComputationIndex--; } this._Computations.RemoveAt(num); } } }
public IWaterPacket GetSourceWater(DateTime Start, TimeSpan TimeStep) { switch (FlowType) { case GWType.Darcy: CurrentFlowRate = ((XYPolygon)ContactGeometry).GetArea() * HydraulicConductivity * (GroundwaterHead - Connection.WaterLevel) / Distance; WaterFlow.AddSiValue(Start, Start.Add(TimeStep), CurrentFlowRate); break; case GWType.Flow: CurrentFlowRate = WaterFlow.GetSiValue(Start, Start.Add(TimeStep)); break; default: break; } return(WaterSample.DeepClone(CurrentFlowRate * TimeStep.TotalSeconds)); }
public void Create() { if (this._Samples != null) { this.Destroy(); } Water containingWater = this._Camera._ContainingWater; if (containingWater != null) { Camera cameraComponent = this._Camera.CameraComponent; this._Samples = new List <WaterSample>(); WaterCameraSubmersion.CreatePlanePoints(cameraComponent, this._Subdivisions, this._Points); for (int i = 0; i < this._Points.Count; i++) { WaterSample waterSample = new WaterSample(containingWater, WaterSample.DisplacementMode.Height, 0.4f); waterSample.Start(this._Points[i]); this._Samples.Add(waterSample); } } }
private void RunSamplingTask() { try { while (this._Run) { WaterSample waterSample = null; object computations = this._Computations; lock (computations) { if (this._Computations.Count != 0) { if (this._ComputationIndex >= this._Computations.Count) { this._ComputationIndex = 0; } waterSample = this._Computations[this._ComputationIndex++]; } } if (waterSample == null) { Thread.Sleep(2); } else { object obj = waterSample; lock (obj) { waterSample.ComputationStep(false); } } } } catch (Exception threadException) { this._ThreadException = threadException; } }
public void ReceiveSinkWater(DateTime Start, TimeSpan TimeStep, IWaterPacket Water) { WaterSample.Add(Water); Output.Log(WaterSample, Start, Start.Add(TimeStep)); }
public IWaterPacket GetSourceWater(DateTime Start, TimeSpan TimeStep) { MoveInTime(Start, TimeStep); return(WaterSample.Substract(_exchangeRate * TimeStep.TotalSeconds)); }