public void ReadACTNUM(string filename) { FILENAME = filename; FileReader br = new FileReader(); br.OpenBinaryFile(filename); if (br.Length > 0) { while (br.Position < br.Length - 24) { br.ReadHeader(); if (br.header.keyword == "INTEHEAD") { int[] INTH = br.ReadIntList(); NX = INTH[8]; NY = INTH[9]; NZ = INTH[10]; NACTIV = INTH[11]; IPHS = INTH[14]; continue; } if (br.header.keyword == "PORV") { var PORV = br.ReadFloatList(br.header.count); ACTNUM = new int[NX * NY * NZ]; // Для сжатого формата хранения данных // требуется провести индексирования массива активных ячеек // ACTNUM сам по себе это "1" для активной ячейки и "0" для не активной int index = 1; for (int iw = 0; iw < PORV.Length; ++iw) { if (PORV[iw] > 0) { ACTNUM[iw] = index++; } } break; } br.SkipEclipseData(); } } br.CloseBinaryFile(); }
public void ReadUNSMRY(string filename) { FileReader br = new FileReader(); br.OpenBinaryFile(filename); if (br.Length > 0) { DATA = new List <float[]>(); while (br.Position < br.Length - 24) { br.ReadHeader(); if (br.header.keyword == "PARAMS" && br.header.count == NLIST) { DATA.Add(br.ReadFloatList(NLIST)); continue; } br.SkipEclipseData(); } } br.CloseBinaryFile(); NTIME = DATA.Count; TINDEX = Array.IndexOf(KEYWORDS, "TIME"); }
public RSSPEC(string filename) { FileReader br = new FileReader(); br.OpenBinaryFile(filename); if (br.Length > 0) { while (br.Position < br.Length - 24) { br.ReadHeader(); if (br.header.keyword == "TIME") { br.ReadBytes(4); TIME.Add(br.ReadDouble()); br.ReadBytes(4); continue; } if (br.header.keyword == "ITIME") { int[] ITIME = br.ReadIntList(); REPORT.Add(ITIME[0]); TYPE_RESTART.Add(ITIME[5]); if (ITIME.Length > 10) { DATE.Add(new DateTime(ITIME[3], ITIME[2], ITIME[1], ITIME[10], ITIME[11], (int)(ITIME[12] * 1e6))); } else { DATE.Add(new DateTime(ITIME[3], ITIME[2], ITIME[1])); } continue; } if (br.header.keyword == "NAME") { NAME.Add(br.ReadStringList()); continue; } if (br.header.keyword == "TYPE") { TYPE.Add(br.ReadStringList()); continue; } if (br.header.keyword == "UNITS") { UNITS.Add(br.ReadStringList()); continue; } if (br.header.keyword == "NUMBER") { NUMBER.Add(br.ReadIntList()); continue; } if (br.header.keyword == "ARRAYMAX") { ARRAYMAX.Add(br.ReadFloatList(br.header.count)); continue; } if (br.header.keyword == "ARRAYMIN") { ARRAYMIN.Add(br.ReadFloatList(br.header.count)); continue; } if (br.header.keyword == "POINTER") { POINTER.Add(br.ReadIntList()); continue; } if (br.header.keyword == "POINTERB") { POINTERB.Add(br.ReadIntList()); continue; } br.SkipEclipseData(); } br.CloseBinaryFile(); } }
public int NTIME; // Количество временных шагов public SMSPEC(string filename) { FileReader br = new FileReader(); br.OpenBinaryFile(filename); while (br.Position < br.Length - 24) { br.ReadHeader(); if (br.header.keyword == "RESTART") { var tmp = br.ReadStringList(); StringBuilder str = new StringBuilder(); foreach (string item in tmp) { str.Append(item); } RESTART = str.ToString(); continue; } if (br.header.keyword == "MEASRMNT") { var tmp = br.ReadStringList(); int lenght = br.header.count / NLIST; MEASRMNT = new string[NLIST]; StringBuilder str = new StringBuilder(); for (int iw = 0; iw < NLIST; ++iw) { str.Clear(); for (int ik = 0; ik < lenght; ++ik) { str.Append(tmp[iw * lenght + ik]); } MEASRMNT[iw] = str.ToString(); } continue; } if (br.header.keyword == "DIMENS") { br.ReadBytes(4); NLIST = br.ReadInt32(); NDIVX = br.ReadInt32(); NDIVY = br.ReadInt32(); NDIVZ = br.ReadInt32(); br.ReadBytes(4); ISTAR = br.ReadInt32(); br.ReadBytes(4); continue; } if (br.header.keyword == "KEYWORDS") { KEYWORDS = br.ReadStringList(); continue; } if (br.header.keyword == "WGNAMES") { WGNAMES = br.ReadStringList(); continue; } if (br.header.keyword == "NUMS") { NUMS = br.ReadIntList(); continue; } if (br.header.keyword == "UNITS") { WGUNITS = br.ReadStringList(); continue; } if (br.header.keyword == "STARTDAT") { br.ReadBytes(4); int SDAY = br.ReadInt32(); int SMONTH = br.ReadInt32(); int SYEAR = br.ReadInt32(); STARTDATE = new DateTime(SYEAR, SMONTH, SDAY); if (br.header.count == 6) { int SHOUR = br.ReadInt32(); int SMINUTE = br.ReadInt32(); int SSECOND = (int)(br.ReadInt32() * 1e6); STARTDATE = new DateTime(SYEAR, SMONTH, SDAY, SHOUR, SMINUTE, SSECOND); } br.ReadBytes(4); continue; } br.SkipEclipseData(); } br.CloseBinaryFile(); }
public INSPEC(string filename) { FileReader br = new FileReader(); br.OpenBinaryFile(filename); if (br.Length > 0) { while (br.Position < br.Length - 24) { br.ReadHeader(); if (br.header.keyword == "NAME") { NAME.Add(br.ReadStringList()); continue; } if (br.header.keyword == "TYPE") { TYPE.Add(br.ReadStringList()); continue; } if (br.header.keyword == "UNITS") { UNITS.Add(br.ReadStringList()); continue; } if (br.header.keyword == "NUMBER") { NUMBER.Add(br.ReadIntList()); continue; } if (br.header.keyword == "ARRAYMAX") { ARRAYMAX.Add(br.ReadFloatList(br.header.count)); continue; } if (br.header.keyword == "ARRAYMIN") { ARRAYMIN.Add(br.ReadFloatList(br.header.count)); continue; } if (br.header.keyword == "POINTER") { POINTER.Add(br.ReadIntList()); continue; } if (br.header.keyword == "POINTERB") { POINTERB.Add(br.ReadIntList()); continue; } br.SkipEclipseData(); } br.CloseBinaryFile(); } }
public int NACTIV; // Количество активных ячеек public EGRID(string filename) { FileReader br = new FileReader(); br.OpenBinaryFile(filename); System.Diagnostics.Debug.WriteLine("EGRID"); while (br.Position < br.Length - 24) { br.ReadHeader(); if (br.header.keyword == "FILEHEAD") { FILEHEAD = br.ReadIntList(); GRIDTYPE = FILEHEAD[4]; DUALPORO = FILEHEAD[5]; FORMATDATA = FILEHEAD[6]; continue; } if (br.header.keyword == "MAPUNITS") { br.ReadBytes(4); MAPUNITS = br.ReadString(8); br.ReadBytes(4); continue; } if (br.header.keyword == "MAPAXES") { br.ReadBytes(4); XENDYAXIS = br.ReadFloat(); YENDYAXIS = br.ReadFloat(); XORIGIN = br.ReadFloat(); YORIGIN = br.ReadFloat(); XENDXAXIS = br.ReadFloat(); YENDXAXIS = br.ReadFloat(); br.ReadBytes(4); continue; } if (br.header.keyword == "GRIDHEAD") { GRIDHEAD = br.ReadIntList(); NX = GRIDHEAD[1]; NY = GRIDHEAD[2]; NZ = GRIDHEAD[3]; continue; } if (br.header.keyword == "COORD") { COORD = br.ReadFloatList(6 * (NY + 1) * (NX + 1)); continue; } if (br.header.keyword == "ZCORN") { ZCORN = br.ReadBigList((ulong)(8 * NX * NY * NZ)); continue; } if (br.header.keyword == "ACTNUM") { ACTNUM = br.ReadIntList(); // Для сжатого формата хранения данных // требуется провести индексирования массива активных ячеек // ACTNUM сам по себе это "1" для активной ячейки и "0" для не активной int index = 1; for (int iw = 0; iw < ACTNUM.Length; ++iw) { if (ACTNUM[iw] > 0) { ACTNUM[iw] = index++; } } NACTIV = index - 1; // Теперь ACTNUM хранит ещё и индекс ячейки INDEX, который есть просто линейный порядковый номер // увеличенный на "1", так как надо сохранить нулевые значения в неактивных ячейках continue; } System.Diagnostics.Debug.WriteLine(br.header.keyword); br.SkipEclipseData(); } br.CloseBinaryFile(); }