private void InitTSTFromICDistribution(Cell simulationCell, int iteration, InitialConditionsDistribution icd) { if (icd == null) { return; } if (!icd.TSTGroupId.HasValue && !icd.TSTMin.HasValue && !icd.TSTMax.HasValue) { return; } foreach (Tst tst in simulationCell.TstValues) { if (icd.TSTGroupId.HasValue && icd.TSTGroupId.Value != tst.TransitionGroupId) { continue; } int min = icd.TSTMin.HasValue ? icd.TSTMin.Value : 0; int max = icd.TSTMax.HasValue ? icd.TSTMax.Value : int.MaxValue; tst.TstValue = this.m_RandomGenerator.GetNextInteger(min, max); } }
private void AddICD(InitialConditionsDistribution order) { InitialConditionsDistributionCollection l = this.m_Map.GetItemExact(order.Iteration); if (l == null) { l = new InitialConditionsDistributionCollection(); this.m_Map.AddItem(order.Iteration, l); } l.Add(order); this.m_HasItems = true; }
/// <summary> /// Initializes a simulation cell from a initial conditions distribution record /// </summary> /// <param name="simulationCell">The cell to initialize</param> /// <param name="icd">The initial conditions distribution record to use</param> /// <remarks></remarks> private void InitializeCellNonRaster(ref Cell simulationCell, InitialConditionsDistribution icd, int iteration) { Debug.Assert(!this.IsSpatial); int sisagemin = Math.Min(icd.AgeMin, icd.AgeMax); int sisagemax = Math.Max(icd.AgeMin, icd.AgeMax); this.InitializeCellAge(simulationCell, icd.StratumId, icd.StateClassId, sisagemin, sisagemax, iteration, this.m_TimestepZero); simulationCell.StratumId = icd.StratumId; simulationCell.StateClassId = icd.StateClassId; simulationCell.SecondaryStratumId = icd.SecondaryStratumId; simulationCell.TertiaryStratumId = icd.TertiaryStratumId; this.InitializeCellTstValues(simulationCell, iteration, icd, false); #if DEBUG this.VALIDATE_INITIALIZED_CELL(simulationCell, iteration, this.m_TimestepZero); #endif }
/// <summary> /// Initializes the specified cell's Tst values /// </summary> /// <param name="simulationCell"></param> /// <param name="iteration"></param> /// <param name="icd"></param> /// <param name="isSpatial"></param> private void InitializeCellTstValues( Cell simulationCell, int iteration, InitialConditionsDistribution icd, bool isSpatial) { if (simulationCell.TstValues.Count == 0) { return; } foreach (Tst tst in simulationCell.TstValues) { tst.TstValue = int.MaxValue; } this.InitTSTFromRamdomize(simulationCell, iteration); this.InitTSTFromICDistribution(simulationCell, iteration, icd); if (IsSpatial) { this.InitTSTFromRaster(simulationCell, iteration); } }