added operator() to change values

release/4.3a0
Manohar Paluri 2010-03-01 18:07:18 +00:00
parent 6073bdb679
commit 8bf8e4dc1f
1 changed files with 33 additions and 29 deletions

View File

@ -10,41 +10,45 @@
namespace tensors {
/** Rank 2 Tensor */
template<int N1, int N2>
class Tensor2 {
protected:
Tensor1<N1> T[N2];
/** Rank 2 Tensor */
template<int N1, int N2>
class Tensor2 {
protected:
Tensor1<N1> T[N2];
public:
public:
/** default constructor */
Tensor2() {
}
/** default constructor */
Tensor2() {
}
/* construct from data */
Tensor2(const double data[N2][N1]) {
for (int j = 0; j < N2; j++)
T[j] = Tensor1<N1> (data[j]);
}
/* construct from data */
Tensor2(const double data[N2][N1]) {
for (int j = 0; j < N2; j++)
T[j] = Tensor1<N1> (data[j]);
}
/** construct from expression */
template<class A, char I, char J>
Tensor2(const Tensor2Expression<A, Index<N1, I> , Index<N2, J> >& a) {
for (int j = 0; j < N2; j++)
T[j] = a(j);
}
/** construct from expression */
template<class A, char I, char J>
Tensor2(const Tensor2Expression<A, Index<N1, I> , Index<N2, J> >& a) {
for (int j = 0; j < N2; j++)
T[j] = a(j);
}
double operator()(int i, int j) const {
return T[j](i);
}
const double & operator()(int i, int j) const {
return T[j](i);
}
/** 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);
}
};
double & operator()(int i, int j) {
return T[j](i);
}
/** 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