60 Teko_DEBUG_SCOPE(
"EBP::buildPreconditioner", 10);
63 RCP<const Thyra::LinearOpBase<double> > thyraA = extractLinearOp(A);
73 RCP<const Thyra::LinearOpSourceBase<double> > lOpSrc = Thyra::defaultLinearOpSource(thyraA);
74 preconFactory_->initializePrec(lOpSrc, &*preconObj_, Thyra::SUPPORT_SOLVE_UNSPECIFIED);
77 RCP<const Thyra::LinearOpBase<double> > preconditioner = preconObj_->getUnspecifiedPrecOp();
79 SetOperator(preconditioner,
false);
81 firstBuildComplete_ =
true;
83 TEUCHOS_ASSERT(preconObj_ != Teuchos::null);
86 TEUCHOS_ASSERT(firstBuildComplete_ ==
true);
103 const Epetra_MultiVector& epetra_mv,
105 Teko_DEBUG_SCOPE(
"EBP::buildPreconditioner - with solution", 10);
108 RCP<const Thyra::LinearOpBase<double> > thyraA = extractLinearOp(A);
116 RCP<Thyra::MultiVectorBase<double> > thyra_mv =
117 Thyra::createMembers(thyraA->range(), epetra_mv.NumVectors());
124 preconFactory_->initializePrec(Thyra::defaultLinearOpSource(thyraA), thyra_mv, &*preconObj_,
125 Thyra::SUPPORT_SOLVE_UNSPECIFIED);
126 RCP<const Thyra::LinearOpBase<double> > preconditioner = preconObj_->getUnspecifiedPrecOp();
128 SetOperator(preconditioner,
false);
130 firstBuildComplete_ =
true;
132 TEUCHOS_ASSERT(preconObj_ != Teuchos::null);
133 TEUCHOS_ASSERT(
getThyraOp() != Teuchos::null);
135 TEUCHOS_ASSERT(firstBuildComplete_ ==
true);
152 const Teuchos::RCP<const Epetra_Operator>& A) {
153 Teko_DEBUG_SCOPE(
"EBP::rebuildPreconditioner", 10);
156 if (not firstBuildComplete_) {
160 Teko_DEBUG_EXPR(Teuchos::Time timer(
""));
163 Teko_DEBUG_EXPR(timer.start(
true));
164 RCP<const Thyra::LinearOpBase<double> > thyraA = extractLinearOp(A);
165 Teko_DEBUG_EXPR(timer.stop());
166 Teko_DEBUG_MSG(
"EBP::rebuild get thyraop time = " << timer.totalElapsedTime(), 2);
169 Teko_DEBUG_EXPR(timer.start(
true));
170 preconFactory_->initializePrec(Thyra::defaultLinearOpSource(thyraA), &*preconObj_,
171 Thyra::SUPPORT_SOLVE_UNSPECIFIED);
172 RCP<const Thyra::LinearOpBase<double> > preconditioner = preconObj_->getUnspecifiedPrecOp();
173 Teko_DEBUG_EXPR(timer.stop());
174 Teko_DEBUG_MSG(
"EBP::rebuild initialize prec time = " << timer.totalElapsedTime(), 2);
176 Teko_DEBUG_EXPR(timer.start(
true));
177 SetOperator(preconditioner,
false);
178 Teko_DEBUG_EXPR(timer.stop());
179 Teko_DEBUG_MSG(
"EBP::rebuild set operator time = " << timer.totalElapsedTime(), 2);
181 TEUCHOS_ASSERT(preconObj_ != Teuchos::null);
182 TEUCHOS_ASSERT(
getThyraOp() != Teuchos::null);
183 TEUCHOS_ASSERT(firstBuildComplete_ ==
true);
200 const Epetra_MultiVector& epetra_mv) {
201 Teko_DEBUG_SCOPE(
"EBP::rebuildPreconditioner - with solution", 10);
204 if (not firstBuildComplete_) {
208 Teko_DEBUG_EXPR(Teuchos::Time timer(
""));
211 Teko_DEBUG_EXPR(timer.start(
true));
212 RCP<const Thyra::LinearOpBase<double> > thyraA = extractLinearOp(A);
213 Teko_DEBUG_EXPR(timer.stop());
214 Teko_DEBUG_MSG(
"EBP::rebuild get thyraop time = " << timer.totalElapsedTime(), 2);
217 Teko_DEBUG_EXPR(timer.start(
true));
218 RCP<Thyra::MultiVectorBase<double> > thyra_mv =
219 Thyra::createMembers(thyraA->range(), epetra_mv.NumVectors());
221 Teko_DEBUG_EXPR(timer.stop());
222 Teko_DEBUG_MSG(
"EBP::rebuild vector copy time = " << timer.totalElapsedTime(), 2);
225 Teko_DEBUG_EXPR(timer.start(
true));
226 preconFactory_->initializePrec(Thyra::defaultLinearOpSource(thyraA), thyra_mv, &*preconObj_,
227 Thyra::SUPPORT_SOLVE_UNSPECIFIED);
228 RCP<const Thyra::LinearOpBase<double> > preconditioner = preconObj_->getUnspecifiedPrecOp();
229 Teko_DEBUG_EXPR(timer.stop());
230 Teko_DEBUG_MSG(
"EBP::rebuild initialize prec time = " << timer.totalElapsedTime(), 2);
232 Teko_DEBUG_EXPR(timer.start(
true));
233 SetOperator(preconditioner,
false);
234 Teko_DEBUG_EXPR(timer.stop());
235 Teko_DEBUG_MSG(
"EBP::rebuild set operator time = " << timer.totalElapsedTime(), 2);
237 TEUCHOS_ASSERT(preconObj_ != Teuchos::null);
238 TEUCHOS_ASSERT(
getThyraOp() != Teuchos::null);
239 TEUCHOS_ASSERT(firstBuildComplete_ ==
true);