Beispiel #1
0
void ComputeMassMat::compute(SXMatrix &M,const TetMesh&mesh, const vector<SX> &density){
  
  assert_eq(density.size(),mesh.tets().size());
  this->_density = density;

  _M.setZero();
  computeCompactM(_M,mesh);

  const int n = mesh.nodes().size();
  M.resize(n*3,n*3);
  M.setZero();

  for (int i = 0; i < _M.size1(); ++i){
	for (int j = 0; j < _M.size2(); ++j){
	  if( _M.hasNZ(i,j) ){
		M.elem(i*3+0,j*3+0) = _M.elem(i,j);
		M.elem(i*3+1,j*3+1) = _M.elem(i,j);
		M.elem(i*3+2,j*3+2) = _M.elem(i,j);
	  }
	}
  }
}