[petsc-users] Wise usage of user contexts

Timothée Nicolas timothee.nicolas at gmail.com
Tue Aug 18 03:42:36 CDT 2015


Hi all,

I am in the process of writing an implicit solver for a set of PDEs (namely
MHD equations), in FORTRAN. When setting the non-linear function to solve
via Newton-Krylov, I use a "user defined context", namely the thing denoted
by "ctx" on the doc page about SNESFunction :

http://www.mcs.anl.gov/petsc/petsc-current/docs/manualpages/SNES/SNESFunction.html#SNESFunction

In practice ctx is a user defined type which contains everything I need in
the local routine which sets the function on the local part of the grid,
FormFunctionLocal. That is, some local/global geometrical information on
the grid, the physical parameter, and possibly any other thing.

In my case it so happens that due to the scheme I have chosen, when I
compute my function, I need the full solution of the problem at the last
two time steps (which are in Vec format). So my ctx contains two Vec
elements. Since I will work in 3D and intend to use a lot of points in the
future, I am concerned about memory problems which could occur.

Is there a limit to the size occupied by ctx ? Would this be better if
instead I was declaring global variables in a module and using this module
inside FormFunctionLocal ? Is this allowed ?

Best regards

Timothee NICOLAS
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20150818/0a5a1a84/attachment.html>


More information about the petsc-users mailing list