Call MatSetOption(mat,MAT_IGNORE_ZERO_ENTRIES,PETSC_TRUE) For each column call VecGetArray(), zero the "small entries", then call MatSetValues() for that single column.
Barry > On Feb 2, 2024, at 12:28 PM, TARDIEU Nicolas via petsc-users > <[email protected]> wrote: > > Dear PETSc users, > > I consider a sparse rectangular matrix B of size n x m, n<m, and I want to > compute a basis of its kernel. > Conceptually, I compute the SVD decomposition u, s, v = svd(B) and obtain the > basis from the columns of v^T associated with (near) zero singular values. > > In terms of implementation, B is an MPIAIJ matrix and I can use SLEPc to > retrieve each vector v_i associated with a given singular value. > Then I want to assemble a matrix from the set of v_i vectors. Depending on > the sparsity of B, the v_i may also be very sparse, so I want to build a > sparse matrix. > > Is there an efficient way to do this in PETSc? > > Regards, > Nicolas > > Ce message et toutes les pièces jointes (ci-après le 'Message') sont établis > à l'intention exclusive des destinataires et les informations qui y figurent > sont strictement confidentielles. Toute utilisation de ce Message non > conforme à sa destination, toute diffusion ou toute publication totale ou > partielle, est interdite sauf autorisation expresse. > Si vous n'êtes pas le destinataire de ce Message, il vous est interdit de le > copier, de le faire suivre, de le divulguer ou d'en utiliser tout ou partie. > Si vous avez reçu ce Message par erreur, merci de le supprimer de votre > système, ainsi que toutes ses copies, et de n'en garder aucune trace sur > quelque support que ce soit. Nous vous remercions également d'en avertir > immédiatement l'expéditeur par retour du message. > Il est impossible de garantir que les communications par messagerie > électronique arrivent en temps utile, sont sécurisées ou dénuées de toute > erreur ou virus. > ____________________________________________________ > This message and any attachments (the 'Message') are intended solely for the > addressees. The information contained in this Message is confidential. Any > use of information contained in this Message not in accord with its purpose, > any dissemination or disclosure, either whole or partial, is prohibited > except formal approval. > If you are not the addressee, you may not copy, forward, disclose or use any > part of it. If you have received this message in error, please delete it and > all copies from your system and notify the sender immediately by return > message. > E-mail communication cannot be guaranteed to be timely secure, error or > virus-free.
