Also if you change the "local size" of the matrix/vectors you must call 
KSPReset() so that the KSP/PC can free up all of their (previously sized) work 
matrices and vectors.

   Barry


> On May 12, 2018, at 7:08 AM, 我 <[email protected]> wrote:
> 
> 
> Thanks for your reply! I'm confused about how to create a new matrix during 
> the time step advancing.
> For better understand my problem, simple pseudo code (just contains the main 
> functions)  like this:
> /////////////////////////////////
> KSP ksp;
> PC pc;
> KSPCreate;
> Mat A;
> for(int timestep=0; timestep<20; timestep++)
> {
> //for example
> if(timestep==2)
> {
> localsize change;
> }
> MatCreateMPIAIJWithArrays(PETSC_COMM_WORLD, localsize, localsize, m, m, 
> istore, jstore, vstore, &A);
> KSPSolve;
> 
> MatDestroy(&A);
> }
> /////////////////////////////
> Thanks again!
> Daye
> 
> 
> 
> 
> At 2018-05-11 19:07:35, "Matthew Knepley" <[email protected]> wrote:
> On Fri, May 11, 2018 at 4:23 AM, 我 <[email protected]> wrote:
> Hello all,
> I use the function MatCreateMPIAIJWithArrays to construct my matrix. But the 
> number of local rows m and local columns n may change during the timestep 
> advancing.  When the local size changes, the error like "Petsc error: cannot 
> chang local size of Amat after use old sizes 10 10 new sizes 11 11" will 
> appear. Any suggestions about it ?
> 
> If the parallel layout changes, you need to create a new matrix.
> 
>   Thanks,
> 
>     Matt
>  
> Thank you very much!
> Daye
> 
> 
>  
> 
> 
> 
> -- 
> 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/
> 
> 
>  

Reply via email to