final solution by lxiaofeng | SimScale