lx
2025-08-08 09c1d78e98e01881f5abec85b75b52149b9b35f8
upload
已修改6个文件
39 ■■■■■ 文件已修改
ErrorAnalysis.Service/COMergeCalcService.cs 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ErrorAnalysis.Service/ErrorRatioCalc.cs 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ErrorAnalysis.Service/PDEVCalcService.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ErrorAnalysis.UI/FrmMain.Designer.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ErrorAnalysis.UI/FrmMain.cs 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ErrorAnalysis.UI/FrmMain.resx 补丁 | 查看 | 原始文档 | blame | 历史
ErrorAnalysis.Service/COMergeCalcService.cs
@@ -39,13 +39,13 @@
            var oilLineCR = oilLineValArr.Skip(_cWinStartIndex).Take(cWinLength).Sum() / oilLineValArr.Sum();
            var oilLineOR = oilLineValArr.Skip(_oWinStartIndex).Take(oWinLength).Sum() / oilLineValArr.Sum();
            var oilLineC = 36d / 160 * oilLineCR * yieldCounting / speed * depth * 0.0762;
            var oilLineO = 36d / 160 * oilLineOR * yieldCounting / speed * depth * 0.0762;
            var oilLineC = 36d / 160d * oilLineCR * yieldCounting / speed * depth * 0.0762d;
            var oilLineO = 36d / 160d * oilLineOR * yieldCounting / speed * depth * 0.0762d;
            var waterLineCR = waterLineValArr.Skip(_cWinStartIndex).Take(cWinLength).Sum() / waterLineValArr.Sum();
            var waterLineOR = waterLineValArr.Skip(_oWinStartIndex).Take(oWinLength).Sum() / waterLineValArr.Sum();
            var waterLineC = 36d / 160 * waterLineCR * yieldCounting / speed * depth * 0.0762;
            var waterLineO = 36d / 160 * waterLineOR * yieldCounting / speed * depth * 0.0762;
            var waterLineC = 36d / 160d * waterLineCR * yieldCounting / speed * depth * 0.0762d;
            var waterLineO = 36d / 160d * waterLineOR * yieldCounting / speed * depth * 0.0762d;
            double cRes = 0, oRes = 0;
            if (sw == 0)
@@ -79,13 +79,13 @@
            var oilLineCR = oilLineValArr.Skip(_cWinStartIndex).Take(cWinLength).Sum() / oilLineValArr.Sum();
            var oilLineOR = oilLineValArr.Skip(_oWinStartIndex).Take(oWinLength).Sum() / oilLineValArr.Sum();
            var oilLineC = (36d / 160) * oilLineCR * yieldCounting / speed * depth * 0.0762;
            var oilLineO = (36d / 160) * oilLineOR * yieldCounting / speed * depth * 0.0762;
            var oilLineC = (36d / 160d) * oilLineCR * yieldCounting / speed * depth * 0.0762d;
            var oilLineO = (36d / 160d) * oilLineOR * yieldCounting / speed * depth * 0.0762d;
            var waterLineCR = waterLineValArr.Skip(_cWinStartIndex).Take(cWinLength).Sum() / waterLineValArr.Sum();
            var waterLineOR = waterLineValArr.Skip(_oWinStartIndex).Take(oWinLength).Sum() / waterLineValArr.Sum();
            var waterLineC = (36d / 160) * waterLineCR * yieldCounting / speed * depth * 0.0762;
            var waterLineO = (36d / 160) * waterLineOR * yieldCounting / speed * depth * 0.0762;
            var waterLineC = (36d / 160d) * waterLineCR * yieldCounting / speed * depth * 0.0762d;
            var waterLineO = (36d / 160d) * waterLineOR * yieldCounting / speed * depth * 0.0762d;
            double cRes = 0, oRes = 0;
            if (sw == 0)
