private void LogEvent(int currentTime, HurricaneEvent hurricaneEvent = null) { // commented out in case I want to use it later. // commented out to eliminate a warning. //string cvtKilometersToMiles(double kValue, unitType unitType) //{ // double milesValue = kValue * 0.621371; // string kUnits = unitType == unitType.Dist ? "kilometers" : "kph"; // string mUnits = unitType == unitType.Dist ? " miles" : " mph"; // return $"{kValue:F1} {kUnits} / {milesValue:F1} {mUnits}"; //} eventLog.Clear(); EventsLog el = new EventsLog(); el.Time = currentTime; el.HurricaneNumber = hurricaneEvent.hurricaneNumber; el.ImpactsStudyArea = hurricaneEvent.studyAreaImpacts; el.StudyAreaMaxWS = hurricaneEvent.StudyAreaMaxWindspeed; el.StudyAreaMinWS = hurricaneEvent.StudyAreaMinWindspeed; el.LandfallLatitude = hurricaneEvent.landfallLatitude; el.LandfallMaxWindSpeed = hurricaneEvent.landfallMaxWindSpeed; el.PathHeading = hurricaneEvent.stormTrackHeading; eventLog.AddObject(el); eventLog.WriteToFile(); if (hurricaneEvent.studyAreaImpacts) { summaryEventCount++; } //summaryTotalSites += hurricaneEvent.studyAreaImpacts; }
//--------------------------------------------------------------------- ///<summary> /// Run the plug-in at a particular timestep. ///</summary> public override void Run() { ModelCore.UI.WriteLine("Processing landscape for hurricane events ..."); foreach (var year in Enumerable.Range(0, this.parameters.Timestep)) { int stormsThisYear = -1; var randomNum = PlugIn.ModelCore.GenerateUniform(); if (HurricaneEvent.HurricaneRandomNumber) { randomNum = PlugIn.HurricaneGeneratorStandard.NextDouble(); } var cummProb = 0.0; foreach (var probability in this.parameters.StormOccurenceProbabilities) { cummProb += probability; stormsThisYear++; if (randomNum < cummProb) { break; } } string message = stormsThisYear + " storms."; if (stormsThisYear == 1) { message = "1 storm."; } foreach (var stormCount in Enumerable.Range(0, stormsThisYear)) { var storm = HurricaneEvent.Initiate(this.ContinentalGrid); //storm.hurricaneYear = // year + PlugIn.ModelCore.CurrentTime - // this.parameters.Timestep; storm.hurricaneNumber = stormCount + 1; bool impactsStudyArea = storm.GenerateWindFieldRaster(this.mapNameTemplate, PlugIn.modelCore, this.ContinentalGrid); LogEvent(PlugIn.ModelCore.CurrentTime, storm); } } WriteSummaryLog(PlugIn.modelCore.CurrentTime); }
public static HurricaneEvent Initiate(ContinentalGrid continentalGrid) { HurricaneEvent hurrEvent = new HurricaneEvent(continentalGrid); return(hurrEvent); }