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.