示例#1
0
文件: ECL.cs 项目: dorzhi/She
        //

        public void OpenData(string filename)
        {
            // Следует разобраться со структурой файлов в директории

            FILENAME = filename;
            ROOT     = Path.GetFileNameWithoutExtension(FILENAME).ToUpper();
            PATH     = Path.GetDirectoryName(FILENAME).ToUpper();
            FILES    = new Dictionary <string, string>();

            var    files = Directory.GetFiles(PATH).OrderBy(f => f).ToArray();
            string extension;
            string rootname;

            foreach (string item in files)
            {
                extension = Path.GetExtension(item);
                rootname  = Path.GetFileNameWithoutExtension(item);

                if (rootname == ROOT)
                {
                    if (extension == ".SMSPEC")
                    {
                        FILES.Add("SMSPEC", item);
                    }
                    if (extension == ".RSSPEC")
                    {
                        FILES.Add("RSSPEC", item);
                    }
                    if (extension == ".INSPEC")
                    {
                        FILES.Add("INSPEC", item);
                    }
                    if (extension == ".EGRID")
                    {
                        FILES.Add("EGRID", item);
                    }
                    if (extension == ".INIT")
                    {
                        FILES.Add("INIT", item);
                    }
                    if (Regex.IsMatch(extension, "^.S+[0-9]{4}"))
                    {
                        FILES.Add(extension, item);
                    }
                    if (Regex.IsMatch(extension, "^.X+[0-9]{4}"))
                    {
                        FILES.Add(extension, item);
                    }
                    if (extension == ".UNSMRY")
                    {
                        FILES.Add("UNSMRY", item);
                    }
                    if (extension == ".UNRST")
                    {
                        FILES.Add("UNRST", item);
                    }
                }
            }

            if (FILES.ContainsKey("EGRID"))
            {
                System.Diagnostics.Debug.WriteLine("Read EGRID " + FILES["EGRID"]);
                EGRID = new EGRID(FILES["EGRID"]);

                EGRID.CalcGridLimits();
            }

            if (FILES.ContainsKey("INSPEC"))
            {
                INIT = new INSPEC(FILES["INSPEC"]);
            }

            if (FILES.ContainsKey("INIT"))
            {
                System.Diagnostics.Debug.WriteLine("Read INIT " + FILES["INIT"]);
                INIT.ReadACTNUM(FILES["INIT"]);

                // Минимум и максимум по кооординате Z, можно взять из расчета статических свойств

                int index = -1;
                int iw    = 0;

                for (iw = 0; iw < INIT.NAME.Count; ++iw)
                {
                    index = Array.IndexOf(INIT.NAME[iw], "DEPTH");
                    if (index > -1)
                    {
                        break;
                    }
                }

                EGRID.ZMAXCOORD = INIT.ARRAYMAX[iw][index];
                EGRID.ZMINCOORD = INIT.ARRAYMIN[iw][index];
            }
        }