PETSc developers and users, I apologize for my rude and unfair message to PETSc developers.
I have removed myself from the PETSc mailing lists and removed my access to the PETSc repository and will no longer be involved in PETSc. Barry > On Feb 18, 2020, at 9:10 PM, Smith, Barry F. <bsm...@mcs.anl.gov> wrote: > > > In the past you needed a brain to get a Stanford email account > > >> Begin forwarded message: >> >> From: Yuyun Yang <yyan...@stanford.edu> >> Subject: Re: [petsc-users] Matrix-free method in PETSc >> Date: February 18, 2020 at 8:26:11 AM CST >> To: Matthew Knepley <knep...@gmail.com> >> Cc: "Smith, Barry F." <bsm...@mcs.anl.gov>, "petsc-us...@mcs.anl.gov" >> <petsc-us...@mcs.anl.gov> >> >> Thanks. Also, when using KSP, would the syntax be KSPSetOperators(ksp,A,A)? >> Since you mentioned preconditioners are not generally used for matrix-free >> operators, I wasn’t sure whether I should still put “A” in the Pmat field. >> >> Is it still possible to use TS in conjunction with the matrix-free operator? >> I’d like to create a simple test case that solves the 1d heat equation >> implicitly with variable coefficients, but didn’t know how the time stepping >> can be set up. >> >> Thanks, >> Yuyun >> >> From: Matthew Knepley <knep...@gmail.com> >> Date: Tuesday, February 18, 2020 at 9:23 PM >> To: Yuyun Yang <yyan...@stanford.edu> >> Cc: "Smith, Barry F." <bsm...@mcs.anl.gov>, "petsc-us...@mcs.anl.gov" >> <petsc-us...@mcs.anl.gov> >> Subject: Re: [petsc-users] Matrix-free method in PETSc >> >> On Tue, Feb 18, 2020 at 8:20 AM Yuyun Yang <yyan...@stanford.edu> wrote: >> Thanks for the clarification. >> >> Got one more question: if I have variable coefficients, my stencil will be >> updated at every time step, so will the coefficients in myMatMult. In that >> case, is it necessary to destroy the shell matrix and create it all over >> again, or can I use it as it is, only calling the stencil update function, >> assuming the result will be passed into the matrix operation automatically? >> >> You update the information in the context associated with the shell matrix. >> No need to destroy it. >> >> Thanks, >> >> Matt >> >> Thanks, >> Yuyun >> >> On 2/18/20, 7:34 AM, "Smith, Barry F." <bsm...@mcs.anl.gov> wrote: >> >> >> >> > On Feb 17, 2020, at 7:56 AM, Yuyun Yang <yyan...@stanford.edu> wrote: >> > >> > Hello, >> > >> > I actually have a question about the usage of DMDA since I'm quite new >> to this. I wonder if the DMDA suite of functions can be directly called on >> vectors created from VecCreate? >> >> Yes, but you have to make sure the ones you create have the same >> sizes and parallel layouts. Generally best to get them from the DMDA or >> VecDuplicate() than the hassle of figuring out sizes. >> >> > Or the vectors have to be formed by DMDACreateGlobalVector? I'm also >> not sure about what the dof and stencil width arguments do. >> > >> > I'm still unsure about the usage of MatCreateShell and >> MatShellSetOperation, since it seems that MyMatMult should still have 3 >> inputs just like MatMult (the matrix and two vectors). Since I'm not forming >> the matrix, does that mean the matrix input is meaningless but still needs >> to exist for the sake of this format? >> >> Well the matrix input is your shell matrix so it likely has >> information you need to do your multiply routine. MatShellGetContext() (No >> you do not want to put your information about the matrix stencil inside >> global variables!) >> >> >> > >> > After I create such a shell matrix, can I use it like a regular matrix >> in KSP and utilize preconditioners? >> > >> > Thanks! >> > Yuyun >> > From: petsc-users <petsc-users-boun...@mcs.anl.gov> on behalf of Yuyun >> Yang <yyan...@stanford.edu> >> > Sent: Sunday, February 16, 2020 3:12 AM >> > To: Smith, Barry F. <bsm...@mcs.anl.gov> >> > Cc: petsc-us...@mcs.anl.gov <petsc-us...@mcs.anl.gov> >> > Subject: Re: [petsc-users] Matrix-free method in PETSc >> > >> > Thank you, that is very helpful information indeed! I will try it and >> send you my code when it works. >> > >> > Best regards, >> > Yuyun >> > From: Smith, Barry F. <bsm...@mcs.anl.gov> >> > Sent: Saturday, February 15, 2020 10:02 PM >> > To: Yuyun Yang <yyan...@stanford.edu> >> > Cc: petsc-us...@mcs.anl.gov <petsc-us...@mcs.anl.gov> >> > Subject: Re: [petsc-users] Matrix-free method in PETSc >> > >> > Yuyun, >> > >> > If you are speaking about using a finite difference stencil on a >> structured grid where you provide the Jacobian vector products yourself by >> looping over the grid doing the stencil operation we unfortunately do not >> have exactly that kind of example. >> > >> > But it is actually not difficult. I suggest starting with >> src/ts/examples/tests/ex22.c It computes the sparse matrix explicitly with >> FormIJacobian() >> > >> > What you need to do is instead in main() use MatCreateShell() and >> MatShellSetOperation(,MATOP_MULT,(void (*)(void))MyMatMult) then provide the >> routine MyMatMult() to do your stencil based matrix free product; note that >> you can create this new routine by taking the structure of IFunction() and >> reorganizing it to do the Jacobian product instead. You will need to get the >> information about the shell matrix size on each process by calling >> DMDAGetCorners(). >> > >> > You will then remove the explicit computation of the Jacobian, and >> also remove the Event stuff since you don't need it. >> > >> > Extending to 2 and 3d is straight forward. >> > >> > Any questions let us know. >> > >> > Barry >> > >> > If you like this would make a great merge request with your code to >> improve our examples. >> > >> > >> > > On Feb 15, 2020, at 9:42 PM, Yuyun Yang <yyan...@stanford.edu> wrote: >> > > >> > > Hello team, >> > > >> > > I wanted to apply the Krylov subspace method to a matrix-free >> implementation of a stencil, such that the iterative method acts on the >> operation without ever constructing the matrix explicitly (for example, when >> doing backward Euler). >> > > >> > > I'm not sure whether there is already an example for that somewhere. >> If so, could you point me to a relevant example? >> > > >> > > Thank you! >> > > >> > > Best regards, >> > > Yuyun >> >> >> >> >> >> -- >> 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/ >