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.
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.
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 -->