From 771415d728ab290dd558566492d84ebe2fc6e0eb Mon Sep 17 00:00:00 2001 From: young Date: Mon, 28 Jan 2013 14:51:25 +0000 Subject: [PATCH] Create a solver if there is not one yet, otherwise continue. git-svn-id: https://svn.dealii.org/trunk@28184 0785d39b-7218-0410-832d-ea1e28bc413d --- deal.II/source/lac/slepc_solver.cc | 36 +++++++++++++++++------------- 1 file changed, 20 insertions(+), 16 deletions(-) diff --git a/deal.II/source/lac/slepc_solver.cc b/deal.II/source/lac/slepc_solver.cc index 926a76f1ad..27988d65eb 100644 --- a/deal.II/source/lac/slepc_solver.cc +++ b/deal.II/source/lac/slepc_solver.cc @@ -99,23 +99,27 @@ namespace SLEPcWrappers { int ierr; - AssertThrow (solver_data.get() == 0, ExcSLEPcWrappersUsageError()); - solver_data.reset (new SolverData()); - - // create eigensolver context and set operators - ierr = EPSCreate (mpi_communicator, &solver_data->eps); - AssertThrow (ierr == 0, ExcSLEPcError(ierr)); - - // set eigenspectrum problem type (general/standard) - AssertThrow (opA, ExcSLEPcWrappersUsageError()); - if (opB) - ierr = EPSSetOperators (solver_data->eps, *opA, *opB); - else - ierr = EPSSetOperators (solver_data->eps, *opA, PETSC_NULL); - AssertThrow (ierr == 0, ExcSLEPcError(ierr)); + // create a solver object if this is necessary + if (solver_data.get() == 0) + { + // reset solver dtaa + solver_data.reset (new SolverData()); - // set runtime options - set_solver_type (solver_data->eps); + // create eigensolver context and set operators + ierr = EPSCreate (mpi_communicator, &solver_data->eps); + AssertThrow (ierr == 0, ExcSLEPcError(ierr)); + + // set eigenspectrum problem type (general/standard) + AssertThrow (opA, ExcSLEPcWrappersUsageError()); + if (opB) + ierr = EPSSetOperators (solver_data->eps, *opA, *opB); + else + ierr = EPSSetOperators (solver_data->eps, *opA, PETSC_NULL); + AssertThrow (ierr == 0, ExcSLEPcError(ierr)); + + // set runtime options + set_solver_type (solver_data->eps); + } // set the initial vector(s) if any if (initial_vector && initial_vector->size() != 0) -- 2.39.5