<div dir="ltr">On Thu, Apr 4, 2013 at 3:09 AM, Dharmendar Reddy <span dir="ltr"><<a href="mailto:dharmareddy84@gmail.com" target="_blank">dharmareddy84@gmail.com</a>></span> wrote:<br><div class="gmail_extra"><div class="gmail_quote">
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><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>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>
<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="13dd0a8cbbc55a50_13dd08f626d44a67_13dcfc8b9f9a255c_line234">234: </a>  <font color="#4169E1">for</font> (v = vStart; v < vEnd; ++v) {
<a name="13dd0a8cbbc55a50_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="13dd0a8cbbc55a50_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="13dd0a8cbbc55a50_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="13dd0a8cbbc55a50_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="13dd0a8cbbc55a50_13dd08f626d44a67_13dcfc8b9f9a255c_line240">240: </a>    <font color="#4169E1">for</font> (d = 0; d < dof; ++d) coords[d] = PetscRealPart(cArray[off+d]);
<a name="13dd0a8cbbc55a50_13dd08f626d44a67_13dcfc8b9f9a255c_line241">241: </a>    <font color="#4169E1">for</font> (c = 0; c < numComp; ++c) values[c] = (*funcs[c])(coords);
<a name="13dd0a8cbbc55a50_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="13dd0a8cbbc55a50_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</div></div></div></div></blockquote><div><br></div><div style>We have just redone the way function pointers are handled in PETSc. I was waiting to code this until someone asked.</div>
<div style> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><div> 
ProjectFunctionLocal along with fem.bcFuns was used set boundary conditions in 
DMPlexComputeResidualFEM. <br></div></div></div></div></blockquote><div><br></div><div style>Yes that is right.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><div></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>
</div></div></div></div></blockquote><div><br></div><div style>There are several ways to do BC, and the DMPlex stuff should support them all. However, the one I am using here is to eliminate</div><div style>the constrained dofs from the global system, but not the local system. So, first constrained dofs are marked in the default PetscSection</div>
<div style>for the DM. In ProjectFunction() the INSERT_BC_VALUES makes sure only marked dofs get values. You are correct that I could</div><div style>optimize the loop to run over only points with constrained dofs, however this is a < 10% optimization which I am ignoring now.</div>
<div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><div></div><div>I was thinking VecSetValuesSection with mode=Insert_BC_values was updating the field values on the points indicated as boundary.<br>
</div></div></div></div></blockquote><div><br></div><div style>Yes, that is right.</div><div style><br></div><div style>   Thanks,</div><div style><br></div><div style>       Matt</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><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><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><font color="#888888"><br><br clear="all"><span class="HOEnZb"><font color="#888888"><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></font></span></div></div><span class="HOEnZb"><font color="#888888">
</font></span></blockquote></div><span class="HOEnZb"><font color="#888888"><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: <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>
</blockquote></div><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
</div></div>