On Fri, Sep 26, 2014 at 9:31 AM, Miguel Angel Salazar de Troya <
salazardetr...@gmail.com> wrote:

> Thanks. I had another question about the DM and SNES and TS. There are
> similar routines to assign the residual and jacobian evaluation to both
> objects. For the SNES case are:
>
> DMSNESSetFunctionLocal
> DMSNESSetJacobianLocal
>
> What are the differences of these with:
>
> SNESSetFunction
> SNESSetJacobian
>

SNESSetFunction() expects the user to construct the entire parallel
residual vector. DMSNESSetFunctionLocal()
expects the user to construct the local pieces of the residual, and then it
automatically calls DMLocalToGlobal()
to assembly the full residual. It also converts the input from global
vectors to local vectors, and in the case of
DMDA multidimensional arrays.

  Thanks,

    Matt


> and when should we use each? With "Local", it is meant to evaluate the
> function/jacobian for the elements in the local processor? I could get the
> local edges in DMNetwork by calling DMNetworkGetEdgeRange?
>
> Miguel
>
> On Thu, Sep 25, 2014 at 5:17 PM, Matthew Knepley <knep...@gmail.com>
> wrote:
>
>> On Thu, Sep 25, 2014 at 5:15 PM, Miguel Angel Salazar de Troya <
>> salazardetr...@gmail.com> wrote:
>>
>>> > If you need a symmetric Jacobian, you can use the BC facility in
>>> > PetscSection, which eliminates the
>>> > variables completely. This is how the FEM examples, like ex12, work.
>>>
>>> Would that be with PetscSectionSetConstraintDof ? For that I will need
>>> the PetscSection, DofSection, within DMNetwork, how can I obtain it? I
>>> could cast it to DM_Network from the dm, networkdm,  declared in the main
>>> program, maybe something like this:
>>>
>>> DM_Network     *network = (DM_Network*) networkdm->data;
>>>
>>> Then I would loop over the vertices and call PetscSectionSetConstraintDof 
>>> if it's a boundary node (by checking the corresponding component)
>>>
>>> I admit to not completely understanding DMNetwork. However, it
>> eventually builds a PetscSection for data layout, which
>> you could get from DMGetDefaultSection(). The right thing to do is find
>> where it builds the Section, and put in your BC
>> there, but that sounds like it would entail coding.
>>
>>   Thanks,
>>
>>      Matt
>>
>>
>>> Thanks for your responses.
>>>
>>> Miguel
>>>
>>>
>>>
>>> On Thu, Sep 25, 2014 at 2:42 PM, Jed Brown <j...@jedbrown.org> wrote:
>>>
>>>> Matthew Knepley <knep...@gmail.com> writes:
>>>>
>>>> > On Thu, Sep 25, 2014 at 1:46 PM, Abhyankar, Shrirang G. <
>>>> abhy...@mcs.anl.gov
>>>> >> wrote:
>>>> >
>>>> >> You are right. The Jacobian for the power grid application is indeed
>>>> >> non-symmetric. Is that a problem for your application?
>>>> >>
>>>> >
>>>> > If you need a symmetric Jacobian, you can use the BC facility in
>>>> > PetscSection, which eliminates the
>>>> > variables completely. This is how the FEM examples, like ex12, work.
>>>>
>>>> You can also use MatZeroRowsColumns() or do the equivalent
>>>> transformation during assembly (my preference).
>>>>
>>>
>>>
>>>
>>> --
>>> *Miguel Angel Salazar de Troya*
>>> Graduate Research Assistant
>>> Department of Mechanical Science and Engineering
>>> University of Illinois at Urbana-Champaign
>>> (217) 550-2360
>>> salaz...@illinois.edu
>>>
>>>
>>
>>
>> --
>> 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
>>
>
>
>
> --
> *Miguel Angel Salazar de Troya*
> Graduate Research Assistant
> Department of Mechanical Science and Engineering
> University of Illinois at Urbana-Champaign
> (217) 550-2360
> salaz...@illinois.edu
>
>


-- 
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

Reply via email to