42 #ifndef THYRA_DEFAULT_MODEL_EVALUATOR_DELEGETOR_BASE_HPP 43 #define THYRA_DEFAULT_MODEL_EVALUATOR_DELEGETOR_BASE_HPP 46 #include "Thyra_ModelEvaluatorDefaultBase.hpp" 47 #include "Teuchos_ConstNonconstObjectContainer.hpp" 48 #include "Teuchos_TimeMonitor.hpp" 49 #include "Teuchos_StandardParameterEntryValidators.hpp" 81 template<
class Scalar>
215 > LocalVerbosityLevel_validator_;
216 static const std::string LocalVerbosityLevel_name_;
218 static const std::string LocalVerbosityLevel_default_;
223 #define THYRA_MODEL_EVALUATOR_DECORATOR_EVAL_MODEL_GEN_LOCALVERBLEVEL_BEGIN(CLASS_NAME,INARGS,OUTARGS,UNDERLYINGMODEL,LOCALVERBLEVEL) \ 225 using Teuchos::includesVerbLevel; \ 226 using Teuchos::RCP; \ 227 using Teuchos::EVerbosityLevel; \ 228 const std::string blahblah_classNameStr \ 229 = std::string(CLASS_NAME)+"<"+Teuchos::ScalarTraits<Scalar>::name()+">"; \ 230 const std::string blahblah_classFuncNameStr \ 231 = blahblah_classNameStr+"::evalModel(...)"; \ 232 THYRA_FUNC_TIME_MONITOR(blahblah_classFuncNameStr); \ 234 const Thyra::ModelEvaluatorBase::OutArgs<Scalar> &blahblah_outArgs = (OUTARGS); \ 236 Teuchos::Time totalTimer(""); \ 237 totalTimer.start(true); \ 239 const RCP<Teuchos::FancyOStream> out = this->getOStream(); \ 240 const EVerbosityLevel verbLevel = this->getVerbLevel(); \ 241 const EVerbosityLevel localVerbLevelInput = (LOCALVERBLEVEL); \ 242 const EVerbosityLevel localVerbLevel = \ 243 ( localVerbLevelInput==Teuchos::VERB_DEFAULT ? verbLevel : localVerbLevelInput ); \ 244 Teuchos::OSTab tab(out); \ 245 if(out.get() && includesVerbLevel(localVerbLevel,Teuchos::VERB_LOW)) \ 246 *out << "\nEntering " << blahblah_classFuncNameStr << " ...\n"; \ 248 if(out.get() && includesVerbLevel(localVerbLevel,Teuchos::VERB_MEDIUM)) \ 250 << "\ninArgs =\n" << Teuchos::describe((INARGS),localVerbLevel) \ 251 << "\noutArgs on input =\n" << Teuchos::describe((OUTARGS),Teuchos::VERB_LOW); \ 253 const RCP<const Thyra::ModelEvaluator<Scalar> > \ 254 thyraModel = (UNDERLYINGMODEL); \ 256 typedef Teuchos::VerboseObjectTempState<Thyra::ModelEvaluatorBase> VOTSME; \ 257 VOTSME thyraModel_outputTempState(thyraModel,out,verbLevel) 260 #define THYRA_MODEL_EVALUATOR_DECORATOR_EVAL_MODEL_LOCALVERBLEVEL_BEGIN(CLASS_NAME,INARGS,OUTARGS,LOCALVERBLEVEL) \ 261 THYRA_MODEL_EVALUATOR_DECORATOR_EVAL_MODEL_GEN_LOCALVERBLEVEL_BEGIN(CLASS_NAME,INARGS,OUTARGS,this->getUnderlyingModel(),LOCALVERBLEVEL) 264 #define THYRA_MODEL_EVALUATOR_DECORATOR_EVAL_MODEL_GEN_BEGIN(CLASS_NAME,INARGS,OUTARGS,UNDERLYINGMODEL) \ 265 THYRA_MODEL_EVALUATOR_DECORATOR_EVAL_MODEL_GEN_LOCALVERBLEVEL_BEGIN(CLASS_NAME,INARGS,OUTARGS,UNDERLYINGMODEL,Teuchos::VERB_DEFAULT) 268 #define THYRA_MODEL_EVALUATOR_DECORATOR_EVAL_MODEL_BEGIN(CLASS_NAME,INARGS,OUTARGS) \ 269 THYRA_MODEL_EVALUATOR_DECORATOR_EVAL_MODEL_GEN_BEGIN(CLASS_NAME,INARGS,OUTARGS,this->getUnderlyingModel()) 272 #define THYRA_MODEL_EVALUATOR_DECORATOR_EVAL_MODEL_END() \ 273 if(out.get() && includesVerbLevel(localVerbLevel,Teuchos::VERB_MEDIUM)) \ 275 << "\noutArgs on output =\n" << Teuchos::describe(blahblah_outArgs,localVerbLevel); \ 278 if(out.get() && includesVerbLevel(localVerbLevel,Teuchos::VERB_LOW)) \ 280 << "\nTotal evaluation time = "<<totalTimer.totalElapsedTime()<<" sec\n" \ 281 << "\nLeaving " << blahblah_classFuncNameStr << " ...\n" 291 template<
class Scalar>
299 template<
class Scalar>
302 =
"Local Verbosity Level";
304 template<
class Scalar>
309 template<
class Scalar>
312 = getVerbosityLevelParameterValueName(
313 ModelEvaluatorDelegatorBase<Scalar>::LocalVerbosityLevel_enum_default_
320 template<
class Scalar>
325 template<
class Scalar>
334 template<
class Scalar>
343 template<
class Scalar>
348 model_.initialize(model);
352 template<
class Scalar>
357 model_.initialize(model);
361 template<
class Scalar>
364 model_.uninitialize();
371 template<
class Scalar>
374 return model_.isConst();
378 template<
class Scalar>
382 return model_.getNonconstObj();
386 template<
class Scalar>
390 return model_.getConstObj();
397 template<
class Scalar>
405 template<
class Scalar>
413 template<
class Scalar>
421 template<
class Scalar>
429 template<
class Scalar>
437 template<
class Scalar>
445 template<
class Scalar>
453 template<
class Scalar>
461 template<
class Scalar>
469 template<
class Scalar>
477 template<
class Scalar>
485 template<
class Scalar>
493 template<
class Scalar>
501 template<
class Scalar>
511 template<
class Scalar>
514 ,
const bool wasSolved
527 template<
class Scalar>
533 if (
is_null(LocalVerbosityLevel_validator_))
534 LocalVerbosityLevel_validator_ =
535 Teuchos::verbosityLevelParameterEntryValidator(
536 LocalVerbosityLevel_name_
539 LocalVerbosityLevel_name_, LocalVerbosityLevel_default_,
540 "Overriding verbosity level for this model evaluator object.\n" 541 "This level will not propagate to nested model evaluator objects\n" 542 "The value of \"default\" result in the object verbosity level being\n" 544 LocalVerbosityLevel_validator_
549 template<
class Scalar>
555 return LocalVerbosityLevel_validator_->getIntegralValue(
556 paramList, LocalVerbosityLevel_name_, LocalVerbosityLevel_default_ );
566 template<
class Scalar>
574 template<
class Scalar>
584 template<
class Scalar>
594 template<
class Scalar>
604 template<
class Scalar>
617 #endif // THYRA_DEFAULT_MODEL_EVALUATOR_DELEGETOR_BASE_HPP Protected subclass of InArgs that only ModelEvaluator subclasses can access to set up the selection o...
RCP< const VectorSpaceBase< Scalar > > get_g_space(int j) const
Pure abstract base interface for evaluating a stateless "model" that can be mapped into a number of d...
Default base class for concrete model evaluators.
bool is_null(const boost::shared_ptr< T > &p)
Concrete aggregate class for all output arguments computable by a ModelEvaluator subclass object...
void uninitialize()
Uninitialize.
void setModelEvalDescription(const std::string &modelEvalDescription)
Teuchos::ArrayView< const std::string > get_g_names(int j) const
ModelEvaluatorBase::InArgs< Scalar > createInArgs() const
ParameterList & set(std::string const &name, T const &value, std::string const &docString="", RCP< const ParameterEntryValidator > const &validator=null)
RCP< PreconditionerBase< Scalar > > create_W_prec() const
This is a base class that delegetes almost all function to a wrapped model evaluator object...
void initialize(const RCP< ModelEvaluator< Scalar > > &model)
Initialize given a non-const model evaluator.
RCP< const VectorSpaceBase< Scalar > > get_p_space(int l) const
Teuchos::EVerbosityLevel readLocalVerbosityLevelValidatedParameter(ParameterList ¶mList) const
Read the local verbosity level parameter.
RCP< LinearOpWithSolveBase< Scalar > > create_W() const
RCP< const LinearOpWithSolveFactoryBase< Scalar > > get_W_factory() const
ModelEvaluatorDelegatorBase()
Constructs to uninitialized.
RCP< LinearOpBase< Scalar > > create_W_op() const
virtual std::string description() const
ModelEvaluatorBase::InArgs< Scalar > getNominalValues() const
void reportFinalPoint(const ModelEvaluatorBase::InArgs< Scalar > &finalPoint, const bool wasSolved)
ModelEvaluatorBase::InArgs< Scalar > getUpperBounds() const
virtual RCP< ModelEvaluator< Scalar > > getNonconstUnderlyingModel()
virtual bool isUnderlyingModelConst() const
RCP< const Teuchos::Array< std::string > > get_p_names(int l) const
ModelEvaluatorBase::InArgs< Scalar > getLowerBounds() const
RCP< const VectorSpaceBase< Scalar > > get_x_space() const
virtual RCP< const ModelEvaluator< Scalar > > getUnderlyingModel() const
void setLocalVerbosityLevelValidatedParameter(ParameterList *paramList) const
Set a valid parameter for reading the local verbosity level.
void setModelEvalDescription(const std::string &modelEvalDescription)
RCP< const VectorSpaceBase< Scalar > > get_f_space() const
#define TEUCHOS_TEST_FOR_EXCEPT(throw_exception_test)
Protected subclass of OutArgs that only ModelEvaluator subclasses can access to set up the selection ...
Concrete aggregate class for all input arguments computable by a ModelEvaluator subclass object...