示例#1
0
        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);
            }
        }
        private void OnPathChanged(string path)
        {
            if (File.Exists(path))
            {
                var reader = NetCDFReader.Create(path);

                this._element.ItemsSource = from v in reader.Variables select v.Key;
            }
            else
            {
                this._element.ItemsSource = null;
            }
        }
示例#3
0
 protected virtual void OnPathChanged(string path)
 {
     if (File.Exists(path))
     {
         try
         {
             this.Reader = NetCDFReader.Create(path);
         }
         catch
         {
             //  Reader cannot be created
             this.Reader = null;
         }
     }
     else
     {
         this.Reader = null;
     }
 }