cell->get_dof_indices (local_dof_indices);for (unsigned int k=0; k < dofs_per_cell; k++) prev_coeffs[k] = solution(local_dof_indices[k]);
This could be combined into a call of the form cell->get_dof_values (solution, prev_coeffs); But it's too cumbersome to do this, use the way Markus has suggested.
Would a similar call for the parallel code with the distributed mesh as in step-40 using the processor vector PETScWrappers::MPI::Vector locally_relevant_solution; and the local to global index std::vector<unsigned int> local_dof_indices (dofs_per_cell); work in a similar manner? The indexing would be different since we do not have the entire solution on each processor. I was how this might work?
The dof indices you get a are global indices, and you can use these to get values out of global (distributed) vectors as long as the corresponding elements are stored locally. In the distributed case that means that you need to make sure the vector has ghost elements -- see step-40.
As for how to write a nonlinear program in general, take a look at the new step-15 that's in the current development sources (which you can find via the "subversion" link of the documentation). It shows how one would get to the coefficients in your nonlinear matrix most easily.
Best W. -- ------------------------------------------------------------------------ Wolfgang Bangerth email: [email protected] www: http://www.math.tamu.edu/~bangerth/ _______________________________________________ dealii mailing list http://poisson.dealii.org/mailman/listinfo/dealii
