Tpetra parallel linear algebra  Version of the Day
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Tpetra_ConfigDefs.hpp
1 // @HEADER
2 // ***********************************************************************
3 //
4 // Tpetra: Templated Linear Algebra Services Package
5 // Copyright (2008) Sandia Corporation
6 //
7 // Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation,
8 // the U.S. Government retains certain rights in this software.
9 //
10 // Redistribution and use in source and binary forms, with or without
11 // modification, are permitted provided that the following conditions are
12 // met:
13 //
14 // 1. Redistributions of source code must retain the above copyright
15 // notice, this list of conditions and the following disclaimer.
16 //
17 // 2. Redistributions in binary form must reproduce the above copyright
18 // notice, this list of conditions and the following disclaimer in the
19 // documentation and/or other materials provided with the distribution.
20 //
21 // 3. Neither the name of the Corporation nor the names of the
22 // contributors may be used to endorse or promote products derived from
23 // this software without specific prior written permission.
24 //
25 // THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY
26 // EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
27 // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
28 // PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE
29 // CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
30 // EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
31 // PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
32 // PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
33 // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
34 // NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
35 // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
36 //
37 // ************************************************************************
38 // @HEADER
39 
40 #ifndef TPETRA_CONFIGDEFS_HPP
41 #define TPETRA_CONFIGDEFS_HPP
42 
43 #include "Tpetra_Details_DefaultTypes.hpp"
44 #include "Teuchos_ConfigDefs.hpp"
45 
46 namespace Tpetra {
47  // Used in all Tpetra code that explicitly must a type (like a loop index)
48  // that is used with the Teuchos::Array[View,RCP] classes.
49 
51  typedef Teuchos_Ordinal Array_size_type;
52 }
53 
54 // these make some of the macros in Tpetra_Util.hpp much easier to describe
55 #ifdef HAVE_TPETRA_PRINT_EFFICIENCY_WARNINGS
56  #define TPETRA_PRINTS_EFFICIENCY_WARNINGS 1
57 #else
58  #define TPETRA_PRINTS_EFFICIENCY_WARNINGS 0
59 #endif
60 
61 #ifdef HAVE_TPETRA_THROW_ABUSE_WARNINGS
62  #define TPETRA_THROWS_ABUSE_WARNINGS 1
63 #else
64  #define TPETRA_THROWS_ABUSE_WARNINGS 0
65 #endif
66 
67 #ifdef HAVE_TPETRA_PRINT_ABUSE_WARNINGS
68  #define TPETRA_PRINTS_ABUSE_WARNINGS 1
69 #else
70  #define TPETRA_PRINTS_ABUSE_WARNINGS 0
71 #endif
72 
73 
74 #include <functional>
75 
76 //#ifndef __CUDACC__
77 // mem management
78 #include "Teuchos_Array.hpp" // includes ArrayRCP
79 #include "Teuchos_RCP.hpp"
80 #include "Teuchos_Tuple.hpp" // includes ArrayView
81 // traits classes
82 #include "Teuchos_OrdinalTraits.hpp"
83 #include "Teuchos_ScalarTraits.hpp"
84 #include "Teuchos_TypeNameTraits.hpp"
85 #include "Teuchos_NullIteratorTraits.hpp"
86 #include "Teuchos_SerializationTraits.hpp"
87 // comm
88 #include "Teuchos_CommHelpers.hpp"
89 // misc
90 #include "Teuchos_ParameterList.hpp"
91 //#endif
92 
93 namespace Tpetra {
94 
101  typedef size_t global_size_t;
102 
110  enum LocalGlobal {
111  LocallyReplicated,
112  GloballyDistributed
113  };
114 
119  };
120 
121 
126  };
127 
128  enum EPrivateComputeViewConstructor {
129  COMPUTE_VIEW_CONSTRUCTOR
130  };
131 
132  enum EPrivateHostViewConstructor {
133  HOST_VIEW_CONSTRUCTOR
134  };
135 
152  template<class Arg1, class Arg2>
153  class project1st {
154  public:
155  typedef Arg1 first_argument_type;
156  typedef Arg2 second_argument_type;
157  typedef Arg1 result_type;
158  Arg1 operator () (const Arg1& x, const Arg2& ) const {
159  return x;
160  }
161  };
162 
178  template<class Arg1, class Arg2>
179  class project2nd {
180  public:
181  typedef Arg1 first_argument_type;
182  typedef Arg2 second_argument_type;
183  typedef Arg2 result_type;
184  Arg2 operator () (const Arg1& , const Arg2& y) const {
185  return y;
186  }
187  };
188 
189 } // end of Tpetra namespace
190 
191 
192 // We include this after the above Tpetra namespace declaration,
193 // so that we don't interfere with Doxygen's ability to find the
194 // Tpetra namespace declaration.
195 #include "Tpetra_CombineMode.hpp"
196 
197 
199 namespace TpetraExamples {
200 }
201 
202 namespace Tpetra {
204  namespace Ext {
205  }
206 
212  namespace MatrixMatrix {
213  }
214 
220  namespace TripleMatrixMultiply {
221  }
222 }
223 
224 namespace Tpetra {
227  Forward = 0,
228  Backward,
229  Symmetric
230  };
231 }
232 
233 // For backwards compatibility
234 namespace KokkosClassic {
235  using ::Tpetra::ESweepDirection;
236 }
237 
238 
239 #include <Kokkos_Complex.hpp>
240 
241 // Specializations of Teuchos::SerializationTraits for
242 // Kokkos::complex<{float,double}>.
243 
244 namespace Teuchos {
245  template<typename Ordinal>
246  class SerializationTraits<Ordinal, ::Kokkos::complex<float> >
247  : public DirectSerializationTraits<Ordinal, ::Kokkos::complex<float> >
248  {};
249 
250  template<typename Ordinal>
251  class SerializationTraits<Ordinal, ::Kokkos::complex<double> >
252  : public DirectSerializationTraits<Ordinal, ::Kokkos::complex<double> >
253  {};
254 } // namespace Teuchos
255 
256 #endif // TPETRA_CONFIGDEFS_HPP
LookupStatus
Return status of Map remote index lookup (getRemoteIndexList()).
Teuchos_Ordinal Array_size_type
Size type for Teuchos Array objects.
size_t global_size_t
Global size_t object.
Declaration of Tpetra::CombineMode enum, and a function for setting a Tpetra::CombineMode parameter i...
ESweepDirection
Sweep direction for Gauss-Seidel or Successive Over-Relaxation (SOR).
Binary function that returns its second argument.
LocalGlobal
Enum for local versus global allocation of Map entries.
Binary function that returns its first argument.