55 :modelEvalDescription_(
"WARNING! THIS INARGS OBJECT IS UNINITALIZED!")
69 ,
"model = \'"<<modelEvalDescription_<<
"\': Error, arg="<<
toString(arg)<<
" is invalid!"
71 return supports_[arg];
77 return supports_p_sg_[l];
83 return supports_p_mp_[l];
90 ,
"model = \'"<<modelEvalDescription_<<
"\':Error, arg="<<
toString(arg)<<
" is invalid!"
92 supports_[arg] = supportsIt;
98 supports_p_sg_[l] = supportsIt;
104 supports_p_mp_[l] = supportsIt;
111 !supports_[arg], std::logic_error
112 ,
"EpetraExt::ModelEvaluator::InArgs::assert_supports(arg): model = \'"<<modelEvalDescription_<<
"\': Error, "
113 "The argument arg = " <<
toString(arg) <<
" is not supported!"
121 !supports_p_sg_[l], std::logic_error
122 ,
"EpetraExt::ModelEvaluator::InArgs::assert_supports(IN_ARG_p_sg,l): "
123 "model = \'"<<modelEvalDescription_<<
"\': Error,"
124 "The argument p_sg(l) with index l = " << l <<
" is not supported!"
132 !supports_p_mp_[l], std::logic_error
133 ,
"EpetraExt::ModelEvaluator::InArgs::assert_supports(IN_ARG_p_mp,l): "
134 "model = \'"<<modelEvalDescription_<<
"\': Error,"
135 "The argument p_mp(l) with index l = " << l <<
" is not supported!"
143 !( 0 <= l && l < Np() ), std::logic_error
144 ,
"EpetraExt::ModelEvaluator::InArgs::assert_l(l): model = \'"<<modelEvalDescription_<<
"\': Error, "
145 "The parameter l = " << l <<
" is not in the range [0,"<<Np()-1<<
"]!"
156 :modelEvalDescription_(
"WARNING! THIS OUTARGS OBJECT IS UNINITALIZED!"),
167 ,
"model = \'"<<modelEvalDescription_<<
"\': Error, arg="<<
toString(arg)<<
" is invalid!"
169 return supports_[arg];
177 return supports_DfDp_[l];
185 return supports_DgDx_dot_[j];
193 return supports_DgDx_dotdot_[j];
201 return supports_DgDx_[j];
210 return supports_DgDp_[ j*Np() + l ];
216 return supports_g_sg_[j];
223 return supports_DfDp_sg_[l];
231 return supports_DgDx_dot_sg_[j];
239 return supports_DgDx_dotdot_sg_[j];
247 return supports_DgDx_sg_[j];
255 return supports_DgDp_sg_[ j*Np() + l ];
261 return supports_g_mp_[j];
268 return supports_DfDp_mp_[l];
276 return supports_DgDx_dot_mp_[j];
284 return supports_DgDx_dotdot_mp_[j];
292 return supports_DgDx_mp_[j];
300 return supports_DgDp_mp_[ j*Np() + l ];
310 if (!
is_null(f_)) areSet =
true;
311 if (!
is_null(W_)) areSet =
true;
312 for (
int l = 0; l < implicit_cast<int>(DfDp_.size()); ++l )
313 if(!DfDp_[l].isEmpty()) areSet =
true;
318 "ModelEvaluator::OutArgs::funcOrDerivesAreSet(arg): Error, we can not handle"
319 " the argument " <<
toString(arg) <<
"yet!");
338 modelEvalDescription_ = theModelEvalDescription;
345 supports_DfDp_.resize(Np_in);
347 std::fill_n(DfDp_.begin(),Np_in,
Derivative());
348 DfDp_properties_.resize(Np_in);
351 supports_DfDp_sg_.resize(Np_in);
352 DfDp_sg_.resize(Np_in);
354 DfDp_sg_properties_.resize(Np_in);
357 supports_DfDp_mp_.resize(Np_in);
358 DfDp_mp_.resize(Np_in);
360 DfDp_mp_properties_.resize(Np_in);
365 supports_DgDx_dot_.resize(Ng_in);
366 DgDx_dot_.resize(Ng_in);
367 std::fill_n(DgDx_dot_.begin(),Ng_in,
Derivative());
368 DgDx_dot_properties_.resize(Ng_in);
370 supports_DgDx_dotdot_.resize(Ng_in);
371 DgDx_dotdot_.resize(Ng_in);
372 std::fill_n(DgDx_dotdot_.begin(),Ng_in,
Derivative());
373 DgDx_dotdot_properties_.resize(Ng_in);
375 supports_DgDx_.resize(Ng_in);
377 std::fill_n(DgDx_.begin(),Ng_in,
Derivative());
378 DgDx_properties_.resize(Ng_in);
382 supports_g_sg_.resize(Ng_in);
383 supports_DgDx_dot_sg_.resize(Ng_in);
384 DgDx_dot_sg_.resize(Ng_in);
386 DgDx_dot_sg_properties_.resize(Ng_in);
388 supports_DgDx_dotdot_sg_.resize(Ng_in);
389 DgDx_dotdot_sg_.resize(Ng_in);
390 std::fill_n(DgDx_dotdot_sg_.begin(),Ng_in,
SGDerivative());
391 DgDx_dotdot_sg_properties_.resize(Ng_in);
393 supports_DgDx_sg_.resize(Ng_in);
394 DgDx_sg_.resize(Ng_in);
396 DgDx_sg_properties_.resize(Ng_in);
400 supports_g_mp_.resize(Ng_in);
401 supports_DgDx_dot_mp_.resize(Ng_in);
402 DgDx_dot_mp_.resize(Ng_in);
404 DgDx_dot_mp_properties_.resize(Ng_in);
406 supports_DgDx_dotdot_mp_.resize(Ng_in);
407 DgDx_dotdot_mp_.resize(Ng_in);
408 std::fill_n(DgDx_dotdot_mp_.begin(),Ng_in,
MPDerivative());
409 DgDx_dotdot_mp_properties_.resize(Ng_in);
411 supports_DgDx_mp_.resize(Ng_in);
412 DgDx_mp_.resize(Ng_in);
414 DgDx_mp_properties_.resize(Ng_in);
418 const int NpNg = Np_in*Ng_in;
419 supports_DgDp_.resize(NpNg);
422 DgDp_properties_.resize(NpNg);
425 supports_DgDp_sg_.resize(NpNg);
426 DgDp_sg_.resize(NpNg);
428 DgDp_sg_properties_.resize(NpNg);
431 supports_DgDp_mp_.resize(NpNg);
432 DgDp_mp_.resize(NpNg);
434 DgDp_mp_properties_.resize(NpNg);
443 ,
"model = \'"<<modelEvalDescription_<<
"\': Error, arg="<<
toString(arg)<<
" is invalid!"
445 supports_[arg] = supportsIt;
452 supports_DfDp_[l] = theSupports;
459 supports_DgDx_dot_[j] = theSupports;
466 supports_DgDx_dotdot_[j] = theSupports;
473 supports_DgDx_[j] = theSupports;
481 supports_DgDp_[ j*Np() + l ] = theSupports;
487 supports_g_sg_[j] = supportsIt;
493 supports_DfDp_sg_[l] = theSupports;
500 supports_DgDx_dot_sg_[j] = theSupports;
506 supports_DgDx_dotdot_sg_[j] = theSupports;
513 supports_DgDx_sg_[j] = theSupports;
520 supports_DgDp_sg_[ j*Np() + l ] = theSupports;
526 supports_g_mp_[j] = supportsIt;
532 supports_DfDp_mp_[l] = theSupports;
539 supports_DgDx_dot_mp_[j] = theSupports;
545 supports_DgDx_dotdot_mp_[j] = theSupports;
552 supports_DgDx_mp_[j] = theSupports;
559 supports_DgDp_mp_[ j*Np() + l ] = theSupports;
565 W_properties_ = W_properties;
570 WPrec_properties_ = WPrec_properties;
576 DfDp_properties_[l] = properties;
583 DgDx_dot_properties_[j] = properties;
589 DgDx_dotdot_properties_[j] = properties;
596 DgDx_properties_[j] = properties;
603 DgDp_properties_[ j*Np() + l ] = properties;
609 DfDp_sg_properties_[l] = properties;
616 DgDx_dot_sg_properties_[j] = properties;
622 DgDx_dotdot_sg_properties_[j] = properties;
629 DgDx_sg_properties_[j] = properties;
635 DgDp_sg_properties_[ j*Np() + l ] = properties;
642 DfDp_mp_properties_[l] = properties;
649 DgDx_dot_mp_properties_[j] = properties;
655 DgDx_dotdot_mp_properties_[j] = properties;
662 DgDx_mp_properties_[j] = properties;
668 DgDp_mp_properties_[ j*Np() + l ] = properties;
675 !supports_[arg], std::logic_error
676 ,
"EpetraExt::ModelEvaluator::OutArgs::assert_supports(arg): "
677 "model = \'"<<modelEvalDescription_<<
"\': Error, "
678 "The argument arg = " <<
toString(arg) <<
" is not supported!"
687 supports_DfDp_[l].none(), std::logic_error
688 ,
"EpetraExt::ModelEvaluator::OutArgs::assert_supports(OUT_ARG_DfDp,l): "
689 "model = \'"<<modelEvalDescription_<<
"\': Error,"
690 "The argument DfDp(l) with index l = " << l <<
" is not supported!"
699 supports_DgDx_dot_[j].none(), std::logic_error
700 ,
"EpetraExt::ModelEvaluator::OutArgs::assert_supports(OUT_ARG_DgDx_dot,j): "
701 "model = \'"<<modelEvalDescription_<<
"\': Error,"
702 "The argument DgDx_dot(j) with index j = " << j <<
" is not supported!"
711 supports_DgDx_dotdot_[j].none(), std::logic_error
712 ,
"EpetraExt::ModelEvaluator::OutArgs::assert_supports(OUT_ARG_DgDx_dotdot,j): "
713 "model = \'"<<modelEvalDescription_<<
"\': Error,"
714 "The argument DgDx_dotdot(j) with index j = " << j <<
" is not supported!"
723 supports_DgDx_[j].none(), std::logic_error
724 ,
"TEpetraExt::ModelEvaluator::OutArgs::assert_supports(OUT_ARG_DgDx,j): "
725 "model = \'"<<modelEvalDescription_<<
"\': Error,"
726 "The argument DgDx(j) with index j = " << j <<
" is not supported!"
736 supports_DgDp_[ j*Np() + l ].none(), std::logic_error
737 ,
"EpetraExt::ModelEvaluator::OutArgs::assert_supports(OUT_ARG_DgDp,j,l): "
738 "model = \'"<<modelEvalDescription_<<
"\': Error,"
739 "The argument DgDp(j,l) with indexes j = " << j <<
" and l = " << l <<
" is not supported!"
747 !supports_g_sg_[j], std::logic_error
748 ,
"EpetraExt::ModelEvaluator::OutArgs::assert_supports(OUT_ARG_g_sg,j): "
749 "model = \'"<<modelEvalDescription_<<
"\': Error,"
750 "The argument g_sg(j) with index j = " << j <<
" is not supported!"
758 supports_DfDp_sg_[l].none(), std::logic_error
759 ,
"EpetraExt::ModelEvaluator::OutArgs::assert_supports(OUT_ARG_DfDp_sg,l): "
760 "model = \'"<<modelEvalDescription_<<
"\': Error,"
761 "The argument DfDp_sg(l) with index l = " << l <<
" is not supported!"
770 supports_DgDx_dot_sg_[j].none(), std::logic_error
771 ,
"EpetraExt::ModelEvaluator::OutArgs::assert_supports(OUT_ARG_DgDx_dot_sg,j): "
772 "model = \'"<<modelEvalDescription_<<
"\': Error,"
773 "The argument DgDx_dot_sg(j) with index j = " << j <<
" is not supported!"
782 supports_DgDx_dotdot_sg_[j].none(), std::logic_error
783 ,
"EpetraExt::ModelEvaluator::OutArgs::assert_supports(OUT_ARG_DgDx_dotdot_sg,j): "
784 "model = \'"<<modelEvalDescription_<<
"\': Error,"
785 "The argument DgDx_dotdot_sg(j) with index j = " << j <<
" is not supported!"
794 supports_DgDx_sg_[j].none(), std::logic_error
795 ,
"EpetraExt::ModelEvaluator::OutArgs::assert_supports(OUT_ARG_DgDx_sg,j): "
796 "model = \'"<<modelEvalDescription_<<
"\': Error,"
797 "The argument DgDx_sg(j) with index j = " << j <<
" is not supported!"
806 supports_DgDp_sg_[ j*Np() + l ].none(), std::logic_error
807 ,
"EpetraExt::ModelEvaluator::OutArgs::assert_supports(OUT_ARG_DgDp_sg,j,l): "
808 "model = \'"<<modelEvalDescription_<<
"\': Error,"
809 "The argument DgDp_sg(j,l) with indexes j = " << j <<
" and l = " << l <<
" is not supported!"
817 !supports_g_mp_[j], std::logic_error
818 ,
"EpetraExt::ModelEvaluator::OutArgs::assert_supports(OUT_ARG_g_mp,j): "
819 "model = \'"<<modelEvalDescription_<<
"\': Error,"
820 "The argument g_mp(j) with index j = " << j <<
" is not supported!"
828 supports_DfDp_mp_[l].none(), std::logic_error
829 ,
"EpetraExt::ModelEvaluator::OutArgs::assert_supports(OUT_ARG_DfDp_mp,l): "
830 "model = \'"<<modelEvalDescription_<<
"\': Error,"
831 "The argument DfDp_mp(l) with index l = " << l <<
" is not supported!"
840 supports_DgDx_dot_mp_[j].none(), std::logic_error
841 ,
"EpetraExt::ModelEvaluator::OutArgs::assert_supports(OUT_ARG_DgDx_dot_mp,j): "
842 "model = \'"<<modelEvalDescription_<<
"\': Error,"
843 "The argument DgDx_dot_mp(j) with index j = " << j <<
" is not supported!"
852 supports_DgDx_dotdot_mp_[j].none(), std::logic_error
853 ,
"EpetraExt::ModelEvaluator::OutArgs::assert_supports(OUT_ARG_DgDx_dotdot_mp,j): "
854 "model = \'"<<modelEvalDescription_<<
"\': Error,"
855 "The argument DgDx_dotdot_mp(j) with index j = " << j <<
" is not supported!"
864 supports_DgDx_mp_[j].none(), std::logic_error
865 ,
"EpetraExt::ModelEvaluator::OutArgs::assert_supports(OUT_ARG_DgDx_mp,j): "
866 "model = \'"<<modelEvalDescription_<<
"\': Error,"
867 "The argument DgDx_mp(j) with index j = " << j <<
" is not supported!"
876 supports_DgDp_mp_[ j*Np() + l ].none(), std::logic_error
877 ,
"EpetraExt::ModelEvaluator::OutArgs::assert_supports(OUT_ARG_DgDp_mp,j,l): "
878 "model = \'"<<modelEvalDescription_<<
"\': Error,"
879 "The argument DgDp_mp(j,l) with indexes j = " << j <<
" and l = " << l <<
" is not supported!"
887 Np()==0, std::logic_error
888 ,
"EpetraExt::ModelEvaluator::OutArgs::assert_l(l): model = \'"<<modelEvalDescription_<<
"\': Error, "
889 "no auxiliary parameters subvectors p(l) are supported!!"
892 !( 0 <= l && l < Np() ), std::logic_error
893 ,
"EpetraExt::ModelEvaluator::OutArgs::assert_l(l): "
894 "model = \'"<<modelEvalDescription_<<
"\': Error, "
895 "The parameter subvector p(l) index l = " << l <<
" is not in the range [0,"<<Np()-1<<
"]!"
903 Ng()==0, std::logic_error
904 ,
"EpetraExt::ModelEvaluator::OutArgs::assert_j(j): model = \'"<<modelEvalDescription_<<
"\': Error, "
905 "no auxiliary functions g(j) are supported!!"
908 !( 0 <= j && j < Ng() ), std::logic_error
909 ,
"EpetraExt::ModelEvaluator::OutArgs::assert_j(j): model = \'"<<modelEvalDescription_<<
"\': Error, "
910 "The auxiliary function g(j) index j = " << j <<
" is not in the range [0,"<<Ng()-1<<
"]!"
932 {
return Teuchos::null; }
936 {
return Teuchos::null; }
940 {
return Teuchos::null; }
944 {
return Teuchos::null; }
952 {
return Teuchos::null; }
956 {
return Teuchos::null; }
960 {
return Teuchos::null; }
964 {
return Teuchos::null; }
981 {
return Teuchos::null; }
986 {
return Teuchos::null; }
991 {
return Teuchos::null; }
996 {
return Teuchos::null; }
1012 {
return Teuchos::null; }
1016 {
return Teuchos::null; }
1020 {
return Teuchos::null; }
1024 {
return Teuchos::null; }
1028 {
return Teuchos::null; }
1032 {
return Teuchos::null; }
1036 {
return Teuchos::null; }
1050 switch(orientation) {
1052 return "DERIV_MV_BY_COL";
1054 return "DERIV_TRANS_MV_BY_ROW";
1066 return "IN_ARG_x_dot";
1068 return "IN_ARG_x_dotdot";
1072 return "IN_ARG_x_dot_poly";
1074 return "IN_ARG_x_dotdot_poly";
1076 return "IN_ARG_x_poly";
1078 return "IN_ARG_x_dot_sg";
1080 return "IN_ARG_x_dotdot_sg";
1082 return "IN_ARG_x_sg";
1084 return "IN_ARG_x_dot_mp";
1086 return "IN_ARG_x_dotdot_mp";
1088 return "IN_ARG_x_mp";
1092 return "IN_ARG_alpha";
1094 return "IN_ARG_omega";
1096 return "IN_ARG_beta";
1098 return "IN_ARG_step_size";
1100 return "IN_ARG_stage_number";
1116 return "OUT_ARG_WPrec";
1118 return "OUT_ARG_f_poly";
1120 return "OUT_ARG_f_sg";
1122 return "OUT_ARG_W_sg";
1124 return "OUT_ARG_f_mp";
1126 return "OUT_ARG_W_mp";
1136 const std::string &modelEvalDescription,
1138 const std::string &derivName
1143 ,
"For model \'" << modelEvalDescription <<
"\' the derivative \'"
1144 << derivName <<
"\' is of type Epetra_MultiVector and not of type Epetra_Operator!"
1152 const std::string &modelEvalDescription,
1154 const std::string &derivName,
1160 ,
"For model \'" << modelEvalDescription <<
"\' the derivative \'"
1161 << derivName <<
"\' is of type Epetra_Operator and not of type Epetra_MultiVector!"
1168 ,
"For model \'" << modelEvalDescription <<
"\' the derivative \'"
1169 << derivName <<
"\' if not the orientation \'" <<
toString(mvOrientation)
1183 std::ostringstream derivName; derivName <<
"DfDp("<<l<<
")";
1198 std::ostringstream derivName; derivName <<
"DfDp("<<l<<
")";
1215 std::ostringstream derivName; derivName <<
"DgDx_dot("<<j<<
")";
1232 std::ostringstream derivName; derivName <<
"DgDx_dotdot("<<j<<
")";
1249 std::ostringstream derivName; derivName <<
"DgDx("<<j<<
")";
1267 std::ostringstream derivName; derivName <<
"DgDp("<<j<<
","<<l<<
")";