← Back to team overview

dolfin team mailing list archive

uBlasDenseMatrix

 


Hi,

Using the old build system I could do:

#include <dolfin/uBlasDenseMatrix.h>

and 

uBlasDenseMatrix A,B,C,D;
axpy_prod(trans(A), prod(B, C), D, true);

but now with scons and

#include <dolfin/la/uBlasDenseMatrix.h>


I get the following error:


g++ -o LiftingAssembler.o -c -pthread
-I/home/oelgaard/fenics/clone/dolfin/local/include
-I/usr/lib/python2.5/site-packages/numpy/core/include
-I/home/oelgaard/slepc-2.3.3 -I/home/oelgaard/slepc-2.3.3/include
-I/usr/include/suitesparse -I/usr/include/python2.5
-I/home/oelgaard/petsc-2.3.3-p7/bmake/linux-gnu-cxx-debug
-I/home/oelgaard/petsc-2.3.3-p7/include
-I/home/oelgaard/petsc-2.3.3-p7/externalpackages/mpich2-1.0.5p4/linux-gnu-cxx-debug/include
-I/home/oelgaard/local/include -I/usr/include/libxml2 -I/usr/include/glib-2.0
-I/usr/lib/glib-2.0/include LiftingAssembler.cpp
/usr/include/boost/numeric/ublas/matrix_expression.hpp: In function 'typename
boost::numeric::ublas::matrix_matrix_binary_traits<typename E1::value_type, E1,
typename E2::value_type, E2>::result_type boost::numeric::ublas::prod(const
boost::numeric::ublas::matrix_expression<E>&, const
boost::numeric::ublas::matrix_expression<E2>&) [with E1 =
boost::numeric::ublas::matrix_unary2<boost::numeric::ublas::matrix<double,
boost::numeric::ublas::basic_row_major<unsigned int, int>,
boost::numeric::ublas::unbounded_array<double, std::allocator<double> > >,
boost::numeric::ublas::scalar_identity<double> >, E2 =
boost::numeric::ublas::matrix_matrix_binary<boost::numeric::ublas::matrix<double,
boost::numeric::ublas::basic_row_major<unsigned int, int>,
boost::numeric::ublas::unbounded_array<double, std::allocator<double> > >,
boost::numeric::ublas::matrix<double,
boost::numeric::ublas::basic_row_major<unsigned int, int>,
boost::numeric::ublas::unbounded_array<double, std::allocator<double> > >,
boost::numeric::ublas::matrix_matrix_prod<double, double, double> >]':
/usr/include/boost/numeric/ublas/operation.hpp:518:   instantiated from 'M&
boost::numeric::ublas::axpy_prod(const
boost::numeric::ublas::matrix_expression<E2>&, const
boost::numeric::ublas::matrix_expression<E2>&, M&, TRI,
boost::numeric::ublas::dense_proxy_tag, boost::numeric::ublas::row_major_tag)
[with M = dolfin::uBlasMatrix<boost::numeric::ublas::matrix<double,
boost::numeric::ublas::basic_row_major<unsigned int, int>,
boost::numeric::ublas::unbounded_array<double, std::allocator<double> > > >, E1
= boost::numeric::ublas::matrix_unary2<boost::numeric::ublas::matrix<double,
boost::numeric::ublas::basic_row_major<unsigned int, int>,
boost::numeric::ublas::unbounded_array<double, std::allocator<double> > >,
boost::numeric::ublas::scalar_identity<double> >, E2 =
boost::numeric::ublas::matrix_matrix_binary<boost::numeric::ublas::matrix<double,
boost::numeric::ublas::basic_row_major<unsigned int, int>,
boost::numeric::ublas::unbounded_array<double, std::allocator<double> > >,
boost::numeric::ublas::matrix<double,
boost::numeric::ublas::basic_row_major<unsigned int, int>,
boost::numeric::ublas::unbounded_array<double, std::allocator<double> > >,
boost::numeric::ublas::matrix_matrix_prod<double, double, double> >, TRI =
boost::numeric::ublas::basic_full<unsigned int>]'
/usr/include/boost/numeric/ublas/operation.hpp:724:   instantiated from 'M&
boost::numeric::ublas::axpy_prod(const
boost::numeric::ublas::matrix_expression<E2>&, const
boost::numeric::ublas::matrix_expression<E2>&, M&, bool) [with M =
dolfin::uBlasDenseMatrix, E1 =
boost::numeric::ublas::matrix_unary2<boost::numeric::ublas::matrix<double,
boost::numeric::ublas::basic_row_major<unsigned int, int>,
boost::numeric::ublas::unbounded_array<double, std::allocator<double> > >,
boost::numeric::ublas::scalar_identity<double> >, E2 =
boost::numeric::ublas::matrix_matrix_binary<boost::numeric::ublas::matrix<double,
boost::numeric::ublas::basic_row_major<unsigned int, int>,
boost::numeric::ublas::unbounded_array<double, std::allocator<double> > >,
boost::numeric::ublas::matrix<double,
boost::numeric::ublas::basic_row_major<unsigned int, int>,
boost::numeric::ublas::unbounded_array<double, std::allocator<double> > >,
boost::numeric::ublas::matrix_matrix_prod<double, double, double> >]'
LiftingAssembler.cpp:685:   instantiated from here
/usr/include/boost/numeric/ublas/matrix_expression.hpp:4815: error: invalid
application of 'sizeof' to incomplete type 'boost::STATIC_ASSERTION_FAILURE<false>'
scons: *** [LiftingAssembler.o] Error 1
scons: building terminated because of errors.


If I just do:

axpy_prod(trans(A), B, C, true);

it will compile but this is, of course, not what I want...


Kristian