hi all...
 
      i am somehow a newbie of ublas (currently using 1.32.0)  and ... i am having some troubles with the compressed_matrix
 
in particular i am trying to write a optimized funcion to do a product of the type
 
A += trans(B)*B
 
where all the matrix involved are sparse.
 
i want to preallocate on my own the matrix A and to be sure not to modify its sparsity in processing it...
in other words i would like to get an error when i try to access an index that does not exist
 
is it possible?
 
the code i wrote is attached ... but it feels free of allocating dynamically new memory if needed
 
P.S. does it exist any efficient way of dealign with symmetric compressed matrices? they tend to be quite frequent in FE applications...
 
greetings and thanks in advance
                 Riccardo
 

for (size_type k = 0; k < input.size1 (); ++ k)

{

size_type begin = input.index1_data () [k];

size_type end = input.index1_data () [k + 1];

for (size_type i = begin; i < end; ++ i)

{

unsigned int index_i = input.index2_data () [i];

value_type data_i = input.value_data()[i];

for (size_type j = begin; j < end; ++ j)

{

unsigned int index_j = input.index2_data () [j];

output(index_i,index_j) += data_i * input.value_data()[j];

}

}

KRATOS_WATCH(output.non_zeros());

//std::cout << k << " nnz = " << end << " " << begin << std::endl;

}