logo desc

Types of adaptations

All adaptations in FV can be permanent or periodic, and can be activated by time or step. Depending on the problem being solved, different types of adaptation can be used to improve calculation efficiency.

Adaptation by surface / in volume 

Used for local refinement of the computational mesh along the surface / within the volume of a geometric object. An object for adaptation may be:

  • standard geometric FlowVision object: plane, box, cone / cylinder, ellipsoid / sphere;
  • imported object;
  • supergroup;
  • boundary condition.

In the example of modeling the Kármán vortex street with flow around a cube, an adaptation in the box volume (1) refines the resolution in the vortex flow region, and an adaptation along the cube surface (2) - in the boundary layer region. This is necessary to more accurately determine the forces on the surface, as well as the flow parameters in the region of the disturbed flow.

Karman street adapt

Velocity field distribution in a computational grid with adaptations in the volume (1) and on a surface (2) when modeling the Kármán vortex street

properties window

The adaptation properties are determined by the parameters: Max. level N - the level of subdivision of the cells in the computational grid and the number of layers for level N - the number of cells in one level of subdivision.


For volumetric objects layers are built outwards, for surface objects - to both sides of the surface.

3Adaptation properties window for geometric objects

adaptation for curvature / sharp edges

Used for local refinement of flow parameters near complex geometry. Adaptation for curvature or sharp edges may be turned on in the properties window for Adaptation for geometric objects.
Use surfaces (supergroups or boundary conditions) as objects for adaptation.

The adaptation for curvature / sharp edges is not active for volumetric objects

Adaptation for curvature

Used to adapt curved surfaces. For example, to determine the flow parameters near the point of complete deceleration of flow around an airfoil.

airfoil_adaptThe second level of adaptation on the curved surface at the nose of the NACA 012 profile

Properties window for adaptation for curvature


Add. Max. level - number of additional levels to the maximum adaptation level set by Max. level N. Put simply, this number of levels will be added to the maximum level N.
Max. angle - the maximum value of the angle between the inner normals of the facets at which the curvature adaptation is triggered. The more curvature a surface has and the rougher the presented geometry is, the higher the angle value should be set.

adaptation for sharp edges

Used for local refinement of flow parameters near sharp edges of geometric objects. For example, you can resolve areas with maximum stresses - the edges of gears when simulating flow inside a rotary compressor.

sharp edge adaptation4 level adaptation on sharp edges of compressor gear

Properties window for adaptation for sharp edges


Add. max. level - number of additional levels to the maximum adaptation level set by Max. level N.
Sharp edge angle - the maximum value of the angle between the inner normals of adjacent facets, at which adaptation on sharp edges is triggered.


The number of layers only needs to be set for basic adaptation of levels N, N-1, etc. For those additional adaptation levels specified for curvature / sharp edge adaptation (for N + 1, N + 2, etc.), the number of layers is assumed to be equal to the maximum adaptation level (N) and is applied to all levels above.

For the maximum level of common adaptation (Max. level N) and for the level of adaptation for curvature / sharp edges (Max. level N + Add. max. level), the number of layers is the same


Merging acts inversely to the adaptation of splitting - it eliminates the excessive refinement of cells in the computational grid. If you select Adaptation Split / Merge = Merge in the properties window, all cells with a split level greater than the one specified in Max. level N will be removed. After merging, the maximum adaptation level will be equal to Max. level N.


Cases when it is recommended to "merge" excess adaptation:

  • when setting motion for an adaptable body - to get rid of the adapted trace behind the moving body;


  • using adaptation by condition - the solution can change over time / simulation and, therefore, in some areas of the grid, adaptation loses its relevance;
  • if you mistakenly (or intentionally) set many levels of adaptation at once.


adaptation to solution/ by condition

These adaptations are useful in cases when it is not known in advance in which area of the ​​computational space it is necessary to refine the computational grid. The place of splitting will be found in the process of simulation, depending on the values ​​of the calculated variables, which allows to save computational resources as much as possible.

