d.elem(i) = localInnerProduct(s1.elem(i), s2.elem());
d.elem(i) = localInnerProduct(s1.elem(), s2.elem(i));
localInnerProduct(const ILattice<T1,N>& s1, const IScalar<T2>& s2){  typename BinaryReturn<ILattice<T1,N>, IScalar<T2>, FnLocalInnerProduct>::Type_t  d;  for(int i=0; i < N; ++i)    d.elem(i) = localInnerProduct(s1.elem(i), s2.elem());  return d;}