<html><head><meta http-equiv="content-type" content="text/html; charset=us-ascii"></head><body style="overflow-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;"><div><br></div>  You can find the current F90 interface definitions we support for MatSetValuesBlocked() in <div><br></div><div>/src/mat/f90-mod/petscmat.h90</div><div><br></div><div><br><div><br><blockquote type="cite"><div>On Nov 3, 2022, at 12:16 PM, Edoardo alinovi <edoardo.alinovi@gmail.com> wrote:</div><br class="Apple-interchange-newline"><div><div dir="ltr"><div dir="ltr" class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr"><div dir="ltr"><div>Hello Jed/Barry/Petsc friends</div><div><br></div><div>I am trying to assemble a block matrix with 3x3 in 2D and 4x4 blocks in 3D coming from the fully coupled NS equation.</div><div><br></div><div>I am not sure I am understanding the example provided here:</div><div><a href="https://petsc.org/main/docs/manualpages/Mat/MatSetValuesBlocked/">https://petsc.org/main/docs/manualpages/Mat/MatSetValuesBlocked/</a><br></div><div><br></div><div>The description says that " <em style="box-sizing:border-box;color:rgb(50,50,50);font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-size:15px"><span style="box-sizing:border-box;font-weight:bolder">v -</span></em> <span style="color:rgb(50,50,50);font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-size:15px">a logically two-dimensional array of values</span>", while in the example is passed as a 1D array.</div><div><br></div><div>Should I pass a 2D array like v(1:nComp,1:nComp) or an array v(1:nComp*nComp) to MatSetValuesBlocked (I am using fortran that's why I start form 1 in my arrays) ? </div></div></div></div></div></div></blockquote><div><br></div>  We intend to support both approaches, whatever is most convenient for the rest of your code. (Perhaps more interface definitions are needed?)  </div><div><br></div><div>  When we say "logically" two-dimensions this is intended to mean that you can pass a one dimensional array that contains all the nonzeros in the block in the order of the first column, followed by the second column etc. (How Fortran handles two dimensional arrays normally). But in most circumstances I would guess providing directly the two dimensal Fortran array is more natural.</div><div><br><blockquote type="cite"><div><div dir="ltr"><div dir="ltr" class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr"><div dir="ltr"><div><br></div><div>Are <span style="box-sizing:border-box;color:rgb(50,50,50);font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol""><span style="box-sizing:border-box"><i>idxm </i>and </span></span><span style="box-sizing:border-box;color:rgb(50,50,50);font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol""><span style="box-sizing:border-box"><i>idxn </i></span></span>the global index of each block right? I guess PETSc will correctly assign each block row and column as it knows the matrix has a given structure.</div></div></div></div></div></div></blockquote><div><br></div>   Yes<br><blockquote type="cite"><div><div dir="ltr"><div dir="ltr" class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr"><div dir="ltr"><div><br></div><div>Thank you as always! </div><div><br></div><div><br></div></div></div></div></div>
</div></blockquote></div><br></div></body></html>