Epetra_SerialDistributor.h

Go to the documentation of this file.
00001 
00002 //@HEADER
00003 /*
00004 ************************************************************************
00005 
00006               Epetra: Linear Algebra Services Package 
00007                 Copyright (2001) Sandia Corporation
00008 
00009 Under terms of Contract DE-AC04-94AL85000, there is a non-exclusive
00010 license for use of this work by or on behalf of the U.S. Government.
00011 
00012 This library is free software; you can redistribute it and/or modify
00013 it under the terms of the GNU Lesser General Public License as
00014 published by the Free Software Foundation; either version 2.1 of the
00015 License, or (at your option) any later version.
00016  
00017 This library is distributed in the hope that it will be useful, but
00018 WITHOUT ANY WARRANTY; without even the implied warranty of
00019 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00020 Lesser General Public License for more details.
00021  
00022 You should have received a copy of the GNU Lesser General Public
00023 License along with this library; if not, write to the Free Software
00024 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
00025 USA
00026 Questions? Contact Michael A. Heroux (maherou@sandia.gov) 
00027 
00028 ************************************************************************
00029 */
00030 //@HEADER
00031 
00032 #ifndef EPETRA_SERIALDISTRIBUTOR_H
00033 #define EPETRA_SERIALDISTRIBUTOR_H
00034 
00035 #include "Epetra_Object.h"
00036 #include "Epetra_Distributor.h"
00037 class Epetra_SerialComm;
00038 
00040 
00046 class Epetra_SerialDistributor: public Epetra_Object, public virtual Epetra_Distributor {
00047     
00048   public:
00049 
00051 
00052 
00054   Epetra_SerialDistributor(const Epetra_SerialComm & Comm);
00055 
00057   Epetra_SerialDistributor(const Epetra_SerialDistributor & Plan);
00058 
00060   Epetra_Distributor * Clone(){return(dynamic_cast<Epetra_Distributor *>(new Epetra_SerialDistributor(*this)));};
00061 
00063   virtual ~Epetra_SerialDistributor();
00065 
00066   
00067   int CreateFromSends( const int & NumExportIDs,
00068                        const int * ExportPIDs,
00069            bool Deterministic,
00070                        int & NumRemoteIDs );
00071 
00072   int CreateFromRecvs( const int & NumRemoteIDs,
00073                        const int * RemoteGIDs,
00074                        const int * RemotePIDs,
00075            bool Deterministic,
00076                        int & NumExportIDs,
00077                        int *& ExportGIDs,
00078                        int *& ExportPIDs);
00079 
00080 
00081   int Do       (char * export_objs,
00082                 int obj_size,
00083                 int & len_import_objs,
00084                 char *& import_objs);
00085   int DoReverse(char * export_objs,
00086                 int obj_size,
00087                 int & len_import_objs,
00088                 char *& import_objs);
00089 
00090   int DoPosts(char * export_objs,
00091               int obj_size,
00092               int & len_import_objs,
00093               char *& import_objs);
00094   int DoWaits();
00095 
00096   int DoReversePosts(char * export_objs,
00097                      int obj_size,
00098                      int & len_import_objs,
00099                      char *& import_objs);
00100   int DoReverseWaits();
00101 
00102 
00103   int Do       (char * export_objs,
00104                 int obj_size,
00105                 int *& sizes,
00106                 int & len_import_objs,
00107                 char *& import_objs);
00108   int DoReverse(char * export_objs,
00109                 int obj_size,
00110                 int *& sizes,
00111                 int & len_import_objs,
00112                 char *& import_objs);
00113 
00114   int DoPosts(char * export_objs,
00115               int obj_size,
00116               int *& sizes,
00117               int & len_import_objs,
00118               char *& import_objs);
00119 
00120   int DoReversePosts(char * export_objs,
00121                      int obj_size,
00122                      int *& sizes,
00123                      int & len_import_objs,
00124                      char *& import_objs);
00125 
00126 
00127   virtual void Print(ostream & os) const;
00128 
00129  private:
00130   int nrecvs_;
00131   int nsends_;
00132 };
00133 #endif /* EPETRA_SERIALDISTRIBUTOR_H */

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