{ "cells": [ { "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/physics_driven/mindspore_boltzmann.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/physics_driven/mindspore_boltzmann.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/physics_driven/boltzmann.ipynb)\n", "## 问题描述\n", "\n", "本案例演示如何利用神经网络求解1+3维的玻尔兹曼方程。玻尔兹曼方程是关于气体密度分布函数$f$的方程,其定义为\n", "\n", "$$\n", "\\newcommand{\\bm}[1]{\\boldsymbol{#1}}\n", "\\begin{equation}\n", "\\label{eq:Boltzmann}\n", "\\frac{\\partial f(\\bm x,\\bm v,t)}{\\partial t}+\\bm{v} \\cdot\\nabla_{\\bm x} f(\\bm x,\\bm v,t)=\\mathcal{Q}[f](\\bm x, \\bm v,t), \\qquad t \\in \\mathbb{R}^+, \\quad \\bm x \\in \\mathbb{R}^3, \\quad \\bm v \\in \\mathbb{R}^3.\n", "\\end{equation}\n", "$$\n", "\n", "其中$\\mathcal{Q}[f]$为碰撞项算子。通过$f$,我们可以获取气体的宏观物理变量\n", "\n", "$$\n", "\\require{braket}\n", "\\begin{equation}\n", " \\begin{gathered}\n", " \\rho(\\bm x,t)=\\int f d \\bm v,\\\\\n", " \\bm{m}(\\bm x, t) \\triangleq \\rho \\bm u(\\bm x,t)=\\int f \\bm v f d\\bm v,\\\\\n", "E(\\bm x, t) \\triangleq \\frac{3}{2}\\rho T(\\bm x, t) + \\frac{1}{2}\\rho |\\bm u|^2 = \\frac{1}{2} \\int \\vert\\bm v\\vert^2 f d \\bm v.\n", "\\end{gathered}\n", "\\end{equation}\n", "$$\n", "\n", "对于简化模型如BGK模型,碰撞项算子的定义为\n", "\n", "$$\n", "\\begin{equation}\n", " \\label{eq:BGK}\n", "\\mathcal{Q}^{\\rm BGK}[f]=\\frac{1}{\\tau}(\\mathcal{M}-f).\n", "\\end{equation}\n", "$$\n", "\n", "其中\n", "\n", "$$\n", "\\begin{equation}\n", "\\label{eq:Maxwellian}\n", "\\mathcal{M}=\\frac{\\rho}{\\sqrt{2\\pi T}^3}\\exp \\left( -\\frac{|\\bm v-\\bm u|^2}{2 T} \\right).\n", "\\end{equation}\n", "$$\n", "\n", "本案例将研究物理空间为1维,微观速度空间为3维的周期边界条件的玻尔兹曼-BGK方程。其初值为\n", "\n", "$$\n", "\\begin{equation}\n", "\\rho(x)=1+0.5\\sin(2\\pi x),\\qquad\n", "\\bm{u}(x)=0,\\qquad\n", "T(x)=1+0.5\\sin(2\\pi x+0.2).\n", "\\end{equation}\n", "$$" ] }, { "cell_type": "markdown", "metadata": { "ExecuteTime": { "end_time": "2023-02-24T04:05:42.910373Z", "start_time": "2023-02-24T04:05:42.902071Z" } }, "source": [ "## 技术路径\n", "\n", "MindSpore Flow求解该问题的具体流程如下:\n", "\n", "1. 创建数据集。\n", "2. 构建模型。\n", "3. 优化器。\n", "4. Burgers1D。\n", "5. 模型训练。\n", "6. 模型推理及可视化。" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "ExecuteTime": { "end_time": "2023-02-24T04:22:39.221221Z", "start_time": "2023-02-24T04:22:37.930840Z" } }, "outputs": [], "source": [ "import time\n", "import numpy as np\n", "\n", "import mindspore as ms\n", "from mindspore import ops, nn\n", "import mindspore.numpy as mnp\n", "\n", "ms.set_context(mode=ms.context.GRAPH_MODE, device_target=\"GPU\")\n", "ms.set_seed(0)" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "ExecuteTime": { "end_time": "2023-02-24T04:22:40.097522Z", "start_time": "2023-02-24T04:22:39.223465Z" } }, "outputs": [], "source": [ "from mindflow.utils import load_yaml_config\n", "\n", "from src.boltzmann import BoltzmannBGK, BGKKernel\n", "from src.utils import get_vdis, visual, mesh_nd\n", "from src.cells import SplitNet, MultiRes, Maxwellian, MtlLoss, JacFwd, RhoUTheta, PrimNorm\n", "from src.dataset import Wave1DDataset" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "ExecuteTime": { "end_time": "2023-02-24T04:22:40.108539Z", "start_time": "2023-02-24T04:22:40.100847Z" } }, "outputs": [], "source": [ "config = load_yaml_config(\"WaveD1V3.yaml\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 创建数据集\n", "\n", "我们选区的计算区域为$[-0.5,0.5]\\times[0,0.1]$,我们在初值选取100个点,在边界选取100个点,在区域内部选取700个点。" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "ExecuteTime": { "end_time": "2023-02-24T04:22:40.146688Z", "start_time": "2023-02-24T04:22:40.110332Z" } }, "outputs": [], "source": [ "class Wave1DDataset(nn.Cell):\n", " \"\"\"dataset for 1D wave problem\"\"\"\n", "\n", " def __init__(self, config):\n", " super().__init__()\n", " self.config = config\n", " xmax = config[\"xtmesh\"][\"xmax\"]\n", " xmin = config[\"xtmesh\"][\"xmin\"]\n", " nv = config[\"vmesh\"][\"nv\"]\n", " vmin = config[\"vmesh\"][\"vmin\"]\n", " vmax = config[\"vmesh\"][\"vmax\"]\n", " v, _ = mesh_nd(vmin, vmax, nv)\n", " self.xmax = xmax\n", " self.xmin = xmin\n", " self.vdis = ms.Tensor(v.astype(np.float32))\n", " self.maxwellian = Maxwellian(self.vdis)\n", " self.iv_points = self.config[\"dataset\"][\"iv_points\"]\n", " self.bv_points = self.config[\"dataset\"][\"bv_points\"]\n", " self.in_points = self.config[\"dataset\"][\"in_points\"]\n", " self.uniform = ops.UniformReal(seed=0)\n", "\n", " def construct(self):\n", " # Initial value points\n", " iv_x = self.uniform((self.iv_points, 1)) * \\\n", " (self.xmax - self.xmin) + self.xmin\n", " iv_t = mnp.zeros_like(iv_x)\n", "\n", " # boundary value points\n", " bv_x1 = -0.5 * mnp.ones(self.bv_points)[..., None]\n", " bv_t1 = self.uniform((self.bv_points, 1)) * 0.1\n", " bv_x2 = 0.5 * mnp.ones(self.bv_points)[..., None]\n", " bv_t2 = bv_t1\n", "\n", " # inner points\n", " in_x = self.uniform((self.in_points, 1)) - 0.5\n", " in_t = self.uniform((self.in_points, 1)) * 0.1\n", "\n", " return {\n", " \"in\": ops.concat([in_x, in_t], axis=-1),\n", " \"iv\": ops.concat([iv_x, iv_t], axis=-1),\n", " \"bv1\": ops.concat([bv_x1, bv_t1], axis=-1),\n", " \"bv2\": ops.concat([bv_x2, bv_t2], axis=-1),\n", " }\n", "\n", "\n", "dataset = Wave1DDataset(config)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 构建模型\n", "\n", "本案例使用层数为6层,每层80个神经元的神经网络结构。我们的网络由两部分构成,其中一部分网络是Maxwellian平衡态的形式,另一部分则是离散速度分布的形式,这样的结构有助于训练。" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "ExecuteTime": { "end_time": "2023-02-24T04:22:40.212941Z", "start_time": "2023-02-24T04:22:40.149323Z" } }, "outputs": [], "source": [ "class SplitNet(nn.Cell):\n", " \"\"\"the network combined the maxwellian and non-maxwellian\"\"\"\n", "\n", " def __init__(self, in_channel, layers, neurons, vdis, alpha=0.01):\n", " super().__init__()\n", " self.net_eq = MultiRes(in_channel, 5, layers, neurons)\n", " self.net_neq = MultiRes(in_channel, vdis.shape[0], layers, neurons)\n", " self.maxwellian = Maxwellian(vdis)\n", " self.alpha = alpha\n", "\n", " def construct(self, xt):\n", " www = self.net_eq(xt)\n", " rho, u, theta = www[..., 0:1], www[..., 1:4], www[..., 4:5]\n", " rho = ops.exp(-rho)\n", " theta = ops.exp(-theta)\n", " x1 = self.maxwellian(rho, u, theta)\n", " x2 = self.net_neq(xt)\n", " y = x1 * (x1 + self.alpha * x2)\n", " return y\n", "\n", "\n", "vdis, _ = get_vdis(config[\"vmesh\"])\n", "model = SplitNet(2, config[\"model\"][\"layers\"],\n", " config[\"model\"][\"neurons\"], vdis)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## BoltzmannBGK" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "ExecuteTime": { "end_time": "2023-02-24T04:22:40.230512Z", "start_time": "2023-02-24T04:22:40.215053Z" } }, "outputs": [], "source": [ "class BoltzmannBGK(nn.Cell):\n", " \"\"\"The Boltzmann BGK model\"\"\"\n", "\n", " def __init__(self, net, kn, vconfig, iv_weight=100, bv_weight=100, pde_weight=10):\n", " super().__init__()\n", " self.net = net\n", " self.kn = kn\n", "\n", " vdis, wdis = get_vdis(vconfig)\n", "\n", " self.vdis = vdis\n", " loss_num = 3 * (vdis.shape[0] + 1 + 2 * vdis.shape[-1])\n", " self.mtl = MtlLoss(loss_num)\n", " self.jac = JacFwd(self.net)\n", " self.iv_weight = iv_weight\n", " self.bv_weight = bv_weight\n", " self.pde_weight = pde_weight\n", " self.maxwellian_nd = Maxwellian(vdis)\n", " self.rho_u_theta = RhoUTheta(vdis, wdis)\n", " self.criterion_norm = lambda x: ops.square(x).mean(axis=0)\n", " self.criterion = lambda x, y: ops.square(x - y).mean(axis=0)\n", " self.prim_norm = PrimNorm(vdis, wdis)\n", " self.collision = BGKKernel(\n", " vconfig[\"vmin\"], vconfig[\"vmax\"], vconfig[\"nv\"])\n", "\n", " def governing_equation(self, inputs):\n", " f, fxft = self.jac(inputs)\n", " fx, ft = fxft[0], fxft[1]\n", " pde = ft + self.vdis[..., 0] * fx - self.collision(f, self.kn)\n", " return pde\n", "\n", " def boundary_condition(self, bv_points1, bv_points2):\n", " fl = self.net(bv_points1)\n", " fr = self.net(bv_points2)\n", " return fl - fr\n", "\n", " def initial_condition(self, inputs):\n", " iv_pred = self.net(inputs)\n", " iv_x = inputs[..., 0:1]\n", " rho_l = ops.sin(2 * np.pi * iv_x) * 0.5 + 1\n", " u_l = ops.zeros((iv_x.shape[0], 3), ms.float32)\n", " theta_l = ops.sin(2 * np.pi * iv_x + 0.2) * 0.5 + 1\n", " iv_truth = self.maxwellian_nd(rho_l, u_l, theta_l)\n", " return iv_pred - iv_truth\n", "\n", " def loss_fn(self, inputs):\n", " \"\"\"the loss function\"\"\"\n", " return self.criterion_norm(inputs), self.prim_norm(inputs)\n", "\n", " def construct(self, domain_points, iv_points, bv_points1, bv_points2):\n", " \"\"\"combined all loss function\"\"\"\n", " pde = self.governing_equation(domain_points)\n", " iv = self.initial_condition(iv_points)\n", " bv = self.boundary_condition(bv_points1, bv_points2)\n", "\n", " loss_pde = self.pde_weight * self.criterion_norm(pde)\n", " loss_pde2 = self.pde_weight * self.prim_norm(pde)\n", "\n", " loss_bv = self.bv_weight * self.criterion_norm(bv)\n", " loss_bv2 = self.bv_weight * self.prim_norm(bv)\n", "\n", " loss_iv = self.iv_weight * self.criterion_norm(iv)\n", " loss_iv2 = self.iv_weight * self.prim_norm(iv)\n", "\n", " loss_sum = self.mtl(\n", " ops.concat(\n", " [loss_iv, loss_iv2, loss_bv, loss_bv2, loss_pde, loss_pde2], axis=-1\n", " )\n", " )\n", " return loss_sum, (loss_iv, loss_iv2, loss_bv, loss_bv2, loss_pde, loss_pde2)\n", "\n", "\n", "problem = BoltzmannBGK(model, config[\"kn\"], config[\"vmesh\"])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 优化器" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "ExecuteTime": { "end_time": "2023-02-24T04:22:40.276986Z", "start_time": "2023-02-24T04:22:40.232314Z" } }, "outputs": [], "source": [ "cosine_decay_lr = nn.CosineDecayLR(\n", " config[\"optim\"][\"lr_scheduler\"][\"min_lr\"],\n", " config[\"optim\"][\"lr_scheduler\"][\"max_lr\"],\n", " config[\"optim\"][\"Adam_steps\"],\n", ")\n", "optim = nn.Adam(params=problem.trainable_params(),\n", " learning_rate=cosine_decay_lr)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 模型训练" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "ExecuteTime": { "end_time": "2023-02-24T04:58:32.231402Z", "start_time": "2023-02-24T04:22:40.278932Z" }, "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "epoch: 500 loss: 2.396e-01 epoch time: 194.953 ms\n", "epoch: 1000 loss: 3.136e-02 epoch time: 193.463 ms\n", "epoch: 1500 loss: 1.583e-03 epoch time: 191.280 ms\n", "epoch: 2000 loss: 2.064e-04 epoch time: 191.099 ms\n", "epoch: 2500 loss: 1.434e-04 epoch time: 190.477 ms\n", "epoch: 3000 loss: 1.589e-04 epoch time: 190.489 ms\n", "epoch: 3500 loss: 9.694e-05 epoch time: 190.476 ms\n", "epoch: 4000 loss: 8.251e-05 epoch time: 191.893 ms\n", "epoch: 4500 loss: 7.238e-05 epoch time: 190.835 ms\n", "epoch: 5000 loss: 5.705e-05 epoch time: 190.611 ms\n", "epoch: 5500 loss: 4.932e-05 epoch time: 190.530 ms\n", "epoch: 6000 loss: 4.321e-05 epoch time: 190.756 ms\n", "epoch: 6500 loss: 4.205e-05 epoch time: 191.470 ms\n", "epoch: 7000 loss: 3.941e-05 epoch time: 190.781 ms\n", "epoch: 7500 loss: 3.328e-05 epoch time: 190.543 ms\n", "epoch: 8000 loss: 3.113e-05 epoch time: 190.786 ms\n", "epoch: 8500 loss: 2.995e-05 epoch time: 190.864 ms\n", "epoch: 9000 loss: 2.875e-05 epoch time: 190.796 ms\n", "epoch: 9500 loss: 2.806e-05 epoch time: 188.351 ms\n", "epoch: 10000 loss: 2.814e-05 epoch time: 189.244 ms\n", "End-to-End total time: 2151.8691852092743 s\n" ] } ], "source": [ "grad_fn = ops.value_and_grad(problem, None, optim.parameters, has_aux=True)\n", "\n", "\n", "@ms.jit\n", "def train_step(*inputs):\n", " loss, grads = grad_fn(*inputs)\n", " optim(grads)\n", " return loss\n", "\n", "\n", "start_time = time.time()\n", "for i in range(1, config[\"optim\"][\"Adam_steps\"] + 1):\n", " time_beg = time.time()\n", " ds = dataset()\n", " loss, _ = train_step(*ds)\n", " if i % 500 == 0:\n", " e_sum = loss.mean().asnumpy().item()\n", " print(\n", " f\"epoch: {i} loss: {e_sum:.3e} epoch time: {(time.time() - time_beg) * 1000 :.3f} ms\"\n", " )\n", "print(\"End-to-End total time: {} s\".format(time.time() - start_time))\n", "ms.save_checkpoint(problem, f\"./model.ckpt\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 模型推理与可视化" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "ExecuteTime": { "end_time": "2023-02-24T04:58:34.390216Z", "start_time": "2023-02-24T04:58:32.237539Z" } }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig = visual(problem, config[\"visual_resolution\"], \"result.png\")\n", "fig.show()" ] } ], "metadata": { "kernelspec": { "display_name": "ms20", "language": "python", "name": "ms20" }, "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.16" }, "vscode": { "interpreter": { "hash": "e6c8912be585e9cfc5b9e87cb3a795d2a9dcb999ff33312bc860b10b2e0dc97a" } } }, "nbformat": 4, "nbformat_minor": 2 }