| | |
| | | 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) |
| | |
| | | |
| | | 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) |
| | |
| | | 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 }; |
| | |
| | | |
| | | 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 }; |
| | | } |
| | |
| | | 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)); |
| | | } |
| | | } |
| | |
| | | // |
| | | // 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"; |
| | |
| | | |
| | | 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 |