LifeV
OperationSmallDot.hpp
Go to the documentation of this file.
1 //@HEADER
2 /*
3 *******************************************************************************
4 
5  Copyright (C) 2004, 2005, 2007 EPFL, Politecnico di Milano, INRIA
6  Copyright (C) 2010 EPFL, Politecnico di Milano, Emory UNiversity
7 
8  This file is part of the LifeV library
9 
10  LifeV is free software; you can redistribute it and/or modify
11  it under the terms of the GNU Lesser General Public License as published by
12  the Free Software Foundation; either version 3 of the License, or
13  (at your option) any later version.
14 
15  LifeV is distributed in the hope that it will be useful,
16  but WITHOUT ANY WARRANTY; without even the implied warranty of
17  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
18  Lesser General Public License for more details.
19 
20  You should have received a copy of the GNU Lesser General Public
21  License along with this library; if not, see <http://www.gnu.org/licenses/>
22 
23 
24 *******************************************************************************
25 */
26 //@HEADER
27 
28 /*!
29  * @file
30  @brief This file contains information about the dot product operation between Small* classes.
31 
32  @date 07/2011
33  @author Samuel Quinodoz <samuel.quinodoz@epfl.ch>
34  */
35 
36 #ifndef OPERATION_SMALL_DOT_HPP
37 #define OPERATION_SMALL_DOT_HPP
38 
39 #include <lifev/core/LifeV.hpp>
40 
41 #include <lifev/core/array/VectorSmall.hpp>
42 
43 // LifeV namespace.
44 namespace LifeV
45 {
46 //! class OperationSmallDot Class containing information about the dot product operation between Small* classes.
47 /*!
48  @author Samuel Quinodoz <samuel.quinodoz@epfl.ch>
49 
50  This class only contains information that can be usefull in a templated framework (such as the
51  one for assembling the algebraic systems via expressions).
52 
53  It cannot be instanciated, neither the generic definition nor the specializations (private constructors
54  and destructor only).
55 
56  The only information stored in this class is the type of the result, see LifeV::OperationSmallAddition.
57 */
58 
59 template <typename LeftOperand, typename RightOperand>
61 {
62 private:
63  //! @name Constructors and destructors
64  //@{
65 
66  //! No default constructor
68 
69  //! No destructor
71 
72  //@}
73 };
74 
75 //! \cond
76 
77 template <UInt Size>
78 class OperationSmallDot< VectorSmall<Size> , VectorSmall<Size> >
79 {
80 public:
81 
82  //! @name Public Types
83  //@{
84 
85  typedef Real result_Type;
86 
87  //@}
88 
89 private:
90  //! @name Constructors and destructors
91  //@{
92 
93  //! No default constructor
94  OperationSmallDot();
95 
96  //! No destructor
97  ~OperationSmallDot();
98 
99  //@}
100 };
101 
102 template <UInt Size1, UInt Size2>
103 class OperationSmallDot< MatrixSmall<Size1, Size2> , MatrixSmall<Size1, Size2> >
104 {
105 public:
106 
107  //! @name Public Types
108  //@{
109 
110  typedef Real result_Type;
111 
112  //@}
113 
114 private:
115  //! @name Constructors and destructors
116  //@{
117 
118  //! No default constructor
119  OperationSmallDot();
120 
121  //! No destructor
122  ~OperationSmallDot();
123 
124  //@}
125 };
126 
127 // specialization for matrix * vector
128 template <UInt Dim1, UInt Dim2>
129 class OperationSmallDot< MatrixSmall<Dim1, Dim2> , VectorSmall<Dim2> >
130 {
131 public:
132 
133  //! @name Public Types
134  //@{
135 
136  typedef VectorSmall<Dim1> result_Type;
137 
138  //@}
139 
140 private:
141  //! @name Constructors and destructors
142  //@{
143 
144  //! No default constructor
145  OperationSmallDot();
146 
147  //! No destructor
148  ~OperationSmallDot();
149 
150  //@}
151 };
152 
153 // specialization for matrix * vector
154 template <UInt Dim1, UInt Dim2>
155 class OperationSmallDot< VectorSmall<Dim2>, MatrixSmall<Dim1, Dim2> >
156 {
157 public:
158 
159  //! @name Public Types
160  //@{
161 
162  typedef VectorSmall<Dim1> result_Type;
163 
164  //@}
165 
166 private:
167  //! @name Constructors and destructors
168  //@{
169 
170  //! No default constructor
171  OperationSmallDot();
172 
173  //! No destructor
174  ~OperationSmallDot();
175 
176  //@}
177 };
178 
179 //! \endcond
180 
181 } // namespace LifeV
182 
183 #endif
void updateInverseJacobian(const UInt &iQuadPt)
OperationSmallDot()
No default constructor.
class OperationSmallDot Class containing information about the dot product operation between Small* c...
~OperationSmallDot()
No destructor.
double Real
Generic real data.
Definition: LifeV.hpp:175
uint32_type UInt
generic unsigned integer (used mainly for addressing)
Definition: LifeV.hpp:191