at the price of one additional work array, save 2 FFts in passive scalar; also use dealiasing