next up previous contents
Next: Type issues Up: Wave Previous: Optimisation Note   Contents

wave_(S)dot_lower

This is like wave_(S)dot_all but only takes the dot-product for bands lower than the band with index nb. This argument refers to the global band index, and so must be translated into a local value on each node.

There is a problem with the existing mechanism, because it call the dot_all_many_one version of the dot_all routines, and passes it the slice recip_coeffs(:,1:nb-1) and recip_coeffs(:,nb); now, however, band nb may or may not be on the node and so one or both of these may be null.

In addition wave_(S)dot_lower_slice_slice on different nodes may have different numbers of bands in the second slice and a different band to orthogonalise below as well.

We created dedicated subroutines to perform these operations, rather than attempting to reuse existing subroutines which were not designed for these circumstances.



Sarfraz A Nadeem 2008-09-01