00001 //@HEADER 00002 00003 // *********************************************************************** 00004 // 00005 // Rythmos Package 00006 // Copyright (2006) 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 // This library is free software; you can redistribute it and/or modify 00012 // it under the terms of the GNU Lesser General Public License as 00013 // published by the Free Software Foundation; either version 2.1 of the 00014 // License, or (at your option) any later version. 00015 // 00016 // This library is distributed in the hope that it will be useful, but 00017 // WITHOUT ANY WARRANTY; without even the implied warranty of 00018 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00019 // Lesser General Public License for more details. 00020 // 00021 // You should have received a copy of the GNU Lesser General Public 00022 // License along with this library; if not, write to the Free Software 00023 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 00024 // USA 00025 // Questions? Contact Todd S. Coffey (tscoffe@sandia.gov) 00026 // 00027 // *********************************************************************** 00028 //@HEADER 00029 00030 #ifndef EXAMPLE_APPLICATION_HPP 00031 #define EXAMPLE_APPLICATION_HPP 00032 00033 #include "EpetraExt_ModelEvaluator.h" 00034 #include "Teuchos_ParameterList.hpp" 00035 #include "Rythmos_ConfigDefs.h" 00036 #include "Epetra_Map.h" 00037 #include "Epetra_Vector.h" 00038 #include "Epetra_Comm.h" 00039 #include "Epetra_CrsGraph.h" 00040 00045 class ExampleApplication : public EpetraExt::ModelEvaluator { 00046 public: 00047 00048 // Constructor 00049 ExampleApplication(Teuchos::RefCountPtr<Epetra_Comm> &epetra_comm_ptr, Teuchos::ParameterList ¶ms); 00050 // return ODE decay coefficient 00051 Teuchos::RefCountPtr<const Epetra_Vector> get_coeff() const; 00052 // 00053 Teuchos::RefCountPtr<const Epetra_Vector> get_exact_solution(double t) const; 00054 00057 00059 Teuchos::RefCountPtr<const Epetra_Map> get_x_map() const; 00061 Teuchos::RefCountPtr<const Epetra_Map> get_f_map() const; 00063 Teuchos::RefCountPtr<const Epetra_Vector> get_x_init() const; 00065 Teuchos::RefCountPtr<const Epetra_Vector> get_x_dot_init() const; 00067 Teuchos::RefCountPtr<Epetra_Operator> create_W() const; 00069 InArgs createInArgs() const; 00071 OutArgs createOutArgs() const; 00073 void evalModel( const InArgs& inArgs, const OutArgs& outArgs ) const; 00075 double evalR(const double& t, const double& lambda, const double& s) const; 00076 00078 00079 private: 00080 00081 // Epetra Comm: 00082 Teuchos::RefCountPtr<Epetra_Comm> epetra_comm_ptr_; 00083 // Epetra Map: 00084 Teuchos::RefCountPtr<Epetra_Map> epetra_map_ptr_; 00085 00086 // Mode 00087 bool implicit_; 00088 // Global number of unknowns: 00089 int numElements_; 00090 // Coefficients for ODE 00091 double lambda_min_; 00092 double lambda_max_; 00093 double coeff_s_; // Coefficient for forcing term 00094 std::string lambda_fit_; 00095 Teuchos::RefCountPtr<Epetra_Vector> lambda_ptr_; 00096 // Constant initial condition for the problem: 00097 double x0_; 00098 00099 Teuchos::RefCountPtr<Epetra_CrsGraph> W_graph_; 00100 00101 }; 00102 00103 #endif // EXAMPLE_APPLICATION_HPP
1.3.9.1