<div dir="ltr"><div>Hello,<br></div>        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 <br clear="all">
<div><div>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 ?<br>
</div><div><br><pre width="80"><a name="line234">234: </a>  <font color="#4169E1">for</font> (v = vStart; v < vEnd; ++v) {
<a name="line235">235: </a>    <a href="http://www.mcs.anl.gov/petsc/petsc-dev/docs/manualpages/Sys/PetscInt.html#PetscInt">PetscInt</a> dof, off;

<a name="line237">237: </a>    <a href="http://www.mcs.anl.gov/petsc/petsc-dev/docs/manualpages/IS/PetscSectionGetDof.html#PetscSectionGetDof">PetscSectionGetDof</a>(cSection, v, &dof);
<a name="line238">238: </a>    <a href="http://www.mcs.anl.gov/petsc/petsc-dev/docs/manualpages/IS/PetscSectionGetOffset.html#PetscSectionGetOffset">PetscSectionGetOffset</a>(cSection, v, &off);
<a name="line239">239: </a>    <font color="#4169E1">if</font> (dof > dim) <a href="http://www.mcs.anl.gov/petsc/petsc-dev/docs/manualpages/Sys/SETERRQ2.html#SETERRQ2">SETERRQ2</a>(<a href="http://www.mcs.anl.gov/petsc/petsc-dev/docs/manualpages/Sys/PetscObjectComm.html#PetscObjectComm">PetscObjectComm</a>((<a href="http://www.mcs.anl.gov/petsc/petsc-dev/docs/manualpages/Sys/PetscObject.html#PetscObject">PetscObject</a>)dm), PETSC_ERR_ARG_WRONG, <font color="#666666">"Cannot have more coordinates %d then dimensions %d"</font>, dof, dim);
<a name="line240">240: </a>    <font color="#4169E1">for</font> (d = 0; d < dof; ++d) coords[d] = PetscRealPart(cArray[off+d]);
<a name="line241">241: </a>    <font color="#4169E1">for</font> (c = 0; c < numComp; ++c) values[c] = (*funcs[c])(coords);
<a name="line242">242: </a>    <a href="http://www.mcs.anl.gov/petsc/petsc-dev/docs/manualpages/Vec/VecSetValuesSection.html#VecSetValuesSection">VecSetValuesSection</a>(localX, section, v, values, mode);
<a name="line243">243: </a>  }
<a name="line244"></a></pre><br>-- <br>-----------------------------------------------------<br>Dharmendar Reddy Palle<br>Graduate Student<br>Microelectronics Research center,<br>University of Texas at Austin,<br>10100 Burnet Road, Bldg. 160<br>
MER 2.608F, TX 78758-4445<br>e-mail: <a href="mailto:dharmareddy84@gmail.com" target="_blank">dharmareddy84@gmail.com</a><br>Phone: +1-512-350-9082<br>United States of America.<br>Homepage: <a href="https://webspace.utexas.edu/~dpr342" target="_blank">https://webspace.utexas.edu/~dpr342</a><br>

</div></div></div>