public void ReadArrayCube(string filename, int maxstep) { FileStream fs = new FileStream(filename, FileMode.Open, FileAccess.Read, FileShare.ReadWrite); BinaryReader br = new BinaryReader(fs); List <float[]> list = new List <float[]>(); MFGrid grid = mfgrid; int step = 0; while (fs.Position < fs.Length) { float[] data = new float[grid.ActiveCellCount]; for (int l = 0; l < grid.ActiveCellCount; l++) { data[l] = br.ReadSingle(); } step++; if (step >= maxstep) { break; } list.Add(data); } grid.ArrayCube = new MatrixCube <float>(list.Count, true); for (int i = 0; i < list.Count; i++) { grid.ArrayCube.LayeredSerialValue[i] = list[i]; } br.Close(); fs.Close(); }
private float[] ReadNonZeroArray(BinaryReader br, MFGrid grid, float[][] values) { float[] wt = new float[grid.ActiveCellCount]; float vv = 0; for (int l = 0; l < grid.ActualLayerCount; l++) { int index = 0; for (int r = 0; r < grid.RowCount; r++) { for (int c = 0; c < grid.ColumnCount; c++) { vv = br.ReadSingle(); if (grid.IBound.LayeredValues[0][r, c] != 0) { values[l][index] = vv; index++; } } } } for (int i = 0; i < grid.ActiveCellCount; i++) { for (int ll = 0; ll < grid.ActualLayerCount; ll++) { if (values[ll][i] != 0) { wt[i] = values[ll][i]; break; } } } return(wt); }
public void Initialize(IProject project) { if (project != null) { mGrid = project.Model.Grid as MFGrid; _Prms = (project.Model as HeiflowModel).PRMSModel; _Modflow = (project.Model as HeiflowModel).ModflowModel; } }
public MFPackage(string name, MFGrid grid) : base(name) { if (grid != null) { mfgrid = grid; mfprj = mfgrid.MFProject; if (!mfprj.Packages.Keys.Contains(name)) { mfprj.Packages.Add(name, this); } } DefaultCBCVariables = new string[] { "FLOW RIGHT FACE", "FLOW FRONT FACE", "FLOW LOWER FACE", "STREAM LEAKAGE", "UZF RECHARGE", "SURFACE LEAKAGE", "GW ET" }; }
public HFBPackage(string name, MFGrid grid) : base(name, grid) { MFParameter para = MFParameter.Create("NPHFB", this, 1, 0, ParameterType.Parameter); para.IntValue = 0; AddParameter(para); para = MFParameter.Create("MXFB", this, 1, 0, ParameterType.Parameter); para.IntValue = 0; AddParameter(para); para = MFParameter.Create("NHFBNP", this, 1, 0, ParameterType.Parameter); para.IntValue = 0; AddParameter(para); para = MFParameter.Create("NACTHFB", this, 1, 0, ParameterType.Parameter); para.IntValue = 0; AddParameter(para); }
public WellPackage(string name, MFGrid grid) : base(name, grid) { IWELCB = 0; Option = "AUXILIARY IFACE NOPRINT"; MFParameter para = new MFParameter("MXACTW"); para.Package = this; para.ValueType = 1; para.VariableType = ParameterType.Parameter; para.Dimension = 0; para.IntValue = 0; para.SPVariable = false; AddParameter(para); para = new MFParameter("IWELCB"); para.Package = this; para.ValueType = 1; para.VariableType = ParameterType.Parameter; para.Dimension = 0; para.IntValue = 0; para.SPVariable = false; AddParameter(para); para = new MFParameter("OPTION"); para.Package = this; para.ValueType = 4; para.VariableType = ParameterType.Parameter; para.Dimension = 0; para.StringValue = "AUXILIARY IFACE NOPRINT"; para.SPVariable = false; AddParameter(para); para = new MFParameter("WELL"); para.Package = this; para.ValueType = 5; para.VariableType = ParameterType.Parameter; para.Dimension = 2; para.SPVariable = true; AddParameter(para); }
public IGrid Provide(string filename) { AscReader asc = new AscReader(); var mat = asc.Load(filename); var mfgrid = new MFGrid(); mfgrid.RowCount = mat.Size[1]; mfgrid.ColumnCount = mat.Size[2]; //mfgrid.RowInteval = new MyScalar<float>(asc.CellSize); //mfgrid.ColInteval = new MyScalar<float>(asc.CellSize); mfgrid.IBound = new DataCube <float>(1, mfgrid.RowCount, mfgrid.ColumnCount); mfgrid.ActiveCellCount = 0; for (int r = 0; r < mat.Size[0]; r++) { for (int c = 0; c < mat.Size[1]; c++) { if (mat[0, r, c] == asc.NoDataValue) { mfgrid.IBound[0, r, c] = 0; } else { mfgrid.IBound[0, r, c] = 1; mfgrid.ActiveCellCount++; } } } mfgrid.Elevations = new DataCube <float>(1, 1, mfgrid.ActiveCellCount); var vector = asc.LoadSerial(filename, mfgrid); mfgrid.Elevations[0]["0", ":"] = vector; return(mfgrid); }
public static void WriteSerialArray <T>(StreamWriter sw, MatrixCube <T> matrix, T multiplier, MFGrid grid, int clayer, int iprn, string comment) { if (matrix.IsConstant[clayer]) { string line = string.Format("CONSTANT\t{0}\t{1}", matrix.LayeredConstantValues[clayer], comment); sw.WriteLine(line); } else { string line = string.Format("INTERNAL\t{0}\t(FREE)\t{1}\t{2}", multiplier, iprn, comment); int row = grid.RowCount; int col = grid.ColumnCount; sw.WriteLine(line); int index = 0; for (int r = 0; r < row; r++) { line = ""; for (int c = 0; c < col; c++) { if (grid.IBound.LayeredValues[0][r, c] != 0) { line += matrix.LayeredSerialValue[clayer][index] + StreamReaderSequence.stab; index++; } else { line += "0" + StreamReaderSequence.stab; } } line = line.Trim(StreamReaderSequence.ctab); sw.WriteLine(line); } } }
public static void ReadSerialArray <T>(StreamReader sr, MatrixCube <T> matrix, MFGrid grid, int cLayer) { string line = sr.ReadLine().ToUpper(); var strs = TypeConverterEx.Split <string>(line); // Read constant matrix if (strs[0].ToUpper() == "CONSTANT") { var ar = TypeConverterEx.Split <string>(line); T conv = TypeConverterEx.ChangeType <T>(ar[1]); matrix.LayeredConstantValues[cLayer] = conv; matrix.IsConstant[cLayer] = true; } // Read internal matrix else { matrix.LayeredSerialValue[cLayer] = new T[grid.ActiveCellCount]; matrix.IsConstant[cLayer] = false; T multiplier = TypeConverterEx.ChangeType <T>(strs[1]); line = sr.ReadLine(); var values = TypeConverterEx.Split <T>(line); int col = grid.ColumnCount; int row = grid.RowCount; if (values.Length == col) { int index = 0; for (int c = 0; c < col; c++) { if (grid.IBound.LayeredValues[0][0, c] != 0) { matrix.LayeredSerialValue[cLayer][index] = values[c]; index++; } } for (int r = 1; r < row; r++) { line = sr.ReadLine(); values = TypeConverterEx.Split <T>(line); for (int c = 0; c < col; c++) { if (grid.IBound.LayeredValues[0][r, c] != 0) { matrix.LayeredSerialValue[cLayer][index] = values[c]; index++; } } } } else { int index = 0; int colLine = (int)Math.Ceiling(col / 10.0); for (int r = 0; r < row; r++) { int i = 0; if (r == 0) { i = 1; } else { i = 0; line = ""; } for (; i < colLine; i++) { line += sr.ReadLine() + " "; } values = TypeConverterEx.Split <T>(line); for (int c = 0; c < col; c++) { if (grid.IBound.LayeredValues[0][r, c] != 0) { matrix.LayeredSerialValue[cLayer][index] = values[c]; index++; } } } } } }
public UPWPackage(string name, MFGrid grid) : base(name, grid) { }