Understanding the structure and properties of geological formations is important for a wide variety of applications in well and reservoir management, monitoring, and remediation. Measurement devices can make measurements in a borehole or formation (i.e., down hole measurements) to provide sonic logging data and borehole seismic data to aid in attaining this understanding. Ongoing efforts are directed to providing more efficient and accurate sonic logging.
To address some of the challenges described above, as well as others, apparatus, systems, and methods are described herein to use differential evolution to estimate anisotropic parameters of geological formations.
The disclosed systems and methods are best understood when described in an illustrative usage context. Accordingly,
Surveyors trigger a seismic energy source 108 (e.g., a vibrator truck) at one or more positions to emit seismic energy waves that propagate through a subsurface formation 110. Such waves refract through and reflect from acoustic impedance discontinuities to reach the receivers 102, which digitize and record the received seismic signals. The receivers 102 concurrently or in turn communicate their respective seismic signal data to the data acquisition unit 106, which stores the collected seismic signal data for later analysis to identify. Illustrative discontinuities include faults, boundaries between formation beds, and boundaries between formation fluids. The discontinuities may appear as bright spots in the subsurface structure representation that is derived from the seismic signal data.
The illustrative subsurface model of
The survey configuration illustrated in
Operators can use the methods and apparatuses described herein to estimate average interval anisotropic parameters if the subsurface is assumed to be transversely isotropic with a vertical symmetry axis (e.g., a VTI formation as described earlier herein) or when the symmetry axis is tilted with respect to the vertical (e.g., a TTI formation). Using such estimates, operators can then generate subsurface images based on VSP data. Some available systems can generate a walkaway VSP image using a velocity model obtained from analysis of other forms of data such as surface seismic and nearby well logs. However, methods in accordance with various embodiments, which build local velocity models, may generate or allow for generation of improved or enhanced VSP images.
In available systems, and in systems according to embodiments, seismic receivers collect seismic survey data, including direct and reflected arrival data corresponding to shots from at least one source 108 at different offsets. In at least some embodiments, an inversion is performed using the collected direct and reflected arrival data simultaneously to determine anisotropy parameters, including Thomsen parameters epsilon (ε) and delta (δ), and Vp0, for layers of a model having VTI layers and TTI layers. Vp0- is the velocity of the P-wave along the symmetry axis, and ε and δ are also measured along the symmetry axis.
An anisotropic ray tracing (ART) algorithm can generate data similar to that illustrated in
The workflow 300 begins at operation 302, with the processor 1020 (
The workflow 300 continues with operation 304 when the processor 1020 prepares a table or set of tables relating source to receiver travel times. For example, a table in accordance with some embodiments can include a travel time between a number of receivers 102 and a number of seismic sources 108 (
Referring again to
In some embodiments, the processor 1020 can estimate the initial values by using estimations of various model parameters from other sources of data such as, for example, surface seismic pre-stack gathers and nearby well data. These and other available estimations of model parameters may not provide sufficient accuracy for many operator use cases. Accordingly, embodiments described herein apply VSP-based anisotropic parameter extraction using available estimations and further calculations according to methods described herein.
In operation 308, the processor 1020 prepares an overburden file of layer properties that are not being inverted for. By executing operation 308, the processor 1020 can remove overburden layers from the analysis to simplify calculations to improve computation speed of further operations in accordance with various embodiments.
In operation 310, the processor 1020 runs forward modeling to determine whether some source-receiver combinations should be discarded, and to store an initial choice of ray parameters.
In operation 312, the processor 1020 defines upper and lower limits as model parameter search boundaries to provide a range of values for some or all of the model parameters. The upper and lower limits may be probabilistic in nature, and based on previously generated seismic data. Example model parameter search boundaries are shown in
In operation 314, the processor 1020 specifies inversion algorithm parameters. In embodiments, the inversion algorithm includes a global optimization algorithm. In embodiments, the inversion algorithm includes DE although embodiments are not limited thereto. The processor 1020 implements the DE algorithm (or another perturbation algorithm, genetic algorithm, or inversion algorithm) to minimize or reduce the mismatch between observed P-wave first arrival travel times and travel times that were calculated through the layered model using ART. Errors can also be introduced in observed travel times by shifts in geophone positions, or in errors due to manual processes in selecting travel times from recordings at the surface. By minimizing this difference between observed and synthetic data (using, for example, an error function or objective function), various embodiments can generate more realistic (e.g., true) layered media parameters. In embodiments, the processor 1020 can generating a revised layer model based on the minimized mismatch and the true layered media parameters.
Global optimization methods are used in various embodiments because, in the inversion of noisy data, the topography of the error function being minimized can be complicated enough for local inversion schemes to fail in reaching the global optimum. Parameters for DE can include number of generations (e.g., the number of child populations that should be generated from a parent population), crossover probability, and DE step size, although embodiments are not limited thereto. DE can provide more accurate results than available genetic algorithms at least because DE shows improved convergence properties relative to available genetic algorithms. Further, DE can be less computationally expensive than available genetic algorithms because fewer parameters are used in DE, and furthermore computational speed can be increased because DE is more easily parallelizable than other genetic algorithms.
The DE algorithm 500 begins at operation 502 with the processor 1020 retrieving 2D layer model interfaces and available data related to the 2D layer model. The 2D layer model can be the same or similar as the 2D layer model generated in operation 302 (
Referring back to
The DE algorithm 500 continues with operation 506 when, for a generation G, the processor 1020 finds the solution or solutions that will be accepted and passed to the next generation. In embodiments, the processor 1020 will search for solutions with search boundaries defined for each model parameter. The definition of the search boundaries is guided by the initial guess solution obtained as described earlier.
In embodiments, the processor 1020 may impose smoothness constraints by applying a smoothing algorithm. An example smoothing algorithm can include adding a penalty term to objective function values for which a corresponding model parameter value has met or exceeded a boundary value. In some example embodiments, the penalty term will be added when two or more model parameter values have come within a threshold distance of the corresponding search boundary. As a further example, in some embodiments, the processor 1020 may add a penalty term to the objective value for a solution that produces synthetics that show a DC shift with respect to the observed field data for any receiver used in the inversion process. A DC shift in this context refers to a systematic shift in signal (travel time data) level compared to a base level, which may be defined by the level of field travel time data/signal. This latter penalty term may discourage or disfavor solutions that exhibit a good overall match with field data when all receivers are accounted for together while having mismatches when each receiver is judged separately.
In some embodiments, and as understood to be the case in general for geophysical problems, an initial guess solution may be available. Accordingly, in embodiments, the processor 1020 generates an initial guess for values for anisotropic parameters, based on available VSP data generated from other sources like surface seismic measurements and near-by wells. The processor 1020 can use an initial guess solution to generate an initial population for the DE 500 by adding random numbers to the initial guess, wherein the processor 1020 generates these random numbers based on different kinds of probability distributions. While the DE algorithm 500 can determine the globally optimal solution independent of the initial population choice, it will be appreciated that a good choice of the initial population leads to faster convergence, and therefore a faster and less computationally expensive result.
Referring back to
The processor 1020 generates NP mutant solutions, by selecting three distinct population members with indices (r1, r2, r3) for each i in (1 . . . NP), and where indices (r1, r2, r3) are different from i. Using the three randomly drawn solutions (xr1, xr2, xr3) and a DE step size F (from operation 314 (
V
i
=x
r1
+F(xr2−xr3) (1)
In embodiments, the value for F will be between 0 and 2, and the processor 1020 can vary F for any or all of the solutions vi and within generations. Equation (1) is repeated NP times, to generate a mutant population of size NP.
In some embodiments, the processor 1020 can randomly perturb F according to a jitter scheme in which F is randomly perturbed for a model parameter in a mutant solution calculation in one or more of the generations. By using a jitter scheme, the processor 1020 can converge to the global optimum with smaller population sizes, which can reduce computational expense in case of inversion utilizing compute intensive forward problems such as ART.
The processor 1020 can use equation (2) to implement jitter, although embodiments are not limited to any particular scheme or jitter equation:
v
i,j
=x
best(i,j)+(Fnewi,j)(xr2,j−xr3,j) (2)
where xbest is the best population member of the already generated population from the previous operations, wherein i is the layer number and j is the index of the parameter for layer i, and wherein Fnew is defined according to:
Fnew
i,j
=F+0.0001* rand (3)
where rand is a random number.
Referring back to
u
ij
=v
ij, if randj≦CR else uij=xij (4)
where randjis a random number, which may have a uniform distribution between 0 and 1, generated for each model parameter in the solution, and wherein i is the layer number in the model and j is the index of the model parameter for layer l of the model.
In operation 512, subsequent to generating trial solutions u, the processor 1020 will generate a child population for the next generation. To generate the child population, the processor 1020 compares the trial population and the parent population based on their corresponding objective values. The objective values are related to the error between field data and synthetic data, which were described earlier herein, generated using a given model. In some embodiments, model parameters can be used to add penalty values to ensure smoothness of solutions. For each solution in the child population, the better solution between the solutions being compared is chosen and this process continues until all slots of the child population are filled.
The processor 1020 generates each subsequent child population by selecting population members, based on objective function values, from a sequentially previous child population (or, e.g., the initial parent population if the child population being generated is the first child population) and a trial population. In some embodiments, to speed the computation time, objective functions can be evaluated in parallel, because such evaluation is independent for each solution and therefore the computation is embarrassingly parallel. While other computations, for example computations related to Equations (1) and (4) may be performed in parallel, these other computations may not affect the computation speed to the extent that objective function evaluation or ART parallelization might.
Referring again to
Criteria are not limited to these criteria, however, and some embodiments can use other termination criteria.
Accordingly, the DE 500 of
In operation 318, the processor 1020 picks the best solutions based on stored error predictions and calculates mean and standard deviation of inverted model parameters. In embodiments, the processor 1020 may present one or several solutions to a display and receive an input selection of one of the solutions. In embodiments, the processor 1020 may store all population members, generations, and objective function values, and present these for display, e.g., by plotting, such that the display shows clusters of values for model parameters. Solutions can be selected based on objective value tables, or a solution can be generated based on a mean or standard deviation among some or all of the population members, by way of nonlimiting example.
Algorithms in accordance with various embodiments may be executed in a windowed fashion such that a portion of the model is inverted at a time while keeping a fixed overburden. Two or more layers of the model may be solved together to reduce computation complexity, and to allow the processor 1020 to learn of any issues in solving the model before moving on to further layers of the model.
While some available systems may invert for a single layer each time using a layer stripping approach, the inventors have discovered that inverting for a few layers together reduces the uncertainty in anisotropic parameter estimation. Additionally, inverting for a few layers together can increase the chance that the processor 1020 will obtain a global solution, because values of anisotropic parameters that may seem reasonable for a single layer may have deleterious effects on the travel time modeling of layers underneath that single layer. For example, solutions that might seem correct under a single-layer approach as used in available systems will be rejected when the processor 1020 implements methods according to various embodiments if those solutions create larger errors with receivers in other layers.
Example method 900 begins with operation 902 with the processor 1020 generating a parent population 702 (
Example method 900 continues with operation 904 with the processor 1020 executing a perturbation algorithm to generate subsequent child populations 808 (
Child populations can be generated as described earlier herein with reference to
Example method 900 continues with operation 908 with the processor 1020 providing a plurality of solutions, based on at least one member of the parent population 702 and on at least one member of each child population 808, for display.
Example method 900 continues with operation 910 with the processor 1020 controlling a drilling operation based on a revised layer model that has been generated based on a selected solution of the plurality of solutions. The selected solution can be generated by the processor 1020 in a manner similar to that described above with respect to operation 318 (
The system includes a processor 1020. The system 1000 can additionally include a controller 1025 and a memory 1035. The measurement tools 1060 can include downhole measurement tools, logging tools, etc. The memory 1035 can store measurement data, P-wave first arrival times, objective function values and solutions for an initial parent population, child populations, trial populations, mutant populations, or any other data related to anisotropic parameters and other parameters as described earlier herein. The processor 1020 can access the measurement data to perform any of the operations described herein.
The communications unit 1040 can provide surface communications with wellheads, geophones, measurement tools, etc., in measurement and control operations. Such surface communications can include wired and wireless systems. Additionally, the communications unit 1040 can provide downhole communications in a measurement operation, although such downhole communications can also be provided by any other system located at or near measurement coordinates of a surface of the Earth where measurement will take place. Such downhole communications can include a telemetry system.
The system 1000 can also include a bus 1027, where the bus 1027 provides electrical conductivity among the components of the system 1000. The bus 1027 can include an address bus, a data bus, and a control bus, each independently configured. The bus 1027 can also use common conductive lines for providing one or more of address, data, or control, and the controller 1025 can regulate usage of these lines. The bus 1027 can include instrumentality for a communication network. The bus 1027 can be configured such that the components of the system 1000 are distributed. Such distribution can be arranged between surface components, downhole components and components that can be disposed on the surface of a well. Alternatively, various ones of these components can be co-located, such as on one or more collars of a drill string or on a wireline structure.
In various embodiments, the system 1000 comprises peripheral devices 1045 that can include displays, user input devices, additional storage memory, and control devices that may operate in conjunction with the controller 1025 or the memory 1035. For example, the peripheral devices 1045 can include a user input device to receive user input responsive to providing a plurality of solutions as described earlier herein, and GUI screens for displaying, for example, plots of the plurality of solutions, layer models, etc.
In an embodiment, the controller 1025 can be realized as one or more processors. The peripheral devices 1045 can be programmed to operate in conjunction with display unit(s) 1055 with instructions stored in the memory 1035 to implement a GUI to manage the operation of components distributed within the system 1000. A GUI can operate in conjunction with the communications unit 1040 and the bus 1027.
In various embodiments, a non-transitory machine-readable storage device can comprise instructions stored thereon, which, when performed by a machine, cause the machine to perform operations, the operations comprising one or more features similar to or identical to features of methods and techniques described herein. A machine-readable storage device, herein, is a physical device that stores data represented by physical structure within the device. Examples of machine-readable storage devices can include, but are not limited to, memory 1035 in the form of read only memory (ROM), random access memory (RAM), a magnetic disk storage device, an optical storage device, a flash memory, and other electronic, magnetic, or optical memory devices, including combinations thereof.
One or more processors such as, for example, the processor 1020, can operate on the physical structure of such instructions. Executing these instructions determined by the physical structures can cause the machine to perform operations to generate a parent population, wherein each member of the parent population includes a set of model parameters describing a layer model of the geological formation; to execute a perturbation algorithm to generate subsequent child populations, from the parent population, until a termination criterion is met; to provide a plurality of solutions based on at least one member of the parent population and on at least one member of each child population; and to control a drilling operation based on a revised layer model that has been generated based on a selected solution of the plurality of solutions.
The instructions can include instructions to cause the processor 1020 to perform any of, or a portion of, the above-described operations in parallel with performance of any other portion of the above-described operations. The processor 1020 can store, in memory 1035, any or all of the data received from the measurement tools 1060.
As described earlier herein, receivers 102 and other seismic equipment can be used in a logging-while-drilling (LWD) assembly or a wireline logging tool.
Drilling oil and gas wells is commonly carried out using a string of drill pipes connected together so as to form a drilling string that is lowered through a rotary table 1110 into a wellbore or borehole 103. Here it is assumed that the drilling string has been temporarily removed from the borehole 103 to allow a wireline logging tool body 1170, such as a probe or sonde, to be lowered by wireline or logging cable 1114 into the borehole 103. Typically, the wireline logging tool body 1170 is lowered to the bottom of the region of interest and subsequently pulled upward at a substantially constant speed.
During the upward trip, at a series of depths the instruments (e.g., the receivers 102) included in the tool body 1170 may be used to perform measurements on the subsurface geological formations adjacent the borehole 103 (and the tool body 1170). The measurement data can be communicated to a data acquisition unit 106. The data acquisition unit 106 may be provided with electronic equipment for various types of signal processing. Similar formation evaluation data may be gathered and analyzed during drilling operations (e.g., during LWD operations, and by extension, sampling while drilling).
In some embodiments, the tool body 1170 comprises receivers 102 for detecting seismic sources, generated as described earlier herein with respect to
Turning now to
The bottom hole assembly 1220 may include drill collars 1222, a downhole tool 1224, and a drill bit 1226. The drill bit 1226 may operate to create the borehole 103 by penetrating the surface 105 and the subsurface formations 110. The downhole tool 1224 may comprise any of a number of different types of tools including MWD tools, LWD tools, and others.
During drilling operations, the drill string 1208 (perhaps including the Kelly 1216, the drill pipe 1218, and the bottom hole assembly 1220) may be rotated by the rotary table 1210. Although not shown, in addition to, or alternatively, the bottom hole assembly 1220 may also be rotated by a motor (e.g., a mud motor) that is located downhole. The drill collars 1222 may be used to add weight to the drill bit 1226. The drill collars 1222 may also operate to stiffen the bottom hole assembly 1220, allowing the bottom hole assembly 1220 to transfer the added weight to the drill bit 1226, and in turn, to assist the drill bit 1226 in penetrating the surface 105 and subsurface formations 110.
Thus, it may be seen that in some embodiments, the systems 1100, 1200 may include a drill collar 1222, a downhole tool 1224, and/or a wireline logging tool body 1170 to house one or more receivers 102, similar to or identical to the receivers 102 described above and illustrated in
Thus, for the purposes of this document, the term housing may include any one or more of a drill collar 1222, a downhole tool 1224, or a wireline logging tool body 1170 (all having an outer wall, to enclose or attach to magnetometers, sensors, fluid sampling devices, pressure measurement devices, transmitters, receivers, acquisition and processing logic, and data acquisition systems). The tool 1224 may comprise a downhole tool, such as an LWD tool or MWD tool. The wireline tool body 1170 may comprise a wireline logging tool, including a probe or sonde, for example, coupled to a logging cable 1114. Many embodiments may thus be realized.
Thus, a system 1100, 1200 may comprise a downhole tool body, such as a wireline logging tool body 1170 or a downhole tool 1224 (e.g., an LWD or MWD tool body), and one or more receivers 102 attached to the tool body, the receivers 102 to be operated as described previously.
Any of the above components, for example the receivers 102, processors 1020, etc., may all be characterized as modules herein. Such modules may include hardware circuitry, and/or a processor and/or memory circuits, software program modules and objects, and/or firmware, and combinations thereof, as desired by the architect of the systems 1000, 1100, 1200 and as appropriate for particular implementations of various embodiments. For example, in some embodiments, such modules may be included in an apparatus and/or system operation simulation package, such as a software electrical signal simulation package, a power usage and distribution simulation package, a power/heat dissipation simulation package, and/or a combination of software and hardware used to simulate the operation of various potential embodiments.
It should also be understood that the apparatus and systems of various embodiments can be used in applications other than for logging operations, and thus, various embodiments are not to be so limited. The illustrations of systems 1000, 1100, 1200 are intended to provide a general understanding of the structure of various embodiments, and they are not intended to serve as a complete description of all the elements and features of apparatus and systems that might make use of the structures described herein.
The above-described embodiments use global optimization schemes that allow oil and gas producers to increase and enhance oil and gas production by robustly and accurately estimating transversely isotropic media parameters from direct P-wave arrivals when geophones and sources are in a walkaway VSP configuration. For example, the systems 1000, 1100, and 1200 can generate profiles for anisotropic parameters such as those shown in
Similarly,
Further examples of apparatuses, methods, a means for performing acts, systems or devices include, but are not limited to:
Example 1 is a method comprising operations wherein any of the apparatuses, devices, systems, or portions thereof can include means for performing the method of Example 1, and wherein the method of Example 1 comprises generating a parent population, wherein each member of the parent population includes a set of model parameters describing a layer model of the geological formation; executing a perturbation algorithm to generate subsequent child populations, from the parent population, until a termination criterion is met; providing a plurality of solutions based on at least one member of the parent population and on at least one member of each child population; and controlling a drilling operation based on a revised layer model that has been generated based on a selected one of the plurality of solutions.
Example 2 includes the subject matter of Example 1, wherein the perturbation algorithm optionally includes a differential evolution (DE) algorithm.
Example 3 includes the subject matter of any of Examples 1-2, wherein the set of model parameters optionally includes a propagation velocity Vp0 , of acoustic waves along a symmetry axis within each respective layer of the geological formation, and anisotropic parameters along the symmetry axis of each respective layer of the geological formation and wherein each solution in each of the parent population and child populations includes of values for the model parameters for each layer of the layer model.
Example 4 includes the subject matter of any of Examples 1-3, and optionally further comprising providing a step size for generating a DE mutant solution for each child population member generated by the DE algorithm; and perturbing the step size for each model parameter in each mutant solution calculation in each subsequent child population.
Example 5 includes the subject matter of Example 4, wherein each subsequent child population is optionally generated by selecting population members, based on objective function values, from a sequentially previous child population and a mutant population, and wherein the termination criterion includes at least one of a value for the number of child populations that have been generated and a threshold value corresponding to the objective function.
Example 6 includes the subject matter of Example 4, and further optionally comprising generating trial solutions from the mutant population and based on a crossover rate.
Example 7 includes the subject matter of any of Examples 5-6, and further optionally comprising applying a smoothing algorithm by adding a penalty term to objective function values for which a corresponding model parameter value has met or exceeded a boundary value.
Example 8 includes the subject matter of Example 5, and further optionally comprising generating objective function values for each subsequent child population; and providing a display of objective function values, the parent population, and at least one child population.
Example 9 includes the subject matter of any one of Examples 1-8, and further optionally comprising accessing search boundaries that limit values for the set of model parameters; and providing the search boundaries as inputs to the DE algorithm.
Example 10 includes the subject matter of Example 9, wherein the search boundaries are optionally based on surface seismic measurements of the set of model parameters.
Example 11 includes the subject matter of any of Examples 1-10, and further optionally comprising generating an initial layer model based on surface seismic measurements; and generating a revised layer model by minimizing a mismatch between observed P-wave first arrival travel times and calculated P-wave travel times that have been calculated using an anisotropic ray tracing (ART) algorithm.
Example 12 is a system, which can include means of performing any of Examples 1-11 comprising a seismic source for emitting a seismic wave into a geological formation; a seismic receiver configured to detect the seismic wave and to generate a seismic signal; and a processor to receive seismic signals generated by the seismic receiver and to generate a parent population, wherein each member of the parent population includes a set of model parameters describing a layer model of the geological formation; execute a perturbation algorithm to generate subsequent child populations, from the parent population, until a termination criterion is met; provide a plurality of solutions based on at least one member of the parent population and on at least one member of each child population; and control a drilling operation based on a revised layer model that has been generated based on a selected solution of the plurality of solutions.
Example 13 includes the subject matter of Example 12, and optionally further comprising memory to store data representative of a seismic survey collected over the geological formation; and data representative of the layer model.
Example 14 includes the subject matter of any of Examples 12-13, and further optionally comprising a telemetry transmitter to provide data representative of the seismic wave to the processor.
Example 15 includes the subject matter of any of Examples 12-14, and further optionally comprising a display to display the plurality of solutions.
Example 16 includes computer-readable medium including instructions that, when executed on a machine, cause the machine to perform any of the functions of Examples 1-15, including generating a parent population, wherein each member of the parent population includes a set of model parameters describing a layer model of the geological formation; executing a perturbation algorithm to generate subsequent child populations, from the parent population, until a termination criterion is met; providing a plurality of solutions based on at least one member of the parent population and on at least one member of each child population; and controlling a drilling operation based on a revised layer model that has been generated based on a selected solution of the plurality of solutions.
Example 17 includes the subject matter of Example 16, wherein the perturbation algorithm optionally includes a DE algorithm.
Example 18 includes the subject matter of any of Examples 16-17, wherein the model parameters optionally include a propagation velocity Vp0 of acoustic waves along a symmetry axis within each respective layer of the geological formation, and anisotropic parameters along the symmetry axis of each respective layer of the geological formation and wherein each solution in each of the parent population and child populations optionally includes a set of values for the model parameters for each layer of the layer model.
Example 19 includes the subject matter of any of Examples 17-18, and optionally further including providing a step size for generating a DE mutant solution for each child population member generated by the DE algorithm; and perturbing the step size for each model parameter in each mutant solution calculation in each subsequent child population.
Example 20 includes the subject matter of Example 19 and further optionally comprising generating each subsequent child population by selecting population members, based on objective function values, from a sequentially previous child population and a trial population, and wherein the termination criterion includes at least one of a value for the number of child populations that have been generated and a threshold value corresponding to the objective function.
Upon reading and comprehending the content of this disclosure, one of ordinary skill in the art will understand the manner in which a software program can be launched from a computer-readable medium in a computer-based system to execute the functions defined in the software program, to perform the methods described herein. One of ordinary skill in the art will further understand the various programming languages that may be employed to create one or more software programs designed to implement and perform the methods disclosed herein. For example, the programs may be structured in an object-orientated format using an object-oriented language such as Java or C#. In another example, the programs can be structured in a procedure-orientated format using a procedural language, such as assembly or C. The software components may communicate using any of a number of mechanisms well known to those of ordinary skill in the art, such as application program interfaces or interprocess communication techniques, including remote procedure calls. The teachings of various embodiments are not limited to any particular programming language or environment. Thus, other embodiments may be realized. Furthermore, software components can communicate with databases, for example relational databases, using SQL stored procedures, etc.
Although specific embodiments have been illustrated and described herein, it will be appreciated by those of ordinary skill in the art that any arrangement that is calculated to achieve the same purpose may be substituted for the specific embodiments shown. Various embodiments use permutations or combinations of embodiments described herein. It is to be understood that the above description is intended to be illustrative, and not restrictive, and that the phraseology or terminology employed herein is for the purpose of description. Combinations of the above embodiments and other embodiments will be apparent to those of ordinary skill in the art upon studying the above description.
Filing Document | Filing Date | Country | Kind |
---|---|---|---|
PCT/US2015/028884 | 5/1/2015 | WO | 00 |