static void ComputeStage(IFileSystem iFileSystem, ILogger iLogger, IProcessLauncher iProcess, IEnvironment iEnvironment, IDatabase iDatabase, WrfConfiguration config, PhysicsConfigurationProcessed physicsConfig) { DateTime runStartTime = DateTime.Now; string runId = Guid.NewGuid().ToString().Replace("-", ""); iLogger.LogLine("Updating physics parameters..."); NamelistHelper.UpdatePhysicsParameters(config, physicsConfig, iFileSystem); iLogger.LogLine("...done"); iLogger.LogLine("Changing directory to real directory..."); FileSystemHelper.SetCurrentDirectoryToWRFDirectory(config, iFileSystem); iLogger.LogLine("...done"); iLogger.LogLine("Launching real.exe..."); ProcessHelper.MpiRunRealExecutable(config, iProcess); iLogger.LogLine("...done"); iLogger.LogLine($"Launching wrf.exe against mp_physics={physicsConfig.MpPhysics}"); ProcessHelper.MpiRunWrfExecutable(config, iProcess); iLogger.LogLine("...done"); iLogger.LogLine("Locating the WrfOut file..."); string wrfOutFile = FileSystemHelper.RetrievePathToWrfOutFile(config, iFileSystem); iLogger.LogLine($"...found at {wrfOutFile}."); iLogger.LogLine("Retrieving scripts to run..."); string[] scripts = FileSystemHelper.RetrieveNclScriptsToRun(config, iFileSystem); iLogger.LogLine($"...found {scripts.Length} scripts: {string.Join(",", scripts)}"); //string wrfOutFile = @"C:\Users\Ben\Desktop\wrfout"; DateTime runEndTime = DateTime.Now; INetCDFReader netCdfReader = new NetCDFReader(wrfOutFile); DatabaseHelper.CreateRunRecord(netCdfReader, iDatabase, runStartTime, runEndTime, runId); LatLongRect latLongRect = ConfigurationHelper.ParseLatLongRect(config); DatabaseHelper.RecordVariables(netCdfReader, iDatabase, runId, latLongRect.UpperLeftLong, latLongRect.LowerRightLong, latLongRect.LowerRightLat, latLongRect.UpperLeftLat); foreach (string script in scripts) { iLogger.LogLine($"Launching NCL against {script}..."); ProcessHelper.NclRunScript(config, iProcess, script, wrfOutFile); iLogger.LogLine("...done"); ProcessHelper.MakeVideoWithFFMPEG(config, iProcess, script, runId); } }
public void ParseLatLonRect() { WrfConfiguration config = new WrfConfiguration(); config.UpperLeftLatLon = "41.044190,-96.911967"; config.LowerRightLatLon = "40.525328,-96.467021"; LatLongRect rect = ConfigurationHelper.ParseLatLongRect(config); rect.LowerRightLat = 40.525328f; rect.LowerRightLong = -96.467021f; rect.UpperLeftLat = 41.044190f; rect.UpperLeftLong = -96.911967f; }