S V N Vishwanathan <[email protected]> writes:
Hi!
BTW: possibly related note, are you using dense matrices sometimes to represent "just" 2-arrays; that is, not as representations of linear operators. If so, I do not think this is the correct approach! Conceptually PETSc Mat's are linear operators I think it would be a big mistake to overload them as 2-arrays also. The "correct" approach is to use the DACreate2d() construct for handling 2-d arrays; With the DA the values are stored into Vecs but there is additional information about the two array structure; it can be decomposed nicely in parallel and one can set/access values with the usual two i,j indices. Of course if they are being used as operators ignore this.
Simon> OK, I will think about this. But what would be the strategy for Simon> doing all these linear algebra operations ? Swap to/from Mat/DA Simon> objects ?
In Matlab matrix == 2-d array == matrix (in my opinion a terrible design decision) in PETSc matrix (dense) != 2-d array , the are completely different beasts mathematically
I am not sure I understand the fine difference. As far as we are concerned, all the operations which we are doing (point wise addition, addition, multiplication etc.) are on the linear operator. But it might be that my thought process is conditioned by years of Matlab/Octave use. Can you maybe make this more explicit i.e. which situations would you use a DA array and when would you use a Mat object?
Linear operators are members of the space of linear maps between two vector spaces. They, for instance, have a characteristic behavior under coordinate transformations. 2-d arrays are just lists of values. They need not have any transformation properties. In fact, linear operators also have spectral characteristics, and analytic behaviors. Using a PETSc Mat just to store a collection of values is wrong. This goes back to the modeling for your equations. Matt -- "Failure has a thousand explanations. Success doesn't need one" -- Sir Alec Guiness
participants (1)
-
Matthew Knepley