[petsc-users] Coupled system of equations on unstructured mesh
Matthew Knepley
knepley at gmail.com
Sun Sep 10 14:17:50 CDT 2023
On Sun, Sep 10, 2023 at 3:15 PM Karthikeyan Chockalingam - STFC UKRI <
karthikeyan.chockalingam at stfc.ac.uk> 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 <knepley at gmail.com>
> *Date: *Sunday, 10 September 2023 at 20:09
> *To: *Chockalingam, Karthikeyan (STFC,DL,HC) <
> karthikeyan.chockalingam at stfc.ac.uk>
> *Cc: *petsc-users at mcs.anl.gov <petsc-users at mcs.anl.gov>
> *Subject: *Re: [petsc-users] Coupled system of equations on unstructured
> mesh
>
> On Sun, Sep 10, 2023 at 3:01 PM Karthikeyan Chockalingam - STFC UKRI <
> karthikeyan.chockalingam at stfc.ac.uk> 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 <knepley at gmail.com>
> *Date: *Sunday, 10 September 2023 at 19:03
> *To: *Chockalingam, Karthikeyan (STFC,DL,HC) <
> karthikeyan.chockalingam at stfc.ac.uk>
> *Cc: *petsc-users at mcs.anl.gov <petsc-users at mcs.anl.gov>
> *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 <petsc-users at mcs.anl.gov> 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
>
> karthikeyan.chockalingam at stfc.ac.uk
>
>
>
> *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/>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20230910/8f3dc2f1/attachment.html>
More information about the petsc-users
mailing list