From: Roy Stogner <roystgnr@ic...>  20051107 18:48:02

On Mon, 7 Nov 2005, Guillaume ANCIAUX wrote: > why do you make the difference with the solution vector ? there is a > privileged communication process for it ? Ben Kirk really needs to jump in on this discussion. To the best of my knowledge there's no longer anything special about the solution vector with regards to projections and parallel computations, but Ben did the latter work and I haven't really looked into it. > nevertheless for that kind of operations (even for solution vector) do you > need to send the complete vector to your neighbors ? this would be pretty > much non scalable (my opinion). That depends on how often you need to do the vector send. It would be nonscalable for an explicit algorithm, but (assuming you only need to synchronize once or twice per timestep) not a big problem for an implicit code. Even if some of the primary developers were doing explicit calculations, I don't think this would be a high priority  shape function caching would make a much bigger improvement in our runtimes. > Interpolation is not a key operation in the FE programs ? (i'm kind > of newbie in that). It depends on what you mean by interpolation. Interpolation between different grids is important for adaptive (and vital for adaptive timedependent) problems. Interpolation between grid points is key for any FE code using better than discontinuous constant elements, but it's simply what we do by evaluating shape functions at quadrature points. > I need to compute a deformation gradient on quadrature points > (\sum_I \dphi_I(X) u_I) to compute a non linear behavior at each > explicit step. That's right. > i know i can compute dphi and phi shapes functions locally as long > as they are precomputed from reference element projection... but i > really need to get the nodes values (u_I) ... if it implies sending > the complete vector ... :( I don't think you want to get the nodes' values  what if you're using higher order elements whose shape functions are determined by more complicated bases? Let the shape function calculations do the work for you. > maybe i didn't get something... Take a look at example 13. I believe it does what you need to do; at each quadrature point there's this loop: for (unsigned int l=0; l<n_u_dofs; l++) { u_old += phi[l][qp]*stokes_system.old_solution (dof_indices_u[l]); v_old += phi[l][qp]*stokes_system.old_solution (dof_indices_v[l]); grad_u_old.add_scaled (dphi[l][qp],stokes_system.old_solution (dof_indices_u[l])); grad_v_old.add_scaled (dphi[l][qp],stokes_system.old_solution (dof_indices_v[l])); u += phi[l][qp]*stokes_system.current_solution (dof_indices_u[l]); v += phi[l][qp]*stokes_system.current_solution (dof_indices_v[l]); grad_u.add_scaled (dphi[l][qp],stokes_system.current_solution (dof_indices_u[l])); grad_v.add_scaled (dphi[l][qp],stokes_system.current_solution (dof_indices_v[l])); } This calculates both values and gradients of the last timestep's velocity and the current timestep's current velocity estimate. Presumably you can perform the same sort of calculation to get whatever function of your solution and its derivatives that you need.  Roy Stogner 