From: Michael Povolotskyi <povolotskyi@in...> - 2005-09-29 15:19:25
Dear Libmesh developers,
I'm implementing additional DOF in the way you suggested.
1) I define a new variable of type monomial constant.
2) I define two vectors that store DOF numbers:
vector dof_indices is defined by dof_map.dof_indices (elem,
and add_dofs_vector is defined by my routines.
I built a matrix block that couples "normal" and additional variables:
Ke_u_add.resize(dof_indices.size(), add_dofs_vector.size() );
3) If there is no adaptive mesh refinement I simply use
and everything works.
In the case of adaptive mesh refinement I try to use
This does not work because dof_map.constrain_element_matrix changes size
of dof_indices and does not change size of Ke_u_add.
What is wrong in my approach?
Thank you very much,
Sorry to bother you about periodic bounds again.
Do I understand it correctly that you implement the periodicity vectors as
additional dofs that you add to the equation_systems as
Does this not give you n_elem additional dof? Whereas you actually need
dim*ndof number of dof.
(I was a bit puzzled by this solution, I myself just added a neighbourless
element of which I use the DOF, but I might be missing the point)
Another thing is, once you've added these dof, and used them in constraint
rows related to other dofs (something like u_left + u_periodic =3D u_right)=
do you supply any Ke referring to these dofs? As they are not (necessarily)
so something must be supplied in order to avoid nonzero diagonal terms.
Of course, in case of fixed periodicity vectors in all directions one can
add penalties to Ke and Fe, but I did not find a proper solution for the
case in which u_periodic is left free.
Suggestions on that topic would be very much appreciated.