
Hi, I have some (strange?) problems with the ublas: I'm writing a SPH-Code for fluids and brittle solids. I use a uBLAS matrix to store all the particle-Data. Now, since the SPH code itself includes a lot of physics, i wrote a "particle" class, that give me access to the values stored in the matrix in an intuitive way. As template argument, i'll give a matrix, so i do no have to take care about matrix internals. It looks somehow thatlike: template <typename T> class Particle { static T& SPHData; //Matrix where the values are stored typename T::size_type GID; //Particle ID (...) matrix_row<T> LData; // Proxy to the particle data vector_range<matrix_row<T> > Pos; // Position vector, for // calculations... (...) typename T::value_type& mass; // Reference to physical values... Particle(typename T::size_type ParticleID); // Constructor, needs // Particle ID } template <typename T> Particle<T>::Particle(typename T::size_type ParticleID) : mass(SPHData(ParticleID, MASS)) // Set the references... { LData.reset(SPHData, ParticleID); // OK, works fine... Pos.reset(LData, range(0, 2)); // Give strange error message: // (at the end of this mail...) } I tried different methods to get the Pos to the right place in my matrix, but if i use the "=" operator, i've got some strange run-time assertion errors. My thing is, that i'd like to have a range of a matrix_row or column, that i can use later for vector-operations. How can I do that? - Pascal Bauer PS: Compile Error for my example code. */home/pbauer/oosph/src/particlecontainer.h:103: instantiated from `sph::Particle<T>::Particle(typename T::size_type) [with T = ParticleTest()::Matrix]' */home/pbauer/oosph/src/test.cpp:36: instantiated from here */usr/include/boost/numeric/ublas/vector_proxy.hpp:126: error: no matching function for call to ` boost::numeric::ublas::matrix_row<boost::numeric::ublas::matrix<double, boost::numeric::ublas::row_major, boost::numeric::ublas::unbounded_array<double> > >::reset( boost::numeric::ublas::matrix_row<boost::numeric::ublas::matrix<double, boost::numeric::ublas::row_major, boost::numeric::ublas::unbounded_array<double> > >&)' */usr/include/boost/numeric/ublas/matrix_proxy.hpp:112: error: candidates are: void boost::numeric::ublas::matrix_row<E>::reset(M&) [with M = boost::numeric::ublas::matrix<double, boost::numeric::ublas::row_major, boost::numeric::ublas::unbounded_array<double> >] */usr/include/boost/numeric/ublas/matrix_proxy.hpp:117: error: void boost::numeric::ublas::matrix_row<E>::reset(M&, typename M::size_type) [with M = boost::numeric::ublas::matrix<double, boost::numeric::ublas::row_major, boost::numeric::ublas::unbounded_array<double> >] -- \ | Pascal Bauer | | Space Research & Planetary Sciences | Research Division | | University of Bern | | Phone: +41316314416 | | e-mail: mailto:pascal.bauer@phim.unibe.ch /