ErrorAnalysis.Service/ErrorRatioCalc.cs
@@ -53,9 +53,9 @@
                var mDelta = GetMDelta(modelID, porosity);
                speed = Math.Pow(firstTargetErrorRatio /
                    Math.Sqrt(1 / (0.0762 * depth * (36d / 160))) *
                    mDelta /
                    Math.Sqrt(((Math.Pow(nearCofe, 2) / yieldCounting) * (Math.Pow(nearCROR.Item1 / nearCROR.Item2, 2)) * (1 / nearCROR.Item1 + 1 / nearCROR.Item2)) + (Math.Pow(farCofe, 2) / yieldCounting) * (Math.Pow(farCROR.Item1 / farCROR.Item2, 2)) * (1 / farCROR.Item1 + 1 / farCROR.Item2))
                    (Math.Sqrt(160 / (0.0762 * depth * 36d * yieldCounting)) *
                    1d / mDelta) /
                    Math.Sqrt((Math.Pow(nearCofe, 2) * (Math.Pow(nearCROR.Item1 / nearCROR.Item2, 2)) * (1 / nearCROR.Item1 + 1 / nearCROR.Item2)) + (Math.Pow(farCofe, 2) * (Math.Pow(farCROR.Item1 / farCROR.Item2, 2)) * (1 / farCROR.Item1 + 1 / farCROR.Item2)))
                    , 2);
                var firstErrorPass = new ErrorRatio { Pass = 1, ErrorRatioValue = firstTargetErrorRatio };
@@ -89,10 +89,16 @@
            try
            {
                var mDelta = GetMDelta(modelID, porosity);
                var mergePDEV = PDEVCalcService.GetMergePDEV(modelID, porosity, sw, speed, depth, yieldCounting, nearCofe, farCofe);
                //var mergePDEVOld = PDEVCalcService.GetMergePDEV(modelID, porosity, sw, speed, depth, yieldCounting, nearCofe, farCofe);
                var errorRatio = mergePDEV / GetMDelta(modelID, porosity);
                var nearCROR = COMergeCalcService.GetNearCOORResult(modelID, porosity, sw);
                var farCROR = COMergeCalcService.GetFarCOORResult(modelID, porosity, sw);
                var mergePDEV = Math.Sqrt(160 * speed / (0.0762 * 36 * depth * yieldCounting)) * Math.Sqrt((Math.Pow(nearCofe, 2) * (Math.Pow(nearCROR.Item1 / nearCROR.Item2, 2)) * (1 / nearCROR.Item1 + 1 / nearCROR.Item2)) + (Math.Pow(farCofe, 2) * (Math.Pow(farCROR.Item1 / farCROR.Item2, 2)) * (1 / farCROR.Item1 + 1 / farCROR.Item2)));
                var errorRatio = mergePDEV / mDelta;
                return new ErrorRatio { Pass = 1, ErrorRatioValue = errorRatio };
            }
ErrorAnalysis.Service/PDEVCalcService.cs
@@ -19,6 +19,6 @@
            return Math.Sqrt(Math.Pow(nearPDEV * nearCofe, 2) + Math.Pow(farPDEV * farCofe, 2));
        }
        private static double CalcPDEV(double c, double o) => Math.Sqrt(Math.Pow(c / o, 2) * (1 / c + 1 / o));
        private static double CalcPDEV(double c, double o) => c / o * Math.Sqrt((1 / c + 1 / o));
    }
}
ErrorAnalysis.UI/FrmMain.Designer.cs
@@ -232,7 +232,7 @@
            // 
            // nudSoPrecisionRequired
            // 
            nudSoPrecisionRequired.DecimalPlaces = 1;
            nudSoPrecisionRequired.DecimalPlaces = 2;
            nudSoPrecisionRequired.Increment = new decimal(new int[] { 2, 0, 0, 0 });
            nudSoPrecisionRequired.Location = new Point(185, 43);
            nudSoPrecisionRequired.Name = "nudSoPrecisionRequired";
ErrorAnalysis.UI/FrmMain.cs
@@ -405,6 +405,9 @@
            var property = control.Tag.ToString();
            var filterVal = control.Text == "water" ? "0" : control.Text == "oil" ? "100" : control.Text == "gas" ? "200" : "999";
            if (_filters==null)
                return;
            if (_filters.ContainsKey(property))
                _filters[property] = filterVal;
            else
ErrorAnalysis.UI/FrmMain.resx