<div dir="ltr"><br><div class="gmail_extra"><br><br><div class="gmail_quote">On Wed, Apr 3, 2013 at 10:41 AM, Matthew Knepley <span dir="ltr"><<a href="mailto:knepley@gmail.com" target="_blank">knepley@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div class="im">On Wed, Apr 3, 2013 at 11:04 PM, Dharmendar Reddy <span dir="ltr"><<a href="mailto:dharmareddy84@gmail.com" target="_blank">dharmareddy84@gmail.com</a>></span> wrote:<br>
</div><div class="gmail_extra"><div class="gmail_quote"><div class="im">
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><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="13dd08f626d44a67_13dcfc8b9f9a255c_line234">234: </a>  <font color="#4169E1">for</font> (v = vStart; v < vEnd; ++v) {
<a name="13dd08f626d44a67_13dcfc8b9f9a255c_line235">235: </a>    <a href="http://www.mcs.anl.gov/petsc/petsc-dev/docs/manualpages/Sys/PetscInt.html#PetscInt" target="_blank">PetscInt</a> dof, off;

<a name="13dd08f626d44a67_13dcfc8b9f9a255c_line237">237: </a>    <a href="http://www.mcs.anl.gov/petsc/petsc-dev/docs/manualpages/IS/PetscSectionGetDof.html#PetscSectionGetDof" target="_blank">PetscSectionGetDof</a>(cSection, v, &dof);
<a name="13dd08f626d44a67_13dcfc8b9f9a255c_line238">238: </a>    <a href="http://www.mcs.anl.gov/petsc/petsc-dev/docs/manualpages/IS/PetscSectionGetOffset.html#PetscSectionGetOffset" target="_blank">PetscSectionGetOffset</a>(cSection, v, &off);
<a name="13dd08f626d44a67_13dcfc8b9f9a255c_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" target="_blank">SETERRQ2</a>(<a href="http://www.mcs.anl.gov/petsc/petsc-dev/docs/manualpages/Sys/PetscObjectComm.html#PetscObjectComm" target="_blank">PetscObjectComm</a>((<a href="http://www.mcs.anl.gov/petsc/petsc-dev/docs/manualpages/Sys/PetscObject.html#PetscObject" target="_blank">PetscObject</a>)dm), PETSC_ERR_ARG_WRONG, <font color="#666666">"Cannot have more coordinates %d then dimensions %d"</font>, dof, dim);
<a name="13dd08f626d44a67_13dcfc8b9f9a255c_line240">240: </a>    <font color="#4169E1">for</font> (d = 0; d < dof; ++d) coords[d] = PetscRealPart(cArray[off+d]);
<a name="13dd08f626d44a67_13dcfc8b9f9a255c_line241">241: </a>    <font color="#4169E1">for</font> (c = 0; c < numComp; ++c) values[c] = (*funcs[c])(coords);
<a name="13dd08f626d44a67_13dcfc8b9f9a255c_line242">242: </a>    <a href="http://www.mcs.anl.gov/petsc/petsc-dev/docs/manualpages/Vec/VecSetValuesSection.html#VecSetValuesSection" target="_blank">VecSetValuesSection</a>(localX, section, v, values, mode);
<a name="13dd08f626d44a67_13dcfc8b9f9a255c_line243">243: </a>  }</pre></div></div></div></blockquote></div><div>ProjectFunction() just implements \int_\Omega v f(x). If you really don't want to add a no-op function, I can</div>
<div>
check for NULL, but I think that is slower in the inner loop.</div><div><br></div></div></div></div></blockquote><div>Hello,<br> <br></div><div>I do not know how to pass Array of functions in Fortran. At this point i
 am not that worried about performance, but my understanding was that 
ProjectFunctionLocal along with fem.bcFuns was used set boundary conditions in 
DMPlexComputeResidualFEM. <br><br></div><div>I think i miss understood the code then. How do i use the bcFields and bcPoints information used to create defualtSection to set boundary conditions ? <br><br></div><div>I was thinking VecSetValuesSection with mode=Insert_BC_values was updating the field values on the points indicated as boundary.<br>
       <br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><div></div>
<div>   Matt</div><div class="im"><div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<div dir="ltr"><div><div><span><font color="#888888">-- <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: <a href="tel:%2B1-512-350-9082" value="+15123509082" target="_blank">+1-512-350-9082</a><br>

United States of America.<br>Homepage: <a href="https://webspace.utexas.edu/~dpr342" target="_blank">https://webspace.utexas.edu/~dpr342</a><br>

</font></span></div></div></div>
</blockquote></div></div><span class=""><font color="#888888"><br><br clear="all"><div><br></div>-- <br>What most experimenters take for granted before they begin their experiments is infinitely more interesting than any results to which their experiments lead.<br>

-- Norbert Wiener
</font></span></div></div>
</blockquote></div><br><br clear="all"><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>