Procedures for writing multiple equations and for specifying equation and function ordering are identical with those for linear problems.

Upon creation, a pointer to your NonlinearProblem should be given to a TSF NonlinearOperator object. For example,

NonlinearOperator<double> F = new NonlinearProblem(mesh, eqn, bc, List(vPsi, vOmega), List(psi, omega), u0, vecType);

// create a nonlinear problem, wrapping it in a NonlinearOperator object NonlinearOperator<double> F = new NonlinearProblem(mesh, eqn, bc, List(vPsi, vOmega), List(psi, omega), u0, vecType); // Read parameters for NOX solver from an XML file ParameterXMLFileReader reader("../../examples-tutorial/nox.xml"); ParameterList noxParams = reader.getParameters(); // create the NOX solver NOXSolver solver(noxParams, F); // do the solve! NOX::StatusTest::StatusType status = solver.solve();

Note that no solution object is returned. Where, then, is the solution? It is written into the expression `u0`

that you passed in as an initial guess. Because `u0`

is an expression, it can be reused in other contexts, visualized, and so on.