Notes
If this function is called on a matrix a on a distributed communicator only the local part is written in output. To get a single MatrixMarket file with the whole matrix when appropriate, e.g. for debugging purposes, one could gather the whole matrix on a single rank and then write it. Consider the following example for a double precision matrix
type(psb_ldspmat_type) :: aglobal call psb_gather(aglobal,a,desc_a,info) if (iam == psb_root_) then call mm_mat_write(aglobal,mtitle,info,filename) end if call psb_spfree(aglobal, desc_a, info)
To simplify this procedure in C, there is a utility function
psb_i_t psb_c_<s,d,c,z>global_mat_write(ah,cdh);
that produces exactly this result.