예제 #1
0
        public void InfHomPressureDropPlots()
        {
            if (!Debugger.IsAttached)
            {
                return;
            }

            var skinFactor = 0.0;
            var cd         = 0.0;

            Func <double, double> f1 = (x) => InfiniteHomogenousReservoir2.PwdR(x, cd, skinFactor);
            var dp1 = GetXValues().Select(c => new ScatterPoint(c, f1(c)));
            var ls1 = new ScatterSeries()
            {
                Title = "PwdR2"
            };

            ls1.Points.AddRange(dp1);

            Func <double, double> f2 = (x) => InfiniteHomogenousReservoir.PwdR(x, cd, skinFactor);
            var dp2 = GetXValues().Select(c => new DataPoint(c, f2(c)));
            var ls2 = new LineSeries()
            {
                Title = "PwdR"
            };

            ls2.Points.AddRange(dp2);

            Func <double, double> f3 = (x) => InfiniteHomogenousReservoir.Pd(x, 1.0);
            var dp3 = GetXValues().Select(c => new DataPoint(c, f3(c)));
            var ls3 = new LineSeries()
            {
                Title = "Pd rd = 1.0"
            };

            ls3.Points.AddRange(dp3);


            var pm = new PlotModel()
            {
                Title = nameof(InfHomPressureDropPlots)
            };;

            pm.Axes.Add(new LogarithmicAxis()
            {
                Position = AxisPosition.Bottom, AbsoluteMinimum = 0.001
            });
            pm.Axes.Add(new LogarithmicAxis()
            {
                Position = AxisPosition.Left, AbsoluteMinimum = 0.001
            });
            pm.LegendPlacement = LegendPlacement.Outside;

            pm.Series.Add(ls1);
            pm.Series.Add(ls2);
            pm.Series.Add(ls3);

            ShowPlot(pm);
        }
예제 #2
0
        private LineSeries GetDirPwdR2Series(double skin, double cd)
        {
            Func <double, double> f = (x) => InfiniteHomogenousReservoir2.PwdRDerivative(x, cd, skin);
            var dp = GetXValues().Select(c => new DataPoint(c, f(c)));
            var ls = new LineSeries()
            {
                Title = $"DirPwdR2 Skin={skin} CD={cd}"
            };

            ls.Points.AddRange(dp);
            return(ls);
        }
예제 #3
0
        public void PwdR2_and_DirPwdR2_PwDbLinearSealingFault()
        {
            if (!Debugger.IsAttached)
            {
                return;
            }

            var pm = new PlotModel()
            {
                Title = nameof(PwdR2_and_DirPwdR2_PwDbLinearSealingFault)
            };;

            pm.Axes.Add(new LogarithmicAxis()
            {
                Position = AxisPosition.Bottom, AbsoluteMinimum = 0.001
            });
            pm.Axes.Add(new LogarithmicAxis()
            {
                Position = AxisPosition.Left, AbsoluteMinimum = 0.001
            });
            pm.LegendPlacement = LegendPlacement.Outside;

            var cd   = 50;
            var skin = 5;
            var Ld   = 500;

            Func <double, double> f1 = (x) => InfiniteHomogenousReservoir2.PwdR(x, cd, skin) +
                                       OuterBoundaries.PwDbLinearSealingFault(x, Ld);
            var dp1 = GetXValues().Select(c => new DataPoint(c / cd, f1(c) / cd));
            var ls1 = new LineSeries()
            {
                Title = $"PwdR2 Skin={skin} CD={cd}"
            };

            ls1.Points.AddRange(dp1);
            pm.Series.Add(ls1);


            Func <double, double> f2 = (x) => InfiniteHomogenousReservoir2.PwdRDerivative(x, cd, 0)
                                       + OuterBoundaries.PwDbLinearSealingFaultDerivative(x, Ld);

            var dp2 = GetXValues().Select(c => new DataPoint(c / cd, f2(c) / cd));
            var ls2 = new LineSeries()
            {
                Title = $"PwdRDerivative Skin={skin} CD={cd}"
            };

            ls2.Points.AddRange(dp2);

            pm.Series.Add(ls2);

            ShowPlot(pm);
        }