--- CFDStudio
--- RADM

ACRi -- Analytic & Computational Research, Inc.


Solver FAQ


A:The flux of variable at a boundary is composed of a diffusive and a convective component. The total flux of the variable,


QF is the flux of F per unit area at the boundary.

G is the diffusion coefficient at the boundary,

n is the coordinate normal to the boundary,

a is a coefficient which depends on the nature of the variable (for transport equations it represents the density or the normalized density; for thermal transport, it represents the density multiplied by specific heat of fluid), and,
Vn is the velocity component normal to the wall.
: GRAD means that the gradient of the variable at the boundary is specified. The flux of variable entering the boundary depends on two other quantities: (1) the diffusion coefficient at the boundary and (2) velocity across the boundary. Even if a GRAD = 0 command is specified, there could still be a finite flux due to the velocity component.
: FLUX means that the total value of flux (QF ) at the wall is specified. In this case, by convention, a positive values means that the flux is entering at the boundary and a negative value means that the flux is leaving at the boundary.  

-Back To Top

Q: Should the flux printed under the “Total inflow” (or “Total outflow”) category in the flux Balance Summary match the sum of the Instantaneous Influx (or outflux) for the individual boundaries.

A:Under ”total” categoriesare cumulative integrals with time. These will not match the instantaneous fluxes. Only the time integral of the latter should equal the “total” values provided factors such as convection,diffusion, sources, decay and accumulation are all taken account of.
For transient simulations, the values printed For steady state simulations these two may be equal in many situations. However there are a number of reasons these may not be same. First the “total” values include effects of convection, diffusion and sources. The flux printed under the “Total” category is cumulative algebraic sum of all inflows (or outflows) for the selected region. Whereas the flux printed at each boundary under the “instantaneous” category is the algebraic sum of inflows for that boundary. If a specific boundary has inflow at some nodes and outflow at others, then only the net inflow will be printed. Therefore the total inflow at the boundaries may not match the total inflow for the subregion.
A: In default mode of PORFLOW™, all mass transport equation for each phase is converted to a corresponding pressure equation in “length” units. In SI units, the pressure will be in meters. In multi-phase systems, the pressure for all phases is expressed in terms of the pressure of the 1st (or primary) phase.
For example, for a 2-phase system, with water as the 1st phase and oil as the 2nd phase, all pressure are in meters equivalent of water. All boundary and initial conditions must be specified in terms of meters of the primary fluid.
All sources (injection or withdrawal) are expressed in volumetric units; that is in units of mass flow rate of the fluid divided by its own density. For example in SI units, the mass is in Kg, the density in Kg/m3 and the source in m3/s. Any adjustment required to convert it to the volume of the primary fluid is performed internally and is transparent to the user. PORFLOW™ further allows the sources to be expressed in total rate (say m3/s), per unit volume (say 1/s) or per unit area (say m/s), and in many other forms. Please see the SOURCE command for different options.
All mass input and output of fluxes at the boundary is expressed in volumetric units; that is in units if mass of the fluid divided by its own density per unit area of the surface. For example in SI units, the mass will be in Kg, the density in Kg/m3, the area in m2 and the flux will be in m3/second/m2 (or m/second). The flux of each fluid is expressed in terms of its own density and not the density of the primary fluid. Any adjustment required to convert it to the primary fluid is performed internally and is transparent to the user.

Q: What is the relation  between turbulence length scale used in ANSWER™ and the length scale used in “standard” turbulence models?

A: A definition of length scale used in in many turbulence models is:

The definition used in ANSWER is:

Here Cm is the viscosity constant (with a value of 0.09 for the “standard” turbulence model) and

k is the von Karman constant (with a value of 0.4187).

Thus with the “standard” set of k-e constants, we get:

The reason for the use of the second definition is that it leads to a simple relation for estimating length scale close to a wall. From the log-law it can be shown that in the vicinity of a wall in the fully turbulent boundary layer:


Where y is the distance from the wall. Therefore the length scale as defined above is simply equal to the distance from the wall in the vicinity of the wall.; that is:

- Back To Top

Q: What is the relation between various turbulence quantities defined in k-e and k-w models?

A: The basic definitions used in these models are as follows:



k is the kinetic energy of turbulence

e is the dissipation rate of turbulence

w is the turbulence vorticity fluctuation or frequency variable

t is the turbulence integral length scale

l is the “standard” length scale of turbulence

lanswer is the length scale of turbulence used in ANSWER™ software

r is the density of flow

k is the von Karman constant

Cm is the constant in the eddy viscosity relation With Cm = 0.09 and k =0.4187,

- Back To Top

