On Fri, Sep 26, 2014 at 10:06 AM, Miguel Angel Salazar de Troya < salazardetr...@gmail.com> wrote:
> That means that if we call SNESSetFunction() we don't build the residual > vector in parallel? In the pflow example ( > http://www.mcs.anl.gov/petsc/petsc-as/petsc-current/src/snes/examples/tutorials/network/pflow/pf.c.html) > the function FormFunction() (Input for SNESSetFunction() works with the > local vectors. I don't understand this. > FormFunction() in that link clearly takes in a global vector X and returns a global vector F. Inside, it converts them to local vectors. This is exactly what you would do for a function given to SNESSetFunction(). Matt > > Thanks > Miguel > > On Fri, Sep 26, 2014 at 9:34 AM, Matthew Knepley <knep...@gmail.com> > wrote: > >> 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 >> > > > > -- > *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