The present disclosure is directed at a method and apparatus for correcting data points acquired during well drilling.
Large amounts of data are generated during drilling of oil and gas wells. This data can be automatically recorded using any one of several data recording devices known in the art; the Pason™ Electronic Drilling Recorder is one such device. During drilling, the data recording device records various parameters that are material for and that are intermittently measured during well drilling. The parameters can include:
The parameters are typically recorded intermittently every several seconds or every several centimeters of drilling. The parameters can be recorded in the form of data points in a text file for subsequent use by drilling engineers. The data points are usable if they accurately represent how the well was drilled.
Some of the data points may not be representative of how the well was drilled. For example, during drilling the drill string may break, which can result in the data recording device continuing to record a positive value for the rotations per minute of the drill string notwithstanding that the well is not being drilled. Such erroneous data can hinder the work of the drilling engineer.
Accordingly, there exists a need for an apparatus and method for correcting data points acquired during well drilling.
According to a first aspect, there is provided a computer implemented method for correcting data points acquired during well drilling. The method includes applying a tag to one or more of the data points wherein the tag corresponds to a characteristic of the one or more of the data points; identifying a data fault indicative of inaccurate data in the one or more of the data points associated with the tag; and correcting the data fault. One or more tags may be applied to any subset of the one or more of the data points. Each of the tags may correspond to a different characteristic of the one or more of the data points. Similarly, the method may include identifying one or more data faults, and each of the multiple data faults may be indicative of a different inaccuracy in the one or more data points associated with the tag. One or more of the data faults may be corrected.
Applying the one or more tags can include any one or more of the following and any and all combinations of:
Identifying one or more data faults can include any one or more of the following and any and all combinations of:
Correcting the data faults can include any one or more of the following and any and all combinations of:
Reference to a “valid data point” includes reference to a data point that is not tagged as null, sliding or invalid.
The tags can be applied in the following order: null tags, measured time tags, calculated time tags, weight on bit tags, rotations per minute tags, total pump output tags, sliding tags, jump tags, duplicate tags, and then invalid tags. The tags do not have to be applied in this order, and when this order is utilized not all of the different types of tags need to be applied.
Identifying and correcting the data faults can be done in the following order: identifying null points and sliding points, identifying and correcting truncation points, identifying and correcting duplicate points and jump points, identifying and correcting problematic points, correcting the null points, identifying and correcting invalid points, identifying and correcting smoothing points, and then correcting the sliding points. Identification and correction does not have to be performed in this order, and when this order is utilized not all of the data faults need to be either identified or corrected.
According to another aspect, there is provided a computer readable medium having encoded thereon statements and instructions for execution by a processor to carry out a method according to any of the above aspects. The computer readable medium may be a non-transitory computer readable medium that excludes propagating electromagnetic waves but that includes all other types of computer readable media such as but not limited to any form of disk or semiconductor based memory such as random access memory, flash memory, read only memory, hard disk drives, optical drives and optical drive media, flash drives, and any other suitable form of computer readable medium that can be used for storage as is known to skilled persons.
Another to a further aspect, there is provided an apparatus for correcting data points acquired during well drilling. The apparatus includes a processor; and a memory communicatively coupled to the processor. The memory has encoded thereon statements and instructions for execution by the processor to carry out a method according to any of the above aspects.
In the accompanying drawings, which illustrate one or more exemplary embodiments:
a and 5b are flowcharts describing a method by which data points that should be truncated from the beginning and end of the data points are identified and deleted;
a and 10b are flowcharts describing a method by which duplicate data points are identified and corrected in the data points;
a through 12i depict various sequences of data points that can be corrected through smoothing;
a and 16b are screenshots of a graphical user interface for correcting data points acquired during well drilling.
Data collected and recorded during the drilling of oil and gas wells can be used for multiple purposes. As depicted in
In
At the surface is a data recording device 31 such as the Pason Electronic Drilling Recorder™ which is communicative via a network 32 with a data storage device 30 such as the Pason Datahub™. The data storage device 30 records the parameters transmitted from the MWD tool 22 and recorded by various surface sensors (not shown) via the data recording device 31. The parameters are recorded as data points in a text file. In the present embodiment the drill string 20 includes the MWD tool 22; however, in alternative embodiments the MWD tool 22 is not present. The parameters recorded by the data storage device 30 include the hole depth of the well 18; the rate of penetration of the drill bit 24; the depth of the drill bit 24; the on bottom rate of penetration of the drill bit 18 through the earth; the weight on the drill bit 18; the rotations per minute of the drill string 20 as measured at the surface; the rotary torque applied to the drill string 20 as measured at the surface; and the total pump output of the pump 16 as measured at the surface.
An excerpt from a text file containing the data points the data storage device 30 records follows in Table 1. The text file is a LAS (Log ASCII Standard) file that is generated by the Pason Datahub™.
In the above excerpt, BDEP is the drill bit 24 depth in meters; OBR is the on bottom rate of penetration of the drill bit 24 in meters per hour, hereinafter referred to as “ROP”; WOB is the weight on the drill bit 24 in decanewtons; RPM is the rotations per minute of the drill string 20 as measured at the surface; TOR is the rotary torque applied to the drill string 20 in Newton meters; TPO is the total pump output of the pump 16 in cubic meters per minute; YYMMDD is the date on which each data point is recorded in year/month/day format; and HHMMSS is the time at which each data point is recorded in hours/minutes/seconds format.
Ideally, the data points accurately represent the data parameters that affected drilling of the well 18. However, the data points may not accurately represent the data parameters that affected well drilling for a variety of reasons; these reasons can be divided into two groups. First, the data points may be inaccurate because of an event external from one or both of the data storage device 30 and the data recording device 31. For example, the drill string 20 may break during drilling, which would result in the TOR and RPM data parameters being inaccurate since rotational force imparted to the drill string 20 at the surface cannot be transferred to the drill bit 24 if the drill string 20 is broken, and consequently the well 18 cannot be drilled until the drill string 20 is repaired. Second, the data points may be inaccurate because of artifacts one or both of the data recording device 31 and the data storage device 30 introduce during acquisition and recording of the data points. For example, the data recording device 31 may not acquire valid data points during the beginning of drilling because the data recording device 31 is undergoing initialization, notwithstanding that drilling is proceeding normally. Such inaccuracies in the data points stored by the data storage device 30 are hereinafter referred to as “data faults”.
Exemplary data faults include:
The text file generated by the data storage device 30 is transmitted via the network 32 to an apparatus 10 for using the data points contained in the text file to optimize a drilling plan for the proposed well 34. Prior to formulating the drilling plan, the apparatus 10 identifies and corrects the data faults contained in the data points.
The embodiments described herein are directed at the use of a processor 34 contained within the apparatus 10 that is specifically configured to read the text file containing the data points that represent parameters measured during the drilling of an oil or gas well, and to correct the data faults contained in the data points. The text file can be, for example, the LAS file that is generated by the Pason Datahub™. The LAS file can be stored on a computer readable medium 36, which includes any form of disk or semiconductor based memory such as random access memory, flash memory, read only memory, hard disk drives, optical drives and optical drive media, flash drives, and any other computer readable storage media as is known to skilled persons. The processor reads the data points from the text file and translates them into a temporary data structure that the processor directly manipulates. The temporary data structure is composed of multiple arrays with each array indexed by a key value (n). In the present embodiment, the processor accesses the following arrays in the temporary data structure:
A reference to all of the values stored in DEPTH[n], WOB[n], RPM[n], TPO[n], ROP[n], TD[n] and TC[n] is hereinafter referred to as “data[n]”.
Each of the above arrays in the temporary data structure except for TC and TD is directly copied from the LAS file. Expected time is calculated by dividing the difference in depth between a first location and a second, deeper location by the rate of penetration measured at the second, deeper location. Measured time difference is calculated by subtracting TD[n] from TD[n−1]. In the embodiments described herein, identical key values used to access different arrays identify data points measured at the same depth.
Following reading the temporary data structure containing the arrays of data points, the processor tags the data points to facilitate ease of analysis, identifies the data faults in the data points based in part on the tags, and then corrects the data faults by generating corrected data based on correct data points in the array, as described in further detail below. In this way, the data containing data faults as output by the data storage device 30 is transformed into data that better represents how the well 18 was drilled, which allows the apparatus 10 to create a more accurate drilling plan for the proposed well 34. The tagging, identifying and correcting procedures that the processor implements are described below.
Tagging the Data
The NULL Tag
Referring now to
At block 206, the processor checks DEPTH[n] to determine if the recorded depth at the current key value is 0 meters, which corresponds to the surface. As the data recording device 31 of the present embodiment only begins recording when the drill bit 24 is underground, a depth of 0 meters indicates an erroneous data measurement and therefore a data fault. Consequently, if a depth of 0 meters is recorded at the given key value, out of an abundance of caution data[n] is tagged as NULL (block 214). The NULL tag is used to identify which values of data[n] should not relied upon, as described in more detail below in respect of identifying and correcting null points in data[n].
If the depth value is non-zero, then each of the DEPTH, TPO, ROP, RPM, and WOB arrays are checked at the current key value to determine whether the data recording device 31 recorded a NULL value in any of the arrays (block 210). If any of the arrays at the current key value is NULL, then out of an abundance of caution the processor tags all the arrays at the key value as NULL (block 214).
If none of the depth, TPO, ROP, RPM and WOB arrays are NULL values, then the processor checks to see if all of the recorded TPO, ROP, RPM and WOB values at the current key value are zero (block 212). Practically, the TPO, ROP, RPM and WOB values should not all be zero because this corresponds to a situation in which drilling has been suspended and the drill string is being lifted upwards, which means that the recorded data points do not correspond to the well 18 as drilled. Consequently, if all of TPO, ROB, RPM and WOB are zero at the given key value, then the processor tags all the arrays at the key value as NULL (block 214).
After the processor has decided either to tag or not tag the arrays at the given key value as NULL, the processor advances to the next key value (block 216) and returns to block 204 to repeat the process until the end of data[n] (n equals N) is reached.
Table 2, below, is an example of data that the processor has analyzed according to the method of
Each row of data in Table 2 represents a different key value. As the depth value in the third row of the data in Table 2 is zero, the processor has tagged data[n] at this key value as NULL (“N”).
The TD, TC, WOB, RPM, and TPO Tags
Referring now to
At block 300, the processor begins the tagging process and moves to data[3] (block 302). At block 304, the processor determines whether the current key value is at least two key values greater than the highest key value, N. If not, data[n] is insufficiently large to justify the tagging process and the method ends (block 306). If data[n] is sufficiently large to justify the tagging process, the processor proceeds to block 308.
From blocks 308 to 312 the processor determines whether the TD tag should be applied to data[n]. Presence of the TD tag means that the time the data recording device 31 recorded that it took to drill a specific segment of the well 18 was longer than an empirically derived, pre-defined measured time threshold, TDThreshold, which in the present embodiment is 100%. Recorded drill times in excess of TDThreshold are more likely to contain unreliable data than recorded drill times under TDThreshold. At blocks 308 and 310 the processor determines whether the length of time recorded to drill the segments of the well 18 immediately adjacent to the current key value exceed TDThreshold; if so, the TD tag is applied to data[n]. If not, the TD tag is not applied and the processor proceeds to block 314.
At block 314, the processor determines whether the TC tag should be applied to data[n]. Presence of the TC tag means that the time the processor calculates that drilling should have taken between depth[n] and depth[n−1] (TC[n]), based on the depth drilled divided by the rate of penetration of the drill bit 24 as measured at depth[n], is substantially different from the recorded time TD[n]. At block 314 the processor determines this by comparing DIFF(TD[n],TC[n]) to a pre-defined calculated time threshold, TCThreshold, which is typically 10%. If DIFF(TD[n],TC[n]) exceeds TCThreshold, the difference between recorded and calculated time is significant and the TC tag is applied to data[n].
The processor then proceeds to block 318 where it determines whether the WOB tag should be applied to data[n]. At blocks 318 and 320, the processor determines whether the difference between WOB measured between the current key value and the last and second to last key values, respectively, exceeds a pre-defined WOBThreshold of 10%. When these differences exceed the WOBThreshold, WOB[n] is less likely to be reliable and the processor therefore tags data[n] as WOB. The processor analogously determines whether to tag data[n] as RPM at blocks 324 through 328, and also whether to tag data[n] as TPO at blocks 330 through 332. In both of these latter cases, changes in RPM and TPO levels beyond RPMThreshold and TPOThreshold, respectively, are indicative of unreliable data. Typical values of RPMThreshold and TPOThreshold are 10% each.
Following determination of whether data[n] should be tagged as TPO, the processor proceeds to block 336 where it increments the key value by one and then returns to block 304.
Table 3, below, is an example of data that the processor has analyzed according to the method of
The SLIDING Tag
Referring now to
Blocks 406, 408, 410 and 412 are used to determine the start of a group of sliding points. At block 406, the processor first determines whether data[n] at the current key value has been tagged as NULL. If so, the processor recognizes data[n] as being unusable and proceeds to the next key value at block 424. If data[n] is not tagged as NULL, the processor checks to see whether RPM values recorded for the next two key values is zero (block 408). As sliding is characterized by not rotating the drill string 20 at the surface to drill (i.e. RPM[n] is zero) but instead drilling by using drilling fluid to hydraulically rotate the drill bit 24 using a mud motor, multiple recorded RPM values being zero is indicative of sliding. Consequently, if the RPM values for the next two key values is zero, this potentially indicates the beginning of a group of sliding points and the processor proceeds to count the number of sliding points at block 413.
Alternatively, even if the RPM values recorded for the next two key values is non-zero, the processor checks to see if the RPM value at the current key value is zero and if any of TPO, ROP and WOB at the current key value are greater than zero (blocks 410 and 412). During sliding, while RPM is zero, all of TPO, ROP and WOB are greater than zero because the pump 16 pumps drilling fluid down the drill string 20 to drive the mud motor which results in the drill bit 24 penetrating through the earth. Consequently, if the processor determines that the result of blocks 410 and 412 is yes, this also potentially indicates the beginning of a group of sliding points and the processor proceeds to block 413. Block 408 is used in conjunction with blocks 410 and 412 in the event that the data recording device 31 acquires a non-zero RPM[n] reading due to signal noise, for example, notwithstanding that sliding is in fact occurring. By considering RPM[n+1] and RPM[n+2], the processor reduces the likelihood that sliding will be missed because of a mistakenly acquired non-zero RPM[n] data point.
Blocks 413 through 422 are executed to determine whether a certain subset of data[n] should be tagged as SLIDING. The subset of data[n] begins when either of blocks 408 or 412 is satisfied, and ends when block 422 is satisfied. Specifically, the number of data[n] points in the subset that satisfy the criteria specified in blocks 416 and 418 are classified as sliding points and a count of the number of sliding points is maintained in the NumSlidingPoints variable. If, after considering the subset of data[n], both a sufficient number of sliding points have been counted and the number of sliding points constitutes a sufficient percentage of the examined subset of data[n], all the data[n] values in the subset are tagged as SLIDING.
At block 413, the variable NumSlidingPoints is reset to zero. At block 414, the key value is incremented by one and the processor then proceeds to determine whether data[n] is sufficiently large to continue to justify the tagging process (block 415) and how many of the data points in the subset of data[n] can potentially be tagged as sliding points. At blocks 416 and 418, the processor determines if TPO, ROP and WOB at the current key value are all greater than zero and if RPM at the current key value is equal to zero, which as explained above in respect of blocks 410 and 412 is indicative of sliding. If yes, the processor increments NumSlidingPoints by one (block 420); if no, NumSlidingPoints is not incremented. After the processor increments NumSlidingPoints or determines that NumSlidingPoints does not have to be incremented, it determines whether the RPM readings for the current key value and for the next two key values are all not equal to zero. If the RPM readings for the current and next two key values are zero, then this is indicative of sliding continuing and the processor returns to block 414. If the RPM readings for the current and next two key values are all non-zero, then this is indicative of the drill string 20 being rotated from the surface, and the processor consequently determines that sliding has ended and proceeds to block 426.
At block 426, the processor determines whether the number of sliding points recorded in NumSlidingPoints is greater than a pre-specified threshold, and at block 428 the processor determines whether the number of sliding points makes up at least a certain percentage of the subset of data[n] considered at blocks 414 through 422. In the present embodiment, the threshold for block 426 is four points, and the threshold for block 428 is 70%. If both of these thresholds are met, the processor tags all the points in the subset of data[n] that was considered at blocks 414 through 422 as SLIDING (block 430), increments the key value by one (block 424), and returns block 402.
Table 4, below, is an example of a portion of data[n] that has been analyzed according to the method of
The data points tagged as SLIDING in Table 4 (labelled with a “S”) are those in which RPM is zero but WOB, ROP and TPO are not.
The JUMP Tag
Referring now to
The “jump distance” is the distance between depth[n] and the first depth data point that precedes depth[n] that is not tagged as NULL (depth[K]). To determine depth[K], the processor first assigns K to be the key value immediately prior to the current key value (block 708). After confirming that K is greater than zero (block 710), the processor checks to see whether data[K] has been tagged as NULL (block 712). If so, K is decreased by one (block 714) and the processor iteratively reduces K until it finds the first value of data[K] that is not tagged as NULL. If the processor determines at block 712 that data[K] is not tagged as NULL, it executes block 716 where the jump distance is determined as the difference between depth[n] and depth[K]. The processor then increments the key value by one at block 718 and returns to block 702. The jump distance forms part of the JUMP tag.
Table 5, below, illustrates how the processor applies the JUMP tag to data[n].
In Table 5, the pre-determined depth interval is 0.2 meters. Consequently, data[n] that has a depth of 25.4 meters is tagged as a jump point, and the jump distance is determined to be 0.8 meters.
The DUPLICATE Tag
Referring now to
Blocks 604 to 614 are used to determine whether to tag data[n] as DUPLICATE. An InDuplicate flag is referred to in blocks 610, 612, and 614; when InDuplicate is true, the current key value corresponds to a key value of a point that is duplicated in data[n]. In blocks 604 and 606, the processor determines whether either of data[n] and data[k] are tagged as NULL; if so, the depths of data[n] and data[k] cannot be compared, and the processor skips blocks 608 and 610 and proceeds directly to block 614. If data[n] and data[k] are not tagged as NULL, depth[n] is compared to depth[k] to determine whether depth[n] is greater than or equal to depth[k] (block 608). As k>n, depth[k] should always be greater than depth[n] as drilling increases depth. If depth[n]>depth[k], this is indicative of a section of data points that duplicated within data[n]. Consequently, the InDuplicate flag is set to true (block 610), and the processor tags data[n] as being DUPLICATE in block 618. Subsequently, the key value is decreased by one and the processor returns to block 602.
Eventually, the key value will be decreased such that data[n] is no longer duplicated. When this occurs, depth[n] is no longer greater than or equal to depth[k], so the processor will proceed to block 612 from block 608 instead of to block 610. At block 612 the processor sets InDuplicate to false and resets k to equal n such that the processor is ready to tag the next set of duplicate points it may encounter in data[n] as it continues to decrease the key value.
Table 6, below, illustrates how the processor tags data points as DUPLICATE.
In Table 6, the depth range of 2021.4 m to 2022.6 m is repeated, and the repeated depths with the lower key value in data[n] are tagged as DUPLICATE. The depth over which duplication occurs is 1.2 meters, which is calculated at block 610 and forms part of the DUPLICATE tag.
The INVALID Tag
Referring now to
If the processor determines that any of the rate of penetration, the weight on bit, the rotations per minute, and the total pump output at the current key value are outside their respective pre-determined thresholds, then the processor tags data[n] as INVALID (block 920) prior to incrementing the key value at block 922 and returning to block 902. If all of the rate of penetration, the weight on bit, the rotations per minute, and the total pump output at the current key value are within their respective pre-determined thresholds, then the processor does not tag data[n] as INVALID, and proceeds directly to block 922 to increment the current key value prior to returning to block 902.
Table 7, below, illustrates how the processor applies the INVALID tag to data[n].
The points of data[n] tagged as INVALID (“IP”) are those for which TPO is below the pre-determined threshold.
Identifying and Correcting the Data Faults
Following tagging of data[n], the processor proceeds to identify and correct the data faults in data[n] using, for some of the data faults, the tags. In several cases in the present embodiment, tagging data in a certain way is tantamount to identifying a data fault with that data. For example, in the present embodiment tagging data[n] as NULL is tantamount to identifying data[n] as being a null point as the processor does not employ additional logic aside from checking for the existence of the NULL tag when identifying a null data point. However, for some other data faults such as duplicate points, the processor executes a significant number of instructions prior to identifying data points that have been tagged as DUPLICATE as, in fact, being duplicate points.
Correcting data faults refers to processing the data points of data[n] affected by the data faults such that after the data faults have been corrected, the data points of data[n] are better representative of the well 18 as drilled prior to correction of the data faults. For example, when dealing with null points, deletion of the null points from data[n] results in data[n] not being contaminated with unusable null data.
Truncation Points
Referring now to
Referring now to
If the processor determines that any of blocks 506, 508 and 510 are satisfied, then NumberValid is reset to zero (block 512), data[n] is marked as being a truncation point (block 514), the key value is incremented by one (block 518) and the method returns to block 502. However, if the processor determines that none of blocks 506, 508 and 510 are satisfied, then the processor determines that data[n] is not a truncation point and increments NumberValid by one at block 516 prior to incrementing the key value by one at block 518 and returning to block 502. When a sufficient series of valid data points is found as indicated by a value for NumberValid that exceeds the threshold specified in block 504, the processor moves to the last key value in data[n] at block 520, resets NumberValid to zero at block 522, and proceeds to
The method depicted in
In the present embodiment, correction of the truncation points simply involves deleting the truncation points from data[n], which removes the potentially corrupt data from data[n]. In alternative embodiments different algorithms can be used for correction; for example, the truncation points can be analyzed so as to determine whether any data contained therein is salvageable, and if so the data can be salvaged and be allowed to remain in data[n].
Problematic Points
Referring now to
Duplicate Points
As shown above in Table 6, points in data[n] that are tagged as DUPLICATE include depth values that are repeated at two different key values. In Table 4, for example, the depth values of 2021.4 m, 2021.6 m, 2021.8 m, 2022 m, 2022.2 m, 2022.4 m, and 2022.6 m are repeated at two different key values each. The first time this range of depth values appears in data[n] is hereinafter referred to as the “first leg” of duplicate values; the second time this range of depth values appears in data[n] is hereinafter referred to as the “second leg” of duplicate values. The first leg of duplicate values has lower key values than the second leg of duplicate values.
The flowcharts illustrated in
The processor begins at block 1000 and immediately proceeds to block 1002 to ensure that the current key value is less than the highest key value. If the current key value is not less than the highest key value, the processor proceeds to block 1022 and the method terminates. If the current key value is less than the highest key value, the processor determines whether data[n] is tagged as DUPLICATE. If not, then the depth value recorded at the current key value is not repeated elsewhere in data[n], so the processor immediately increments the key value (block 1020) and returns to block 1002.
If data[n] is tagged as DUPLICATE, however, then the depth value recorded at the current key value is repeated elsewhere in data[n]. At block 1006, the processor identifies the first leg of which data[n] forms a part, and the second leg that is duplicative of the first leg; the first leg is composed of the points that are tagged as DUPLICATE. At block 1008, the processor calculates a score for each leg, as described in more detail with respect to
The processor then determines whether the score of the first leg is larger than the score of the second leg by a pre-determined threshold, which in the present embodiment is 70% (block 1010) and, if so, deletes the data points associated with the first leg (block 1018). If the score of the first leg is not sufficiently large relative to the score of the second leg, the processor determines whether the score of second leg is larger than the score of the first leg by the pre-determined threshold (block 1012) and, if so, deletes the data points associated with the second leg (block 1016). If the scores of the first and second legs are close enough that neither the pre-determined thresholds of blocks 1010 and 1012 are met, the processor prompts the user to select which of the legs to delete (block 1014) and subsequently deletes the points of the chosen leg (block 1015).
Following deletion of one of the legs in blocks 1015, 1016, or 1018, the processor proceeds to the next key value at block 1020 and returns to block 1002.
Referring now to
Jump Points
The flowcharts depicted in
Table 8, below, shows the effect of the identify and correct rule as applied to the data tagged as JUMP in Table 5.
In Table 8, the processor has added three entries to data[n]. The entries in data[n] for depths 24.8 m, 25 m, and 25.2 m are identical, except in depth[n], to the parameters of data[n] measured at a depth of 24.6 m.
Table 9, below, is another sample of data[n] values that has applied to it various tags:
Table 10, below, shows the effect of the jump identify and correct rule as applied to the data tagged as JUMP in Table 9.
In Table 10, the source of the inserted parameters is from the parameters sampled at 23.6 m, which is the value of data[n] closest to the data[n] tagged as JUMP in Table 9 that is not tagged as an INVALID POINT.
Null Points
Referring now to
If so, the processor then determines whether data[n] corresponds to data recorded at the start of the drilling and, if so, deletes data[n] (blocks 1306 and 1310). This is done because data associated with the start of drilling can be inaccurate due to initialization procedures of the data recording device 31. Following deletion the key value is incremented (block 1312) and the processor returns to block 1302.
If data[n] was not recorded at the start of drilling, the processor replaces it with the previous value of data[n] that is not tagged as NULL, INVALID or SLIDING (block 1308). The processor subsequently increments the key value by one (block 1312) and returns to block 1302 to identify whether the next value of data[n] is null and to correct it if necessary.
Invalid Points
Referring now to
If so, the processor then determines whether data[n] corresponds to data recorded at the start of the drilling and, if so, deletes data[n] (blocks 1406 and 1410). This is done because data associated with the start of drilling can be inaccurate due to initialization procedures of the data recording device 31. Following deletion the key value is incremented (block 1412) and the processor returns to block 1402.
If data[n] was not recorded at the start of drilling, the processor replaces it with the previous value of data[n] that is not tagged as NULL, INVALID or SLIDING (block 1408). The processor subsequently increments the key value by one (block 1412) and returns to block 1402 to identify whether the next value of data[n] is null and to correct it if necessary.
Sliding Points
Referring now to
If so, the processor then determines whether data[n] corresponds to data recorded at the start of the drilling and, if so, deletes data[n] (blocks 1506 and 1510). This is done because data associated with the start of drilling can be inaccurate due to initialization procedures of the data recording device 31. Following deletion the key value is incremented (block 1512) and the processor returns to block 1502.
If data[n] was not recorded at the start of drilling, the processor replaces it with the previous value of data[n] that is not tagged as NULL, INVALID or SLIDING (block 1508). The processor subsequently increments the key value by one (block 1512) and returns to block 1502 to identify whether the next value of data[n] is null and to correct it if necessary.
In the present embodiment, a value of data[n] not tagged as NULL, INVALID or SLIDING is characterized as a “valid” point; i.e., a point indicative of useful data. In alternative embodiments, a “valid” point may be defined differently. For example, in an alternative embodiment that utilizes different tags or a different combination of the foregoing tags, a value of data[n] that is not tagged as NULL may constitute a “valid” point.
Smoothing Points
In the present embodiment, the data recording device 31 outputs one instance of data[n] every 0.2 meters, which is the depth interval between adjacent values in depth[n]. However, the data recording device 31 samples more frequently than once every 0.2 meters. Of the multiple samples the data recording device 31 acquires every 0.2 meters, the data recording device 31 outputs the largest of each of the parameters measured. For example, if four RPM readings are sampled during a 0.2 meter depth interval of 20 rotations per minute, 30 rotations per minute, 35 rotations per minute and 40 rotations per minute, the data recording device 31 outputs 40 rotations per minute as the RPM reading for that depth interval. Consequently, in order to have the data[n] values better approximate the well 18 as drilled, each of WOB[n], RPM[n], TPO[n], ROP[n], TD[n] and TC[n] in data[n] can be smoothed, or averaged, downwards. In the discussion that follows, each of WOB[n], RPM[n], TPO[n], ROP[n], TD[n] and TC[n] is generically referred to as X[n], and X[n] is smoothed by comparing it to X[n−1] and X[n+1] as follows.
Referring now to
For example, if X[n−1] equals 14, X[n] equals 17, and X[n+1] equals 12, the situation in
Example of Operation
In order to correct an array of data points, the processor first analyzes each of the data points across all key values of data[n] and applies tags where called for according to the methods described in
Following application of the tags, the processor can proceed to identify and correct the data faults. As mentioned above, the logic used to identify the data faults can vary in complexity. For example, to identify certain data faults the processor may simply note that applying a certain tag to data[n] is tantamount to identifying data[n] as being a data fault of a certain type. For example, in present embodiment if data[n] is tagged as NULL, SLIDING or INVALID, then data[n] is subsequently identified as a null data point, a sliding data point, or an invalid data point, respectively. However, this is not the case for other data faults. For example, when data[n] is tagged as DUPLICATE, the processor does not identify only data[n] at a single key value as being duplicate data points, but identifies the related first and second legs as being related duplicate data points, as described above in respect of
As with application of tags, in the present embodiment the order in which the identify and correct methods are applied can be important. One exemplary order in which identify and correct can be applied is as follows:
Depending on the specifics of the logic employed in alternative embodiments, the order in which one or both of tags are applied and identify and correct methods are called may be different or immaterial.
Notably, the processor does not need to apply all of the identify and correct methods as described above. For example, a user can through a graphical user interface select which of the identify and correct methods will be employed. Such a graphical user interface is displayed in
Beneficially, the use of tags allows the processor to access the data characteristics signified by the tags throughout the entirety of the identifying and correcting process. If the data were to be identified and corrected without the use of tags, some of the original data could be lost following initial correction of the data points, which could hinder subsequent data processing. For example, in the foregoing embodiments data[n] that is tagged as NULL remains tagged as NULL even after the null points are identified and corrected. The NULL tag is used even after identification and correction of the null points; for example, the NULL tag is used when determining whether a data point is one of the “valid” points during correction of the sliding points. If tagging were not used, following correction of the null points there would be no indication of what points were originally identified as being the null points, and during correction of the sliding points the processor would not be able to determine which of the data points are the “valid” points.
For the sake of convenience, the embodiments above are described as various interconnected functional blocks or distinct software modules. This is not necessary, however, and there may be cases where these functional blocks or modules are equivalently aggregated into a single logic device, program or operation with unclear boundaries. In any event, the functional blocks and software modules or features of the flexible interface can be implemented by themselves, or in combination with other operations in either hardware or software.
While particular embodiments have been described in the foregoing, it is to be understood that other embodiments are possible and are intended to be included herein. It will be clear to any person skilled in the art that modifications of and adjustments to the foregoing embodiments, not shown, are possible.
Pursuant to 35 U.S.C. §119(e), this application claims the benefit of provisional U.S. Patent Application No. 61/298,881 filed Jan. 27, 2010 and entitled “Method and Apparatus for Correcting Data Points Acquired During Well Drilling,” which is hereby incorporated by reference in its entirety.
Number | Name | Date | Kind |
---|---|---|---|
6014343 | Graf et al. | Jan 2000 | A |
6272434 | Wisler et al. | Aug 2001 | B1 |
6408953 | Goldman et al. | Jun 2002 | B1 |
7184991 | Wentland et al. | Feb 2007 | B1 |
7424365 | Hassan et al. | Sep 2008 | B2 |
7756694 | Graf et al. | Jul 2010 | B2 |
8145444 | Bickford et al. | Mar 2012 | B1 |
Number | Date | Country | |
---|---|---|---|
20110185246 A1 | Jul 2011 | US |
Number | Date | Country | |
---|---|---|---|
61298881 | Jan 2010 | US |