Epetra_LocalMap.cpp

Go to the documentation of this file.
00001 
00002 //@HEADER
00003 // ************************************************************************
00004 // 
00005 //               Epetra: Linear Algebra Services Package 
00006 //                 Copyright (2001) 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 Michael A. Heroux (maherou@sandia.gov) 
00026 // 
00027 // ************************************************************************
00028 //@HEADER
00029 
00030 #include "Epetra_LocalMap.h"
00031 #include "Epetra_Comm.h"
00032 
00033 //============================================================================
00034 Epetra_LocalMap::Epetra_LocalMap(int NumMyElements, int IndexBase, 
00035                                  const Epetra_Comm& Comm)
00036   // LocalMap is just a special case of Map
00037   : Epetra_Map(NumMyElements, NumMyElements, IndexBase, Comm) 
00038 {
00039   SetLabel("Epetra::LocalMap");
00040   if (CheckInput()!=0)
00041     throw ReportError("Replicated Local Map not the same size on all PEs",-1);
00042 }
00043 //============================================================================
00044 Epetra_LocalMap::Epetra_LocalMap(const Epetra_LocalMap& map)
00045   : Epetra_Map(map) 
00046 {
00047   if (CheckInput()!=0)
00048     throw ReportError("Replicated Local Map not the same size on all PEs",-1);
00049 }
00050  
00051 //============================================================================
00052 int Epetra_LocalMap::CheckInput() {
00053   int * tmp = new int[4];
00054   tmp[0] = NumMyElements();
00055   tmp[1] = - NumMyElements();
00056   Comm().MaxAll(tmp, tmp+2, 2);
00057 
00058   int tmp1 = tmp[2]; // Max of all NumMyElements across all processors
00059   int tmp2 = - tmp[3]; // Min of all ...
00060   delete [] tmp;
00061 
00062   if (tmp1==tmp2) 
00063     return(0);
00064   else 
00065     return(-1);
00066 }
00067 //=========================================================================
00068 Epetra_LocalMap::~Epetra_LocalMap()
00069 {
00070 }
00071 //=============================================================================
00072 Epetra_LocalMap & Epetra_LocalMap::operator= (const Epetra_LocalMap& map) {
00073   if(this != &map)
00074     Epetra_BlockMap::operator=(map); // call this->Epetra_BlockMap::operator=
00075   return(*this);
00076 }

Generated on Thu Sep 18 12:37:57 2008 for Epetra Package Browser (Single Doxygen Collection) by doxygen 1.3.9.1