36 #include <Xyce_config.h>
40 #undef HAVE_LIBPARMETIS
42 #include <N_LAS_Vector.h>
43 #include <N_LAS_BlockVector.h>
44 #include <N_LAS_BlockMatrix.h>
45 #include <N_PDS_ParMap.h>
47 #include <Epetra_Map.h>
48 #include <Epetra_Vector.h>
49 #include <Epetra_Operator.h>
50 #include <Epetra_CrsMatrix.h>
64 const RCP<ModelEvaluator>& xyceME)
66 RCP<ModelEvaluator_Stateless>
68 xyceMES->set_XyceModelEvaluator(xyceME);
74 :isInitialized_(false)
84 const RCP<Analysis::ModelEvaluator>& xyceME)
86 TEUCHOS_ASSERT(xyceME->isInitialized());
92 tempFVector_ = rcp(
new Epetra_Vector(*xyceME_->get_f_map()));
102 EpetraExt::ModelEvaluator::InArgsSetup inArgs;
103 inArgs.setSupports(IN_ARG_t,
true);
104 inArgs.setSupports(IN_ARG_x,
true);
105 inArgs.setSupports(IN_ARG_x_dot,
true);
106 inArgs.setSupports(IN_ARG_alpha,
true);
107 inArgs.setSupports(IN_ARG_beta,
true);
111 EpetraExt::ModelEvaluator::OutArgsSetup outArgs;
112 outArgs.setSupports(OUT_ARG_f,
true);
113 outArgs.setSupports(OUT_ARG_W,
true);
114 outArgs.set_Np_Ng(
Np_,
Ng_);
153 return Teuchos::null;
160 return Teuchos::null;
168 double t = inArgs.get_t();
169 RCP<const Epetra_Vector> x = inArgs.get_x().assert_not_null();
170 RCP<const Epetra_Vector> x_dot = inArgs.get_x_dot().assert_not_null();
171 RCP<Epetra_Vector> f = outArgs.get_f();
172 RCP<Epetra_Operator>
W = outArgs.get_W();
176 EpetraExt::ModelEvaluator::InArgs xyceInArgs =
xyceME_->createInArgs();
177 EpetraExt::ModelEvaluator::OutArgs xyceOutArgs =
xyceME_->createOutArgs();
181 xyceInArgs.set_x_dot(x_dot);
183 xyceME_->evalModel(xyceInArgs,xyceOutArgs);
192 if (Teuchos::is_null(f)) {
198 if (Teuchos::is_null(W)) {
207 EpetraExt::ModelEvaluator::InArgs xyceInArgs =
xyceME_->createInArgs();
208 EpetraExt::ModelEvaluator::OutArgs xyceOutArgs =
xyceME_->createOutArgs();
211 xyceInArgs.set_x_dot(x_dot);
212 xyceInArgs.set_alpha(inArgs.get_alpha());
213 xyceInArgs.set_beta(inArgs.get_beta());
218 xyceOutArgs.set_f(f);
219 xyceOutArgs.set_W(W);
220 xyceME_->evalModel(xyceInArgs,xyceOutArgs);