On Sun, Sep 10, 2023 at 4:16 PM Karthikeyan Chockalingam - STFC UKRI < [email protected]> wrote:
> Thank you. I almost got it and have a couple of questions. > > > > Let me summarize, I have an element Jacobian matrix of size 8 x 8 for > QAUD4 (for variables u and v) ordered such that the degrees of freedom at > a node are grouped together i.e. [u1 v1 u2 v2 u3 v3 u4 v4]. > > > > Q1) But this ordering of element Jacobian matrix of size 8 x 8, does not > have an on-diagonal and off-diagonal block structure? Does it not matter? > It does have block structure in that each entry in your original matrix is now a 2x2 block entry in the matrix for 2 fields. When assembling the element Jacobian into the system matrix A, I would make > use of MatSetValues. For each element, I *presume* m = 8 and n = 8 along > with idxm and idxn, are passed to MatSetValues. Meaning I have to figure > out the global index (say idxm) set of size 8 corresponding to the system > matrix A. > What you can do is call https://petsc.org/main/manualpages/Mat/MatSetValuesBlocked/ and give the same indices that you would have given for the original matrix, but instead of a value at each location, we now have a 2x2 block. > Q2) What does setting the block size bs = 2 accomplish? Because the way to > assemble the Jacobian into the system matrix A seems to me no different > than I did for the single variable scalar problem. > This is answered above. Thanks, Matt > Kind regards, > > Karthik. > > > > > > *From: *Matthew Knepley <[email protected]> > *Date: *Sunday, 10 September 2023 at 20:18 > *To: *Chockalingam, Karthikeyan (STFC,DL,HC) < > [email protected]> > *Cc: *[email protected] <[email protected]> > *Subject: *Re: [petsc-users] Coupled system of equations on unstructured > mesh > > On Sun, Sep 10, 2023 at 3:15 PM Karthikeyan Chockalingam - STFC UKRI < > [email protected]> wrote: > > I don’t see an option to give block size. > > https://petsc.org/release/manualpages/Mat/MatCreateAIJ/ > > > > https://petsc.org/release/manualpages/Mat/MatSetBlockSize/ > > > > Thanks, > > > > Matt > > > > > > Many thanks, > > Karthik. > > > > > > *From: *Matthew Knepley <[email protected]> > *Date: *Sunday, 10 September 2023 at 20:09 > *To: *Chockalingam, Karthikeyan (STFC,DL,HC) < > [email protected]> > *Cc: *[email protected] <[email protected]> > *Subject: *Re: [petsc-users] Coupled system of equations on unstructured > mesh > > On Sun, Sep 10, 2023 at 3:01 PM Karthikeyan Chockalingam - STFC UKRI < > [email protected]> wrote: > > I will solve the coupled problem in a non-linear fashion using SNES, so I > will have one residual for each variable R(u1) and R(u2) and the resulting > Jacobian matrix > > > > J = [J11 J12 > > J21 J22] for each element. > > > > For first-order Lagrange elements (in 2D) will have four nodes, then J > would be of size 8 x 8. Let's say the variables are u and v. The order > would be [u1 u2 u3 u4 v1 v2 v3 v4]. > > > > Or should I rearrange the above entrées in the element Jacobian so as to > have [u1 v1 u2 v2 u3 v3 u4 v4] ordering? In that case, the Jacobian will > not have block ordering I guess. > > > > This is the correct order to get block matrices. > > > > In my case, the discretization of the u and v are from the same element > space. > > Can you please elaborate when you say, “Just enlarge the block size of > your matrix”? > > I have never used block size before and not sure what it accomplishes. > > Do you mean to say, I should use MATBAIJ instead of MATAIJ? > > > > You do not need to change the type, just give the AIJ matrix a blocksize > of 2. > > > > Thanks, > > > > Matt > > > > Kind regards, > > Karthik. > > > > *From: *Matthew Knepley <[email protected]> > *Date: *Sunday, 10 September 2023 at 19:03 > *To: *Chockalingam, Karthikeyan (STFC,DL,HC) < > [email protected]> > *Cc: *[email protected] <[email protected]> > *Subject: *Re: [petsc-users] Coupled system of equations on unstructured > mesh > > On Sun, Sep 10, 2023 at 1:48 PM Karthikeyan Chockalingam - STFC UKRI via > petsc-users <[email protected]> wrote: > > Hello, > > > > I have so far solved scalar field problems using finite elements on a > given (*unstructured*) mesh. I made use of MATMPIAIJ to create matrixes, > MatCreateVecs(A, &b, &x) to create vectors, and MatZeroRowsColumnsIS to > set boundary conditions. > > > > Now, I would like to solve a coupled system of equations for the > quantities u1 and u2 on the (*unstructured*) mesh. I.e., the matrix > should get the double number of rows and columns, > > > > A = [A00 A01 > > A10 A11] > > > > This is usually not a good way to think of it. This division means that > all variables of one field come before > > all those of another. It is much more common to group together all the > unknowns at a given point. > > > > You could, if the discretizations of u1 and u2 are the same, just enlarge > the blocksize of your matrix. Then you set u1 and u2 for each vec location, > or a 2x2 block for each Jacobian location. > > > > Thanks, > > > > Matt > > > > the vectors contain twice the number of entries (e.g. first all u1s and > then all u2s). I would like to be sure that the entries of u1 and u2, which > are associated with the same element are located on the same processor. > > > > Is a pre-defined structure already available within PETSc to enlarge such > a single equation to store the entries of coupled equations? > > > > -\Delta u_1+c_{11} u_1+c_{12} u_2=f_1 > > -\Delta u_2+c_{21} u_1+c_{22} u_2=f_2 > > > > Would I still be able to use MatZeroRowsColumnsIS u1 and u2 independently > to enforce boundary conditions? MatZeroRowsColumnsIS(A, is, 1, x, b); > > > > I don’t know where to begin. I have so far only been exposed to using > MATMPIAIJ > and MatSetValues to create and assign values to matrix entries > respectively. I would be grateful if you could provide the stepwise guide. > > > > Kind regards, > > Karthik. > > > > -- > > *Karthik Chockalingam, Ph.D.* > > Senior Research Software Engineer > > High Performance Systems Engineering Group > > Hartree Centre | Science and Technology Facilities Council > > [email protected] > > > > *Error! Filename not specified.* > > > > > > > -- > > What most experimenters take for granted before they begin their > experiments is infinitely more interesting than any results to which their > experiments lead. > -- Norbert Wiener > > > > https://www.cse.buffalo.edu/~knepley/ > <http://www.cse.buffalo.edu/~knepley/> > > > > > -- > > What most experimenters take for granted before they begin their > experiments is infinitely more interesting than any results to which their > experiments lead. > -- Norbert Wiener > > > > https://www.cse.buffalo.edu/~knepley/ > <http://www.cse.buffalo.edu/~knepley/> > > > > > -- > > What most experimenters take for granted before they begin their > experiments is infinitely more interesting than any results to which their > experiments lead. > -- Norbert Wiener > > > > https://www.cse.buffalo.edu/~knepley/ > <http://www.cse.buffalo.edu/~knepley/> > -- What most experimenters take for granted before they begin their experiments is infinitely more interesting than any results to which their experiments lead. -- Norbert Wiener https://www.cse.buffalo.edu/~knepley/ <http://www.cse.buffalo.edu/~knepley/>
