<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Tue, Feb 4, 2014 at 11:09 PM, Dharmendar Reddy <span dir="ltr"><<a href="mailto:dharmareddy84@gmail.com" target="_blank">dharmareddy84@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">On Mon, Feb 3, 2014 at 5:49 PM, Matthew Knepley <<a href="mailto:knepley@gmail.com">knepley@gmail.com</a>> wrote:<br>

> On Mon, Feb 3, 2014 at 5:29 PM, Dharmendar Reddy <<a href="mailto:dharmareddy84@gmail.com">dharmareddy84@gmail.com</a>><br>
> wrote:<br>
>><br>
>> Hello,<br>
>>         I am trying to understand the layout of the values array<br>
>> argument of the DMPLexVecSetClosure.<br>
>><br>
>> Consider a triangular element with two fields at each node, say n, p<br>
>> vertices : v1,v2,v3<br>
>> If the value of fields in the local vector :  n1,p1, n2, p2, n3, p3<br>
>><br>
>> If the equation set is: F(n,p) = 0 and G(n,p) = 0<br>
>><br>
>> if the values of F and G evaluated at v1,v2, v3 are F1,F2,F3 and<br>
>> G1,G2G3 respectively.<br>
>><br>
>> Then the elemVec that goes into DMPLexVecSetClosure is:<br>
>><br>
>> elemVec = { F1,F2,F3,G1G2,G3} is that correct ?<br>
>><br>
>> Now, i am looking for some functionality which will let me access the<br>
>> following mapping information, (local dof id)?<br>
>><br>
>> what is the Local Dof Id , i.e, the position in elemVec given the<br>
>> field id, component id and basis id (or node id for the case of P1<br>
>> Lagrange ?)<br>
>><br>
>><br>
>> The usage will be like this:<br>
><br>
><br>
> If, as in this case, the fields have the same element, its just normal<br>
> array ordering:<br>
><br>
>   (f, b, c) = (f*numBasis + b)*numComponents + c<br>
<br>
I used this approach in my current code which has same  number of<br>
fields in all regions of the mesh.<br>
I pre calculate and store the local dof ids in an array.<br>
<br>
But now i am trying do a case where number of fields is not same in<br>
all regions. I am a bit confused about the interface case.<br>
<br>
Consider for example of interface region<br>
 1----------2<br>
 |   c1      |<br>
 |             |<br>
 3---------4<br>
 |   c2      |<br>
 |             |<br>
 5---------6<br>
the variables defined at nodes is shown below:<br>
1: (phi),  2:(phi), [3,4,5,6]: (phi,n,p)<br>
<br>
I think, c1 will have dof layout as :dofArray:<br>
(phi3,phi4,phi2,phi1,n3,n4,p3,p4) assuming anti clockwise ordering of<br>
nodes in ref cell. I can get dofArray using vecget closure on c1.<br></blockquote><div><br></div><div>Yes, that looks right.</div><div><br></div><div>   Matt</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

><br>
> In general, all field values are stacked together, and ordered by<br>
> basis vec and then component.<br>
><br>
>     Matt<br>
><br>
>><br>
>> do fid=1,numField<br>
>>    numBasis = getNumBasis(fid)<br>
>>    numComponent = getNumComponent(fid)<br>
>>    do bid=1,numBasis<br>
>>       do cid =1,numCompoent<br>
>>        localId = getLocalDofId( fid, bid, cid)<br>
>>         elemResVec(localId) = residual value<br>
>>      end do<br>
>>    end do<br>
>> enddo<br>
>><br>
>> call<br>
>> DMPlexVecSetClosure(dm,section,localResVec,cellId,elemResVec,ADD_VALUES,ierr)<br>
>><br>
>> Thanks<br>
>> Reddy<br>
><br>
><br>
><br>
<span class="HOEnZb"><font color="#888888">><br>
> --<br>
> What most experimenters take for granted before they begin their experiments<br>
> is infinitely more interesting than any results to which their experiments<br>
> lead.<br>
> -- Norbert Wiener<br>
</font></span></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>