WO2010039326A1 - Self-adapting iterative solver - Google Patents

Self-adapting iterative solver Download PDF

Info

Publication number
WO2010039326A1
WO2010039326A1 PCT/US2009/051029 US2009051029W WO2010039326A1 WO 2010039326 A1 WO2010039326 A1 WO 2010039326A1 US 2009051029 W US2009051029 W US 2009051029W WO 2010039326 A1 WO2010039326 A1 WO 2010039326A1
Authority
WO
WIPO (PCT)
Prior art keywords
preconditioner
self
singularities
singularity
solver
Prior art date
Application number
PCT/US2009/051029
Other languages
French (fr)
Other versions
WO2010039326A8 (en
Inventor
Llya Mishev
Sergey Nepomnyashchikh
Alexander Matsokin
Original Assignee
Exxonmobil Upstream Research Company
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Exxonmobil Upstream Research Company filed Critical Exxonmobil Upstream Research Company
Priority to EP09818158.9A priority Critical patent/EP2350810A4/en
Priority to BRPI0919456A priority patent/BRPI0919456A2/en
Priority to CA2730446A priority patent/CA2730446A1/en
Priority to CN2009801385278A priority patent/CN102165413A/en
Publication of WO2010039326A1 publication Critical patent/WO2010039326A1/en
Publication of WO2010039326A8 publication Critical patent/WO2010039326A8/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/11Complex mathematical operations for solving equations, e.g. nonlinear equations, general mathematical optimization problems
    • G06F17/12Simultaneous equations, e.g. systems of linear equations

Definitions

  • the following description relates generally to iterative solvers for solving linear systems of equations, and more particularly to a self-adapting iterative solver that is operable to adapt its performance in the presence of a singularity.
  • Linear systems of equations are commonly encountered (and need to be solved) for various computer-based three-dimensional ("3D") simulations or modeling of a given real-world system.
  • 3D modeling may employed for modeling such real-world systems as mechanical and/or electrical systems (such as may be employed in automobiles, airplanes, ships, submarines, space ships, etc.), human body (e.g., modeling of all or portions of a human's body, such as the vital organs, etc.), weather patterns, subsurface hydrocarbon bearing reservoirs (e.g., gas or oil fields), and various other real-world systems to be modeled.
  • potential future performance of the modeled system can be analyzed and/or predicted. For instance, the impact that certain changed conditions presented to the modeled system has on the system's future performance may be evaluated through interaction with and analysis of the computer-based model.
  • modeling of fluid flow in porous media is a major focus in the oil industry.
  • Different computer-based models are used in different areas in the oil industry, but most of them include describing the model with a system of partial differential equations
  • PDE 's In general, such modeling commonly requires discretizing the PDE 's in space and time on a given grid, and performing computation for each time step until reaching the prescribed time. At each time step, the discrete equations are solved. Usually the discrete equations are nonlinear and the solution process is iterative. Each step of the nonlinear iterative method typically includes linearization of the nonlinear system of equations (e.g., Jacobian construction), solving the linear system, and property calculations, that are used to compute the next Jacobian.
  • Jacobian construction the nonlinear system of equations
  • FIGURE 1 shows a general work flow typically employed for computer-based simulation (or modeling) of fluid flow in a subsurface hydrocarbon bearing reservoir over time.
  • the inner loop 101 is the iterative method to solve the nonlinear system. Again, each pass through inner loop 101 typically includes linearization of the nonlinear system of equations (e.g., Jacobian construction) 11, solving the linear system 12, and property calculations 13, that are used to compute the next Jacobian (when looping back to block 11).
  • the outer loop 102 is the time step loop.
  • loop boundary conditions may be defined in block 10, and then after performance of the inner loop 101 for the time step results computed for the time step may be output in block 14 (e.g., the results may be stored to a data storage media and/or provided to a software application for generating a display representing the fluid flow in the subsurface hydrocarbon bearing reservoir being modeled for the corresponding time step).
  • computer- based 3D modeling of real-world systems other than modeling of fluid flow in a subsurface hydrocarbon bearing reservoir may be performed in a similar manner, i.e., may employ an iterative method for solving linear systems of equations (as in block 12 of FIGURE 1).
  • MultiGrid A first well-known example of an optimal preconditioner is MultiGrid, which reduces the error by working on different components of the error on different grids.
  • a second well-known example of an optimal preconditioner is Domain Decomposition.
  • Domain Decomposition algorithms compose the solution by solving the same or similar problem in parts of the original domain.
  • Non-overlapping Domain Decomposition methods solve similar problems in each part of the domain, called sub- domains, Q 1 and ⁇ 2 in the example of FIGURE 2, and a different problem on the common interface ⁇ .
  • Overlapping Domain Decomposition methods solve problems on extended domains that are formed from the original domain and overlapping strips as shown in FIGURE 3.
  • the solution of the global problem is composed by the solutions of the sub- domain problems.
  • Domain Decomposition algorithms can be applied in an additive or multiplicative way.
  • the additive Domain Decomposition algorithms compute their parts of the solution simultaneously.
  • Each step in the multiplicative methods includes several sub-steps. At the first sub-step, one group of sub-domains calculates the solution first. At the next sub-step, the next group of sub-domains uses the results of the first group to compute their solution, and so on.
  • Such optimal preconditioners as MultiGrid and Domain Decomposition are known to be optimal if the model size grows. For instance, suppose a model starts with 100,000 cells, but at some later time a bigger model having a million cells is used, and then at some later time a model having an even higher dimension of 10 million cells is used.
  • an optimal preconditioner such as MultiGrid or Domain Decomposition
  • Other preconditioners are known that require more iterations to converge as the model size increases, but the optimal preconditioners will generally converge in a fixed number of iterations irrespective of whether the size of the model increases.
  • a singularity refers to any feature in the linear system or the physical model that degrades the convergence of the iterative method (e.g., preconditioner) being used by the solver. For instance, the presence of a singularity may result in an optimal preconditioner failing to converge in an expected number of iterations.
  • optimal preconditioners will generally converge in a fixed number of iterations irrespective of whether the size of the model increases. However, if a singularity is encountered in the model, then conventional optimal preconditioners, such as MultiGrid and Domain Decomposition, will fail to converge in the fixed number of iterations for the model.
  • certain geologic features such as faults, fractures or pinch-outs, may also cause problems for the preconditioned iterative methods. That is, certain geologic features may also give rise to a singularity which deteriorates the convergence of the preconditioned method.
  • One reason that certain geologic features may cause problems is that the fluid flow in such geologic features can be very different from the flow in the surrounding porous media.
  • preconditioners using Incomplete LU factorization are not affected by the presence of wells, faults or fractures, but are also not efficient for very large linear systems.
  • techniques have been proposed for eliminating singularities in certain optimal preconditioners, such as in Domain Decomposition and MultiGrid. For instance, some Domain Decomposition methods have been attempted to eliminate the singularities, but the convergence was dependent on the overlap and deteriorated, see H. Cao, H.A. Tchelepi, J. Wallis, and H. Yardumian, "Parallel Scalable Unstructured CPR-Type Linear Solver for Reservoir Simulation", SPE Annual Conference and Exhibition, Oct.
  • the solver is pre-configured to eliminate a pre-identified singularity.
  • users e.g., engineers, analysts, etc.
  • the solver itself is not utilized for identifying singularities, nor is the solver involved in determining whether to eliminate the pre-identified singularity. Instead, all such identifications of singularities and determinations regarding how to pre-configure the solver to eliminate the identified singularities are made external to the solver (e.g., by engineers, analysts, or other users).
  • the present invention is directed to a system and method which employ a self-adapting iterative solver. That is, an iterative solver is provided that employs a self-adapting process for extracting singularities for solving linear systems of equations. Thus, according to certain embodiments, a self-adapting iterative solver is provided, which is operable to determine how to adapt its performance in the presence of one or more singularities.
  • a self-adapting iterative solver for solving linear systems of equations, such as commonly used for computer-based 3D modeling.
  • the self-adapting iterative solver can identify possible singularities, and then analyzes its performance for adapting to a treatment of the possible singularities that provides a desired performance (i.e., for achieving convergence to a solution).
  • the iterative solver adapts its treatment of singularities based on its computing performance.
  • an embodiment of the self-adapting iterative solver may attempt a first treatment of singularities (e.g., employing a first preconditioner for extracting certain singularities), and based on analysis of its computing performance (e.g., the number of iterations being required for convergence, and/or the computational cost of each iteration, etc.), the self-adapting iterative solver may adapt its treatment of singularities (e.g., by employing a different preconditioner for extracting singularities) to arrive at a technique for solving the linear system of equations in a manner that provides a desired performance.
  • a first treatment of singularities e.g., employing a first preconditioner for extracting certain singularities
  • analysis of its computing performance e.g., the number of iterations being required for convergence, and/or the computational cost of each iteration, etc.
  • the self-adapting iterative solver may, in certain embodiments, extract fewer singularities than all of the pre-identified singularities and/or may identify additional singularities to extract. For instance, the self-adapting iterative solver may deduce that certain special effects or features present in the real-world system being modeled that were initially thought as possibly giving rise to a singularity do not actually result in a singularity that should be extracted for improved performance. As another example, during the course of its processing, the self-adapting iterative solver may detect further singularities (that were not pre-identified as possible singularities), which should be extracted to improve performance of the solver.
  • the self-adapting iterative solver adapts the preconditioner(s) used in the iterative solving process in order to treat singularities in a manner that provides a desired performance level. For instance, in certain embodiments, the self-adapting iterative solver constructs a preconditioner to extract certain singularities, and over the course of its processing the self-adapting iterative solver may modify/adapt its constructed preconditioner (e.g., to extract additional singularities that may be discovered and/or to not extract certain pre-identified possible singularities) for solving the linear system of equations.
  • the self-adapting iterative solver constructs a preconditioner to extract certain singularities, and over the course of its processing the self-adapting iterative solver may modify/adapt its constructed preconditioner (e.g., to extract additional singularities that may be discovered and/or to not extract certain pre-identified possible singularities) for solving the linear system of equations.
  • the self-adapting iterative solver is an optimal solver that adapts its performance to treat singularities in a manner that maintains a number of iterations as would be encountered if the singularities were not present in the model.
  • the self-adapting iterative solver may choose to adapt its performance in a manner that results in an increase in the number of iterations above the number of iterations that would be encountered if the singularities were not present in the model.
  • a self-adaptation for increasing the number of iterations may be performed intelligently by the self-adapting iterative solver (as opposed to resulting from a pre-conf ⁇ guration of the solver's operation).
  • the self-adapting iterative solver may determine that it is more desirable in some instances to have an increase in iterations as opposed to having fewer iterations that are each extremely computationally expensive.
  • the self-adapting iterative solver in analyzing its performance, considers both the number of iterations and the computational expense of each iteration. For instance, in some cases a particular preconditioner may be employed for treating a singularity in a manner that greatly reduces the number of iterations for achieving convergence, but the computational expense (e.g., amount of CPU time and/or memory required) for processing each iteration may be very high. Thus, in some instances the self- adapting solver may conclude that a slight increase in the number of iterations in which each iteration is not so computationally expensive is an appropriate solution.
  • the relative importance of a given singularity may be based on one or more of various considerations, such as the corresponding amount of degradation in performance of the iterative solver resulting from the singularity (if the singularity were not extracted by a preconditioner).
  • One way of ranking is to assign different weights to the different singularities. In certain embodiments, the more important the singularity, the bigger the weight it is assigned.
  • the self-adapting iterative solver may determine its treatment of possible singularities (e.g., determining a preconditioner for extracting select ones of the possible singularities) based at least in part on the relative weightings assigned to the singularities.
  • the weightings assigned may, in certain embodiments, be updated by the self-adapting iterative solver over the course of its processing (e.g., based on the self-adapting iterative solver's evaluation of its performance in the presence of the singularities, etc.). In many instances, neglecting some of the low weighted possible singularities does not adversely influence the convergence of the iterative solver because the iterative method takes care of them.
  • the self-adapting iterative solver for identifying possible singularities and self-adapting its treatment of those possible singularities based on its computational performance.
  • a two-step approach is employed by the self-adapting iterative solver for constructing a preconditioner.
  • the self-adapting iterative solver first attempts to construct a preconditioner from approximations available for the identified singularities.
  • the self-adapting iterative solver may evaluate its performance for each such approximation, and determine those approximations for which the preconditioner' s performance is unacceptable (e.g., either converges too slowly, has undesirable computational expense for each iteration, etc.).
  • the self-adapting iterative solver employs an alternative preconditioner construction technique, such as one based on representing the solution as a sum of the singular part and its complement.
  • an alternative preconditioner construction technique such as one based on representing the solution as a sum of the singular part and its complement.
  • Exemplary preconditioner construction algorithms that may be employed in certain embodiments are described further herein.
  • FIGURE 1 shows a general work flow typically employed for computer-based simulation (or modeling) of fluid flow in a subsurface hydrocarbon bearing reservoir over time;
  • FIGURE 2 illustrates sub-domains that may be solved in non-overlapping Domain Decomposition methods;
  • FIGURE 3 illustrates overlapping sub-domains that are solved in overlapping Domain Decomposition methods
  • FIGURE 4 shows a block diagram of an exemplary computer-based system implementing a self-adapting iterative solver according to one embodiment of the present invention
  • FIGURE 5 shows a block diagram of another exemplary computer-based system implementing a self-adapting iterative solver according to an embodiment of the present invention
  • FIGURE 6 shows a block diagram of another exemplary computer-based system implementing a self-adapting iterative solver according to an embodiment of the present invention
  • FIGURE 7 shows an exemplary operational flow of a self-adapting iterative solver for constructing a preconditioner according to one embodiment of the present invention
  • FIGURE 8 shows an exemplary operational flow of a self-adapting iterative solver for constructing a preconditioner for singularity(ies) for which an approximation is unavailable or is determined as unacceptable, according to one embodiment
  • FIGURE 9 shows an exemplary computer system which may implement all or portions of a self-adapting iterative solver according to certain embodiments of the present invention.
  • system 400 comprises a processor-based computer 401, such as a personal computer (PC), laptop computer, server computer, workstation computer, multi-processor computer, cluster of computers, etc.
  • processor-based computer 401 such as a personal computer (PC), laptop computer, server computer, workstation computer, multi-processor computer, cluster of computers, etc.
  • a self-adapting iterative solver e.g., software application
  • Computer 401 may be any computational device capable of executing a self-adapting iterative solver 402 as that described further herein.
  • self-adapting iterative solver 402 is shown as executing on computer 401 for ease of illustration in FIGURE 4, it should be recognized that such solver 402 may be residing and/or executing either locally on computer 401 or on a remote computer (e.g., server computer) to which computer 401 is communicatively coupled via a communication network, such as a local area network (LAN), the Internet or other wide area network (WAN), etc.
  • a communication network such as a local area network (LAN), the Internet or other wide area network (WAN), etc.
  • computer 401 may comprise a plurality of clustered or distributed computing devices (e.g., servers) across which self-adapting iterative solver 402 may be stored and/or executed, as is well known in the art.
  • self-adapting iterative solver 402 comprises computer-executable software code stored to a computer- readable medium that is readable by a processor of computer 401 and, when executed by such processor, causes computer 401 to perform the various operations described further herein for such self-adapting iterative solver 402.
  • Self-adapting iterative solver 402 is operable to employ an iterative process for solving a linear system of equations. As discussed above, such iterative solvers are commonly used for 3D computer-based modeling.
  • self-adapting iterative solver 402 may be employed in operational block 12 of the conventional work flow (of FIGURE 1) for 3D computer-based modeling of fluid flow in a subsurface hydrocarbon bearing reservoir.
  • a model 406 e.g., containing various information regarding a real-world system to be modeled, such as information regarding a subsurface hydrocarbon bearing reservoir for which fluid flow over time is to be modeled
  • data storage 405 may comprise a hard disk, optical disc, magnetic disk, and/or other computer-readable data storage medium that is operable for storing data.
  • self-adapting iterative solver 402 is operable to receive model information 406 and perform an iterative method for solving a linear system of equations for generating a 3D computer-based model, such as a model of fluid flow in a subsurface hydrocarbon bearing reservoir over time.
  • self-adapting iterative solver 402 is operable to analyze, as shown in block 403, its computational performance to determine whether to self-adapt its treatment of possible singularities in the model 406. As shown in block 404, when so determined that it should self-adapt its treatment of possible singularities in the model, the self-adapting iterative solver 402 self-adapts its treatment of the possible singularities to improve its performance in solving the linear system of equations for the 3D computer-based modeling. For instance, self-adapting iterative solver 402 may adapt its use of preconditioner(s) for extracting different ones of possible singularities in order to attain a desired computational performance.
  • self-adapting iterative solver 402 are operable to self-adapt their treatment of singularities.
  • self-adapting iterative solver 402 may be an optimal solver that is expected to converge in a given number of iterations, say 10 iterations, irrespective of the size of model 406.
  • the performance of self-adapting iterative solver 402 may be degraded to result in requiring more than 10 iterations to converge, unless the self-adapting iterative solver 402 adapts its treatment of such singularities.
  • self-adapting iterative solver 402 adapts its treatment of the singularities (e.g., by constructing preconditioner(s) for extracting select ones of the identified possible singularities) so as to arrive at a processing technique that converges in the desired 10 iterations.
  • self-adapting iterative solver 402 may intelligently choose to employ a processing technique that increases the number of iterations for convergence (e.g., more than 10 in the above example), if the computational expense of each iteration would otherwise be deemed too expensive.
  • Various exemplary ways in which embodiments of self-adapting iterative solver 402 may evaluate its performance and adapt its treatment of singularities are discussed further herein.
  • FIGURE 5 a block diagram of another exemplary computer-based system 500 according to an embodiment of the present invention is shown.
  • system 500 comprises a processor-based computer 401 on which an embodiment of a self-adapting iterative solver 402, shown as self-adapting iterative solver 402A in this example, is executing.
  • a model 406 e.g., containing various information regarding a real-world system to be modeled, such as information about a subsurface hydrocarbon bearing reservoir for which fluid flow over time is to be modeled
  • data storage 405 that is communicatively coupled to computer 401.
  • self-adapting iterative solver 402A is operable to receive model information 406 and perform an iterative method for solving a linear system of equations for generating a 3D computer-based model, such as a model of fluid flow in a subsurface hydrocarbon bearing reservoir over time, as may be employed in block 12 of the exemplary flow of FIGURE 1.
  • self-adapting iterative solver 402 A identifies possible singularities in block 501.
  • Possible singularities in the model may be identified in various ways. For instance, certain possible singularities may be pre -identified (e.g., by users, such as engineers, analysts, etc.) based on known information about the real- world system being modeled, and the pre-identif ⁇ ed possible singularities for model 406 may be cataloged (stored) to a catalog 505 (e.g., any appropriate computer-readable data structure, such as a file, database, etc.), which is stored to data storage 405.
  • a catalog 505 e.g., any appropriate computer-readable data structure, such as a file, database, etc.
  • various features known to exist in the real-world system being modeled that are suspected to give rise to a singularity may be pre-identif ⁇ ed in catalog 505.
  • common features that may give rise to a singularity in the model, which may be pre -identified in the target area to be modeled may include the presence of certain geologic features (e.g., faults, large fractures, pinch-outs, etc.) and/or certain engineered features (e.g., horizontal, slanted, and vertical wells, connected facility network, etc.).
  • self-adapting iterative solver 402A may itself discover some possible singularities during its processing of the model. For instance, during processing, solver 402A may identify possible singularities through its analysis of the equations (e.g., matrices) being processed. For example, abnormal matrix entries or constructions (e.g., extremely large entries, a matrix that is not diagonally dominant, positive off-diagonal entries in a M-matrix, etc.) for a given modeling process may be recognized by the self-adapting iterative solver 402A as a possible singularity being present in the corresponding portion of the model.
  • equations e.g., matrices
  • abnormal matrix entries or constructions e.g., extremely large entries, a matrix that is not diagonally dominant, positive off-diagonal entries in a M-matrix, etc.
  • self-adapting iterative solver 402 A maintains a list 506 (which may be in the form of any appropriate computer-readable data structure, such as a file, database, etc.), which is stored to data storage 405, where such list 506 identifies the current singularities that self-adapting iterative solver 402A is to extract. Exemplary techniques that may be employed for extracting the singularities are discussed further herein below. In one embodiment, as possible singularities are identified in block 501, they are added to the list 506 of current singularities to be extracted.
  • the list 506 is dynamic and may be modified by self-adapting iterative solver 402 A as it determines how best to adapt its treatment of singularities for providing a desired level of performance.
  • the list of current singularities and/or catalog of pre-identified possible singularities may include respective weightings assigned to the singularities.
  • the self-adapting iterative solver 402A constructs a preconditioner that extracts the current singularities (i.e., those singularities identified on list 506).
  • this list 506 may include all possible singularities pre-identified in catalog 505.
  • one or more of such possible singularities may be removed from the current list 506 (such that they are not extracted) and/or one or more possible singularities discovered by the self-adapting iterative solver 402A (e.g., through analysis of the matrices being processed) may be added to the current list 506.
  • exemplary techniques that may be employed in block 502 for constructing a preconditioner for extracting selected singularities are discussed further herein below.
  • a determination of singularities to be included on current list 506 (for extraction by a preconditioner) and those to be removed from the list 506 may be based, in certain embodiments, at least in part on the relative weightings assigned to the singularities.
  • singularities assigned a high weighting may be deemed to have a high degradation on performance of the iterative solver if not extracted, and those assigned a low weighting may be deemed to have a lower degradation on performance of the iterative solver; in which case, those singularities having the highest weighting may be selected for inclusion on the current list 506 for extraction by a preconditioner.
  • the self-adapting iterative solver 402 A uses the constructed preconditioner in its iterative solving of the linear system of equations for determining the corresponding portion of the 3D computer-based model.
  • Exemplary preconditioners that may be employed in certain embodiments, and their use for iterative solving of the linear system of equations, are described further herein.
  • embodiments of the present invention are not limited to use of any particular preconditioners, but instead certain embodiments may be implemented to self-adapt for application of any of various different preconditioners.
  • self-adapting iterative solver 402 A analyzes its performance to determine whether to self-adapt its treatment of possible singularities in the model. While shown as a linear flow for ease of illustration in FIGURE 5, it should be recognized that the various operations are not restricted to the order in which they are shown and certain ones of the blocks may be performed in parallel. For instance, in certain embodiments, while processing the constructed preconditioner in block 503, self-adapting iterative solver 402 A may analyze its performance to determine whether to adapt its treatment of singularities. When so determined that it should self-adapt its treatment of possible singularities, the self- adapting iterative solver 402A self-adapts its treatment of the possible singularities in block 404. It may, in some instances, interrupt its processing in block 503 before the iterative process of block 503 converges to a solution, in order to self-adapt its treatment of possible singularities in block 404.
  • self-adapting iterative solver 402A balances, in block 504, a gain in iterative performance (e.g., reduction in number of iterations for convergence) obtained through use of a preconditioner for excluding select singularities (on list 506) versus the computation expense of the preconditioner in each iteration.
  • a gain in iterative performance e.g., reduction in number of iterations for convergence
  • select singularities on list 506
  • self-adapting iterative solver 402A may consider both the number of iterations for convergence and the computational expense of each iteration.
  • a particular preconditioner may be employed for treating the current singularity(ies) (from list 506) in a manner that greatly reduces the number of iterations for achieving convergence, but the computational expense (e.g., amount of CPU time and/or memory required) for processing each iteration may be very high.
  • self-adapting iterative solver 402A may conclude, in block 504, that a slight increase in the number of iterations in which each iteration is not so computationally expensive is an appropriate solution.
  • FIGURE 6 a block diagram of another exemplary computer-based system 600 according to an embodiment of the present invention is shown.
  • system 600 comprises a processor-based computer 401 on which an embodiment of a self-adapting iterative solver 402, shown as self-adapting iterative solver 402B in this example, is executing.
  • a self-adapting iterative solver 402B shown as self-adapting iterative solver 402B in this example
  • a model 406 (e.g., containing various information regarding a real-world system to be modeled, such as information about a subsurface hydrocarbon bearing reservoir for which fluid flow over time is to be modeled), a catalog 505 of pre- identified possible singularities, and list 506 of current singularities to be extracted are stored to data storage 405 that is communicatively coupled to computer 401.
  • self-adapting iterative solver 402B is operable to receive model information 406 and perform an iterative method for solving a linear system of equations for generating a 3D computer- based model, such as a model of fluid flow in a subsurface hydrocarbon bearing reservoir over time, as may be employed in block 12 of the exemplary flow of FIGURE 1.
  • self-adapting iterative solver 402B may be used in a work flow such as that described above in FIGURE 1.
  • self-adapting iterative solver 402B may be used in a time stepping loop 601, such as the exemplary outer loop 102 of FIGURE 1, wherein various operations discussed hereafter may be performed in the time stepping loop 601.
  • the physical problem e.g., model 406 and/or the corresponding real- world system
  • the linear system is inspected to identify current and possible new singularities.
  • Possible singularities in the model may be identified in various ways. For instance, certain possible singularities may be pre-identif ⁇ ed (e.g., by users, such as engineers, analysts, etc.) based on known information about the real-world system being modeled, and the pre-identified possible singularities for model 406 may be cataloged (stored) to a catalog 505 (e.g., any appropriate computer-readable data structure, such as a file, database, etc.), which is stored to data storage 405.
  • a catalog 505 e.g., any appropriate computer-readable data structure, such as a file, database, etc.
  • certain pre-processing 610 may be performed for initially populating catalog 505 with pre-identified possible singularities.
  • various features known to exist in the real-world system being modeled that are suspected to give rise to a singularity may be pre-identified in catalog 505.
  • common features that may give rise to a singularity in the model, which may be pre-identified in the target area to be modeled may include the presence of certain geologic features (e.g., faults, large fractures, pinch-outs, etc.) and/or certain engineered features (e.g., horizontal, slanted, and vertical wells, connected facility network, etc.).
  • the self-adapting iterative solver may evaluate each of the possible singularities cataloged in catalog 505 to determine whether they are actual singularities (i.e., whether their presence actually degrades the convergence of the iterative method employed by the solver 402B), and those determined to be actual singularities that degrade performance of the iterative method to some extent are added to the list 506 of current singularities to be removed.
  • self-adapting iterative solver 402B may itself discover some possible singularities based on its inspection of the matrices being processed for the model 406. For example, abnormal matrix entries or constructions (e.g., extremely large entries, a matrix that is not diagonally dominant, positive off-diagonal entries in a M-matrix, etc.) for a given modeling process may be recognized by the self-adapting iterative solver 402B as a possible singularity being present in the corresponding portion of the model.
  • abnormal matrix entries or constructions e.g., extremely large entries, a matrix that is not diagonally dominant, positive off-diagonal entries in a M-matrix, etc.
  • self-adapting iterative solver 402B maintains a list 506 (which may be in the form of any appropriate computer-readable data structure, such as a file, database, etc.), which is stored to data storage 405, where such list 506 identifies the current singularities that self-adapting iterative solver 402B is to extract. Initially, this list 506 may include all possible singularities pre -identified in catalog 505 and determined in block 603.
  • the list 506 of current singularities to be extracted is dynamic and thus may be adjusted by self-adapting iterative solver 402B over the course of processing of model 406.
  • the self-adapting iterative solver 402B constructs a preconditioner that extracts the current singularities (i.e., those singularities identified on list 506). As discussed further herein, in some instances one or more of such possible singularities may be removed from the current list 506 (such that they are not extracted) and/or one or more possible singularities discovered by the self-adapting iterative solver 402B (e.g., through analysis of the matrices being processed) may be added to the current list 506. Again, exemplary techniques that may be employed in block 604 for constructing a preconditioner for extracting selected singularities (i.e., those on the current list 506) are discussed further herein below.
  • the self-adapting iterative solver 402B uses the constructed preconditioner in its iterative solving of the linear system of equations for determining the corresponding portion of the 3D computer-based model.
  • Exemplary preconditioners that may be employed in certain embodiments, and their use for iterative solving of the linear system of equations, are described further herein. Of course, embodiments of the present invention are not limited to use of any particular preconditioners, but instead certain embodiments may be implemented to self-adapt for application of any of various different preconditioners.
  • self-adapting iterative solver 402B analyzes performance of the preconditioner, and if desired, makes adjustments to the preconditioner to improve the solver's computational performance.
  • the list 506 of the current singularities may be updated to, for example, reflect any changes in the singularities that are to be extracted, as determined in block 606. While shown as a linear flow for ease of illustration in FIGURE 6, it should be recognized that the various operations are not restricted to the order in which they are shown and certain ones of the blocks may be performed in parallel. For instance, in certain embodiments, while processing the constructed preconditioner in block 605, self-adapting iterative solver 402B may analyze its performance (block 606) to determine whether to adapt its treatment of singularities.
  • the self-adapting iterative solver 402B self-adapts its treatment of the possible singularities by updating (in block 607) the list 506 of current singularities to be extracted. It may, in some instances, interrupt its processing in block 605 before the iterative process of block 605 converges to a solution, in order to self- adapt its list 506 of current singularities to be extracted in block 607, wherein its operation may thereafter return to block 602 to eventually construct (in block 604) another preconditioner for extracting the revised current list 506 of singularities.
  • the operation may advance, in block 609, to the next time interval to be processed, just as in the outer loop 102 of the exemplary work flow of FIGURE 1.
  • the self-adapting iterative solver 402B may investigate each possible singularity (physically bounded) by taking a small patch of the model and analyzing the corresponding linear system and its solution. If there is some abnormal behavior, either of the linear system (like large condition number) or its solution, then the singularity is selected for extraction (i.e., added to the list 506 of current singularities). Otherwise, the possible singularity is not included (i.e., may be removed from) the list 506 for the current time step.
  • the performance analysis (e.g., of block 403 of FIGURE 4 or block 606 of FIGURE 6) inspects the behavior of the iterative solver to try to improve iterative performance and/or CPU/Wall clock performance of the self-adapting iterative solver. Iterative performance may be improved through adding neglected singularities, discovering new singularities, and/or improving the treatment of the current singularities.
  • CPU/Wall clock performance may be improved by adjusting the preconditioner's operation in certain embodiments. For instance, if the iterative performance is good, but the preconditioner becomes computationally expensive, the self-adapting iterative solver may, in certain embodiments, choose to neglect some of the singularities and/or relax the treatment of certain singularities.
  • weights may be assigned to different singularities.
  • One approach that may be employed in accordance with certain embodiments is to assign static weights based on the type of the singularity. For example, vertical wells may be assigned a weight of 1, slanted wells may be assigned a weight of 2, horizontal wells may be assigned a weight of 3, etc. These static weights may be based on analysis of results from previous runs (processed with some statistical tools) and/or may be based on application of some theoretical assumptions.
  • a more sophisticated approach that may be employed in accordance with certain embodiments is to dynamically adapt the weights based on the performance of the iterative solver.
  • this approach may start with fixed weights used on a first run (e.g., a first 3D modeling employing the iterative solver), and on a next run some of the weights may be changed and the corresponding performance of the iterative solver analyzed.
  • the approach may solve a linear system of equations once with weightings assigned as: 3 for a first horizontal well, and 3 for a second horizontal well.
  • the linear system of equations may be solved with weight 2 assigned to the first horizontal well and weight 4 assigned to the second horizontal well.
  • the performance of the first and second iterative methods may be compared, and the approach may continue adjusting the weights based on the determined performance comparisons.
  • the first well may drop out of the current list of singularities once this approach lowers its relative weighting sufficiently.
  • a second step is applied that involves a special small rank update procedure.
  • a similar approach can be used for geologic singularities like fractures that may be encountered in the subsurface hydrocarbon bearing reservoir being modeled.
  • two preconditioners are considered for identified physically-bounded singularities. Initially, for each physically-bounded singularity, a sub- domain is chosen that contains the singularity and small strip around it.
  • An exemplary two- step process that may be employed for constructing a preconditioner to be used for such a singularity in certain embodiments is discussed below. That is, in certain embodiments the exemplary two-step approach described below is employed for constructing a preconditioner (e.g., in block 604 of FIGURE 6).
  • each singularity is replaced with an appropriate approximation (e.g., which may be performed as part of block 604 of FIGURE 6).
  • a global preconditioner is then constructed (e.g., which may be performed as part of block 604 of FIGURE 6), wherein the global preconditioner comprises the original problem outside the singularities and the determined approximation inside the singularities.
  • an Additive or Multiplicative Schwarz may be applied with the global preconditioner and the sub-domains. Overlapping or non overlapping versions can be used.
  • the quality of the approximation of a given singularity is then evaluated (e.g., which may be performed as part of block 606 of FIGURE 6). For instance, the quality of the approximation may be evaluated either using a local patch that contains it and examining the linear system, or observing the convergence behavior of the preconditioner. That is, the given singularity can be approximated, and the linear solve can be performed on the approximation. Whether the convergence is acceptable when using the approximation is then determined. If determined that the convergence is not acceptable, then the alternative preconditioner construction technique discussed below is used in the next time step (e.g., following the next time interval 609 in the exemplary time stepping loop of FIGURE 6).
  • the solution is computed as a sum of two terms. The first is the orthogonal projection into the "singularity space,” and the second is its complement. Any preconditioner for the "good part" can be used including the one in the previous step.
  • a given singularity may be viewed as contained in a singularity space, which may include certain features/characteristics that can be approximated well and may also include certain other features/characteristics for which a good approximation is not available.
  • the singularity space may be divided into a portion that can be approximated well (which may be referred to as a "good” part) and a portion that cannot be approximated well (which may be referred to as a "bad” part).
  • the self-adapting iterative solver is operable to extract the "bad" part from a singularity space, thereby resulting in a remaining good part that can be approximated well.
  • a given singularity space "X" can be considered as having a corresponding dimension (corresponding to the size of the submatrix that describes the singularity), say dimension "dim(X)".
  • the solver may first attempt to approximate the singularity with a simpler model having a reduced dimension, say in a space “Y” with dimension “dim(Y)” (wherein dim(Y) ⁇ dim(X)).
  • the space "Y' is a part of the singularity space "X”.
  • the approximated portion in the space "Y" of the singularity space is considered a "good” part of the singularity space, which may be treated using an appropriate preconditioner, while the remaining “Z" portion of the singularity space is referred to as a "bad” part of the singularity space that may be treated in a different manner.
  • the self-adapting iterative solver 402 attempts to extract the "bad" part.
  • the solver extracts a "bad" part of the singularity such that the remaining good part can be modeled by an approximation that is acceptable.
  • the original problem has dimension 1,000,000 and there is a singularity with dimension 100. Further suppose that the solver attempts to approximate this singularity with a simpler one having a dimension of, say, 90. If the performance of a first preconditioner is determined as acceptable, it is used. Otherwise, if the performance of the first preconditioner is determined as unacceptable, then the second step discussed further herein is employed.
  • some of the 100 singularity modes are suppressed, say 90 of the singularity modes may be suppressed by the approximation.
  • the 10 remaining singularity modes are referred to as the "bad" modes (or "bad" part) remaining to be taken care of. Unfortunately, we do not know explicitly which they are.
  • the "bad", or the singularity part will have dimension 10, and the "good” part, 1,000,000 - 10. Further, in this example, the number of iterations to remove the "bad” part will be proportional to 10, such as 0(10). In general, we may use only the second algorithm, but the amount of computations depends on the number of the "bad” modes, and it is computationally more efficient first to approximate and decrease the number of not resolved modes. Thus, improved performance may be achieved through the recognition of the "good” and "bad” parts of the identified singularity space, and treating each of the good and bad parts appropriately, such as discussed further herein.
  • the self-adapting iterative solver is operable to, responsive to identifying a singularity, determine whether an acceptable approximation is available for the singularity. If there is a good approximation available, then a corresponding preconditioner for the approximation is used for iteratively solving the singularity. When determined that there is not an acceptable approximation available (i.e., either there is no available good approximation or an approximation is determined to still adversely impact the linear system), then the iterative solver extracts a bad portion of the singularity to result in a remaining good portion of the singularity for which a good approximation is available.
  • an appropriate preconditioner for the approximation of the good portion of the singularity is then used for iteratively solving the good portion of the singularity.
  • the extracted bad portion of the singularity may be treated differently.
  • the treatment of the bad portion of the singularity may be computationally less efficient than the treatment of the good portion, but overall the computationally is improved as a result of extracting from the singularity the "bad" portion, thereby enabling the "good” portion to be iteratively solved in a computationally efficient manner.
  • deflation may be used.
  • R. Nabben and C. Vuik "A Comparison of deflation and Coarse grid correction applied to porous media flows," SIAM H. Numer. Anal., v. 42, 1631-1647; and see J. Frank and C. Vuik, "On the construction of deflation-based preconditioners," SIAM J. Sci. Comput, v. 23, 442-462.
  • their existence is deduced from the iterative behavior of the preconditioner.
  • self-adapting iterative solver 402 separates current singularities into two groups: a) physically bounded, and b) eigenvalue bounded.
  • the eigenvalue bounded singularities are more general and include the physically bounded singularities.
  • the algorithms for the physically bounded singularities are generally easier to implement, and are usually more efficient. If there only a few eigenvalues that are not suppressed, the deflation algorithm can help, although they are more difficult to implement and could be computationally expensive.
  • An example of a physical feature that can lead to a problem is a layer with drastically different properties in the porous media of a subsurface hydrocarbon bearing reservoir being modeled.
  • problems can be identified by the users who build the models or, for very complex models, by pattern recognition algorithms. There are efficient deflation algorithms for such simplified cases.
  • the self-adapting iterative solver 402 attempts to construct a preconditioner for the physically bounded singularities in block 72. For the physically bounded singularities, the self-adapting iterative solver 402 determines in block 701, for each physically-bounded singularity, whether an approximation of the singularity is available. For those singularities for which an approximation is available, the approximation(s) are used for approximating the singularity(ies), in block 702. The self-adapting iterative solver 402 evaluates the quality of the approximation (e.g., determines whether the convergence is acceptable, as discussed above) in block 703. For each singularity whose quality is determined to be acceptable in block 703, the approximation of such singularity is used in the construction of the preconditioner, as shown in block 704.
  • the quality of the approximation e.g., determines whether the convergence is acceptable, as discussed above
  • the self-adapting iterative solver 402 attempts to extract the "bad" part (e.g., using the second algorithm discussed further below) in block 73.
  • a preconditioner is introduced as B 1 A, which may reduce the number of eigenvalues.
  • the number of iterations of the iterative solver for processing the preconditioner is proportional to square root of (d/c).
  • MultiGrid and domain decomposition algorithms "move" the eigenvalues to the left-hand side of the spectrum and improve the convergence of an iterative solver. However, if there are singularities present, their eigenvalues are not touched (i.e., not moved to the left-hand side of the equation). According to certain embodiments of the present invention, algorithms are employed to "move” the untouched eigenvalues.
  • the deflation algorithms mentioned herein may also be employed in some instances to "move” the eigenvalues to the left, but they need to have an approximation of the eigenvectors, which is rarely available. For this reason, the deflation algorithms are generally considered as a last resort in certain embodiments. In some well-studied cases, such as layer of the porous media with drastically different properties, this can be done efficiently.
  • Exemplary preconditioners that may be constructed according to certain embodiments are now briefly discussed. That is, exemplary algorithms may be employed for constructing a preconditioner according to certain embodiments are discussed further below. Of course, embodiments of the present invention are not limited to use of the exemplary preconditioner construction algorithms described below.
  • A the block A 33 corresponds for the singularities, A 22 is the strip around them, and A n is the rest.
  • a 33 the block A 33 corresponds for the singularities
  • a 22 is the strip around them
  • a n the rest.
  • U 3 1 U 3 1 + U 3 2 , i.e., the first from the approximated variable is equal to the sum of the first two not approximated variables, and so on.
  • U 3 1 U 3 1
  • U 3 2 U 3 1 , i.e., the first two not approximated variables are equal to the first approximated variable, and so on.
  • an extension operator e and its matrix representation E are introduced.
  • the operator e starts from the boundary of the singularity and "extends" the solution inside it. It does not change anything outside the singularity.
  • the extension operator e is defined as:
  • the operator e the transpose operator of e "extends" from the singularity to the interface without changing anything else.
  • a ⁇ is a matrix from the approximation with Neumann boundary condition on ⁇ .
  • M -1 M EA ⁇ ⁇ E T + A 33 1 , i.e.,
  • the multiplicative version also can be applied.
  • the matrices A N 1 and A 33 1 can be replaced by preconditioners, thereby constructing preconditioners based on this approximation of the singularity (ies).
  • an algorithm that may be employed for constructing an alternative preconditioner when an approximation is not available or has unacceptable quality e.g., as determined in blocks 701 or 703 of FIGURE 7 discussed above.
  • this exemplary second algorithm may be employed in block 73 of FIGURE 7.
  • the dimension of U 2 is much smaller than the dimension of U 1 .
  • this exemplary second algorithm may be implemented by the self-adapting iterative solver 402 (e.g., for performance of block 73 of FIGURE 7) according to the exemplary operational flow of FIGURE 8.
  • P 11111 denotes the orthogonal projector from R N onto ImT.
  • This can be done by any available method, for example using the conjugate gradient (CG) method with trivial (zero) initial step (dim (ImT) iterations at most).
  • Embodiments, or portions thereof, may be embodied in program or code segments operable upon a processor-based system (e.g., computer system) for performing functions and operations as described herein for the self-adapting iterative solver.
  • the program or code segments making up the various embodiments may be stored in a computer-readable medium, which may comprise any suitable medium for temporarily or permanently storing such code.
  • Examples of the computer-readable medium include such physical computer- readable media as an electronic memory circuit, a semiconductor memory device, random access memory (RAM), read only memory (ROM), erasable ROM (EROM), flash memory, a magnetic storage device (e.g., floppy diskette), optical storage device (e.g., compact disk (CD), digital versatile disk (DVD), etc.), a hard disk, and the like.
  • RAM random access memory
  • ROM read only memory
  • EROM erasable ROM
  • flash memory e.g., floppy diskette
  • optical storage device e.g., compact disk (CD), digital versatile disk (DVD), etc.
  • a hard disk e.g., hard disk, and the like.
  • FIGURE 9 illustrates an exemplary computer system 900 on which software for performing processing operations of the above-described self-adapting iterative solver according to embodiments of the present invention may be implemented.
  • Central processing unit (CPU) 901 is coupled to system bus 902.
  • CPU 901 may be any general-purpose CPU. The present invention is not restricted by the architecture of CPU 901 (or other components of exemplary system 900) as long as CPU 901 (and other components of system 900) supports the inventive operations as described herein.
  • CPU 901 may execute the various logical instructions according to embodiments. For example, CPU 901 may execute machine-level instructions for performing processing according to the exemplary operational flows of embodiments of the self-adapting iterative solver as described above in conjunction with FIGURES 4-8.
  • Computer system 900 also preferably includes random access memory (RAM) 903, which may be SRAM, DRAM, SDRAM, or the like.
  • Computer system 900 preferably includes read-only memory (ROM) 904 which may be PROM, EPROM, EEPROM, or the like.
  • RAM 903 and ROM 904 hold user and system data and programs, as is well known in the art.
  • Computer system 900 also preferably includes input/output (I/O) adapter 905, communications adapter 911, user interface adapter 908, and display adapter 909.
  • I/O adapter 905, user interface adapter 908, and/or communications adapter 911 may, in certain embodiments, enable a user to interact with computer system 900 in order to input information.
  • I/O adapter 905 preferably connects to storage device(s) 906, such as one or more of hard drive, compact disc (CD) drive, floppy disk drive, tape drive, etc. to computer system 900.
  • the storage devices may be utilized when RAM 9703 is insufficient for the memory requirements associated with storing data for operations of embodiments of the present invention.
  • the data storage of computer system 900 may be used for storing such information as a model (e.g., model 406 of FIGURES 4-6), a catalog of pre -identified possible singularities (e.g., catalog 505 of FIGURES 5-6), a list of singularities (e.g., list 506 of FIGURES 5-6), and/or other data used or generated in accordance with embodiments of the present invention.
  • a model e.g., model 406 of FIGURES 4-6
  • catalog 505 of FIGURES 5-6 catalog 505 of FIGURES 5-6
  • list 506 of FIGURES 5-6 e.g., list 506 of FIGURES 5-6
  • Communications adapter 911 is preferably adapted to couple computer system 900 to network 912, which may enable information to be input to and/or output from system 900 via such network 912 (e.g., the Internet or other wide-area network, a local-area network, a public or private switched telephony network, a wireless network, any combination of the foregoing).
  • network 912 e.g., the Internet or other wide-area network, a local-area network, a public or private switched telephony network, a wireless network, any combination of the foregoing.
  • User interface adapter 908 couples user input devices, such as keyboard 913, pointing device 907, and microphone 914 and/or output devices, such as speaker(s) 915 to computer system 900.
  • Display adapter 909 is driven by CPU 901 to control the display on display device 910 to, for example, display information pertaining to a model under analysis, such as displaying a generated 3D representation of fluid flow in a subsurface hydrocarbon bearing reservoir over time, according to certain embodiments.
  • the present invention is not limited to the architecture of system 900.
  • any suitable processor-based device may be utilized for implementing all or a portion of embodiments of the present invention, including without limitation personal computers, laptop computers, computer workstations, and multi-processor servers.
  • embodiments may be implemented on application specific integrated circuits (ASICs) or very large scale integrated (VLSI) circuits.
  • ASICs application specific integrated circuits
  • VLSI very large scale integrated circuits.
  • persons of ordinary skill in the art may utilize any number of suitable structures capable of executing logical operations according to the embodiments.

Abstract

A self-adapting iterative solver is provided that employs a self-adapting process for extracting singularities for solving linear systems of equations. The self-adapting iterative solver dynamically determines how to adapt its performance in the presence of one or more singularities encountered in a linear system of equations. In certain embodiments, the self- adapting iterative solver can identify possible singularities, and then analyzes its performance for adapting to a treatment of the possible singularities that provides a desired performance (i.e., for achieving convergence to a solution). Thus, rather than being pre-confϊgured for providing a certain treatment of (e.g., eliminating) certain pre-identified singularities, in certain embodiments, the iterative solver adapts its treatment of singularities based on its computing performance.

Description

SELF-ADAPTING ITERATIVE SOLVER
CROSS-REFERENCE TO RELATED APPLICATION
[0001] This application claims the benefit of U.S. Provisional Patent Application 61/101,490 filed 30 September 2008 entitled SELF-ADAPTING ITERATIVE SOLVER, the entirety of which is incorporated by reference herein.
TECHNICAL FIELD
[0002] The following description relates generally to iterative solvers for solving linear systems of equations, and more particularly to a self-adapting iterative solver that is operable to adapt its performance in the presence of a singularity.
BACKGROUND
[0003] Various techniques are known for solving linear systems of equations. Linear systems of equations are commonly encountered (and need to be solved) for various computer-based three-dimensional ("3D") simulations or modeling of a given real-world system. For instance, such computer-based 3D modeling may employed for modeling such real-world systems as mechanical and/or electrical systems (such as may be employed in automobiles, airplanes, ships, submarines, space ships, etc.), human body (e.g., modeling of all or portions of a human's body, such as the vital organs, etc.), weather patterns, subsurface hydrocarbon bearing reservoirs (e.g., gas or oil fields), and various other real-world systems to be modeled. Through such modeling, potential future performance of the modeled system can be analyzed and/or predicted. For instance, the impact that certain changed conditions presented to the modeled system has on the system's future performance may be evaluated through interaction with and analysis of the computer-based model.
[0004] As an example, modeling of fluid flow in porous media is a major focus in the oil industry. Different computer-based models are used in different areas in the oil industry, but most of them include describing the model with a system of partial differential equations
(PDE 's). In general, such modeling commonly requires discretizing the PDE 's in space and time on a given grid, and performing computation for each time step until reaching the prescribed time. At each time step, the discrete equations are solved. Usually the discrete equations are nonlinear and the solution process is iterative. Each step of the nonlinear iterative method typically includes linearization of the nonlinear system of equations (e.g., Jacobian construction), solving the linear system, and property calculations, that are used to compute the next Jacobian.
[0005] FIGURE 1 shows a general work flow typically employed for computer-based simulation (or modeling) of fluid flow in a subsurface hydrocarbon bearing reservoir over time. The inner loop 101 is the iterative method to solve the nonlinear system. Again, each pass through inner loop 101 typically includes linearization of the nonlinear system of equations (e.g., Jacobian construction) 11, solving the linear system 12, and property calculations 13, that are used to compute the next Jacobian (when looping back to block 11). The outer loop 102 is the time step loop. As shown, for each time step loop boundary conditions may be defined in block 10, and then after performance of the inner loop 101 for the time step results computed for the time step may be output in block 14 (e.g., the results may be stored to a data storage media and/or provided to a software application for generating a display representing the fluid flow in the subsurface hydrocarbon bearing reservoir being modeled for the corresponding time step). As mentioned above, computer- based 3D modeling of real-world systems other than modeling of fluid flow in a subsurface hydrocarbon bearing reservoir may be performed in a similar manner, i.e., may employ an iterative method for solving linear systems of equations (as in block 12 of FIGURE 1).
[0006] The solution of the linear system of equations is a very computationally-intensive task and efficient algorithms are thus desired. There are two big classes of linear solvers: 1) direct methods and 2) iterative methods. Direct methods generally rely on an efficient version of Gaussian elimination to factorize the matrix of the linear system. The solution is obtained by performing a backward solve followed by a forward solve. The factorization can be computationally and memory expensive because all new fill-in entries have to be computed and stored. The computational efficiency depends strongly on the size and the bandwidth of the matrix. Three-dimensional models lead to matrices that are very large, sparse, and with considerable bandwidth. The size and the large bandwidth lead to very big number of new fill-in entries that have to be calculated and stored. Thus, direct methods are generally still undesirably expensive, from both computational and memory viewpoints, to be used for real 3D modeling.
[0007] Iterative methods provide another approach for solving large sparse linear systems. When employing an iterative method, the solution is updated on every iteration until convergence is reached. Every iteration requires only operations with sparse matrices and is usually proportional to the number of unknowns. Unfortunately, standard iterative methods converge very slowly for large system of linear equations. This situation can be improved considerably by replacing the original matrix with a new one using the preconditioning matrix. For example, the original problem Ax = b may be replaced with the modified problem with the same solution: B~lAx = B~lb , where B is the preconditioning matrix (or "preconditioner" for brevity). Every iteration with the modified matrix solves the problem with the matrix B, Bu = r .
[0008] There has been considerable progress in developing efficient preconditioners for elliptic and parabolic problems. A major achievement was the development of preconditioners that are computationally cheap (e.g., having the number of operations proportional to the number of unknowns) and efficient (e.g., having a small number of iterations that does not grow with the size of the problem). The best known examples of such preconditioners are MultiGrid and Domain Decomposition algorithms. Such preconditioners for which the number of iterations required for convergence does not increase as the size of the problem (or model) grows, may be referred to herein as "optimal preconditioners".
[0009] A first well-known example of an optimal preconditioner is MultiGrid, which reduces the error by working on different components of the error on different grids.
[0010] A second well-known example of an optimal preconditioner is Domain Decomposition. Domain Decomposition algorithms compose the solution by solving the same or similar problem in parts of the original domain. Non-overlapping Domain Decomposition methods solve similar problems in each part of the domain, called sub- domains, Q1 and Ω2 in the example of FIGURE 2, and a different problem on the common interface γ.
[0011] Overlapping Domain Decomposition methods solve problems on extended domains that are formed from the original domain and overlapping strips as shown in FIGURE 3. The solution of the global problem is composed by the solutions of the sub- domain problems.
[0012] Domain Decomposition algorithms can be applied in an additive or multiplicative way. The additive Domain Decomposition algorithms compute their parts of the solution simultaneously. Each step in the multiplicative methods includes several sub-steps. At the first sub-step, one group of sub-domains calculates the solution first. At the next sub-step, the next group of sub-domains uses the results of the first group to compute their solution, and so on.
[0013] Thus, such optimal preconditioners as MultiGrid and Domain Decomposition are known to be optimal if the model size grows. For instance, suppose a model starts with 100,000 cells, but at some later time a bigger model having a million cells is used, and then at some later time a model having an even higher dimension of 10 million cells is used. In general, an optimal preconditioner, such as MultiGrid or Domain Decomposition, may be employed and may converge to a solution in a fixed number of iterations, say 10 iterations, for all three models. Other preconditioners are known that require more iterations to converge as the model size increases, but the optimal preconditioners will generally converge in a fixed number of iterations irrespective of whether the size of the model increases.
[0014] Unfortunately, the performance of even the optimal preconditioners can considerably deteriorate if the original system of PDE 's or the linear systems have some special features. For example, if the solution of the system of PDE's is extremely big in some part of the domain, or has no derivatives, difficulties may arise in solving the linear systems. Such behavior of the solution is usually referred to as "singularity."
[0015] When modeling fluid flow in a subsurface hydrocarbon bearing reservoir, various special effects or features may exist in the subsurface region being modeled, such as wells, faults, or other geologic features, as examples. Such special effects or features present in the real-world system being modeled may give rise to a singularity. In general, a "singularity" refers to any feature in the linear system or the physical model that degrades the convergence of the iterative method (e.g., preconditioner) being used by the solver. For instance, the presence of a singularity may result in an optimal preconditioner failing to converge in an expected number of iterations. For example, as mentioned above, optimal preconditioners will generally converge in a fixed number of iterations irrespective of whether the size of the model increases. However, if a singularity is encountered in the model, then conventional optimal preconditioners, such as MultiGrid and Domain Decomposition, will fail to converge in the fixed number of iterations for the model.
[0016] Typically, singularities are caused either by the wells present in the modeling of a subsurface hydrocarbon bearing reservoir, or by discontinuous coefficients and their special behavior, such as rock properties in the subsurface being modeled. Wells are typically modeled as point or line sources and, in an area that has very small size (zero in the mathematical abstraction), some finite amount of fluid is either injected into the subsurface or produced (i.e., extracted from the subsurface) by the well. This causes the solution or its derivative to be extremely big (infinity in mathematical sense). Such behavior of the solution frequently leads to deterioration of the convergence of the preconditioned iterative methods. Many different well models are used in the oil industry. Most of them are not written as elliptic or hyperbolic equations. Consequently, the above-mentioned MultiGrid and Domain Decomposition methods are not very efficient for such linear systems.
[0017] Additionally, certain geologic features, such as faults, fractures or pinch-outs, may also cause problems for the preconditioned iterative methods. That is, certain geologic features may also give rise to a singularity which deteriorates the convergence of the preconditioned method. One reason that certain geologic features may cause problems is that the fluid flow in such geologic features can be very different from the flow in the surrounding porous media.
[0018] There have been many attempts to develop efficient preconditioners for linear systems as the ones considered above. As one example, preconditioners using Incomplete LU factorization are not affected by the presence of wells, faults or fractures, but are also not efficient for very large linear systems. As another example, techniques have been proposed for eliminating singularities in certain optimal preconditioners, such as in Domain Decomposition and MultiGrid. For instance, some Domain Decomposition methods have been attempted to eliminate the singularities, but the convergence was dependent on the overlap and deteriorated, see H. Cao, H.A. Tchelepi, J. Wallis, and H. Yardumian, "Parallel Scalable Unstructured CPR-Type Linear Solver for Reservoir Simulation", SPE Annual Conference and Exhibition, Oct. 2005, Dallas, Texas. MultiGrid methods were more successful, see K. Stuben, T. Clees, H. Klie, B. Lu, and M.F. Wheeler, Algebraic multigrid methods for the efficient solution of fully implicit formulations in reservoir simulation, SPE Reservoir Simulation Symposium, Feb. 2007, Houston, TX; T. Clees, and L. Ganzer, An efficient multigrid solver strategy for adaptive implicit methods in oil reservoir simulation, SPE Reservoir Simulation Symposium, Feb. 2007, Houston, TX; and H. Klie, M.F. Wheeler, K. Stuben, and T. Clees, Deflation AMG solvers for highly ill-conditioned reservoir simulation problems, SPE Reservoir Simulation Symposium, Feb. 2007, Houston, TX.
[0019] However, the above-mentioned proposed techniques for eliminating singularities in optimal preconditioners have failed to maintain the performance of the optimal preconditioners. For instance, suppose that an optimal preconditioner is expected to converge to a solution in, say 10 iterations, irrespective of the size of the model (assuming no singularity is encountered); the presence of a special feature in the model may give rise to a singularity that results in the optimal preconditioner instead requiring, say, 100 iterations to converge. Conventional techniques that have been proposed for eliminating the singularity may improve the performance of the optimal preconditioner such that it may converge in, say 25 iterations, but fails to achieve its expected performance (10 iterations in this example) that would be achieved if the special feature giving rise to the singularity were not present in the model.
[0020] Further, the above-mentioned proposed techniques for eliminating singularities rely on pre -identification of the presence of a singularity and follow a predefined regiment for eliminating any such pre-identified singularity. That is, the solver is pre-configured to eliminate a pre-identified singularity. Thus, users (e.g., engineers, analysts, etc.) are required to pre -identify special features in a model that are believed to likely give rise to a singularity, and the users pre-configure the solver to eliminate the pre-identified singularity. The solver itself is not utilized for identifying singularities, nor is the solver involved in determining whether to eliminate the pre-identified singularity. Instead, all such identifications of singularities and determinations regarding how to pre-configure the solver to eliminate the identified singularities are made external to the solver (e.g., by engineers, analysts, or other users).
SUMMARY
[0021] The present invention is directed to a system and method which employ a self- adapting iterative solver. That is, an iterative solver is provided that employs a self-adapting process for extracting singularities for solving linear systems of equations. Thus, according to certain embodiments, a self-adapting iterative solver is provided, which is operable to determine how to adapt its performance in the presence of one or more singularities.
[0022] Thus, according to certain embodiments of the present invention, a self-adapting iterative solver is provided for solving linear systems of equations, such as commonly used for computer-based 3D modeling. In certain embodiments, the self-adapting iterative solver can identify possible singularities, and then analyzes its performance for adapting to a treatment of the possible singularities that provides a desired performance (i.e., for achieving convergence to a solution). Thus, rather than being pre-configured for providing a certain treatment of (e.g., eliminating) certain pre-identified singularities, in certain embodiments, the iterative solver adapts its treatment of singularities based on its computing performance.
[0023] For instance, an embodiment of the self-adapting iterative solver may attempt a first treatment of singularities (e.g., employing a first preconditioner for extracting certain singularities), and based on analysis of its computing performance (e.g., the number of iterations being required for convergence, and/or the computational cost of each iteration, etc.), the self-adapting iterative solver may adapt its treatment of singularities (e.g., by employing a different preconditioner for extracting singularities) to arrive at a technique for solving the linear system of equations in a manner that provides a desired performance. In adapting its performance, the self-adapting iterative solver may, in certain embodiments, extract fewer singularities than all of the pre-identified singularities and/or may identify additional singularities to extract. For instance, the self-adapting iterative solver may deduce that certain special effects or features present in the real-world system being modeled that were initially thought as possibly giving rise to a singularity do not actually result in a singularity that should be extracted for improved performance. As another example, during the course of its processing, the self-adapting iterative solver may detect further singularities (that were not pre-identified as possible singularities), which should be extracted to improve performance of the solver.
[0024] In certain embodiments, the self-adapting iterative solver adapts the preconditioner(s) used in the iterative solving process in order to treat singularities in a manner that provides a desired performance level. For instance, in certain embodiments, the self-adapting iterative solver constructs a preconditioner to extract certain singularities, and over the course of its processing the self-adapting iterative solver may modify/adapt its constructed preconditioner (e.g., to extract additional singularities that may be discovered and/or to not extract certain pre-identified possible singularities) for solving the linear system of equations.
[0025] In certain embodiments, the self-adapting iterative solver is an optimal solver that adapts its performance to treat singularities in a manner that maintains a number of iterations as would be encountered if the singularities were not present in the model. In certain embodiments, the self-adapting iterative solver may choose to adapt its performance in a manner that results in an increase in the number of iterations above the number of iterations that would be encountered if the singularities were not present in the model. However, such a self-adaptation for increasing the number of iterations may be performed intelligently by the self-adapting iterative solver (as opposed to resulting from a pre-confϊguration of the solver's operation). For instance, the self-adapting iterative solver may determine that it is more desirable in some instances to have an increase in iterations as opposed to having fewer iterations that are each extremely computationally expensive.
[0026] In certain embodiments, in analyzing its performance, the self-adapting iterative solver considers both the number of iterations and the computational expense of each iteration. For instance, in some cases a particular preconditioner may be employed for treating a singularity in a manner that greatly reduces the number of iterations for achieving convergence, but the computational expense (e.g., amount of CPU time and/or memory required) for processing each iteration may be very high. Thus, in some instances the self- adapting solver may conclude that a slight increase in the number of iterations in which each iteration is not so computationally expensive is an appropriate solution.
[0027] The relative importance of a given singularity may be based on one or more of various considerations, such as the corresponding amount of degradation in performance of the iterative solver resulting from the singularity (if the singularity were not extracted by a preconditioner). There are different possible ways to rank the singularities. One way of ranking is to assign different weights to the different singularities. In certain embodiments, the more important the singularity, the bigger the weight it is assigned. The self-adapting iterative solver may determine its treatment of possible singularities (e.g., determining a preconditioner for extracting select ones of the possible singularities) based at least in part on the relative weightings assigned to the singularities. The weightings assigned may, in certain embodiments, be updated by the self-adapting iterative solver over the course of its processing (e.g., based on the self-adapting iterative solver's evaluation of its performance in the presence of the singularities, etc.). In many instances, neglecting some of the low weighted possible singularities does not adversely influence the convergence of the iterative solver because the iterative method takes care of them.
[0028] Various exemplary techniques that may be employed by the self-adapting iterative solver for identifying possible singularities and self-adapting its treatment of those possible singularities based on its computational performance are described further herein. In certain embodiments, a two-step approach is employed by the self-adapting iterative solver for constructing a preconditioner. In such embodiments, the self-adapting iterative solver first attempts to construct a preconditioner from approximations available for the identified singularities. The self-adapting iterative solver may evaluate its performance for each such approximation, and determine those approximations for which the preconditioner' s performance is unacceptable (e.g., either converges too slowly, has undesirable computational expense for each iteration, etc.). For those singularities for which an approximation is not available or for which the performance is determined to be unacceptable, the self-adapting iterative solver employs an alternative preconditioner construction technique, such as one based on representing the solution as a sum of the singular part and its complement. Exemplary preconditioner construction algorithms that may be employed in certain embodiments are described further herein.
[0029] The foregoing has outlined rather broadly the features and technical advantages of the present invention in order that the detailed description of the invention that follows may be better understood. Additional features and advantages of the invention will be described hereinafter which form the subject of the claims of the invention. It should be appreciated by those skilled in the art that the conception and specific embodiment disclosed may be readily utilized as a basis for modifying or designing other structures for carrying out the same purposes of the present invention. It should also be realized by those skilled in the art that such equivalent constructions do not depart from the spirit and scope of the invention as set forth in the appended claims. The novel features which are believed to be characteristic of the invention, both as to its organization and method of operation, together with further objects and advantages will be better understood from the following description when considered in connection with the accompanying figures. It is to be expressly understood, however, that each of the figures is provided for the purpose of illustration and description only and is not intended as a definition of the limits of the present invention.
BRIEF DESCRIPTION OF THE DRAWINGS
[0030] For a more complete understanding of the present invention, reference is now made to the following descriptions taken in conjunction with the accompanying drawing, in which:
[0031] FIGURE 1 shows a general work flow typically employed for computer-based simulation (or modeling) of fluid flow in a subsurface hydrocarbon bearing reservoir over time; [0032] FIGURE 2 illustrates sub-domains that may be solved in non-overlapping Domain Decomposition methods;
[0033] FIGURE 3 illustrates overlapping sub-domains that are solved in overlapping Domain Decomposition methods;
[0034] FIGURE 4 shows a block diagram of an exemplary computer-based system implementing a self-adapting iterative solver according to one embodiment of the present invention;
[0035] FIGURE 5 shows a block diagram of another exemplary computer-based system implementing a self-adapting iterative solver according to an embodiment of the present invention;
[0036] FIGURE 6 shows a block diagram of another exemplary computer-based system implementing a self-adapting iterative solver according to an embodiment of the present invention;
[0037] FIGURE 7 shows an exemplary operational flow of a self-adapting iterative solver for constructing a preconditioner according to one embodiment of the present invention;
[0038] FIGURE 8 shows an exemplary operational flow of a self-adapting iterative solver for constructing a preconditioner for singularity(ies) for which an approximation is unavailable or is determined as unacceptable, according to one embodiment; and
[0039] FIGURE 9 shows an exemplary computer system which may implement all or portions of a self-adapting iterative solver according to certain embodiments of the present invention.
DETAILED DESCRIPTION
[0040] Turning to FIGURE 4, a block diagram of an exemplary computer-based system 400 according to one embodiment of the present invention is shown. As shown, system 400 comprises a processor-based computer 401, such as a personal computer (PC), laptop computer, server computer, workstation computer, multi-processor computer, cluster of computers, etc. In addition, a self-adapting iterative solver (e.g., software application) 402 is executing on such computer 401. Computer 401 may be any computational device capable of executing a self-adapting iterative solver 402 as that described further herein. While self- adapting iterative solver 402 is shown as executing on computer 401 for ease of illustration in FIGURE 4, it should be recognized that such solver 402 may be residing and/or executing either locally on computer 401 or on a remote computer (e.g., server computer) to which computer 401 is communicatively coupled via a communication network, such as a local area network (LAN), the Internet or other wide area network (WAN), etc. Further, it should be understood that computer 401 may comprise a plurality of clustered or distributed computing devices (e.g., servers) across which self-adapting iterative solver 402 may be stored and/or executed, as is well known in the art.
[0041] As with many conventional computer-based iterative solvers, self-adapting iterative solver 402 comprises computer-executable software code stored to a computer- readable medium that is readable by a processor of computer 401 and, when executed by such processor, causes computer 401 to perform the various operations described further herein for such self-adapting iterative solver 402. Self-adapting iterative solver 402 is operable to employ an iterative process for solving a linear system of equations. As discussed above, such iterative solvers are commonly used for 3D computer-based modeling. For instance, self-adapting iterative solver 402 may be employed in operational block 12 of the conventional work flow (of FIGURE 1) for 3D computer-based modeling of fluid flow in a subsurface hydrocarbon bearing reservoir. In the illustrated example of FIGURE 4, a model 406 (e.g., containing various information regarding a real-world system to be modeled, such as information regarding a subsurface hydrocarbon bearing reservoir for which fluid flow over time is to be modeled) is stored to data storage 405 that is communicatively coupled to computer 401. Data storage 405 may comprise a hard disk, optical disc, magnetic disk, and/or other computer-readable data storage medium that is operable for storing data.
[0042] As with the many conventional iterative solvers employed for 3D computer-based modeling, self-adapting iterative solver 402 is operable to receive model information 406 and perform an iterative method for solving a linear system of equations for generating a 3D computer-based model, such as a model of fluid flow in a subsurface hydrocarbon bearing reservoir over time.
[0043] According to an embodiment of the present invention, self-adapting iterative solver 402 is operable to analyze, as shown in block 403, its computational performance to determine whether to self-adapt its treatment of possible singularities in the model 406. As shown in block 404, when so determined that it should self-adapt its treatment of possible singularities in the model, the self-adapting iterative solver 402 self-adapts its treatment of the possible singularities to improve its performance in solving the linear system of equations for the 3D computer-based modeling. For instance, self-adapting iterative solver 402 may adapt its use of preconditioner(s) for extracting different ones of possible singularities in order to attain a desired computational performance.
[0044] Thus, rather than being restricted to performing some pre-configured elimination of pre-identifϊed singularity (ies), embodiments of self-adapting iterative solver 402 are operable to self-adapt their treatment of singularities. As one example, self-adapting iterative solver 402 may be an optimal solver that is expected to converge in a given number of iterations, say 10 iterations, irrespective of the size of model 406. However, due to encountering certain singularities in model 406, the performance of self-adapting iterative solver 402 may be degraded to result in requiring more than 10 iterations to converge, unless the self-adapting iterative solver 402 adapts its treatment of such singularities. In certain embodiments, self-adapting iterative solver 402 adapts its treatment of the singularities (e.g., by constructing preconditioner(s) for extracting select ones of the identified possible singularities) so as to arrive at a processing technique that converges in the desired 10 iterations. As mentioned above, in certain embodiments, self-adapting iterative solver 402 may intelligently choose to employ a processing technique that increases the number of iterations for convergence (e.g., more than 10 in the above example), if the computational expense of each iteration would otherwise be deemed too expensive. Various exemplary ways in which embodiments of self-adapting iterative solver 402 may evaluate its performance and adapt its treatment of singularities are discussed further herein.
[0045] Turning to FIGURE 5, a block diagram of another exemplary computer-based system 500 according to an embodiment of the present invention is shown. As with exemplary system 400 of FIGURE 4, system 500 comprises a processor-based computer 401 on which an embodiment of a self-adapting iterative solver 402, shown as self-adapting iterative solver 402A in this example, is executing. Also, as in the example of FIGURE 4, a model 406 (e.g., containing various information regarding a real-world system to be modeled, such as information about a subsurface hydrocarbon bearing reservoir for which fluid flow over time is to be modeled) is stored to data storage 405 that is communicatively coupled to computer 401. As discussed above, self-adapting iterative solver 402A is operable to receive model information 406 and perform an iterative method for solving a linear system of equations for generating a 3D computer-based model, such as a model of fluid flow in a subsurface hydrocarbon bearing reservoir over time, as may be employed in block 12 of the exemplary flow of FIGURE 1.
[0046] In the exemplary embodiment of FIGURE 5, self-adapting iterative solver 402 A identifies possible singularities in block 501. Possible singularities in the model may be identified in various ways. For instance, certain possible singularities may be pre -identified (e.g., by users, such as engineers, analysts, etc.) based on known information about the real- world system being modeled, and the pre-identifϊed possible singularities for model 406 may be cataloged (stored) to a catalog 505 (e.g., any appropriate computer-readable data structure, such as a file, database, etc.), which is stored to data storage 405. Thus, various features known to exist in the real-world system being modeled that are suspected to give rise to a singularity may be pre-identifϊed in catalog 505. For example, in modeling of fluid flow in a subsurface hydrocarbon bearing reservoir, common features that may give rise to a singularity in the model, which may be pre -identified in the target area to be modeled may include the presence of certain geologic features (e.g., faults, large fractures, pinch-outs, etc.) and/or certain engineered features (e.g., horizontal, slanted, and vertical wells, connected facility network, etc.).
[0047] In addition, in certain embodiments self-adapting iterative solver 402A may itself discover some possible singularities during its processing of the model. For instance, during processing, solver 402A may identify possible singularities through its analysis of the equations (e.g., matrices) being processed. For example, abnormal matrix entries or constructions (e.g., extremely large entries, a matrix that is not diagonally dominant, positive off-diagonal entries in a M-matrix, etc.) for a given modeling process may be recognized by the self-adapting iterative solver 402A as a possible singularity being present in the corresponding portion of the model.
[0048] In certain embodiments, self-adapting iterative solver 402 A maintains a list 506 (which may be in the form of any appropriate computer-readable data structure, such as a file, database, etc.), which is stored to data storage 405, where such list 506 identifies the current singularities that self-adapting iterative solver 402A is to extract. Exemplary techniques that may be employed for extracting the singularities are discussed further herein below. In one embodiment, as possible singularities are identified in block 501, they are added to the list 506 of current singularities to be extracted. Of course, as discussed further herein, the list 506 is dynamic and may be modified by self-adapting iterative solver 402 A as it determines how best to adapt its treatment of singularities for providing a desired level of performance. As further described herein, in certain embodiments, the list of current singularities and/or catalog of pre-identified possible singularities may include respective weightings assigned to the singularities.
[0049] In block 502, the self-adapting iterative solver 402A constructs a preconditioner that extracts the current singularities (i.e., those singularities identified on list 506). Initially, this list 506 may include all possible singularities pre-identified in catalog 505. As discussed further herein, in some instances one or more of such possible singularities may be removed from the current list 506 (such that they are not extracted) and/or one or more possible singularities discovered by the self-adapting iterative solver 402A (e.g., through analysis of the matrices being processed) may be added to the current list 506. Again, exemplary techniques that may be employed in block 502 for constructing a preconditioner for extracting selected singularities (i.e., those on the current list 506) are discussed further herein below. A determination of singularities to be included on current list 506 (for extraction by a preconditioner) and those to be removed from the list 506 may be based, in certain embodiments, at least in part on the relative weightings assigned to the singularities. For instance, singularities assigned a high weighting may be deemed to have a high degradation on performance of the iterative solver if not extracted, and those assigned a low weighting may be deemed to have a lower degradation on performance of the iterative solver; in which case, those singularities having the highest weighting may be selected for inclusion on the current list 506 for extraction by a preconditioner.
[0050] In block 503, the self-adapting iterative solver 402 A uses the constructed preconditioner in its iterative solving of the linear system of equations for determining the corresponding portion of the 3D computer-based model. Exemplary preconditioners that may be employed in certain embodiments, and their use for iterative solving of the linear system of equations, are described further herein. Of course, embodiments of the present invention are not limited to use of any particular preconditioners, but instead certain embodiments may be implemented to self-adapt for application of any of various different preconditioners.
[0051] In block 403, self-adapting iterative solver 402 A analyzes its performance to determine whether to self-adapt its treatment of possible singularities in the model. While shown as a linear flow for ease of illustration in FIGURE 5, it should be recognized that the various operations are not restricted to the order in which they are shown and certain ones of the blocks may be performed in parallel. For instance, in certain embodiments, while processing the constructed preconditioner in block 503, self-adapting iterative solver 402 A may analyze its performance to determine whether to adapt its treatment of singularities. When so determined that it should self-adapt its treatment of possible singularities, the self- adapting iterative solver 402A self-adapts its treatment of the possible singularities in block 404. It may, in some instances, interrupt its processing in block 503 before the iterative process of block 503 converges to a solution, in order to self-adapt its treatment of possible singularities in block 404.
[0052] In certain embodiments, as part of the analysis in block 403, self-adapting iterative solver 402A balances, in block 504, a gain in iterative performance (e.g., reduction in number of iterations for convergence) obtained through use of a preconditioner for excluding select singularities (on list 506) versus the computation expense of the preconditioner in each iteration. For example, in analyzing its performance in block 403, self-adapting iterative solver 402A may consider both the number of iterations for convergence and the computational expense of each iteration. For instance, in some cases a particular preconditioner may be employed for treating the current singularity(ies) (from list 506) in a manner that greatly reduces the number of iterations for achieving convergence, but the computational expense (e.g., amount of CPU time and/or memory required) for processing each iteration may be very high. Thus, in some instances, self-adapting iterative solver 402A may conclude, in block 504, that a slight increase in the number of iterations in which each iteration is not so computationally expensive is an appropriate solution.
[0053] Turning to FIGURE 6, a block diagram of another exemplary computer-based system 600 according to an embodiment of the present invention is shown. As with exemplary systems 400 of FIGURE 4 and 500 of FIGURE 5, system 600 comprises a processor-based computer 401 on which an embodiment of a self-adapting iterative solver 402, shown as self-adapting iterative solver 402B in this example, is executing. Also, as in the example of FIGURE 5, a model 406 (e.g., containing various information regarding a real-world system to be modeled, such as information about a subsurface hydrocarbon bearing reservoir for which fluid flow over time is to be modeled), a catalog 505 of pre- identified possible singularities, and list 506 of current singularities to be extracted are stored to data storage 405 that is communicatively coupled to computer 401. As discussed above, self-adapting iterative solver 402B is operable to receive model information 406 and perform an iterative method for solving a linear system of equations for generating a 3D computer- based model, such as a model of fluid flow in a subsurface hydrocarbon bearing reservoir over time, as may be employed in block 12 of the exemplary flow of FIGURE 1.
[0054] In the exemplary embodiment of FIGURE 6, self-adapting iterative solver 402B may be used in a work flow such as that described above in FIGURE 1. For instance, self- adapting iterative solver 402B may be used in a time stepping loop 601, such as the exemplary outer loop 102 of FIGURE 1, wherein various operations discussed hereafter may be performed in the time stepping loop 601.
[0055] In block 602, the physical problem (e.g., model 406 and/or the corresponding real- world system) and/or the linear system is inspected to identify current and possible new singularities. Possible singularities in the model may be identified in various ways. For instance, certain possible singularities may be pre-identifϊed (e.g., by users, such as engineers, analysts, etc.) based on known information about the real-world system being modeled, and the pre-identified possible singularities for model 406 may be cataloged (stored) to a catalog 505 (e.g., any appropriate computer-readable data structure, such as a file, database, etc.), which is stored to data storage 405. That is, certain pre-processing 610 may be performed for initially populating catalog 505 with pre-identified possible singularities. Thus, various features known to exist in the real-world system being modeled that are suspected to give rise to a singularity may be pre-identified in catalog 505. For example, in modeling of fluid flow in a subsurface hydrocarbon bearing reservoir, common features that may give rise to a singularity in the model, which may be pre-identified in the target area to be modeled may include the presence of certain geologic features (e.g., faults, large fractures, pinch-outs, etc.) and/or certain engineered features (e.g., horizontal, slanted, and vertical wells, connected facility network, etc.).
[0056] In this exemplary embodiment, in every time step of time stepping loop 601, the linear system is examined for the current singularities and possible new singularities due to the changes in the physical system, such as wells being turned on and off, switching from primary production to water or gas displacement, and/or other changes occurring within a subsurface hydrocarbon bearing reservoir being modeled. In the beginning, all cataloged possible singularities are checked. That is, the self-adapting iterative solver may evaluate each of the possible singularities cataloged in catalog 505 to determine whether they are actual singularities (i.e., whether their presence actually degrades the convergence of the iterative method employed by the solver 402B), and those determined to be actual singularities that degrade performance of the iterative method to some extent are added to the list 506 of current singularities to be removed.
[0057] In addition, in block 603, self-adapting iterative solver 402B may itself discover some possible singularities based on its inspection of the matrices being processed for the model 406. For example, abnormal matrix entries or constructions (e.g., extremely large entries, a matrix that is not diagonally dominant, positive off-diagonal entries in a M-matrix, etc.) for a given modeling process may be recognized by the self-adapting iterative solver 402B as a possible singularity being present in the corresponding portion of the model.
[0058] In certain embodiments, self-adapting iterative solver 402B maintains a list 506 (which may be in the form of any appropriate computer-readable data structure, such as a file, database, etc.), which is stored to data storage 405, where such list 506 identifies the current singularities that self-adapting iterative solver 402B is to extract. Initially, this list 506 may include all possible singularities pre -identified in catalog 505 and determined in block 603.
However, the list 506 of current singularities to be extracted is dynamic and thus may be adjusted by self-adapting iterative solver 402B over the course of processing of model 406.
[0059] In block 604, the self-adapting iterative solver 402B constructs a preconditioner that extracts the current singularities (i.e., those singularities identified on list 506). As discussed further herein, in some instances one or more of such possible singularities may be removed from the current list 506 (such that they are not extracted) and/or one or more possible singularities discovered by the self-adapting iterative solver 402B (e.g., through analysis of the matrices being processed) may be added to the current list 506. Again, exemplary techniques that may be employed in block 604 for constructing a preconditioner for extracting selected singularities (i.e., those on the current list 506) are discussed further herein below.
[0060] In block 605, the self-adapting iterative solver 402B uses the constructed preconditioner in its iterative solving of the linear system of equations for determining the corresponding portion of the 3D computer-based model. Exemplary preconditioners that may be employed in certain embodiments, and their use for iterative solving of the linear system of equations, are described further herein. Of course, embodiments of the present invention are not limited to use of any particular preconditioners, but instead certain embodiments may be implemented to self-adapt for application of any of various different preconditioners. [0061] In block 606, self-adapting iterative solver 402B analyzes performance of the preconditioner, and if desired, makes adjustments to the preconditioner to improve the solver's computational performance. In block 607, the list 506 of the current singularities may be updated to, for example, reflect any changes in the singularities that are to be extracted, as determined in block 606. While shown as a linear flow for ease of illustration in FIGURE 6, it should be recognized that the various operations are not restricted to the order in which they are shown and certain ones of the blocks may be performed in parallel. For instance, in certain embodiments, while processing the constructed preconditioner in block 605, self-adapting iterative solver 402B may analyze its performance (block 606) to determine whether to adapt its treatment of singularities. When so determined that it should self-adapt its treatment of possible singularities, the self-adapting iterative solver 402B self- adapts its treatment of the possible singularities by updating (in block 607) the list 506 of current singularities to be extracted. It may, in some instances, interrupt its processing in block 605 before the iterative process of block 605 converges to a solution, in order to self- adapt its list 506 of current singularities to be extracted in block 607, wherein its operation may thereafter return to block 602 to eventually construct (in block 604) another preconditioner for extracting the revised current list 506 of singularities.
[0062] When determined in block 608 that the self-adapting iterative solver 402B has converged to solution for the current time interval of the model that is being processed, the operation may advance, in block 609, to the next time interval to be processed, just as in the outer loop 102 of the exemplary work flow of FIGURE 1.
[0063] Not all of the singularities impact the linear system in a bad way all of the time. For example, if a well is shut-in in a subsurface hydrocarbon bearing reservoir being modeled, there is no influence on the linear system. In this exemplary embodiment, the self- adapting iterative solver 402B may investigate each possible singularity (physically bounded) by taking a small patch of the model and analyzing the corresponding linear system and its solution. If there is some abnormal behavior, either of the linear system (like large condition number) or its solution, then the singularity is selected for extraction (i.e., added to the list 506 of current singularities). Otherwise, the possible singularity is not included (i.e., may be removed from) the list 506 for the current time step. Frequently, it is enough just to check if there are changes in the model 406. For example, if a well is producing and it used to cause problems for the linear system, it may be assumed that it will continue to do so. [0064] In one embodiment, the performance analysis (e.g., of block 403 of FIGURE 4 or block 606 of FIGURE 6) inspects the behavior of the iterative solver to try to improve iterative performance and/or CPU/Wall clock performance of the self-adapting iterative solver. Iterative performance may be improved through adding neglected singularities, discovering new singularities, and/or improving the treatment of the current singularities. CPU/Wall clock performance may be improved by adjusting the preconditioner's operation in certain embodiments. For instance, if the iterative performance is good, but the preconditioner becomes computationally expensive, the self-adapting iterative solver may, in certain embodiments, choose to neglect some of the singularities and/or relax the treatment of certain singularities.
[0065] Ideally, improving the iterative performance should improve the CPU/Wall clock performance, but that is not always the case. Making the preconditioner very expensive, i.e., "too good", can lead to a few but very expensive iterations. Making the preconditioner very cheap, but not efficient generally does not provide a good solution either. One way employed by certain embodiments for achieving a compromise is to rank the current singularities by importance and keep the most important, i.e., with the highest rank. One possible way is to give weights to different singularities and the bigger the weight the higher the rank. The weights are updated during the simulation run and the changes reflect the performance. Neglecting some of the low-order singularities frequently does not influence adversely the convergence because the iterative method takes care of them.
[0066] There are several approaches that may be employed for assigning weights to different singularities. One approach that may be employed in accordance with certain embodiments is to assign static weights based on the type of the singularity. For example, vertical wells may be assigned a weight of 1, slanted wells may be assigned a weight of 2, horizontal wells may be assigned a weight of 3, etc. These static weights may be based on analysis of results from previous runs (processed with some statistical tools) and/or may be based on application of some theoretical assumptions. A more sophisticated approach that may be employed in accordance with certain embodiments is to dynamically adapt the weights based on the performance of the iterative solver. For instance, this approach may start with fixed weights used on a first run (e.g., a first 3D modeling employing the iterative solver), and on a next run some of the weights may be changed and the corresponding performance of the iterative solver analyzed. For example, the approach may solve a linear system of equations once with weightings assigned as: 3 for a first horizontal well, and 3 for a second horizontal well. Next, the linear system of equations may be solved with weight 2 assigned to the first horizontal well and weight 4 assigned to the second horizontal well. The performance of the first and second iterative methods may be compared, and the approach may continue adjusting the weights based on the determined performance comparisons. It may turn out, for instance, that the first well is not important and it can be dropped from the current list of singularities. By employing an approach in which only a fixed number of singularities with the highest assigned weights are taken into account, for example, the first well may drop out of the current list of singularities once this approach lowers its relative weighting sufficiently.
[0067] Various different algorithms may be employed for extracting singularities. Different singularities can require different methods for extraction. As one exemplary algorithm that may be employed, consider singularities that are bounded physically, such as a singularity encountered in a portion of a model of fluid flow in a subsurface hydrocarbon bearing reservoir that is bounded physically. In one embodiment, it is supposed that the fluid behavior in and around a given singularity can be approximated with a simpler model, and this simpler model does not impact adversely the linear system. For example, complicated well models usually impact adversely the quality of the preconditioner. Simple well models behave much better. If the complicated well models can be approximated with simple well models, then the resulting preconditioner is expected to be much better. Sometimes, the approximation cannot solve the problem, but the dimension of the "bad" part is considerably reduced. In one embodiment, a second step is applied that involves a special small rank update procedure. A similar approach can be used for geologic singularities like fractures that may be encountered in the subsurface hydrocarbon bearing reservoir being modeled.
[0068] According to one embodiment, two preconditioners are considered for identified physically-bounded singularities. Initially, for each physically-bounded singularity, a sub- domain is chosen that contains the singularity and small strip around it. An exemplary two- step process that may be employed for constructing a preconditioner to be used for such a singularity in certain embodiments is discussed below. That is, in certain embodiments the exemplary two-step approach described below is employed for constructing a preconditioner (e.g., in block 604 of FIGURE 6).
[0069] First, each singularity is replaced with an appropriate approximation (e.g., which may be performed as part of block 604 of FIGURE 6). A global preconditioner is then constructed (e.g., which may be performed as part of block 604 of FIGURE 6), wherein the global preconditioner comprises the original problem outside the singularities and the determined approximation inside the singularities. In certain embodiments, an Additive or Multiplicative Schwarz may be applied with the global preconditioner and the sub-domains. Overlapping or non overlapping versions can be used.
[0070] The quality of the approximation of a given singularity is then evaluated (e.g., which may be performed as part of block 606 of FIGURE 6). For instance, the quality of the approximation may be evaluated either using a local patch that contains it and examining the linear system, or observing the convergence behavior of the preconditioner. That is, the given singularity can be approximated, and the linear solve can be performed on the approximation. Whether the convergence is acceptable when using the approximation is then determined. If determined that the convergence is not acceptable, then the alternative preconditioner construction technique discussed below is used in the next time step (e.g., following the next time interval 609 in the exemplary time stepping loop of FIGURE 6).
[0071] In the alternative preconditioner construction technique of this exemplary embodiment, another preconditioner is used when there is no available good approximation, or the approximation still impacts adversely the linear system. In one embodiment, the solution is computed as a sum of two terms. The first is the orthogonal projection into the "singularity space," and the second is its complement. Any preconditioner for the "good part" can be used including the one in the previous step.
[0072] A given singularity may be viewed as contained in a singularity space, which may include certain features/characteristics that can be approximated well and may also include certain other features/characteristics for which a good approximation is not available. According to certain embodiments, the singularity space may be divided into a portion that can be approximated well (which may be referred to as a "good" part) and a portion that cannot be approximated well (which may be referred to as a "bad" part). Accordingly, in certain embodiments, the self-adapting iterative solver is operable to extract the "bad" part from a singularity space, thereby resulting in a remaining good part that can be approximated well.
[0073] A given singularity space "X" can be considered as having a corresponding dimension (corresponding to the size of the submatrix that describes the singularity), say dimension "dim(X)". The solver may first attempt to approximate the singularity with a simpler model having a reduced dimension, say in a space "Y" with dimension "dim(Y)" (wherein dim(Y)<dim(X)). The space "Y' is a part of the singularity space "X". A portion of the singularity that is not approximated well may remain. This portion is in a space "Z" with dimension "dim(Z), where "dim(Z)=dim(X)-dim(Y)", i.e. what is left from the singularity space after we have taken out "Y". In certain embodiments, the approximated portion in the space "Y" of the singularity space is considered a "good" part of the singularity space, which may be treated using an appropriate preconditioner, while the remaining "Z" portion of the singularity space is referred to as a "bad" part of the singularity space that may be treated in a different manner. Thus, according to certain embodiments, for any singularities for which an approximation is not available (as determined in block 701) or for which the quality of the approximation is determined unacceptable (in block 703), the self-adapting iterative solver 402 attempts to extract the "bad" part. Thus, when an appropriate approximation is not available for a given singularity or the quality of such an approximation is unacceptable, in certain embodiments the solver extracts a "bad" part of the singularity such that the remaining good part can be modeled by an approximation that is acceptable.
[0074] Suppose, as an example, that the original problem has dimension 1,000,000 and there is a singularity with dimension 100. Further suppose that the solver attempts to approximate this singularity with a simpler one having a dimension of, say, 90. If the performance of a first preconditioner is determined as acceptable, it is used. Otherwise, if the performance of the first preconditioner is determined as unacceptable, then the second step discussed further herein is employed. Conceptually, with the approximation of the singularity, some of the 100 singularity modes are suppressed, say 90 of the singularity modes may be suppressed by the approximation. The 10 remaining singularity modes are referred to as the "bad" modes (or "bad" part) remaining to be taken care of. Unfortunately, we do not know explicitly which they are. In this example, the "bad", or the singularity part will have dimension 10, and the "good" part, 1,000,000 - 10. Further, in this example, the number of iterations to remove the "bad" part will be proportional to 10, such as 0(10). In general, we may use only the second algorithm, but the amount of computations depends on the number of the "bad" modes, and it is computationally more efficient first to approximate and decrease the number of not resolved modes. Thus, improved performance may be achieved through the recognition of the "good" and "bad" parts of the identified singularity space, and treating each of the good and bad parts appropriately, such as discussed further herein. [0075] Thus, according to certain embodiments the self-adapting iterative solver is operable to, responsive to identifying a singularity, determine whether an acceptable approximation is available for the singularity. If there is a good approximation available, then a corresponding preconditioner for the approximation is used for iteratively solving the singularity. When determined that there is not an acceptable approximation available (i.e., either there is no available good approximation or an approximation is determined to still adversely impact the linear system), then the iterative solver extracts a bad portion of the singularity to result in a remaining good portion of the singularity for which a good approximation is available. An appropriate preconditioner for the approximation of the good portion of the singularity is then used for iteratively solving the good portion of the singularity. In certain embodiments, the extracted bad portion of the singularity may be treated differently. The treatment of the bad portion of the singularity may be computationally less efficient than the treatment of the good portion, but overall the computationally is improved as a result of extracting from the singularity the "bad" portion, thereby enabling the "good" portion to be iteratively solved in a computationally efficient manner.
[0076] Now, consider groups of singularities that are difficult to isolate physically, but they can be isolated in some other manner. For example, if there are only a few isolated eigenvalues of the preconditioned system, deflation may be used. For more information regarding deflation, see R. Nabben and C. Vuik, "A Comparison of deflation and Coarse grid correction applied to porous media flows," SIAM H. Numer. Anal., v. 42, 1631-1647; and see J. Frank and C. Vuik, "On the construction of deflation-based preconditioners," SIAM J. Sci. Comput, v. 23, 442-462. In general, it is more difficult to check for the existence of such singularities. In certain embodiments, their existence is deduced from the iterative behavior of the preconditioner.
[0077] Thus, an exemplary workflow for constructing a preconditioner (e.g., in block 604 of FIGURE 6) according to one embodiment of self-adapting iterative solver 402 is described further with FIGURE 7. In block 71, self-adapting iterative solver 402 separates current singularities into two groups: a) physically bounded, and b) eigenvalue bounded. In one embodiment, the eigenvalue bounded singularities are more general and include the physically bounded singularities. The algorithms for the physically bounded singularities are generally easier to implement, and are usually more efficient. If there only a few eigenvalues that are not suppressed, the deflation algorithm can help, although they are more difficult to implement and could be computationally expensive. An example of a physical feature that can lead to a problem (not suppressed eigenvalue) is a layer with drastically different properties in the porous media of a subsurface hydrocarbon bearing reservoir being modeled. Such problems can be identified by the users who build the models or, for very complex models, by pattern recognition algorithms. There are efficient deflation algorithms for such simplified cases.
[0078] The self-adapting iterative solver 402 attempts to construct a preconditioner for the physically bounded singularities in block 72. For the physically bounded singularities, the self-adapting iterative solver 402 determines in block 701, for each physically-bounded singularity, whether an approximation of the singularity is available. For those singularities for which an approximation is available, the approximation(s) are used for approximating the singularity(ies), in block 702. The self-adapting iterative solver 402 evaluates the quality of the approximation (e.g., determines whether the convergence is acceptable, as discussed above) in block 703. For each singularity whose quality is determined to be acceptable in block 703, the approximation of such singularity is used in the construction of the preconditioner, as shown in block 704.
[0079] For any singularities for which an approximation is not available (as determined in block 701) or for which the quality of the approximation is determined unacceptable (in block 703), the self-adapting iterative solver 402 attempts to extract the "bad" part (e.g., using the second algorithm discussed further below) in block 73.
[0080] Conventionally, a self-adapting approach for constructing a preconditioner, such as the exemplary approach of FIGURE 7, has not been employed by iterative solvers. Rather, conventional iterative solvers may be pre-configured to utilize an approximation of singularities or to use deflation for constructing a preconditioner, but conventional iterative solvers have not been self-adapting to potentially employ either or both construction techniques, such as employed in the exemplary approach of FIGURE 7. A pre-configured approach implemented for conventional iterative solvers often fails to provide a desired computational performance, and certain embodiments of a self-adapting iterative solver as described herein may self-adapt its approach for constructing preconditioners (such as discussed in the above example of FIGURE 7) in order to improve the computational performance. [0081] According to one embodiment, the convergence of an iterative method for a given matrix A is determined by the distribution of the eigenvalues (at least for symmetric matrices). Suppose the eigenvalues are between the numbers a=l and b=l, 000,000. Then, the number of iterations in the iterative solver should be proportional to the square root of (b/a) ~ 1000. To improve the convergence, in certain embodiments, a preconditioner is introduced as B 1A, which may reduce the number of eigenvalues. For instance, continuing with the above example, the eigenvalues of B 1A may be between c=l and d=100. Then, the number of iterations of the iterative solver for processing the preconditioner is proportional to square root of (d/c).
[0082] In general, MultiGrid and domain decomposition algorithms "move" the eigenvalues to the left-hand side of the spectrum and improve the convergence of an iterative solver. However, if there are singularities present, their eigenvalues are not touched (i.e., not moved to the left-hand side of the equation). According to certain embodiments of the present invention, algorithms are employed to "move" the untouched eigenvalues. The deflation algorithms mentioned herein may also be employed in some instances to "move" the eigenvalues to the left, but they need to have an approximation of the eigenvectors, which is rarely available. For this reason, the deflation algorithms are generally considered as a last resort in certain embodiments. In some well-studied cases, such as layer of the porous media with drastically different properties, this can be done efficiently.
[0083] Exemplary preconditioners that may be constructed according to certain embodiments are now briefly discussed. That is, exemplary algorithms may be employed for constructing a preconditioner according to certain embodiments are discussed further below. Of course, embodiments of the present invention are not limited to use of the exemplary preconditioner construction algorithms described below.
[0084] First, an algorithm that may be employed for constructing a preconditioner based on an approximation of one or more singularities is discussed. Thus, this exemplary algorithm may be employed in block 72 of FIGURE 7. Consider the matrix
A = the block A33 corresponds for the singularities, A22 is the strip
Figure imgf000027_0001
around them, and An is the rest. Suppose we can approximate A33 with another matrix A33 . Then, the overlapping additive version of the first preconditioner is: M u = M ^u + Mw u ,
where M R „S„ = 71 Αry J Αry O
Figure imgf000028_0001
Figure imgf000028_0002
[0085] That is, the action of the preconditioner M has two independent steps that can be executed independently (even in parallel if parallel processing is used). The first one is solving: (1) M RSxRS = u ; and the second one is solving: (2) Mwxw = u . Then, the action of the preconditioner M~ on the vector u is the defined by M ~ u = X1^ + xw.
[0086] The exact solves above, i.e., (1) and (2), can be replaced with any available preconditioner. If the approximation matrix A33 has different dimension, then it may be restricted and interpolated, such as follows:
Mtw P : u — > u , R : u — > u.
Figure imgf000028_0003
[0087] For example, if there are 100 variables that described the singularities, i.e., ^33 is
100x100 matrix, and they are approximated with an approximation that has 50 variables, the solution should define how to move from 100 to 50 variables and back. One possible action is U3 1 = U3 1 + U3 2 , i.e., the first from the approximated variable is equal to the sum of the first two not approximated variables, and so on. In the other direction, U3 1 = U3 1, U3 2 = U3 1 , i.e., the first two not approximated variables are equal to the first approximated variable, and so on.
[0088] It should be noted that if M~ s l = is used, then the convergence will
Figure imgf000028_0004
depend on the mesh size and will deteriorate for large problems.
M = O [0089] The multiplicative version is as follows: u = Mj(b - Au) .
Figure imgf000028_0005
[0090] The non-overlapping algorithm is a little more complicated. Suppose γ denotes the boundary of the singularities. Further suppose that either there are unknowns on the boundary or additional unknowns are introduced, and the resulting system A produces the
same solution as A : A =
Figure imgf000029_0001
[0091] In certain embodiments, an extension operator e and its matrix representation E are introduced. The operator e starts from the boundary of the singularity and "extends" the solution inside it. It does not change anything outside the singularity. Mathematically, the extension operator e is defined as:
A33 A37U7
Figure imgf000029_0003
Figure imgf000029_0004
The operator e , the transpose operator of e "extends" from the singularity to the interface without changing anything else.
[0092] Suppose A^ is a matrix from the approximation with Neumann boundary condition on γ . Then, M-1M = EA^~ ET + A33 1 , i.e.,
M-1M = xN + X3, EAN 1E1XN = u, A33X3 = U3. The multiplicative version also can be applied. The matrices AN 1 and A33 1 can be replaced by preconditioners, thereby constructing preconditioners based on this approximation of the singularity (ies).
[0093] Further, in certain embodiments, an algorithm that may be employed for constructing an alternative preconditioner when an approximation is not available or has unacceptable quality (e.g., as determined in blocks 701 or 703 of FIGURE 7 discussed above). Thus, this exemplary second algorithm may be employed in block 73 of FIGURE 7. Suppose the original algebraic system is Ku(A + B)u = b ,
Figure imgf000029_0002
A = where the A22 matrix is easily invertible and the rank
Figure imgf000030_0001
of B is much smaller than the rank of K. The dimension of U2 is much smaller than the dimension of U1.
[0094] Define T = A~lB , (l + T)u = g, g = A~lb .
[0095] Thus, this exemplary second algorithm may be implemented by the self-adapting iterative solver 402 (e.g., for performance of block 73 of FIGURE 7) according to the exemplary operational flow of FIGURE 8. Consider that P11111, denotes the orthogonal projector from RN onto ImT. In block 801, the action of the operator PlmT on an arbitrary vector w is defined as normal solution of the system of equations TT W11111, = TT W, i.e., r = PlmTw = TT w . This can be done by any available method, for example using the conjugate gradient (CG) method with trivial (zero) initial step (dim (ImT) iterations at most). This is defined by the "good" part corresponding to the matrix A and the "bad" part corresponding to the matrix B . Certain embodiments may be implemented to first reduce the dimension of the "bad" part with an approximation of the singularity and using an algorithm of the first type.
[0096] In block 802, the self-adapting iterative solver 402 computes uKerT. = g - P^g ■
[0097] In block 803, the self-adapting iterative solver 402 computes the right-hand side of the system: q = Ptarg - T(g - P^g) .
[0098] In block 804, the self-adapting iterative solver 402 solves the system
[0099] (/ + T)P^1 [I + T jv = q. This can be done by any method, for example by CG method with trivial (zero) initial step (dim (ImT) iterations at most), but for each iteration it multiplies by the operator P11111, .
[0100] In block 805, the self-adapting iterative solver 402 computes ulmT = PlmT [I + T* )v . And, in block 806, the self-adapting iterative solver 402 determines the solution as u = M11111, + uKerT. . [0101] Embodiments, or portions thereof, may be embodied in program or code segments operable upon a processor-based system (e.g., computer system) for performing functions and operations as described herein for the self-adapting iterative solver. The program or code segments making up the various embodiments may be stored in a computer-readable medium, which may comprise any suitable medium for temporarily or permanently storing such code. Examples of the computer-readable medium include such physical computer- readable media as an electronic memory circuit, a semiconductor memory device, random access memory (RAM), read only memory (ROM), erasable ROM (EROM), flash memory, a magnetic storage device (e.g., floppy diskette), optical storage device (e.g., compact disk (CD), digital versatile disk (DVD), etc.), a hard disk, and the like.
[0102] FIGURE 9 illustrates an exemplary computer system 900 on which software for performing processing operations of the above-described self-adapting iterative solver according to embodiments of the present invention may be implemented. Central processing unit (CPU) 901 is coupled to system bus 902. CPU 901 may be any general-purpose CPU. The present invention is not restricted by the architecture of CPU 901 (or other components of exemplary system 900) as long as CPU 901 (and other components of system 900) supports the inventive operations as described herein. CPU 901 may execute the various logical instructions according to embodiments. For example, CPU 901 may execute machine-level instructions for performing processing according to the exemplary operational flows of embodiments of the self-adapting iterative solver as described above in conjunction with FIGURES 4-8.
[0103] Computer system 900 also preferably includes random access memory (RAM) 903, which may be SRAM, DRAM, SDRAM, or the like. Computer system 900 preferably includes read-only memory (ROM) 904 which may be PROM, EPROM, EEPROM, or the like. RAM 903 and ROM 904 hold user and system data and programs, as is well known in the art.
[0104] Computer system 900 also preferably includes input/output (I/O) adapter 905, communications adapter 911, user interface adapter 908, and display adapter 909. I/O adapter 905, user interface adapter 908, and/or communications adapter 911 may, in certain embodiments, enable a user to interact with computer system 900 in order to input information. [0105] I/O adapter 905 preferably connects to storage device(s) 906, such as one or more of hard drive, compact disc (CD) drive, floppy disk drive, tape drive, etc. to computer system 900. The storage devices may be utilized when RAM 9703 is insufficient for the memory requirements associated with storing data for operations of embodiments of the present invention. The data storage of computer system 900 may be used for storing such information as a model (e.g., model 406 of FIGURES 4-6), a catalog of pre -identified possible singularities (e.g., catalog 505 of FIGURES 5-6), a list of singularities (e.g., list 506 of FIGURES 5-6), and/or other data used or generated in accordance with embodiments of the present invention. Communications adapter 911 is preferably adapted to couple computer system 900 to network 912, which may enable information to be input to and/or output from system 900 via such network 912 (e.g., the Internet or other wide-area network, a local-area network, a public or private switched telephony network, a wireless network, any combination of the foregoing). User interface adapter 908 couples user input devices, such as keyboard 913, pointing device 907, and microphone 914 and/or output devices, such as speaker(s) 915 to computer system 900. Display adapter 909 is driven by CPU 901 to control the display on display device 910 to, for example, display information pertaining to a model under analysis, such as displaying a generated 3D representation of fluid flow in a subsurface hydrocarbon bearing reservoir over time, according to certain embodiments.
[0106] It shall be appreciated that the present invention is not limited to the architecture of system 900. For example, any suitable processor-based device may be utilized for implementing all or a portion of embodiments of the present invention, including without limitation personal computers, laptop computers, computer workstations, and multi-processor servers. Moreover, embodiments may be implemented on application specific integrated circuits (ASICs) or very large scale integrated (VLSI) circuits. In fact, persons of ordinary skill in the art may utilize any number of suitable structures capable of executing logical operations according to the embodiments.
[0107] Although the present invention and its advantages have been described in detail, it should be understood that various changes, substitutions and alterations can be made herein without departing from the spirit and scope of the invention as defined by the appended claims. Moreover, the scope of the present application is not intended to be limited to the particular embodiments of the process, machine, manufacture, composition of matter, means, methods and steps described in the specification. As one of ordinary skill in the art will readily appreciate from the disclosure of the present invention, processes, machines, manufacture, compositions of matter, means, methods, or steps, presently existing or later to be developed that perform substantially the same function or achieve substantially the same result as the corresponding embodiments described herein may be utilized according to the present invention. Accordingly, the appended claims are intended to include within their scope such processes, machines, manufacture, compositions of matter, means, methods, or steps.

Claims

CLAIMSWhat is claimed is:
1. A method comprising: identifying, by a self-adapting iterative solver, at least one singularity present in a linear system of equations; constructing, by said self-adapting iterative solver, a first preconditioner for use in solving said linear system of equations; determining, by said self-adapting iterative solver, whether computational performance of the first preconditioner is acceptable; and when determined that the computational performance of the first preconditioner is unacceptable, constructing, by said self-adapting iterative solver, an alternative preconditioner for use in solving said linear system of equations.
2. The method of claim 1 wherein the alternative preconditioner suppresses a determined bad part of the identified at least one singularity, thereby resulting in acceptable computational performance for a remaining good part of the identified at least one singularity.
3. The method of claim 2 wherein the alternative preconditioner comprises the first preconditioner employed for iterative Iy solving the remaining good part of the identified at least one singularity.
4. The method of claim 1 wherein said identifying comprises identifying a plurality of singularities, and wherein said first preconditioner is used for extracting some of the plurality of singularities for solving said linear system of equations, and wherein said alternative preconditioner is used for extracting a remaining portion of the plurality of singularities for solving said linear system of equations.
5. The method of claim 4 further comprising: employing a deflation algorithm for extracting a further remaining portion of the plurality of singularities for solving said linear system of equations.
6. The method of claim 4 further comprising: determining, by said self-adapting iterative solver, that an approximation is acceptably efficient for said at least some of the plurality of singularities; and wherein said constructing said first preconditioner comprises constructing said first preconditioner based on said approximation.
7. The method of claim 6 further comprising: determining, by said self-adapting iterative solver, that said approximation is not acceptably efficient for at least a second portion of the plurality of singularities.
8. The method of claim 6 wherein said constructing said alternative preconditioner comprises: using deflation for constructing said alternative preconditioner for extracting said at least a second portion of the plurality of singularities.
9. A method comprising: identifying, by a self-adapting iterative solver, a singularity present in a linear system of equations; determining, by said self-adapting iterative solver, whether an acceptable approximation is available for the identified singularity; when determined that there is not an acceptable approximation available for the identified singularity, extracting, by the self-adapting iterative solver, a bad portion of the identified singularity to result in a remaining good portion of the singularity for which an acceptable approximation is available; and iteratively solving, by the self-adapting iterative solver, the approximation for the remaining good portion of the singularity.
10. The method of claim 9 wherein said determining whether an acceptable approximation is available for the identified singularity comprises: constructing, by said self-adapting iterative solver, a first preconditioner for use in solving said linear system of equations; and determining, by said self-adapting iterative solver, whether computational performance of the first preconditioner is acceptable.
11. The method of claim 10 further comprising: when determined that the computational performance of the first preconditioner is unacceptable, constructing, by said self-adapting iterative solver, an alternative preconditioner for use in solving said remaining good portion of the singularity.
12. The method of claim 11 wherein said alternative preconditioner comprises the first preconditioner.
13. The method of claim 9 further comprising: solving, by the self-adapting iterative solver, the extracted bad portion of the identified singularity.
14. Computer-executable software code stored to a computer-readable medium that, when executed by a computer, causes the computer to perform a method comprising: identifying at least one singularity present in a linear system of equations; determining an approximation of the at least one singularity; constructing a first preconditioner based on the determined approximation for use by an iterative solver in solving said linear system of equations; determining whether computational performance of the preconditioner is acceptable; when determined that the computational performance of the preconditioner is unacceptable, constructing an alternative preconditioner for use by said iterative solver in solving said linear system of equations.
15. The computer-executable software code of claim 14 wherein the alternative preconditioner is not based on the determined approximation.
16. The computer-executable software code of claim 14 wherein the alternative preconditioner is constructed using deflation.
17. The computer-executable software code of claim 14 wherein said determining said approximation of the at least one singularity comprises determining whether an approximation is available for the at least one singularity; and wherein when determined that said approximation is not available for the at least one singularity, then constructing said alternative preconditioner for use by said iterative solver in solving said linear system of equations.
18. The computer-executable software code of claim 14 wherein said method further comprises: wherein said identifying comprises identifying a plurality of singularities; and wherein said determining an approximation comprises determining an approximation of at least a first one of the plurality of singularities.
19. The computer-executable software code of claim 18 wherein said method further comprises: using, by said iterative solver, said first preconditioner for extracting said at least a first one of the plurality of singularities for solving said linear system of equations.
20. The computer-executable software code of claim 19 wherein said method further comprises: using, by said iterative solver, said alternative preconditioner for extracting at least a second one of the plurality of singularities for solving said linear system of equations.
21. The computer-executable software code of claim 20 wherein said method further comprises: determining that an approximation is not available for said at least a second one of the plurality of singularities.
22. The computer-executable software code of claim 14 wherein said method further comprises: wherein said identifying comprises identifying a plurality of singularities present in said linear system of equations; determining, for each of said plurality of singularities, whether a corresponding approximation is acceptably efficient; and for each of said plurality of singularities for which a corresponding approximation is acceptably efficient, using the corresponding approximation to construct said first preconditioner for use by said iterative solver in extracting said singularities for which a corresponding approximation is available.
23. The computer-executable software code of claim 22 wherein said method further comprises: constructing said alternative preconditioner for use by said iterative solver in extracting each of said plurality of singularities for which a corresponding approximation is determined not available.
24. A method comprising: identifying, by a self-adapting iterative solver, a plurality of singularities present in a linear system of equations; constructing, by said self-adapting iterative solver, a first preconditioner for extracting a first portion of the singularities for solving said linear system of equations, wherein said first preconditioner is based on an approximation of at least one of the plurality of singularities; constructing, by said self-adapting iterative solver, a second preconditioner for extracting a second portion of the singularities for solving said linear system of equations, wherein said second preconditioner is not based on an approximation of at least one of the plurality of singularities; and processing, by said self-adapting iterative solver, said first preconditioner and said second preconditioner for solving said linear system of equations.
25. The method of claim 24 wherein said second preconditioner is constructed using decomposition of the solution into a bad part and a remaining good part.
26. The method of claim 25 further comprising: using a deflation algorithm for solving at least a portion of the linear system of equations.
27. A method comprising: processing a received model by an iterative solver for solving a linear system of equations; identifying, by said solver, at least one singularity; determining, by said solver, whether to exclude one or more of said identified at least one singularity based on observed performance of the solver in solving said linear system of equations; and when determined that one or more of said identified at least one singularity is to be excluded, said solver self-adapting to exclude said determined one or more of said identified at least one singularity.
28. The method of claim 27 wherein said self-adapting comprises constructing a preconditioner to exclude said determined one or more of said identified at least one singularity.
29. The method of claim 27 wherein said determining comprises: said solver autonomously determining whether to exclude said one or more of said identified at least one singularity based on said observed performance.
30. A method comprising: processing a received model by an iterative solver for solving a linear system of equations, said solver having a pre-defined expected number of iterations required for converging on a solution; said solver identifying at least one singularity; and said solver determining whether the identified at least one singularity results in an increase in a number of iterations required for said converging above the pre-defined expected number of iterations.
31. The method of claim 30 further comprising: when determined that the at least one singularity results in an increase in the number of iterations required for said converging above the pre-defined expected number of iterations, said solver self-adapting to exclude said identified at least one singularity.
32. The method of claim 31 further comprising: weighting the identified at least one singularity; and determining whether to self-adapt to exclude the identified at least one singularity based at least in part on the weighting.
33. The method of claim 30 further comprising: said solver determining whether to self-adapt its processing of the linear system of equations to exclude the identified at least one singularity.
34. The method of claim 33 further comprising: determining a computation cost associated with excluding the identified at least one singularity; and wherein said determining whether to self-adapt comprises balancing the determined computational cost against a determined increase in a number of iterations required for said converging.
35. The method of claim 30 further comprising: the solver autonomously self-adapting its processing to selectively exclude one or more of the identified at least one singularity based at least in part on computational performance of the solver in converging on a solution.
36. A method comprises : identifying, by a self-adapting iterative solver that is operable to employ an iterative method for solving a linear system of equations, possible singularities present in the linear system of equations; analyzing, by said self-adapting iterative solver, computational performance for solving the linear system of equations; and based on its computational performance, said self-adapting iterative solver self- adapting to a treatment of the possible singularities that provides a desired performance.
37. The method of claim 36 wherein said self-adapting to a treatment of the possible singularities comprises: constructing a preconditioner for excluding select ones of the possible singularities.
PCT/US2009/051029 2008-09-30 2009-07-17 Self-adapting iterative solver WO2010039326A1 (en)

Priority Applications (4)

Application Number Priority Date Filing Date Title
EP09818158.9A EP2350810A4 (en) 2008-09-30 2009-07-17 Self-adapting iterative solver
BRPI0919456A BRPI0919456A2 (en) 2008-09-30 2009-07-17 method for modeling fluid flow in a hydrocarbon reservoir
CA2730446A CA2730446A1 (en) 2008-09-30 2009-07-17 Self-adapting iterative solver
CN2009801385278A CN102165413A (en) 2008-09-30 2009-07-17 Self-adapting iterative solver

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10149008P 2008-09-30 2008-09-30
US61/101,490 2008-09-30

Publications (2)

Publication Number Publication Date
WO2010039326A1 true WO2010039326A1 (en) 2010-04-08
WO2010039326A8 WO2010039326A8 (en) 2010-06-10

Family

ID=42058522

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US2009/051029 WO2010039326A1 (en) 2008-09-30 2009-07-17 Self-adapting iterative solver

Country Status (6)

Country Link
US (1) US20100082509A1 (en)
EP (1) EP2350810A4 (en)
CN (1) CN102165413A (en)
BR (1) BRPI0919456A2 (en)
CA (1) CA2730446A1 (en)
WO (1) WO2010039326A1 (en)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8938562B2 (en) * 2010-06-25 2015-01-20 Maxeler Technologies, Ltd. Method of, and apparatus for, mitigating memory bandwidth limitations when performing numerical calculations
WO2012015500A1 (en) * 2010-07-26 2012-02-02 Exxonmobil Upstream Research Company Method and system for parallel multilevel simulation
US9208268B2 (en) 2012-02-14 2015-12-08 Saudi Arabian Oil Company Giga-cell linear solver method and apparatus for massive parallel reservoir simulation
CA2873406C (en) * 2012-05-30 2018-06-26 Landmark Graphics Corporation Oil or gas production using computer simulation of oil or gas fields and production facilities
DE102012209374A1 (en) * 2012-06-04 2013-12-05 Robert Bosch Gmbh Method and apparatus for creating computational models for nonlinear models of encoders
US10242136B2 (en) * 2015-05-20 2019-03-26 Saudi Arabian Oil Company Parallel solution for fully-coupled fully-implicit wellbore modeling in reservoir simulation
EP3714131A1 (en) 2017-11-24 2020-09-30 Total SA Method and device for determining hydrocarbon production for a reservoir
US11461514B2 (en) * 2018-09-24 2022-10-04 Saudi Arabian Oil Company Reservoir simulation with pressure solver for non-diagonally dominant indefinite coefficient matrices
CN111337935B (en) * 2020-03-17 2022-06-14 中国水利水电第五工程局有限公司 Underground inclined shaft excavation measuring method

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040111242A1 (en) * 2002-12-06 2004-06-10 Phanindranath Vedula Method and apparatus for analyzing engineering problems using a finite element technique with differential formulation
US20050060129A1 (en) * 2003-09-17 2005-03-17 The Mathworks, Inc. Automated approach to resolving artificial algebraic loops
US20050222825A1 (en) * 2004-03-31 2005-10-06 International Business Machines Corporation Method, apparatus and computer program providing broadband preconditioning based on reduced coupling for numerical solvers
US20060271888A1 (en) * 1998-06-19 2006-11-30 Peter Meuris Method and apparatus for simulating physical fields

Family Cites Families (91)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3017934A (en) * 1955-09-30 1962-01-23 Shell Oil Co Casing support
FR1594818A (en) * 1968-11-21 1970-06-08
US3720066A (en) * 1969-11-20 1973-03-13 Metalliques Entrepr Cie Fse Installations for submarine work
US3702009A (en) * 1970-10-23 1972-10-31 Continental Oil Co Simulation of pressure behavior in petroleum reservoirs
US3785437A (en) * 1972-10-04 1974-01-15 Phillips Petroleum Co Method for controlling formation permeability
US3858401A (en) * 1973-11-30 1975-01-07 Regan Offshore Int Flotation means for subsea well riser
GB1519203A (en) * 1974-10-02 1978-07-26 Chevron Res Marine risers in offshore drilling
US4210964A (en) * 1978-01-17 1980-07-01 Shell Oil Company Dynamic visual display of reservoir simulator results
FR2466606A1 (en) * 1979-10-05 1981-04-10 Aquitaine Canada PROCESS FOR INCREASING THE EXTRACTION OF PETROLEUM FROM A UNDERGROUND RESERVOIR BY GAS INJECTION
US4646840A (en) * 1985-05-02 1987-03-03 Cameron Iron Works, Inc. Flotation riser
US4821164A (en) * 1986-07-25 1989-04-11 Stratamodel, Inc. Process for three-dimensional mathematical modeling of underground geologic volumes
US4918643A (en) * 1988-06-21 1990-04-17 At&T Bell Laboratories Method and apparatus for substantially improving the throughput of circuit simulators
US5058012A (en) * 1989-02-07 1991-10-15 Marathon Oil Company Method of extrapolating reservoir performance
US5202981A (en) * 1989-10-23 1993-04-13 International Business Machines Corporation Process and apparatus for manipulating a boundless data stream in an object oriented programming system
IE69192B1 (en) * 1990-12-21 1996-08-21 Hitachi Europ Ltd A method of generating partial differential equations for simulation a simulation method and a method of generating simulation programs
US5305209A (en) * 1991-01-31 1994-04-19 Amoco Corporation Method for characterizing subterranean reservoirs
US5321612A (en) * 1991-02-26 1994-06-14 Swift Energy Company Method for exploring for hydrocarbons utilizing three dimensional modeling of thermal anomalies
US5307445A (en) * 1991-12-02 1994-04-26 International Business Machines Corporation Query optimization by type lattices in object-oriented logic programs and deductive databases
US5794005A (en) * 1992-01-21 1998-08-11 The United States Of America As Represented By The Administrator Of The National Aeronautics And Space Administration Synchronous parallel emulation and discrete event simulation system with self-contained simulation objects and active event objects
US5361385A (en) * 1992-08-26 1994-11-01 Reuven Bakalash Parallel computing system for volumetric modeling, data processing and visualization
US5256171A (en) * 1992-09-08 1993-10-26 Atlantic Richfield Company Slug flow mitigtion for production well fluid gathering system
US5913051A (en) * 1992-10-09 1999-06-15 Texas Instruments Incorporated Method of simultaneous simulation of a complex system comprised of objects having structure state and parameter information
US5442569A (en) * 1993-06-23 1995-08-15 Oceanautes Inc. Method and apparatus for system characterization and analysis using finite element methods
WO1995003586A1 (en) * 1993-07-21 1995-02-02 Persistence Software, Inc. Method and apparatus for generation of code for mapping relational data to objects
US5428744A (en) * 1993-08-30 1995-06-27 Taligent, Inc. Object-oriented system for building a graphic image on a display
US5632336A (en) * 1994-07-28 1997-05-27 Texaco Inc. Method for improving injectivity of fluids in oil reservoirs
FR2725814B1 (en) * 1994-10-18 1997-01-24 Inst Francais Du Petrole METHOD FOR MAPPING BY INTERPOLATION, A NETWORK OF LINES, IN PARTICULAR THE CONFIGURATION OF GEOLOGICAL FAULTS
US5548798A (en) * 1994-11-10 1996-08-20 Intel Corporation Method and apparatus for solving dense systems of linear equations with an iterative method that employs partial multiplications using rank compressed SVD basis matrices of the partitioned submatrices of the coefficient matrix
WO1996022574A1 (en) * 1995-01-20 1996-07-25 The Board Of Trustees Of The Leland Stanford Junior University System and method for simulating operation of biochemical systems
US5740342A (en) * 1995-04-05 1998-04-14 Western Atlas International, Inc. Method for generating a three-dimensional, locally-unstructured hybrid grid for sloping faults
FR2734069B1 (en) * 1995-05-12 1997-07-04 Inst Francais Du Petrole METHOD FOR PREDICTING, BY AN INVERSION TECHNIQUE, THE EVOLUTION OF THE PRODUCTION OF AN UNDERGROUND DEPOSIT
JPH08320947A (en) * 1995-05-25 1996-12-03 Matsushita Electric Ind Co Ltd Method and device for generating mesh for numerical analysis
US5711373A (en) * 1995-06-23 1998-01-27 Exxon Production Research Company Method for recovering a hydrocarbon liquid from a subterranean formation
US6266708B1 (en) * 1995-07-21 2001-07-24 International Business Machines Corporation Object oriented application program development framework mechanism
US5629845A (en) * 1995-08-17 1997-05-13 Liniger; Werner Parallel computation of the response of a physical system
US5757663A (en) * 1995-09-26 1998-05-26 Atlantic Richfield Company Hydrocarbon reservoir connectivity tool using cells and pay indicators
US5706897A (en) * 1995-11-29 1998-01-13 Deep Oil Technology, Incorporated Drilling, production, test, and oil storage caisson
FR2742794B1 (en) * 1995-12-22 1998-01-30 Inst Francais Du Petrole METHOD FOR MODELING THE EFFECTS OF WELL INTERACTIONS ON THE AQUEOUS FRACTION PRODUCED BY AN UNDERGROUND HYDROCARBON DEPOSIT
US6063128A (en) * 1996-03-06 2000-05-16 Bentley Systems, Incorporated Object-oriented computerized modeling system
US5819068A (en) * 1996-05-31 1998-10-06 United Defense, Lp Temporally driven simulation engine
US5886702A (en) * 1996-10-16 1999-03-23 Real-Time Geometry Corporation System and method for computer modeling of 3D objects or surfaces by mesh constructions having optimal quality characteristics and dynamic resolution capabilities
US5875285A (en) * 1996-11-22 1999-02-23 Chang; Hou-Mei Henry Object-oriented data mining and decision making system
US6128577A (en) * 1996-12-19 2000-10-03 Schlumberger Technology Corporation Modeling geological structures and properties
US5905657A (en) * 1996-12-19 1999-05-18 Schlumberger Technology Corporation Performing geoscience interpretation with simulated data
US6219440B1 (en) * 1997-01-17 2001-04-17 The University Of Connecticut Method and apparatus for modeling cellular structure and function
FR2759473B1 (en) * 1997-02-12 1999-03-05 Inst Francais Du Petrole METHOD FOR SIMPLIFYING THE REALIZATION OF A SIMULATION MODEL OF A PHYSICAL PROCESS IN A MATERIAL MEDIUM
US6018497A (en) * 1997-02-27 2000-01-25 Geoquest Method and apparatus for generating more accurate earth formation grid cell property information for use by a simulator to display more accurate simulation results of the formation near a wellbore
US6052650A (en) * 1997-02-27 2000-04-18 Schlumberger Technology Corporation Enforcing consistency in geoscience models
US6693553B1 (en) * 1997-06-02 2004-02-17 Schlumberger Technology Corporation Reservoir management system and method
US6106561A (en) * 1997-06-23 2000-08-22 Schlumberger Technology Corporation Simulation gridding method and apparatus including a structured areal gridder adapted for use by a reservoir simulator
FR2765708B1 (en) * 1997-07-04 1999-09-10 Inst Francais Du Petrole METHOD FOR DETERMINING LARGE-SCALE REPRESENTATIVE HYDRAULIC PARAMETERS OF A CRACKED MEDIUM
US6195092B1 (en) * 1997-07-15 2001-02-27 Schlumberger Technology Corporation Software utility for creating and editing a multidimensional oil-well log graphics presentation
US5923867A (en) * 1997-07-31 1999-07-13 Adaptec, Inc. Object oriented simulation modeling
JP3050184B2 (en) * 1997-09-19 2000-06-12 日本電気株式会社 Tetrahedral lattice generation method and recording medium recording the program
US5864786A (en) * 1997-12-01 1999-01-26 Western Atlas International, Inc. Approximate solution of dense linear systems
US6236894B1 (en) * 1997-12-19 2001-05-22 Atlantic Richfield Company Petroleum production optimization utilizing adaptive network and genetic algorithm techniques
US5953239A (en) * 1997-12-29 1999-09-14 Exa Corporation Computer simulation of physical processes
US6101477A (en) * 1998-01-23 2000-08-08 American Express Travel Related Services Company, Inc. Methods and apparatus for a travel-related multi-function smartcard
US6052520A (en) * 1998-02-10 2000-04-18 Exxon Production Research Company Process for predicting behavior of a subterranean formation
US6453275B1 (en) * 1998-06-19 2002-09-17 Interuniversitair Micro-Elektronica Centrum (Imec Vzw) Method for locally refining a mesh
US6373489B1 (en) * 1999-01-12 2002-04-16 Schlumberger Technology Corporation Scalable visualization for interactive geometry modeling
US6201884B1 (en) * 1999-02-16 2001-03-13 Schlumberger Technology Corporation Apparatus and method for trend analysis in graphical information involving spatial data
US6230101B1 (en) * 1999-06-03 2001-05-08 Schlumberger Technology Corporation Simulation method and apparatus
US6853921B2 (en) * 1999-07-20 2005-02-08 Halliburton Energy Services, Inc. System and method for real time reservoir management
US6266619B1 (en) * 1999-07-20 2001-07-24 Halliburton Energy Services, Inc. System and method for real time reservoir management
US6549879B1 (en) * 1999-09-21 2003-04-15 Mobil Oil Corporation Determining optimal well locations from a 3D reservoir model
US7006959B1 (en) * 1999-10-12 2006-02-28 Exxonmobil Upstream Research Company Method and system for simulating a hydrocarbon-bearing formation
FR2801710B1 (en) * 1999-11-29 2002-05-03 Inst Francais Du Petrole METHOD FOR GENERATING A HYBRID MESH FOR MODELING A HETEROGENEOUS FORMATION CROSSED BY ONE OR MORE WELLS
US6928399B1 (en) * 1999-12-03 2005-08-09 Exxonmobil Upstream Research Company Method and program for simulating a physical system using object-oriented programming
FR2802324B1 (en) * 1999-12-10 2004-07-23 Inst Francais Du Petrole METHOD FOR GENERATING A MESH ON A HETEROGENEOUS FORMATION CROSSED BY ONE OR MORE GEOMETRIC DISCONTINUITIES FOR THE PURPOSE OF MAKING SIMULATIONS
US6305216B1 (en) * 1999-12-21 2001-10-23 Production Testing Services Method and apparatus for predicting the fluid characteristics in a well hole
US6370491B1 (en) * 2000-04-04 2002-04-09 Conoco, Inc. Method of modeling of faulting and fracturing in the earth
FR2809494B1 (en) * 2000-05-26 2002-07-12 Inst Francais Du Petrole METHOD FOR MODELING FLOWS IN A FRACTURE MEDIUM CROSSED BY LARGE FRACTURES
US6487524B1 (en) * 2000-06-08 2002-11-26 Bbnt Solutions Llc Methods and apparatus for designing a system using the tensor convolution block toeplitz-preconditioned conjugate gradient (TCBT-PCG) method
US7369973B2 (en) * 2000-06-29 2008-05-06 Object Reservoir, Inc. Method and system for representing reservoir systems
US7006951B2 (en) * 2000-06-29 2006-02-28 Object Reservoir, Inc. Method for solving finite element models using time slabbing
US6631202B2 (en) * 2000-12-08 2003-10-07 Landmark Graphics Corporation Method for aligning a lattice of points in response to features in a digital image
WO2002086277A2 (en) * 2001-04-24 2002-10-31 Exxonmobil Upstream Research Company Method for enhancing production allocation in an integrated reservoir and surface flow system
US6989841B2 (en) * 2001-05-29 2006-01-24 Fairfield Industries, Inc. Visualization method for the analysis of prestack and poststack seismic data
US6694264B2 (en) * 2001-12-19 2004-02-17 Earth Science Associates, Inc. Method and system for creating irregular three-dimensional polygonal volume models in a three-dimensional geographic information system
FR2837572B1 (en) * 2002-03-20 2004-05-28 Inst Francais Du Petrole METHOD FOR MODELING HYDROCARBON PRODUCTION FROM A SUBTERRANEAN DEPOSITION SUBJECT TO DEPLETION
US6823297B2 (en) * 2003-03-06 2004-11-23 Chevron U.S.A. Inc. Multi-scale finite-volume method for use in subsurface flow simulation
CN100590637C (en) * 2003-09-30 2010-02-17 埃克森美孚上游研究公司 Characterizing connectivity in reservoir models using paths of least resistance
US7057907B2 (en) * 2003-11-21 2006-06-06 Fairchild Semiconductor Corporation Power converter having improved control
US20050165555A1 (en) * 2004-01-13 2005-07-28 Baker Hughes Incorporated 3-D visualized data set for all types of reservoir data
US20080167849A1 (en) * 2004-06-07 2008-07-10 Brigham Young University Reservoir Simulation
US7526418B2 (en) * 2004-08-12 2009-04-28 Saudi Arabian Oil Company Highly-parallel, implicit compositional reservoir simulator for multi-million-cell models
FR2874706B1 (en) * 2004-08-30 2006-12-01 Inst Francais Du Petrole METHOD OF MODELING THE PRODUCTION OF A PETROLEUM DEPOSITION
US7516056B2 (en) * 2005-04-26 2009-04-07 Schlumberger Technology Corporation Apparatus, method and system for improved reservoir simulation using a multiplicative overlapping Schwarz preconditioning for adaptive implicit linear systems
CN101203862B (en) * 2005-06-28 2011-03-23 埃克森美孚上游研究公司 High-level graphical programming language and tool for oil well management programming
US7822289B2 (en) * 2006-07-25 2010-10-26 Microsoft Corporation Locally adapted hierarchical basis preconditioning

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060271888A1 (en) * 1998-06-19 2006-11-30 Peter Meuris Method and apparatus for simulating physical fields
US20040111242A1 (en) * 2002-12-06 2004-06-10 Phanindranath Vedula Method and apparatus for analyzing engineering problems using a finite element technique with differential formulation
US20050060129A1 (en) * 2003-09-17 2005-03-17 The Mathworks, Inc. Automated approach to resolving artificial algebraic loops
US20050222825A1 (en) * 2004-03-31 2005-10-06 International Business Machines Corporation Method, apparatus and computer program providing broadband preconditioning based on reduced coupling for numerical solvers

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
LEYKIN ET AL.: "Higher-Order Deflation for Polynomial Systems with Isolated Singular Solutions'.", ARXIV:MATH/0602031, 4 January 2007 (2007-01-04), XP008146899, Retrieved from the Internet <URL:http://arxiv.org/PS_cache/math/pdf/0602/0602031v2.pdf> [retrieved on 20090821] *

Also Published As

Publication number Publication date
EP2350810A1 (en) 2011-08-03
CN102165413A (en) 2011-08-24
WO2010039326A8 (en) 2010-06-10
EP2350810A4 (en) 2013-06-05
CA2730446A1 (en) 2010-04-08
US20100082509A1 (en) 2010-04-01
BRPI0919456A2 (en) 2015-12-22

Similar Documents

Publication Publication Date Title
US20100082509A1 (en) Self-Adapting Iterative Solver
He et al. Enhanced linearized reduced-order models for subsurface flow simulation
CA2778122C (en) Multiscale finite volume method for reservoir simulation
JP5306122B2 (en) Apparatus, method and computer program for high speed simulation of manufacturing effects during integrated circuit design
US20130085730A1 (en) Preconditioner for reservoir simulation
WO2012060962A2 (en) Computer-implemented systems and methods for forecasting performance of water flooding of an oil reservoir system using a hybrid analytical-empirical methodology
AU2017342840B2 (en) Connectivity based approach for field development optimization
US10909281B2 (en) History matching of hydrocarbon production from heterogenous reservoirs
WO2012082586A1 (en) Improved constrained pressure residual preconditioner for efficient solution of the adjoint equation
EP2350915A1 (en) Method for solving reservoir simulation matrix equation using parallel multi-level incomplete factorizations
US10990731B1 (en) Dynamic voltage drop analysis with improved coverage
Jia et al. Non-parametric stochastic subset optimization for optimal-reliability design problems
KR20210110892A (en) Optimizing the Filling Process Using Feature Scale Modeling
JP5418409B2 (en) Model formula generation method, apparatus and program
US7496485B2 (en) Methods and apparatus for predicting convergence of a transversal waveform relaxation algorithm
Guo et al. The application of static load balancers in parallel compositional reservoir simulation on distributed memory system
Forouzanfar et al. Constrained iterative ensemble smoother for multi solution search assisted history matching
Van Steenkiste et al. Sensitivity analysis of expensive black-box systems using metamodeling
EP2960430B1 (en) Multilevel monotone constrained pressure residual multiscale techniques
Pennacchio et al. Substructuring preconditioners for mortar discretization of a degenerate evolution problem
Burnaev et al. Adaptive design of experiments for sobol indices estimation based on quadratic metamodel
US20220390633A1 (en) Fast, deep learning based, evaluation of physical parameters in the subsurface
US11531794B1 (en) Voltage drop analysis using local circuit representation
Huang et al. Accurate and efficient static timing analysis with crosstalk
CN112649869A (en) Reservoir characteristic parameter prediction method and system based on GA-WNN

Legal Events

Date Code Title Description
WWE Wipo information: entry into national phase

Ref document number: 200980138527.8

Country of ref document: CN

121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 09818158

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2730446

Country of ref document: CA

WWE Wipo information: entry into national phase

Ref document number: 458/CHENP/2011

Country of ref document: IN

NENP Non-entry into the national phase

Ref country code: DE

WWE Wipo information: entry into national phase

Ref document number: 2009818158

Country of ref document: EP

ENP Entry into the national phase

Ref document number: PI0919456

Country of ref document: BR

Kind code of ref document: A2

Effective date: 20110328