NOX Status Tests

The Status Tests sublist defines the convergence and failure conditions for the nonlinear solve. A combo test contains consecutively numbered Test N sublists, and each numbered sublist selects its own test type.

<Status Tests>
Test Type
Type:

string

Value:

"Combo", "NormF", "NormUpdate", "NormWRMS", "FiniteValue", "MaxIters", "Divergence", "Stagnation", "RelativeNormF", or "NStep"

Usage:

Required

Default:

"Combo" in the Tempus default solver

Description:

Selects the status-test factory. Vertex-CFD inputs use an outer "Combo" test and place the individual convergence and failure tests in numbered Test N sublists. NOX also accepts "User Defined", but that choice requires a C++ status-test object and cannot be configured using XML values alone.

Combo Type
Type:

string

Value:

"AND" or "OR"

Usage:

Required with Test Type = "Combo"

Default:

"AND" in NOX; "OR" in the Tempus default solver

Description:

Combines the results of the numbered Test N sublists. The standard "OR" configuration terminates when the residual converges or the iteration limit is reached.

Number of Tests
Type:

integer

Value:

Number of numbered subtests

Usage:

Required with Test Type = "Combo"

Default:

2 in the Tempus default solver

Description:

Sets the number of consecutively numbered sublists, from Test 0 through Test N-1.

The number in Test N does not determine the test type. Each numbered sublist is dispatched independently from its required Test Type entry. Tempus creates Test 0 = NormF and Test 1 = MaxIters by default; a user-provided combo may put any supported status-test type at either index.

Test 0
Test Type
Type:

string

Value:

"NormF" in the Tempus default configuration

Usage:

Required

Default:

"NormF" in the Tempus default solver

Description:

Declares a residual-norm convergence test. Test 0 is not intrinsically a NormF test; this is the assignment made by Tempus and used by the searched Vertex-CFD inputs.

Tolerance
Type:

double

Value:

Residual-norm convergence tolerance

Usage:

Optional with Test Type = "NormF"

Default:

1.0e-8

Description:

Declares convergence when the selected residual norm satisfies this tolerance. The default norm is the unscaled two-norm.

Norm Type
Type:

string

Value:

"Two Norm", "One Norm", or "Max Norm"

Usage:

Optional with Test Type = "NormF"

Default:

"Two Norm"

Description:

Selects the residual norm used by the absolute residual test.

Scale Type
Type:

string

Value:

"Unscaled" or "Scaled"

Usage:

Optional with Test Type = "NormF"

Default:

"Unscaled"

Description:

With "Scaled", divides the two-norm by the square root of the vector length and divides the other supported norms by the vector length before comparing with Tolerance.

Test 1
Test Type
Type:

string

Value:

"MaxIters" in the Tempus default configuration

Usage:

Required

Default:

"MaxIters" in the Tempus default solver

Description:

Declares a nonlinear-iteration limit test. Test 1 is not intrinsically a MaxIters test; this is the assignment made by Tempus and used by the searched Vertex-CFD inputs.

Maximum Iterations
Type:

integer

Value:

Positive integer

Usage:

Optional with Test Type = "MaxIters"

Default:

20 in NOX; 10 in the Tempus default solver

Description:

Sets the maximum number of NOX nonlinear iterations before the status test reports failure.

Test 2

Searched Vertex-CFD inputs use Test 2 for either a relative-residual test or a prescribed-iteration test. NOX does not otherwise restrict the type assigned to this index.

Test Type
Type:

string

Value:

"RelativeNormF" or "NStep" in searched Vertex-CFD inputs

Usage:

Required

Default:

None

Description:

Selects the additional status test. "RelativeNormF" checks reduction from the initial residual; "NStep" reports convergence after a prescribed number of nonlinear iterations.

Tolerance
Type:

double

Value:

Relative residual reduction

Usage:

Optional with Test Type = "RelativeNormF"

Default:

1.0e-8

Description:

Declares convergence when the current residual norm is less than this value multiplied by the initial residual norm.

Scale Norms by Length
Type:

bool

Value:

true or false

Usage:

Optional with Test Type = "RelativeNormF"

Default:

false

Description:

Divides the initial and current residual norms by the square root of the residual-vector length before comparison.

Norm Type
Type:

string

Value:

"Two Norm", "One Norm", or "Max Norm"

Usage:

Optional with Test Type = "RelativeNormF"

Default:

"Two Norm"

Description:

Selects the residual norm used by the relative convergence test.

Number of Nonlinear Iterations
Type:

integer

Value:

Nonlinear iterations before convergence

Usage:

Optional with Test Type = "NStep"

Default:

1

Description:

Sets the prescribed iteration count after the initial ramping phase.

Number of Initial Ramping Steps
Type:

integer

Value:

Number of nonlinear solves in the ramping phase

Usage:

Optional with Test Type = "NStep"

Default:

0

Description:

Applies the ramping-phase iteration count to this many initial nonlinear solves.

Number of Nonlinear Iterations in Ramping Phase
Type:

integer

Value:

Nonlinear iterations before convergence during ramping

Usage:

Optional with Test Type = "NStep"

Default:

10

Description:

Sets the prescribed iteration count while the initial ramping phase is active.

Test 3

Some Vertex-CFD inputs use Test 3 for NStep when Test 2 is RelativeNormF. This index is not reserved for NStep; its type is selected by its own required Test Type entry. When it is NStep, it accepts the same three iteration-count entries documented under Test 2.

Examples

Listing 19 Residual convergence and maximum-iteration tests used by a Vertex-CFD implicit solve.
 1          <ParameterList name="Status Tests">
 2            <Parameter name="Test Type" type="string" value="Combo"/>
 3            <Parameter name="Combo Type" type="string" value="OR"/>
 4            <Parameter name="Number of Tests" type="int" value="2"/>
 5            <ParameterList name="Test 0">
 6              <Parameter name="Test Type" type="string" value="NormF"/>
 7              <Parameter name="Tolerance" type="double" value="1.0e-8"/>
 8            </ParameterList> <!-- Test 0 -->
 9            <ParameterList name="Test 1">
10              <Parameter name="Test Type" type="string" value="MaxIters"/>
11              <Parameter name="Maximum Iterations" type="int" value="10"/>
12            </ParameterList> <!-- Test 1 -->
13          </ParameterList> <!-- Status Tests -->

The following block adds relative-residual and prescribed-iteration tests:

Listing 20 Additional RelativeNormF and NStep tests used by a turbulence solve.
 1            <ParameterList name="Test 2">
 2              <Parameter name="Test Type" type="string" value="RelativeNormF"/>
 3              <Parameter name="Tolerance" type="double" value="1.0e-4"/>
 4            </ParameterList> <!-- Test 2 -->
 5            <ParameterList name="Test 3">
 6              <Parameter name="Test Type" type="string" value="NStep"/>
 7              <Parameter name="Number of Nonlinear Iterations" type="int" value="11"/>
 8              <Parameter name="Number of Initial Ramping Steps" type="int" value="10"/>
 9              <Parameter name="Number of Nonlinear Iterations in Ramping Phase" type="int" value="8"/>
10            </ParameterList> <!-- Test 3 -->