44 #include <Xyce_config.h>
51 #include <N_ERH_ErrorMgr.h>
54 #include <N_LAS_Vector.h>
55 #include <N_PDS_ParMap.h>
69 RefCountPtr<NonLinearSolver> nonlinearSolver,
70 RefCountPtr<N_LAS_Vector> solVector,
71 RefCountPtr<N_LAS_Vector> rhsVector,
72 RefCountPtr<const Epetra_Map> solutionMap
75 RefCountPtr<MatrixFreeEpetraOperator> epetraOperator =
77 epetraOperator->initialize(nonlinearSolver,
82 return epetraOperator;
120 RefCountPtr<NonLinearSolver> nonlinearSolver,
121 RefCountPtr<N_LAS_Vector> solVector,
122 RefCountPtr<N_LAS_Vector> rhsVector,
123 RefCountPtr<const Epetra_Map> solutionMap
156 const Epetra_MultiVector& X,
157 Epetra_MultiVector& Y
169 Epetra_MultiVector* Xcopy =
new Epetra_MultiVector(X);
170 Epetra_MultiVector* Ycopy =
new Epetra_MultiVector(Y);
171 N_LAS_MultiVector las_X(Xcopy);
172 N_LAS_MultiVector las_Y(Ycopy);
173 int status =
Apply(las_X,las_Y);
175 Y = las_Y.epetraObj();
188 const N_LAS_MultiVector& X,
194 std::string msg =
"MatrixFreeEpetraOperator::Apply: I'm not initialized!";
195 N_ERH_ErrorMgr::report(N_ERH_ErrorMgr::DEV_FATAL_0, msg);
198 for (
int i=0 ; i<X.numVectors() ; ++i)
200 const N_LAS_Vector x(X.epetraVector(i));
201 N_LAS_Vector y(Y.epetraVector(i));
203 status = status && localStatus;
223 const Epetra_MultiVector& X,
224 Epetra_MultiVector& Y
227 std::string msg =
"MatrixFreeEpetraOperator::ApplyInverse is not supported!";
228 N_ERH_ErrorMgr::report(N_ERH_ErrorMgr::DEV_FATAL_0, msg);
241 const N_LAS_MultiVector& X,
245 std::string msg =
"MatrixFreeEpetraOperator::ApplyInverse is not supported!";
246 N_ERH_ErrorMgr::report(N_ERH_ErrorMgr::DEV_FATAL_0, msg);
260 std::string msg =
"MatrixFreeEpetraOperator::NormInf is not supported!";
261 N_ERH_ErrorMgr::report(N_ERH_ErrorMgr::DEV_FATAL_0, msg);
275 return "Matrix Free Harmonic Balance Epetra Operator";
318 std::string msg =
"MatrixFreeEpetraOperator::Comm: I'm not initialized!";
319 N_ERH_ErrorMgr::report(N_ERH_ErrorMgr::DEV_FATAL_0, msg);
336 std::string msg =
"MatrixFreeEpetraOperator::OperatorDomainMap: I'm not initialized!";
337 N_ERH_ErrorMgr::report(N_ERH_ErrorMgr::DEV_FATAL_0, msg);
354 std::string msg =
"MatrixFreeEpetraOperator::OperatorRangeMap: I'm not initialized!";
355 N_ERH_ErrorMgr::report(N_ERH_ErrorMgr::DEV_FATAL_0, msg);
357 const Epetra_Map* emap =
dynamic_cast<const Epetra_Map*
>(&
rhsVectorRCPtr_->epetraObj().Map());