private bool CheckSimpleGriddingPossibilityByX(NonMeshedModel model, decimal xCellSize) { var boundaries = GetAllAnomalyBoundariesAlong(a => a.X, model); boundaries.Insert(0, StartX); boundaries.Add(EndX); return(CheckSimpleGriddingPossibility(boundaries, xCellSize)); }
private bool CheckSimpleGriddingPossibilityByY(NonMeshedModel model, decimal yCellSize) { var boundaries = GetAllAnomalyBoundariesAlong(a => a.Y, model); boundaries.Add(StartY); boundaries.Add(EndY); return(CheckSimpleGriddingPossibility(boundaries, yCellSize)); }
private static decimal[] GetAllBoundariesAlongZ(NonMeshedModel model) { var boundaries = new List <decimal>(); boundaries.AddRange(GetAllAnomalyBoundariesAlong(a => a.Z, model)); boundaries.AddRange(GetAllSection1DBoundaries(model)); return(DistinctSortToArray(boundaries)); }
public static NonMeshedModel CreateModelWithFirstLayerBlockOnly() { var section1D = CreateSection1D(); var model = new NonMeshedModel(section1D); model.AddAnomaly(new NonMeshedAnomaly(conductivity: 1 / 0.1f, x: new Direction(0, 1000), y: new Direction(0, 2000), z: new Direction(200, 800))); return(model); }
public static NonMeshedModel CreateModelOnlyBottomBlock() { var section1D = CreateSection1D(); var model = new NonMeshedModel(section1D); model.AddAnomaly(new NonMeshedAnomaly(conductivity: 1 / 0.3f, x: new Direction(1400, 1000), y: new Direction(0, 5600), z: new Direction(1000, 2000))); return(model); }
private static IEnumerable <decimal> GetAllSection1DBoundaries(NonMeshedModel model) { var boundaries = new List <decimal>(); var backZ = model.Section1D.ZeroAirLevelAlongZ; boundaries.Add(backZ); for (int i = 0; i < model.Section1D.NumberOfLayers; i++) { var layer = model.Section1D[i]; backZ += layer.Thickness; boundaries.Add(backZ); } return(boundaries); }
public NonMeshedToCartesianModelConverter(NonMeshedModel model) { if (model == null) { throw new ArgumentNullException(nameof(model)); } _model = model; _zBoundaries = GetAllBoundariesAlongZ(model); var startX = model.Anomalies.Min(a => a.X.Start); var endX = model.Anomalies.Max(a => a.X.Start + a.X.Size); var startY = model.Anomalies.Min(a => a.Y.Start); var endY = model.Anomalies.Max(a => a.Y.Start + a.Y.Size); SetBoundaries(startX, endX, startY, endY); }
public NonMeshedModel CreateNonMeshedModel(double leftConductivity, double rightConductivity) { var section1D = CreateSection1D(); var model = new NonMeshedModel(section1D); model.AddAnomaly(new NonMeshedAnomaly(conductivity: leftConductivity, x: new Direction(0, AnomalySizeLateral / 2), y: new Direction(0, AnomalySizeLateral), z: new Direction(0, AnomalySizeAlongZ))); model.AddAnomaly(new NonMeshedAnomaly(conductivity: rightConductivity, x: new Direction(AnomalySizeLateral / 2, AnomalySizeLateral / 2), y: new Direction(0, AnomalySizeLateral), z: new Direction(0, AnomalySizeAlongZ))); return(model); }
public static NonMeshedModel CreateNonMeshedModel() { var section1D = CreateSection1D(); var model = new NonMeshedModel(section1D); model.AddAnomaly(new NonMeshedAnomaly(conductivity: 1 / 300f, x: new Direction(0, 3000), y: new Direction(400, 400), z: new Direction(50, 250))); model.AddAnomaly(new NonMeshedAnomaly(conductivity: 1 / 30f, x: new Direction(0, 3000), y: new Direction(800, 600), z: new Direction(50, 400))); model.AddAnomaly(new NonMeshedAnomaly(conductivity: 1 / 100f, x: new Direction(0, 3000), y: new Direction(1400, 400), z: new Direction(50, 250))); model.AddAnomaly(new NonMeshedAnomaly(conductivity: 1 / 30f, x: new Direction(0, 3000), y: new Direction(1800, 600), z: new Direction(50, 400))); model.AddAnomaly(new NonMeshedAnomaly(conductivity: 1 / 300f, x: new Direction(0, 3000), y: new Direction(2400, 400), z: new Direction(50, 250))); model.AddAnomaly(new NonMeshedAnomaly(conductivity: 1 / 0.1f, x: new Direction(3400, 1000), y: new Direction(2800, 2000), z: new Direction(200, 800))); model.AddAnomaly(new NonMeshedAnomaly(conductivity: 1 / 0.3f, x: new Direction(1400, 1000), y: new Direction(0, 5600), z: new Direction(1000, 2000))); return(model); }
public static NonMeshedModel CreateModel(decimal lateralSize, decimal faultSize) { var section1D = CreateSection1D(); var model = new NonMeshedModel(section1D); model.AddAnomaly(new NonMeshedAnomaly(conductivity: 1, x: new Direction(0, lateralSize), y: new Direction(0, lateralSize), z: new Direction(0, CoverThickness))); if (faultSize != 0) { model.AddAnomaly(new NonMeshedAnomaly(conductivity: 1f, x: new Direction(0, faultSize), y: new Direction(0, lateralSize), z: new Direction(CoverThickness, OverallFualtThickness - CoverThickness))); } return(model); }
public NonMeshedModel CreateNonMeshedModel() { var section1D = CreateSection1D(); var model = new NonMeshedModel(section1D); model.AddAnomaly(new NonMeshedAnomaly(conductivity: _settings.LeftConductivity, x: new Direction(0, 7000), y: new Direction(0, 4000), z: new Direction(1500, 4500))); model.AddAnomaly(new NonMeshedAnomaly(conductivity: _settings.RightConductivity, x: new Direction(0, 7000), y: new Direction(4000, 4000), z: new Direction(1500, 4500))); model.AddAnomaly(new NonMeshedAnomaly(conductivity: _settings.TopConductivity, x: new Direction(2000, 3000), y: new Direction(2000, 4000), z: new Direction(200, 300))); return(model); }
public NonMeshedModel CreateNonMeshedModel() { var section1D = CreateSection1D(_settings.Section1D); var model = new NonMeshedModel(section1D); var anStart = _settings.AnomalyStartDepth; var anEnd = _settings.AnomalyStartDepth + _settings.AnomalySizeZ; var start = section1D.ZeroAirLevelAlongZ; for (int i = 1; i < section1D.NumberOfLayers - 1; i++) { var cond = _settings.Conductivity == -1 ? section1D[i].Sigma : _settings.Conductivity; var end = start + section1D[i].Thickness; if (start < anStart && end > anEnd) { AddAnom(model, cond, anStart, anEnd); } else if (start >= anStart && end > anEnd) { AddAnom(model, cond, start, anEnd); } else if (start >= anStart && end <= anEnd) { AddAnom(model, cond, start, end); } start = end; } return(model); }
private static List <decimal> GetAllAnomalyBoundariesAlong(Func <NonMeshedAnomaly, Direction> along, NonMeshedModel model) { var boundaries = new List <decimal>(); foreach (var anomaly in model.Anomalies) { var d = along(anomaly); boundaries.Add(d.Start); boundaries.Add(d.Start + d.Size); } return(boundaries); }
public decimal[] CreateAnomalyFragmentation(NonMeshedModel model) { return(CreateAnomalyFragmentation(model.GetMinZ(), model.GetMaxZ())); }