00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029 #ifndef THYRA_MODEL_EVALUATOR_HPP
00030 #define THYRA_MODEL_EVALUATOR_HPP
00031
00032 #include "Thyra_ModelEvaluatorBase.hpp"
00033
00034 namespace Thyra {
00035
00295 template<class Scalar>
00296 class ModelEvaluator : public ModelEvaluatorBase {
00297 public:
00298
00300 typedef typename Teuchos::ScalarTraits<Scalar>::magnitudeType ScalarMag;
00301
00304
00309 virtual int Np() const = 0;
00310
00316 virtual int Ng() const = 0;
00317
00319
00322
00324 virtual Teuchos::RefCountPtr<const VectorSpaceBase<Scalar> > get_x_space() const = 0;
00325
00327 virtual Teuchos::RefCountPtr<const VectorSpaceBase<Scalar> > get_f_space() const = 0;
00328
00341 virtual Teuchos::RefCountPtr<const VectorSpaceBase<Scalar> > get_p_space(int l) const = 0;
00342
00355 virtual Teuchos::RefCountPtr<const VectorSpaceBase<Scalar> > get_g_space(int j) const = 0;
00356
00358
00361
00365 virtual ModelEvaluatorBase::InArgs<Scalar> getNominalValues() const = 0;
00366
00369 virtual ModelEvaluatorBase::InArgs<Scalar> getLowerBounds() const = 0;
00370
00373 virtual ModelEvaluatorBase::InArgs<Scalar> getUpperBounds() const = 0;
00374
00376
00379
00387 virtual Teuchos::RefCountPtr<LinearOpWithSolveBase<Scalar> > create_W() const = 0;
00388
00396 virtual Teuchos::RefCountPtr<LinearOpBase<Scalar> > create_W_op() const = 0;
00397
00408 virtual Teuchos::RefCountPtr<LinearOpBase<Scalar> > create_DfDp_op(int l) const = 0;
00409
00410
00411
00422 virtual Teuchos::RefCountPtr<LinearOpBase<Scalar> > create_DgDx_op(int j) const = 0;
00423
00436 virtual Teuchos::RefCountPtr<LinearOpBase<Scalar> > create_DgDp_op( int j, int l ) const = 0;
00437
00439
00442
00444 virtual ModelEvaluatorBase::InArgs<Scalar> createInArgs() const = 0;
00445
00447 virtual ModelEvaluatorBase::OutArgs<Scalar> createOutArgs() const = 0;
00448
00450 virtual void evalModel(
00451 const ModelEvaluatorBase::InArgs<Scalar> &inArgs
00452 ,const ModelEvaluatorBase::OutArgs<Scalar> &outArgs
00453 ) const = 0;
00454
00456
00459
00466 virtual void reportFinalPoint(
00467 const ModelEvaluatorBase::InArgs<Scalar> &finalPoint
00468 ,const bool wasSolved
00469 ) = 0;
00470
00472
00473 };
00474
00475 }
00476
00477
00478 #endif // THYRA_MODEL_EVALUATOR_HPP