Adaptation by condition is useful when you need to more accurately resolve a region within a specified range of variable values. Adaptation to solution refines the computational grid around cells in which either the value of a computed variable is close to a specified one, or where a sharp gradient for this variable is observed.

These types of adaptation are similar and interchangeable. Consider the effects of its application when choosing an adaptation.

Let's consider the aspects of applying adaptations by condition and to solution in the example of supersonic air flow around a cone with shockwave formation. Initially, the calculation uses a grid consisting of 23,000 cells, with adaptation inside a box. An estimated distribution of the flux density was obtained using such a grid.

computational grid and density distributionComputational grid and density distribution for external supersonic flow around a cone

To resolve the shockwave parameters, you can adapt the mesh in the box (see figure above). However, it is not known in advance where the shockwave will appear - the adaptation area will be vast. To reduce the number of over-adapted cells, we use adaptations to solution or by condition. Let's continue to adapt the mesh!

adaptation to solution

Adaptation to solution allows to refine the computational grid around cells in which either the value of a computed variable is close to a specified one, or where a sharp gradient for this variable is observed. To apply the adaptation, it is necessary to indicate the maximum adaptation level (Max. level N), select a variable, then set its value or select the gradient of this variable. It is also necessary to specify the total number of computation cells, upon reaching which the adaptation to solution will stop refinement.


Properties window for adaptation to solution (to gradient)

  • Adaptation to gradient may be applied from the beginning of the calculation.

In this case, the computational grid will be adapted starting from the 1st iteration. This feature allows to avoid using preliminary calculation to estimate a variable range (used to apply adaptation to a specified value) for faster calculation.

  • Adaptation is dynamic and does not require merging.

There is no need to set merging of over-adapted cells. The adaptation independently changes its position on the computational grid, depending on the value of the calculated variable.

  • There is a limit on the number of cells that may be adapted.

Thus, it is possible to limit the task dimension in advance. Refinement will continue until the number of cells in the computational grid exceeds the threshold value in the limiter.

The "Number of cells" parameter includes all cells in the Subregion: calculated and non-calculated (cut from the Subregion by a moving body)

  • It is not allowed to specify the number of layers for each level of adaptation.

Since the adapted cells are those with a specific value of a variable, this limitation does not allow to create smooth adaptation in the area (see picture below - "spots" and "pieces" of adaptation are observed). The existence of sharp transitions between regions with different adaptations reduces solution accuracy.

shockwave resolution by adaptation to solutionShockwave resolution by adaptation to solution: computational grid (68,221 cells) and density distribution

adaptation by condition

Adaptation by condition can be used if you need to more accurately resolve a region within a specified range of variable values. To apply this type of adaptation, it is enough to select the Variable and indicate the range in which the specified level will be adapted to these values (Max. level N).

15Properties window for adaptation by condition

  • Specifying the number of layers for the maximum and intermediate adaptation levels allows to create a smooth computational grid which, of course, affects the solution accuracy.

shockwave resolution by adaptation by conditionShockwave resolution by adaptation by condition: computational grid (68 830 cells) and density distribution

Otherwise, the computational grid can adapt without ever stopping, especially over a wide range of values for a given variable.

  • Adaptation by condition, as a whole, completely replaces adaptation to solution.

To obtain a computational grid with adaptation to the value of a computed variable, it is necessary to carry out a preliminary calculation - to determine the variation range of a value. Based on the obtained data, for the main calculation, it is then required to indicate this value range, specifying:

    • maximum/minimum values for the entire range. (The result is similar to the one obtained using the adaptation to solution, to gradient).
    • a specific value for the computed variable. (Similar to adaptation to solution, to value).
  • Adaptation by condition requires more computational resources and time.

The absence of restrictions on the number of cells, as well as the need for pre-calculation, leads to a significant decrease in the calculation speed.