sparse smoke solver