Q: What is the Convergence index and how is it computed?

A: The convergence index is defined as:


CI is the convergence index,

EF is the computed error norm (such as the matrix “residual” or flux “balance” disparity) for the variable F,

e is the convergence criterion controlled by the CONVergence command.

fN is the normalizing factor, and

CI is a normalized measure of convergence of the solution and has a value of unity when the error norm in the solution is equal to the product of the normalizing factor and the specified convergence criterion. By default EF is set equal to mass flow disparity in the computational domain (see FLUX command). This can be changed to be the appropriate error norm for any of the variables by the CONVergence command with the REFErence modifier.

For PORFLOW™ and TIDAL™, fN is always set to unity. For ANSWER™ fN is set equal to the incoming mass flow rate if the error norm is based on mass flow and the mass inflow is non-zero; otherwise it is set equal to unity. It should be noted that the default option in ANSWER is to select the error norm as the mass flow disparity. This can be changed by a suitable specification of the CONVergence command with REFErence modifier.

- Back To Top 

Q: When we include more than one CONV command in the same input, what is the criterion used by the program to stop the iterations?

For example:

          CONVergence U ...

                     CONVergence P …

A: Each convergence command specifies the convergence criterion for a variable and the maximum number of iterative steps that are performed to try and achieve convergence for that variable. During the solution of each equation, the convergence command for the dependent variable is invoked. Further details for this command are given in the User’s Manual.

The overall iterative process for the simulation is controlled by the chosen reference variable and its convergence index. Default options for the reference variable are given in the user’s Manual. The user can specify a reference variable of choice by using the command mode:

CONVergence for variable P to be used as REFErence ……

- Back To Top

Q: What is the best type of residue to use on the CONVergence command for a convergence criterion ?

A: There is no easy answer to this question. It depends on the expected values of the variable and the nature of the problem. The main choices are based on the local value of matrix residual, normalized difference or absolute difference:


Either an average value of the sum at all elements (GLOBal) or the maximum of the any local value (LOCAl) may be specified:

