function rotate_tensor,tens,rot
;Purpose: rotate an nth rank tensor in 3 dimensions.
;caveats: Not well tested. tensor should probably be symmetric.
; all dimensions should be 3
;Author: Davin Larson
rank = ndimen(tens)
if rank le 0 then return,tens
if rank eq 1 then return,transpose(rot ## tens)
dim = dimen(tens) ; all elements should be the same
d = dim[0] ; typically 3 (3 dimensions)
ns = d^(rank-1)
ind = shift(indgen(rank),1)
rtens = tens
for i = 0,rank-1 do begin
rtens = reform(rot ## reform(rtens,ns,d),dim)
rtens = transpose(rtens,ind)
endfor
return,rtens
end