00001 /* @HEADER@ */ 00002 /* @HEADER@ */ 00003 00004 #ifndef PLAYA_NONLINEAROPERATOR_HPP 00005 #define PLAYA_NONLINEAROPERATOR_HPP 00006 00007 #include "PlayaDefs.hpp" 00008 #include "PlayaHandle.hpp" 00009 #include "PlayaNonlinearOperatorBase.hpp" 00010 #include "Teuchos_TimeMonitor.hpp" 00011 00012 namespace Playa 00013 { 00014 using namespace Teuchos; 00015 00016 /** 00017 * User-level nonlinear operator class 00018 */ 00019 template <class Scalar> 00020 class NonlinearOperator : public Handle<NonlinearOperatorBase<Scalar> > 00021 { 00022 public: 00023 /* boilerplate ctors */ 00024 HANDLE_CTORS(NonlinearOperator<Scalar>, NonlinearOperatorBase<Scalar>); 00025 00026 /** */ 00027 VectorSpace<Scalar> domain() const 00028 {return this->ptr()->domain();} 00029 00030 /** */ 00031 VectorSpace<Scalar> range() const 00032 {return this->ptr()->range();} 00033 00034 /** */ 00035 void setEvalPt(const Vector<double>& evalPt) const 00036 { 00037 this->ptr()->setEvalPt(evalPt); 00038 } 00039 00040 /** */ 00041 LinearOperator<Scalar> getJacobian() const 00042 { 00043 return this->ptr()->getJacobian(); 00044 } 00045 00046 /** */ 00047 Vector<double> getFunctionValue() const 00048 { 00049 return this->ptr()->getFunctionValue(); 00050 } 00051 00052 00053 00054 /** */ 00055 Vector<double> getInitialGuess() const 00056 { 00057 return this->ptr()->getInitialGuess(); 00058 } 00059 00060 /** */ 00061 Vector<double> currentEvalPt() const 00062 { 00063 return this->ptr()->currentEvalPt(); 00064 } 00065 00066 private: 00067 }; 00068 } 00069 00070 00071 #endif