Hello all,

Thank you for taking the time to look at my question. First, I'll ask a 
couple of basic questions about the built-in functions, and then I'll give 
a few details of why I ask.

Does the inhomogeneity-handling call distribute_local_to_global(...,false) 
do the following:

Say that we have a constraint x_i = a. I would guess that the function 
takes the following steps: (matrix is M, RHS is right hand side)
1) Set M(i,i) = L and set RHS(i) = 0, where L is somehow "nice" for the 
matrix's spectrum.
2) Set the rest of the entries of the ith row and column of M = 0. Perhaps 
technically we don't bother to zero the column since we plan to call 
AffineConstraints::set_zero.
3) For each DoF j which is coupled to DoF i and is not itself constrained, 
we do RHS(j) -= a*M(j,i).

Now considering the same constraint with instead a call to 
distribute_local_to_global(local_rhs,dof_inds,global_rhs) I would guess 
that we just set RHS(i) = 0 and do nothing else special.

Most importantly, is the above correct?

If so, I am having trouble understanding where I might be going wrong. I'm 
solving a time dependent coupled problem with a decoupled solver. By 
decoupled solver I mean that information from the second domain only 
appears in the right hand side. To make matters one step more complex, one 
term in my matrix is time-dependent and so I do not recompute the whole 
matrix. My procedure is this:

1) Assemble the static part of the matrix with a zero right hand side. This 
matrix will never be touched again. The vector, RHS_bc, which will also 
never be touched again contains no nonzero entries except for those created 
by the call to distribute_local_to_global(...,false).

2) I then assemble the time-dependent terms into a separate matrix and 
vector, RHS_td, using distribute_local_to_global(...,false) and add the 
RHS_bc to RHS_td.

3) I then assemble the coupled terms from the other solver into RHS_c with 
distribute_local_to_global(local_rhs,dof_inds,RHS_c).

4) I then add RHS_c to RHS_td and solve (being careful to call 
constraints.set_zero(solution) before the solve and 
constraints.distribute(solution) after the solve). I am of course using a 
custom class similar to the linear operator classes to bundle the vmult() 
outputs of the static and time-dependent matrices.

However, I am seeing blowup in my solution and I'm seeing some indication 
that the inhomogeneous boundary conditions are to blame. Note that I also 
tried calling constraints.set_zero(RHS_c) in step 4 above and as I expected 
that had no change (since presumably constrained entries are already zero).

Thank you again for taking the time to engage with my question and in 
advance for any tips you are able to offer.

-Kyle

-- 
The deal.II project is located at http://www.dealii.org/
For mailing list/forum options, see 
https://groups.google.com/d/forum/dealii?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"deal.II User Group" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to dealii+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/dealii/0589f784-e1ed-4699-bf30-a7358b3acee1n%40googlegroups.com.

Reply via email to