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