I check the mail list and find the following question and your answer, which is in "Re: [Libmesh-users] variables and vectors in equation systems?"
> The easiest way that I could think of setting up independent
> variables is to add another System to the EquationSystems,
> deactivate this System so that it is not solved, and add the
> independent variables to this System.
That's the best general method I can come up with too. A non-solution
function defined on an unstructured finite element space will need the
same sort of DoF mapping structure that your solution variables need,
and currently the only way to set that up is to add your function as a
solution variable somewhere or to reuse the mapping of a real solution
variable. If you want to reuse the mapping of most or all the
solution variables in a system (as time solvers do, for example) then
the most efficient way to get that is add_vector().
You agree that the best method is to add another system to the EquationSystems. You also consider that it is ok to use add_vector() to add a vector for the non-solution variable.
My problem is how to distribute the vector you add corresponding to DoF distribution on processors of the cluster when you add the vector? Any functions in libmesh help keep this vector, such as initializing the distribution of this vector, updating this vector along with the change of Dof after refining mesh, and so on? thanks a lot.