00001 // $Id: LOCA_LAPACK_Interface.H,v 1.11 2006/08/22 00:01:43 rppawlo Exp $ 00002 // $Source: /space/CVS/Trilinos/packages/nox/src-loca/src-lapack/LOCA_LAPACK_Interface.H,v $ 00003 00004 //@HEADER 00005 // ************************************************************************ 00006 // 00007 // NOX: An Object-Oriented Nonlinear Solver Package 00008 // Copyright (2002) Sandia Corporation 00009 // 00010 // LOCA: Library of Continuation Algorithms Package 00011 // Copyright (2005) Sandia Corporation 00012 // 00013 // Under terms of Contract DE-AC04-94AL85000, there is a non-exclusive 00014 // license for use of this work by or on behalf of the U.S. Government. 00015 // 00016 // This library is free software; you can redistribute it and/or modify 00017 // it under the terms of the GNU Lesser General Public License as 00018 // published by the Free Software Foundation; either version 2.1 of the 00019 // License, or (at your option) any later version. 00020 // 00021 // This library is distributed in the hope that it will be useful, but 00022 // WITHOUT ANY WARRANTY; without even the implied warranty of 00023 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00024 // Lesser General Public License for more details. 00025 // 00026 // You should have received a copy of the GNU Lesser General Public 00027 // License along with this library; if not, write to the Free Software 00028 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 00029 // USA 00030 // 00031 // Questions? Contact Roger Pawlowski (rppawlo@sandia.gov) or 00032 // Eric Phipps (etphipp@sandia.gov), Sandia National Laboratories. 00033 // ************************************************************************ 00034 // CVS Information 00035 // $Source: /space/CVS/Trilinos/packages/nox/src-loca/src-lapack/LOCA_LAPACK_Interface.H,v $ 00036 // $Author: rppawlo $ 00037 // $Date: 2006/08/22 00:01:43 $ 00038 // $Revision: 1.11 $ 00039 // ************************************************************************ 00040 //@HEADER 00041 00042 #ifndef LOCA_LAPACK_INTERFACE_H 00043 #define LOCA_LAPACK_INTERFACE_H 00044 00045 #include "NOX_LAPACK_Vector.H" 00046 #include "NOX_LAPACK_Matrix.H" 00047 #include "NOX_LAPACK_Interface.H" 00048 00049 // Forward declarations 00050 namespace LOCA { 00051 class ParameterVector; 00052 } 00053 00054 namespace LOCA { 00055 namespace LAPACK { 00056 00065 class Interface : public NOX::LAPACK::Interface { 00066 00067 public: 00068 00070 Interface() {} 00071 00073 virtual ~Interface() {} 00074 00076 virtual void setParams(const ParameterVector& p) = 0; 00077 00079 virtual void printSolution(const NOX::LAPACK::Vector& x_, 00080 const double conParam) {} 00081 00091 virtual bool computeShiftedMatrix( 00092 double alpha, double beta, 00093 const NOX::LAPACK::Vector& x, 00094 NOX::LAPACK::Matrix<double>& A) 00095 { 00096 bool res = true; 00097 if (alpha != 0.0) { 00098 res = computeJacobian(A, x); 00099 A.scale(alpha); 00100 } 00101 else 00102 A.scale(0.0); 00103 if (beta != 0.0) 00104 for (int i=0; i<A.numRows(); i++) 00105 if (i < A.numCols()) 00106 A(i,i) += beta; 00107 return res; 00108 } 00109 00111 00113 virtual void projectToDraw(const NOX::LAPACK::Vector& x, 00114 double *px) const { 00115 px[0] = x.norm(NOX::Abstract::Vector::MaxNorm); 00116 } 00117 00119 virtual int projectToDrawDimension() const { return 1; } 00120 00121 }; 00122 } // namespace LAPACK 00123 } // namespace LOCA 00124 00125 #endif