{ "cells": [ { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "# 二维库埃特流\n", "\n", "[![下载Notebook](https://mindspore-website.obs.cn-north-4.myhuaweicloud.com/website-images/master/resource/_static/logo_notebook.svg)](https://mindspore-website.obs.cn-north-4.myhuaweicloud.com/notebook/master/mindflow/zh_cn/cfd_solver/mindspore_couette.ipynb) [![下载样例代码](https://mindspore-website.obs.cn-north-4.myhuaweicloud.com/website-images/master/resource/_static/logo_download_code.svg)](https://mindspore-website.obs.cn-north-4.myhuaweicloud.com/notebook/master/mindflow/zh_cn/cfd_solver/mindspore_couette.py) [![查看源文件](https://mindspore-website.obs.cn-north-4.myhuaweicloud.com/website-images/master/resource/_static/logo_source.svg)](https://gitee.com/mindspore/docs/blob/master/docs/mindflow/docs/source_zh_cn/cfd_solver/couette.ipynb)\n", "\n", "本案例要求**MindSpore版本 >= 2.0.0**调用如下接口: *mindspore.jit,mindspore.jit_class*。\n", "\n", "在流体力学中,库埃特流是粘性流体在两个相对运动的表面之间的流动,表面的相对运动对流体施加剪应力并引起流动,在流动方向上也可以施加压力梯度。\n", "\n", "库埃特流动在某些实际问题中也有应用,如地球的地幔和大气运动,以及轻负荷滑动轴承中的流动。库埃特流也可应用于粘度测定,证明可逆性等。\n", "\n", "库埃特流以19世纪末法国昂热大学物理学教授莫里斯·库埃特的名字命名的。\n" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "## 问题描述\n", "\n", "二维库埃特流动的定义为:\n", "\n", "$$\n", "\\frac{\\partial u}{\\partial t} = \\frac{\\partial^2 u}{\\partial y^2}\n", "$$\n", "\n", "模拟的初始条件为\n", "\n", "$$\n", "u(y, 0), \\quad 00\n", "$$\n", "\n", "本案例中`src`包可以在[src](https://gitee.com/mindspore/mindscience/tree/master/MindFlow/applications/cfd/couette/src)下载。\n" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "import matplotlib.pyplot as plt\n", "from matplotlib.legend_handler import HandlerTuple\n", "\n", "import mindspore as ms\n", "from mindflow import load_yaml_config\n", "from mindflow import cfd\n", "from mindflow.cfd.runtime import RunTime\n", "from mindflow.cfd.simulator import Simulator\n", "\n", "from src.ic import couette_ic_2d\n", "\n", "ms.set_context(device_target=\"GPU\", device_id=3)" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "## 定义Simulator和RunTime\n", "\n", "网格、材料、仿真时间、边界条件和数值方法的设置在文件[couette.yaml](https://gitee.com/mindspore/mindscience/blob/master/MindFlow/applications/cfd/couette/couette.yaml)中。" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "config = load_yaml_config('couette.yaml')\n", "simulator = Simulator(config)\n", "runtime = RunTime(config['runtime'], simulator.mesh_info, simulator.material)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 理论解\n", "\n", "通过抽取稳态解,使问题趋于齐次,应用分离变量法可以求得理论解:\n", "\n", "$$\n", "u(y,t)=U\\frac{y}{h}-\\frac{2U}{\\pi}\\sum_{i=1}^{\\infty}{\\frac{1}{n}e^{-n^2\\pi^2\\frac{\\nu t}{h^2}}sin \\left[ n\\pi (1-\\frac{y}{h}) \\right] }\n", "$$" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "def label_fun(y, t):\n", " nu = 0.1\n", " h = 1.0\n", " u_max = 0.1\n", " coe = 0.0\n", " for i in range(1, 100):\n", " coe += np.sin(i*np.pi*(1 - y/h))*np.exp(-(i**2)*(np.pi**2)*nu*t/(h**2))/i\n", " return u_max*y/h - (2*u_max / np.pi)*coe" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "## 初始条件\n", "\n", "根据网格坐标确定初始条件。" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "mesh_x, mesh_y, _ = simulator.mesh_info.mesh_xyz()\n", "pri_var = couette_ic_2d(mesh_x, mesh_y)\n", "con_var = cfd.cal_con_var(pri_var, simulator.material)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 执行仿真\n", "\n", "执行仿真,并在 $t=0.005s, t=0.5s, t=0.05s, t=0.005s$ 时与理论解相比较。" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "current time = 0.000000, time step = 0.000200\n", "current time = 0.000200, time step = 0.000200\n", "current time = 0.000400, time step = 0.000200\n", "current time = 0.000600, time step = 0.000200\n", "current time = 0.000800, time step = 0.000200\n", "current time = 0.001000, time step = 0.000200\n", "current time = 0.001200, time step = 0.000200\n", "current time = 0.001400, time step = 0.000200\n", "current time = 0.001600, time step = 0.000200\n", "current time = 0.001800, time step = 0.000200\n", "current time = 0.002000, time step = 0.000200\n", "current time = 0.002200, time step = 0.000200\n", "current time = 0.002400, time step = 0.000200\n", "current time = 0.002600, time step = 0.000200\n", "current time = 0.002800, time step = 0.000200\n", "current time = 0.003000, time step = 0.000200\n", "current time = 0.003200, time step = 0.000200\n", "current time = 0.003400, time step = 0.000200\n", "current time = 0.003600, time step = 0.000200\n", "current time = 0.003800, time step = 0.000200\n", "current time = 0.004000, time step = 0.000200\n", "current time = 0.004200, time step = 0.000200\n", "current time = 0.004400, time step = 0.000200\n", "current time = 0.004600, time step = 0.000200\n", "current time = 0.004800, time step = 0.000200\n", "current time = 0.005000, time step = 0.000200\n", "current time = 0.005200, time step = 0.000200\n", "current time = 0.005400, time step = 0.000200\n", "current time = 0.005600, time step = 0.000200\n", "current time = 0.005800, time step = 0.000200\n", "current time = 0.006000, time step = 0.000200\n", "...\n", "current time = 4.999212, time step = 0.000200\n", "current time = 4.999412, time step = 0.000200\n", "current time = 4.999612, time step = 0.000200\n", "current time = 4.999812, time step = 0.000200\n" ] }, { "data": { "image/png": "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Xdeys7NJTU1l4MCBREZG2no4QghRcxW0slAzE2m7+XF6FE3kZNiNvDe6J62rGajM++UIeoPKf9qH0qt5cJn7cgp0JKTnAbIE5nR0Oh1HkzOt/ken01VrnP379+fJJ59k4sSJNGjQgLCwMD766CNycnIYN24c/v7+tG7dmp9//hkovwRWssyzfv16OnTogJ+fH4MGDSIpKcl0Db1ez6RJkwgKCqJhw4Y899xzlO63O3bsWJ588knOnDmDoig0b97c7FgvXbrEmDFjaNCgAT4+PgwePJhjx44BxiW0Ro0a8c0335iOj46OJiIiwvT/P//8E09PT3Jzc6t8XtLT03nkkUcICwvDy8uLzp07s3btWjZv3mya8bnxxhtRFIXNmzebnoumTZvi4+PDHXfcwYULF6r+BgghhK1U0sqiZK5mjs9KfngsptrBz96z6azbn4yiwLOD2pW7/1iqcfankb8nDXw9qjvyeiMzQHXgxPlcbp6/xerX/WXidbQNr7zb7ZU+/fRTnnvuOXbs2MGXX37JY489xvfff88dd9zB888/z7vvvsv999/PmTNnzJ6fm5vL3Llz+eyzz9BoNNx3331MmTLF1I9r3rx5LFu2jP/973906NCBefPm8f3333PjjTcCsGDBAlq1asWHH37IP//8g1arNXudsWPHcuzYMdasWUNAQABTp07llltuIT4+Hnd3d66//no2b97M3XffzaVLlzh06BDe3t4cPnyY9u3b8/vvv9OrVy98fCpvvmcwGBg8eDBZWVl8/vnntGrVivj4eLRaLX379uXIkSO0a9eOb7/9lr59+xIcHMzff//NQw89xOzZsxk2bBixsbHMmjWrWt8HIYSwqipaWWgUaKBLhaS/jXk91fDWemPD0zuiG9PezHuSKf8nzH6Wv0ACIJfTrVs3XnzxRQCmT5/OnDlzCAkJYfz48QDMnDmT999/n3379pk9v6ioiKVLl9KqlbGx3YQJE0xd5QHmz5/P9OnTufPOOwFYunQp69evN90fGBiIv78/Wq22wuW1ksDnr7/+Mi2TrVixgqioKFavXs0999xD//79+eCDDwD4448/6N69O+Hh4WzevJn27duzefNm+vXrV+Xz8euvv7Jjxw4OHTpE27ZtAWjZsqXp/tBQYyJfcHCwabwLFixg0KBBPPfccwC0bduWrVu3EhsbW+X1hBDCJqrZ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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "dy = 1/config['mesh']['ny']\n", "cell_centers = np.linspace(dy/2, 1 - dy/2, config['mesh']['ny'])\n", "label_y = np.linspace(0, 1, 30, endpoint=True)\n", "label_plot_list = []\n", "simulation_plot_list = []\n", "plot_step = 3\n", "\n", "fig, ax = plt.subplots()\n", "\n", "while runtime.time_loop(pri_var):\n", " runtime.compute_timestep(pri_var)\n", " con_var = simulator.integration_step(con_var, runtime.timestep)\n", " pri_var = cfd.cal_pri_var(con_var, simulator.material)\n", " runtime.advance()\n", "\n", " if np.abs(runtime.current_time.asnumpy() - 5.0*0.1**plot_step) < 0.1*runtime.timestep:\n", " label_u = label_fun(label_y, runtime.current_time.asnumpy())\n", " simulation_plot_list.append(plt.plot(cell_centers, pri_var.asnumpy()[1, 0, :, 0], color='tab:blue')[0])\n", " label_plot_list.append(plt.plot(label_y, label_u, label='ground_truth', marker='o', linewidth=0, color='tab:orange')[0])\n", " plot_step -= 1\n", "\n", "\n", "plt.legend(loc='best')\n", "ax.legend([tuple(label_plot_list), tuple(simulation_plot_list)], ['ground_truth', 'mindflow_cfd'], numpoints=1, handler_map={tuple: HandlerTuple(ndivide=1)})\n", "plt.xlabel('y')\n", "plt.ylabel('velocity-x')\n", "plt.savefig('couette.jpg')" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3.9.0 ('py39')", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.9.0" }, "orig_nbformat": 4, "vscode": { "interpreter": { "hash": "57ace93c29d9374277a79956c3f1b916d7d9a05468d906842f9921d0d494a29f" } } }, "nbformat": 4, "nbformat_minor": 2 }