Barry : We would like avoid allocating a huge array for the matrix and then having the user place on top of it.
In the new paradigm there could be options called on the resulting C of MatMatGetProduct() that would take effect before the C is fully formed to prevent the allocating and freeing for a huge array the same time as user array exists but with the current API we have for this release. Allocation of C is done in the symbolic product, not GetProduct(). Petsc gets user's array before symbolic product, thus it will not allocate C array. Hong