On Wed, Apr 1, 2015 at 10:57 AM, Sahai, Amal <[email protected]> wrote:
> I've been trying to figure this out for some time now and I really don't
> understand whats going on. I have a system called RAD which has been
> inherited from System class. I am setting values at node points using the
> following function:
>
> void set_nodal_value(const Node *n, System& sys, unsigned int varnum, Real
> value)
> {
> const unsigned int dof_index = n->dof_number(sys.number(), varnum, 0);
> sys.solution->set(dof_index, value);
> }
>
Be careful doing this in parallel. If dof_index is not owned by the
current processor you probably don't want to call solution->set(). Also a
small point is that you should catch dof_index as a dof_id_type, not an
unsigned int.
>
> The code which calls this looks like:
>
> set_nodal_value(current_node, rad_system, r_distance_var, (*current_node -
> *first_node).size());
>
> const unsigned int dof_index =
> current_node->dof_number(rad_system.number(), r_distance_var, 0);
> std::cout<< dof_index <<"\t"<<(*rad_system.solution)(dof_index)<<"\n";
>
> Right after assigning some value to a certain dof_index, when I try
> outputting the value at the same dof index in the solution vector (in the
> 2nd and 3rd lines), this value turns out to be zero. But later when I use
> the write_equation_systems command to write out a solution value, the
> values that I had previously assigned are written out.
>
> Even after doing a system.solution->update, the solution vector seems to
> be comprised of only 0's.
>
> Why is this happening?
>
When using PETSc, solution->set() calls VecSetValues() but doesn't call
VecAssemblyBegin()/End().
As David said, calling close() on the vector triggers the call to
VecAssemblyBegin()/End()
System::update() updates the current_local_solution to reflect values in
the solution vector.
--
John
------------------------------------------------------------------------------
Dive into the World of Parallel Programming The Go Parallel Website, sponsored
by Intel and developed in partnership with Slashdot Media, is your hub for all
things parallel software development, from weekly thought leadership blogs to
news, videos, case studies, tutorials and more. Take a look and join the
conversation now. http://goparallel.sourceforge.net/
_______________________________________________
Libmesh-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/libmesh-users