Class documentation of Concepts

Loading...
Searching...
No Matches
smatrix.hh
Go to the documentation of this file.
1
9#ifndef smatrix_hh
10#define smatrix_hh
11
13#include "basics/typedefs.hh"
14#include "toolbox/array.hh"
15
16namespace concepts {
17
18 // forward declaration
19 template<class F>
20 class TColumn;
21
22 template<class F>
23 class ShapeFunction1D;
24
25 // *********************************************************** SMatrixBase **
26
54 template<class F>
55 class SMatrixBase : public virtual OutputOperator {
56 public:
58 virtual void operator()(const TColumn<F>& src, TColumn<F>& dest) const = 0;
59
61 virtual uint size() const = 0;
62 protected:
63 virtual std::ostream& info(std::ostream& os) const;
64 };
65
66 // ************************************************************* SMatrix1D **
67
79 class SMatrix1D : public SMatrixBase<Real> {
80 public:
97 const ShapeFunction1D<Real>& left,
98 const ShapeFunction1D<Real>& right);
99
111 SMatrix1D(const SMatrix1D& s, const bool flip = false);
112 virtual void operator()(const TColumn<Real>& src,
113 TColumn<Real>& dest) const;
115 void scale(const Real factor);
116 virtual uint size() const;
117 protected:
118 virtual std::ostream& info(std::ostream& os) const;
119 private:
121 const uint n_;
122
133 Array<Real> data_;
134
143 Real* left_;
144
152 Real* right_;
153 };
154
155 // ********************************************************* SMatrixTensor **
156
167 template<class F, int dim>
168 class SMatrixTensor : public SMatrixBase<F> {
169 public:
176 virtual void operator()(const TColumn<F>& src, TColumn<F>& dest) const;
177 virtual uint size() const;
178 protected:
179 virtual std::ostream& info(std::ostream& os) const;
180 private:
181 const SMatrixBase<Real>& matrix_;
182 const uint position_;
183 };
184
185 // ******************************************************** SMatrixCompose **
186
191 template<class F>
192 class SMatrixCompose : public SMatrixBase<F> {
193 public:
200 const SMatrixBase<F>* C = 0) : A_(A), B_(B), C_(C) {}
201 virtual void operator()(const TColumn<F>& src, TColumn<F>& dest) const;
202 virtual uint size() const;
203 protected:
204 virtual std::ostream& info(std::ostream& os) const;
205 private:
207 const SMatrixBase<F>& A_;
209 const SMatrixBase<F>& B_;
211 const SMatrixBase<F>* C_;
212 };
213
214
215 // ************************************************** SMatrixGeneralTensor **
216
228 template<class F, int dim>
230 public:
238 SMatrixGeneralTensor(const SMatrixBase<F>& matrix, const uint* n,
239 const uint position);
247 virtual void operator()(const TColumn<F>& src, TColumn<F>& dest) const;
248 virtual uint size() const;
249 protected:
250 virtual std::ostream& info(std::ostream& os) const;
251 private:
252 const SMatrixBase<Real>& matrix_;
253 uint n_[dim];
254 const uint position_;
255 };
256
257
258 // ********************************************************** SMatrixBlock **
259
273 template<class F, int dim>
274 class SMatrixBlock : public SMatrixBase<F> {
275 public:
282 const SMatrixBase<F>* C = 0);
283 virtual void operator()(const TColumn<F>& src, TColumn<F>& dest) const;
285 inline uint size() const { return size_; }
286 protected:
287 virtual std::ostream& info(std::ostream& os) const;
288 private:
290 const SMatrixBase<F>& A_;
292 const SMatrixBase<F>& B_;
294 const SMatrixBase<F>* C_;
296 uint* n_;
298 uint size_;
299 };
300
301} // namespace concepts
302
303#endif // smatrix_hh
void scale(const Real factor)
scales the S Matrix by a factor, used for edge elements
SMatrix1D(const ShapeFunction1D< Real > &small, const ShapeFunction1D< Real > &left, const ShapeFunction1D< Real > &right)
SMatrix1D(const SMatrix1D &s, const bool flip=false)
virtual void operator()(const TColumn< Real > &src, TColumn< Real > &dest) const
Application operator.
virtual std::ostream & info(std::ostream &os) const
Returns information in an output stream.
virtual uint size() const
Returns the size of the S matrix.
virtual uint size() const =0
Returns the size of the S matrix.
virtual void operator()(const TColumn< F > &src, TColumn< F > &dest) const =0
Application operator.
virtual std::ostream & info(std::ostream &os) const
Returns information in an output stream.
uint size() const
Returns the size of the S matrix (number of rows or columns)
Definition smatrix.hh:285
virtual std::ostream & info(std::ostream &os) const
Returns information in an output stream.
virtual void operator()(const TColumn< F > &src, TColumn< F > &dest) const
Application operator.
SMatrixBlock(const SMatrixBase< F > &A, const SMatrixBase< F > &B, const SMatrixBase< F > *C=0)
virtual void operator()(const TColumn< F > &src, TColumn< F > &dest) const
Application operator.
SMatrixCompose(const SMatrixBase< F > &A, const SMatrixBase< F > &B, const SMatrixBase< F > *C=0)
Definition smatrix.hh:199
virtual std::ostream & info(std::ostream &os) const
Returns information in an output stream.
virtual uint size() const
Returns the size of the S matrix.
virtual std::ostream & info(std::ostream &os) const
Returns information in an output stream.
SMatrixGeneralTensor(const SMatrixBase< F > &matrix, const uint *n, const uint position)
SMatrixGeneralTensor(const SMatrixBase< F > &matrix, const uint position)
virtual void operator()(const TColumn< F > &src, TColumn< F > &dest) const
Application operator.
virtual uint size() const
Returns the size of the S matrix.
virtual std::ostream & info(std::ostream &os) const
Returns information in an output stream.
SMatrixTensor(const SMatrixBase< F > &matrix, const uint position)
virtual void operator()(const TColumn< F > &src, TColumn< F > &dest) const
Application operator.
virtual uint size() const
Returns the size of the S matrix.
double Real
Definition typedefs.hh:39
Set< F > makeSet(uint n, const F &first,...)
Definition set.hh:320