~corrado-maurini/dolfin/tao

« back to all changes in this revision

Viewing changes to dolfin/nls/PETScSNESSolver.cpp

  • Committer: corrado maurini
  • Date: 2012-12-18 12:16:08 UTC
  • mfrom: (6685.78.207 trunk)
  • Revision ID: corrado.maurini@upmc.fr-20121218121608-nk82ly9jgsld9u84
updating with trunk, fix uint in TAO solver and hacking the check for tao FindTAO.cmake

Show diffs side-by-side

added added

removed removed

Lines of Context:
17
17
//
18
18
//
19
19
// First added:  2012-10-13
20
 
// Last changed: 2012-10-26
 
20
// Last changed: 2012-12-05
21
21
 
22
22
#ifdef HAS_PETSC
23
23
 
193
193
    SNESSetType(*_snes, _methods.find(method)->second);
194
194
}
195
195
//-----------------------------------------------------------------------------
196
 
std::pair<dolfin::uint, bool> PETScSNESSolver::solve(NonlinearProblem& nonlinear_problem,
 
196
std::pair<std::size_t, bool> PETScSNESSolver::solve(NonlinearProblem& nonlinear_problem,
197
197
                                                  GenericVector& x)
198
198
{
199
199
  PETScVector f;
200
200
  PETScMatrix A;
201
 
  int its;
 
201
  DolfinIndex its;
202
202
  SNESConvergedReason reason;
203
203
  struct snes_ctx_t snes_ctx;
204
204
 
266
266
  #endif
267
267
 
268
268
  // Tolerances
 
269
  const int max_iters = parameters["maximum_iterations"];
 
270
  const int max_residual_evals = parameters["maximum_residual_evaluations"];
269
271
  SNESSetTolerances(*_snes, parameters["absolute_tolerance"], parameters["relative_tolerance"],
270
 
                            parameters["solution_tolerance"], parameters["maximum_iterations"],
271
 
                            parameters["maximum_residual_evaluations"]);
 
272
                            parameters["solution_tolerance"], max_iters,
 
273
                            max_residual_evals);
272
274
 
273
275
  if (parameters["report"])
274
276
    SNESView(*_snes, PETSC_VIEWER_STDOUT_WORLD);
432
434
  if (sign != "default")
433
435
  {
434
436
    std::string method = parameters["method"];
435
 
    if (method != std::string("virs") && method != std::string("viss") && method != std::string("default"))
 
437
    if (method != std::string("virs") &&
 
438
        method != std::string("viss") &&
 
439
        method != std::string("default"))
436
440
    {
437
441
      dolfin_error("PETScSNESSolver.cpp",
438
442
                   "set variational inequality bounds",