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 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 >::reset(
boost::numeric::ublas::matrix_row >&)'
*/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]
*/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]
--
\
| Pascal Bauer
|
| Space Research & Planetary Sciences
| Research Division
|
| University of Bern
|
| Phone: +41316314416
|
| e-mail: mailto:pascal.bauer@phim.unibe.ch
/