added operator() to change values
parent
6073bdb679
commit
8bf8e4dc1f
|
@ -10,41 +10,45 @@
|
||||||
|
|
||||||
namespace tensors {
|
namespace tensors {
|
||||||
|
|
||||||
/** Rank 2 Tensor */
|
/** Rank 2 Tensor */
|
||||||
template<int N1, int N2>
|
template<int N1, int N2>
|
||||||
class Tensor2 {
|
class Tensor2 {
|
||||||
protected:
|
protected:
|
||||||
Tensor1<N1> T[N2];
|
Tensor1<N1> T[N2];
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
/** default constructor */
|
/** default constructor */
|
||||||
Tensor2() {
|
Tensor2() {
|
||||||
}
|
}
|
||||||
|
|
||||||
/* construct from data */
|
/* construct from data */
|
||||||
Tensor2(const double data[N2][N1]) {
|
Tensor2(const double data[N2][N1]) {
|
||||||
for (int j = 0; j < N2; j++)
|
for (int j = 0; j < N2; j++)
|
||||||
T[j] = Tensor1<N1> (data[j]);
|
T[j] = Tensor1<N1> (data[j]);
|
||||||
}
|
}
|
||||||
|
|
||||||
/** construct from expression */
|
/** construct from expression */
|
||||||
template<class A, char I, char J>
|
template<class A, char I, char J>
|
||||||
Tensor2(const Tensor2Expression<A, Index<N1, I> , Index<N2, J> >& a) {
|
Tensor2(const Tensor2Expression<A, Index<N1, I> , Index<N2, J> >& a) {
|
||||||
for (int j = 0; j < N2; j++)
|
for (int j = 0; j < N2; j++)
|
||||||
T[j] = a(j);
|
T[j] = a(j);
|
||||||
}
|
}
|
||||||
|
|
||||||
double operator()(int i, int j) const {
|
const double & operator()(int i, int j) const {
|
||||||
return T[j](i);
|
return T[j](i);
|
||||||
}
|
}
|
||||||
|
|
||||||
/** convert to expression */
|
double & operator()(int i, int j) {
|
||||||
template<char I, char J> Tensor2Expression<Tensor2, Index<N1, I> , Index<
|
return T[j](i);
|
||||||
N2, J> > operator()(Index<N1, I> i, Index<N2, J> j) const {
|
}
|
||||||
return Tensor2Expression<Tensor2, Index<N1, I> , Index<N2, J> > (*this);
|
|
||||||
}
|
/** convert to expression */
|
||||||
};
|
template<char I, char J> Tensor2Expression<Tensor2, Index<N1, I> , Index<
|
||||||
|
N2, J> > operator()(Index<N1, I> i, Index<N2, J> j) const {
|
||||||
|
return Tensor2Expression<Tensor2, Index<N1, I> , Index<N2, J> > (*this);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
} // namespace tensors
|
} // namespace tensors
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue