Thyra Package Browser (Single Doxygen Collection) Version of the Day
Simple2DTpetraModelEvaluator_decl.hpp
Go to the documentation of this file.
00001 /*
00002 // @HEADER
00003 // ***********************************************************************
00004 // 
00005 //    Thyra: Interfaces and Support for Abstract Numerical Algorithms
00006 //                 Copyright (2004) Sandia Corporation
00007 // 
00008 // Under terms of Contract DE-AC04-94AL85000, there is a non-exclusive
00009 // license for use of this work by or on behalf of the U.S. Government.
00010 // 
00011 // Redistribution and use in source and binary forms, with or without
00012 // modification, are permitted provided that the following conditions are
00013 // met:
00014 //
00015 // 1. Redistributions of source code must retain the above copyright
00016 // notice, this list of conditions and the following disclaimer.
00017 //
00018 // 2. Redistributions in binary form must reproduce the above copyright
00019 // notice, this list of conditions and the following disclaimer in the
00020 // documentation and/or other materials provided with the distribution.
00021 //
00022 // 3. Neither the name of the Corporation nor the names of the
00023 // contributors may be used to endorse or promote products derived from
00024 // this software without specific prior written permission.
00025 //
00026 // THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY
00027 // EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
00028 // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
00029 // PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE
00030 // CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
00031 // EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
00032 // PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
00033 // PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
00034 // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
00035 // NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
00036 // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
00037 //
00038 // Questions? Contact Roscoe A. Bartlett (bartlettra@ornl.gov) 
00039 // 
00040 // ***********************************************************************
00041 // @HEADER
00042 */
00043 
00044 
00045 #ifndef SIMPLE_2D_TPETRA_MODEL_EVALUATOR_DECL_HPP
00046 #define SIMPLE_2D_TPETRA_MODEL_EVALUATOR_DECL_HPP
00047 
00048 
00049 #include "Thyra_StateFuncModelEvaluatorBase.hpp"
00050 #include "Tpetra_CrsGraph.hpp"
00051 #include "Tpetra_Vector.hpp"
00052 
00053 
00070 template<class Scalar>
00071 class Simple2DTpetraModelEvaluator
00072   : public Thyra::StateFuncModelEvaluatorBase<Scalar>
00073 {
00074 public:
00075 
00078 
00080   Simple2DTpetraModelEvaluator();
00081 
00083   void set_d(const Scalar &d);
00084 
00086   void set_p(const Teuchos::ArrayView<const Scalar> &p);
00087 
00089   void set_x0(const Teuchos::ArrayView<const Scalar> &x0);
00090 
00092 
00095 
00097   Teuchos::RCP<const Thyra::VectorSpaceBase<Scalar> > get_x_space() const;
00099   Teuchos::RCP<const Thyra::VectorSpaceBase<Scalar> > get_f_space() const;
00101   Thyra::ModelEvaluatorBase::InArgs<Scalar> getNominalValues() const;
00103   Teuchos::RCP<Thyra::LinearOpBase<Scalar> > create_W_op() const;
00105   Thyra::ModelEvaluatorBase::InArgs<Scalar> createInArgs() const;
00106 
00108 
00109 private:
00110 
00113 
00115   Thyra::ModelEvaluatorBase::OutArgs<Scalar> createOutArgsImpl() const;
00117   void evalModelImpl(
00118     const Thyra::ModelEvaluatorBase::InArgs<Scalar> &inArgs,
00119     const Thyra::ModelEvaluatorBase::OutArgs<Scalar> &outArgs
00120     ) const;
00121 
00123 
00124 private: // data members
00125 
00126   Teuchos::RCP<const Thyra::VectorSpaceBase<Scalar> > x_space_;
00127   Teuchos::RCP<const Thyra::VectorSpaceBase<Scalar> > f_space_;
00128   Thyra::ModelEvaluatorBase::InArgs<Scalar> nominalValues_;
00129   Scalar d_;
00130   Teuchos::RCP<Tpetra::Vector<Scalar,int> > x0_;
00131   Teuchos::Array<Scalar> p_;
00132   Teuchos::RCP<Tpetra::CrsGraph<int> > W_op_graph_;
00133   Thyra::ModelEvaluatorBase::InArgs<Scalar> prototypeInArgs_;
00134   Thyra::ModelEvaluatorBase::OutArgs<Scalar> prototypeOutArgs_;
00135 
00136 };
00137 
00138 
00143 template<class Scalar>
00144 Teuchos::RCP<Simple2DTpetraModelEvaluator<Scalar> >
00145 simple2DTpetraModelEvaluator()
00146 {
00147   return Teuchos::rcp(new Simple2DTpetraModelEvaluator<Scalar>);
00148 }
00149 
00150 
00151 #endif // SIMPLE_2D_TPETRA_MODEL_EVALUATOR_DECL_HPP
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines