19#if __cplusplus >= 201103L
35 template<
class F,
int dim>
93 virtual ::std::ostream& info(::std::ostream&
os)
const;
111 ::std::ostream& operator<<(::std::ostream&
os,
TColumn<F>* T) {
114 if (T->link())
os <<
", " << T->
link();
115 }
else os <<
"TColumn(0)";
133 template<
class F,
int dim>
156 for (
uint j = 0; j < dim; ++j)
158 << i[j] <<
", n_[j] = " << n_[j]);
161 dim == 2 ? i[0]+i[1]*n_[0]
162 : i[0]+i[1]*n_[0]+i[2]*n_[0]*n_[1]);
167 for (
uint j = 0; j < dim; ++j)
169 << i[j] <<
", n_[j] = " << n_[j]);
172 i[0]+i[1]*n_[0]+i[2]*n_[0]*n_[1]); }
175 const uint*
n()
const {
return n_; }
179 virtual ::std::ostream& info(::std::ostream&
os)
const;
183 void recursiveOut_(
const int d,
uint*
n, ::std::ostream&
os)
const;
215 template<
class F,
int dim>
259 inline const uint*
n()
const {
return n_;}
265 virtual ::std::ostream& info(::std::ostream&
os)
const;
291 template<
class F,
int dim>
316 virtual ::std::ostream& info(::std::ostream&
os)
const;
319 ::std::map<uint, TColumn<F>*> T_;
321 ::std::map<uint, Array<ushort> > p_;
390 inline void setM(
uint m) {
m_ =
m; }
415 virtual ::std::ostream& info(::std::ostream&
os)
const;
476 virtual ::std::ostream& info(::std::ostream&
os)
const;
503 virtual ::std::ostream& info(::std::ostream&
os)
const;
513 virtual ::std::ostream& info(::std::ostream&
os)
const;
522#if __cplusplus >= 201103L
535 const ::std::vector<::std::pair<uint,uint>>&
ids,
536 const ::std::vector<F>&
coeffs = ::std::vector<F>(0) );
623#if __cplusplus >= 201103L
627 ::std::ostream& outputLocalMap(::std::ostream&
os)
const;
629 virtual ::std::ostream& info(::std::ostream&
os)
const;
648 , data_(T.nEntries())
653 for(
uint i=0; i < this->
n(); ++i) {
657 for(
uint i=0; i < sz_; ++i) {
716 virtual ::std::ostream& info(::std::ostream&
os)
const;
TColumnBlock(const uint *n, const uint idx, TColumn< F > *lnk=0)
F operator[](uint *i) const
F & operator[](uint *i)
Returns the /c i th entry in the column. /c i an array of size dim.
virtual TColumnBlock< F, dim > * clone() const
Returns a copy of itself.
const uint n(uint i) const
Returns the range of the multiindex for one direction i.
void write(TColumnTensor< F, dim > &t, uint k)
TColumnBlock(const TColumnBlock< F, dim > &t, const uint *n)
Transformation constructor to higher number of rows.
const uint * n() const
Returns the range of the multiindices as an array.
TColumnBlock(const TColumnBlock< F, dim > &t)
void p(uint key, ushort p)
void clear()
Deletes all TColumns (with linked list) and clear all entrances.
TColumn< F > * T(uint key) const
Gives a pointer to the TColumns of this entrance (or 0)
Array< ushort > p(uint key) const
Returns the polynomial degrees.
bool operator()(uint key)
True if a entrance exists.
TColumn< F > * appendT(uint key, TColumn< F > *T)
void p(uint key, ushort p[dim])
TColumnTensor(const uint *n, const uint idx, TColumn< F > *lnk=0)
TColumnTensor(const TColumnTensor< F, dim > &t)
TColumnTensor(const TColumnBlock< F, dim > &t, uint k)
Copy constructor, takes /c k .th block in /c t.
F operator[](uint *i) const
Returns the ith entry in the column. i an array of size dim.
virtual TColumnTensor< F, dim > * clone() const
Returns a copy of itself.
F & operator[](uint *i)
Returns the ith entry in the column. i an array of size dim.
const uint * n() const
Returns the number of rows as an array.
TColumnTensor(const TColumnTensor< F, dim > &t, const uint *n)
Transformation constructor to higher number of rows.
TColumn< F > * link() const
Returns the pointer to the next column of the linked list.
F * values()
Returns the array of entries.
void clear()
Deletes all member of the linked list.
F & operator[](uint i)
Returns the ith entry in the column.
TColumn(uint n, uint idx, TColumn< F > *lnk=0, F def=0)
Array< F > val_
The data of the column itself.
TColumn(const TColumn< F > &t)
uint n() const
Returns the number of rows.
const F * values() const
Returns the array of entries.
void append(TColumn< F > *T)
Appends a linked list of TColumns at the end.
F operator[](uint i) const
Returns the ith entry in the column.
uint index() const
Returns the index of the column in a matrix.
virtual TColumn< F > * clone() const
Returns a copy of itself.
uint successors_() const
number of successors
TIndex(const uint m, const uint n, uint idx[])
virtual void extract(const concepts::Vector< F > &solution, concepts::Array< F > &coeff) const
TIndex(const uint m, const uint n, const Array< uint > &idx)
void operator()(const ElementMatrix< F > &A, ElementMatrix< F > &B) const
uint index(const uint i) const
virtual void usedIdx(TColumn< bool > &c) const
TMatrixBase(const uint m, const uint n)
virtual void operator()(const ElementMatrix< F > &A, ElementMatrix< F > &B) const =0
virtual void usedIdx(TColumn< bool > &c) const =0
uint m() const
Returns the number of rows.
uint n_
Number of columns.
uint n() const
Returns the number of columns.
TMatrixBase(const uint n)
virtual void extract(const concepts::Vector< F > &solution, concepts::Array< F > &coeff) const =0
virtual uint index(const uint i) const =0
virtual void usedIdx(TColumn< bool > &c) const
TMatrixBlock(const TMatrix< F > *T0, F weight0=1.0, const TMatrix< F > *T1=0, F weight1=0.0)
virtual void extract(const concepts::Vector< F > &solution, concepts::Array< F > &coeff) const
TMatrix(const TMatrix< G > &T)
const TMatrix::Control * control(uint i) const
virtual uint index(const uint i) const
void operator()(const ElementMatrix< F > &A, ElementMatrix< F > &B) const
const TMatrix::Data * data(uint i) const
Returns the ith entry of the data array.
virtual void extract(const concepts::Vector< F > &solution, concepts::Array< F > &coeff) const
void append(TColumn< F > *T)
virtual void usedIdx(TColumn< bool > &c) const
TMatrix(const TMatrix< F > &T, Set< uint > *idx=0)
#define conceptsAssert3(cond, exc, msg)
Set< F > makeSet(uint n, const F &first,...)
unsigned short ushort
Abbreviation for unsigned short.
The column header: column index and length of the column data.
The matrix entries: row index and data.
F data
Data at this entry.