Beispiel #1
0
template <class F> inline void setvalue(NumTns<F>& T, F val)
{
  for(int i=0; i<T.m(); i++)
	 for(int j=0; j<T.n(); j++)
		for(int k=0; k<T.p(); k++)
		  T(i,j,k) = val;
}
Beispiel #2
0
template <class F> inline void setvalue(NumTns<F>& M, F val)
{
  for(int i=0; i<M.m(); i++)
	 for(int j=0; j<M.n(); j++)
		for(int k=0; k<M.p(); k++)
		  M(i,j,k) = val;
  return;
}
Beispiel #3
0
template <class T> inline void cpp2mex(const NumTns<T>& cd, mxArray*& md)
{
  int m = cd.m();
  int n = cd.n();
  int p = cd.p();
  int dims[3];  dims[0] = m;  dims[1] = n;  dims[2] = p;
  md = mxCreateCellArray(3,dims);
  int cnt = 0;
  for(int k=0; k<p; k++)
	 for(int j=0; j<n; j++)
		for(int i=0; i<m; i++) {
		  mxArray* ss;		cpp2mex(cd(i,j,k), ss);		mxSetCell(md, cnt, ss);
		  cnt++;
		}
  return;
}
Beispiel #4
0
//----------------------numtns<...>
template <class T> inline void mex2cpp(const mxArray*& md, NumTns<T>& cd)
{
  const int* dims = mxGetDimensions(md);
  int m = dims[0];  int n = dims[1];  int p = dims[2];
  cd.resize(m,n,p);
  int cnt = 0;
  for(int k=0; k<p; k++)
	 for(int j=0; j<n; j++)
		for(int i=0; i<m; i++) {
		  const mxArray* tt = mxGetCell(md, cnt);		  mex2cpp(tt, cd(i,j,k));
		  cnt++;
		}
  return;
}
Beispiel #5
0
template <class F> inline double energy(NumTns<F>& T)
{
  double sum = 0;
  for(int i=0; i<T.m(); i++)	for(int j=0; j<T.n(); j++)	  for(int k=0; k<T.p(); k++)		sum += abs(T(i,j,k)*T(i,j,k));
  return sum;
}
Beispiel #6
0
template <class F> inline void clear(NumTns<F>& T)
{
  memset(T.data(), 0, T.m()*T.n()*T.p()*sizeof(F));
}