EpetraExt Development
EpetraExt_TimedEpetraOperator.cpp
Go to the documentation of this file.
00001 //@HEADER
00002 // ***********************************************************************
00003 //
00004 //     EpetraExt: Epetra Extended - Linear Algebra Services Package
00005 //                 Copyright (2011) Sandia Corporation
00006 //
00007 // Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation,
00008 // the U.S. Government retains certain rights in this software.
00009 //
00010 // Redistribution and use in source and binary forms, with or without
00011 // modification, are permitted provided that the following conditions are
00012 // met:
00013 //
00014 // 1. Redistributions of source code must retain the above copyright
00015 // notice, this list of conditions and the following disclaimer.
00016 //
00017 // 2. Redistributions in binary form must reproduce the above copyright
00018 // notice, this list of conditions and the following disclaimer in the
00019 // documentation and/or other materials provided with the distribution.
00020 //
00021 // 3. Neither the name of the Corporation nor the names of the
00022 // contributors may be used to endorse or promote products derived from
00023 // this software without specific prior written permission.
00024 //
00025 // THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY
00026 // EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
00027 // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
00028 // PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE
00029 // CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
00030 // EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
00031 // PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
00032 // PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
00033 // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
00034 // NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
00035 // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
00036 //
00037 // Questions? Contact Michael A. Heroux (maherou@sandia.gov)
00038 //
00039 // ***********************************************************************
00040 //@HEADER
00041 
00042 #include "Epetra_config.h"
00043 #include "EpetraExt_TimedEpetraOperator.hpp"
00044 
00045 EpetraExt::Epetra_Timed_Operator::Epetra_Timed_Operator(const Teuchos::RCP<Epetra_Operator>& A_) 
00046   : A(A_)
00047 {
00048 ApplyTimer = Teuchos::rcp(new Teuchos::Time("apply timer",false));
00049 ApplyInverseTimer = Teuchos::rcp(new Teuchos::Time("apply inverse timer",false));
00050 }
00051 
00052 EpetraExt::Epetra_Timed_Operator::~Epetra_Timed_Operator()
00053 {
00054 }
00055 
00056 int 
00057 EpetraExt::Epetra_Timed_Operator::SetUseTranspose(bool useTranspose) 
00058 {
00059   int success;
00060   success = A->SetUseTranspose(useTranspose);
00061   return success;
00062 }
00063 
00064 int 
00065 EpetraExt::Epetra_Timed_Operator::Apply(const Epetra_MultiVector& Input, 
00066            Epetra_MultiVector& Result) const
00067 {
00068   int success;
00069   ApplyTimer->start();
00070   success = A->Apply(Input,Result);
00071   ApplyTimer->stop();
00072   return success;
00073 }
00074 
00075 int 
00076 EpetraExt::Epetra_Timed_Operator::ApplyInverse(const Epetra_MultiVector& Input, 
00077             Epetra_MultiVector& Result) const
00078 {
00079   int success;
00080   ApplyInverseTimer->start();
00081   success = A->ApplyInverse(Input,Result);
00082   ApplyInverseTimer->stop();
00083   return success;
00084 }
00085 
00086 double 
00087 EpetraExt::Epetra_Timed_Operator::NormInf() const
00088 {
00089   return A->NormInf();
00090 }
00091 
00092 
00093 const char* 
00094 EpetraExt::Epetra_Timed_Operator::Label () const
00095 {
00096   return A->Label();
00097 }
00098   
00099 bool 
00100 EpetraExt::Epetra_Timed_Operator::UseTranspose() const
00101 {
00102   return A->UseTranspose();
00103 }
00104 
00105 bool 
00106 EpetraExt::Epetra_Timed_Operator::HasNormInf() const
00107 {
00108   return A->HasNormInf();
00109 }
00110 
00111 const Epetra_Comm & 
00112 EpetraExt::Epetra_Timed_Operator::Comm() const
00113 {
00114   return A->Comm();
00115 }
00116 const Epetra_Map& 
00117 EpetraExt::Epetra_Timed_Operator::OperatorDomainMap() const
00118 {
00119   return A->OperatorDomainMap();
00120 }
00121 
00122 const Epetra_Map& 
00123 EpetraExt::Epetra_Timed_Operator::OperatorRangeMap() const
00124 {
00125   return A->OperatorRangeMap();
00126 }
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines