Backward Euler currently uses iterators for the underlying std::vector of matrix types to loop over matrix elements. This works with the standard matrix type, but for vectorizable matrices will include buffer elements that should not be operated on.
Acceptance Criteria
The Backward Euler solver works with vectorizable dense and sparse matrices, including when the number of grid cells is not evenly dividable by the vector dimension of the matrices
Buffer elements in the vector matrices are not accessed during the Backward Euler solve
Ideas
Implement math operations for the matrix classes (+, -, /. *) - this will likely be challenging because of temporary variables. Maybe we could try this out during a Hack-a-thon. Focus on VectorMatrix types first.
Or, use the ForEach() or Axpy() function in place of existing loops (although this won't work with an eventual CUDA BE solver)
Backward Euler currently uses iterators for the underlying
std::vector
of matrix types to loop over matrix elements. This works with the standard matrix type, but for vectorizable matrices will include buffer elements that should not be operated on.Acceptance Criteria
Ideas
+
,-
,/
.*
) - this will likely be challenging because of temporary variables. Maybe we could try this out during a Hack-a-thon. Focus on VectorMatrix types first.ForEach()
orAxpy()
function in place of existing loops (although this won't work with an eventual CUDA BE solver)