For Relative Permeability, the three flow solvers EJ, SimpleFFT, and LIR are available and can be chosen from the pull-down menu. For structures with low porosity, the SimpleFFT or LIR flow solver should be used for best performance, i.e., low runtimes.
Parameters for all solvers
Stopping Criteria
The equations are solved by an iterative approach.
Iterative Solver
The basic idea of an iterative method is to
Start with some initial guess for the unknown values
Improve the current values in each iterative step
Repeat the iterative process until one of the stopping criteria is reached.
The iterative process is controlled by setting the values and activation for Error Bound, Tolerance, Residual, Stop Relative to Fully Saturated Permeability, Maximal Iterations, and Maximal Run Time (h). The stopping criteria apply for each computational direction individually.
If multiple stopping criteria are selected, the first criterion that is reached causes the solver to stop.
The stopping criterion that has been reached can be viewed in the Result Viewer of the GeoDict result file (*.gdr) under the Results Report tab.
The available stopping criteria apply to each single permeability calculation run, not to the whole relative permeability prediction run. For each calculation, a different stopping criterion may occur and cause the solver to stop. Thus, for Relative Permeability, the reached stopping criterion is not printed in the result file.
The default stopping criterion of the LIREnter valuesolver, Error Bound, uses the result of previous iterations, and predicts the final solution based on linear and quadratic extrapolation. The solver stops if the relative difference between computed and predicted solution is smaller than the specified error bound. The stopping criterion recognizes oscillations in the convergence behavior and prevents premature stopping at local minima or maxima. A damped convergence curve is fit through the oscillating curve and the solver stops then regarding the damped convergence curve.
If the Krylov method (under LIR - Advanced Options) is activated, the definition of Error Bound is somewhat different. Here, no prediction is made, instead the continuity between neighboring cells and the conservation of mass is checked. The maximal value is normalized by the mean flow and if this value is smaller than the Error Bound the simulation stops.
The Tolerance stopping criterion, the default stopping criterion for EJ, looks for stagnation of the method when the process becomes stationary, i.e. the improvement in the permeability value becomes extremely small from iteration to iteration.
In each iteration, the solver checks for the current computed value against the values of the last 100 iterations if there are any changes.
(338)
The computation is stopped if the maximal relative change is smaller than the value entered for Tolerance. When there is doubt about the quality of the solution, decrease the Tolerance value by a factor of ten. The drawback of this criterion is that the solver sometimes might stop too early in case of slow convergence rate or at local extrema of oscillatory convergence curves.
When the Residual stopping criterion is used, the iteration is stopped if the solution satisfies the equation up to the required accuracy.
By setting the stopping criterion to Residual, the computations terminate as soon as the relative norm drops below the selected residual threshold. The relative norm of the Schur Complement residual is computed and displayed in the console window during the calculations. The console is visible by clicking the double arrow button on the lower right corner in the progress dialog.
The recommendation to choose Tolerance or Residual for the EJ solver is based on the structure’s porosity. Both give similar results for highly porous structures. For dense structures, if using the Schur Complement Residual, the relative norm of the residual may be small even though the correct permeability has not been reached. So, when in doubt, use the Tolerance criteria – the default option.
The option to Stop Relative to Fully Saturated Permeability is only available in the Relative Permeability command of SatuDict and relaxes the chosen stopping criterion for the computation of each partially saturated state.
First, the absolute permeability for the structure is computed, this yields the highest permeability value. For states with two fluids inside, the permeability of the selected flow phase will be smaller than the absolute permeability.
For the computation not the entered stopping criterion will be used, but it will be adapted to the absolute permeability. It is important to know how the stopping criteria work to understand how this option works.
E.g., if Error Bound is chosen as stopping criterion, the solver estimates the final solution and checks if the current solution is inside the error bound zone. An Error Bound of 0.01 means that the difference between current solution and predicted solution relative to the predicted solution must be smaller than 1% for the solver to stop. With Stop Relative to Fully Saturated Permeability activated the error bound will not be 1% of the predicted relative permeability in each run, but the error bound is a bit higher. For the exact value of the error bound, the absolute value of 1% of the absolute permeability is taken into account.
(339) adapted error bound stopping criterion
(340) adapted tolerance stopping criterion
current predicted permeability
current computed permeability
last computed permeabilities
reference value (absolute permeability)
The effect becomes most visible for low saturations. Here, the permeability is near zero and the computation is much more expensive. With this option activated, the computation is stopped earlier, because the stopping criterion is more relaxed and thus earlier fulfilled.
Use the Maximum Iterations value or the Maximum Run Time (h) stopping criteria causes the solver to stop if the maximal number of iterations and/or the maximal run time (in hours) is exceeded.
When the solver stops because one of these criteria has been reached, no guarantee on the quality of solution can be given. In this case, a warning is printed into the report. The following possibilities might help:
Check the corresponding .log file to see how large the residual values and permeability values are. If permeability values are in reasonable range and they do not have changed during the last iterations, you may decide to use the current result.
Double-check the structure and parameter values. Unphysical parameters or too rough resolution of the structure (leading, e.g., to artificial unconnected components) can cause an iterative solver to fail.
Parallelization
Control how many threads are used for the computation. Parallelization is possible if your license and hardware allow it.
The Parallelization Options dialog opens when clicking the Edit button and you can choose between Sequential, Parallel (Shared Memory), Automatic Maximum of Threads, or Cluster (only available if EJ, SimpleFFT, or FeelMath were selected as solver).
The parallelization of the solvers is done with two technical methods: MPI Parallelization or Thread parallelization. The following table shows the support of both parallelization methods:
Solver
Parallelization method
MPI Parallel
Thread Parallel
EJ
✔
✖
SimpleFFT
✔
✖
LIR
✖
✔
FeelMath
✔
✔
BEST
✖
✔
Depending on the used parallelization method, the Number of Processes (MPI parallel) or the Number of Threads (thread parallel) can be entered.
When Parallel (Shared Memory) is selected, the Number of Processes or Number of Threads can be entered. Below, the Number of CPU Cores that the current machine has, the maximum number of Licensed Threads and the number of those licensed threads that are available (Available Threads) are shown in the dialog. Of course, the maximal number of parallel processes you can use, is the smallest of those three numbers.
If Automatic Maximum of Threads is selected, the number of parallel processes is automatically selected for optimal speed, based on the CPU cores and licensed parallel processes.
The Automatic Local Maximum of processes is automatically selected, which is the minimum of Number of CPU Cores, Licensed Threads, and Available Threads.
The Cluster parallelization requires that the solver supports the MPI Parallelization method. Thus, the LIR and BEST solvers do not support Cluster parallelization. Moreover, the choice of Cluster is for users of Linux systems only.
For details on how to set up and run parallel computations, consult the High Performance Computing chapter.
Discard PDE Solver Files
Checking Discard PDE Solver Files causes the deletion of all intermediate computation files, such as log files and flow field files.
Only the content of the final GeoDict result file (*.gdr) is stored.
While having the benefit of saving hard disk storage place, discarding intermediate solver files has also the effect of disabling the 3D visualization of the results.
The tridiagonal matrix algorithm (Tdma), also known as the Thomas Algorithm, may help to improve the convergence for high porosity structure, especially for Navier-Stokes. The algorithm transforms the 3D flow problem to 2D. Thus, it leads to a shorter runtime and increases the convergence speed.
Three options can be chosen from the pull-down menu: Automatic, NotUse Tdma or Use Tdma.
If Automatic is selected, the SimpleFFT solver decides if Tdma will be used, regarding the porosity of the structure. Thus, Tdma is used if the porosity is high. For most cases it is recommended to choose Automatic.
If a message dialog appears, displaying that NaN is detected in iterations, NotUse Tdma should be tried.
If the structures porosity is very high, it might decrease the runtime a little bit to explicitly choose Use Tdma. But for most cases Automatic will work well.
For more information about the Thomas algorithm see here.
Depending on the material parameters and geometrical structure of the structure, the underlying mathematical problem can vary in complexity, thus influencing the behavior of the solver. This is directly related to the Reynolds number, an indication of the complexity of the flow solver computations. The higher the Reynolds number, the more Stable the flow solver settings should be, resulting in higher number of iterations, slower time stepping, and longer flow solver run times. However, making the solver run less iterations and, thus, faster (Fast), implies the risk that the solver does not converge.
For the SimpleFFT solver, the management of this balance is done through the Velocity relaxation: Stable ↔ Fast and Pressure relaxation: Stable ↔ Fast slide bars.
Setting the balance of Stable versus Fast is a trial-and-error process. Although there is no general rule to optimize it, the log files and the visualization of the structure might help finding the balance. Non-sense structure visualization results indicate that a more stable, slower solver is needed.
The LIR solver uses a very memory efficient adaptive grid structure for the simulations.
If the option Write Compressed Volume Fields is checked, then the adaptive grid is used as compression method for writing out *.vap files. This option allows to save 80-90% space on hard drive. The runtime for writing *.vap files is also reduced significantly. But the runtime for loading and uncompressing of compressed *.vap is increased by the amount of runtime that was saved for writing out compressed *.vap files.
If the option Write Compressed Volume Fields is not checked, then a usual regular grid is used for writing out *.vap files.
The Multigrid Method (see e.g. Wesseling, 2004) was introduced to speed-up the computation and reduce the runtime significantly. The main idea of Multigrid is the usage of multiple coarser adaptive grids to speed up convergence behavior but requires only little more memory.
The method is available to solve the Stokes and Stokes–Brinkman equations as well as for solving mechanics, diffusion, thermal, and electrical conduction and is enabled by default.
Another speed-up option to accelerate the convergence behavior of the LIR solver is called Krylov Subspace Method.
The runtime of the LIR solver depends on many different properties of the structure and the simulation parameters. The BiCGStab algorithm is used, which can reduce the runtime for challenging simulation very drastically.
Note! Using the BiCGStab method approximately doubles the amount of RAM needed for the computation.
Unfortunately, the Krylov method is not always faster than a simulation without the Krylov method and therefore we introduced an Automatic mode which uses some heuristics to choose the most efficient method based on structure, material parameters, and boundary conditions automatically. Of course, it is possible to explicitly enable (Enabled) or disable (Disabled) the method.
Note! In case that the Krylov subspace method (BICGStab) is used, the Relaxation may also be adapted automatically.
Depending on the material parameters and geometry of the structure, the underlying mathematical problem can vary in complexity, thus influencing the behavior of the solver. The more complex the problem is, the more stable the solver settings should be.
With the Relaxation number, the solver is adjusted from Stable (which results in higher number of iterations, slower time stepping, and longer solver run times), to Fast, which makes the solver run less iterations but implies the risk that the solver does not converge. The Relaxation is a parameter of the SOR method and must be between 0 and 2 to ensure convergence. For relaxation values smaller than one (<1.0), the simulation is more stable. For relaxation values larger than one (>1.0), the simulation converges faster.
If Speed is chosen, the solver constructs additional optimization structures. The runtime is decreased by up to 30% but requires up to 50% more memory compared to the other option.
If Memory is chosen, the runtime is increased by up to 40% but the solver requires up to 50% less memory.
The Grid Type decides what kind of tree structure is used for the simulation.
The default option is LIR-Tree and should always be used. The solver uses an adaptive grid structure called LIR-tree and needs up to 10 times less runtime and memory compared to the Regular Grid option.
The solver can analyze the result field during the computation and improves the adaptive grid in places where more accuracy is needed. The LIR solver splits cells where a high gradient occurs.
The solver can analyze the computed field and refines the adaptive grid during the computation at locations where more accuracy is needed. The LIR solver splits cells where a high gradients occur when the Grid Refinement Method is enabled. In this case, the additional parameters Number of Grid Refinements, Allow Sub-Voxel Resolution, and Allow Grid Re-Coarsening become available.
Select one of the three available refinement methods from the drop-down menu.
When A Posteriori Error Bound is selected, the solver targets the specified accuracy Threshold. While the Error Bound (set as Simulation Stopping Criterion)determines the relative error in the solution of the linear system, A Posteriori Error Bound refers to the relative error estimated by comparing high-order and low-order discrete solutions. The accuracy Threshold refers to the relative error to the analytical solution and the value must be between 0.0 and 1.0.
Choosing Difference (Automatic) leads to computational cells being split when the difference in values between neighboring cells exceeds a certain Threshold. The solver automatically chooses all internal parameters based on the structure and simulation settings. For this option, cells are split where the current gradient is greater than the Threshold multiplied by the maximum gradient, where the threshold is determined automatically.
Selecting Difference (Manual) also causes the computational cells to be split when the difference in values between neighboring cells exceeds the specified Threshold. You can specify all parameters (Threshold and Number of Grid Refinements) for the grid refinement manually. For this option, cells are split where the current gradient is greater than the Threshold multiplied by the maximum gradient. The Threshold value must be between 0.0 and 1.0. The recommended value range is between 0.05 and 0.1.
The Number of Grid Refinements controls the maximum number of grid refinements that the solver can perform during the simulation. The value should be set between 0 and 10, where a value of 0 means that no grid refinements will be made. Grid refinements may increase the number of iterations, runtime, and memory requirements.
When Allow Sub-Voxel Resolution is enabled, the solver is allowed to split computational cells to sizes smaller than the voxel length.
This feature is beneficial for low-porosity structures for which the pore throats require finer resolution or for modeling fast Navier-Stokes flows with strong vortices.
Enabling this feature may increase the number of iterations, runtime, and memory requirements.
Check Allow Grid Re-Coarsening to allow the solver to automatically revert the grid refinement and coarsen the computational cells.
This means, grid refinement is done temporarily. Afterwards, the cells are merged as soon as accuracy is not needed anymore. This reduces the memory and runtime requirements.