Nonlinear solve (NOX)

Implicit Tempus steppers use NOX to solve the nonlinear system formed at each time step or implicit stage. Vertex-CFD passes the named solver list to Tempus and registers an observer that prints nonlinear-iteration diagnostics. Most entries in the NOX list are validated and used by Trilinos NOX rather than by Vertex-CFD directly.

The common Vertex-CFD configuration follows this hierarchy:

Tempus
`-- Default Stepper
    |-- Solver Name
    |-- Zero Initial Guess
    `-- Default Solver
        `-- NOX
            |-- Direction
            |   `-- Newton
            |       `-- Linear Solver
            |-- Line Search
            |   `-- Full Step
            |-- Printing
            |   `-- Output Information
            |-- Solver Options
            |-- Thyra Group Options (optional)
            |-- Status Tests
            |   `-- Test 0, Test 1, ...
            `-- Reuse Preconditioner (optional)

Note

Keep the exact names Default Stepper and Default Solver in a Vertex-CFD input. Although Tempus can select named stepper and solver lists, the Vertex-CFD driver uses this exact path when it installs the NOX observer and checks for preconditioner reuse.

<Tempus>

The nonlinear solver is configured under Default Stepper, followed by Default Solver and its NOX sublist.

Default Stepper
Solver Name
Type:

string

Value:

"Default Solver"

Usage:

Required for an explicitly configured Vertex-CFD implicit solver

Default:

"Default Solver"

Description:

Selects the solver sublist containing the NOX configuration. Keep "Default Solver" because the Vertex-CFD driver accesses that sublist directly when installing its NOX observers.

Zero Initial Guess
Type:

bool

Value:

true or false

Usage:

Optional

Default:

false

Description:

When true, initializes the solution vector to zero before each implicit nonlinear solve. When false, the stepper-provided initial guess is retained.

Default Solver

Default Solver is the solver-list name expected by the Vertex-CFD driver.

NOX
Nonlinear Solver
Type:

string

Value:

"Line Search Based", "Newton", "Trust Region Based", "Inexact Trust Region Based", "Tensor Based", "Anderson Accelerated Fixed-Point", "Single Step", or "Pseudo-Transient"

Usage:

Optional

Default:

"Line Search Based"

Description:

Selects the NOX nonlinear-solver algorithm. "Newton" is accepted as an alias for "Line Search Based". Vertex-CFD example and regression inputs use "Line Search Based"; other choices require their corresponding NOX method-specific sublists. "Pseudo-Transient" is available when NOX is built with Thyra support.

Strategy-specific NOX sublists

This is a documentation grouping, not an XML sublist. No searched Vertex-CFD input selects the alternative nonlinear solvers below. NOX accepts the listed sublists, but their use with Vertex-CFD remains unverified because no matching example or regression input is available.

Trust Region

Used by "Trust Region Based" and "Inexact Trust Region Based". The standard trust-region solver reads Minimum Trust Region Radius (1.0e-6), Maximum Trust Region Radius (1.0e10), Initial Trust Region Radius (1.0), Minimum Improvement Ratio (1.0e-4), Contraction Trigger Ratio (0.1), Expansion Trigger Ratio (0.75), Contraction Factor (0.25), Expansion Factor (4.0), Recovery Step (1.0), and Use Ared/Pred Ratio Calculation (false). The inexact solver adds its own trust-region controls; no searched Vertex-CFD input exercises either solver.

Cauchy Direction

Used by the trust-region solvers to configure their steepest-descent Cauchy direction.

Steepest Descent

The trust-region solvers create this nested direction list with Scaling Type = "Quadratic Model Min" by default.

Tensor-based solver sublists

This is a documentation grouping for Nonlinear Solver = "Tensor Based", not an XML sublist. That solver interprets Direction and Line Search itself rather than using the ordinary direction and line-search factories.

Tensor

With Direction/Method = "Tensor" (the tensor-solver default), this selected direction sublist accepts Rescue Bad Newton Solve with a default of true and a nested Linear Solver convergence-request list. Direction/Use Modified Bouaricha defaults to true.

Tensor line-search method sublists

This is a documentation grouping, not an XML sublist. Line Search/Method selects Curvilinear, Dual, Standard, Full Step, or Newton and defaults to "Curvilinear". The selected sublist reads Recovery Step Type ("Constant"), Minimum Step (1.0e-12), Default Step (1.0), Recovery Step (0.0), Max Iters (40), Alpha Factor (1.0e-4), Lambda Selection ("Halving"), and Sufficient Decrease Condition ("Armijo-Goldstein").

Anderson Parameters

Used by "Anderson Accelerated Fixed-Point". NOX validates Storage Depth (2), Mixing Parameter (1.0), Reorthogonalization Frequency (0), Adjust Matrix for Condition Number (false), Condition Number Drop Tolerance (1.0e12), and Acceleration Start Iteration (1). Disable Checks for Unit Testing defaults to false and is explicitly not intended for user input.

Preconditioning

Precondition enables Anderson preconditioning and defaults to false. Recompute Jacobian controls whether NOX computes the Jacobian for that preconditioner and also defaults to false.

Single Step Solver

Used by "Single Step". Ignore Linear Solver Failures defaults to false; Update Jacobian defaults to true; and Print Norms and Compute Relative Norm both default to false.

Linear Solver

Supplies the convergence request for the single Newton update.

Pseudo-Transient

Used by the Thyra-only "Pseudo-Transient" solver. deltaInit, deltaMax, and deltaMin default to 1.0e-4, 1.0, and 1.0e-5, respectively. Use Transient Residual in Direction Computation defaults to true. Maximum Number of Pseudo-Transient Iterations defaults to the maximum representable int value.

NOX sublists

Each documented NOX sublist has its own parameter-reference page:

Example

The following input contains the standard NOX configuration used by Vertex-CFD. The emphasized lines select the direction and line search, choose the nonlinear solver, and define its termination tests.

Listing 22 Standard line-search-based NOX configuration for an implicit Tempus stepper.
 1        <ParameterList name="NOX">
 2          <ParameterList name="Direction">
 3            <Parameter name="Method" type="string" value="Newton"/>
 4            <ParameterList name="Newton">
 5              <Parameter name="Forcing Term Method" type="string" value="Constant"/>
 6              <Parameter name="Rescue Bad Newton Solve" type="bool" value="1"/>
 7              <ParameterList name="Stratimikos Linear Solver">
 8                <ParameterList name="NOX Stratimikos Options">
 9                </ParameterList>
10              </ParameterList> <!-- Stratimikos Linear Solver -->
11            </ParameterList> <!-- Newton -->
12          </ParameterList> <!-- Direction -->
13          <ParameterList name="Line Search">
14            <Parameter name="Method" type="string" value="Full Step"/>
15            <ParameterList name="Full Step">
16              <Parameter name="Full Step" type="double" value="1"/>
17            </ParameterList> <!-- Full Step -->
18          </ParameterList> <!-- Line Search -->
19          <Parameter name="Nonlinear Solver" type="string" value="Line Search Based"/>
20          <ParameterList name="Printing">
21            <Parameter name="Output Precision" type="int" value="3"/>
22            <Parameter name="Output Processor" type="int" value="0"/>
23            <ParameterList name="Output Information">
24              <Parameter name="Error" type="bool" value="1"/>
25              <Parameter name="Warning" type="bool" value="1"/>
26              <Parameter name="Outer Iteration" type="bool" value="0"/>
27              <Parameter name="Parameters" type="bool" value="0"/>
28              <Parameter name="Details" type="bool" value="0"/>
29              <Parameter name="Linear Solver Details" type="bool" value="0"/>
30              <Parameter name="Stepper Iteration" type="bool" value="0"/>
31              <Parameter name="Stepper Details" type="bool" value="0"/>
32              <Parameter name="Stepper Parameters" type="bool" value="0"/>
33            </ParameterList> <!-- Output Information -->
34          </ParameterList> <!-- Printing -->
35          <ParameterList name="Solver Options">
36            <Parameter name="Status Test Check Type" type="string" value="Minimal"/>
37          </ParameterList> <!-- Solver Options -->
38          <ParameterList name="Status Tests">
39            <Parameter name="Test Type" type="string" value="Combo"/>
40            <Parameter name="Combo Type" type="string" value="OR"/>
41            <Parameter name="Number of Tests" type="int" value="2"/>
42            <ParameterList name="Test 0">
43              <Parameter name="Test Type" type="string" value="NormF"/>
44              <Parameter name="Tolerance" type="double" value="1.0e-8"/>
45            </ParameterList> <!-- Test 0 -->
46            <ParameterList name="Test 1">
47              <Parameter name="Test Type" type="string" value="MaxIters"/>
48              <Parameter name="Maximum Iterations" type="int" value="10"/>
49            </ParameterList> <!-- Test 1 -->
50          </ParameterList> <!-- Status Tests -->
51        </ParameterList> <!-- NOX -->