[petsc-dev] TS Terminology
Jed Brown
jed at jedbrown.org
Sat Oct 21 08:28:15 CDT 2017
Matthew Knepley <knepley at gmail.com> writes:
> On Fri, Oct 20, 2017 at 4:21 PM, Jed Brown <jed at jedbrown.org> wrote:
>
>> Matthew Knepley <knepley at gmail.com> writes:
>>
>> >> Note that TSComputeIFunction is very much like SNESComputeFunction,
>> >> which includes
>> >>
>> >> if (snes->vec_rhs) {
>> >> ierr = VecAXPY(y,-1.0,snes->vec_rhs);CHKERRQ(ierr);
>> >> }
>> >>
>> >> Why haven't you complained about that?
>> >>
>> >
>> > Good point. I did not notice. This came up because the initialization
>> > of input vectors is inconsistent between TSComputeIFunction() and
>> > TSComputeIFunctionLocal(). The former does not zero the output vec,
>> > but the later does.
>>
>> The latter function doesn't exist so maybe you mean
>> TSComputeIFunction_DMDA with ADD_VALUES? That's because the DMDA needs
>> it when using ADD_VALUES, just like SNESComputeFunction_DMDA. When
>> using INSERT_VALUES, the user is responsible for setting every entry.
>> Is any of this different from SNES?
>>
>
> No I mean TSComputeIFunction_DMLocal().
That's just some code you wrote for finite elements when you hard-coded
it for ADD_VALUES.
ierr = DMLocalToGlobalBegin(dm, locF, ADD_VALUES, F);CHKERRQ(ierr);
ierr = DMLocalToGlobalEnd(dm, locF, ADD_VALUES, F);CHKERRQ(ierr);
It's analogous to what TSComputeIFunction_DMDA does when you set
ADD_VALUES. Note that with INSERT_VALUES, as is typically used for FD
and FV, you can assemble directly into the global vector
> So if you use DMTSSetIFunction() you get different initialization
> behavior than if you use DMTSSetIFunctionLocal(). This is what Brad
> was complaining about originally.
Maybe you should document your finite element interfaces better.
More information about the petsc-dev
mailing list