private void RefreshBelowTerrain() { ScreensAboveTerrain.Clear(); ScreensBelowBottom.Clear(); if (wells != null) { foreach (var w in wells.Where(we => we.Terrain != -999 & we.Row >= 0 & we.Column >= 0)) { foreach (var s in w.Screens.Where(sc => sc.DepthToBottom != -999 & sc.DepthToTop != -999)) { if (s.AboveModelTerrain) { MoveToChalkViewModel mc = new MoveToChalkViewModel(w, s); mc.NewTop = mshe.GridInfo.SurfaceTopography.Data[w.Row, w.Column]; mc.NewBottom = mshe.GridInfo.LowerLevelOfComputationalLayers.Data[w.Row, w.Column, mshe.GridInfo.NumberOfLayers - 1]; mc.NewLayer = mshe.GridInfo.NumberOfLayers - 1; ScreensAboveTerrain.Add(mc); } if (s.BelowModelBottom) { MoveToChalkViewModel mc = new MoveToChalkViewModel(w, s); mc.NewBottom = mshe.GridInfo.LowerLevelOfComputationalLayers.Data[w.Row, w.Column, 0]; //Maintain filter length mc.NewTop = mc.NewBottom + (s.DepthToBottom.Value - s.DepthToTop.Value); mc.NewLayer = 0; ScreensBelowBottom.Add(mc); } } } } RaisePropertyChanged("ScreensBelowBottom"); RaisePropertyChanged("ScreensAboveTerrain"); }
private void RefreshChalk() { ScreensToMove.Clear(); var ChalkLayer = Layers.Single(var => var.IsChalkLayer); if (wells != null) { foreach (var w in wells) { if (w.Row >= 0 & w.Column >= 0) { foreach (var s in w.Screens) { var lits = w.Lithology.Where(var => var.Bottom > s.DepthToTop & var.Top < s.DepthToBottom); foreach (var l in lits) { if (Chalks.ContainsKey(l.RockSymbol.ToLower())) { bool move = false; if (s.NewMsheLayer.HasValue) { if (s.NewMsheLayer.Value != ChalkLayer.DfsLayerNumber) { move = true; } } else if (ChalkLayer.DfsLayerNumber < s.MsheBottomLayer || ChalkLayer.DfsLayerNumber > s.MsheTopLayer) { move = true; } if (move) { MoveToChalkViewModel mc = new MoveToChalkViewModel(w, s); mc.NewBottom = mshe.GridInfo.LowerLevelOfComputationalLayers.Data[w.Row, w.Column, ChalkLayer.DfsLayerNumber]; mc.NewTop = mshe.GridInfo.UpperLevelOfComputationalLayers.Data[w.Row, w.Column, ChalkLayer.DfsLayerNumber]; mc.NewLayer = ChalkLayer.DfsLayerNumber; ScreensToMove.Add(mc); } break; } } } } } } RaisePropertyChanged("ScreensToMove"); }
private void RefreshWaterBodiesMethod() { screensToMoveWayerBodies.Clear(); var waterbodies = Layers.Where(var => var.IsGroundWaterBody); if (wells != null) { foreach (var w in wells) { foreach (var s in w.Screens.Where(sc=>sc.DepthToTop!=-999 & sc.DepthToBottom!=-999)) { var lits = w.Lithology.Where(var => var.Bottom > s.DepthToTop & var.Top < s.DepthToBottom); bool move = false; foreach (var l in lits) if (!Clays.ContainsKey(l.RockSymbol.ToLower())) move = true; if (move & w.Column>= 0 & w.Row>=0) { int topl = s.MsheTopLayer; int bottoml = s.MsheBottomLayer; if (s.NewMsheLayer.HasValue) { topl = s.NewMsheLayer.Value; bottoml = s.NewMsheLayer.Value; } if (topl == -1) topl = mshe.GridInfo.NumberOfLayers - 1; else if (topl == -2) topl = 0; if (bottoml == -1) bottoml = mshe.GridInfo.NumberOfLayers - 1; else if (bottoml == -2) bottoml = 0; for (int j = bottoml; j <= topl; j++) { if (Layers[j].IsGroundWaterBody) move = false; } if (move) { var upperdistance = Layers.FirstOrDefault(var => var.IsGroundWaterBody && var.DfsLayerNumber > topl & mshe.GridInfo.ThicknessOfComputationalLayers.Data[w.Row, w.Column, var.DfsLayerNumber] > minLayThickness); double up = double.MaxValue; if (upperdistance!=null) up = mshe.GridInfo.LowerLevelOfComputationalLayers.Data[w.Row, w.Column, upperdistance.DfsLayerNumber] - s.TopAsKote.Value; var lowerdistance = Layers.FirstOrDefault(var => var.IsGroundWaterBody & var.DfsLayerNumber < bottoml & mshe.GridInfo.ThicknessOfComputationalLayers.Data[w.Row, w.Column, var.DfsLayerNumber] > minLayThickness); double down = double.MaxValue; if (lowerdistance!=null) down =-( mshe.GridInfo.UpperLevelOfComputationalLayers.Data[w.Row, w.Column, lowerdistance.DfsLayerNumber] - s.BottomAsKote.Value); if (up < maxDistance & up < down)//Move up { MoveToChalkViewModel mc = new MoveToChalkViewModel(w, s); mc.NewBottom = mshe.GridInfo.LowerLevelOfComputationalLayers.Data[w.Row, w.Column, upperdistance.DfsLayerNumber]; //Maintain filter depth mc.NewTop = mc.NewBottom + (s.DepthToBottom.Value - s.DepthToTop.Value); mc.NewLayer = upperdistance.DfsLayerNumber; screensToMoveWayerBodies.Add(mc); } else if (down <maxDistance & down<up) { MoveToChalkViewModel mc = new MoveToChalkViewModel(w, s); mc.NewTop = mshe.GridInfo.UpperLevelOfComputationalLayers.Data[w.Row, w.Column, lowerdistance.DfsLayerNumber]; //Maintain filter depth mc.NewBottom = mc.NewTop - (s.DepthToBottom.Value - s.DepthToTop.Value); mc.NewLayer = lowerdistance.DfsLayerNumber; screensToMoveWayerBodies.Add(mc); } } } } } RaisePropertyChanged("ScreensToMoveWaterBodies"); } }
private void RefreshChalk() { ScreensToMove.Clear(); var ChalkLayer = Layers.Single(var => var.IsChalkLayer); if (wells != null) { foreach (var w in wells) { if (w.Row >= 0 & w.Column >= 0) { foreach (var s in w.Screens) { var lits = w.Lithology.Where(var => var.Bottom > s.DepthToTop & var.Top < s.DepthToBottom); foreach (var l in lits) if (Chalks.ContainsKey(l.RockSymbol.ToLower())) { bool move= false; if (s.NewMsheLayer.HasValue) { if (s.NewMsheLayer.Value != ChalkLayer.DfsLayerNumber) move = true; } else if (ChalkLayer.DfsLayerNumber < s.MsheBottomLayer || ChalkLayer.DfsLayerNumber > s.MsheTopLayer) move =true; if(move) { MoveToChalkViewModel mc = new MoveToChalkViewModel(w, s); mc.NewBottom = mshe.GridInfo.LowerLevelOfComputationalLayers.Data[w.Row, w.Column, ChalkLayer.DfsLayerNumber]; mc.NewTop = mshe.GridInfo.UpperLevelOfComputationalLayers.Data[w.Row, w.Column, ChalkLayer.DfsLayerNumber]; mc.NewLayer = ChalkLayer.DfsLayerNumber; ScreensToMove.Add(mc); } break; } } } } } RaisePropertyChanged("ScreensToMove"); }
private void RefreshWaterBodiesMethod() { screensToMoveWayerBodies.Clear(); var waterbodies = Layers.Where(var => var.IsGroundWaterBody); if (wells != null) { foreach (var w in wells) { foreach (var s in w.Screens.Where(sc => sc.DepthToTop != -999 & sc.DepthToBottom != -999)) { var lits = w.Lithology.Where(var => var.Bottom > s.DepthToTop & var.Top < s.DepthToBottom); bool move = false; foreach (var l in lits) { if (!Clays.ContainsKey(l.RockSymbol.ToLower())) { move = true; } } if (move & w.Column >= 0 & w.Row >= 0) { int topl = s.MsheTopLayer; int bottoml = s.MsheBottomLayer; if (s.NewMsheLayer.HasValue) { topl = s.NewMsheLayer.Value; bottoml = s.NewMsheLayer.Value; } if (topl == -1) { topl = mshe.GridInfo.NumberOfLayers - 1; } else if (topl == -2) { topl = 0; } if (bottoml == -1) { bottoml = mshe.GridInfo.NumberOfLayers - 1; } else if (bottoml == -2) { bottoml = 0; } for (int j = bottoml; j <= topl; j++) { if (Layers[j].IsGroundWaterBody) { move = false; } } if (move) { var upperdistance = Layers.FirstOrDefault(var => var.IsGroundWaterBody && var.DfsLayerNumber > topl & mshe.GridInfo.ThicknessOfComputationalLayers.Data[w.Row, w.Column, var.DfsLayerNumber] > minLayThickness); double up = double.MaxValue; if (upperdistance != null) { up = mshe.GridInfo.LowerLevelOfComputationalLayers.Data[w.Row, w.Column, upperdistance.DfsLayerNumber] - s.TopAsKote.Value; } var lowerdistance = Layers.FirstOrDefault(var => var.IsGroundWaterBody & var.DfsLayerNumber <bottoml& mshe.GridInfo.ThicknessOfComputationalLayers.Data[w.Row, w.Column, var.DfsLayerNumber]> minLayThickness); double down = double.MaxValue; if (lowerdistance != null) { down = -(mshe.GridInfo.UpperLevelOfComputationalLayers.Data[w.Row, w.Column, lowerdistance.DfsLayerNumber] - s.BottomAsKote.Value); } if (up < maxDistance & up < down)//Move up { MoveToChalkViewModel mc = new MoveToChalkViewModel(w, s); mc.NewBottom = mshe.GridInfo.LowerLevelOfComputationalLayers.Data[w.Row, w.Column, upperdistance.DfsLayerNumber]; //Maintain filter depth mc.NewTop = mc.NewBottom + (s.DepthToBottom.Value - s.DepthToTop.Value); mc.NewLayer = upperdistance.DfsLayerNumber; screensToMoveWayerBodies.Add(mc); } else if (down < maxDistance & down < up) { MoveToChalkViewModel mc = new MoveToChalkViewModel(w, s); mc.NewTop = mshe.GridInfo.UpperLevelOfComputationalLayers.Data[w.Row, w.Column, lowerdistance.DfsLayerNumber]; //Maintain filter depth mc.NewBottom = mc.NewTop - (s.DepthToBottom.Value - s.DepthToTop.Value); mc.NewLayer = lowerdistance.DfsLayerNumber; screensToMoveWayerBodies.Add(mc); } } } } } RaisePropertyChanged("ScreensToMoveWaterBodies"); } }