Got it. Thank you.
On Wed, Feb 4, 2015 at 7:25 AM, Dave May <[email protected]> wrote: > > > On Wednesday, 4 February 2015, bichinhoverde < > [email protected]> wrote: > >> Ok, but from a PETSc user perspective, what is the difference between >> create and get? >> >> When should I use get and when should I use create? >> > > It's a memory saving optimization. > It's a cache of vectors you can use. It's clever as it lets you reuse data > rather always create/destroying objects. > >> >> Can I call create several times to create several vectors? Is it the same >> as creating one and then duplicating? >> >> Yes to both > > >> Can I call get several times to get several vectors? Is it the same as >> getting one and then duplicating? >> >> > Functionally, both approaches are equivalent. However duplicating always > allocated new memory thus the total memory footprint will increase. > > > >> If I replace all gets with creates, or all creates with gets in my code, >> what will change? >> > > If you change all creates to gets, probably the most notable difference > would be the memory usage. Plus whatever extra time is required for > creating which isn't incurred when you re use vectors. > > Note that the DMGetVec will NOT initialize the entries to zero (unlike the > Create variants). The user is responsible for that task. > > >> >> >> >> >> On Wed, Feb 4, 2015 at 5:16 AM, Jed Brown <[email protected]> wrote: >> >>> bichinhoverde <[email protected]> writes: >>> >>> > Hi. I have some questions. >>> > >>> > What is the difference between DMCreateGlobalVector and >>> DMGetGlobalVector >>> > (and the local counterparts)? >>> >>> Create creates a vector that the caller owns. Get merely gets access to >>> a vector from a managed pool (creating it if necessary), to be returned >>> via DMRestoreGlobalVector(). >>> >>> > What happens when one calls SNESSolve with NULL for the solution >>> vector, as >>> > in src/snes/examples/tutorials/ex7.c:158? SNESSolve(snes,NULL,NULL); >>> >>> A vector is created automatically. You can get access to it with >>> SNESGetSolution. >>> >> >>
