/// <summary>
        /// Generations mudlog geology interval data.
        /// </summary>
        /// <param name="numOfIntervals">The number of geology intervals.</param>
        /// <param name="startMd">The start md.</param>
        /// <param name="mdUom">The MD index uom.</param>
        /// <param name="tvdUom">The TVD index uom.</param>
        /// <param name="includeChromatograph">True if to include chromatograph node.</param>
        /// <param name="includeLithology">True if to generate lithlogy node.</param>
        /// <param name="includeShow">True if to generate show node.</param>
        /// <param name="mixInIntrepreted">True if to generate interpreted geology intervals geology intervals.</param>
        /// <returns>The mudlog geology interval collection.</returns>
        public List <GeologyInterval> GenerateGeologyIntervals(int numOfIntervals, double startMd, MeasuredDepthUom mdUom = MdUom, WellVerticalCoordinateUom tvdUom = TvdUom, bool includeLithology = false, bool includeShow = false, bool includeChromatograph = false, bool mixInIntrepreted = false)
        {
            var geologyIntervals = new List <GeologyInterval>();
            var random           = new Random(numOfIntervals * 2);

            for (var i = 1; i < numOfIntervals + 1; i++)
            {
                var startVal        = i == 1 ? startMd : startMd + ((i - 1) * 50);
                var mdTop           = new MeasuredDepthCoord(startVal, mdUom);
                var mdBottom        = new MeasuredDepthCoord(startVal + 50.0, MdUom);
                var uidSuffix       = i.ToString();
                var geologyInterval = GenerateGeologyInterval(random, mdTop, mdBottom, uidSuffix);

                if (includeShow)
                {
                    geologyInterval.Show = GenerateShow();
                }

                if (includeChromatograph)
                {
                    geologyInterval.Chromatograph = GenerateChromatograph(mdBottom.Value);
                }

                if (includeLithology)
                {
                    geologyInterval.Lithology = GenerateLithologyList();
                }

                geologyIntervals.Add(geologyInterval);
            }

            return(geologyIntervals);
        }
Beispiel #2
0
        /// <summary>
        /// Generations trajectory station data.
        /// </summary>
        /// <param name="numOfStations">The number of stations.</param>
        /// <param name="startMd">The start md.</param>
        /// <param name="mdUom">The MD index uom.</param>
        /// <param name="tvdUom">The Tvd uom.</param>
        /// <param name="angleUom">The angle uom.</param>
        /// <param name="includeExtra">True if to generate extra information for trajectory station.</param>
        /// <returns>The trajectoryStation collection.</returns>
        public List <TrajectoryStation> GenerationStations(int numOfStations, double startMd, MeasuredDepthUom mdUom = MdUom, WellVerticalCoordinateUom tvdUom = TvdUom, PlaneAngleUom angleUom = AngleUom, bool includeExtra = false)
        {
            var stations = new List <TrajectoryStation>();
            var random   = new Random(numOfStations * 2);
            var now      = DateTimeOffset.Now.AddDays(-1);

            for (var i = 0; i < numOfStations; i++)
            {
                var station = new TrajectoryStation
                {
                    Uid             = StationUidPrefix + (i + 1),
                    TypeTrajStation = i == 0 ? TrajStationType.tieinpoint : TrajStationType.magneticMWD,
                    MD = new MeasuredDepthCoord {
                        Uom = mdUom, Value = startMd
                    },
                    Tvd = new WellVerticalDepthCoord()
                    {
                        Uom = tvdUom, Value = startMd == 0 ? 0 : startMd - 0.1
                    },
                    Azi = new PlaneAngleMeasure {
                        Uom = angleUom, Value = startMd == 0 ? 0 : random.NextDouble()
                    },
                    Incl = new PlaneAngleMeasure {
                        Uom = angleUom, Value = startMd == 0 ? 0 : random.NextDouble()
                    },
                    DateTimeStn = now.AddMinutes(i)
                };

                if (includeExtra)
                {
                    station.Mtf = new PlaneAngleMeasure {
                        Uom = angleUom, Value = random.NextDouble()
                    };
                    station.MDDelta = new MeasuredDepthCoord {
                        Uom = MeasuredDepthUom.m, Value = 0
                    };
                    station.StatusTrajStation = TrajStationStatus.position;
                }

                stations.Add(station);
                startMd++;
            }

            return(stations);
        }
Beispiel #3
0
 /// <summary>
 /// Generations trajectory station data.
 /// </summary>
 /// <param name="numOfStations">The number of stations.</param>
 /// <param name="startMd">The start md.</param>
 /// <param name="mdUom">The MD index uom.</param>
 /// <param name="tvdUom">The Tvd uom.</param>
 /// <param name="angleUom">The angle uom.</param>
 /// <param name="inCludeExtra">True if to generate extra information for trajectory station.</param>
 /// <returns>The trajectoryStation collection.</returns>
 public List <TrajectoryStation> TrajectoryStations(int numOfStations, double startMd, MeasuredDepthUom mdUom = MdUom, WellVerticalCoordinateUom tvdUom = TvdUom, PlaneAngleUom angleUom = AngleUom, bool inCludeExtra = false)
 {
     return(TrajectoryGenerator.GenerationStations(numOfStations, startMd, mdUom, tvdUom, angleUom, inCludeExtra));
 }