Hello,


I have system matrix which is symmetric and thought I could make use of 
MatCreateSBAIJ. I don’t understand how to set the blocksize bs. I believe it 
has taken into account, when having multiple components/dofs per node.



(i)          Currently, I have only one scalar field to solve so I set bs = 1 
as below. Is it correct?


      ierr = MatCreateSBAIJ(PETSC_COMM_WORLD, 1, PETSC_DECIDE, PETSC_DECIDE, N, 
N, d_nz, PETSC_NULL, o_nz, PETSC_NULL, &A); CHKERRQ(ierr);

   ierr = MatCreateVecs(A, &right, &left);CHKERRQ(ierr);



(ii)         If you multiple components/dofs per node, say 2, is the then block 
size = 2?



(iii)        To apply homogenous Dirichlet boundary condition, I make use of 
MatZeroRowsColumns. It works in serial but while applying in parallel the 
following error is thrown,



[0]PETSC ERROR: No method zerorowscolumns for Mat of type mpisbaij



      How do I fix it?



(iv)                           Is there performance again, when using 
MatCreateSBAIJ for large symmetric system matrix? I read there is more 
communication involved.

Best,
Karthik.



This email and any attachments are intended solely for the use of the named 
recipients. If you are not the intended recipient you must not use, disclose, 
copy or distribute this email or any of its attachments and should notify the 
sender immediately and delete this email from your system. UK Research and 
Innovation (UKRI) has taken every reasonable precaution to minimise risk of 
this email or any attachments containing viruses or malware but the recipient 
should carry out its own virus and malware checks before opening the 
attachments. UKRI does not accept any liability for any losses or damages which 
the recipient may sustain due to presence of any viruses.

  • [petsc-users] Using M... Karthikeyan Chockalingam - STFC UKRI via petsc-users

Reply via email to