On Thu, Aug 20, 2015 at 10:05 AM, Roy Stogner <royst...@ices.utexas.edu>
wrote:

>
> On Sun, 5 Jul 2015, David Knezevic wrote:
>
> 1. In the last part of DofMap::build_constraint_matrix_and_vector() we
>> have:
>>
>>       if ((C.n() == Cnew.m()) &&          // If the constraint matrix
>>           (Cnew.n() == elem_dofs.size())) // is constrained...
>>         {
>>           C.right_multiply(Cnew);
>>
>
> So now here we have (CD)
>
>           // If x = Cy + h and y = Dz + g
>>           // Then x = (CD)z + (Cg + h)
>>           C.vector_mult_add(H, 1, Hnew);
>>
>
> And now here we have h + CD*g...
>
>         }
>>
>
> It seems to me that according to the comment we should do
>> C.vector_mult_add(H, 1, Hnew); before C.right_multiply(Cnew), no? Isn't the
>> code
>> currently using "CDg + h" instead of "Cg + h" ? (Most likely I've just
>> misunderstood the code... but anyway, I thought I'd ask.)
>>
>
> No, it looks like you're right.  Sorry I let this get buried.  I'll
> set up a branch with the fix and see if it affects anything.
>


OK, sounds good, thanks.



> I don't think it will, though.  IIRC the recursive constraint matrix
> construction is now redundant because we have to expand out recursive
> constraints earlier anyways to get stuff synched properly in parallel.



OK.



> 2. What happens if we have a "cycle" of dof constraints? Would the
>> recursive constraints code handle that properly?
>>
>
> Nope.  IIRC you'll get an assertion failure in debug mode, or
> incorrect results in opt mode.
>

Makes sense, thanks for clarifying.

David
------------------------------------------------------------------------------
_______________________________________________
Libmesh-devel mailing list
Libmesh-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/libmesh-devel

Reply via email to