44 #include <Xyce_config.h>
51 #include <N_ERH_ErrorMgr.h>
54 #include <N_LAS_Vector.h>
55 #include <N_PDS_ParMap.h>
66 RefCountPtr<N_NLS_NonLinearSolver> nonlinearSolver,
67 RefCountPtr<N_LAS_Vector> solVector,
68 RefCountPtr<N_LAS_Vector> rhsVector,
69 RefCountPtr<const Epetra_Map> solutionMap
72 RefCountPtr<N_NLS_MatrixFreeEpetraOperator> epetraOperator =
74 epetraOperator->initialize(nonlinearSolver,
79 return epetraOperator;
117 RefCountPtr<N_NLS_NonLinearSolver> nonlinearSolver,
118 RefCountPtr<N_LAS_Vector> solVector,
119 RefCountPtr<N_LAS_Vector> rhsVector,
120 RefCountPtr<const Epetra_Map> solutionMap
153 const Epetra_MultiVector& X,
154 Epetra_MultiVector& Y
166 Epetra_MultiVector* Xcopy =
new Epetra_MultiVector(X);
167 Epetra_MultiVector* Ycopy =
new Epetra_MultiVector(Y);
168 N_LAS_MultiVector las_X(Xcopy);
169 N_LAS_MultiVector las_Y(Ycopy);
170 int status =
Apply(las_X,las_Y);
172 Y = las_Y.epetraObj();
185 const N_LAS_MultiVector& X,
191 std::string msg =
"N_NLS_MatrixFreeEpetraOperator::Apply: I'm not initialized!";
192 N_ERH_ErrorMgr::report(N_ERH_ErrorMgr::DEV_FATAL_0, msg);
195 for (
int i=0 ; i<X.numVectors() ; ++i)
197 const N_LAS_Vector x(X.epetraVector(i));
198 N_LAS_Vector y(Y.epetraVector(i));
200 status = status && localStatus;
220 const Epetra_MultiVector& X,
221 Epetra_MultiVector& Y
224 std::string msg =
"N_NLS_MatrixFreeEpetraOperator::ApplyInverse is not supported!";
225 N_ERH_ErrorMgr::report(N_ERH_ErrorMgr::DEV_FATAL_0, msg);
238 const N_LAS_MultiVector& X,
242 std::string msg =
"N_NLS_MatrixFreeEpetraOperator::ApplyInverse is not supported!";
243 N_ERH_ErrorMgr::report(N_ERH_ErrorMgr::DEV_FATAL_0, msg);
257 std::string msg =
"N_NLS_MatrixFreeEpetraOperator::NormInf is not supported!";
258 N_ERH_ErrorMgr::report(N_ERH_ErrorMgr::DEV_FATAL_0, msg);
272 return "Matrix Free Harmonic Balance Epetra Operator";
315 std::string msg =
"N_NLS_MatrixFreeEpetraOperator::Comm: I'm not initialized!";
316 N_ERH_ErrorMgr::report(N_ERH_ErrorMgr::DEV_FATAL_0, msg);
333 std::string msg =
"N_NLS_MatrixFreeEpetraOperator::OperatorDomainMap: I'm not initialized!";
334 N_ERH_ErrorMgr::report(N_ERH_ErrorMgr::DEV_FATAL_0, msg);
351 std::string msg =
"N_NLS_MatrixFreeEpetraOperator::OperatorRangeMap: I'm not initialized!";
352 N_ERH_ErrorMgr::report(N_ERH_ErrorMgr::DEV_FATAL_0, msg);
354 const Epetra_Map* emap =
dynamic_cast<const Epetra_Map*
>(&
rhsVectorRCPtr_->epetraObj().Map());