On Wed, Apr 3, 2013 at 11:04 PM, Dharmendar Reddy
<dharmareddy84 at gmail.com>wrote:

> Hello,
>         I see that in DMPlexComputeResidualFEM boundary conditions are
> applied using DMPlexProjectFunctionLocal. I was wondering why is there a
> loop over all local vertex Ids and a call to
> evaluation function on line 241 below. If i am not wrong, i can see that
> VecSetValuesSection is only to the points indicated as boundary points in
> DMPlexCreatSection.  Should one call lines 235:242 only if v is constrained
> node ? Also, should the user provide functions for all components of all
> fields, is there a way to update add value of only the field that is
> constrained ?
>
> 234:   for (v = vStart; v < vEnd; ++v) {235:     PetscInt 
> <http://www.mcs.anl.gov/petsc/petsc-dev/docs/manualpages/Sys/PetscInt.html#PetscInt>
>  dof, off;
> 237:     PetscSectionGetDof 
> <http://www.mcs.anl.gov/petsc/petsc-dev/docs/manualpages/IS/PetscSectionGetDof.html#PetscSectionGetDof>(cSection,
>  v, &dof);238:     PetscSectionGetOffset 
> <http://www.mcs.anl.gov/petsc/petsc-dev/docs/manualpages/IS/PetscSectionGetOffset.html#PetscSectionGetOffset>(cSection,
>  v, &off);239:     if (dof > dim) SETERRQ2 
> <http://www.mcs.anl.gov/petsc/petsc-dev/docs/manualpages/Sys/SETERRQ2.html#SETERRQ2>(PetscObjectComm
>  
> <http://www.mcs.anl.gov/petsc/petsc-dev/docs/manualpages/Sys/PetscObjectComm.html#PetscObjectComm>((PetscObject
>  
> <http://www.mcs.anl.gov/petsc/petsc-dev/docs/manualpages/Sys/PetscObject.html#PetscObject>)dm),
>  PETSC_ERR_ARG_WRONG, "Cannot have more coordinates %d then dimensions %d", 
> dof, dim);240:     for (d = 0; d < dof; ++d) coords[d] = 
> PetscRealPart(cArray[off+d]);241:     for (c = 0; c < numComp; ++c) values[c] 
> = (*funcs[c])(coords);242:     VecSetValuesSection 
> <http://www.mcs.anl.gov/petsc/petsc-dev/docs/manualpages/Vec/VecSetValuesSection.html#VecSetValuesSection>(localX,
>  section, v, values, mode);243:   }
>
> ProjectFunction() just implements \int_\Omega v f(x). If you really don't
want to add a no-op function, I can
check for NULL, but I think that is slower in the inner loop.

   Matt



> --
> -----------------------------------------------------
> Dharmendar Reddy Palle
> Graduate Student
> Microelectronics Research center,
> University of Texas at Austin,
> 10100 Burnet Road, Bldg. 160
> MER 2.608F, TX 78758-4445
> e-mail: dharmareddy84 at gmail.com
> Phone: +1-512-350-9082
> United States of America.
> Homepage: https://webspace.utexas.edu/~dpr342
>



-- 
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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: 
<http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20130404/6252cf30/attachment.html>

Reply via email to