00001 //@HEADER 00002 // ************************************************************************ 00003 // 00004 // NOX: An Object-Oriented Nonlinear Solver Package 00005 // Copyright (2002) Sandia Corporation 00006 // 00007 // LOCA: Library of Continuation Algorithms Package 00008 // Copyright (2005) Sandia Corporation 00009 // 00010 // Under terms of Contract DE-AC04-94AL85000, there is a non-exclusive 00011 // license for use of this work by or on behalf of the U.S. Government. 00012 // 00013 // This library is free software; you can redistribute it and/or modify 00014 // it under the terms of the GNU Lesser General Public License as 00015 // published by the Free Software Foundation; either version 2.1 of the 00016 // License, or (at your option) any later version. 00017 // 00018 // This library is distributed in the hope that it will be useful, but 00019 // WITHOUT ANY WARRANTY; without even the implied warranty of 00020 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00021 // Lesser General Public License for more details. 00022 // 00023 // You should have received a copy of the GNU Lesser General Public 00024 // License along with this library; if not, write to the Free Software 00025 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 00026 // USA 00027 // 00028 // Questions? Contact Roger Pawlowski (rppawlo@sandia.gov) or 00029 // Eric Phipps (etphipp@sandia.gov), Sandia National Laboratories. 00030 // ************************************************************************ 00031 // CVS Information 00032 // $Source: /space/CVS/Trilinos/packages/nox/src-loca/src-epetra/LOCA_Epetra_Interface_Required.H,v $ 00033 // $Author: agsalin $ 00034 // $Date: 2007/04/13 19:28:25 $ 00035 // $Revision: 1.7 $ 00036 // ************************************************************************ 00037 //@HEADER 00038 00039 #ifndef LOCA_EPETRA_INTERFACE_REQUIRED_H 00040 #define LOCA_EPETRA_INTERFACE_REQUIRED_H 00041 00042 #include "NOX_Common.H" 00043 #include "NOX_Epetra_Interface_Required.H" 00044 #include "NOX_Epetra_Vector.H" 00045 #include "LOCA_Abstract_Iterator.H" 00046 00047 // Forward declarations 00048 class Epetra_Vector; 00049 00050 namespace LOCA { 00051 class ParameterVector; 00052 namespace Epetra { 00053 class Group; 00054 } 00055 } 00056 00057 namespace LOCA { 00058 namespace Epetra { 00059 00070 namespace Interface { 00071 00079 class Required : public virtual NOX::Epetra::Interface::Required { 00080 00081 public: 00082 00084 Required() {}; 00085 00087 virtual ~Required() {}; 00088 00094 virtual void setParameters(const ParameterVector& p) = 0; 00095 00097 virtual void printSolution(const Epetra_Vector& x_, 00098 double conParam) {} 00099 00108 virtual void dataForPrintSolution(const int conStep, const int timeStep, 00109 const int totalTimeSteps) {}; 00110 00116 virtual void setMultiPointParameter(const int stepNum) {}; 00117 00118 00120 00124 virtual void 00125 preProcessContinuationStep( 00126 LOCA::Abstract::Iterator::StepStatus stepStatus, 00127 LOCA::Epetra::Group& group) {} 00128 00130 00134 virtual void 00135 postProcessContinuationStep( 00136 LOCA::Abstract::Iterator::StepStatus stepStatus, 00137 LOCA::Epetra::Group& group) {} 00138 00145 virtual void projectToDraw(const NOX::Epetra::Vector& x, 00146 double *px) const { 00147 px[0] = x.norm(NOX::Abstract::Vector::MaxNorm); 00148 } 00149 00151 virtual int projectToDrawDimension() const { return 1; } 00152 00153 }; 00154 } // namespace Interface 00155 } // namespace Epetra 00156 } // namespace LOCA 00157 00158 #endif