implement a draft of BTPCD preconditioner (see #460) using #457
up #460