The R2 is a non-dimensional measure whereas the other two are dimensional. R1 can suffer from the fact that changes in F may be large even though R1 is small based on the values of matrix coefficients. R2 exaggerates the changes for the smaller values of the variables (for example a change from 1.E-15 to 1.E-16 will be shown as large even though both values are near machine zero for 64 bit arithmetic. Similarly R3 exaggerates the upper end of the values.

The global criterion may indicate convergence while a region of the flow is still evolving because it is averaged over all the elements. Also it may suppress fluctuations when the number of elements becomes large.

The local criterion, on the other hand, may exaggerate the effect of small changes in an unimportant part of the flow whereas most of the flow has converged.

These points all should be kept in mind. Please consult the User’s Manual for default choices. If one wants to make sure that every value in the field has converged, then the best index is the local normalized measure. For general use global matrix residue is recommended.

- Back To Top

Q: How do I judge if Convergence is achieved?

A: There are a number of factors that affect the convergence of a numerical solution. There is no universally acceptable criterion that has been developed to date to uniquely define convergence. Often a combination of criteria must be appealed to. To assist in this effort, ACRi software computes a Convergence Index that is printed (by default) at each step of the solution as part of the diagnostic output. This index is defined and described in another section in this documentation.

In general one indication of convergence is when the convergence index reaches a value of unity or less. This means that the selected error norm has reached the specified convergence threshold. However the convergence index alone is not sufficient to ensure convergence. This is because the convergence threshold may be too large or the error norm may not be sensitive enough to the changes in the values of the variables. Therefore, it is also necessary to ensure that that each of the selected diagnostic variables approaches or converges to a unique value. These diagnostic values are printed by default at each step of the diagnostic output. The user is provided a control over the diagnostic values to be printed with the DIAGnostic command.

In general the selected diagnostic values and the location of the diagnostic node should be such that they indicate the most sensitive location for ensuring convergence. For example, for flows with embedded obstacles, often the nodes immediately downstream of the obstacle are most sensitive to changes in flow.

Certain selections are made in ACRI software for default value of the error norm and the variable to be monitored for convergence and its convergence threshold. Also by default certain minimum and maximum iterations are performed for convergence tests. Further, these defaults are problem dependent. These selections may not be optimal for a given problem. Therefore the user is cautioned to examine these defaults carefully and to use the CONVergence and DIAGnostic commands in a suitable manner to ensure proper convergence of the numerical solution.

- Back To Top

Q: What values should be used for RELAxation factors?

A: There are no hard and fast rules.

For ANSWER™ software, for u, v and w velocity components the values should never be higher than 0.5. In general a value of 0.3 is recommended. For “properties” such as density, viscosity (if these vary) a value of 0.7 is recommended. For k & e (which may be dominated by large source terms) a value of 0.5 is recommended. Finally, for temperature or enthalpy and other scalars values between 0.7 and 1.0 are recommended.

In PORFLOW™, the only relaxation factor which is generally recommended is that for saturation if steady state simulations are performed.

In general, the bigger the grid the smaller the relaxation factors. The bigger the “source” terms or ”non-lineariry” in the equations, the smaller the relaxation factors.

Non-orthogonal grids generate “source terms” from off-diagonal (skew) diffusion contribution. In general, the higher the skewness, the higher the source terms. Generally the hybrid and mixed grids (such as tetrahedral) generate more elements and a higher skewness. In general you need anywhere from 2 to 6 times as many tets as hexes to get comparable accuracy. A ratio of 4 is adequate for most estimates. So when possible, it is better to go with hex or brick elements.

- Back To Top

Q: What is the difference between using BOUNDARY and SOURCE commands for input of flux at the boundary: say between the two commands:

BOUNDARY for T at Y+ of ID= TOP FLUX= 1.

SOURCE =1 per unit AREA for T at Y+ of ID=TOP

A: Provided the Y+ boundary refers to the external boundary of the computational domain, these two are essentially equivalent. The first command will add heat flux to the total flux coming in at the boundary while the second command will add heat to the source term.

It is assumed here that the subdomain ID=TOP is defined such that it includes elements just inside the top boundary. If the SOURce command is used, then additionally the boundary flux at the external boundary which abuts the must be set to zero (BOUNDARY for T at Y+ of ID=TOP FLUX=0.)

The values printed at the top boundary will differ since the first option forces the wall temperature to be higher to allow heat input.

For internal boundaries of the computational domain the SOURce command should be used. The use of BOUNDARY command is not recommended.

Please see the example input data set T.051 for further clarification on how to use these commands. 

Back To Top

Q: When I give the command:

REFErence P=101000

Are the pressure values reported by the software relative to this pressure or are these now absolute?

A: Pressure values are always reported in the relative mode.   Currently this command sets a reference pressure that is not used.  In future versions of ACRi Software (starting with 5.03) this command will set the gas base pressure.

The gas pressure (say, for computing density by gas law) can be set by the command:

GAS base pressure P = 2.E5

 Back To Top

Q: When I give the command:

REFErence T=273.15 ABSOlute 

Are the temperature values reported by the software relative to this absolute?

A: Yes.  Temperature values are always reported relative to this value.  The temperature (say, for computing density by gas law) is computed as the reported temperature plus this absolute value.

Back To Top 

Q: How do I compute flows with natural convection in ANSWER?

A: There are three alternative ways:

1. Boussinesq Approach. This mode is invoked by the PROBLEM BOUSSINESQ command. In this mode density is assumed constant except for a "buoyancy" term in the momentum equation in the direction of the gravitational acceleration. See problem B.02 in ANSWER™ Examples .

2. Direct Source in Momentum Equation. This mode is invoked by a SOURCE command in the relevant momentum equation. See problem B.03 in ANSWER™ Examples .

3. Coupled gravity and Variable Density. This is the most comprehensive and mathematically exact formulation. See problem B.04 in ANSWER™ Examples .

Example of each type is given in the B.02, B.03 and B.04 data set, respectively. The 1st and 2nd modes are essentially linearizations of the coupled mode. These should be tried to get a feel for the problem. In fact often these are good approximations provided the density change is less than a few percent. These are generally more stable than the fully coupled mode. Natural convection flows are notoriously "unstable" and often have multiple "solutions". There is no guarantee of uniqueness of solution for natural convection flows and in fact experiments suggest both non-unique and chaotic solutions for even simple geometries. 

Back To Top

Q: How do I obtain values of variables at a boundary or a surface?

A: Please see the:

WRITE command with boundary mode

Back To Top

Q: How do I obtain values of fluxes at a boundary or a surface?

A: Please see the:

PRINT command with FLUX mode

and the

WRITE command with boundary mode

Back To Top

Q: How do I vary Viscosity in ANSWER™ computations?

A:The reference value of viscosity in ANSWER™ is set by the VISCOSITY command.  Any turbulence contribution is automatically computed from the active turbulence model and added to these values.  The values so computed can be replaced by using the DIFFusion coefficient or CONDuctivity command.  Examples are:

DIFFUSION coefficient for U is 0.0034 


DIFFUSION coefficient for U is a LINEAR function:  0.0034 + 0.001 * T

Please see the VISCOSITY, DIFFUSION and CONDUCTIVITY commands for further elaboration and other available options.  The value, if it is varied, must be set for each of the velocity components.

Back To Top

Q: How do I vary thermal conductivity in ANSWER™ computations?

A: There are two ways to control thermal conductivity in ANSWER™. To start with the thermal conductivity is computed from the effective viscosity and the Prandtl number of the fluid; that is:

where the fluid viscosity and Prandtl number can be set by the VISCOsity and PRANdtl number commands. 

The value of thermal conductivity computed above is overwritten by the values specified by the CONDuctivity command if any such command is specified.  Examples are:

CONDuctivity for H is 0.0034


CONDuctivity for H is a LINEAR function:  0.0034 + 0.001 * T

Please see the VISCOSITY, PRANDTL and CONDUCTIVITY commands for further elaboration and other available options. See problem T.052 in ANSWER™ Examples.

Back To Top

Q: Can I overwrite the computed values with values by my own algorithm?

A:Yes.  The SET, FIX, READ and INITial commands are available and they can be used together or separately.

The SET command can be used to set the values of any variable in any subregion of the computational domain.  It provides a very versatile option to set the variable to a constant, a function or arbitrary values.  Multivariate functions can easily be implemented by successive use of multiple SET commands.

By default the SET command only sets the value of a variable at the time of its implementation.   If the variable (to which the SET command applies) is a function of time or other dependent variables, then the SET command must be used with the ALWAYS modifier.  With this modifier, the value of the variable is freshly computed at the start of each time (or iteration) step.

The variables for which a differential transport equation is solved (or directly derived variables such as Temperature and Length scale for ANSWER software) an additional step is needed to “fix” the values of the variable.  A corresponding FIX command must be given for the subregion for which the SET ALWAYS command is given.

The FIX command is interpreted as a command to “skip” the computation of a variable from its governing transport equation.  Thus whatever value currently prevails is returned as the value of the variable by the solution process.   The FIX command cannot be used for a variable for which a transport equation is not solved .

The READ and INITial commands can also be used to set the values of a variable.  These commands are more specific in nature and less versatile than the SET

Back To Top

Q: How do I obtain average values of a variable or its statistics for a sub region of the computational domain?

A: Please see the:

PRINT command with STATISTICS modifier,

PRINT command with AVERAGE modifier,


and the

OUTPUT command with STATISTICS modifier

Back To Top

Q: What elements are contained in a LOCAte command specified with grid indices for a structured grid?

A: There are three distinct cases:

(a) The indices include boundary nodes: The locate command selects all active nodes at the boundary plus field nodes (elements) immediately next to the boundary. For a 2D structured 22 by 12 grid if the specification is:

LOCATE (1, 1) to (1, 11) as ID=LEFT

Then the selected nodes are the boundary nodes:

(1,2), (1,3), (1,4), (1,5), (1,6), (1,7), (1,8), (1,9), (1,10) and (1,11)

Plus the field nodes:

(2,2), (2,3), (2,4), (2,5), (2,6), (2,7), (2,8), (2,9), (2,10) and (2,11)

Plus the two boundary nodes located at:

(2,1) and (2,12).

The corner nodes (1,1) and (1,12) are decorative nodes and do not appear in the computations; these are omitted.

(b) The indices refer to field nodes adjacent to boundary: In this case the locate command selects all the field nodes plus boundary nodes immediately next to the field nodes. For a 2D structured 22 by 12 grid, if the specification is:

LOCATE (2, 2) to (3, 11) as ID=LEFT

Then the selected nodes are the field nodes:

(2,2), (2,3), (2,4), (2,5), (2,6), (2,7), (2,8), (2,9), (2,10) and (2,11) (3,2), (3,3), (3,4), (3,5), (3,6), (3,7), (3,8), (3,9), (3,10) and (3,11)

plus the boundary nodes:

(1,2), (1,3), (1,4), (1,5), (1,6), (1,7), (1,8), (1,9), (1,10) and (1,11)

Plus the four boundary nodes located at:

(2,1) (3,1), (2,12) and (3,12).

(c) The indices refer to field nodes away from boundary: In this case the locate command selects only the field nodes. For a 2D structured 22 by 12 grid, if the specification is:

LOCATE (3, 3) to (4, 10) as ID=BLOCK

Then the selected nodes are the field nodes:

(3,3), (3,4), (3,5), (3,6), (3,7), (3,8), (3,9), (3,10) (4,3), (4,4), (4,5), (4,6), (4,7), (4,8), (4,9), (4,10) 

Back To Top


© 2015 ACRi