public void CalculateQCPropertiesTest() { FluidSaturations saturations = new FluidSaturations() { SaturationWater = 1.0, SaturationOil = 0.0, SaturationGas = 0.0 }; FluidProperties initialFluid = new FluidProperties() { FluidPressure = 22.2, FluidTemperature = 60, FluidConcentration = 0, FluidDensityAPI = 10, //cannot be 0 GasOilRatioRs = 0, FluidGravity = 0.6, Mixing = MixingType.Homogeneous, Scenario = ProjectScenario.WaterReplacingOil }; //Initial Reservoir Conditions RockProperties initialReservoir = new RockProperties() { DepthBelowMudline = 1524, //TrendType = TrendTypes.BongaTrend, ReservoirType = ReservoirTypes.Laminated, VpSand = 2415, VsSand = 1040, VpSandClean = 2415, VsSandClean = 1040, PorositySand = 0.3, VpShale = 2370, VsShale = 994, RhoShale = 2258, FractionShale = 0.4, KGrain = 37, MuGrain = 44, RhoGrain = 2650, FluidSaturationsInRock = saturations }; PreferredUnitSystem unitsystem = new MetricMPa(); QCProperties expected = new QCProperties() { Porosity = 0.3, //0.34068825, KDryByKMin = 0.107294, DenBrineSat = 2121.933, VpBrineSat = 2415.363, VsBrineSat = 1040.438 }; QCProperties actual; actual = ScenarioResults.GetQCResults(initialFluid, initialReservoir, new MetricMPa()); //To test in Field units actual = QCLogic.CalculateQCProperties(rock, fluid, flagResults, new Field()) and convert values for assertion. Assert.AreEqual(expected.Porosity, actual.Porosity, "Porosity do not match"); //Assert.AreEqual(expected.KDryByKMin, actual.KDryByKMin, 1e-3, "KDryByKmin do not match"); //Assert.AreEqual(expected.DenBrineSat.Value, actual.DenBrineSat.Value, 1e-3, "DenBrineSat do not match"); //Assert.AreEqual(expected.VpBrineSat.Value, actual.VpBrineSat.Value, 1e-3, "VpBrineSat do not match"); //Assert.AreEqual(expected.VsBrineSat.Value, actual.VsBrineSat.Value, 1e-3, "VpBrineSat do not match"); PorosityKDryByKMinProperties kdryValueForPointZero2 = new PorosityKDryByKMinProperties() { porosity = 0.02, KDryByKMPoint1 = 0.833333333, KDryByKMPoint15 = 0.882352941, KDryByKMPoint2 = 0.909090909, KDryByKMPoint25 = 0.925925926, KDryByKMPoint3 = 0.9375, KDryByKMPoint35 = 0.945945946, KDryByKMPoint4 = 0.952380952, KDryByKMPoint45 = 0.957446809, KDryByKMPoint5 = 0.961538462 }; PorosityKDryByKMinProperties kdryValueForPoint98 = new PorosityKDryByKMinProperties() { KDryByKMPoint1 = 0.0925925925925926, KDryByKMPoint15 = 0.13274336283185842, KDryByKMPoint2 = 0.16949152542372883, KDryByKMPoint25 = 0.2032520325203252, KDryByKMPoint3 = 0.234375, KDryByKMPoint35 = 0.26315789473684209, KDryByKMPoint4 = 0.28985507246376813, KDryByKMPoint45 = 0.31468531468531469, KDryByKMPoint5 = 0.33783783783783783, porosity = 0.98 }; VpVsProperties vp1700 = new VpVsProperties() { CastagniaDolomite = 913.74, CastagniaLimestone = 538.8788, CastagniaMudrock = 293.17, CastagniaSandstone = 511.24, Han = 562.32, Vp = 1700 }; DenVpProperties denVp1700 = new DenVpProperties() { GardnerAnhydrite = 2384.05319906545, GardnerDolomite = 1988.94318029729, GardnerSandstone = 1906.5809814135, GardnerShale = 2014.22050513369, MavkoLimestone = 1381.579861, Vp = 1700 }; //Assert.AreEqual(kdryValueForPoint98, actual.PorosityKDryPlotList[1], "Kdry table does not match when porosity is 0.98", null); //Assert.AreEqual(vp1700, actual.VpVsPlotList[1], "VpVs table does not match when Vp is 1700", null); //Assert.AreEqual(denVp1700, actual.DenVpPlotList[1], "DenVp table does not match when Vp is 1700", null); }
public void CalculateQCPropertiesOnlyTest() { RockProperties rock = new RockProperties() { RockPorosity = 0.34068825, KGrain = 37, MuGrain = 44, RhoGrain = 2650, RhoBulk = 2121.933213, KBulk = 9.316624568, MuBulk = 2.297016025 }; FluidProperties fluid = new FluidProperties() { GassmanResultKInitial = 2.54, GassmanResultRhoInitial = 1100 }; FluidProperties[] flagResults = new FluidProperties[] { new FluidProperties() { FluidType = FluidType.Brine, FlagResultK = 2.54, FlagResultRho = 1100 } }; QCProperties expected = new QCProperties() { Porosity = 0.34068825, KDryByKMin = 0.107294, DenBrineSat = 2121.933, VpBrineSat = 2415.363, VsBrineSat = 1040.438 }; QCProperties actual; actual = QCLogic.CalculateQCProperties(rock, fluid, flagResults, new MetricMPa()); //To test in Field units actual = QCLogic.CalculateQCProperties(rock, fluid, flagResults, new Field()) and convert values for assertion. Assert.AreEqual(expected.Porosity, actual.Porosity, "Porosity do not match"); Assert.AreEqual(expected.KDryByKMin, actual.KDryByKMin, 1e-3, "KDryByKmin do not match"); Assert.AreEqual(expected.DenBrineSat.Value, actual.DenBrineSat.Value, 1e-3, "DenBrineSat do not match"); Assert.AreEqual(expected.VpBrineSat.Value, actual.VpBrineSat.Value, 1e-3, "VpBrineSat do not match"); Assert.AreEqual(expected.VsBrineSat.Value, actual.VsBrineSat.Value, 1e-3, "VpBrineSat do not match"); PorosityKDryByKMinProperties kdryValueForPointZero2 = new PorosityKDryByKMinProperties() { porosity = 0.02, KDryByKMPoint1 = 0.833333333, KDryByKMPoint15 = 0.882352941, KDryByKMPoint2 = 0.909090909, KDryByKMPoint25 = 0.925925926, KDryByKMPoint3 = 0.9375, KDryByKMPoint35 = 0.945945946, KDryByKMPoint4 = 0.952380952, KDryByKMPoint45 = 0.957446809, KDryByKMPoint5 = 0.961538462 }; PorosityKDryByKMinProperties kdryValueForPoint98 = new PorosityKDryByKMinProperties() { KDryByKMPoint1 = 0.0925925925925926, KDryByKMPoint15 = 0.13274336283185842, KDryByKMPoint2 = 0.16949152542372883, KDryByKMPoint25 = 0.2032520325203252, KDryByKMPoint3 = 0.234375, KDryByKMPoint35 = 0.26315789473684209, KDryByKMPoint4 = 0.28985507246376813, KDryByKMPoint45 = 0.31468531468531469, KDryByKMPoint5 = 0.33783783783783783, porosity = 0.98 }; VpVsProperties vp1700 = new VpVsProperties() { CastagniaDolomite = 913.74, CastagniaLimestone = 538.8788, CastagniaMudrock = 293.17, CastagniaSandstone = 511.24, Han = 562.32, Vp = 1700 }; DenVpProperties denVp1700 = new DenVpProperties() { GardnerAnhydrite = 2384.05319906545, GardnerDolomite = 1988.94318029729, GardnerSandstone = 1906.5809814135, GardnerShale = 2014.22050513369, MavkoLimestone = 1381.579861, Vp = 1700 }; //Assert.AreEqual(kdryValueForPoint98, actual.PorosityKDryPlotList[1], "Kdry table does not match when porosity is 0.98", null); //Assert.AreEqual(vp1700, actual.VpVsPlotList[1], "VpVs table does not match when Vp is 1700", null); //Assert.AreEqual(denVp1700, actual.DenVpPlotList[1], "DenVp table does not match when Vp is 1700", null); }